Skip to content

Commit

Permalink
net: microchip: sparx5: Add actionset type id information to rule
Browse files Browse the repository at this point in the history
This adds the actionset type id to the rule information.  This is needed as
we now have more than one actionset in a VCAP instance (IS0).

Signed-off-by: Steen Hegelund <[email protected]>
Signed-off-by: Paolo Abeni <[email protected]>
  • Loading branch information
steen-hegelund-mchp authored and Paolo Abeni committed Jan 26, 2023
1 parent 545609f commit 7306fcd
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions drivers/net/ethernet/microchip/vcap/vcap_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -1673,6 +1673,39 @@ static int vcap_add_type_keyfield(struct vcap_rule *rule)
return 0;
}

/* Add the actionset typefield to the list of rule actionfields */
static int vcap_add_type_actionfield(struct vcap_rule *rule)
{
enum vcap_actionfield_set actionset = rule->actionset;
struct vcap_rule_internal *ri = to_intrule(rule);
enum vcap_type vt = ri->admin->vtype;
const struct vcap_field *fields;
const struct vcap_set *aset;
int ret = -EINVAL;

aset = vcap_actionfieldset(ri->vctrl, vt, actionset);
if (!aset)
return ret;
if (aset->type_id == (u8)-1) /* No type field is needed */
return 0;

fields = vcap_actionfields(ri->vctrl, vt, actionset);
if (!fields)
return -EINVAL;
if (fields[VCAP_AF_TYPE].width > 1) {
ret = vcap_rule_add_action_u32(rule, VCAP_AF_TYPE,
aset->type_id);
} else {
if (aset->type_id)
ret = vcap_rule_add_action_bit(rule, VCAP_AF_TYPE,
VCAP_BIT_1);
else
ret = vcap_rule_add_action_bit(rule, VCAP_AF_TYPE,
VCAP_BIT_0);
}
return ret;
}

/* Add a keyset to a keyset list */
bool vcap_keyset_list_add(struct vcap_keyset_list *keysetlist,
enum vcap_keyfield_set keyset)
Expand Down Expand Up @@ -1856,6 +1889,7 @@ int vcap_val_rule(struct vcap_rule *rule, u16 l3_proto)
return -EINVAL;
}
vcap_add_type_keyfield(rule);
vcap_add_type_actionfield(rule);
/* Add default fields to this rule */
ri->vctrl->ops->add_default_fields(ri->ndev, ri->admin, rule);

Expand Down

0 comments on commit 7306fcd

Please sign in to comment.