mirror of
https://github.com/opnsense/src.git
synced 2026-05-19 08:25:22 -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
|
||
|---|---|---|
| .. | ||
| common | ||
| sys | ||
| bin2h.pl | ||
| cxgb_adapter.h | ||
| cxgb_include.h | ||
| cxgb_ioctl.h | ||
| cxgb_main.c | ||
| cxgb_offload.h | ||
| cxgb_osdep.h | ||
| cxgb_sge.c | ||
| cxgb_t3fw.c | ||
| cxgb_t3fw.h | ||
| t3b_protocol_sram.h | ||
| t3b_tp_eeprom.h | ||
| t3c_protocol_sram.h | ||
| t3c_tp_eeprom.h | ||