Skip to content

lwip2 fix and update #4729

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

Merged
merged 8 commits into from
May 25, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions doc/faq/readme.rst
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,15 @@ This error may pop up after switching between
How to clear TCP PCBs in time-wait state ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This is needed with lwIP-v1.4, less needed with lwIP-v2 but timeout is still
too high.
This is not needed anymore:

PCBs in time-wait state are limited to 5 and removed when that number is
exceeded.

Ref. `lwIP-v1.4 <https://github.com/esp8266/Arduino/commit/07f4d4c241df2c552899857f39a4295164f686f2#diff-f8258e71e25fb9985ca3799e3d8b88ecR399>`__,
`lwIP-v2 <https://github.com/d-a-v/esp82xx-nonos-linklayer/commit/420960dfc0dbe07114f7364845836ac333bc84f7>`__

For reference:

Time-wait PCB state helps TCP not confusing two consecutive connections with the
same (s-ip,s-port,d-ip,d-port) when the first is already closed but still
Expand Down
4 changes: 2 additions & 2 deletions libraries/esp8266/examples/interactive/interactive.ino
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ void loop() {
case 'n': DO(WiFi.setSleepMode(WIFI_NONE_SLEEP));
case 'l': DO(WiFi.setSleepMode(WIFI_LIGHT_SLEEP));
case 'm': DO(WiFi.setSleepMode(WIFI_MODEM_SLEEP));
case 's': DO(WiFi.config(staticip, gateway, subnet));
case 'D': DO(wifi_station_dhcpc_start());
case 'S': DO(WiFi.config(staticip, gateway, subnet)); // use static address
case 's': DO(WiFi.config(0u, 0u, 0u)); // back to dhcp client
}
}
Binary file modified tools/sdk/lib/liblwip2.a
Binary file not shown.
Binary file modified tools/sdk/lib/liblwip2_1460.a
Binary file not shown.
1 change: 1 addition & 0 deletions tools/sdk/lwip2/include/gluedebug.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#ifdef __cplusplus
extern "C"
#endif
#define HAS_PHY_CAPTURE 1
void (*phy_capture) (int netif_idx, const char* data, size_t len, int out, int success);

/////////////////////////////////////////////////////////////////////////////
Expand Down
2 changes: 1 addition & 1 deletion tools/sdk/lwip2/include/lwip-git-hash.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// generated by makefiles/make-lwip2-hash
#ifndef LWIP_HASH_H
#define LWIP_HASH_H
#define LWIP_HASH_STR "STABLE-2_0_3_RELEASE/glue:arduino-2.4.1-7-g2b827f8"
#define LWIP_HASH_STR "STABLE-2_0_3_RELEASE/glue:arduino-2.4.1-10-g0c0d8c2"
#endif // LWIP_HASH_H
31 changes: 31 additions & 0 deletions tools/sdk/lwip2/include/lwipopts.h
Original file line number Diff line number Diff line change
Expand Up @@ -2997,6 +2997,7 @@

/*
--------------------------------------------------
------------- End of original lwipopts -----------
--------------------------------------------------
*/

Expand All @@ -3013,4 +3014,34 @@ struct netif;
#endif
LWIP_ERR_T lwip_unhandled_packet (struct pbuf* pbuf, struct netif* netif) __attribute__((weak));

/*
--------------------------------------------------
----------------- TIME-WAIT tweak ----------------
--------------------------------------------------
port @me-no-dev time-wait tweak
https://github.com/esp8266/Arduino/commit/07f4d4c241df2c552899857f39a4295164f686f2#diff-f8258e71e25fb9985ca3799e3d8b88ecR399
*/

void tcp_kill_timewait (void);
#define TCP_TW_LIMIT(l) \
if (l) do { \
u32_t count_plus_1 = 1; \
struct tcp_pcb* tmp = tcp_tw_pcbs; \
if (tmp) \
while ((tmp = tmp->next)) \
++count_plus_1; \
while (--count_plus_1 > (l)) \
/* kill the oldest */ \
/* pcb in TW state */ \
tcp_kill_timewait(); \
} while (0)

/**
* MEMP_NUM_TCP_PCB_TIME_WAIT: the number of TCP pcbs in TIME_WAIT state.
* (requires the LWIP_TCP option, 0 = disabled)
*/
#ifndef MEMP_NUM_TCP_PCB_TIME_WAIT
#define MEMP_NUM_TCP_PCB_TIME_WAIT 5
#endif

#endif // MYLWIPOPTS_H