* RE: e1000e on DH55HC stalling and kernel panic in 3.6.6
From: Denys Fedoryshchenko @ 2012-11-13 22:33 UTC (permalink / raw)
To: Dave, Tushar N
Cc: Kirsher, Jeffrey T, Brandeburg, Jesse, Allan, Bruce W,
Wyborny, Carolyn, Skidmore, Donald C, Rose, Gregory V,
Waskiewicz Jr, Peter P, Duyck, Alexander H, Ronciak, John,
e1000-devel, netdev, linux-kernel
In-Reply-To: <061C8A8601E8EE4CA8D8FD6990CEA8913348A9F7@ORSMSX102.amr.corp.intel.com>
On 2012-11-13 21:41, Dave, Tushar N wrote:
>>-----Original Message-----
>>From: netdev-owner@vger.kernel.org
>> [mailto:netdev-owner@vger.kernel.org]
>>On Behalf Of Denys Fedoryshchenko
>>Sent: Tuesday, November 13, 2012 5:59 AM
>>To: Kirsher, Jeffrey T; Brandeburg, Jesse; Allan, Bruce W; Wyborny,
>>Carolyn; Skidmore, Donald C; Rose, Gregory V; Waskiewicz Jr, Peter P;
>>Duyck, Alexander H; Ronciak, John; e1000-devel@lists.sourceforge.net;
>>netdev@vger.kernel.org; linux-kernel@vger.kernel.org
>>Subject: e1000e on DH55HC stalling and kernel panic in 3.6.6
>>
>>Hi
>>
>>I just tried to run latest kernel on my DH55HC motherboard latest
>> kernel
>>3.6.6 and got various network problems, such as network traffic are
>>stopping, and sometimes i am getting kernel panic.
>>When traffic are stopping, ethtool -r eth0 sometimes helps.
>>When i do ethtool -G eth0 rx NNN , sometimes it will give kernel
>> panic,
>>but it is hard to reproduce.
>>
>>I tried to capture panic on pictures, so will try to decode on what i
>> got
>>photo, it is a nightmare, but sadly i dont have serial in hands to
>> get
>>data over it.
>>
>>skbuff: skb_over_panic: text:f86fc769 len:25807 put:25807
>> head:c1da1800
>>data:c1da1840 tail:0xc1da7d0f end:c1da1f40 dev:eth0 kernel BUG at
>>net/core/skbuff.c:127
>>opcode: 0000 [#1] SMP
>>Pid: 0 comm: swapper/6 Not tained 3.6.6-build-0063 #23
>>EIP: 0060:[<c02e7980>] EFLAGS: 00010296 CPU:6 EIP is at
>> skb_put+0x83/0x8e
>>
>>There is registers and stack, let me know if you need specific fields
>>
>>Call trace:
>>f86fc769 ? e1000_clean_rx_irq+0x1e1/0x2af [e1000e]
>>f86fc769 e1000_clean_rx_irq+0x1e1/0x2af [e1000e]
>>f86fcc73 e1000e_poll+0x6a/0x209 [e1000e]
>>c02f1630 net_rx_action+0x90/0x15d
>>c01302d5 __do_softirq+0x8a/-x13b
>>c013024b ? local_bh_enable+0xd/0xd
>><IRQ>
>>c0130504 irq_exit+0x41/0x91
>>c0102c37 do_IRQ+0x79/0x8d
>>
>>There is also more data, let me know if you need it.
> Yes, please send us the full dmesg log with error.
> Have you tried out-of-tree e1000e driver?
>
> -Tushar
It is kernel panic, and screen is not good that i am unable to get
proper photo.
Should i try to make photos and send them as pictures?
I will try to get also tomorrow USB Serial, and probably i can output
there panic message.
I will try also out of tree e1000e tomorrow first.
---
Denys Fedoryshchenko, Network Engineer, Virtual ISP S.A.L.
^ permalink raw reply
* Re: [PATCH V2] wanrouter: Remove it and the drivers that depend on it
From: Joe Perches @ 2012-11-13 22:32 UTC (permalink / raw)
To: David Miller
Cc: rob, harryxiyou, jdike, richard, linux, ralf, benh, paulus, chris,
jcmvbkbc, isdn, linux-doc, linux-kernel, xiyoulinuxkernelgroup,
linux-kernel, linux-arm-kernel, linux-mips, linuxppc-dev,
user-mode-linux-devel, user-mode-linux-user, linux-xtensa, netdev
In-Reply-To: <20121113.171736.561094209116852795.davem@davemloft.net>
On Tue, 2012-11-13 at 17:17 -0500, David Miller wrote:
> From: Joe Perches <joe@perches.com>
> Date: Tue, 13 Nov 2012 12:17:25 -0800
>
> > That seems an odd workflow as it leaves dangling CONFIG_<foo>
> > options set, but I guess it doesn't hurt so here it is.
>
> As you said it's harmless, and more importantly it avoids
> unnecessary conflicts.
>
> > I just removed the modified arch/.../<foo>defconfig files.
>
> Something is not right here:
> [davem@drr net-next]$ git am --signoff V2-wanrouter-Remove-it-and-the-drivers-that-depend-on-it.patch
> Applying: wanrouter: Remove it and the drivers that depend on it
> error: removal patch leaves file contents
> error: net/wanrouter/Kconfig: patch does not apply
> error: removal patch leaves file contents
> error: net/wanrouter/Makefile: patch does not apply
> error: removal patch leaves file contents
> error: net/wanrouter/patchlevel: patch does not apply
> error: removal patch leaves file contents
> error: net/wanrouter/wanmain.c: patch does not apply
> error: removal patch leaves file contents
> error: net/wanrouter/wanproc.c: patch does not apply
> error: removal patch leaves file contents
> error: drivers/net/wan/cycx_drv.c: patch does not apply
> error: removal patch leaves file contents
> error: drivers/net/wan/cycx_main.c: patch does not apply
> error: removal patch leaves file contents
> error: drivers/net/wan/cycx_x25.c: patch does not apply
> error: removal patch leaves file contents
> error: include/linux/cyclomx.h: patch does not apply
> error: removal patch leaves file contents
> error: include/linux/cycx_drv.h: patch does not apply
> error: removal patch leaves file contents
> error: include/linux/wanrouter.h: patch does not apply
> error: removal patch leaves file contents
> error: include/uapi/linux/wanrouter.h: patch does not apply
Right, that is unexpected/odd/interesting.
I was trying to save mailing list bandwidth by reducing
the patch size.
I generated this with
$ git format-patch -M -D
but it doesn't apply here either. :(
Using
$ git format-patch -M
does apply correctly.
It's quite a bit larger though. (120KB vs 14)
I'll send the large patch just to netdev.
Joe
^ permalink raw reply
* Re: [PATCH net-next] add DOVE extensions for VXLAN
From: David Stevens @ 2012-11-13 22:28 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: David Miller, netdev
In-Reply-To: <20121113132842.2414d381@nehalam.linuxnetplumber.net>
Stephen Hemminger <shemminger@vyatta.com> wrote on 11/13/2012 04:28:42 PM:
>
> There are some issues with this.
> 1. DOVE flag is mixing multiple functions (arp and route) together,
> users may want one without the other.
I can separate these.
> 2. There is an implicit assumption that IP stack has valid IP address
> in the tenant network (vxlan). This is rarely the case. For security
> and other reasons, in my opinion the best practice is not to have
> the bridge as part of the tenant network.
No, actually for testing I didn't set an IP address on the tunnel
endpoint at all. The neighbor table entries must be in the domain, but
they are only used within the domain when the tunnel endpoint is on a
bridge and the host has no IP address on that interface.
> 3. Misses might be common and this could easily be used to DoS the host
> from a malicious guest.
Yes. The management piece can add forwarding table entries with
"0.0.0.0" as the dst IP address to disable MAC misses, and neighbor
table entries to disable IP misses, but it is our intention to have all
reachable destinations with both forwarding table and neighbor table
entries and no learning or multicast address (ie, no forwarding of
anything
that isn't in the forwarding table). And yes, we want a notification
for every miss packet.
Someone who doesn't want all of them shouldn't use this feature.
If we're dropping the "dove" flag in favor of individual flags for each
feature, then I could make this into "l2miss" and "l3miss" flags and
they should default off, of course.
+-DLS
^ permalink raw reply
* Re: [PATCH net-next] 8021q: validate SAN MAC address
From: Michael Chan @ 2012-11-13 22:29 UTC (permalink / raw)
To: David Miller; +Cc: netdev
In-Reply-To: <20121113.165300.1149843648625252626.davem@davemloft.net>
On Tue, 2012-11-13 at 16:53 -0500, David Miller wrote:
> I can only assume that, in this case, this code block is triggered
> in vlan_dev_open():
>
> if (!ether_addr_equal(dev->dev_addr, real_dev->dev_addr)) {
> err = dev_uc_add(real_dev, dev->dev_addr);
> if (err < 0)
> goto out;
> }
No, this is not triggered. The addresses will be equal (and invalid) in
this case. No addresses will be added.
>
> And if so we're adding an invalid ethernet address to the underlying
> device's UC list. Yet another terrible aspect of this situation.
>
> The more I look into this situation the more it looks like piling crap
> on top of crap on top of crap. It's a long depency chain of special
> cases just to get this weird setup working.
>
> I'm sorry, I'm not making the situation even worse by applying this
> patch. If you want to have real bypasses to allow VLAN VIDs to
> be configured on SAN devices, create a real interface for it, rather
> than hack to shreds the stuff we have already.
I don't understand. We need to have VLAN tags inserted to packets using
that interface. The VID is dynamically discovered by application. How
do suggest we do that if we don't use 8021q?
>
>
^ permalink raw reply
* Re: [RFC net-next] tun: implement BQL
From: David Miller @ 2012-11-13 22:19 UTC (permalink / raw)
To: shemminger; +Cc: netdev
In-Reply-To: <20121112132241.12bb94e4@nehalam.linuxnetplumber.net>
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Mon, 12 Nov 2012 13:22:41 -0800
> Add multiqueue BQL to tap device. Tested with VPN, doesn't have a big impact,
> most likely because there is little queueing occuring at TAP device except
> under case of forwarding.
>
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
I think unless we can show it making an impact in a normal
usage scenerio, we should leave it alone for now.
^ permalink raw reply
* Re: [PATCH V2] wanrouter: Remove it and the drivers that depend on it
From: David Miller @ 2012-11-13 22:17 UTC (permalink / raw)
To: joe
Cc: rob, harryxiyou, jdike, richard, linux, ralf, benh, paulus, chris,
jcmvbkbc, isdn, linux-doc, linux-kernel, xiyoulinuxkernelgroup,
linux-kernel, linux-arm-kernel, linux-mips, linuxppc-dev,
user-mode-linux-devel, user-mode-linux-user, linux-xtensa, netdev
In-Reply-To: <1352837845.12850.3.camel@joe-AO722>
From: Joe Perches <joe@perches.com>
Date: Tue, 13 Nov 2012 12:17:25 -0800
> That seems an odd workflow as it leaves dangling CONFIG_<foo>
> options set, but I guess it doesn't hurt so here it is.
As you said it's harmless, and more importantly it avoids
unnecessary conflicts.
> I just removed the modified arch/.../<foo>defconfig files.
Something is not right here:
[davem@drr net-next]$ git am --signoff V2-wanrouter-Remove-it-and-the-drivers-that-depend-on-it.patch
Applying: wanrouter: Remove it and the drivers that depend on it
error: removal patch leaves file contents
error: net/wanrouter/Kconfig: patch does not apply
error: removal patch leaves file contents
error: net/wanrouter/Makefile: patch does not apply
error: removal patch leaves file contents
error: net/wanrouter/patchlevel: patch does not apply
error: removal patch leaves file contents
error: net/wanrouter/wanmain.c: patch does not apply
error: removal patch leaves file contents
error: net/wanrouter/wanproc.c: patch does not apply
error: removal patch leaves file contents
error: drivers/net/wan/cycx_drv.c: patch does not apply
error: removal patch leaves file contents
error: drivers/net/wan/cycx_main.c: patch does not apply
error: removal patch leaves file contents
error: drivers/net/wan/cycx_x25.c: patch does not apply
error: removal patch leaves file contents
error: include/linux/cyclomx.h: patch does not apply
error: removal patch leaves file contents
error: include/linux/cycx_drv.h: patch does not apply
error: removal patch leaves file contents
error: include/linux/wanrouter.h: patch does not apply
error: removal patch leaves file contents
error: include/uapi/linux/wanrouter.h: patch does not apply
^ permalink raw reply
* Re: [net-next patch] vxlan: fix a typo.
From: David Miller @ 2012-11-13 22:14 UTC (permalink / raw)
To: shemminger; +Cc: ramirose, netdev
In-Reply-To: <20121113133210.0fdef8af@nehalam.linuxnetplumber.net>
From: Stephen Hemminger <shemminger@vyatta.com>
Date: Tue, 13 Nov 2012 13:32:10 -0800
> On Wed, 14 Nov 2012 01:29:15 +0200
> Rami Rosen <ramirose@gmail.com> wrote:
>
>> Use eXtensible and not eXtensiable in the comment on top.
>>
>> Signed-off-by: Rami Rosen <ramirose@gmail.com>
>> ---
>> drivers/net/vxlan.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
>> index 8aca888..3204208 100644
>> --- a/drivers/net/vxlan.c
>> +++ b/drivers/net/vxlan.c
>> @@ -1,5 +1,5 @@
>> /*
>> - * VXLAN: Virtual eXtensiable Local Area Network
>> + * VXLAN: Virtual eXtensible Local Area Network
>> *
>> * Copyright (c) 2012 Vyatta Inc.
>> *
>
>
> This can go into net (3.7) if Linus is willing.
>
> Acked-by: Stephen Hemminger <shemminger@vyatta.com>
Applied to 'net', thanks.
^ permalink raw reply
* Re: [net-next PATCH] net/ethernet: remove useless is_valid_ether_addr from drivers ndo_open
From: Joachim Eastwood @ 2012-11-13 22:07 UTC (permalink / raw)
To: Stephen Hemminger
Cc: davem, pcnet32, nicolas.ferre, mlindner, nico, steve.glendinning,
uclinux-dist-devel, netdev
In-Reply-To: <20121113135519.1e02be53@nehalam.linuxnetplumber.net>
On 13 November 2012 22:55, Stephen Hemminger <shemminger@vyatta.com> wrote:
> On Tue, 13 Nov 2012 22:46:39 +0100
> Joachim Eastwood <manabian@gmail.com> wrote:
>
>> diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
>> index d19a143..ce8d053 100644
>> --- a/drivers/net/ethernet/marvell/skge.c
>> +++ b/drivers/net/ethernet/marvell/skge.c
>> @@ -2524,9 +2524,6 @@ static int skge_up(struct net_device *dev)
>> size_t rx_size, tx_size;
>> int err;
>>
>> - if (!is_valid_ether_addr(dev->dev_addr))
>> - return -EINVAL;
>> -
>> netif_info(skge, ifup, skge->netdev, "enabling interface\n");
>>
>> if (dev->mtu > RX_BUF_SIZE)
>
> This should probably stay since it costs so little and protects
> against a obscure error case.
> skge_up is called from skge_resume on resume from suspend.
> It is possible that the device was zeroed after skge_suspend was
> called.
ah, true. Should have checked that...
I see now that some of the other drivers also makes calls into open
from resume. Guess that those cases should be dropped as well.
Thanks for your feedback.
regards
Joachim Eastwood
^ permalink raw reply
* Re: [PATCH] tilegx: request_irq with a non-null device name
From: Chris Metcalf @ 2012-11-13 21:59 UTC (permalink / raw)
To: Simon Marchi; +Cc: netdev, linux-kernel
In-Reply-To: <CAFXXi0kcGCqr-Ss5-Li9vXKCWyTh6Nvx+aAzVUZ1PZbZ=YZ2Pg@mail.gmail.com>
On 11/13/2012 4:54 PM, Simon Marchi wrote:
> On Tue, Nov 13, 2012 at 1:37 PM, Chris Metcalf <cmetcalf@tilera.com> wrote:
>> On 11/13/2012 3:58 PM, Simon Marchi wrote:
>>> This patch simply makes the tilegx net driver call request_irq with a
>>> non-null name. It makes the output in /proc/interrupts more obvious, but
>>> also helps tools that don't expect to find null there.
>>>
>>> Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
>>> ---
>>> drivers/net/ethernet/tile/tilegx.c | 2 +-
>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/tile/tilegx.c b/drivers/net/ethernet/tile/tilegx.c
>>> index 4e98100..66e025a 100644
>>> --- a/drivers/net/ethernet/tile/tilegx.c
>>> +++ b/drivers/net/ethernet/tile/tilegx.c
>>> @@ -917,7 +917,7 @@ static int tile_net_setup_interrupts(struct net_device *dev)
>>> ingress_irq = rc;
>>> tile_irq_activate(ingress_irq, TILE_IRQ_PERCPU);
>>> rc = request_irq(ingress_irq, tile_net_handle_ingress_irq,
>>> - 0, NULL, NULL);
>>> + 0, "tile_net", NULL);
>> Good catch. If you can change it to dev->name instead of "tile_net", feel
>> free to add my:
> I thought about that first, but it wouldn't be very logical. This
> module is loaded once and for all when the first network device is
> brought up, so this request_irq is for all the tile network
> interfaces. Suppose you "up" gbe0, "up" gbe1 and "down" gbe0, the
> device name would still be gbe0, even though it's down. That's why I
> opted for a generic name instead.
>
> If you still want to go with dev->name I have no problem with that.
No, you're right, that's a good point. It does probably make more sense to
use "tile_net". So apply my Acked-by to your patch as-is. Thanks!
--
Chris Metcalf, Tilera Corp.
http://www.tilera.com
^ permalink raw reply
* Re: [net-next PATCH] net/ethernet: remove useless is_valid_ether_addr from drivers ndo_open
From: Stephen Hemminger @ 2012-11-13 21:55 UTC (permalink / raw)
To: Joachim Eastwood
Cc: davem, pcnet32, nicolas.ferre, mlindner, nico, steve.glendinning,
uclinux-dist-devel, netdev
In-Reply-To: <1352843199-24869-1-git-send-email-manabian@gmail.com>
On Tue, 13 Nov 2012 22:46:39 +0100
Joachim Eastwood <manabian@gmail.com> wrote:
> diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
> index d19a143..ce8d053 100644
> --- a/drivers/net/ethernet/marvell/skge.c
> +++ b/drivers/net/ethernet/marvell/skge.c
> @@ -2524,9 +2524,6 @@ static int skge_up(struct net_device *dev)
> size_t rx_size, tx_size;
> int err;
>
> - if (!is_valid_ether_addr(dev->dev_addr))
> - return -EINVAL;
> -
> netif_info(skge, ifup, skge->netdev, "enabling interface\n");
>
> if (dev->mtu > RX_BUF_SIZE)
This should probably stay since it costs so little and protects
against a obscure error case.
skge_up is called from skge_resume on resume from suspend.
It is possible that the device was zeroed after skge_suspend was
called.
^ permalink raw reply
* Re: [PATCH] tilegx: request_irq with a non-null device name
From: Simon Marchi @ 2012-11-13 21:54 UTC (permalink / raw)
To: Chris Metcalf; +Cc: netdev, linux-kernel
In-Reply-To: <50A2BD87.3060202@tilera.com>
On Tue, Nov 13, 2012 at 1:37 PM, Chris Metcalf <cmetcalf@tilera.com> wrote:
> On 11/13/2012 3:58 PM, Simon Marchi wrote:
>> This patch simply makes the tilegx net driver call request_irq with a
>> non-null name. It makes the output in /proc/interrupts more obvious, but
>> also helps tools that don't expect to find null there.
>>
>> Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
>> ---
>> drivers/net/ethernet/tile/tilegx.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/tile/tilegx.c b/drivers/net/ethernet/tile/tilegx.c
>> index 4e98100..66e025a 100644
>> --- a/drivers/net/ethernet/tile/tilegx.c
>> +++ b/drivers/net/ethernet/tile/tilegx.c
>> @@ -917,7 +917,7 @@ static int tile_net_setup_interrupts(struct net_device *dev)
>> ingress_irq = rc;
>> tile_irq_activate(ingress_irq, TILE_IRQ_PERCPU);
>> rc = request_irq(ingress_irq, tile_net_handle_ingress_irq,
>> - 0, NULL, NULL);
>> + 0, "tile_net", NULL);
>
> Good catch. If you can change it to dev->name instead of "tile_net", feel
> free to add my:
I thought about that first, but it wouldn't be very logical. This
module is loaded once and for all when the first network device is
brought up, so this request_irq is for all the tile network
interfaces. Suppose you "up" gbe0, "up" gbe1 and "down" gbe0, the
device name would still be gbe0, even though it's down. That's why I
opted for a generic name instead.
If you still want to go with dev->name I have no problem with that.
> Acked-by: Chris Metcalf <cmetcalf@tilera.com>
>
> --
> Chris Metcalf, Tilera Corp.
> http://www.tilera.com
>
^ permalink raw reply
* Re: [PATCH net-next] 8021q: validate SAN MAC address
From: David Miller @ 2012-11-13 21:53 UTC (permalink / raw)
To: mchan; +Cc: netdev
In-Reply-To: <1352501644-8444-1-git-send-email-mchan@broadcom.com>
From: "Michael Chan" <mchan@broadcom.com>
Date: Fri, 9 Nov 2012 14:54:04 -0800
> Some bnx2x multi-function devices are configured for FCoE only in
> a PCI function and only has a SAN MAC address. The current code
> will fail ->ndo_validate_addr() when a VLAN device is brought up
> over such a device.
>
> Check the real device's dev_addrs[] for a valid SAN MAC address
> when validating the MAC address if the regular MAC address is not
> valid.
>
> Signed-off-by: Michael Chan <mchan@broadcom.com>
I've read this thread and I still don't think this is a nice
change at all.
It's beyond hackish to allow configuring a VLAN with a completely
invalid MAC address just because the underlying real device just so
happens to have a storage MAC address.
I can only assume that, in this case, this code block is triggered
in vlan_dev_open():
if (!ether_addr_equal(dev->dev_addr, real_dev->dev_addr)) {
err = dev_uc_add(real_dev, dev->dev_addr);
if (err < 0)
goto out;
}
And if so we're adding an invalid ethernet address to the underlying
device's UC list. Yet another terrible aspect of this situation.
The more I look into this situation the more it looks like piling crap
on top of crap on top of crap. It's a long depency chain of special
cases just to get this weird setup working.
I'm sorry, I'm not making the situation even worse by applying this
patch. If you want to have real bypasses to allow VLAN VIDs to
be configured on SAN devices, create a real interface for it, rather
than hack to shreds the stuff we have already.
Thanks.
^ permalink raw reply
* Re: [PATCH] tilegx: request_irq with a non-null device name
From: Stephen Hemminger @ 2012-11-13 21:50 UTC (permalink / raw)
To: Chris Metcalf; +Cc: Simon Marchi, netdev, linux-kernel
In-Reply-To: <50A2BD87.3060202@tilera.com>
On Tue, 13 Nov 2012 16:37:11 -0500
Chris Metcalf <cmetcalf@tilera.com> wrote:
> On 11/13/2012 3:58 PM, Simon Marchi wrote:
> > This patch simply makes the tilegx net driver call request_irq with a
> > non-null name. It makes the output in /proc/interrupts more obvious, but
> > also helps tools that don't expect to find null there.
> >
> > Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
> > ---
> > drivers/net/ethernet/tile/tilegx.c | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/tile/tilegx.c b/drivers/net/ethernet/tile/tilegx.c
> > index 4e98100..66e025a 100644
> > --- a/drivers/net/ethernet/tile/tilegx.c
> > +++ b/drivers/net/ethernet/tile/tilegx.c
> > @@ -917,7 +917,7 @@ static int tile_net_setup_interrupts(struct net_device *dev)
> > ingress_irq = rc;
> > tile_irq_activate(ingress_irq, TILE_IRQ_PERCPU);
> > rc = request_irq(ingress_irq, tile_net_handle_ingress_irq,
> > - 0, NULL, NULL);
> > + 0, "tile_net", NULL);
>
> Good catch. If you can change it to dev->name instead of "tile_net", feel
> free to add my:
>
> Acked-by: Chris Metcalf <cmetcalf@tilera.com>
>
It really should be using dev->name since that helps out some
applications like irqbalance that read /proc/interrupts
^ permalink raw reply
* [net-next PATCH] net/ethernet: remove useless is_valid_ether_addr from drivers ndo_open
From: Joachim Eastwood @ 2012-11-13 21:46 UTC (permalink / raw)
To: davem, pcnet32, nicolas.ferre, mlindner, shemminger, nico,
steve.glendinning, uclinux-dist-devel
Cc: netdev, Joachim Eastwood
If ndo_validate_addr is set in the driver netdev core will call
this validate function before calling ndo_open. So there is no
point in doing this again in driver ndo_open function.
With this change is_valid_ether_addr will be called from the
generic eth_validate_addr function. So there should be no change
in the actual behavior.
Signed-off-by: Joachim Eastwood <manabian@gmail.com>
---
Hi,
net/core/dev.c __dev_open does
1165 if (ops->ndo_validate_addr)
1166 ret = ops->ndo_validate_addr(dev);
1167
1168 if (!ret && ops->ndo_open)
1169 ret = ops->ndo_open(dev);
so I don't see the need for a is_valid_ether_addr in
ndo_open at all or am I missing something?
ndo_validate_addr is set to eth_validate_addr in all
changed drivers.
regards
Joachim Eastwood
drivers/net/ethernet/8390/etherh.c | 6 ------
drivers/net/ethernet/adi/bfin_mac.c | 10 ----------
drivers/net/ethernet/amd/pcnet32.c | 6 ------
drivers/net/ethernet/cadence/at91_ether.c | 3 ---
drivers/net/ethernet/cadence/macb.c | 3 ---
drivers/net/ethernet/calxeda/xgmac.c | 11 +----------
drivers/net/ethernet/dnet.c | 3 ---
drivers/net/ethernet/i825xx/ether1.c | 6 ------
drivers/net/ethernet/marvell/skge.c | 3 ---
drivers/net/ethernet/micrel/ks8695net.c | 3 ---
drivers/net/ethernet/microchip/enc28j60.c | 6 ------
drivers/net/ethernet/nxp/lpc_eth.c | 4 +---
drivers/net/ethernet/seeq/ether3.c | 6 ------
drivers/net/ethernet/smsc/smc911x.c | 10 ----------
drivers/net/ethernet/smsc/smc91x.c | 10 ----------
drivers/net/ethernet/smsc/smsc911x.c | 5 -----
drivers/net/ethernet/smsc/smsc9420.c | 6 ------
drivers/net/ethernet/wiznet/w5100.c | 2 --
drivers/net/ethernet/wiznet/w5300.c | 2 --
19 files changed, 2 insertions(+), 103 deletions(-)
diff --git a/drivers/net/ethernet/8390/etherh.c b/drivers/net/ethernet/8390/etherh.c
index 8322c54..6414e84 100644
--- a/drivers/net/ethernet/8390/etherh.c
+++ b/drivers/net/ethernet/8390/etherh.c
@@ -463,12 +463,6 @@ etherh_open(struct net_device *dev)
{
struct ei_device *ei_local = netdev_priv(dev);
- if (!is_valid_ether_addr(dev->dev_addr)) {
- printk(KERN_WARNING "%s: invalid ethernet MAC address\n",
- dev->name);
- return -EINVAL;
- }
-
if (request_irq(dev->irq, __ei_interrupt, 0, dev->name, dev))
return -EAGAIN;
diff --git a/drivers/net/ethernet/adi/bfin_mac.c b/drivers/net/ethernet/adi/bfin_mac.c
index f1c458d..3dd0349 100644
--- a/drivers/net/ethernet/adi/bfin_mac.c
+++ b/drivers/net/ethernet/adi/bfin_mac.c
@@ -1531,16 +1531,6 @@ static int bfin_mac_open(struct net_device *dev)
int ret;
pr_debug("%s: %s\n", dev->name, __func__);
- /*
- * Check that the address is valid. If its not, refuse
- * to bring the device up. The user must specify an
- * address using ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
- */
- if (!is_valid_ether_addr(dev->dev_addr)) {
- netdev_warn(dev, "no valid ethernet hw addr\n");
- return -EINVAL;
- }
-
/* initial rx and tx list */
ret = desc_list_init(dev);
if (ret)
diff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c
index 86b6d8e..967fe28 100644
--- a/drivers/net/ethernet/amd/pcnet32.c
+++ b/drivers/net/ethernet/amd/pcnet32.c
@@ -2013,11 +2013,6 @@ static int pcnet32_open(struct net_device *dev)
}
spin_lock_irqsave(&lp->lock, flags);
- /* Check for a valid station address */
- if (!is_valid_ether_addr(dev->dev_addr)) {
- rc = -EINVAL;
- goto err_free_irq;
- }
/* Reset the PCNET32 */
lp->a->reset(ioaddr);
@@ -2220,7 +2215,6 @@ err_free_ring:
*/
lp->a->write_bcr(ioaddr, 20, 4);
-err_free_irq:
spin_unlock_irqrestore(&lp->lock, flags);
free_irq(dev->irq, dev);
return rc;
diff --git a/drivers/net/ethernet/cadence/at91_ether.c b/drivers/net/ethernet/cadence/at91_ether.c
index e7a476c..716cc01 100644
--- a/drivers/net/ethernet/cadence/at91_ether.c
+++ b/drivers/net/ethernet/cadence/at91_ether.c
@@ -97,9 +97,6 @@ static int at91ether_open(struct net_device *dev)
u32 ctl;
int ret;
- if (!is_valid_ether_addr(dev->dev_addr))
- return -EADDRNOTAVAIL;
-
/* Clear internal statistics */
ctl = macb_readl(lp, NCR);
macb_writel(lp, NCR, ctl | MACB_BIT(CLRSTAT));
diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
index 1fac769..f33107f 100644
--- a/drivers/net/ethernet/cadence/macb.c
+++ b/drivers/net/ethernet/cadence/macb.c
@@ -1200,9 +1200,6 @@ static int macb_open(struct net_device *dev)
if (!bp->phy_dev)
return -EAGAIN;
- if (!is_valid_ether_addr(dev->dev_addr))
- return -EADDRNOTAVAIL;
-
err = macb_alloc_consistent(bp);
if (err) {
netdev_err(dev, "Unable to allocate DMA memory (error %d)\n",
diff --git a/drivers/net/ethernet/calxeda/xgmac.c b/drivers/net/ethernet/calxeda/xgmac.c
index b407043..8bafe9d 100644
--- a/drivers/net/ethernet/calxeda/xgmac.c
+++ b/drivers/net/ethernet/calxeda/xgmac.c
@@ -992,16 +992,6 @@ static int xgmac_open(struct net_device *dev)
struct xgmac_priv *priv = netdev_priv(dev);
void __iomem *ioaddr = priv->base;
- /* Check that the MAC address is valid. If its not, refuse
- * to bring the device up. The user must specify an
- * address using the following linux command:
- * ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx */
- if (!is_valid_ether_addr(dev->dev_addr)) {
- eth_hw_addr_random(dev);
- netdev_dbg(priv->dev, "generated random MAC address %pM\n",
- dev->dev_addr);
- }
-
memset(&priv->xstats, 0, sizeof(struct xgmac_extra_stats));
/* Initialize the XGMAC and descriptors */
@@ -1499,6 +1489,7 @@ static const struct net_device_ops xgmac_netdev_ops = {
.ndo_poll_controller = xgmac_poll_controller,
#endif
.ndo_set_mac_address = xgmac_set_mac_address,
+ .ndo_validate_addr = eth_validate_addr,
.ndo_set_features = xgmac_set_features,
};
diff --git a/drivers/net/ethernet/dnet.c b/drivers/net/ethernet/dnet.c
index 290b26f..feb5095 100644
--- a/drivers/net/ethernet/dnet.c
+++ b/drivers/net/ethernet/dnet.c
@@ -664,9 +664,6 @@ static int dnet_open(struct net_device *dev)
if (!bp->phy_dev)
return -EAGAIN;
- if (!is_valid_ether_addr(dev->dev_addr))
- return -EADDRNOTAVAIL;
-
napi_enable(&bp->napi);
dnet_init_hw(bp);
diff --git a/drivers/net/ethernet/i825xx/ether1.c b/drivers/net/ethernet/i825xx/ether1.c
index 067db3f..7b9609d 100644
--- a/drivers/net/ethernet/i825xx/ether1.c
+++ b/drivers/net/ethernet/i825xx/ether1.c
@@ -638,12 +638,6 @@ ether1_txalloc (struct net_device *dev, int size)
static int
ether1_open (struct net_device *dev)
{
- if (!is_valid_ether_addr(dev->dev_addr)) {
- printk(KERN_WARNING "%s: invalid ethernet MAC address\n",
- dev->name);
- return -EINVAL;
- }
-
if (request_irq(dev->irq, ether1_interrupt, 0, "ether1", dev))
return -EAGAIN;
diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
index d19a143..ce8d053 100644
--- a/drivers/net/ethernet/marvell/skge.c
+++ b/drivers/net/ethernet/marvell/skge.c
@@ -2524,9 +2524,6 @@ static int skge_up(struct net_device *dev)
size_t rx_size, tx_size;
int err;
- if (!is_valid_ether_addr(dev->dev_addr))
- return -EINVAL;
-
netif_info(skge, ifup, skge->netdev, "enabling interface\n");
if (dev->mtu > RX_BUF_SIZE)
diff --git a/drivers/net/ethernet/micrel/ks8695net.c b/drivers/net/ethernet/micrel/ks8695net.c
index dccae1d..e62c312 100644
--- a/drivers/net/ethernet/micrel/ks8695net.c
+++ b/drivers/net/ethernet/micrel/ks8695net.c
@@ -1249,9 +1249,6 @@ ks8695_open(struct net_device *ndev)
struct ks8695_priv *ksp = netdev_priv(ndev);
int ret;
- if (!is_valid_ether_addr(ndev->dev_addr))
- return -EADDRNOTAVAIL;
-
ks8695_reset(ksp);
ks8695_update_mac(ksp);
diff --git a/drivers/net/ethernet/microchip/enc28j60.c b/drivers/net/ethernet/microchip/enc28j60.c
index 6118bda..306e609 100644
--- a/drivers/net/ethernet/microchip/enc28j60.c
+++ b/drivers/net/ethernet/microchip/enc28j60.c
@@ -1352,12 +1352,6 @@ static int enc28j60_net_open(struct net_device *dev)
if (netif_msg_drv(priv))
printk(KERN_DEBUG DRV_NAME ": %s() enter\n", __func__);
- if (!is_valid_ether_addr(dev->dev_addr)) {
- if (netif_msg_ifup(priv))
- dev_err(&dev->dev, "invalid MAC address %pM\n",
- dev->dev_addr);
- return -EADDRNOTAVAIL;
- }
/* Reset the hardware here (and take it out of low power mode) */
enc28j60_lowpower(priv, false);
enc28j60_hw_disable(priv);
diff --git a/drivers/net/ethernet/nxp/lpc_eth.c b/drivers/net/ethernet/nxp/lpc_eth.c
index af8b414..db6e101 100644
--- a/drivers/net/ethernet/nxp/lpc_eth.c
+++ b/drivers/net/ethernet/nxp/lpc_eth.c
@@ -1219,9 +1219,6 @@ static int lpc_eth_open(struct net_device *ndev)
if (netif_msg_ifup(pldat))
dev_dbg(&pldat->pdev->dev, "enabling %s\n", ndev->name);
- if (!is_valid_ether_addr(ndev->dev_addr))
- return -EADDRNOTAVAIL;
-
__lpc_eth_clock_enable(pldat, true);
/* Reset and initialize */
@@ -1301,6 +1298,7 @@ static const struct net_device_ops lpc_netdev_ops = {
.ndo_set_rx_mode = lpc_eth_set_multicast_list,
.ndo_do_ioctl = lpc_eth_ioctl,
.ndo_set_mac_address = lpc_set_mac_address,
+ .ndo_validate_addr = eth_validate_addr,
.ndo_change_mtu = eth_change_mtu,
};
diff --git a/drivers/net/ethernet/seeq/ether3.c b/drivers/net/ethernet/seeq/ether3.c
index 6a40dd0..72a0174 100644
--- a/drivers/net/ethernet/seeq/ether3.c
+++ b/drivers/net/ethernet/seeq/ether3.c
@@ -399,12 +399,6 @@ ether3_probe_bus_16(struct net_device *dev, int val)
static int
ether3_open(struct net_device *dev)
{
- if (!is_valid_ether_addr(dev->dev_addr)) {
- printk(KERN_WARNING "%s: invalid ethernet MAC address\n",
- dev->name);
- return -EINVAL;
- }
-
if (request_irq(dev->irq, ether3_interrupt, 0, "ether3", dev))
return -EAGAIN;
diff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c
index 8d15f7a..990f574 100644
--- a/drivers/net/ethernet/smsc/smc911x.c
+++ b/drivers/net/ethernet/smsc/smc911x.c
@@ -1400,16 +1400,6 @@ smc911x_open(struct net_device *dev)
DBG(SMC_DEBUG_FUNC, "%s: --> %s\n", dev->name, __func__);
- /*
- * Check that the address is valid. If its not, refuse
- * to bring the device up. The user must specify an
- * address using ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
- */
- if (!is_valid_ether_addr(dev->dev_addr)) {
- PRINTK("%s: no valid ethernet hw addr\n", __func__);
- return -EINVAL;
- }
-
/* reset the hardware */
smc911x_reset(dev);
diff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c
index 318adc9..f516e5a 100644
--- a/drivers/net/ethernet/smsc/smc91x.c
+++ b/drivers/net/ethernet/smsc/smc91x.c
@@ -1474,16 +1474,6 @@ smc_open(struct net_device *dev)
DBG(2, "%s: %s\n", dev->name, __func__);
- /*
- * Check that the address is valid. If its not, refuse
- * to bring the device up. The user must specify an
- * address using ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
- */
- if (!is_valid_ether_addr(dev->dev_addr)) {
- PRINTK("%s: no valid ethernet hw addr\n", __func__);
- return -EINVAL;
- }
-
/* Setup the default Register Modes */
lp->tcr_cur_mode = TCR_DEFAULT;
lp->rcr_cur_mode = RCR_DEFAULT;
diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
index 62d1baf..a088c4f 100644
--- a/drivers/net/ethernet/smsc/smsc911x.c
+++ b/drivers/net/ethernet/smsc/smsc911x.c
@@ -1463,11 +1463,6 @@ static int smsc911x_open(struct net_device *dev)
return -EAGAIN;
}
- if (!is_valid_ether_addr(dev->dev_addr)) {
- SMSC_WARN(pdata, hw, "dev_addr is not a valid MAC address");
- return -EADDRNOTAVAIL;
- }
-
/* Reset the LAN911x */
if (smsc911x_soft_reset(pdata)) {
SMSC_WARN(pdata, hw, "soft reset failed");
diff --git a/drivers/net/ethernet/smsc/smsc9420.c b/drivers/net/ethernet/smsc/smsc9420.c
index 1fcd914e..25dd288 100644
--- a/drivers/net/ethernet/smsc/smsc9420.c
+++ b/drivers/net/ethernet/smsc/smsc9420.c
@@ -1341,12 +1341,6 @@ static int smsc9420_open(struct net_device *dev)
unsigned long flags;
int result = 0, timeout;
- if (!is_valid_ether_addr(dev->dev_addr)) {
- smsc_warn(IFUP, "dev_addr is not a valid MAC address");
- result = -EADDRNOTAVAIL;
- goto out_0;
- }
-
netif_carrier_off(dev);
/* disable, mask and acknowledge all interrupts */
diff --git a/drivers/net/ethernet/wiznet/w5100.c b/drivers/net/ethernet/wiznet/w5100.c
index 2c08bf6..7daf92e 100644
--- a/drivers/net/ethernet/wiznet/w5100.c
+++ b/drivers/net/ethernet/wiznet/w5100.c
@@ -580,8 +580,6 @@ static int w5100_open(struct net_device *ndev)
struct w5100_priv *priv = netdev_priv(ndev);
netif_info(priv, ifup, ndev, "enabling\n");
- if (!is_valid_ether_addr(ndev->dev_addr))
- return -EINVAL;
w5100_hw_start(priv);
napi_enable(&priv->napi);
netif_start_queue(ndev);
diff --git a/drivers/net/ethernet/wiznet/w5300.c b/drivers/net/ethernet/wiznet/w5300.c
index 88943d9..bd9eec6 100644
--- a/drivers/net/ethernet/wiznet/w5300.c
+++ b/drivers/net/ethernet/wiznet/w5300.c
@@ -500,8 +500,6 @@ static int w5300_open(struct net_device *ndev)
struct w5300_priv *priv = netdev_priv(ndev);
netif_info(priv, ifup, ndev, "enabling\n");
- if (!is_valid_ether_addr(ndev->dev_addr))
- return -EINVAL;
w5300_hw_start(priv);
napi_enable(&priv->napi);
netif_start_queue(ndev);
--
1.8.0
^ permalink raw reply related
* Re: [PATCH] tilegx: request_irq with a non-null device name
From: Chris Metcalf @ 2012-11-13 21:37 UTC (permalink / raw)
To: Simon Marchi; +Cc: netdev, linux-kernel
In-Reply-To: <1352840300-27814-1-git-send-email-simon.marchi@polymtl.ca>
On 11/13/2012 3:58 PM, Simon Marchi wrote:
> This patch simply makes the tilegx net driver call request_irq with a
> non-null name. It makes the output in /proc/interrupts more obvious, but
> also helps tools that don't expect to find null there.
>
> Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
> ---
> drivers/net/ethernet/tile/tilegx.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/ethernet/tile/tilegx.c b/drivers/net/ethernet/tile/tilegx.c
> index 4e98100..66e025a 100644
> --- a/drivers/net/ethernet/tile/tilegx.c
> +++ b/drivers/net/ethernet/tile/tilegx.c
> @@ -917,7 +917,7 @@ static int tile_net_setup_interrupts(struct net_device *dev)
> ingress_irq = rc;
> tile_irq_activate(ingress_irq, TILE_IRQ_PERCPU);
> rc = request_irq(ingress_irq, tile_net_handle_ingress_irq,
> - 0, NULL, NULL);
> + 0, "tile_net", NULL);
Good catch. If you can change it to dev->name instead of "tile_net", feel
free to add my:
Acked-by: Chris Metcalf <cmetcalf@tilera.com>
--
Chris Metcalf, Tilera Corp.
http://www.tilera.com
^ permalink raw reply
* Re: [PATCH] vxlan: Fix error that was resulting in VXLAN MTU size being 10 bytes too large
From: Stephen Hemminger @ 2012-11-13 21:33 UTC (permalink / raw)
To: David Miller; +Cc: alexander.h.duyck, netdev
In-Reply-To: <20121113.143719.1473223615602040380.davem@davemloft.net>
On Tue, 13 Nov 2012 14:37:19 -0500 (EST)
David Miller <davem@davemloft.net> wrote:
> From: Alexander Duyck <alexander.h.duyck@intel.com>
> Date: Fri, 09 Nov 2012 15:35:24 -0800
>
> > This change fixes an issue I found where VXLAN frames were fragmented when
> > they were up to the VXLAN MTU size. I root caused the issue to the fact that
> > the headroom was 4 + 20 + 8 + 8. This math doesn't appear to be correct
> > because we are not inserting a VLAN header, but instead a 2nd Ethernet header.
> > As such the math for the overhead should be 20 + 8 + 8 + 14 to account for the
> > extra headers that are inserted for VXLAN.
> >
> > Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
>
> Applied, thanks for the detailed commit message.
Probably need smarter code there to look at header length requirement
of underlying device as well, maybe someone will be perverse and runn
vxlan over a tunnel or IPoIB.
^ permalink raw reply
* Re: [net-next patch] vxlan: fix a typo.
From: Stephen Hemminger @ 2012-11-13 21:32 UTC (permalink / raw)
To: Rami Rosen; +Cc: davem, netdev
In-Reply-To: <1352849355-5429-1-git-send-email-ramirose@gmail.com>
On Wed, 14 Nov 2012 01:29:15 +0200
Rami Rosen <ramirose@gmail.com> wrote:
> Use eXtensible and not eXtensiable in the comment on top.
>
> Signed-off-by: Rami Rosen <ramirose@gmail.com>
> ---
> drivers/net/vxlan.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
> index 8aca888..3204208 100644
> --- a/drivers/net/vxlan.c
> +++ b/drivers/net/vxlan.c
> @@ -1,5 +1,5 @@
> /*
> - * VXLAN: Virtual eXtensiable Local Area Network
> + * VXLAN: Virtual eXtensible Local Area Network
> *
> * Copyright (c) 2012 Vyatta Inc.
> *
This can go into net (3.7) if Linus is willing.
Acked-by: Stephen Hemminger <shemminger@vyatta.com>
^ permalink raw reply
* [net-next patch] vxlan: fix a typo.
From: Rami Rosen @ 2012-11-13 23:29 UTC (permalink / raw)
To: davem; +Cc: netdev, shemminger, Rami Rosen
Use eXtensible and not eXtensiable in the comment on top.
Signed-off-by: Rami Rosen <ramirose@gmail.com>
---
drivers/net/vxlan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 8aca888..3204208 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -1,5 +1,5 @@
/*
- * VXLAN: Virtual eXtensiable Local Area Network
+ * VXLAN: Virtual eXtensible Local Area Network
*
* Copyright (c) 2012 Vyatta Inc.
*
--
1.7.11.7
^ permalink raw reply related
* Re: [PATCH net-next] add DOVE extensions for VXLAN
From: Stephen Hemminger @ 2012-11-13 21:28 UTC (permalink / raw)
To: David L Stevens; +Cc: David Miller, netdev
In-Reply-To: <201211132022.qADKLMrT018535@lab1.dls>
On Tue, 13 Nov 2012 15:21:22 -0500
David L Stevens <dlstevens@us.ibm.com> wrote:
>
> This patch provides extensions to VXLAN for supporting Distributed
> Overlay Virtual Ethernet (DOVE) networks. The patch includes:
>
> + a dove flag per VXLAN device to enable DOVE extensions
> + ARP reduction, whereby a bridge-connected VXLAN tunnel endpoint
> answers ARP requests from the local bridge on behalf of
> remote DOVE clients
> + route short-circuiting (aka L3 switching). Known destination IP
> addresses use the corresponding destination MAC address for
> switching rather than going to a (possibly remote) router first.
> + netlink notification messages for forwarding table and L3 switching
> misses
>
> Signed-off-by: David L Stevens <dlstevens@us.ibm.com>
I am happy to see VXLAN getting real traction.
There are some issues with this.
1. DOVE flag is mixing multiple functions (arp and route) together,
users may want one without the other.
2. There is an implicit assumption that IP stack has valid IP address
in the tenant network (vxlan). This is rarely the case. For security
and other reasons, in my opinion the best practice is not to have
the bridge as part of the tenant network.
3. Misses might be common and this could easily be used to DoS the host
from a malicious guest.
^ permalink raw reply
* [PATCH] tilegx: request_irq with a non-null device name
From: Simon Marchi @ 2012-11-13 20:58 UTC (permalink / raw)
To: cmetcalf; +Cc: netdev, linux-kernel, Simon Marchi
This patch simply makes the tilegx net driver call request_irq with a
non-null name. It makes the output in /proc/interrupts more obvious, but
also helps tools that don't expect to find null there.
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
---
drivers/net/ethernet/tile/tilegx.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/ethernet/tile/tilegx.c b/drivers/net/ethernet/tile/tilegx.c
index 4e98100..66e025a 100644
--- a/drivers/net/ethernet/tile/tilegx.c
+++ b/drivers/net/ethernet/tile/tilegx.c
@@ -917,7 +917,7 @@ static int tile_net_setup_interrupts(struct net_device *dev)
ingress_irq = rc;
tile_irq_activate(ingress_irq, TILE_IRQ_PERCPU);
rc = request_irq(ingress_irq, tile_net_handle_ingress_irq,
- 0, NULL, NULL);
+ 0, "tile_net", NULL);
if (rc != 0) {
netdev_err(dev, "request_irq failed: %d\n", rc);
destroy_irq(ingress_irq);
--
1.7.1
^ permalink raw reply related
* net/usb device additions for -stable
From: Bjørn Mork @ 2012-11-13 20:25 UTC (permalink / raw)
To: David Miller
Cc: netdev, Jay Purohit, Valdis Kletnieks, Jan Ceuleers, Olof Ermis,
Tommy Cheng
I looked quickly through the list of added devices in the range
v3.6..net/master and tried to cherry-pick them into the current 3.0,
3.2, 3.4 and 3.6 stable trees. There weren't really that many. The
result was:
# for stable-3.6:
af1b85e usb/ipheth: Add iPhone 5 support
c6846ee net: qmi_wwan: adding more ZTE devices
bbc8d92 net: cdc_ncm: add Huawei devices
# for stable-3.4:
af1b85e usb/ipheth: Add iPhone 5 support
# for stable-3.2:
af1b85e usb/ipheth: Add iPhone 5 support
# for stable-3.0:
af1b85e usb/ipheth: Add iPhone 5 support
For completeness, these three patches were also applied after 3.6 but are
not in the list above for the given reasons:
42d94dc net: qmi_wwan: adding Huawei E367, ZTE MF683 and Pantech P4200
- does not apply cleanly to any stable relase. I'll send a backport
if/when I get around to it.
66dc81e asix: Adds support for Lenovo 10/100 USB dongle.
- already applied to stable-3.6 and does not apply to anything earlier
f8295ec qmi_wwan/cdc_ether: move Novatel 551 and E362 to qmi_wwan
- already applied to stable-3.6 and does not apply to anything earlier
Bjørn
^ permalink raw reply
* [PATCH iproute2] add DOVE extensions for iproute2
From: David L Stevens @ 2012-11-13 20:25 UTC (permalink / raw)
To: David Miller, Stephen Hemminger; +Cc: netdev
This patch adds a new flag to iproute2 for vxlan devices to enable
DOVE features. It also adds support for L2 and L3 switch lookup miss
netlink messages to "ip monitor".
Signed-off-by: David L Stevens <dlstevens@us.ibm.com>
diff --git a/include/linux/if_link.h b/include/linux/if_link.h
index 012d95a..cbfe1fd 100644
--- a/include/linux/if_link.h
+++ b/include/linux/if_link.h
@@ -283,6 +283,7 @@ enum {
IFLA_VXLAN_AGEING,
IFLA_VXLAN_LIMIT,
IFLA_VXLAN_PORT_RANGE,
+ IFLA_VXLAN_DOVE,
__IFLA_VXLAN_MAX
};
#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
diff --git a/ip/iplink_vxlan.c b/ip/iplink_vxlan.c
index ba5c4ab..b7a987a 100644
--- a/ip/iplink_vxlan.c
+++ b/ip/iplink_vxlan.c
@@ -26,6 +26,7 @@ static void explain(void)
fprintf(stderr, "Usage: ... vxlan id VNI [ group ADDR ] [ local ADDR ]\n");
fprintf(stderr, " [ ttl TTL ] [ tos TOS ] [ dev PHYS_DEV ]\n");
fprintf(stderr, " [ port MIN MAX ] [ [no]learning ]\n");
+ fprintf(stderr, " [ [no]dove]\n");
fprintf(stderr, "\n");
fprintf(stderr, "Where: VNI := 0-16777215\n");
fprintf(stderr, " ADDR := { IP_ADDRESS | any }\n");
@@ -44,6 +45,7 @@ static int vxlan_parse_opt(struct link_util *lu, int argc, char **argv,
__u8 tos = 0;
__u8 ttl = 0;
__u8 learning = 1;
+ __u8 dove = 0;
__u8 noage = 0;
__u32 age = 0;
__u32 maxaddr = 0;
@@ -123,6 +125,10 @@ static int vxlan_parse_opt(struct link_util *lu, int argc, char **argv,
learning = 0;
} else if (!matches(*argv, "learning")) {
learning = 1;
+ } else if (!matches(*argv, "nodove")) {
+ dove = 0;
+ } else if (!matches(*argv, "dove")) {
+ dove = 1;
} else if (matches(*argv, "help") == 0) {
explain();
return -1;
@@ -148,6 +154,7 @@ static int vxlan_parse_opt(struct link_util *lu, int argc, char **argv,
addattr8(n, 1024, IFLA_VXLAN_TTL, ttl);
addattr8(n, 1024, IFLA_VXLAN_TOS, tos);
addattr8(n, 1024, IFLA_VXLAN_LEARNING, learning);
+ addattr8(n, 1024, IFLA_VXLAN_DOVE, dove);
if (noage)
addattr32(n, 1024, IFLA_VXLAN_AGEING, 0);
else if (age)
@@ -213,6 +220,10 @@ static void vxlan_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
if (tb[IFLA_VXLAN_LEARNING] &&
!rta_getattr_u8(tb[IFLA_VXLAN_LEARNING]))
fputs("nolearning ", f);
+
+ if (tb[IFLA_VXLAN_DOVE] &&
+ rta_getattr_u8(tb[IFLA_VXLAN_DOVE]))
+ fputs("dove ", f);
if (tb[IFLA_VXLAN_TOS] &&
(tos = rta_getattr_u8(tb[IFLA_VXLAN_TOS]))) {
diff --git a/ip/ipmonitor.c b/ip/ipmonitor.c
index 4b1d469..7a7cc88 100644
--- a/ip/ipmonitor.c
+++ b/ip/ipmonitor.c
@@ -67,7 +67,8 @@ int accept_msg(const struct sockaddr_nl *who,
print_addrlabel(who, n, arg);
return 0;
}
- if (n->nlmsg_type == RTM_NEWNEIGH || n->nlmsg_type == RTM_DELNEIGH) {
+ if (n->nlmsg_type == RTM_NEWNEIGH || n->nlmsg_type == RTM_DELNEIGH ||
+ n->nlmsg_type == RTM_GETNEIGH) {
if (prefix_banner)
fprintf(fp, "[NEIGH]");
print_neigh(who, n, arg);
diff --git a/ip/ipneigh.c b/ip/ipneigh.c
index 56e56b2..1b7600b 100644
--- a/ip/ipneigh.c
+++ b/ip/ipneigh.c
@@ -189,7 +189,8 @@ int print_neigh(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
struct rtattr * tb[NDA_MAX+1];
char abuf[256];
- if (n->nlmsg_type != RTM_NEWNEIGH && n->nlmsg_type != RTM_DELNEIGH) {
+ if (n->nlmsg_type != RTM_NEWNEIGH && n->nlmsg_type != RTM_DELNEIGH &&
+ n->nlmsg_type != RTM_GETNEIGH) {
fprintf(stderr, "Not RTM_NEWNEIGH: %08x %08x %08x\n",
n->nlmsg_len, n->nlmsg_type, n->nlmsg_flags);
@@ -251,6 +252,8 @@ int print_neigh(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
if (n->nlmsg_type == RTM_DELNEIGH)
fprintf(fp, "delete ");
+ else if (n->nlmsg_type == RTM_GETNEIGH)
+ fprintf(fp, "miss ");
if (tb[NDA_DST]) {
fprintf(fp, "%s ",
format_host(r->ndm_family,
^ permalink raw reply related
* [PATCH net-next] add DOVE extensions for VXLAN
From: David L Stevens @ 2012-11-13 20:21 UTC (permalink / raw)
To: David Miller, Stephen Hemminger; +Cc: netdev
This patch provides extensions to VXLAN for supporting Distributed
Overlay Virtual Ethernet (DOVE) networks. The patch includes:
+ a dove flag per VXLAN device to enable DOVE extensions
+ ARP reduction, whereby a bridge-connected VXLAN tunnel endpoint
answers ARP requests from the local bridge on behalf of
remote DOVE clients
+ route short-circuiting (aka L3 switching). Known destination IP
addresses use the corresponding destination MAC address for
switching rather than going to a (possibly remote) router first.
+ netlink notification messages for forwarding table and L3 switching
misses
Signed-off-by: David L Stevens <dlstevens@us.ibm.com>
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 8aca888..42ccd54 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -29,6 +29,8 @@
#include <linux/etherdevice.h>
#include <linux/if_ether.h>
#include <linux/hash.h>
+#include <net/arp.h>
+#include <net/ndisc.h>
#include <net/ip.h>
#include <net/icmp.h>
#include <net/udp.h>
@@ -111,6 +113,7 @@ struct vxlan_dev {
__u8 tos; /* TOS override */
__u8 ttl;
bool learn;
+ bool dove;
unsigned long age_interval;
struct timer_list age_timer;
@@ -155,6 +158,7 @@ static int vxlan_fdb_info(struct sk_buff *skb, struct vxlan_dev *vxlan,
struct nda_cacheinfo ci;
struct nlmsghdr *nlh;
struct ndmsg *ndm;
+ bool send_ip, send_eth;
nlh = nlmsg_put(skb, portid, seq, type, sizeof(*ndm), flags);
if (nlh == NULL)
@@ -162,16 +166,28 @@ static int vxlan_fdb_info(struct sk_buff *skb, struct vxlan_dev *vxlan,
ndm = nlmsg_data(nlh);
memset(ndm, 0, sizeof(*ndm));
- ndm->ndm_family = AF_BRIDGE;
+
+ send_eth = send_ip = true;
+
+ if (type == RTM_GETNEIGH) {
+ int i;
+
+ ndm->ndm_family = AF_INET;
+ send_ip = fdb->remote_ip != 0;
+ send_eth = 0;
+ for (i=0; i<ETH_ALEN; ++i)
+ send_eth |= !!fdb->eth_addr[i];
+ } else
+ ndm->ndm_family = AF_BRIDGE;
ndm->ndm_state = fdb->state;
ndm->ndm_ifindex = vxlan->dev->ifindex;
ndm->ndm_flags = NTF_SELF;
ndm->ndm_type = NDA_DST;
- if (nla_put(skb, NDA_LLADDR, ETH_ALEN, &fdb->eth_addr))
+ if (send_eth && nla_put(skb, NDA_LLADDR, ETH_ALEN, &fdb->eth_addr))
goto nla_put_failure;
- if (nla_put_be32(skb, NDA_DST, fdb->remote_ip))
+ if (send_ip && nla_put_be32(skb, NDA_DST, fdb->remote_ip))
goto nla_put_failure;
ci.ndm_used = jiffies_to_clock_t(now - fdb->used);
@@ -223,6 +239,29 @@ errout:
rtnl_set_sk_err(net, RTNLGRP_NEIGH, err);
}
+static void vxlan_ip_miss(struct net_device *dev, __be32 ipa)
+{
+ struct vxlan_dev *vxlan = netdev_priv(dev);
+ struct vxlan_fdb f;
+
+ memset(&f, 0, sizeof f);
+ f.state = NUD_STALE;
+ f.remote_ip = ipa; /* goes to NDA_DST */
+
+ vxlan_fdb_notify(vxlan, &f, RTM_GETNEIGH);
+}
+
+static void vxlan_fdb_miss(struct vxlan_dev *vxlan, const u8 eth_addr[ETH_ALEN])
+{
+ struct vxlan_fdb f;
+
+ memset(&f, 0, sizeof f);
+ f.state = NUD_STALE;
+ memcpy(f.eth_addr, eth_addr, ETH_ALEN);
+
+ vxlan_fdb_notify(vxlan, &f, RTM_GETNEIGH);
+}
+
/* Hash Ethernet address */
static u32 eth_hash(const unsigned char *addr)
{
@@ -552,6 +591,8 @@ static int vxlan_udp_encap_recv(struct sock *sk, struct sk_buff *skb)
goto drop;
}
+ skb_reset_mac_header(skb);
+
/* Re-examine inner Ethernet packet */
oip = ip_hdr(skb);
skb->protocol = eth_type_trans(skb, vxlan->dev);
@@ -600,6 +641,115 @@ drop:
return 0;
}
+static int arp_reduce(struct net_device *dev, struct sk_buff *skb)
+{
+ struct arphdr *parp;
+ u8 *arpptr, *sha;
+ __be32 sip, tip;
+ struct neighbour *n;
+
+ if (dev->flags & IFF_NOARP)
+ goto out;
+
+ if (!pskb_may_pull(skb, arp_hdr_len(dev))) {
+ dev->stats.tx_dropped++;
+ goto out;
+ }
+ parp = arp_hdr(skb);
+
+ if ((parp->ar_hrd != htons(ARPHRD_ETHER) &&
+ parp->ar_hrd != htons(ARPHRD_IEEE802)) ||
+ parp->ar_pro != htons(ETH_P_IP) ||
+ parp->ar_op != htons(ARPOP_REQUEST) ||
+ parp->ar_hln != dev->addr_len ||
+ parp->ar_pln != 4)
+ goto out;
+ arpptr = (u8 *)parp + sizeof(struct arphdr);
+ sha = arpptr;
+ arpptr += dev->addr_len; /* sha */
+ memcpy(&sip, arpptr, sizeof(sip));
+ arpptr += sizeof(sip);
+ arpptr += dev->addr_len; /* tha */
+ memcpy(&tip, arpptr, sizeof(tip));
+
+ if (ipv4_is_loopback(tip) ||
+ ipv4_is_multicast(tip))
+ goto out;
+
+ n = neigh_lookup(&arp_tbl, &tip, dev);
+
+ if (n) {
+ struct vxlan_dev *vxlan = netdev_priv(dev);
+ struct vxlan_fdb *f;
+ struct sk_buff *reply;
+
+ if (!(n->nud_state & NUD_CONNECTED)) {
+ neigh_release(n);
+ goto out;
+ }
+
+ f = vxlan_find_mac(vxlan, n->ha);
+ if (f && f->remote_ip == 0) {
+ /* bridge-local neighbor */
+ neigh_release(n);
+ goto out;
+ }
+
+ reply = arp_create(ARPOP_REPLY, ETH_P_ARP, sip, dev, tip, sha,
+ n->ha, sha);
+
+ neigh_release(n);
+
+ skb_reset_mac_header(reply);
+ __skb_pull(reply, skb_network_offset(reply));
+ reply->ip_summed = CHECKSUM_UNNECESSARY;
+ reply->pkt_type = PACKET_HOST;
+
+ if (netif_rx_ni(reply) == NET_RX_DROP)
+ dev->stats.rx_dropped++;
+ } else
+ vxlan_ip_miss(dev, tip);
+out:
+ consume_skb(skb);
+ return NETDEV_TX_OK;
+}
+
+static bool route_shortcircuit(struct net_device *dev, struct sk_buff *skb)
+{
+ struct neighbour *n;
+ struct iphdr *pip;
+
+ if (is_multicast_ether_addr(eth_hdr(skb)->h_dest))
+ return false;
+
+ n = NULL;
+ switch (ntohs(eth_hdr(skb)->h_proto)) {
+ case ETH_P_IP:
+ if (!pskb_may_pull(skb, sizeof(struct iphdr)))
+ return false;
+ pip = ip_hdr(skb);
+ n = neigh_lookup(&arp_tbl, &pip->daddr, dev);
+ break;
+ default:
+ return false;
+ }
+
+ if (n) {
+ bool diff;
+
+ diff = compare_ether_addr(eth_hdr(skb)->h_dest, n->ha) != 0;
+ if (diff) {
+ memcpy(eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest,
+ dev->addr_len);
+ memcpy(eth_hdr(skb)->h_dest, n->ha, dev->addr_len);
+ }
+ neigh_release(n);
+ return diff;
+ } else
+ vxlan_ip_miss(dev, pip->daddr);
+ return false;
+}
+
/* Extract dsfield from inner protocol */
static inline u8 vxlan_get_dsfield(const struct iphdr *iph,
const struct sk_buff *skb)
@@ -622,22 +772,6 @@ static inline u8 vxlan_ecn_encap(u8 tos,
return INET_ECN_encapsulate(tos, inner);
}
-static __be32 vxlan_find_dst(struct vxlan_dev *vxlan, struct sk_buff *skb)
-{
- const struct ethhdr *eth = (struct ethhdr *) skb->data;
- const struct vxlan_fdb *f;
-
- if (is_multicast_ether_addr(eth->h_dest))
- return vxlan->gaddr;
-
- f = vxlan_find_mac(vxlan, eth->h_dest);
- if (f)
- return f->remote_ip;
- else
- return vxlan->gaddr;
-
-}
-
static void vxlan_sock_free(struct sk_buff *skb)
{
sock_put(skb->sk);
@@ -684,6 +818,7 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct net_device *dev)
struct vxlan_dev *vxlan = netdev_priv(dev);
struct rtable *rt;
const struct iphdr *old_iph;
+ struct ethhdr *eth;
struct iphdr *iph;
struct vxlanhdr *vxh;
struct udphdr *uh;
@@ -694,10 +829,57 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct net_device *dev)
__be16 df = 0;
__u8 tos, ttl;
int err;
+ bool rsc = false;
+ const struct vxlan_fdb *f;
- dst = vxlan_find_dst(vxlan, skb);
- if (!dst)
+ skb_reset_mac_header(skb);
+ eth = eth_hdr(skb);
+
+ if (vxlan->dove) {
+ switch (ntohs(eth->h_proto)) {
+ case ETH_P_ARP:
+ return arp_reduce(dev, skb);
+ case ETH_P_IP:
+ rsc = route_shortcircuit(dev, skb);
+ break;
+ default:
+ break;
+ }
+ }
+
+ f = vxlan_find_mac(vxlan, eth->h_dest);
+ if (f == NULL) {
+ rsc = false;
+ dst = vxlan->gaddr;
+ if (!dst && vxlan->dove &&
+ !is_multicast_ether_addr(eth->h_dest))
+ vxlan_fdb_miss(vxlan, eth->h_dest);
+ } else
+ dst = f->remote_ip;
+
+ if (!dst) {
+ if (rsc) {
+ __skb_pull(skb, skb_network_offset(skb));
+ skb->ip_summed = CHECKSUM_NONE;
+ skb->pkt_type = PACKET_HOST;
+
+ /* short-circuited back to local bridge */
+ if (netif_rx(skb) == NET_RX_SUCCESS) {
+ struct vxlan_stats *stats =
+ this_cpu_ptr(vxlan->stats);
+
+ u64_stats_update_begin(&stats->syncp);
+ stats->tx_packets++;
+ stats->tx_bytes += pkt_len;
+ u64_stats_update_end(&stats->syncp);
+ } else {
+ dev->stats.tx_errors++;
+ dev->stats.tx_aborted_errors++;
+ }
+ return NETDEV_TX_OK;
+ }
goto drop;
+ }
/* Need space for new headers (invalidates iph ptr) */
if (skb_cow_head(skb, VXLAN_HEADROOM))
@@ -1020,6 +1202,7 @@ static const struct nla_policy vxlan_policy[IFLA_VXLAN_MAX + 1] = {
[IFLA_VXLAN_AGEING] = { .type = NLA_U32 },
[IFLA_VXLAN_LIMIT] = { .type = NLA_U32 },
[IFLA_VXLAN_PORT_RANGE] = { .len = sizeof(struct ifla_vxlan_port_range) },
+ [IFLA_VXLAN_DOVE] = { .type = NLA_U8 },
};
static int vxlan_validate(struct nlattr *tb[], struct nlattr *data[])
@@ -1118,6 +1301,9 @@ static int vxlan_newlink(struct net *net, struct net_device *dev,
else
vxlan->age_interval = FDB_AGE_DEFAULT;
+ if (data[IFLA_VXLAN_DOVE] && nla_get_u8(data[IFLA_VXLAN_DOVE]))
+ vxlan->dove = true;
+
if (data[IFLA_VXLAN_LIMIT])
vxlan->addrmax = nla_get_u32(data[IFLA_VXLAN_LIMIT]);
@@ -1154,6 +1340,7 @@ static size_t vxlan_get_size(const struct net_device *dev)
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_TTL */
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_TOS */
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_LEARNING */
+ nla_total_size(sizeof(__u32)) + /* IFLA_VXLAN_DOVE */
nla_total_size(sizeof(__u32)) + /* IFLA_VXLAN_AGEING */
nla_total_size(sizeof(__u32)) + /* IFLA_VXLAN_LIMIT */
nla_total_size(sizeof(struct ifla_vxlan_port_range)) +
@@ -1183,6 +1370,7 @@ static int vxlan_fill_info(struct sk_buff *skb, const struct net_device *dev)
if (nla_put_u8(skb, IFLA_VXLAN_TTL, vxlan->ttl) ||
nla_put_u8(skb, IFLA_VXLAN_TOS, vxlan->tos) ||
nla_put_u8(skb, IFLA_VXLAN_LEARNING, vxlan->learn) ||
+ nla_put_u8(skb, IFLA_VXLAN_DOVE, vxlan->dove) ||
nla_put_u32(skb, IFLA_VXLAN_AGEING, vxlan->age_interval) ||
nla_put_u32(skb, IFLA_VXLAN_LIMIT, vxlan->addrmax))
goto nla_put_failure;
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index 5c80cb1..740b636 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -285,6 +285,7 @@ enum {
IFLA_VXLAN_AGEING,
IFLA_VXLAN_LIMIT,
IFLA_VXLAN_PORT_RANGE,
+ IFLA_VXLAN_DOVE,
__IFLA_VXLAN_MAX
};
#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
^ permalink raw reply related
* Re: [3.0.y, 3.2.y, 3.4.y] Re: [PATCH v2] r8169: Fix WoL on RTL8168d/8111d.
From: Ben Hutchings @ 2012-11-13 20:24 UTC (permalink / raw)
To: David Miller, romieu
Cc: jrnieder, stable, kibi, netdev, nic_swsd, hayeswang, linux-kernel,
florent.fourcot
In-Reply-To: <20121112.182754.384199300061351360.davem@davemloft.net>
[-- Attachment #1: Type: text/plain, Size: 1072 bytes --]
On Mon, 2012-11-12 at 18:27 -0500, David Miller wrote:
> From: Francois Romieu <romieu@fr.zoreil.com>
> Date: Tue, 13 Nov 2012 00:03:39 +0100
>
> > Jonathan Nieder <jrnieder@gmail.com> :
> > [...]
> >> This has been applied as commit b00e69dee4cc in mainline; thanks!
> >>
> >> Fran??ois and David, would this be a candidate for inclusion in
> >> 3.0- and newer stable kernels?
> >
> > - 3.0.51
> > b00e69dee4ccbb3a19989e3d4f1385bc2e3406cd
> > aee77e4accbeb2c86b1d294cd84fec4a12dde3bd
> >
> > - 3.4.18
> > 0481776b7a70f09acf7d9d97c288c3a8403fbfe4
> > b00e69dee4ccbb3a19989e3d4f1385bc2e3406cd
> > aee77e4accbeb2c86b1d294cd84fec4a12dde3bd
> >
> > - 3.6.6
> > 0481776b7a70f09acf7d9d97c288c3a8403fbfe4
> > b00e69dee4ccbb3a19989e3d4f1385bc2e3406cd
> > aee77e4accbeb2c86b1d294cd84fec4a12dde3bd
> >
> > I'll cook the patches.
>
> Thank you, these all look fine for -stable to me.
I've queued up all three for 3.2.
Ben.
--
Ben Hutchings
For every complex problem
there is a solution that is simple, neat, and wrong.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
^ permalink raw reply
* [PATCH V2] wanrouter: Remove it and the drivers that depend on it
From: Joe Perches @ 2012-11-13 20:17 UTC (permalink / raw)
To: David Miller
Cc: rob, harryxiyou, jdike, richard, linux, ralf, benh, paulus, chris,
jcmvbkbc, isdn, linux-doc, linux-kernel, xiyoulinuxkernelgroup,
linux-kernel, linux-arm-kernel, linux-mips, linuxppc-dev,
user-mode-linux-devel, user-mode-linux-user, linux-xtensa, netdev
In-Reply-To: <20121113.144406.1610017702502358739.davem@davemloft.net>
Remove wanrouter as it's obsolete and has not been updated
by sangoma since 2.4.3 or so and it's not used anymore.
Remove obsolete cyclomx drivers.
Update files that include now deleted wanrouter bits.
Signed-off-by: Joe Perches <joe@perches.com>
---
On Tue, 2012-11-13 at 14:44 -0500, David Miller wrote:
> Remove wanrouter as it's obsolete and has not been updated
> > by sangoma since 2.4.3 or so and it's not used anymore.
> >
> > Remove obsolete cyclomx drivers.
> > Update defconfig files that enable wanrouter.
> > Update files that include now deleted wanrouter bits.
> []
> I'm fine with this change, except the arch defconfig bits.
>
> We've been leaving those alone, and letting the arch maintainers
> do the updates themselves periodically.
>
> Please resubmit this with those parts removed.
That seems an odd workflow as it leaves dangling CONFIG_<foo>
options set, but I guess it doesn't hurt so here it is.
I just removed the modified arch/.../<foo>defconfig files.
Documentation/ioctl/ioctl-number.txt | 1 -
Documentation/magic-number.txt | 1 -
Documentation/zh_CN/magic-number.txt | 1 -
drivers/isdn/i4l/isdn_x25iface.c | 1 -
drivers/isdn/i4l/isdn_x25iface.h | 1 -
drivers/net/wan/Kconfig | 54 --
drivers/net/wan/Makefile | 5 -
drivers/net/wan/cycx_drv.c | 569 ------------
drivers/net/wan/cycx_main.c | 346 --------
drivers/net/wan/cycx_x25.c | 1602 ----------------------------------
include/linux/cyclomx.h | 77 --
include/linux/cycx_drv.h | 64 --
include/linux/wanrouter.h | 129 ---
include/uapi/linux/Kbuild | 1 -
include/uapi/linux/wanrouter.h | 452 ----------
net/Kconfig | 1 -
net/Makefile | 1 -
net/socket.c | 1 -
net/wanrouter/Kconfig | 27 -
net/wanrouter/Makefile | 7 -
net/wanrouter/patchlevel | 1 -
net/wanrouter/wanmain.c | 782 -----------------
net/wanrouter/wanproc.c | 380 --------
23 files changed, 0 insertions(+), 4504 deletions(-)
delete mode 100644 drivers/net/wan/cycx_drv.c
delete mode 100644 drivers/net/wan/cycx_main.c
delete mode 100644 drivers/net/wan/cycx_x25.c
delete mode 100644 include/linux/cyclomx.h
delete mode 100644 include/linux/cycx_drv.h
delete mode 100644 include/linux/wanrouter.h
delete mode 100644 include/uapi/linux/wanrouter.h
delete mode 100644 net/wanrouter/Kconfig
delete mode 100644 net/wanrouter/Makefile
delete mode 100644 net/wanrouter/patchlevel
delete mode 100644 net/wanrouter/wanmain.c
delete mode 100644 net/wanrouter/wanproc.c
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt
index 2152b0e..028a034 100644
--- a/Documentation/ioctl/ioctl-number.txt
+++ b/Documentation/ioctl/ioctl-number.txt
@@ -179,7 +179,6 @@ Code Seq#(hex) Include File Comments
'V' C0 media/davinci/vpfe_capture.h conflict!
'V' C0 media/si4713.h conflict!
'W' 00-1F linux/watchdog.h conflict!
-'W' 00-1F linux/wanrouter.h conflict!
'W' 00-3F sound/asound.h conflict!
'X' all fs/xfs/xfs_fs.h conflict!
and fs/xfs/linux-2.6/xfs_ioctl32.h
diff --git a/Documentation/magic-number.txt b/Documentation/magic-number.txt
index 82761a3..0c39e72 100644
--- a/Documentation/magic-number.txt
+++ b/Documentation/magic-number.txt
@@ -122,7 +122,6 @@ SLAB_C_MAGIC 0x4f17a36d kmem_cache mm/slab.c
COW_MAGIC 0x4f4f4f4d cow_header_v1 arch/um/drivers/ubd_user.c
I810_CARD_MAGIC 0x5072696E i810_card sound/oss/i810_audio.c
TRIDENT_CARD_MAGIC 0x5072696E trident_card sound/oss/trident.c
-ROUTER_MAGIC 0x524d4157 wan_device include/linux/wanrouter.h
SCC_MAGIC 0x52696368 gs_port drivers/char/scc.h
SAVEKMSG_MAGIC1 0x53415645 savekmsg arch/*/amiga/config.c
GDA_MAGIC 0x58464552 gda arch/mips/include/asm/sn/gda.h
diff --git a/Documentation/zh_CN/magic-number.txt b/Documentation/zh_CN/magic-number.txt
index 4263022..51b7e15 100644
--- a/Documentation/zh_CN/magic-number.txt
+++ b/Documentation/zh_CN/magic-number.txt
@@ -122,7 +122,6 @@ SLAB_C_MAGIC 0x4f17a36d kmem_cache mm/slab.c
COW_MAGIC 0x4f4f4f4d cow_header_v1 arch/um/drivers/ubd_user.c
I810_CARD_MAGIC 0x5072696E i810_card sound/oss/i810_audio.c
TRIDENT_CARD_MAGIC 0x5072696E trident_card sound/oss/trident.c
-ROUTER_MAGIC 0x524d4157 wan_device include/linux/wanrouter.h
SCC_MAGIC 0x52696368 gs_port drivers/char/scc.h
SAVEKMSG_MAGIC1 0x53415645 savekmsg arch/*/amiga/config.c
GDA_MAGIC 0x58464552 gda arch/mips/include/asm/sn/gda.h
diff --git a/drivers/isdn/i4l/isdn_x25iface.c b/drivers/isdn/i4l/isdn_x25iface.c
index e2d4e58..d00c86d 100644
--- a/drivers/isdn/i4l/isdn_x25iface.c
+++ b/drivers/isdn/i4l/isdn_x25iface.c
@@ -21,7 +21,6 @@
#include <linux/netdevice.h>
#include <linux/concap.h>
#include <linux/slab.h>
-#include <linux/wanrouter.h>
#include <net/x25device.h>
#include "isdn_x25iface.h"
diff --git a/drivers/isdn/i4l/isdn_x25iface.h b/drivers/isdn/i4l/isdn_x25iface.h
index 0b26e3b..ca08e08 100644
--- a/drivers/isdn/i4l/isdn_x25iface.h
+++ b/drivers/isdn/i4l/isdn_x25iface.h
@@ -19,7 +19,6 @@
#endif
#include <linux/skbuff.h>
-#include <linux/wanrouter.h>
#include <linux/isdn.h>
#include <linux/concap.h>
diff --git a/drivers/net/wan/Kconfig b/drivers/net/wan/Kconfig
index d58431e..0c077b0 100644
--- a/drivers/net/wan/Kconfig
+++ b/drivers/net/wan/Kconfig
@@ -356,60 +356,6 @@ config SDLA
To compile this driver as a module, choose M here: the
module will be called sdla.
-# Wan router core.
-config WAN_ROUTER_DRIVERS
- tristate "WAN router drivers"
- depends on WAN_ROUTER
- ---help---
- Connect LAN to WAN via Linux box.
-
- Select driver your card and remember to say Y to "Wan Router."
- You will need the wan-tools package which is available from
- <ftp://ftp.sangoma.com/>.
-
- Note that the answer to this question won't directly affect the
- kernel except for how subordinate drivers may be built:
- saying N will just cause the configurator to skip all
- the questions about WAN router drivers.
-
- If unsure, say N.
-
-config CYCLADES_SYNC
- tristate "Cyclom 2X(tm) cards (EXPERIMENTAL)"
- depends on WAN_ROUTER_DRIVERS && (PCI || ISA)
- ---help---
- Cyclom 2X from Cyclades Corporation <http://www.avocent.com/> is an
- intelligent multiprotocol WAN adapter with data transfer rates up to
- 512 Kbps. These cards support the X.25 and SNA related protocols.
-
- While no documentation is available at this time please grab the
- wanconfig tarball in
- <http://www.conectiva.com.br/~acme/cycsyn-devel/> (with minor changes
- to make it compile with the current wanrouter include files; efforts
- are being made to use the original package available at
- <ftp://ftp.sangoma.com/>).
-
- Feel free to contact me or the cycsyn-devel mailing list at
- <acme@conectiva.com.br> and <cycsyn-devel@bazar.conectiva.com.br> for
- additional details, I hope to have documentation available as soon as
- possible. (Cyclades Brazil is writing the Documentation).
-
- The next questions will ask you about the protocols you want the
- driver to support (for now only X.25 is supported).
-
- If you have one or more of these cards, say Y to this option.
-
- To compile this driver as a module, choose M here: the
- module will be called cyclomx.
-
-config CYCLOMX_X25
- bool "Cyclom 2X X.25 support (EXPERIMENTAL)"
- depends on CYCLADES_SYNC
- help
- Connect a Cyclom 2X card to an X.25 network.
-
- Enabling X.25 support will enlarge your kernel by about 11 kB.
-
# X.25 network drivers
config LAPBETHER
tristate "LAPB over Ethernet driver (EXPERIMENTAL)"
diff --git a/drivers/net/wan/Makefile b/drivers/net/wan/Makefile
index df70248..c135ef4 100644
--- a/drivers/net/wan/Makefile
+++ b/drivers/net/wan/Makefile
@@ -5,10 +5,6 @@
# Rewritten to use lists instead of if-statements.
#
-cyclomx-y := cycx_main.o
-cyclomx-$(CONFIG_CYCLOMX_X25) += cycx_x25.o
-cyclomx-objs := $(cyclomx-y)
-
obj-$(CONFIG_HDLC) += hdlc.o
obj-$(CONFIG_HDLC_RAW) += hdlc_raw.o
obj-$(CONFIG_HDLC_RAW_ETH) += hdlc_raw_eth.o
@@ -28,7 +24,6 @@ obj-$(CONFIG_LANMEDIA) += lmc/
obj-$(CONFIG_DLCI) += dlci.o
obj-$(CONFIG_SDLA) += sdla.o
-obj-$(CONFIG_CYCLADES_SYNC) += cycx_drv.o cyclomx.o
obj-$(CONFIG_LAPBETHER) += lapbether.o
obj-$(CONFIG_SBNI) += sbni.o
obj-$(CONFIG_N2) += n2.o
diff --git a/drivers/net/wan/cycx_drv.c b/drivers/net/wan/cycx_drv.c
deleted file mode 100644
index 2a3ecae..0000000
diff --git a/drivers/net/wan/cycx_main.c b/drivers/net/wan/cycx_main.c
deleted file mode 100644
index 81fbbad..0000000
diff --git a/drivers/net/wan/cycx_x25.c b/drivers/net/wan/cycx_x25.c
deleted file mode 100644
index 06f3f63..0000000
diff --git a/include/linux/cyclomx.h b/include/linux/cyclomx.h
deleted file mode 100644
index b88f7f4..0000000
diff --git a/include/linux/cycx_drv.h b/include/linux/cycx_drv.h
deleted file mode 100644
index 12fe6b0..0000000
diff --git a/include/linux/wanrouter.h b/include/linux/wanrouter.h
deleted file mode 100644
index cec4b41..0000000
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
index e194387..c54b7e7 100644
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
@@ -408,7 +408,6 @@ header-y += virtio_ring.h
header-y += virtio_rng.h
header-y += vt.h
header-y += wait.h
-header-y += wanrouter.h
header-y += watchdog.h
header-y += wimax.h
header-y += wireless.h
diff --git a/include/uapi/linux/wanrouter.h b/include/uapi/linux/wanrouter.h
deleted file mode 100644
index 7617df2..0000000
diff --git a/net/Kconfig b/net/Kconfig
index 30b48f5..4cf4bb5 100644
--- a/net/Kconfig
+++ b/net/Kconfig
@@ -209,7 +209,6 @@ source "net/ipx/Kconfig"
source "drivers/net/appletalk/Kconfig"
source "net/x25/Kconfig"
source "net/lapb/Kconfig"
-source "net/wanrouter/Kconfig"
source "net/phonet/Kconfig"
source "net/ieee802154/Kconfig"
source "net/mac802154/Kconfig"
diff --git a/net/Makefile b/net/Makefile
index 4f4ee08..c5aa8b3 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -26,7 +26,6 @@ obj-$(CONFIG_BRIDGE) += bridge/
obj-$(CONFIG_NET_DSA) += dsa/
obj-$(CONFIG_IPX) += ipx/
obj-$(CONFIG_ATALK) += appletalk/
-obj-$(CONFIG_WAN_ROUTER) += wanrouter/
obj-$(CONFIG_X25) += x25/
obj-$(CONFIG_LAPB) += lapb/
obj-$(CONFIG_NETROM) += netrom/
diff --git a/net/socket.c b/net/socket.c
index 2ca51c7..5c4d82c 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -69,7 +69,6 @@
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/mutex.h>
-#include <linux/wanrouter.h>
#include <linux/if_bridge.h>
#include <linux/if_frad.h>
#include <linux/if_vlan.h>
diff --git a/net/wanrouter/Kconfig b/net/wanrouter/Kconfig
deleted file mode 100644
index a157a2e..0000000
diff --git a/net/wanrouter/Makefile b/net/wanrouter/Makefile
deleted file mode 100644
index 4da14bc..0000000
diff --git a/net/wanrouter/patchlevel b/net/wanrouter/patchlevel
deleted file mode 100644
index c043eea..0000000
diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c
deleted file mode 100644
index 2ab7850..0000000
diff --git a/net/wanrouter/wanproc.c b/net/wanrouter/wanproc.c
deleted file mode 100644
index c43612e..0000000
--
1.7.8.112.g3fd21
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox