diff options
author | Daniel Machon <daniel.machon@microchip.com> | 2024-04-05 09:44:49 +0200 |
---|---|---|
committer | Paolo Abeni <pabeni@redhat.com> | 2024-04-09 10:45:10 +0200 |
commit | 48ba00da2eb4b54a7e6ed2ca3a9f2e575dff48c9 (patch) | |
tree | 3058cd3a6d7e0942aaa324f13c161f2983bc04a3 /drivers/net/ethernet/microchip/vcap/vcap_api.c | |
parent | 74bd5dbe1b9197b217bb44e4ae5f745307b566ee (diff) | |
download | linux-48ba00da2eb4b54a7e6ed2ca3a9f2e575dff48c9.tar.gz linux-48ba00da2eb4b54a7e6ed2ca3a9f2e575dff48c9.tar.bz2 linux-48ba00da2eb4b54a7e6ed2ca3a9f2e575dff48c9.zip |
net: sparx5: add support for tc flower mirred action.
Add support for tc flower mirred action. Two VCAP actions are encoded in
the rule - one for the port mask, and one for the port mask mode. When
the rule is hit, the destination mask is OR'ed with the port mask.
Also add new VCAP function for supporting 72-bit wide actions, and a tc
helper for setting the port forwarding mask.
Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'drivers/net/ethernet/microchip/vcap/vcap_api.c')
-rw-r--r-- | drivers/net/ethernet/microchip/vcap/vcap_api.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/ethernet/microchip/vcap/vcap_api.c b/drivers/net/ethernet/microchip/vcap/vcap_api.c index ef980e4e5bc2..80ae5e1708a6 100644 --- a/drivers/net/ethernet/microchip/vcap/vcap_api.c +++ b/drivers/net/ethernet/microchip/vcap/vcap_api.c @@ -2907,6 +2907,18 @@ int vcap_rule_add_action_u32(struct vcap_rule *rule, } EXPORT_SYMBOL_GPL(vcap_rule_add_action_u32); +/* Add a 72 bit action field with value to the rule */ +int vcap_rule_add_action_u72(struct vcap_rule *rule, + enum vcap_action_field action, + struct vcap_u72_action *fieldval) +{ + struct vcap_client_actionfield_data data; + + memcpy(&data.u72, fieldval, sizeof(data.u72)); + return vcap_rule_add_action(rule, action, VCAP_FIELD_U72, &data); +} +EXPORT_SYMBOL_GPL(vcap_rule_add_action_u72); + static int vcap_read_counter(struct vcap_rule_internal *ri, struct vcap_counter *ctr) { |