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.
This commit is contained in:
luigi 2012-04-12 14:06:05 +00:00
parent d6a537d930
commit 6f01bcaac2

View File

@ -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 * rxr->next_to_check is set to 0 on a ring reinit
*/ */
if (netmap_no_pendintr || force_update) { 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; l = rxr->next_to_check;
j = netmap_idx_n2k(kring, l); j = netmap_idx_n2k(kring, l);