Просмотр исходного кода

ethernet: limit rx buf num when flow ctrl enable.

shangke 9 лет назад
Родитель
Сommit
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;
 }
 }