[Bug 260068] e1000 & igb in netmap mode removes VLAN headers

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 28 Nov 2021 18:24:23 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260068

Vincenzo Maffione <vmaffione@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|New                         |In Progress

--- Comment #4 from Vincenzo Maffione <vmaffione@FreeBSD.org> ---
I think that after the latest changes, the e1000 drivers (em, lem, igb) are
looking at the wrong "capability" bitmaps, and therefore they are basically
ignoring your ifconfig commands to disable capabilities (vlanhwtag, rxcsum,
...).
In particular, VLAN hw stripping is always done by the device, even if you
disable it.

This explains why you don't see the VLAN header when using netmap. In the
non-netmap case, the stripped VLAN information gets stored in the mbuf
metadata, so that the kernel is able to insert that back when passing the
packet to tcpdump. In the netmap case, the stripped VLAN information is lost,
because netmap has no space for that kind of metadata.

The patch I attached fixes the e1000 drivers so that device capabilities are
actually used to configure the device accordingly (i.e., VLAN stripping is
disabled in the hardware). The patch also does some cleanup to make the e1000
drivers more uniform w.r.t. VLAN/CSUM offload processing.

Could you please test the patch for em and igb? The patch is meant for FreeBSD
HEAD.

-- 
You are receiving this mail because:
You are the assignee for the bug.