This issue relates only to the wrong addresses and nothing more. This is important because the Arduino Ethernet Shield 2 uses W5500 chip (no official Arduino shield uses W5100 anymore from what I can tell).
The register addresses for W5500 can be found in the datasheet (v1.0.9) at page 29 / 66 (I posted an image below)
__GP_REGISTER16(RTR, 0x0019); // Timeout address
__GP_REGISTER8 (RCR, 0x001B); // Retry count
__GP_REGISTER8 (PTIMER, 0x001C); // PPP LCP Request Timer
__GP_REGISTER8 (PMAGIC, 0x001D); // PPP LCP Magic Number
__GP_REGISTER_N(PHAR, 0x001E, 6); // PPP Destination MAC address
__GP_REGISTER16(PSID, 0x0024); // PPP Session ID
__GP_REGISTER16(PMRU, 0x0026); // PPP Maximum Segment Size
__GP_REGISTER_N(UIPR, 0x0028, 4); // Unreachable IP address in UDP mode (W5500 only)
__GP_REGISTER16(UPORT, 0x002C); // Unreachable Port address in UDP mode (W5500 only)
__GP_REGISTER8 (PHYCFGR_W5500, 0x002E); // PHY Configuration register, default: 10111xxx
Notice above how
RTR changes from 0x0017to 0x0019
RCR changes from 0x0019to 0x001B
PTIMER changes from 0x0028to 0x001C
PMAGIC changes from 0x0029to 0x001D
UIPR changes from 0x002Ato 0x0028
UPORT changes from 0x002E to 0x002C
New addresses: PSID, PMRU, PHAR
This would fix an issue where setRetransmissionTime() has no effect on W5500. Only problem left to solve is to differentiate between RTR address for W5100 and W5500.
See https://github.com/arduino-libraries/Ethernet/issues/84 I want to break the issue into a smaller part since the original issue has more proposed changes than this.
This issue relates only to the wrong addresses and nothing more. This is important because the Arduino Ethernet Shield 2 uses W5500 chip (no official Arduino shield uses W5100 anymore from what I can tell).
The register addresses for W5500 can be found in the datasheet (v1.0.9) at page 29 / 66 (I posted an image below)
Current w5100.h
Proposed changes to w5100.h
Notice above how
0x0017
to0x0019
0x0019
to0x001B
0x0028
to0x001C
0x0029
to0x001D
0x002A
to0x0028
0x002E
to0x002C
This would fix an issue where
setRetransmissionTime()
has no effect on W5500. Only problem left to solve is to differentiate between RTR address for W5100 and W5500.Quick view at the register map for W5500:
For comparison here are the W5100 registers