Subject: Re: [PATCH/RFC] e1000: Check for hw type before enabling ipv6 TSO

From: "Kok, Auke" <[email-masked]>
Date: Mon, 26 Mar 2007 16:48:51 -0700

Sridhar Samudrala wrote:
> I think the check for hw type is missing in e1000_set_tso()
> before enabling ipv6 TSO.
> 
> e1000_probe() makes sure that NETIF_F_TSO6 is set only if
> hw.mac_type > e1000_82547_rev_2. But this is not done in
> e1000_set_tso() that gets called when trying to enable TSO
> using ethtool.
> 
> I noticed this problem when i tried to do an ipv6 netperf
> test with TSO enabled on 82541 based e1000 card.
> 
> The following patch adds this check to e1000_set_tso()

that looks indeed like an oversight. I'll make sure this is verified and will 
include this patch in my upstream submission to the kernel maintainer if it 
checks out,

thanks for posting!

Auke

> 
> Thanks
> Sridhar
> 
> Signed-off-by: Sridhar Samudrala <[email-masked]>
> 
> diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c
> --- a/drivers/net/e1000/e1000_ethtool.c
> +++ b/drivers/net/e1000/e1000_ethtool.c
> @@ -351,10 +351,12 @@ e1000_set_tso(struct net_device *netdev, uint32_t data)
>  	else
>  		netdev->features &= ~NETIF_F_TSO;
>  
> -	if (data)
> -		netdev->features |= NETIF_F_TSO6;
> -	else
> -		netdev->features &= ~NETIF_F_TSO6;
> +	if (adapter->hw.mac_type > e1000_82547_rev_2) {
> +		if (data)
> +			netdev->features |= NETIF_F_TSO6;
> +		else
> +			netdev->features &= ~NETIF_F_TSO6;
> +	}
>  
>  	DPRINTK(PROBE, INFO, "TSO is %s\n", data ? "Enabled" : "Disabled");
>  	adapter->tso_force = TRUE;
>