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

Reply via email to