diff options
author | frank.blaschka@de.ibm.com <frank.blaschka@de.ibm.com> | 2012-05-15 21:28:26 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-05-16 15:32:50 -0400 |
commit | 6d8823db422ae6719c7840fe11f737a40ffe4993 (patch) | |
tree | 9491725824997943f1c410b689cd0241c482a77a /drivers/s390 | |
parent | a8f40f7c8e52114550e6fa161d925bd6eca69e19 (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')
-rw-r--r-- | drivers/s390/net/qeth_l3_main.c | 4 |
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) { |