aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/net
diff options
context:
space:
mode:
authorfrank.blaschka@de.ibm.com <frank.blaschka@de.ibm.com>2012-05-15 21:28:26 -0400
committerDavid S. Miller <davem@davemloft.net>2012-05-16 15:32:50 -0400
commit6d8823db422ae6719c7840fe11f737a40ffe4993 (patch)
tree9491725824997943f1c410b689cd0241c482a77a /drivers/s390/net
parenta8f40f7c8e52114550e6fa161d925bd6eca69e19 (diff)
qeth: recognize vlan devices in layer3 mode
The qeth layer3 driver is notified about IP address changes. Changes concerning qeth driven network interfaces have to be forwarded to the OSA-card. This includes IP addresses of VLAN interfaces with a qeth device as base device. Function qeth_l3_verify_vlan_dev() determines if the net_device of the IP event belongs to a vlan device belonging to a qeth device as real device. This function is broken starting with commit 7ff0bcf676f7ed224ce21b58c7858c8e527068b2 , which means IP addresses of VLAN devices are no longer set at the base qeth device. The patch repairs function qeth_l3_verify_vlan_dev(). Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com> Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net')
-rw-r--r--drivers/s390/net/qeth_l3_main.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index 023657dfa84e..e7ad03209cb2 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -2073,7 +2073,7 @@ static int qeth_l3_verify_vlan_dev(struct net_device *dev,
2073 struct net_device *netdev; 2073 struct net_device *netdev;
2074 2074
2075 rcu_read_lock(); 2075 rcu_read_lock();
2076 netdev = __vlan_find_dev_deep(dev, vid); 2076 netdev = __vlan_find_dev_deep(card->dev, vid);
2077 rcu_read_unlock(); 2077 rcu_read_unlock();
2078 if (netdev == dev) { 2078 if (netdev == dev) {
2079 rc = QETH_VLAN_CARD; 2079 rc = QETH_VLAN_CARD;
@@ -3602,9 +3602,9 @@ static int qeth_l3_ip_event(struct notifier_block *this,
3602 return NOTIFY_DONE; 3602 return NOTIFY_DONE;
3603 3603
3604 card = qeth_l3_get_card_from_dev(dev); 3604 card = qeth_l3_get_card_from_dev(dev);
3605 QETH_CARD_TEXT(card, 3, "ipevent");
3606 if (!card) 3605 if (!card)
3607 return NOTIFY_DONE; 3606 return NOTIFY_DONE;
3607 QETH_CARD_TEXT(card, 3, "ipevent");
3608 3608
3609 addr = qeth_l3_get_addr_buffer(QETH_PROT_IPV4); 3609 addr = qeth_l3_get_addr_buffer(QETH_PROT_IPV4);
3610 if (addr != NULL) { 3610 if (addr != NULL) {