Patch "net: enetc: correct the indexes of highest and 2nd highest TCs" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: enetc: correct the indexes of highest and 2nd highest TCs

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-enetc-correct-the-indexes-of-highest-and-2nd-hig.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 8710aff3c1e8e2178b728c087294a07baca0ce8f
Author: Wei Fang <wei.fang@xxxxxxx>
Date:   Wed Jun 7 17:10:48 2023 +0800

    net: enetc: correct the indexes of highest and 2nd highest TCs
    
    [ Upstream commit 21225873be1472b7c59ed3650396af0e40578112 ]
    
    For ENETC hardware, the TCs are numbered from 0 to N-1, where N
    is the number of TCs. Numerically higher TC has higher priority.
    It's obvious that the highest priority TC index should be N-1 and
    the 2nd highest priority TC index should be N-2.
    
    However, the previous logic uses netdev_get_prio_tc_map() to get
    the indexes of highest priority and 2nd highest priority TCs, it
    does not make sense and is incorrect to give a "tc" argument to
    netdev_get_prio_tc_map(). So the driver may get the wrong indexes
    of the two highest priotiry TCs which would lead to failed to set
    the CBS for the two highest priotiry TCs.
    
    e.g.
    $ tc qdisc add dev eno0 parent root handle 100: mqprio num_tc 6 \
            map 0 0 1 1 2 3 4 5 queues 1@0 1@1 1@2 1@3 2@4 2@6 hw 1
    $ tc qdisc replace dev eno0 parent 100:6 cbs idleslope 100000 \
            sendslope -900000 hicredit 12 locredit -113 offload 1
    $ Error: Specified device failed to setup cbs hardware offload.
      ^^^^^
    
    In this example, the previous logic deems the indexes of the two
    highest priotiry TCs should be 3 and 2. Actually, the indexes are
    5 and 4, because the number of TCs is 6. So it would be failed to
    configure the CBS for the two highest priority TCs.
    
    Fixes: c431047c4efe ("enetc: add support Credit Based Shaper(CBS) for hardware offload")
    Signed-off-by: Wei Fang <wei.fang@xxxxxxx>
    Reviewed-by: Vladimir Oltean <vladimir.oltean@xxxxxxx>
    Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/freescale/enetc/enetc_qos.c b/drivers/net/ethernet/freescale/enetc/enetc_qos.c
index a8539a8554a13..762849959cc1b 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc_qos.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc_qos.c
@@ -189,8 +189,8 @@ int enetc_setup_tc_cbs(struct net_device *ndev, void *type_data)
 	int bw_sum = 0;
 	u8 bw;
 
-	prio_top = netdev_get_prio_tc_map(ndev, tc_nums - 1);
-	prio_next = netdev_get_prio_tc_map(ndev, tc_nums - 2);
+	prio_top = tc_nums - 1;
+	prio_next = tc_nums - 2;
 
 	/* Support highest prio and second prio tc in cbs mode */
 	if (tc != prio_top && tc != prio_next)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux