瀏覽代碼

ethernet: limit rx buf num when flow ctrl enable.

shangke 9 年之前
父節點
當前提交
2ea4d7fd02
共有 2 個文件被更改,包括 10 次插入2 次删除
  1. 3 2
      components/ethernet/Kconfig
  2. 7 0
      components/ethernet/emac_main.c

+ 3 - 2
components/ethernet/Kconfig

@@ -6,17 +6,18 @@ menuconfig ETHERNET
 
 
 config DMA_RX_BUF_NUM
 config DMA_RX_BUF_NUM
     int "Number of DMA RX buffers"
     int "Number of DMA RX buffers"
-    range 1 10
+    range 3 20
     default 10
     default 10
     depends on ETHERNET
     depends on ETHERNET
     help
     help
         Number of DMA receive buffers. Each buffer is 1600 bytes.
         Number of DMA receive buffers. Each buffer is 1600 bytes.
         Buffers are allocated statically.
         Buffers are allocated statically.
         Larger number of buffers increases throughput.
         Larger number of buffers increases throughput.
+        If enable flow ctrl, the num must be above 9 .
 
 
 config DMA_TX_BUF_NUM
 config DMA_TX_BUF_NUM
     int "Number of DMA RX buffers"
     int "Number of DMA RX buffers"
-    range 1 10
+    range 3 20
     default 10
     default 10
     depends on ETHERNET
     depends on ETHERNET
     help
     help

+ 7 - 0
components/ethernet/emac_main.c

@@ -216,7 +216,14 @@ static void emac_set_user_config_data(eth_config_t *config )
     emac_config.emac_phy_check_init = config->phy_check_init;
     emac_config.emac_phy_check_init = config->phy_check_init;
     emac_config.emac_phy_get_speed_mode = config->phy_get_speed_mode;
     emac_config.emac_phy_get_speed_mode = config->phy_get_speed_mode;
     emac_config.emac_phy_get_duplex_mode = config->phy_get_duplex_mode;
     emac_config.emac_phy_get_duplex_mode = config->phy_get_duplex_mode;
+#if DMA_RX_BUF_NUM > 9
     emac_config.emac_flow_ctrl_enable = config->flow_ctrl_enable;
     emac_config.emac_flow_ctrl_enable = config->flow_ctrl_enable;
+#else 
+    if(config->flow_ctrl_enable == true) {
+        ESP_LOGE(TAG, "eth flow ctrl init err!!! Please run make menuconfig and make sure DMA_RX_BUF_NUM > 9 .");
+    }
+    emac_config.emac_flow_ctrl_enable = false;
+#endif
     emac_config.emac_phy_get_partner_pause_enable = config->phy_get_partner_pause_enable;
     emac_config.emac_phy_get_partner_pause_enable = config->phy_get_partner_pause_enable;
 }
 }