Skip to content

Commit 15d187e

Browse files
Lior Nahmansondavem330
authored andcommitted
net/mlx5: Add MACsec Rx tables support to fs_core
Add new namespace for MACsec RX flows. Encrypted MACsec packets should be first decrypted and stripped from MACsec header and then continues with the kernel's steering pipeline. Signed-off-by: Lior Nahmanson <liorna@nvidia.com> Reviewed-by: Raed Salem <raeds@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent aae3454 commit 15d187e

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ static int mlx5_cmd_modify_header_alloc(struct mlx5_flow_root_namespace *ns,
922922
max_actions = MLX5_CAP_ESW_FLOWTABLE_FDB(dev, max_modify_header_actions);
923923
table_type = FS_FT_FDB;
924924
break;
925+
case MLX5_FLOW_NAMESPACE_KERNEL_RX_MACSEC:
925926
case MLX5_FLOW_NAMESPACE_KERNEL:
926927
case MLX5_FLOW_NAMESPACE_BYPASS:
927928
max_actions = MLX5_CAP_FLOWTABLE_NIC_RX(dev, max_modify_header_actions);

drivers/net/ethernet/mellanox/mlx5/core/fs_core.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@
104104
#define BY_PASS_MIN_LEVEL (ETHTOOL_MIN_LEVEL + MLX5_BY_PASS_NUM_PRIOS +\
105105
LEFTOVERS_NUM_PRIOS)
106106

107+
#define KERNEL_RX_MACSEC_NUM_PRIOS 1
108+
#define KERNEL_RX_MACSEC_NUM_LEVELS 2
109+
#define KERNEL_RX_MACSEC_MIN_LEVEL (BY_PASS_MIN_LEVEL + KERNEL_RX_MACSEC_NUM_PRIOS)
110+
107111
#define ETHTOOL_PRIO_NUM_LEVELS 1
108112
#define ETHTOOL_NUM_PRIOS 11
109113
#define ETHTOOL_MIN_LEVEL (KERNEL_MIN_LEVEL + ETHTOOL_NUM_PRIOS)
@@ -126,7 +130,7 @@
126130

127131
#define LAG_PRIO_NUM_LEVELS 1
128132
#define LAG_NUM_PRIOS 1
129-
#define LAG_MIN_LEVEL (OFFLOADS_MIN_LEVEL + 1)
133+
#define LAG_MIN_LEVEL (OFFLOADS_MIN_LEVEL + KERNEL_RX_MACSEC_MIN_LEVEL + 1)
130134

131135
#define KERNEL_TX_IPSEC_NUM_PRIOS 1
132136
#define KERNEL_TX_IPSEC_NUM_LEVELS 1
@@ -153,12 +157,16 @@ static struct init_tree_node {
153157
enum mlx5_flow_table_miss_action def_miss_action;
154158
} root_fs = {
155159
.type = FS_TYPE_NAMESPACE,
156-
.ar_size = 7,
160+
.ar_size = 8,
157161
.children = (struct init_tree_node[]){
158162
ADD_PRIO(0, BY_PASS_MIN_LEVEL, 0, FS_CHAINING_CAPS,
159163
ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
160164
ADD_MULTIPLE_PRIO(MLX5_BY_PASS_NUM_PRIOS,
161165
BY_PASS_PRIO_NUM_LEVELS))),
166+
ADD_PRIO(0, KERNEL_RX_MACSEC_MIN_LEVEL, 0, FS_CHAINING_CAPS,
167+
ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
168+
ADD_MULTIPLE_PRIO(KERNEL_RX_MACSEC_NUM_PRIOS,
169+
KERNEL_RX_MACSEC_NUM_LEVELS))),
162170
ADD_PRIO(0, LAG_MIN_LEVEL, 0, FS_CHAINING_CAPS,
163171
ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
164172
ADD_MULTIPLE_PRIO(LAG_NUM_PRIOS,
@@ -2278,6 +2286,7 @@ static bool is_nic_rx_ns(enum mlx5_flow_namespace_type type)
22782286
{
22792287
switch (type) {
22802288
case MLX5_FLOW_NAMESPACE_BYPASS:
2289+
case MLX5_FLOW_NAMESPACE_KERNEL_RX_MACSEC:
22812290
case MLX5_FLOW_NAMESPACE_LAG:
22822291
case MLX5_FLOW_NAMESPACE_OFFLOADS:
22832292
case MLX5_FLOW_NAMESPACE_ETHTOOL:

include/linux/mlx5/fs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ static inline void build_leftovers_ft_param(int *priority,
7979

8080
enum mlx5_flow_namespace_type {
8181
MLX5_FLOW_NAMESPACE_BYPASS,
82+
MLX5_FLOW_NAMESPACE_KERNEL_RX_MACSEC,
8283
MLX5_FLOW_NAMESPACE_LAG,
8384
MLX5_FLOW_NAMESPACE_OFFLOADS,
8485
MLX5_FLOW_NAMESPACE_ETHTOOL,

0 commit comments

Comments
 (0)