lkml.org 
[lkml]   [2022]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 008/102] net: mscc: ocelot: restrict tc-trap actions to VCAP IS2 lookup 0
    Date
    From: Vladimir Oltean <vladimir.oltean@nxp.com>

    [ Upstream commit 477d2b91623e682e9a8126ea92acb8f684969cc7 ]

    Once the CPU port was added to the destination port mask of a packet, it
    can never be cleared, so even packets marked as dropped by the MASK_MODE
    of a VCAP IS2 filter will still reach it. This is why we need the
    OCELOT_POLICER_DISCARD to "kill dropped packets dead" and make software
    stop seeing them.

    We disallow policer rules from being put on any other chain than the one
    for the first lookup, but we don't do this for "drop" rules, although we
    should. This change is merely ascertaining that the rules dont't
    (completely) work and letting the user know.

    The blamed commit is the one that introduced the multi-chain architecture
    in ocelot. Prior to that, we should have always offloaded the filters to
    VCAP IS2 lookup 0, where they did work.

    Fixes: 1397a2eb52e2 ("net: mscc: ocelot: create TCAM skeleton from tc filter chains")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/mscc/ocelot_flower.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/drivers/net/ethernet/mscc/ocelot_flower.c b/drivers/net/ethernet/mscc/ocelot_flower.c
    index f1323af99b0c..a3a5ad5dbb0e 100644
    --- a/drivers/net/ethernet/mscc/ocelot_flower.c
    +++ b/drivers/net/ethernet/mscc/ocelot_flower.c
    @@ -206,9 +206,10 @@ static int ocelot_flower_parse_action(struct ocelot *ocelot, int port,
    filter->type = OCELOT_VCAP_FILTER_OFFLOAD;
    break;
    case FLOW_ACTION_TRAP:
    - if (filter->block_id != VCAP_IS2) {
    + if (filter->block_id != VCAP_IS2 ||
    + filter->lookup != 0) {
    NL_SET_ERR_MSG_MOD(extack,
    - "Trap action can only be offloaded to VCAP IS2");
    + "Trap action can only be offloaded to VCAP IS2 lookup 0");
    return -EOPNOTSUPP;
    }
    if (filter->goto_target != -1) {
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-05-16 22:26    [W:6.961 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site