forked from luck/tmp_suning_uos_patched
net/mlx5e: IPsec/rep_tc: Fix rep_tc_update_skb drops IPsec packet
[ Upstream commit c07274ab1ab2c38fb128e32643c22c89cb319384 ] rep_tc copy REG_C1 to REG_B. IPsec crypto utilizes the whole REG_B register with BIT31 as IPsec marker. rep_tc_update_skb drops IPsec because it thought REG_B contains bad value. In previous patch, BIT 31 of REG_C1 is reserved for IPsec. Skip the rep_tc_update_skb if BIT31 of REG_B is set. Signed-off-by: Huy Nguyen <huyn@nvidia.com> Signed-off-by: Raed Salem <raeds@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
219150485d
commit
62137d1ae5
|
@ -1318,7 +1318,8 @@ static void mlx5e_handle_rx_cqe_rep(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
|
||||||
if (rep->vlan && skb_vlan_tag_present(skb))
|
if (rep->vlan && skb_vlan_tag_present(skb))
|
||||||
skb_vlan_pop(skb);
|
skb_vlan_pop(skb);
|
||||||
|
|
||||||
if (!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv)) {
|
if (unlikely(!mlx5_ipsec_is_rx_flow(cqe) &&
|
||||||
|
!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv))) {
|
||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
goto free_wqe;
|
goto free_wqe;
|
||||||
}
|
}
|
||||||
|
@ -1375,7 +1376,8 @@ static void mlx5e_handle_rx_cqe_mpwrq_rep(struct mlx5e_rq *rq, struct mlx5_cqe64
|
||||||
|
|
||||||
mlx5e_complete_rx_cqe(rq, cqe, cqe_bcnt, skb);
|
mlx5e_complete_rx_cqe(rq, cqe, cqe_bcnt, skb);
|
||||||
|
|
||||||
if (!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv)) {
|
if (unlikely(!mlx5_ipsec_is_rx_flow(cqe) &&
|
||||||
|
!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv))) {
|
||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
goto mpwrq_cqe_out;
|
goto mpwrq_cqe_out;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user