diff options
Diffstat (limited to 'drivers/infiniband/hw/ocrdma/ocrdma_main.c')
| -rw-r--r-- | drivers/infiniband/hw/ocrdma/ocrdma_main.c | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_main.c b/drivers/infiniband/hw/ocrdma/ocrdma_main.c index 5a044526e4f..c4e0131f1b5 100644 --- a/drivers/infiniband/hw/ocrdma/ocrdma_main.c +++ b/drivers/infiniband/hw/ocrdma/ocrdma_main.c @@ -161,7 +161,7 @@ static void ocrdma_add_default_sgid(struct ocrdma_dev *dev)  	ocrdma_get_guid(dev, &sgid->raw[8]);  } -#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) +#if IS_ENABLED(CONFIG_VLAN_8021Q)  static void ocrdma_add_vlan_sgids(struct ocrdma_dev *dev)  {  	struct net_device *netdev, *tmp; @@ -202,14 +202,13 @@ static int ocrdma_build_sgid_tbl(struct ocrdma_dev *dev)  	return 0;  } -#if IS_ENABLED(CONFIG_IPV6) || IS_ENABLED(CONFIG_VLAN_8021Q) +#if IS_ENABLED(CONFIG_IPV6)  static int ocrdma_inet6addr_event(struct notifier_block *notifier,  				  unsigned long event, void *ptr)  {  	struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr; -	struct net_device *event_netdev = ifa->idev->dev; -	struct net_device *netdev = NULL; +	struct net_device *netdev = ifa->idev->dev;  	struct ib_event gid_event;  	struct ocrdma_dev *dev;  	bool found = false; @@ -217,11 +216,12 @@ static int ocrdma_inet6addr_event(struct notifier_block *notifier,  	bool is_vlan = false;  	u16 vid = 0; -	netdev = vlan_dev_real_dev(event_netdev); -	if (netdev != event_netdev) { -		is_vlan = true; -		vid = vlan_dev_vlan_id(event_netdev); +	is_vlan = netdev->priv_flags & IFF_802_1Q_VLAN; +	if (is_vlan) { +		vid = vlan_dev_vlan_id(netdev); +		netdev = vlan_dev_real_dev(netdev);  	} +  	rcu_read_lock();  	list_for_each_entry_rcu(dev, &ocrdma_dev_list, entry) {  		if (dev->nic_info.netdev == netdev) {  |