net/mlx5e: Support IPsec upper protocol selector field offload for RX
Support RX policy/state upper protocol selector field offload, to enable selecting RX traffic for IPsec operation based on l4 protocol UDP with specific source/destination port. Signed-off-by: Emeel Hakim <ehakim@nvidia.com> Reviewed-by: Raed Salem <raeds@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
committed by
Saeed Mahameed
parent
7d8335200c
commit
c338325f7a
@@ -440,9 +440,8 @@ static int mlx5e_xfrm_validate_state(struct mlx5_core_dev *mdev,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (x->sel.proto != IPPROTO_IP &&
|
||||
(x->sel.proto != IPPROTO_UDP || x->xso.dir != XFRM_DEV_OFFLOAD_OUT)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Device does not support upper protocol other than UDP, and only Tx direction");
|
||||
if (x->sel.proto != IPPROTO_IP && x->sel.proto != IPPROTO_UDP) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Device does not support upper protocol other than UDP");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -983,9 +982,8 @@ static int mlx5e_xfrm_validate_policy(struct mlx5_core_dev *mdev,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (sel->proto != IPPROTO_IP &&
|
||||
(sel->proto != IPPROTO_UDP || x->xdo.dir != XFRM_DEV_OFFLOAD_OUT)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Device does not support upper protocol other than UDP, and only Tx direction");
|
||||
if (x->selector.proto != IPPROTO_IP && x->selector.proto != IPPROTO_UDP) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Device does not support upper protocol other than UDP");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
@@ -1243,6 +1243,7 @@ static int rx_add_rule(struct mlx5e_ipsec_sa_entry *sa_entry)
|
||||
setup_fte_spi(spec, attrs->spi);
|
||||
setup_fte_esp(spec);
|
||||
setup_fte_no_frags(spec);
|
||||
setup_fte_upper_proto_match(spec, &attrs->upspec);
|
||||
|
||||
if (rx != ipsec->rx_esw)
|
||||
err = setup_modify_header(ipsec, attrs->type,
|
||||
@@ -1519,6 +1520,7 @@ static int rx_add_policy(struct mlx5e_ipsec_pol_entry *pol_entry)
|
||||
setup_fte_addr6(spec, attrs->saddr.a6, attrs->daddr.a6);
|
||||
|
||||
setup_fte_no_frags(spec);
|
||||
setup_fte_upper_proto_match(spec, &attrs->upspec);
|
||||
|
||||
switch (attrs->action) {
|
||||
case XFRM_POLICY_ALLOW:
|
||||
|
||||
Reference in New Issue
Block a user