net_device_opsRegular
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 ✅