aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/netdevice.h
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2016-09-25 17:23:57 -0400
committerPablo Neira Ayuso <pablo@netfilter.org>2016-09-25 17:34:19 -0400
commitf20fbc0717f9f007c94b2641134b19228d0ce9ed (patch)
tree1404248ebbec552a3fb7928b75322b65d74de1bd /include/linux/netdevice.h
parent8cb2a7d5667ab9a9c2fdd356357b85b63b320901 (diff)
parentfe0acb5fcb7fe8cb3d68bbdb8459865c972d8f83 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
Conflicts: net/netfilter/core.c net/netfilter/nf_tables_netdev.c Resolve two conflicts before pull request for David's net-next tree: 1) Between c73c24849011 ("netfilter: nf_tables_netdev: remove redundant ip_hdr assignment") from the net tree and commit ddc8b6027ad0 ("netfilter: introduce nft_set_pktinfo_{ipv4, ipv6}_validate()"). 2) Between e8bffe0cf964 ("net: Add _nf_(un)register_hooks symbols") and Aaron Conole's patches to replace list_head with single linked list. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r--include/linux/netdevice.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 41f49f5ab62a..136ae6bbe81e 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -789,6 +789,7 @@ enum {
789 TC_SETUP_CLSU32, 789 TC_SETUP_CLSU32,
790 TC_SETUP_CLSFLOWER, 790 TC_SETUP_CLSFLOWER,
791 TC_SETUP_MATCHALL, 791 TC_SETUP_MATCHALL,
792 TC_SETUP_CLSBPF,
792}; 793};
793 794
794struct tc_cls_u32_offload; 795struct tc_cls_u32_offload;
@@ -800,6 +801,7 @@ struct tc_to_netdev {
800 struct tc_cls_u32_offload *cls_u32; 801 struct tc_cls_u32_offload *cls_u32;
801 struct tc_cls_flower_offload *cls_flower; 802 struct tc_cls_flower_offload *cls_flower;
802 struct tc_cls_matchall_offload *cls_mall; 803 struct tc_cls_matchall_offload *cls_mall;
804 struct tc_cls_bpf_offload *cls_bpf;
803 }; 805 };
804}; 806};
805 807
@@ -924,6 +926,14 @@ struct netdev_xdp {
924 * 3. Update dev->stats asynchronously and atomically, and define 926 * 3. Update dev->stats asynchronously and atomically, and define
925 * neither operation. 927 * neither operation.
926 * 928 *
929 * bool (*ndo_has_offload_stats)(int attr_id)
930 * Return true if this device supports offload stats of this attr_id.
931 *
932 * int (*ndo_get_offload_stats)(int attr_id, const struct net_device *dev,
933 * void *attr_data)
934 * Get statistics for offload operations by attr_id. Write it into the
935 * attr_data pointer.
936 *
927 * int (*ndo_vlan_rx_add_vid)(struct net_device *dev, __be16 proto, u16 vid); 937 * int (*ndo_vlan_rx_add_vid)(struct net_device *dev, __be16 proto, u16 vid);
928 * If device supports VLAN filtering this function is called when a 938 * If device supports VLAN filtering this function is called when a
929 * VLAN id is registered. 939 * VLAN id is registered.
@@ -936,7 +946,8 @@ struct netdev_xdp {
936 * 946 *
937 * SR-IOV management functions. 947 * SR-IOV management functions.
938 * int (*ndo_set_vf_mac)(struct net_device *dev, int vf, u8* mac); 948 * int (*ndo_set_vf_mac)(struct net_device *dev, int vf, u8* mac);
939 * int (*ndo_set_vf_vlan)(struct net_device *dev, int vf, u16 vlan, u8 qos); 949 * int (*ndo_set_vf_vlan)(struct net_device *dev, int vf, u16 vlan,
950 * u8 qos, __be16 proto);
940 * int (*ndo_set_vf_rate)(struct net_device *dev, int vf, int min_tx_rate, 951 * int (*ndo_set_vf_rate)(struct net_device *dev, int vf, int min_tx_rate,
941 * int max_tx_rate); 952 * int max_tx_rate);
942 * int (*ndo_set_vf_spoofchk)(struct net_device *dev, int vf, bool setting); 953 * int (*ndo_set_vf_spoofchk)(struct net_device *dev, int vf, bool setting);
@@ -1155,6 +1166,10 @@ struct net_device_ops {
1155 1166
1156 struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev, 1167 struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev,
1157 struct rtnl_link_stats64 *storage); 1168 struct rtnl_link_stats64 *storage);
1169 bool (*ndo_has_offload_stats)(int attr_id);
1170 int (*ndo_get_offload_stats)(int attr_id,
1171 const struct net_device *dev,
1172 void *attr_data);
1158 struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); 1173 struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);
1159 1174
1160 int (*ndo_vlan_rx_add_vid)(struct net_device *dev, 1175 int (*ndo_vlan_rx_add_vid)(struct net_device *dev,
@@ -1173,7 +1188,8 @@ struct net_device_ops {
1173 int (*ndo_set_vf_mac)(struct net_device *dev, 1188 int (*ndo_set_vf_mac)(struct net_device *dev,
1174 int queue, u8 *mac); 1189 int queue, u8 *mac);
1175 int (*ndo_set_vf_vlan)(struct net_device *dev, 1190 int (*ndo_set_vf_vlan)(struct net_device *dev,
1176 int queue, u16 vlan, u8 qos); 1191 int queue, u16 vlan,
1192 u8 qos, __be16 proto);
1177 int (*ndo_set_vf_rate)(struct net_device *dev, 1193 int (*ndo_set_vf_rate)(struct net_device *dev,
1178 int vf, int min_tx_rate, 1194 int vf, int min_tx_rate,
1179 int max_tx_rate); 1195 int max_tx_rate);
@@ -3266,6 +3282,7 @@ static inline void napi_free_frags(struct napi_struct *napi)
3266 napi->skb = NULL; 3282 napi->skb = NULL;
3267} 3283}
3268 3284
3285bool netdev_is_rx_handler_busy(struct net_device *dev);
3269int netdev_rx_handler_register(struct net_device *dev, 3286int netdev_rx_handler_register(struct net_device *dev,
3270 rx_handler_func_t *rx_handler, 3287 rx_handler_func_t *rx_handler,
3271 void *rx_handler_data); 3288 void *rx_handler_data);