NAK, at least the second half. The IGBVF_FLAG_RX_LB_VLAN_BSWAP tag is specifically to work around an errata on the i350. This change would break the 82576.
Chris, I'm working on this right now and should have a setup ready for repro by the end of the day. Carolyn and I will work together to get this reproduced and fixed for you. -Mitch > -----Original Message----- > From: Chris Friesen [mailto:chris.frie...@genband.com] > Sent: Wednesday, November 14, 2012 11:55 AM > To: Wyborny, Carolyn > Cc: e1000-devel@lists.sourceforge.net; Ronciak, John; Allan, Bruce W; > Brandeburg, Jesse > Subject: Re: [E1000-devel] BUG? strange behavior with vlans and virtual > functions on i350 -- possible solution > > There seems to be a bug in the igbvf sourceforge driver. In > igbvf_receive_skb() we're ANDing the big-endian vlan ID with the little- > endian mask. > > Also, I think the criteria for setting IGBVF_FLAG_RX_LB_VLAN_BSWAP is > incorrect. > The 82576 datasheet also indicates that the VLAN tag is big endian. > Since both currently-supported devices are big-endian, maybe this should > be the default? > > Accordingly, I think the following patch may be in order: > > > diff --git a/src/netdev.c b/src/netdev.c index a18f000..3834c69 100644 > --- a/src/netdev.c > +++ b/src/netdev.c > @@ -127,9 +127,9 @@ static void igbvf_receive_skb(struct igbvf_adapter > *adapter, > if (status & E1000_RXD_STAT_VP) { > if ((adapter->flags & IGBVF_FLAG_RX_LB_VLAN_BSWAP) && > (status & E1000_RXDEXT_STATERR_LB)) > - vid = be16_to_cpu(vlan & E1000_RXD_SPC_VLAN_MASK); > + vid = be16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK; > else > - vid = le16_to_cpu(vlan & E1000_RXD_SPC_VLAN_MASK); > + vid = le16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK; > } > /* > * On some adapters, trunk VLANs are incorrectly indicated in the > @@ -2944,9 +2944,8 @@ static int __devinit igbvf_probe(struct pci_dev > *pdev, > /* reset the hardware with the new settings */ > igbvf_reset(adapter); > > - /* set hardware-specific flags */ > - if (adapter->hw.mac.type == e1000_vfadapt_i350) > - adapter->flags |= IGBVF_FLAG_RX_LB_VLAN_BSWAP; > + /* both 82576 and i350 store vlan ID in network order */ > + adapter->flags |= IGBVF_FLAG_RX_LB_VLAN_BSWAP; > > /* tell the stack to leave us alone until igbvf_open() is called */ > netif_carrier_off(netdev); > > > Incidentally, the igbvf driver in the current mainline sources is > missing support for IGBVF_FLAG_RX_LB_VLAN_BSWAP so it will break when > using VLAN in a VF. I'll be sending in a patch. > > Chris > > ------------------------------------------------------------------------ > ------ > Monitor your physical, virtual and cloud infrastructure from a single > web console. Get in-depth insight into apps, servers, databases, vmware, > SAP, cloud infrastructure, etc. Download 30-day Free Trial. > Pricing starts from $795 for 25 servers or applications! > http://p.sf.net/sfu/zoho_dev2dev_nov > _______________________________________________ > E1000-devel mailing list > E1000-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/e1000-devel > To learn more about Intel® Ethernet, visit > http://communities.intel.com/community/wired ------------------------------------------------------------------------------ Monitor your physical, virtual and cloud infrastructure from a single web console. Get in-depth insight into apps, servers, databases, vmware, SAP, cloud infrastructure, etc. Download 30-day Free Trial. Pricing starts from $795 for 25 servers or applications! http://p.sf.net/sfu/zoho_dev2dev_nov _______________________________________________ E1000-devel mailing list E1000-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/e1000-devel To learn more about Intel® Ethernet, visit http://communities.intel.com/community/wired