Subject: Re: LRO disable warnings on kernel 2.6.38

From: Stanislaw Gruszka <[email-masked]>
Date: Mon, 21 Mar 2011 13:34:07 +0100

On Mon, Mar 21, 2011 at 05:00:31AM -0500, Amit Salecha wrote:
> > Well, this warning can be ignored since these NIC dont receive packets
> > to be forwarded in your setup.
> >
> > I would say netxen_nic_set_flags() is buggy : It rejects data if other
> > flag than ETH_FLAG_LRO is set.
> >
> > if (data & ~ETH_FLAG_LRO)
> >       return -EINVAL;
> >
> > Brought by commit ef2519b1dd39940 (netxen: fail when try to setup
> > unsupported features) later corrected by commit 97d1935a61b7fe7a65f98f
> > (Make ethtool_ops::set_flags() return -EINVAL for unsupported flags)
> >
> > Since this drivers asserts NETIF_F_HW_VLAN_TX (mirroring
> > ETH_FLAG_TXVLAN), ethtool_op_get_flags() can return more than
> > ETH_FLAG_LRO.
> >
> > dev_disable_lro() then calls netxen_nic_set_flags() with
> > ETH_FLAG_TXVLAN
> > -> -EINVAL, and ETH_FLAG_LRO stay ORed in dev->features -> WARNING
> >
> >
> Thanks Eric.
> 
> Instead of
>         if (data & ~ETH_FLAG_LRO)
>                 return -EINVAL;
> 
> check should be like this:
> 
> +    if ((ethtool_op_get_flags(netdev) & ~ETH_FLAG_LRO) !=
> +                                       (data & ~ETH_FLAG_LRO))
>                 return -EINVAL;
> 
> Will provide patch soon.

Yep, that should fix issue in netxen.

I'm afraid some other drivers can have similar problem after
adding ETH_FLAG_{TX,RX}VLAN. I think we need to distinguish features
that are configurable at runtime from features that are hardcoded.
I'm going to look at that.

Thanks
Stanislaw