net: stmmac: configuration of CBS in case of a TX AVB queue
[linux-2.6-block.git] / drivers / net / ethernet / stmicro / stmmac / stmmac_platform.c
index 0b76e3de502d3b5255921a51425d420f9ec888c0..37f550ae76a54bb6ed7f26a176cf3957fc6f4f6b 100644 (file)
@@ -171,11 +171,11 @@ static void stmmac_mtl_setup(struct platform_device *pdev,
                        break;
 
                if (of_property_read_bool(q_node, "snps,dcb-algorithm"))
-                       plat->rx_queues_cfg[queue].mode_to_use = MTL_RX_DCB;
+                       plat->rx_queues_cfg[queue].mode_to_use = MTL_QUEUE_DCB;
                else if (of_property_read_bool(q_node, "snps,avb-algorithm"))
-                       plat->rx_queues_cfg[queue].mode_to_use = MTL_RX_AVB;
+                       plat->rx_queues_cfg[queue].mode_to_use = MTL_QUEUE_AVB;
                else
-                       plat->rx_queues_cfg[queue].mode_to_use = MTL_RX_DCB;
+                       plat->rx_queues_cfg[queue].mode_to_use = MTL_QUEUE_DCB;
 
                if (of_property_read_u8(q_node, "snps,map-to-dma-channel",
                                        &plat->rx_queues_cfg[queue].chan))
@@ -212,6 +212,29 @@ static void stmmac_mtl_setup(struct platform_device *pdev,
                                        &plat->tx_queues_cfg[queue].weight))
                        plat->tx_queues_cfg[queue].weight = 0x10 + queue;
 
+               if (of_property_read_bool(q_node, "snps,dcb-algorithm")) {
+                       plat->tx_queues_cfg[queue].mode_to_use = MTL_QUEUE_DCB;
+               } else if (of_property_read_bool(q_node,
+                                                "snps,avb-algorithm")) {
+                       plat->tx_queues_cfg[queue].mode_to_use = MTL_QUEUE_AVB;
+
+                       /* Credit Base Shaper parameters used by AVB */
+                       if (of_property_read_u32(q_node, "snps,send_slope",
+                               &plat->tx_queues_cfg[queue].send_slope))
+                               plat->tx_queues_cfg[queue].send_slope = 0x0;
+                       if (of_property_read_u32(q_node, "snps,idle_slope",
+                               &plat->tx_queues_cfg[queue].idle_slope))
+                               plat->tx_queues_cfg[queue].idle_slope = 0x0;
+                       if (of_property_read_u32(q_node, "snps,high_credit",
+                               &plat->tx_queues_cfg[queue].high_credit))
+                               plat->tx_queues_cfg[queue].high_credit = 0x0;
+                       if (of_property_read_u32(q_node, "snps,low_credit",
+                               &plat->tx_queues_cfg[queue].low_credit))
+                               plat->tx_queues_cfg[queue].low_credit = 0x0;
+               } else {
+                       plat->tx_queues_cfg[queue].mode_to_use = MTL_QUEUE_DCB;
+               }
+
                queue++;
        }