Skip to content

Commit

Permalink
net: microchip: sparx5: Clear rule counter even if lookup is disabled
Browse files Browse the repository at this point in the history
The rule counter must be cleared when creating a new rule, even if the VCAP
lookup is currently disabled.

This ensures that rules located in VCAPs that use external counters (such
as Sparx5 IS2 and ES0) will have their counter reset even if the VCAP
lookup is not enabled at the moment.

Signed-off-by: Steen Hegelund <[email protected]>
Fixes: 95fa741 ("net: microchip: sparx5: Reset VCAP counter for new rules")
Signed-off-by: Paolo Abeni <[email protected]>
  • Loading branch information
steen-hegelund-mchp authored and Paolo Abeni committed Feb 16, 2023
1 parent 65b6625 commit d7953da
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
7 changes: 5 additions & 2 deletions drivers/net/ethernet/microchip/vcap/vcap_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -2246,6 +2246,11 @@ int vcap_add_rule(struct vcap_rule *rule)
if (move.count > 0)
vcap_move_rules(ri, &move);

/* Set the counter to zero */
ret = vcap_write_counter(ri, &ctr);
if (ret)
goto out;

if (ri->state == VCAP_RS_DISABLED) {
/* Erase the rule area */
ri->vctrl->ops->init(ri->ndev, ri->admin, ri->addr, ri->size);
Expand All @@ -2264,8 +2269,6 @@ int vcap_add_rule(struct vcap_rule *rule)
pr_err("%s:%d: rule write error: %d\n", __func__, __LINE__, ret);
goto out;
}
/* Set the counter to zero */
ret = vcap_write_counter(ri, &ctr);
out:
mutex_unlock(&ri->admin->lock);
return ret;
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
Original file line number Diff line number Diff line change
Expand Up @@ -1337,8 +1337,8 @@ static void vcap_api_encode_rule_test(struct kunit *test)
u32 port_mask_rng_mask = 0x0f;
u32 igr_port_mask_value = 0xffabcd01;
u32 igr_port_mask_mask = ~0;
/* counter is written as the last operation */
u32 expwriteaddr[] = {792, 793, 794, 795, 796, 797, 792};
/* counter is written as the first operation */
u32 expwriteaddr[] = {792, 792, 793, 794, 795, 796, 797};
int idx;

vcap_test_api_init(&is2_admin);
Expand Down

0 comments on commit d7953da

Please sign in to comment.