lkml.org 
[lkml]   [2021]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 031/137] net/mlx5e: Check for needed capability for cvlan matching
    Date
    From: Roi Dayan <roid@nvidia.com>

    [ Upstream commit afe93f71b5d3cdae7209213ec8ef25210b837b93 ]

    If not supported show an error and return instead of trying to offload
    to the hardware and fail.

    Fixes: 699e96ddf47f ("net/mlx5e: Support offloading tc double vlan headers match")
    Reported-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 9 +++++++++
    1 file changed, 9 insertions(+)

    diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
    index 1bdeb948f56d..80abdb0b47d7 100644
    --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
    +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
    @@ -2253,11 +2253,13 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
    misc_parameters);
    struct flow_rule *rule = flow_cls_offload_flow_rule(f);
    struct flow_dissector *dissector = rule->match.dissector;
    + enum fs_flow_table_type fs_type;
    u16 addr_type = 0;
    u8 ip_proto = 0;
    u8 *match_level;
    int err;

    + fs_type = mlx5e_is_eswitch_flow(flow) ? FS_FT_FDB : FS_FT_NIC_RX;
    match_level = outer_match_level;

    if (dissector->used_keys &
    @@ -2382,6 +2384,13 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
    if (match.mask->vlan_id ||
    match.mask->vlan_priority ||
    match.mask->vlan_tpid) {
    + if (!MLX5_CAP_FLOWTABLE_TYPE(priv->mdev, ft_field_support.outer_second_vid,
    + fs_type)) {
    + NL_SET_ERR_MSG_MOD(extack,
    + "Matching on CVLAN is not supported");
    + return -EOPNOTSUPP;
    + }
    +
    if (match.key->vlan_tpid == htons(ETH_P_8021AD)) {
    MLX5_SET(fte_match_set_misc, misc_c,
    outer_second_svlan_tag, 1);
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-06-08 21:02    [W:4.164 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site