Subject: Re: [PATCH] net: via-velocity.c fix sleep-with-spinlock bug during MTU change

From: Séguier Régis <[email-masked]>
Date: Mon, 16 Jun 2008 23:17:25 +0200

Séguier Régis a écrit :
> Francois Romieu a écrit :
>> Francois Romieu <[email-masked]> :
>> [...context available from http://lkml.org/lkml/2008/5/31/251 ...]
>>
>> Régis, I need your help.
>>
>> Can you give the patchkit below a try and check if the change of mtu
>> works correctly ?
>>
>> http://userweb.kernel.org/~romieu/via-velocity/2.6.26-rc6/
>>
>> or:
>>
>> git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6.git 
>> velocity
>>
>>   
> With the patchkit, the driver doesn't work anymore.
> I think there is an error in TX, paquets don't arrive to other equipment.
> RX seem to work fine, I could see ingoming paquets.
>
With this modifications of your patchkit (the 0001), TX works again.

--- via-velocity.c      2008-06-17 00:43:03.000000000 +0200
+++ drivers/net/via-velocity.c  2008-06-17 00:43:56.000000000 +0200
@@ -2048,9 +2048,12 @@ static int velocity_xmit(struct sk_buff
        int pktlen = skb->len;
        __le16 len = cpu_to_le16(pktlen);

-       if (skb_padto(skb, ETH_ZLEN))
-               goto out;
-
+       if (pktlen < ETH_ZLEN)
+       {
+               if (skb_padto(skb, ETH_ZLEN))
+                       goto out;
+               len = cpu_to_le16(ETH_ZLEN);
+       }
 #ifdef VELOCITY_ZERO_COPY_SUPPORT
        if (skb_shinfo(skb)->nr_frags > 6 && __skb_linearize(skb)) {
                kfree_skb(skb);

Now, I'll try for mtu change
-- 
Régis