aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Simek2023-01-24 16:19:27 +0100
committerMichal Simek2023-01-27 08:48:32 +0100
commite6c62537dbf5bb8b43dbe8c89d1bb61c647b6b24 (patch)
treeaca0746ecaed18c8fe3a1723f1454ff91d2121cf
parentb86b135fc67e3b726d69c6f5fe92139e5a2d7a01 (diff)
xilinx: board: Fix xilinx_eeprom_legacy_cleanup()
When ethernet mac address contains 0x20 or 0xff MAC address is changed and bytes are converted to zeros. That's why fix decoding algorithm to ignore fields where MAC address is stored and all non printable chars (including space) are zeroed. Signed-off-by: Michal Simek <michal.simek@amd.com> Link: https://lore.kernel.org/r/2802cf1086b14c181356810006fe886f950a36f3.1674573561.git.michal.simek@amd.com
-rw-r--r--board/xilinx/common/board.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c
index 6cdb0004f5c..ed393f73773 100644
--- a/board/xilinx/common/board.c
+++ b/board/xilinx/common/board.c
@@ -102,9 +102,13 @@ static void xilinx_eeprom_legacy_cleanup(char *eeprom, int size)
for (i = 0; i < size; i++) {
byte = eeprom[i];
- /* Remove all ffs and spaces */
- if (byte == 0xff || byte == ' ')
+ /* Remove all non printable chars but ignore MAC address */
+ if ((i < offsetof(struct xilinx_legacy_format, eth_mac) ||
+ i >= offsetof(struct xilinx_legacy_format, unused1)) &&
+ (byte < '!' || byte > '~')) {
eeprom[i] = 0;
+ continue;
+ }
/* Convert strings to lower case */
if (byte >= 'A' && byte <= 'Z')