diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2021-03-08 10:11:33 -0300 | 
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2021-03-08 10:11:33 -0300 | 
| commit | 009ef05f98129aa91c62c3baab859ba593a15bb2 (patch) | |
| tree | f3414f08d636a597545b1e4f443b373b9d6d8f4b /include/linux/netdevice.h | |
| parent | 2777b81b379df772defd654bc4d3fa82dca17a4b (diff) | |
| parent | 144c79ef33536b4ecb4951e07dbc1f2b7fa99d32 (diff) | |
Merge remote-tracking branch 'torvalds/master' into perf/core
To pick up the fixes sent for v5.12 and continue development based on
v5.12-rc2, i.e. without the swap on file bug.
This also gets a slightly newer and better tools/perf/arch/arm/util/cs-etm.c
patch version, using the BIT() macro, that had already been slated to
v5.13 but ended up going to v5.12-rc1 on an older version.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'include/linux/netdevice.h')
| -rw-r--r-- | include/linux/netdevice.h | 34 | 
1 files changed, 33 insertions, 1 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ddf4cfc12615..f06fbee8638e 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1584,6 +1584,12 @@ enum netdev_priv_flags {  #define IFF_L3MDEV_RX_HANDLER		IFF_L3MDEV_RX_HANDLER  #define IFF_LIVE_RENAME_OK		IFF_LIVE_RENAME_OK +/* Specifies the type of the struct net_device::ml_priv pointer */ +enum netdev_ml_priv_type { +	ML_PRIV_NONE, +	ML_PRIV_CAN, +}; +  /**   *	struct net_device - The DEVICE structure.   * @@ -1779,6 +1785,7 @@ enum netdev_priv_flags {   * 	@nd_net:		Network namespace this network device is inside   *   * 	@ml_priv:	Mid-layer private + *	@ml_priv_type:  Mid-layer private type   * 	@lstats:	Loopback statistics   * 	@tstats:	Tunnel statistics   * 	@dstats:	Dummy statistics @@ -2094,8 +2101,10 @@ struct net_device {  	possible_net_t			nd_net;  	/* mid-layer private */ +	void				*ml_priv; +	enum netdev_ml_priv_type	ml_priv_type; +  	union { -		void					*ml_priv;  		struct pcpu_lstats __percpu		*lstats;  		struct pcpu_sw_netstats __percpu	*tstats;  		struct pcpu_dstats __percpu		*dstats; @@ -2286,6 +2295,29 @@ static inline void netdev_reset_rx_headroom(struct net_device *dev)  	netdev_set_rx_headroom(dev, -1);  } +static inline void *netdev_get_ml_priv(struct net_device *dev, +				       enum netdev_ml_priv_type type) +{ +	if (dev->ml_priv_type != type) +		return NULL; + +	return dev->ml_priv; +} + +static inline void netdev_set_ml_priv(struct net_device *dev, +				      void *ml_priv, +				      enum netdev_ml_priv_type type) +{ +	WARN(dev->ml_priv_type && dev->ml_priv_type != type, +	     "Overwriting already set ml_priv_type (%u) with different ml_priv_type (%u)!\n", +	     dev->ml_priv_type, type); +	WARN(!dev->ml_priv_type && dev->ml_priv, +	     "Overwriting already set ml_priv and ml_priv_type is ML_PRIV_NONE!\n"); + +	dev->ml_priv = ml_priv; +	dev->ml_priv_type = type; +} +  /*   * Net namespace inlines   */  | 
