-
Notifications
You must be signed in to change notification settings - Fork 7.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ethernet stop working with dm9051 (IDFGH-4598) #6414
Comments
I have a similar problem. In the debug log ,,, At the same time, I can no longer ping the device. Have tried with all possible combinations of: Clock-speed, Queue-size. It seems that the SPI communication is stopping. There will be no more interrupts Does anyone have a suggestion on what I should try |
I forgot to write ... With a Wifi connection it runs perfectly. |
the problem seems to be in the interface of the missing flow control drivers esp_eth_mac_dm9051.c we are checking with idf v4.3 by performing dm9051 memory dumps (with the invaluable help of davicom great professionals) I also believe that the bug can intervene (IDFGH-4569) corrupting the flow but it is difficult to locate |
I think I have found the error in my system. I have tried switching to another DNS server, after which it seems to run more stably. |
What a mystery ... I try to do a "HTTP_CLIENT post" On the wired network, in my private home office, wiz850io - w5500 runs perfectly, so does wifi. At work, the wired network fails with DNS resolve error: After which - I can no longer "ping" the device. At work, the same code runs perfectly on WIFI ... Have tried switching DNS server, and much more. Is there anyone who can give me, ideas to explore. ?????? |
What a mystery ... When event IP_EVENT_ETH_GOT_IP occurs, I make a . esp_netif_set_dns_info () calls and sets secondary dns to 0.0.0.0, then everything runs perfectly. |
Sorry for not replying sooner. It seems like the problem you reported is little related to the recent discussion, is it not? @MadsHHLund Are you using the wired and wireless configuration at the same time? lwip keeps an array of DNS servers common for all interfaces, couldn't the WiFi rewrite the DNS server somehow?
Could you please check, what was the value before? and where it was set? |
@fabiolino2416 We've had a similar problem with missed GPIO interrupt on another device, could you please check if this change won't fix the issue? diff --git a/components/esp_eth/src/esp_eth_mac_dm9051.c b/components/esp_eth/src/esp_eth_mac_dm9051.c
@@ -397,7 +397,7 @@ static void emac_dm9051_task(void *arg)
uint32_t length = 0;
while (1) {
// block indefinitely until some task notifies me
- ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
+ ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(1000));
/* clear interrupt status */
dm9051_register_read(emac, DM9051_ISR, &status);
dm9051_register_write(emac, DM9051_ISR, status); |
We were able to reproduce the issue after the stress testing. The patch above actually works around the problem, as it makes the Rx task to check periodically for any new Rx packets (it didn't address the root cause, though) Here's a preliminary patch that fixes the issue: |
* Disable Tx interrupts to fix race condition of missing Rx interrupt * Check if GPIO interrupt is asserted periodically if the ISR event missed Closes #6414
using example hyperf for a long time 600 seconds ethernet interface stops working (after about 100...300 seconds) no error or warning is detected in console only a restart solves the problem spi frequency 20mhz the test is run with two demo boards dm9051 demo_board and wroom32d kit I will run the test again on a production board to exclude any problems related to a demo hardware
The text was updated successfully, but these errors were encountered: