Message ID | 20200328011414.42401-1-xiaoliang.yang_1@nxp.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | [net-next,v1] net: stmmac: support for tc mqprio offload | expand |
On Sat, 28 Mar 2020 09:14:14 +0800 Xiaoliang Yang wrote: > This patch add support for tc mqprio offload to configure multiple > prioritized TX traffic classes with mqprio. > > Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com> > +static int stmmac_tc_setup_mqprio(struct net_device *ndev, void *type_data) > +{ > + struct tc_mqprio_qopt *mqprio = type_data; > + u8 num_tc; > + int i; > + > + num_tc = mqprio->num_tc; num_tc will be set to 0 when root qdisc is change from mqprio to something else, I don't see you handling this. > + netif_set_real_num_tx_queues(ndev, num_tc); > + netdev_set_num_tc(ndev, num_tc); > + for (i = 0; i < num_tc; i++) > + netdev_set_tc_queue(ndev, i, 1, i); So you never configure any hardware? > + return 0; > +} > + > static int stmmac_setup_tc(struct net_device *ndev, enum tc_setup_type type, > void *type_data) > { > @@ -4229,6 +4244,8 @@ static int stmmac_setup_tc(struct net_device *ndev, enum tc_setup_type type, > return stmmac_tc_setup_cbs(priv, priv, type_data); > case TC_SETUP_QDISC_TAPRIO: > return stmmac_tc_setup_taprio(priv, priv, type_data); > + case TC_SETUP_QDISC_MQPRIO: > + return stmmac_tc_setup_mqprio(ndev, type_data); > case TC_SETUP_QDISC_ETF: > return stmmac_tc_setup_etf(priv, priv, type_data); > default:
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 0e8c80f23557..b9dcd109a282 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -4214,6 +4214,21 @@ static int stmmac_setup_tc_block_cb(enum tc_setup_type type, void *type_data, static LIST_HEAD(stmmac_block_cb_list); +static int stmmac_tc_setup_mqprio(struct net_device *ndev, void *type_data) +{ + struct tc_mqprio_qopt *mqprio = type_data; + u8 num_tc; + int i; + + num_tc = mqprio->num_tc; + netif_set_real_num_tx_queues(ndev, num_tc); + netdev_set_num_tc(ndev, num_tc); + for (i = 0; i < num_tc; i++) + netdev_set_tc_queue(ndev, i, 1, i); + + return 0; +} + static int stmmac_setup_tc(struct net_device *ndev, enum tc_setup_type type, void *type_data) { @@ -4229,6 +4244,8 @@ static int stmmac_setup_tc(struct net_device *ndev, enum tc_setup_type type, return stmmac_tc_setup_cbs(priv, priv, type_data); case TC_SETUP_QDISC_TAPRIO: return stmmac_tc_setup_taprio(priv, priv, type_data); + case TC_SETUP_QDISC_MQPRIO: + return stmmac_tc_setup_mqprio(ndev, type_data); case TC_SETUP_QDISC_ETF: return stmmac_tc_setup_etf(priv, priv, type_data); default:
This patch add support for tc mqprio offload to configure multiple prioritized TX traffic classes with mqprio. Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com> --- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)