From 6d8823db422ae6719c7840fe11f737a40ffe4993 Mon Sep 17 00:00:00 2001 From: "frank.blaschka@de.ibm.com" Date: Wed, 16 May 2012 01:28:26 +0000 Subject: [PATCH] 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 Signed-off-by: Frank Blaschka Signed-off-by: David S. Miller --- drivers/s390/net/qeth_l3_main.c | 4 ++-- 1 file 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, struct net_device *netdev; rcu_read_lock(); - netdev = __vlan_find_dev_deep(dev, vid); + netdev = __vlan_find_dev_deep(card->dev, vid); rcu_read_unlock(); if (netdev == dev) { rc = QETH_VLAN_CARD; @@ -3602,9 +3602,9 @@ static int qeth_l3_ip_event(struct notifier_block *this, return NOTIFY_DONE; card = qeth_l3_get_card_from_dev(dev); - QETH_CARD_TEXT(card, 3, "ipevent"); if (!card) return NOTIFY_DONE; + QETH_CARD_TEXT(card, 3, "ipevent"); addr = qeth_l3_get_addr_buffer(QETH_PROT_IPV4); if (addr != NULL) { -- 2.20.1