]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
net: stmmac: No need to calculate speed divider when offload is disabled
authorXiaolei Wang <xiaolei.wang@windriver.com>
Mon, 17 Jun 2024 01:39:22 +0000 (09:39 +0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 19 Jun 2024 00:51:52 +0000 (17:51 -0700)
commit be27b8965297 ("net: stmmac: replace priv->speed with
the portTransmitRate from the tc-cbs parameters") introduced
a problem. When deleting, it prompts "Invalid portTransmitRate
0 (idleSlope - sendSlope)" and exits. Add judgment on cbs.enable.
Only when offload is enabled, speed divider needs to be calculated.

Fixes: be27b8965297 ("net: stmmac: replace priv->speed with the portTransmitRate from the tc-cbs parameters")
Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240617013922.1035854-1-xiaolei.wang@windriver.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c

index 1562fbdd0a0400b453fd5ea733f40b2606483de7..996f2bcd07a2438e7ca0fb3fd9d2cafb02a91283 100644 (file)
@@ -358,24 +358,28 @@ static int tc_setup_cbs(struct stmmac_priv *priv,
 
        port_transmit_rate_kbps = qopt->idleslope - qopt->sendslope;
 
-       /* Port Transmit Rate and Speed Divider */
-       switch (div_s64(port_transmit_rate_kbps, 1000)) {
-       case SPEED_10000:
-       case SPEED_5000:
-               ptr = 32;
-               break;
-       case SPEED_2500:
-       case SPEED_1000:
-               ptr = 8;
-               break;
-       case SPEED_100:
-               ptr = 4;
-               break;
-       default:
-               netdev_err(priv->dev,
-                          "Invalid portTransmitRate %lld (idleSlope - sendSlope)\n",
-                          port_transmit_rate_kbps);
-               return -EINVAL;
+       if (qopt->enable) {
+               /* Port Transmit Rate and Speed Divider */
+               switch (div_s64(port_transmit_rate_kbps, 1000)) {
+               case SPEED_10000:
+               case SPEED_5000:
+                       ptr = 32;
+                       break;
+               case SPEED_2500:
+               case SPEED_1000:
+                       ptr = 8;
+                       break;
+               case SPEED_100:
+                       ptr = 4;
+                       break;
+               default:
+                       netdev_err(priv->dev,
+                                  "Invalid portTransmitRate %lld (idleSlope - sendSlope)\n",
+                                  port_transmit_rate_kbps);
+                       return -EINVAL;
+               }
+       } else {
+               ptr = 0;
        }
 
        mode_to_use = priv->plat->tx_queues_cfg[queue].mode_to_use;