|
@@ -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) {
|