diff options
Diffstat (limited to 'include/linux/netdevice.h')
| -rw-r--r-- | include/linux/netdevice.h | 20 | 
1 files changed, 11 insertions, 9 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index c31f74d76ebd..679e6e90aa4c 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1012,12 +1012,15 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev,   *	Callback to use for xmit over the accelerated station. This   *	is used in place of ndo_start_xmit on accelerated net   *	devices. - * bool	(*ndo_gso_check) (struct sk_buff *skb, - *			  struct net_device *dev); + * netdev_features_t (*ndo_features_check) (struct sk_buff *skb, + *					    struct net_device *dev + *					    netdev_features_t features);   *	Called by core transmit path to determine if device is capable of - *	performing GSO on a packet. The device returns true if it is - *	able to GSO the packet, false otherwise. If the return value is - *	false the stack will do software GSO. + *	performing offload operations on a given packet. This is to give + *	the device an opportunity to implement any restrictions that cannot + *	be otherwise expressed by feature flags. The check is called with + *	the set of features that the stack has calculated and it returns + *	those the driver believes to be appropriate.   *   * int (*ndo_switch_parent_id_get)(struct net_device *dev,   *				   struct netdev_phys_item_id *psid); @@ -1178,8 +1181,9 @@ struct net_device_ops {  							struct net_device *dev,  							void *priv);  	int			(*ndo_get_lock_subclass)(struct net_device *dev); -	bool			(*ndo_gso_check) (struct sk_buff *skb, -						  struct net_device *dev); +	netdev_features_t	(*ndo_features_check) (struct sk_buff *skb, +						       struct net_device *dev, +						       netdev_features_t features);  #ifdef CONFIG_NET_SWITCHDEV  	int			(*ndo_switch_parent_id_get)(struct net_device *dev,  							    struct netdev_phys_item_id *psid); @@ -3611,8 +3615,6 @@ static inline bool netif_needs_gso(struct net_device *dev, struct sk_buff *skb,  				   netdev_features_t features)  {  	return skb_is_gso(skb) && (!skb_gso_ok(skb, features) || -		(dev->netdev_ops->ndo_gso_check && -		 !dev->netdev_ops->ndo_gso_check(skb, dev)) ||  		unlikely((skb->ip_summed != CHECKSUM_PARTIAL) &&  			 (skb->ip_summed != CHECKSUM_UNNECESSARY)));  }  |