Subject: Re: [PATCH] via-velocity: don't oops on MTU change.

From: Jarek Poplawski <[email-masked]>
Date: Fri, 16 Nov 2007 00:10:46 +0100

Stephen Hemminger wrote, On 11/15/2007 07:20 PM:

> On Thu, 15 Nov 2007 09:26:00 +0100
> Jarek Poplawski <[email-masked]> wrote:
> 
>> On 15-11-2007 04:38, Stephen Hemminger wrote:
>>> Simple mtu change when device is down.
>>> Fix http://bugzilla.kernel.org/show_bug.cgi?id=9382.
>>>
>>> Signed-off-by: Stephen Hemminger <[email-masked]>
>>>
>>>
>>> --- a/drivers/net/via-velocity.c	2007-10-22 09:38:11.000000000 -0700
>>> +++ b/drivers/net/via-velocity.c	2007-11-14 19:34:30.000000000 -0800
>>> @@ -1963,6 +1963,11 @@ static int velocity_change_mtu(struct ne
>>>  		return -EINVAL;
>>>  	}
>>>  
>>> +	if (!netif_running(dev)) {
>>> +		dev->mtu = new_mtu;
>>> +		return 0;
>>> +	}
>>> +
>>>  	if (new_mtu != oldmtu) {
>>>  		spin_lock_irqsave(&vptr->lock, flags);
>> Shouldn't this latter 'if' be removed now, btw?
> 
> No, it makes sense that if mtu is same, no action need be taken.
> 
> Actually, it would make sense to push the same check up into
> the netdevice core management.

Sure! I was only worried velocity_open() treats dev->mtu
a bit different than velocity_change_mtu(), so eg. after:

velocity_change_mtu() // dev is down
velocity_open()
velocity_change_mtu() // dev is up

with the same mtu, vptr->rx_buf_sz could be different than after:

velocity_open()
velocity_change_mtu() // dev is up

But, probably, I miss someting.

Thanks,
Jarek P.