mlxsw: spectrum_acl: Enable C-TCAM only mode in eRP core
authorIdo Schimmel <idosch@mellanox.com>
Wed, 25 Jul 2018 06:23:56 +0000 (09:23 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 25 Jul 2018 23:46:01 +0000 (16:46 -0700)
Currently, no calls are performed into the eRP core, but in order to
make review easier we would like to gradually add these calls.

Have the eRP core initialize a region's master mask to all ones and
allow it to use an empty eRP table. This directs the lookup to the
C-TCAM and allows the C-TCAM only mode to continue working.

Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c

index 960f29140b4389254f90726684adf13ffbaf5423..86600c780c9519421df402a9a4b4ade474e5dcbb 100644 (file)
@@ -879,7 +879,7 @@ mlxsw_sp_acl_erp_region_param_init(struct mlxsw_sp_acl_atcam_region *aregion)
        struct mlxsw_sp *mlxsw_sp = aregion->region->mlxsw_sp;
        char pererp_pl[MLXSW_REG_PERERP_LEN];
 
-       mlxsw_reg_pererp_pack(pererp_pl, aregion->region->id, false, false, 0,
+       mlxsw_reg_pererp_pack(pererp_pl, aregion->region->id, true, true, 0,
                              0, 0);
        return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(pererp), pererp_pl);
 }
@@ -894,12 +894,16 @@ int mlxsw_sp_acl_erp_region_init(struct mlxsw_sp_acl_atcam_region *aregion)
                return PTR_ERR(erp_table);
        aregion->erp_table = erp_table;
 
-       /* Initialize the region's master mask to all zeroes */
+       /* Initialize the region's master mask to all ones for C-TCAM
+        * only mode
+        */
        err = mlxsw_sp_acl_erp_master_mask_init(aregion);
        if (err)
                goto err_erp_master_mask_init;
 
-       /* Initialize the region to not use the eRP table */
+       /* Initialize the region to use the eRP table and enable C-TCAM
+        * lookup
+        */
        err = mlxsw_sp_acl_erp_region_param_init(aregion);
        if (err)
                goto err_erp_region_param_init;