mirror of
https://github.com/opnsense/src.git
synced 2026-05-20 17:09:30 -04:00
Investigation of iSCSI target data corruption reports brought me to
discovery that cxgb(4) expects mbufs to be physically contiguous, that
is not true after I've started using m_extaddref() in software iSCSI
for large zero-copy transmissions. In case of fragmented memory the
driver transmitted garbage from pages following the first one due to
simple use of pmap_kextract() for the first pointer instead of proper
bus_dmamap_load_mbuf_sg(). Seems like it was done as some optimization
many years ago, and at very least it is wrong in a world of IOMMUs.
This patch just removes that optimization, plus limits packet coalescing
for mbufs crossing page boundary, also depending on assumption of one
segment per packet.
Sponsored by: iXsystems, Inc.
(cherry picked from commit
|
||
|---|---|---|
| .. | ||
| mvec.h | ||
| uipc_mvec.c | ||