net_device_ops
Regular
4.4
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, void *, select_queue_fallback_t);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
struct rtnl_link_stats64 * (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_busy_poll)(struct napi_struct *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, u32, __be16, struct tc_to_netdev *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct neighbour *);
void (*ndo_neigh_destroy)(struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_add_vxlan_port)(struct net_device *, sa_family_t, __be16);
void (*ndo_del_vxlan_port)(struct net_device *, sa_family_t, __be16);
void (*ndo_add_geneve_port)(struct net_device *, sa_family_t, __be16);
void (*ndo_del_geneve_port)(struct net_device *, sa_family_t, __be16);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
netdev_tx_t (*ndo_dfwd_start_xmit)(struct sk_buff *, struct net_device *, void *);
int (*ndo_get_lock_subclass)(struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
};
4.8
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, void *, select_queue_fallback_t);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
struct rtnl_link_stats64 * (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_busy_poll)(struct napi_struct *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, u32, __be16, struct tc_to_netdev *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
netdev_tx_t (*ndo_dfwd_start_xmit)(struct sk_buff *, struct net_device *, void *);
int (*ndo_get_lock_subclass)(struct net_device *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_xdp)(struct net_device *, struct netdev_xdp *);
};
4.10
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, void *, select_queue_fallback_t);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
struct rtnl_link_stats64 * (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_busy_poll)(struct napi_struct *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, u32, __be16, struct tc_to_netdev *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
netdev_tx_t (*ndo_dfwd_start_xmit)(struct sk_buff *, struct net_device *, void *);
int (*ndo_get_lock_subclass)(struct net_device *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_xdp)(struct net_device *, struct netdev_xdp *);
};
4.13
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, void *, select_queue_fallback_t);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, u32, u32, __be16, struct tc_to_netdev *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_get_lock_subclass)(struct net_device *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_xdp)(struct net_device *, struct netdev_xdp *);
};
4.15
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, void *, select_queue_fallback_t);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_get_lock_subclass)(struct net_device *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, struct xdp_buff *);
void (*ndo_xdp_flush)(struct net_device *);
};
4.18
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, void *, select_queue_fallback_t);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_get_lock_subclass)(struct net_device *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_async_xmit)(struct net_device *, u32);
};
5.0
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *, select_queue_fallback_t);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_get_lock_subclass)(struct net_device *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_async_xmit)(struct net_device *, u32);
};
5.3
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_get_lock_subclass)(struct net_device *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_async_xmit)(struct net_device *, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
5.4
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
5.8
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *, unsigned int);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
};
5.11
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *, unsigned int);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
struct net_device * (*ndo_get_peer_dev)(struct net_device *);
};
5.13
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *, unsigned int);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
struct net_device * (*ndo_get_peer_dev)(struct net_device *);
int (*ndo_fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *);
};
5.15
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_siocbond)(struct net_device *, struct ifreq *, int);
int (*ndo_siocwandev)(struct net_device *, struct if_settings *);
int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *, unsigned int);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
struct net_device * (*ndo_get_peer_dev)(struct net_device *);
int (*ndo_fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *);
};
5.19
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_siocbond)(struct net_device *, struct ifreq *, int);
int (*ndo_siocwandev)(struct net_device *, struct if_settings *);
int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *, unsigned int);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del_bulk)(struct ndmsg *, struct nlattr **, struct net_device *, u16, struct netlink_ext_ack *);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
struct net_device * (*ndo_get_peer_dev)(struct net_device *);
int (*ndo_fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *);
ktime_t (*ndo_get_tstamp)(struct net_device *, const struct skb_shared_hwtstamps *, bool);
};
6.2
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_siocbond)(struct net_device *, struct ifreq *, int);
int (*ndo_siocwandev)(struct net_device *, struct if_settings *);
int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *, unsigned int);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del_bulk)(struct ndmsg *, struct nlattr **, struct net_device *, u16, struct netlink_ext_ack *);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
struct net_device * (*ndo_get_peer_dev)(struct net_device *);
int (*ndo_fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *);
ktime_t (*ndo_get_tstamp)(struct net_device *, const struct skb_shared_hwtstamps *, bool);
};
6.5
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_siocbond)(struct net_device *, struct ifreq *, int);
int (*ndo_siocwandev)(struct net_device *, struct if_settings *);
int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *, unsigned int);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del_bulk)(struct ndmsg *, struct nlattr **, struct net_device *, u16, struct netlink_ext_ack *);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_mdb_add)(struct net_device *, struct nlattr **, u16, struct netlink_ext_ack *);
int (*ndo_mdb_del)(struct net_device *, struct nlattr **, struct netlink_ext_ack *);
int (*ndo_mdb_dump)(struct net_device *, struct sk_buff *, struct netlink_callback *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
struct net_device * (*ndo_get_peer_dev)(struct net_device *);
int (*ndo_fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *);
ktime_t (*ndo_get_tstamp)(struct net_device *, const struct skb_shared_hwtstamps *, bool);
};
6.8
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_siocbond)(struct net_device *, struct ifreq *, int);
int (*ndo_siocwandev)(struct net_device *, struct if_settings *);
int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *, unsigned int);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del_bulk)(struct nlmsghdr *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_mdb_add)(struct net_device *, struct nlattr **, u16, struct netlink_ext_ack *);
int (*ndo_mdb_del)(struct net_device *, struct nlattr **, struct netlink_ext_ack *);
int (*ndo_mdb_del_bulk)(struct net_device *, struct nlattr **, struct netlink_ext_ack *);
int (*ndo_mdb_dump)(struct net_device *, struct sk_buff *, struct netlink_callback *);
int (*ndo_mdb_get)(struct net_device *, struct nlattr **, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
struct net_device * (*ndo_get_peer_dev)(struct net_device *);
int (*ndo_fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *);
ktime_t (*ndo_get_tstamp)(struct net_device *, const struct skb_shared_hwtstamps *, bool);
int (*ndo_hwtstamp_get)(struct net_device *, struct kernel_hwtstamp_config *);
int (*ndo_hwtstamp_set)(struct net_device *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *);
};
arm64
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
armhf
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
ppc64el
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
riscv64
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
aws
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
azure
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
gcp
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
lowlatency
: ✅struct net_device_ops {
int (*ndo_init)(struct net_device *);
void (*ndo_uninit)(struct net_device *);
int (*ndo_open)(struct net_device *);
int (*ndo_stop)(struct net_device *);
netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
void (*ndo_change_rx_flags)(struct net_device *, int);
void (*ndo_set_rx_mode)(struct net_device *);
int (*ndo_set_mac_address)(struct net_device *, void *);
int (*ndo_validate_addr)(struct net_device *);
int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
int (*ndo_set_config)(struct net_device *, struct ifmap *);
int (*ndo_change_mtu)(struct net_device *, int);
int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
void (*ndo_tx_timeout)(struct net_device *);
void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
bool (*ndo_has_offload_stats)(const struct net_device *, int);
int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
struct net_device_stats * (*ndo_get_stats)(struct net_device *);
int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
void (*ndo_poll_controller)(struct net_device *);
int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *);
void (*ndo_netpoll_cleanup)(struct net_device *);
int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
int (*ndo_set_vf_trust)(struct net_device *, int, bool);
int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
int (*ndo_set_vf_link_state)(struct net_device *, int, int);
int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
int (*ndo_fcoe_enable)(struct net_device *);
int (*ndo_fcoe_disable)(struct net_device *);
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_ddp_done)(struct net_device *, u16);
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int);
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *);
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int);
int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
int (*ndo_del_slave)(struct net_device *, struct net_device *);
netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
int (*ndo_set_features)(struct net_device *, netdev_features_t);
int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16);
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
int (*ndo_change_carrier)(struct net_device *, bool);
int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *);
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *);
void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
void (*ndo_dfwd_del_station)(struct net_device *, void *);
int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
int (*ndo_get_iflink)(const struct net_device *);
int (*ndo_change_proto_down)(struct net_device *, bool);
int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
void (*ndo_set_rx_headroom)(struct net_device *, int);
int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *);
};
Regular
4.4
and 4.8
⚠️int (*ndo_set_vf_guid)(struct net_device *, int, u64, int)
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *)
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *)
void (*ndo_set_rx_headroom)(struct net_device *, int)
int (*ndo_xdp)(struct net_device *, struct netdev_xdp *)
void (*ndo_add_vxlan_port)(struct net_device *, sa_family_t, __be16)
void (*ndo_del_vxlan_port)(struct net_device *, sa_family_t, __be16)
void (*ndo_add_geneve_port)(struct net_device *, sa_family_t, __be16)
void (*ndo_del_geneve_port)(struct net_device *, sa_family_t, __be16)
int (*ndo_neigh_construct)(struct neighbour *)
➡️ int (*ndo_neigh_construct)(struct net_device *, struct neighbour *)
void (*ndo_neigh_destroy)(struct neighbour *)
➡️ void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *)
4.8
and 4.10
⚠️bool (*ndo_has_offload_stats)(const struct net_device *, int)
int (*ndo_get_offload_stats)(int, const struct net_device *, void *)
int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8)
➡️ int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16)
int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int)
➡️ int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *)
4.10
and 4.13
⚠️int (*ndo_busy_poll)(struct napi_struct *)
netdev_tx_t (*ndo_dfwd_start_xmit)(struct sk_buff *, struct net_device *, void *)
struct rtnl_link_stats64 * (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *)
➡️ void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *)
int (*ndo_setup_tc)(struct net_device *, u32, __be16, struct tc_to_netdev *)
➡️ int (*ndo_setup_tc)(struct net_device *, u32, u32, __be16, struct tc_to_netdev *)
4.13
and 4.15
⚠️int (*ndo_bpf)(struct net_device *, struct netdev_bpf *)
int (*ndo_xdp_xmit)(struct net_device *, struct xdp_buff *)
void (*ndo_xdp_flush)(struct net_device *)
int (*ndo_xdp)(struct net_device *, struct netdev_xdp *)
int (*ndo_setup_tc)(struct net_device *, u32, u32, __be16, struct tc_to_netdev *)
➡️ int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *)
int (*ndo_add_slave)(struct net_device *, struct net_device *)
➡️ int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *)
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *)
➡️ void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *)
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *)
➡️ void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *)
4.15
and 4.18
⚠️int (*ndo_xsk_async_xmit)(struct net_device *, u32)
void (*ndo_xdp_flush)(struct net_device *)
int (*ndo_xdp_xmit)(struct net_device *, struct xdp_buff *)
➡️ int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32)
4.18
and 5.0
⚠️int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *)
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, void *, select_queue_fallback_t)
➡️ u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *, select_queue_fallback_t)
int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16)
➡️ int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *)
5.0
and 5.3
⚠️int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *)
struct devlink_port * (*ndo_get_devlink_port)(struct net_device *)
u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *, select_queue_fallback_t)
➡️ u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *)
int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16)
➡️ int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *)
5.3
and 5.4
⚠️int (*ndo_xsk_wakeup)(struct net_device *, u32, u32)
int (*ndo_get_lock_subclass)(struct net_device *)
int (*ndo_xsk_async_xmit)(struct net_device *, u32)
5.4
and 5.8
⚠️int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *)
struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool)
int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int)
void (*ndo_tx_timeout)(struct net_device *)
➡️ void (*ndo_tx_timeout)(struct net_device *, unsigned int)
5.8
and 5.11
⚠️struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *)
struct net_device * (*ndo_get_peer_dev)(struct net_device *)
5.11
and 5.13
⚠️int (*ndo_fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *)
void (*ndo_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *)
void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *)
5.13
and 5.15
⚠️int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int)
int (*ndo_siocbond)(struct net_device *, struct ifreq *, int)
int (*ndo_siocwandev)(struct net_device *, struct if_settings *)
int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void *, int)
struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *)
5.15
and 5.19
⚠️int (*ndo_fdb_del_bulk)(struct ndmsg *, struct nlattr **, struct net_device *, u16, struct netlink_ext_ack *)
ktime_t (*ndo_get_tstamp)(struct net_device *, const struct skb_shared_hwtstamps *, bool)
int (*ndo_change_proto_down)(struct net_device *, bool)
int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16)
➡️ int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, struct netlink_ext_ack *)
5.19
and 6.2
⚠️struct devlink_port * (*ndo_get_devlink_port)(struct net_device *)
6.2
and 6.5
⚠️int (*ndo_mdb_add)(struct net_device *, struct nlattr **, u16, struct netlink_ext_ack *)
int (*ndo_mdb_del)(struct net_device *, struct nlattr **, struct netlink_ext_ack *)
int (*ndo_mdb_dump)(struct net_device *, struct sk_buff *, struct netlink_callback *)
6.5
and 6.8
⚠️int (*ndo_mdb_del_bulk)(struct net_device *, struct nlattr **, struct netlink_ext_ack *)
int (*ndo_mdb_get)(struct net_device *, struct nlattr **, u32, u32, struct netlink_ext_ack *)
int (*ndo_hwtstamp_get)(struct net_device *, struct kernel_hwtstamp_config *)
int (*ndo_hwtstamp_set)(struct net_device *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *)
int (*ndo_fdb_del_bulk)(struct ndmsg *, struct nlattr **, struct net_device *, u16, struct netlink_ext_ack *)
➡️ int (*ndo_fdb_del_bulk)(struct nlmsghdr *, struct net_device *, struct netlink_ext_ack *)
amd64
and arm64
✅
amd64
and armhf
✅
amd64
and ppc64el
✅
amd64
and riscv64
✅
generic
and aws
✅
generic
and azure
⚠️int (*ndo_fcoe_enable)(struct net_device *)
int (*ndo_fcoe_disable)(struct net_device *)
int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int)
int (*ndo_fcoe_ddp_done)(struct net_device *, u16)
int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int)
int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *)
int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int)
generic
and gcp
✅
generic
and lowlatency
✅