* [PATCH] netdevice: provide common routine for macvlan and vlan operstate management
2009-11-11 15:29 [PATCH 2/4] macvlan: allow in-kernel modules to create and manage macvlan devices Patrick McHardy
@ 2009-11-12 18:05 ` Patrick Mullaney
2009-11-12 18:21 ` Patrick McHardy
0 siblings, 1 reply; 8+ messages in thread
From: Patrick Mullaney @ 2009-11-12 18:05 UTC (permalink / raw)
To: kaber; +Cc: linux-kernel, arnd, netdev, bridge
Patrick,
This patch is intended to address your comment on moving the operstate
transition function. I decided to move it to netdevice.h, perhaps that
is a bad idea? It didn't seem to logically fall into dev.c or link_watch.c.
I am not against moving them to either one though. Your other comments
are addressed and I will send out a second series once this gets
reviewed and agreed on.
Thanks for your review/comments.
----------
Provide common routine for the transition of operational state for a leaf
device during a root device transition.
Signed-off-by: Patrick Mullaney <pmullaney@novell.com>
---
include/linux/netdevice.h | 19 +++++++++++++++++++
net/8021q/vlan.c | 29 ++++-------------------------
2 files changed, 23 insertions(+), 25 deletions(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index d4a4d98..a15920a 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1999,6 +1999,25 @@ static inline u32 dev_ethtool_get_flags(struct net_device *dev)
return 0;
return dev->ethtool_ops->get_flags(dev);
}
+
+static inline
+void netif_stacked_transfer_operstate(const struct net_device *rootdev,
+ struct net_device *dev)
+{
+ if (rootdev->operstate == IF_OPER_DORMANT)
+ netif_dormant_on(dev);
+ else
+ netif_dormant_off(dev);
+
+ if (netif_carrier_ok(rootdev)) {
+ if (!netif_carrier_ok(dev))
+ netif_carrier_on(dev);
+ } else {
+ if (netif_carrier_ok(dev))
+ netif_carrier_off(dev);
+ }
+}
+
#endif /* __KERNEL__ */
#endif /* _LINUX_NETDEVICE_H */
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index fe64908..5d11c12 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -183,27 +183,6 @@ void unregister_vlan_dev(struct net_device *dev)
dev_put(real_dev);
}
-static void vlan_transfer_operstate(const struct net_device *dev,
- struct net_device *vlandev)
-{
- /* Have to respect userspace enforced dormant state
- * of real device, also must allow supplicant running
- * on VLAN device
- */
- if (dev->operstate == IF_OPER_DORMANT)
- netif_dormant_on(vlandev);
- else
- netif_dormant_off(vlandev);
-
- if (netif_carrier_ok(dev)) {
- if (!netif_carrier_ok(vlandev))
- netif_carrier_on(vlandev);
- } else {
- if (netif_carrier_ok(vlandev))
- netif_carrier_off(vlandev);
- }
-}
-
int vlan_check_real_dev(struct net_device *real_dev, u16 vlan_id)
{
const char *name = real_dev->name;
@@ -267,7 +246,7 @@ int register_vlan_dev(struct net_device *dev)
/* Account for reference in struct vlan_dev_info */
dev_hold(real_dev);
- vlan_transfer_operstate(real_dev, dev);
+ netif_stacked_transfer_operstate(real_dev, dev);
linkwatch_fire_event(dev); /* _MUST_ call rfc2863_policy() */
/* So, got the sucker initialized, now lets place
@@ -449,7 +428,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
if (!vlandev)
continue;
- vlan_transfer_operstate(dev, vlandev);
+ netif_stacked_transfer_operstate(dev, vlandev);
}
break;
@@ -492,7 +471,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
continue;
dev_change_flags(vlandev, flgs & ~IFF_UP);
- vlan_transfer_operstate(dev, vlandev);
+ netif_stacked_transfer_operstate(dev, vlandev);
}
break;
@@ -508,7 +487,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
continue;
dev_change_flags(vlandev, flgs | IFF_UP);
- vlan_transfer_operstate(dev, vlandev);
+ netif_stacked_transfer_operstate(dev, vlandev);
}
break;
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] netdevice: provide common routine for macvlan and vlan operstate management
2009-11-12 18:05 ` [PATCH] netdevice: provide common routine for macvlan and vlan operstate management Patrick Mullaney
@ 2009-11-12 18:21 ` Patrick McHardy
0 siblings, 0 replies; 8+ messages in thread
From: Patrick McHardy @ 2009-11-12 18:21 UTC (permalink / raw)
To: Patrick Mullaney; +Cc: linux-kernel, arnd, netdev, bridge
Patrick Mullaney wrote:
> This patch is intended to address your comment on moving the operstate
> transition function. I decided to move it to netdevice.h, perhaps that
> is a bad idea? It didn't seem to logically fall into dev.c or link_watch.c.
> I am not against moving them to either one though. Your other comments
> are addressed and I will send out a second series once this gets
> reviewed and agreed on.
Thanks. I don't mind much where exactly it is located, but I'd prefer
to not have it inlined. It doesn't seem terribly wrong to move it to
dev.c, there are even some helpers for stacked devices already, like
address list synchronization.
Besides that the patch looks fine to me.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] netdevice: provide common routine for macvlan and vlan operstate management
@ 2009-11-27 22:12 Patrick Mullaney
2009-11-27 22:30 ` Patrick McHardy
0 siblings, 1 reply; 8+ messages in thread
From: Patrick Mullaney @ 2009-11-27 22:12 UTC (permalink / raw)
To: netdev; +Cc: kaber, arnd, linux-kernel, alacrityvm-devel
Applies to net-2.6.git/master:0135ae0b9)
Provide common routine for the transition of operational state for a leaf
device during a root device transition. This updates a previous patch in
my venet macvlan series and fixes the problems that Arnd pointed out.
Is submitting this applied to net-next a more better approach?
Signed-off-by: Patrick Mullaney <pmullaney@novell.com>
---
drivers/net/macvlan.c | 24 +++---------------------
include/linux/netdevice.h | 3 +++
net/8021q/vlan.c | 29 ++++-------------------------
net/core/dev.c | 27 +++++++++++++++++++++++++++
4 files changed, 37 insertions(+), 46 deletions(-)
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 2490aa3..14f63ec 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -456,25 +456,6 @@ static void macvlan_port_destroy(struct net_device *dev)
kfree(port);
}
-static void macvlan_transfer_operstate(struct net_device *dev)
-{
- struct macvlan_dev *vlan = netdev_priv(dev);
- const struct net_device *lowerdev = vlan->lowerdev;
-
- if (lowerdev->operstate == IF_OPER_DORMANT)
- netif_dormant_on(dev);
- else
- netif_dormant_off(dev);
-
- if (netif_carrier_ok(lowerdev)) {
- if (!netif_carrier_ok(dev))
- netif_carrier_on(dev);
- } else {
- if (netif_carrier_ok(dev))
- netif_carrier_off(dev);
- }
-}
-
static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[])
{
if (tb[IFLA_ADDRESS]) {
@@ -552,7 +533,7 @@ static int macvlan_newlink(struct net_device *dev,
return err;
list_add_tail(&vlan->list, &port->vlans);
- macvlan_transfer_operstate(dev);
+ netif_stacked_transfer_operstate(lowerdev, dev);
return 0;
}
@@ -592,7 +573,8 @@ static int macvlan_device_event(struct notifier_block *unused,
switch (event) {
case NETDEV_CHANGE:
list_for_each_entry(vlan, &port->vlans, list)
- macvlan_transfer_operstate(vlan->dev);
+ netif_stacked_transfer_operstate(vlan->lowerdev,
+ vlan->dev);
break;
case NETDEV_FEAT_CHANGE:
list_for_each_entry(vlan, &port->vlans, list) {
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 812a5f3..1587715 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1914,6 +1914,9 @@ unsigned long netdev_increment_features(unsigned long all, unsigned long one,
unsigned long mask);
unsigned long netdev_fix_features(unsigned long features, const char *name);
+void netif_stacked_transfer_operstate(const struct net_device *rootdev,
+ struct net_device *dev);
+
static inline int net_gso_ok(int features, int gso_type)
{
int feature = gso_type << NETIF_F_GSO_SHIFT;
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index a29c5ab..44f5751 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -183,27 +183,6 @@ void unregister_vlan_dev(struct net_device *dev)
dev_put(real_dev);
}
-static void vlan_transfer_operstate(const struct net_device *dev,
- struct net_device *vlandev)
-{
- /* Have to respect userspace enforced dormant state
- * of real device, also must allow supplicant running
- * on VLAN device
- */
- if (dev->operstate == IF_OPER_DORMANT)
- netif_dormant_on(vlandev);
- else
- netif_dormant_off(vlandev);
-
- if (netif_carrier_ok(dev)) {
- if (!netif_carrier_ok(vlandev))
- netif_carrier_on(vlandev);
- } else {
- if (netif_carrier_ok(vlandev))
- netif_carrier_off(vlandev);
- }
-}
-
int vlan_check_real_dev(struct net_device *real_dev, u16 vlan_id)
{
const char *name = real_dev->name;
@@ -261,7 +240,7 @@ int register_vlan_dev(struct net_device *dev)
/* Account for reference in struct vlan_dev_info */
dev_hold(real_dev);
- vlan_transfer_operstate(real_dev, dev);
+ netif_stacked_transfer_operstate(real_dev, dev);
linkwatch_fire_event(dev); /* _MUST_ call rfc2863_policy() */
/* So, got the sucker initialized, now lets place
@@ -450,7 +429,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
if (!vlandev)
continue;
- vlan_transfer_operstate(dev, vlandev);
+ netif_stacked_transfer_operstate(dev, vlandev);
}
break;
@@ -506,7 +485,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
continue;
dev_change_flags(vlandev, flgs & ~IFF_UP);
- vlan_transfer_operstate(dev, vlandev);
+ netif_stacked_transfer_operstate(dev, vlandev);
}
break;
@@ -522,7 +501,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
continue;
dev_change_flags(vlandev, flgs | IFF_UP);
- vlan_transfer_operstate(dev, vlandev);
+ netif_stacked_transfer_operstate(dev, vlandev);
}
break;
diff --git a/net/core/dev.c b/net/core/dev.c
index fe10551..8ece671 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4747,6 +4747,33 @@ unsigned long netdev_fix_features(unsigned long features, const char *name)
EXPORT_SYMBOL(netdev_fix_features);
/**
+ * netif_stacked_transfer_operstate - transfer operstate
+ * @rootdev: the root or lower level device to transfer state from
+ * @dev: the device to transfer operstate to
+ *
+ * Transfer operational state from root to device. This is normally
+ * called when a stacking relationship exists between the root
+ * device and the device(a leaf device).
+ */
+void netif_stacked_transfer_operstate(const struct net_device *rootdev,
+ struct net_device *dev)
+{
+ if (rootdev->operstate == IF_OPER_DORMANT)
+ netif_dormant_on(dev);
+ else
+ netif_dormant_off(dev);
+
+ if (netif_carrier_ok(rootdev)) {
+ if (!netif_carrier_ok(dev))
+ netif_carrier_on(dev);
+ } else {
+ if (netif_carrier_ok(dev))
+ netif_carrier_off(dev);
+ }
+}
+EXPORT_SYMBOL(netif_stacked_transfer_operstate);
+
+/**
* register_netdevice - register a network device
* @dev: device to register
*
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] netdevice: provide common routine for macvlan and vlan operstate management
2009-11-27 22:12 [PATCH v2] netdevice: provide common routine for macvlan and vlan operstate management Patrick Mullaney
@ 2009-11-27 22:30 ` Patrick McHardy
2009-11-27 22:38 ` Arnd Bergmann
2009-12-03 20:21 ` [PATCH] " Patrick Mullaney
0 siblings, 2 replies; 8+ messages in thread
From: Patrick McHardy @ 2009-11-27 22:30 UTC (permalink / raw)
To: Patrick Mullaney; +Cc: netdev, arnd, linux-kernel, alacrityvm-devel
Patrick Mullaney wrote:
> Applies to net-2.6.git/master:0135ae0b9)
>
> Provide common routine for the transition of operational state for a leaf
> device during a root device transition. This updates a previous patch in
> my venet macvlan series and fixes the problems that Arnd pointed out.
>
> Is submitting this applied to net-next a more better approach?
Yes, please base this patch on net-next.
> Signed-off-by: Patrick Mullaney <pmullaney@novell.com>
Acked-by: Patrick McHardy <kaber@trash.net>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] netdevice: provide common routine for macvlan and vlan operstate management
2009-11-27 22:30 ` Patrick McHardy
@ 2009-11-27 22:38 ` Arnd Bergmann
2009-12-03 20:21 ` [PATCH] " Patrick Mullaney
1 sibling, 0 replies; 8+ messages in thread
From: Arnd Bergmann @ 2009-11-27 22:38 UTC (permalink / raw)
To: Patrick McHardy; +Cc: Patrick Mullaney, netdev, linux-kernel, alacrityvm-devel
On Friday 27 November 2009, Patrick McHardy wrote:
> > Signed-off-by: Patrick Mullaney <pmullaney@novell.com>
>
> Acked-by: Patrick McHardy <kaber@trash.net>
Acked-by: Arnd Bergmann <arnd@arndb.de>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] netdevice: provide common routine for macvlan and vlan operstate management
2009-11-27 22:30 ` Patrick McHardy
2009-11-27 22:38 ` Arnd Bergmann
@ 2009-12-03 20:21 ` Patrick Mullaney
2009-12-03 21:34 ` Arnd Bergmann
1 sibling, 1 reply; 8+ messages in thread
From: Patrick Mullaney @ 2009-12-03 20:21 UTC (permalink / raw)
To: netdev; +Cc: kaber, arnd
(Applies to net-next-2.6.git/master:218d00bdd)
Provide common routine for the transition of operational state for a leaf
device during a root device transition.
Signed-off-by: Patrick Mullaney <pmullaney@novell.com>
---
drivers/net/macvlan.c | 24 +++---------------------
include/linux/netdevice.h | 3 +++
net/8021q/vlan.c | 29 ++++-------------------------
net/core/dev.c | 27 +++++++++++++++++++++++++++
4 files changed, 37 insertions(+), 46 deletions(-)
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 93c3e6e..21a9c9a 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -582,25 +582,6 @@ static void macvlan_port_destroy(struct net_device *dev)
kfree(port);
}
-static void macvlan_transfer_operstate(struct net_device *dev)
-{
- struct macvlan_dev *vlan = netdev_priv(dev);
- const struct net_device *lowerdev = vlan->lowerdev;
-
- if (lowerdev->operstate == IF_OPER_DORMANT)
- netif_dormant_on(dev);
- else
- netif_dormant_off(dev);
-
- if (netif_carrier_ok(lowerdev)) {
- if (!netif_carrier_ok(dev))
- netif_carrier_on(dev);
- } else {
- if (netif_carrier_ok(dev))
- netif_carrier_off(dev);
- }
-}
-
static int macvlan_validate(struct nlattr *tb[], struct nlattr *data[])
{
if (tb[IFLA_ADDRESS]) {
@@ -693,7 +674,7 @@ static int macvlan_newlink(struct net *src_net, struct net_device *dev,
return err;
list_add_tail(&vlan->list, &port->vlans);
- macvlan_transfer_operstate(dev);
+ netif_stacked_transfer_operstate(lowerdev, dev);
return 0;
}
@@ -768,7 +749,8 @@ static int macvlan_device_event(struct notifier_block *unused,
switch (event) {
case NETDEV_CHANGE:
list_for_each_entry(vlan, &port->vlans, list)
- macvlan_transfer_operstate(vlan->dev);
+ netif_stacked_transfer_operstate(vlan->lowerdev,
+ vlan->dev);
break;
case NETDEV_FEAT_CHANGE:
list_for_each_entry(vlan, &port->vlans, list) {
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index daf13d3..a3fccc8 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1981,6 +1981,9 @@ unsigned long netdev_increment_features(unsigned long all, unsigned long one,
unsigned long mask);
unsigned long netdev_fix_features(unsigned long features, const char *name);
+void netif_stacked_transfer_operstate(const struct net_device *rootdev,
+ struct net_device *dev);
+
static inline int net_gso_ok(int features, int gso_type)
{
int feature = gso_type << NETIF_F_GSO_SHIFT;
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index ec37692..33f90e7 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -184,27 +184,6 @@ void unregister_vlan_dev(struct net_device *dev, struct list_head *head)
dev_put(real_dev);
}
-static void vlan_transfer_operstate(const struct net_device *dev,
- struct net_device *vlandev)
-{
- /* Have to respect userspace enforced dormant state
- * of real device, also must allow supplicant running
- * on VLAN device
- */
- if (dev->operstate == IF_OPER_DORMANT)
- netif_dormant_on(vlandev);
- else
- netif_dormant_off(vlandev);
-
- if (netif_carrier_ok(dev)) {
- if (!netif_carrier_ok(vlandev))
- netif_carrier_on(vlandev);
- } else {
- if (netif_carrier_ok(vlandev))
- netif_carrier_off(vlandev);
- }
-}
-
int vlan_check_real_dev(struct net_device *real_dev, u16 vlan_id)
{
const char *name = real_dev->name;
@@ -262,7 +241,7 @@ int register_vlan_dev(struct net_device *dev)
/* Account for reference in struct vlan_dev_info */
dev_hold(real_dev);
- vlan_transfer_operstate(real_dev, dev);
+ netif_stacked_transfer_operstate(real_dev, dev);
linkwatch_fire_event(dev); /* _MUST_ call rfc2863_policy() */
/* So, got the sucker initialized, now lets place
@@ -453,7 +432,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
if (!vlandev)
continue;
- vlan_transfer_operstate(dev, vlandev);
+ netif_stacked_transfer_operstate(dev, vlandev);
}
break;
@@ -511,7 +490,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
vlan = vlan_dev_info(vlandev);
if (!(vlan->flags & VLAN_FLAG_LOOSE_BINDING))
dev_change_flags(vlandev, flgs & ~IFF_UP);
- vlan_transfer_operstate(dev, vlandev);
+ netif_stacked_transfer_operstate(dev, vlandev);
}
break;
@@ -529,7 +508,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
vlan = vlan_dev_info(vlandev);
if (!(vlan->flags & VLAN_FLAG_LOOSE_BINDING))
dev_change_flags(vlandev, flgs | IFF_UP);
- vlan_transfer_operstate(dev, vlandev);
+ netif_stacked_transfer_operstate(dev, vlandev);
}
break;
diff --git a/net/core/dev.c b/net/core/dev.c
index e3e18de..1842f63 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4901,6 +4901,33 @@ unsigned long netdev_fix_features(unsigned long features, const char *name)
EXPORT_SYMBOL(netdev_fix_features);
/**
+ * netif_stacked_transfer_operstate - transfer operstate
+ * @rootdev: the root or lower level device to transfer state from
+ * @dev: the device to transfer operstate to
+ *
+ * Transfer operational state from root to device. This is normally
+ * called when a stacking relationship exists between the root
+ * device and the device(a leaf device).
+ */
+void netif_stacked_transfer_operstate(const struct net_device *rootdev,
+ struct net_device *dev)
+{
+ if (rootdev->operstate == IF_OPER_DORMANT)
+ netif_dormant_on(dev);
+ else
+ netif_dormant_off(dev);
+
+ if (netif_carrier_ok(rootdev)) {
+ if (!netif_carrier_ok(dev))
+ netif_carrier_on(dev);
+ } else {
+ if (netif_carrier_ok(dev))
+ netif_carrier_off(dev);
+ }
+}
+EXPORT_SYMBOL(netif_stacked_transfer_operstate);
+
+/**
* register_netdevice - register a network device
* @dev: device to register
*
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] netdevice: provide common routine for macvlan and vlan operstate management
2009-12-03 20:21 ` [PATCH] " Patrick Mullaney
@ 2009-12-03 21:34 ` Arnd Bergmann
2009-12-03 23:59 ` David Miller
0 siblings, 1 reply; 8+ messages in thread
From: Arnd Bergmann @ 2009-12-03 21:34 UTC (permalink / raw)
To: Patrick Mullaney; +Cc: netdev, kaber
On Thursday 03 December 2009 20:21:54 Patrick Mullaney wrote:
> Provide common routine for the transition of operational state for a leaf
> device during a root device transition.
>
> Signed-off-by: Patrick Mullaney <pmullaney@novell.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
The last time this was posted, we also had an "Acked-by: Patrick McHardy
<kaber@trash.net>", which should be in there as well.
Arnd <><
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] netdevice: provide common routine for macvlan and vlan operstate management
2009-12-03 21:34 ` Arnd Bergmann
@ 2009-12-03 23:59 ` David Miller
0 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2009-12-03 23:59 UTC (permalink / raw)
To: arnd; +Cc: pmullaney, netdev, kaber
From: Arnd Bergmann <arnd@arndb.de>
Date: Thu, 3 Dec 2009 21:34:32 +0000
> On Thursday 03 December 2009 20:21:54 Patrick Mullaney wrote:
>> Provide common routine for the transition of operational state for a leaf
>> device during a root device transition.
>>
>> Signed-off-by: Patrick Mullaney <pmullaney@novell.com>
>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
>
> The last time this was posted, we also had an "Acked-by: Patrick McHardy
> <kaber@trash.net>", which should be in there as well.
I've done that and applied this patch, thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-12-03 23:59 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-27 22:12 [PATCH v2] netdevice: provide common routine for macvlan and vlan operstate management Patrick Mullaney
2009-11-27 22:30 ` Patrick McHardy
2009-11-27 22:38 ` Arnd Bergmann
2009-12-03 20:21 ` [PATCH] " Patrick Mullaney
2009-12-03 21:34 ` Arnd Bergmann
2009-12-03 23:59 ` David Miller
-- strict thread matches above, loose matches on Subject: below --
2009-11-11 15:29 [PATCH 2/4] macvlan: allow in-kernel modules to create and manage macvlan devices Patrick McHardy
2009-11-12 18:05 ` [PATCH] netdevice: provide common routine for macvlan and vlan operstate management Patrick Mullaney
2009-11-12 18:21 ` Patrick McHardy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).