net: mscc: ocelot: don't use magic numbers for OCELOT_POLICER_DISCARD
OCELOT_POLICER_DISCARD helps "kill dropped packets dead" since a PERMIT/DENY mask mode with a port mask of 0 isn't enough to stop the CPU port from receiving packets removed from the forwarding path. The hardcoded initialization done for it in ocelot_vcap_init() is confusing. All we need from it is to have a rate and a burst size of 0. Reuse qos_policer_conf_set() for that purpose. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
8e90c499bd
commit
91d350d661
@ -1394,22 +1394,18 @@ static void ocelot_vcap_detect_constants(struct ocelot *ocelot,
|
||||
|
||||
int ocelot_vcap_init(struct ocelot *ocelot)
|
||||
{
|
||||
int i;
|
||||
struct qos_policer_conf cpu_drop = {
|
||||
.mode = MSCC_QOS_RATE_MODE_DATA,
|
||||
};
|
||||
int ret, i;
|
||||
|
||||
/* Create a policer that will drop the frames for the cpu.
|
||||
* This policer will be used as action in the acl rules to drop
|
||||
* frames.
|
||||
*/
|
||||
ocelot_write_gix(ocelot, 0x299, ANA_POL_MODE_CFG,
|
||||
OCELOT_POLICER_DISCARD);
|
||||
ocelot_write_gix(ocelot, 0x1, ANA_POL_PIR_CFG,
|
||||
OCELOT_POLICER_DISCARD);
|
||||
ocelot_write_gix(ocelot, 0x3fffff, ANA_POL_PIR_STATE,
|
||||
OCELOT_POLICER_DISCARD);
|
||||
ocelot_write_gix(ocelot, 0x0, ANA_POL_CIR_CFG,
|
||||
OCELOT_POLICER_DISCARD);
|
||||
ocelot_write_gix(ocelot, 0x3fffff, ANA_POL_CIR_STATE,
|
||||
OCELOT_POLICER_DISCARD);
|
||||
ret = qos_policer_conf_set(ocelot, OCELOT_POLICER_DISCARD, &cpu_drop);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
for (i = 0; i < OCELOT_NUM_VCAP_BLOCKS; i++) {
|
||||
struct ocelot_vcap_block *block = &ocelot->block[i];
|
||||
|
Loading…
x
Reference in New Issue
Block a user