Force maximum payload size to 128 bytes for AR816X/AR817x as it triggers
authorkevlo <kevlo@openbsd.org>
Thu, 19 May 2022 00:52:37 +0000 (00:52 +0000)
committerkevlo <kevlo@openbsd.org>
Thu, 19 May 2022 00:52:37 +0000 (00:52 +0000)
dma write error rendering the network unusable.

Bug reported and patch tested by Scott C. MacCallum.

sys/dev/pci/if_alc.c

index 39e4e9a..ae30a98 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_alc.c,v 1.55 2022/03/11 18:00:45 mpi Exp $ */
+/*     $OpenBSD: if_alc.c,v 1.56 2022/05/19 00:52:37 kevlo Exp $       */
 /*-
  * Copyright (c) 2009, Pyun YongHyeon <yongari@FreeBSD.org>
  * All rights reserved.
@@ -1354,10 +1354,11 @@ alc_attach(struct device *parent, struct device *self, void *aux)
                        sc->alc_dma_wr_burst = 3;
                /*
                 * Force maximum payload size to 128 bytes for
-                * E2200/E2400/E2500.
+                * E2200/E2400/E2500/AR8162/AR8171/AR8172.
                 * Otherwise it triggers DMA write error.
                 */
-               if ((sc->alc_flags & ALC_FLAG_E2X00) != 0)
+               if ((sc->alc_flags &
+                   (ALC_FLAG_E2X00 | ALC_FLAG_AR816X_FAMILY)) != 0)
                        sc->alc_dma_wr_burst = 0;
                alc_init_pcie(sc, base);
        }