summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorgallatin <gallatin@FreeBSD.org>2007-03-27 15:55:32 +0000
committergallatin <gallatin@FreeBSD.org>2007-03-27 15:55:32 +0000
commita8be3c5db775d7348bb09c2d0618af6352050826 (patch)
tree3d709952b7e6b917a5cb4df738dafeaef6eadfdf /sys/dev
parent7e4dccfa8c96f966b71b6167d164ec69f30da974 (diff)
downloadFreeBSD-src-a8be3c5db775d7348bb09c2d0618af6352050826.zip
FreeBSD-src-a8be3c5db775d7348bb09c2d0618af6352050826.tar.gz
Fix a bug which could lead to receive side lockup when WC is disabled.
When submitting rx buffers and not using WC fifo, always replace the invalid DMA address with the real one, otherwise allocation failures could lead to the invalid DMA address being given to the NIC, and that would cause the receive side to lockup.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/mxge/if_mxge.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/dev/mxge/if_mxge.c b/sys/dev/mxge/if_mxge.c
index 6323411..990162d 100644
--- a/sys/dev/mxge/if_mxge.c
+++ b/sys/dev/mxge/if_mxge.c
@@ -1736,6 +1736,7 @@ mxge_submit_8rx(volatile mcp_kreq_ether_recv_t *dst,
mb();
mxge_pio_copy(dst + 4, src + 4, 4 * sizeof (*src));
mb();
+ src->addr_low = low;
dst->addr_low = low;
mb();
}
OpenPOWER on IntegriCloud