diff options
Diffstat (limited to 'lib/dim/net_dim.c')
-rw-r--r-- | lib/dim/net_dim.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/dim/net_dim.c b/lib/dim/net_dim.c index 5bcc902c5388..a4db51c21266 100644 --- a/lib/dim/net_dim.c +++ b/lib/dim/net_dim.c | |||
@@ -5,6 +5,62 @@ | |||
5 | 5 | ||
6 | #include <linux/dim.h> | 6 | #include <linux/dim.h> |
7 | 7 | ||
8 | /* | ||
9 | * Net DIM profiles: | ||
10 | * There are different set of profiles for each CQ period mode. | ||
11 | * There are different set of profiles for RX/TX CQs. | ||
12 | * Each profile size must be of NET_DIM_PARAMS_NUM_PROFILES | ||
13 | */ | ||
14 | #define NET_DIM_PARAMS_NUM_PROFILES 5 | ||
15 | #define NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE 256 | ||
16 | #define NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE 128 | ||
17 | #define NET_DIM_DEF_PROFILE_CQE 1 | ||
18 | #define NET_DIM_DEF_PROFILE_EQE 1 | ||
19 | |||
20 | #define NET_DIM_RX_EQE_PROFILES { \ | ||
21 | {1, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \ | ||
22 | {8, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \ | ||
23 | {64, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \ | ||
24 | {128, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \ | ||
25 | {256, NET_DIM_DEFAULT_RX_CQ_MODERATION_PKTS_FROM_EQE}, \ | ||
26 | } | ||
27 | |||
28 | #define NET_DIM_RX_CQE_PROFILES { \ | ||
29 | {2, 256}, \ | ||
30 | {8, 128}, \ | ||
31 | {16, 64}, \ | ||
32 | {32, 64}, \ | ||
33 | {64, 64} \ | ||
34 | } | ||
35 | |||
36 | #define NET_DIM_TX_EQE_PROFILES { \ | ||
37 | {1, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE}, \ | ||
38 | {8, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE}, \ | ||
39 | {32, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE}, \ | ||
40 | {64, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE}, \ | ||
41 | {128, NET_DIM_DEFAULT_TX_CQ_MODERATION_PKTS_FROM_EQE} \ | ||
42 | } | ||
43 | |||
44 | #define NET_DIM_TX_CQE_PROFILES { \ | ||
45 | {5, 128}, \ | ||
46 | {8, 64}, \ | ||
47 | {16, 32}, \ | ||
48 | {32, 32}, \ | ||
49 | {64, 32} \ | ||
50 | } | ||
51 | |||
52 | static const struct dim_cq_moder | ||
53 | rx_profile[DIM_CQ_PERIOD_NUM_MODES][NET_DIM_PARAMS_NUM_PROFILES] = { | ||
54 | NET_DIM_RX_EQE_PROFILES, | ||
55 | NET_DIM_RX_CQE_PROFILES, | ||
56 | }; | ||
57 | |||
58 | static const struct dim_cq_moder | ||
59 | tx_profile[DIM_CQ_PERIOD_NUM_MODES][NET_DIM_PARAMS_NUM_PROFILES] = { | ||
60 | NET_DIM_TX_EQE_PROFILES, | ||
61 | NET_DIM_TX_CQE_PROFILES, | ||
62 | }; | ||
63 | |||
8 | struct dim_cq_moder | 64 | struct dim_cq_moder |
9 | net_dim_get_rx_moderation(u8 cq_period_mode, int ix) | 65 | net_dim_get_rx_moderation(u8 cq_period_mode, int ix) |
10 | { | 66 | { |