aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/netdevice.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r--include/linux/netdevice.h36
1 files changed, 35 insertions, 1 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index b6f6efbcfc74..15fa01c9a3bf 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -962,6 +962,25 @@ struct netdev_phys_port_id {
962 * Called by vxlan to notify the driver about a UDP port and socket 962 * Called by vxlan to notify the driver about a UDP port and socket
963 * address family that vxlan is not listening to anymore. The operation 963 * address family that vxlan is not listening to anymore. The operation
964 * is protected by the vxlan_net->sock_lock. 964 * is protected by the vxlan_net->sock_lock.
965 *
966 * void* (*ndo_dfwd_add_station)(struct net_device *pdev,
967 * struct net_device *dev)
968 * Called by upper layer devices to accelerate switching or other
969 * station functionality into hardware. 'pdev is the lowerdev
970 * to use for the offload and 'dev' is the net device that will
971 * back the offload. Returns a pointer to the private structure
972 * the upper layer will maintain.
973 * void (*ndo_dfwd_del_station)(struct net_device *pdev, void *priv)
974 * Called by upper layer device to delete the station created
975 * by 'ndo_dfwd_add_station'. 'pdev' is the net device backing
976 * the station and priv is the structure returned by the add
977 * operation.
978 * netdev_tx_t (*ndo_dfwd_start_xmit)(struct sk_buff *skb,
979 * struct net_device *dev,
980 * void *priv);
981 * Callback to use for xmit over the accelerated station. This
982 * is used in place of ndo_start_xmit on accelerated net
983 * devices.
965 */ 984 */
966struct net_device_ops { 985struct net_device_ops {
967 int (*ndo_init)(struct net_device *dev); 986 int (*ndo_init)(struct net_device *dev);
@@ -1098,6 +1117,15 @@ struct net_device_ops {
1098 void (*ndo_del_vxlan_port)(struct net_device *dev, 1117 void (*ndo_del_vxlan_port)(struct net_device *dev,
1099 sa_family_t sa_family, 1118 sa_family_t sa_family,
1100 __be16 port); 1119 __be16 port);
1120
1121 void* (*ndo_dfwd_add_station)(struct net_device *pdev,
1122 struct net_device *dev);
1123 void (*ndo_dfwd_del_station)(struct net_device *pdev,
1124 void *priv);
1125
1126 netdev_tx_t (*ndo_dfwd_start_xmit) (struct sk_buff *skb,
1127 struct net_device *dev,
1128 void *priv);
1101}; 1129};
1102 1130
1103/* 1131/*
@@ -1195,6 +1223,7 @@ struct net_device {
1195 /* Management operations */ 1223 /* Management operations */
1196 const struct net_device_ops *netdev_ops; 1224 const struct net_device_ops *netdev_ops;
1197 const struct ethtool_ops *ethtool_ops; 1225 const struct ethtool_ops *ethtool_ops;
1226 const struct forwarding_accel_ops *fwd_ops;
1198 1227
1199 /* Hardware header description */ 1228 /* Hardware header description */
1200 const struct header_ops *header_ops; 1229 const struct header_ops *header_ops;
@@ -2388,7 +2417,7 @@ int dev_change_carrier(struct net_device *, bool new_carrier);
2388int dev_get_phys_port_id(struct net_device *dev, 2417int dev_get_phys_port_id(struct net_device *dev,
2389 struct netdev_phys_port_id *ppid); 2418 struct netdev_phys_port_id *ppid);
2390int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev, 2419int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
2391 struct netdev_queue *txq); 2420 struct netdev_queue *txq, void *accel_priv);
2392int dev_forward_skb(struct net_device *dev, struct sk_buff *skb); 2421int dev_forward_skb(struct net_device *dev, struct sk_buff *skb);
2393 2422
2394extern int netdev_budget; 2423extern int netdev_budget;
@@ -2967,6 +2996,11 @@ static inline void netif_set_gso_max_size(struct net_device *dev,
2967 dev->gso_max_size = size; 2996 dev->gso_max_size = size;
2968} 2997}
2969 2998
2999static inline bool netif_is_macvlan(struct net_device *dev)
3000{
3001 return dev->priv_flags & IFF_MACVLAN;
3002}
3003
2970static inline bool netif_is_bond_master(struct net_device *dev) 3004static inline bool netif_is_bond_master(struct net_device *dev)
2971{ 3005{
2972 return dev->flags & IFF_MASTER && dev->priv_flags & IFF_BONDING; 3006 return dev->flags & IFF_MASTER && dev->priv_flags & IFF_BONDING;