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 Rizzo 2012-04-12 14:06:05 +00:00
parent 3902d8a991
commit 4f609083e5

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
*/
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);