diff options
-rw-r--r-- | sys/ofed/include/rdma/ib_addr.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/ofed/include/rdma/ib_addr.h b/sys/ofed/include/rdma/ib_addr.h index 49caf7a7844d..09043132f992 100644 --- a/sys/ofed/include/rdma/ib_addr.h +++ b/sys/ofed/include/rdma/ib_addr.h @@ -354,9 +354,13 @@ static inline u16 rdma_get_vlan_id(union ib_gid *dgid) static inline struct net_device *rdma_vlan_dev_real_dev(struct net_device *dev) { - if (dev->if_type == IFT_ETHER && dev->if_pcp != IFNET_PCP_NONE) - return dev; /* prio-tagged traffic */ - return VLAN_TRUNKDEV(__DECONST(struct ifnet *, dev)); + struct epoch_tracker et; + + NET_EPOCH_ENTER(et); + if (dev->if_type != IFT_ETHER || dev->if_pcp == IFNET_PCP_NONE) + dev = VLAN_TRUNKDEV(dev); /* non prio-tagged traffic */ + NET_EPOCH_EXIT(et); + return (dev); } #endif /* IB_ADDR_H */ |