diff options
author | Horatiu Vultur <horatiu.vultur@microchip.com> | 2022-09-25 20:46:33 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-09-28 09:36:28 +0100 |
commit | 29aaf3d40e0184ceafcda3b56c0af1ceb4d52aa4 (patch) | |
tree | db5d9a424ca8324c8c8ad388cf278b1da5e17393 /drivers/net/ethernet/microchip/lan966x/lan966x_tc.c | |
parent | 21ce14a8e71ca0c73090592fe4a99d76e425ef98 (diff) |
net: lan966x: Add offload support for ets
Add ets qdisc which allows to mix strict priority with bandwidth-sharing
bands. The ets qdisc needs to be attached as root qdisc.
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/microchip/lan966x/lan966x_tc.c')
-rw-r--r-- | drivers/net/ethernet/microchip/lan966x/lan966x_tc.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_tc.c b/drivers/net/ethernet/microchip/lan966x/lan966x_tc.c index 4b05535c9e02..336eb7ee0d60 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_tc.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_tc.c @@ -44,6 +44,21 @@ static int lan966x_tc_setup_qdisc_cbs(struct lan966x_port *port, lan966x_cbs_del(port, qopt); } +static int lan966x_tc_setup_qdisc_ets(struct lan966x_port *port, + struct tc_ets_qopt_offload *qopt) +{ + switch (qopt->command) { + case TC_ETS_REPLACE: + return lan966x_ets_add(port, qopt); + case TC_ETS_DESTROY: + return lan966x_ets_del(port, qopt); + default: + return -EOPNOTSUPP; + }; + + return -EOPNOTSUPP; +} + int lan966x_tc_setup(struct net_device *dev, enum tc_setup_type type, void *type_data) { @@ -58,6 +73,8 @@ int lan966x_tc_setup(struct net_device *dev, enum tc_setup_type type, return lan966x_tc_setup_qdisc_tbf(port, type_data); case TC_SETUP_QDISC_CBS: return lan966x_tc_setup_qdisc_cbs(port, type_data); + case TC_SETUP_QDISC_ETS: + return lan966x_tc_setup_qdisc_ets(port, type_data); default: return -EOPNOTSUPP; } |