Some onboard RTL8169 NICs seem to leave the EEPROM pins disconnected. The existing is_valid_ether_addr() test will not necessarily catch this, since it expects a missing EEPROM to show up as a MAC address of 00:00:00:00:00:00 or ff:ff:ff:ff:ff:ff. When the EEPROM pins are floating the MAC address may read as e.g. 00:00:00:00:0f:00, which will not be detected as invalid. Check the ID word in the first two bytes of the EEPROM (which should have the value 0x8129 for all RTL8139 and RTL8169 chips), and use this to determine whether or not an EEPROM is present. Reported-by: Carl Karsten <carl@nextdayvideo.com> Tested-by: Carl Karsten <carl@nextdayvideo.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>tags/v1.20.1
|
|
||
144 |
|
144 |
|
145 |
|
145 |
|
146 |
|
146 |
|
|
147 |
|
|
147 |
|
148 |
|
148 |
|
|
|
|
149 |
|
|
149 |
|
150 |
|
|
151 |
|
|
|
152 |
|
|
150 |
|
153 |
|
151 |
|
154 |
|
152 |
|
155 |
|
|
|
||
163 |
|
166 |
|
164 |
|
167 |
|
165 |
|
168 |
|
|
169 |
|
|
|
170 |
|
|
|
171 |
|
|
|
172 |
|
|
|
173 |
|
|
|
174 |
|
|
|
175 |
|
|
|
176 |
|
|
|
177 |
|
|
|
178 |
|
|
|
179 |
|
|
|
180 |
|
|
|
181 |
|
|
|
182 |
|
|
|
183 |
|
|
|
184 |
|
|
166 |
|
185 |
|
167 |
|
186 |
|
168 |
|
187 |
|
|
|
||
176 |
|
195 |
|
177 |
|
196 |
|
178 |
|
197 |
|
|
198 |
|
|
|
199 |
|
|
179 |
|
200 |
|
180 |
|
201 |
|
181 |
|
202 |
|
|
|
||
1045 |
|
1066 |
|
1046 |
|
1067 |
|
1047 |
|
1068 |
|
1048 |
|
|
|
|
1069 |
|
|
|
1070 |
|
|
|
1071 |
|
|
|
1072 |
|
|
|
1073 |
|
|
|
1074 |
|
|
|
1075 |
|
|
|
1076 |
|
|
|
1077 |
|
|
1049 |
|
1078 |
|
1050 |
|
|
|
1051 |
|
|
|
1052 |
|
|
|
1053 |
|
|
|
1054 |
|
|
|
1055 |
|
|
|
1056 |
|
|
|
|
1079 |
|
|
1057 |
|
1080 |
|
1058 |
|
|
|
1059 |
|
|
|
1060 |
|
|
|
1061 |
|
|
|
1062 |
|
|
|
1063 |
|
|
|
1064 |
|
|
|
|
1081 |
|
|
|
1082 |
|
|
|
1083 |
|
|
|
1084 |
|
|
1065 |
|
1085 |
|
1066 |
|
1086 |
|
1067 |
|
1087 |
|
|
|
||
166 |
|
166 |
|
167 |
|
167 |
|
168 |
|
168 |
|
|
169 |
|
|
|
170 |
|
|
|
171 |
|
|
|
172 |
|
|
|
173 |
|
|
|
174 |
|
|
169 |
|
175 |
|
170 |
|
176 |
|
171 |
|
177 |
|