aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2022-06-07 01:52:55 +0000
committerKyle Evans <kevans@FreeBSD.org>2022-09-18 06:26:39 +0000
commitf248e70fc1a419dc596023f47fea3ffa829eba3e (patch)
tree9fd21cfd6c7085c5291afcd6bb7436c5e6241936
parent2f5dbe4772e8d81c8c02132f53c60340ec325468 (diff)
downloadsrc-f248e70fc1a419dc596023f47fea3ffa829eba3e.tar.gz
src-f248e70fc1a419dc596023f47fea3ffa829eba3e.zip
alc: force maximum payload size to 128 bytes for AR816X/AR817x
Otherwise, we'll trigger a DMA write error and render the device unusable. Obtained from: OpenBSD (via Haiku, waddlesplash) (cherry picked from commit 8cdb6b2dd78793628d7c36198598c85741e44119)
-rw-r--r--sys/dev/alc/if_alc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/alc/if_alc.c b/sys/dev/alc/if_alc.c
index f0d756b3e865..c6928db3885c 100644
--- a/sys/dev/alc/if_alc.c
+++ b/sys/dev/alc/if_alc.c
@@ -1495,10 +1495,11 @@ alc_attach(device_t dev)
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);
}