net: ethernet: ti: am65-cpsw: update pri_thread_map as per IEEE802.1Q-2014
authorRoger Quadros <rogerq@kernel.org>
Thu, 14 Nov 2024 13:36:52 +0000 (15:36 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Nov 2024 12:00:21 +0000 (12:00 +0000)
IEEE802.1Q-2014 supersedes IEEE802.1D-2004. Now Priority Code Point (PCP)
2 is no longer at a lower priority than PCP 0. PCP 1 (Background) is still
at a lower priority than PCP 0 (Best Effort).

Reference:
IEEE802.1Q-2014, Standard for Local and metropolitan area networks
  Table I-2 - Traffic type acronyms
  Table I-3 - Defining traffic types

Signed-off-by: Roger Quadros <rogerq@kernel.org>
Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
Reviewed-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ti/cpsw_ale.c

index d361caa..52e4e35 100644 (file)
@@ -1704,26 +1704,34 @@ static void cpsw_ale_policer_reset(struct cpsw_ale *ale)
 void cpsw_ale_classifier_setup_default(struct cpsw_ale *ale, int num_rx_ch)
 {
        int pri, idx;
-       /* IEEE802.1D-2004, Standard for Local and metropolitan area networks
-        *    Table G-2 - Traffic type acronyms
-        *    Table G-3 - Defining traffic types
-        * User priority values 1 and 2 effectively communicate a lower
-        * priority than 0. In the below table 0 is assigned to higher priority
-        * thread than 1 and 2 wherever possible.
-        * The below table maps which thread the user priority needs to be
+
+       /* Reference:
+        * IEEE802.1Q-2014, Standard for Local and metropolitan area networks
+        *    Table I-2 - Traffic type acronyms
+        *    Table I-3 - Defining traffic types
+        * Section I.4 Traffic types and priority values, states:
+        * "0 is thus used both for default priority and for Best Effort, and
+        *  Background is associated with a priority value of 1. This means
+        * that the value 1 effectively communicates a lower priority than 0."
+        *
+        * In the table below, Priority Code Point (PCP) 0 is assigned
+        * to a higher priority thread than PCP 1 wherever possible.
+        * The table maps which thread the PCP traffic needs to be
         * sent to for a given number of threads (RX channels). Upper threads
         * have higher priority.
         * e.g. if number of threads is 8 then user priority 0 will map to
-        * pri_thread_map[8-1][0] i.e. thread 2
+        * pri_thread_map[8-1][0] i.e. thread 1
         */
-       int pri_thread_map[8][8] = {    { 0, 0, 0, 0, 0, 0, 0, 0, },
+
+       int pri_thread_map[8][8] = {   /* BK,BE,EE,CA,VI,VO,IC,NC */
+                                       { 0, 0, 0, 0, 0, 0, 0, 0, },
                                        { 0, 0, 0, 0, 1, 1, 1, 1, },
                                        { 0, 0, 0, 0, 1, 1, 2, 2, },
-                                       { 1, 0, 0, 1, 2, 2, 3, 3, },
-                                       { 1, 0, 0, 1, 2, 3, 4, 4, },
-                                       { 1, 0, 0, 2, 3, 4, 5, 5, },
-                                       { 1, 0, 0, 2, 3, 4, 5, 6, },
-                                       { 2, 0, 1, 3, 4, 5, 6, 7, } };
+                                       { 0, 0, 1, 1, 2, 2, 3, 3, },
+                                       { 0, 0, 1, 1, 2, 2, 3, 4, },
+                                       { 1, 0, 2, 2, 3, 3, 4, 5, },
+                                       { 1, 0, 2, 3, 4, 4, 5, 6, },
+                                       { 1, 0, 2, 3, 4, 5, 6, 7 } };
 
        cpsw_ale_policer_reset(ale);