summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorluigi <luigi@FreeBSD.org>2012-04-12 14:06:05 +0000
committerluigi <luigi@FreeBSD.org>2012-04-12 14:06:05 +0000
commit6f01bcaac2b7eb091386d4274ea4700c864b70be (patch)
tree67d9809f2cafdf36c46e7fb87c3ab02f17b46a22 /sys/dev
parentd6a537d930602e0c6bbc90382c52345098fb190e (diff)
downloadFreeBSD-src-6f01bcaac2b7eb091386d4274ea4700c864b70be.zip
FreeBSD-src-6f01bcaac2b7eb091386d4274ea4700c864b70be.tar.gz
Apparently the length field in advanced descriptors
does not include the CRC irrespective of the setting of CRCSTRIP. The 82599 data sheets (sec. 7.1.6) say differently. Very strange. Need to check what happens on legacy descriptors, but for the time being this restores functionality.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/netmap/ixgbe_netmap.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/netmap/ixgbe_netmap.h b/sys/dev/netmap/ixgbe_netmap.h
index 6775dd3..b448f95 100644
--- a/sys/dev/netmap/ixgbe_netmap.h
+++ b/sys/dev/netmap/ixgbe_netmap.h
@@ -474,7 +474,12 @@ ixgbe_netmap_rxsync(struct ifnet *ifp, u_int ring_nr, int do_lock)
* rxr->next_to_check is set to 0 on a ring reinit
*/
if (netmap_no_pendintr || force_update) {
- int crclen = ix_crcstrip ? 0 : 4;
+ /* XXX apparently the length field in advanced descriptors
+ * does not include the CRC irrespective of the setting
+ * of CRCSTRIP. The data sheets say differently.
+ * Very strange.
+ */
+ int crclen = 0; // ix_crcstrip ? 0 : 4;
l = rxr->next_to_check;
j = netmap_idx_n2k(kring, l);
OpenPOWER on IntegriCloud