Index: sys/compat/linuxkpi/common/include/linux/netdevice.h =================================================================== --- sys/compat/linuxkpi/common/include/linux/netdevice.h +++ sys/compat/linuxkpi/common/include/linux/netdevice.h @@ -55,23 +55,9 @@ #define MAX_ADDR_LEN 20 +#if defined(_NET_DEVICE_IS_IFNET) #define net_device ifnet -static inline struct ifnet * -dev_get_by_index(struct vnet *vnet, int if_index) -{ - struct epoch_tracker et; - struct ifnet *retval; - - NET_EPOCH_ENTER(et); - CURVNET_SET(vnet); - retval = ifnet_byindex_ref(if_index); - CURVNET_RESTORE(); - NET_EPOCH_EXIT(et); - - return (retval); -} - #define dev_hold(d) if_ref(d) #define dev_put(d) if_rele(d) #define dev_net(d) ((d)->if_vnet) @@ -79,55 +65,23 @@ #define net_eq(a,b) ((a) == (b)) #define netif_running(dev) !!((dev)->if_drv_flags & IFF_DRV_RUNNING) -#define netif_oper_up(dev) !!((dev)->if_flags & IFF_UP) #define netif_carrier_ok(dev) ((dev)->if_link_state == LINK_STATE_UP) -static inline void * -netdev_priv(const struct net_device *dev) -{ - return (dev->if_softc); -} - -#define rtnl_lock() -#define rtnl_unlock() - -static inline int -dev_mc_delete(struct net_device *dev, void *addr, int alen, int all) -{ - struct sockaddr_dl sdl; +#else /* !_NET_DEVICE_IS_IFNET */ - if (alen > sizeof(sdl.sdl_data)) - return (-EINVAL); - memset(&sdl, 0, sizeof(sdl)); - sdl.sdl_len = sizeof(sdl); - sdl.sdl_family = AF_LINK; - sdl.sdl_alen = alen; - memcpy(&sdl.sdl_data, addr, alen); +struct net_device { + /* + * Keep ifp first until _NET_DEVICE_IS_IFNET is gone + * for various compat bits, e.g., netdev_notifier_info. + */ + struct ifnet *ifp; - return -if_delmulti(dev, (struct sockaddr *)&sdl); -} - -static inline int -dev_mc_del(struct net_device *dev, void *addr) -{ - return (dev_mc_delete(dev, addr, 6, 0)); -} - -static inline int -dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly) -{ - struct sockaddr_dl sdl; - - if (alen > sizeof(sdl.sdl_data)) - return (-EINVAL); - memset(&sdl, 0, sizeof(sdl)); - sdl.sdl_len = sizeof(sdl); - sdl.sdl_family = AF_LINK; - sdl.sdl_alen = alen; - memcpy(&sdl.sdl_data, addr, alen); + char *name; +}; +#endif /* _NET_DEVICE_IS_IFNET */ - return -if_addmulti(dev, (struct sockaddr *)&sdl, NULL); -} +#define rtnl_lock() do { } while(0) +#define rtnl_unlock() do { } while(0) /* According to linux::ipoib_main.c. */ struct netdev_notifier_info { Index: sys/dev/mlx4/mlx4_core/mlx4_main.c =================================================================== --- sys/dev/mlx4/mlx4_core/mlx4_main.c +++ sys/dev/mlx4/mlx4_core/mlx4_main.c @@ -43,6 +43,7 @@ #include #include #include +#define _NET_DEVICE_IS_IFNET #include #include #include Index: sys/dev/mlx4/mlx4_en/en.h =================================================================== --- sys/dev/mlx4/mlx4_en/en.h +++ sys/dev/mlx4/mlx4_en/en.h @@ -39,6 +39,7 @@ #include #include #include +#define _NET_DEVICE_IS_IFNET #include #include #include @@ -654,6 +655,12 @@ u64 reg_id; }; +static inline void * +netdev_priv(const struct net_device *dev) +{ + return (dev->if_softc); +} + static inline struct mlx4_cqe *mlx4_en_get_cqe(u8 *buf, int idx, int cqe_sz) { return (struct mlx4_cqe *)(buf + idx * cqe_sz); Index: sys/dev/mlx4/mlx4_en/mlx4_en_main.c =================================================================== --- sys/dev/mlx4/mlx4_en/mlx4_en_main.c +++ sys/dev/mlx4/mlx4_en/mlx4_en_main.c @@ -35,6 +35,7 @@ #include #include +#define _NET_DEVICE_IS_IFNET #include #include Index: sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c =================================================================== --- sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c +++ sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c @@ -37,6 +37,7 @@ #include #include #include +#define _NET_DEVICE_IS_IFNET #include #include #include Index: sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c =================================================================== --- sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c +++ sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c @@ -33,6 +33,7 @@ #include #include +#define _NET_DEVICE_IS_IFNET #include #include #include Index: sys/ofed/drivers/infiniband/core/ib_addr.c =================================================================== --- sys/ofed/drivers/infiniband/core/ib_addr.c +++ sys/ofed/drivers/infiniband/core/ib_addr.c @@ -46,7 +46,6 @@ #include #include #include -#include #include #include Index: sys/ofed/drivers/infiniband/core/ib_cache.c =================================================================== --- sys/ofed/drivers/infiniband/core/ib_cache.c +++ sys/ofed/drivers/infiniband/core/ib_cache.c @@ -42,6 +42,7 @@ #include #include #include +#define _NET_DEVICE_IS_IFNET #include #include Index: sys/ofed/drivers/infiniband/core/ib_cma.c =================================================================== --- sys/ofed/drivers/infiniband/core/ib_cma.c +++ sys/ofed/drivers/infiniband/core/ib_cma.c @@ -65,7 +65,6 @@ #include #include #include -#include #include #include #include Index: sys/ofed/drivers/infiniband/core/ib_device.c =================================================================== --- sys/ofed/drivers/infiniband/core/ib_device.c +++ sys/ofed/drivers/infiniband/core/ib_device.c @@ -42,6 +42,7 @@ #include #include #include +#define _NET_DEVICE_IS_IFNET #include #include #include Index: sys/ofed/drivers/infiniband/core/ib_sysfs.c =================================================================== --- sys/ofed/drivers/infiniband/core/ib_sysfs.c +++ sys/ofed/drivers/infiniband/core/ib_sysfs.c @@ -41,6 +41,7 @@ #include #include +#define _NET_DEVICE_IS_IFNET #include #include #include Index: sys/ofed/drivers/infiniband/core/iwpm_util.h =================================================================== --- sys/ofed/drivers/infiniband/core/iwpm_util.h +++ sys/ofed/drivers/infiniband/core/iwpm_util.h @@ -44,6 +44,7 @@ #include #include #include +#define _NET_DEVICE_IS_IFNET #include #include #include Index: sys/ofed/include/rdma/ib_addr.h =================================================================== --- sys/ofed/include/rdma/ib_addr.h +++ sys/ofed/include/rdma/ib_addr.h @@ -41,6 +41,7 @@ #include #include #include +#define _NET_DEVICE_IS_IFNET #include #include #include @@ -49,7 +50,7 @@ #include #include #include -#include +#include struct rdma_addr_client { atomic_t refcount; Index: sys/ofed/include/rdma/ib_addr_freebsd.h =================================================================== --- sys/ofed/include/rdma/ib_addr_freebsd.h +++ sys/ofed/include/rdma/ib_addr_freebsd.h @@ -92,4 +92,19 @@ } #endif +static inline struct ifnet * +dev_get_by_index(struct vnet *vnet, int if_index) +{ + struct epoch_tracker et; + struct ifnet *retval; + + NET_EPOCH_ENTER(et); + CURVNET_SET(vnet); + retval = ifnet_byindex_ref(if_index); + CURVNET_RESTORE(); + NET_EPOCH_EXIT(et); + + return (retval); +} + #endif /* _RDMA_IB_ADDR_FREEBSD_H */ Index: sys/ofed/include/rdma/ib_sa.h =================================================================== --- sys/ofed/include/rdma/ib_sa.h +++ sys/ofed/include/rdma/ib_sa.h @@ -41,8 +41,10 @@ #include #include +#define _NET_DEVICE_IS_IFNET #include +#include #include #include Index: sys/ofed/include/rdma/ib_verbs.h =================================================================== --- sys/ofed/include/rdma/ib_verbs.h +++ sys/ofed/include/rdma/ib_verbs.h @@ -59,6 +59,7 @@ #include #include #include +#define _NET_DEVICE_IS_IFNET #include #include