diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2018-06-22 21:20:35 +0200 | 
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2018-06-22 21:20:35 +0200 | 
| commit | 7731b8bc94e599c9a79e428f3359ff2c34b7576a (patch) | |
| tree | 879f18ccbe274122f2d4f095b43cbc7f953e0ada /include/linux/net_dim.h | |
| parent | 48e315618dc4dc8904182cd221e3d395d5d97005 (diff) | |
| parent | 9ffc59d57228d74809700be6f7ecb1db10292f05 (diff) | |
Merge branch 'linus' into x86/urgent
Required to queue a dependent fix.
Diffstat (limited to 'include/linux/net_dim.h')
| -rw-r--r-- | include/linux/net_dim.h | 69 | 
1 files changed, 53 insertions, 16 deletions
diff --git a/include/linux/net_dim.h b/include/linux/net_dim.h index 29ed8fd6379a..db99240d00bd 100644 --- a/include/linux/net_dim.h +++ b/include/linux/net_dim.h @@ -103,11 +103,12 @@ enum {  #define NET_DIM_PARAMS_NUM_PROFILES 5  /* Adaptive moderation profiles */  #define NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE 256 +#define NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE 128  #define NET_DIM_DEF_PROFILE_CQE 1  #define NET_DIM_DEF_PROFILE_EQE 1  /* All profiles sizes must be NET_PARAMS_DIM_NUM_PROFILES */ -#define NET_DIM_EQE_PROFILES { \ +#define NET_DIM_RX_EQE_PROFILES { \  	{1,   NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \  	{8,   NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \  	{64,  NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \ @@ -115,7 +116,7 @@ enum {  	{256, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \  } -#define NET_DIM_CQE_PROFILES { \ +#define NET_DIM_RX_CQE_PROFILES { \  	{2,  256},             \  	{8,  128},             \  	{16, 64},              \ @@ -123,32 +124,68 @@ enum {  	{64, 64}               \  } +#define NET_DIM_TX_EQE_PROFILES { \ +	{1,   NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE},  \ +	{8,   NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE},  \ +	{32,  NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE},  \ +	{64,  NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE},  \ +	{128, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE}   \ +} + +#define NET_DIM_TX_CQE_PROFILES { \ +	{5,  128},  \ +	{8,  64},  \ +	{16, 32},  \ +	{32, 32},  \ +	{64, 32}   \ +} +  static const struct net_dim_cq_moder -profile[NET_DIM_CQ_PERIOD_NUM_MODES][NET_DIM_PARAMS_NUM_PROFILES] = { -	NET_DIM_EQE_PROFILES, -	NET_DIM_CQE_PROFILES, +rx_profile[NET_DIM_CQ_PERIOD_NUM_MODES][NET_DIM_PARAMS_NUM_PROFILES] = { +	NET_DIM_RX_EQE_PROFILES, +	NET_DIM_RX_CQE_PROFILES,  }; -static inline struct net_dim_cq_moder net_dim_get_profile(u8 cq_period_mode, -							  int ix) +static const struct net_dim_cq_moder +tx_profile[NET_DIM_CQ_PERIOD_NUM_MODES][NET_DIM_PARAMS_NUM_PROFILES] = { +	NET_DIM_TX_EQE_PROFILES, +	NET_DIM_TX_CQE_PROFILES, +}; + +static inline struct net_dim_cq_moder +net_dim_get_rx_moderation(u8 cq_period_mode, int ix)  { -	struct net_dim_cq_moder cq_moder; +	struct net_dim_cq_moder cq_moder = rx_profile[cq_period_mode][ix]; -	cq_moder = profile[cq_period_mode][ix];  	cq_moder.cq_period_mode = cq_period_mode;  	return cq_moder;  } -static inline struct net_dim_cq_moder net_dim_get_def_profile(u8 rx_cq_period_mode) +static inline struct net_dim_cq_moder +net_dim_get_def_rx_moderation(u8 cq_period_mode) +{ +	u8 profile_ix = cq_period_mode == NET_DIM_CQ_PERIOD_MODE_START_FROM_CQE ? +			NET_DIM_DEF_PROFILE_CQE : NET_DIM_DEF_PROFILE_EQE; + +	return net_dim_get_rx_moderation(cq_period_mode, profile_ix); +} + +static inline struct net_dim_cq_moder +net_dim_get_tx_moderation(u8 cq_period_mode, int ix)  { -	int default_profile_ix; +	struct net_dim_cq_moder cq_moder = tx_profile[cq_period_mode][ix]; + +	cq_moder.cq_period_mode = cq_period_mode; +	return cq_moder; +} -	if (rx_cq_period_mode == NET_DIM_CQ_PERIOD_MODE_START_FROM_CQE) -		default_profile_ix = NET_DIM_DEF_PROFILE_CQE; -	else /* NET_DIM_CQ_PERIOD_MODE_START_FROM_EQE */ -		default_profile_ix = NET_DIM_DEF_PROFILE_EQE; +static inline struct net_dim_cq_moder +net_dim_get_def_tx_moderation(u8 cq_period_mode) +{ +	u8 profile_ix = cq_period_mode == NET_DIM_CQ_PERIOD_MODE_START_FROM_CQE ? +			NET_DIM_DEF_PROFILE_CQE : NET_DIM_DEF_PROFILE_EQE; -	return net_dim_get_profile(rx_cq_period_mode, default_profile_ix); +	return net_dim_get_tx_moderation(cq_period_mode, profile_ix);  }  static inline bool net_dim_on_top(struct net_dim *dim)  | 
