mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
lag: number the groups from one and bound what the command is given
lag show has always printed the groups as 1 to 4 while lag <n> took the number literally, so typing what you saw configured the group beside it. Both lag and lag hash count from one now, matching how ports are numbered everywhere else, and reject anything outside 1 to 4. Subtracting '1' makes 0 wrap well past three, so one test covers both ends. The port argument indexed machine.phys_to_log_port, which holds nine entries, before it was checked, and a two digit argument reaches 109. It is bounded before the table is touched rather than after. port_lag_members_set() and port_lag_hash_set() complained about a group out of range and then wrote the registers anyway, past the four the groups occupy. They return instead. lag hash also read cmd_words_b[1] without checking a word was there, and now shares the error path parse_lag() already had.
This commit is contained in:
+5
-3
@@ -758,7 +758,7 @@ void port_lag_members_set(__xdata uint8_t lag, __xdata uint16_t members) __banke
|
||||
print_string("port_lag_members_set, lag: "); print_byte(lag); print_string(", members: "); print_short(members);
|
||||
write_char('\n');
|
||||
if (lag > 3) {
|
||||
print_string("Link aggregation group must be 0-3!\n");
|
||||
print_string("Link aggregation group out of range\n");
|
||||
return;
|
||||
}
|
||||
reg_read_m(RTL837X_TRK_HASH_CTRL_BASE + (lag << 2));
|
||||
@@ -777,8 +777,10 @@ void port_lag_hash_set(__xdata uint8_t lag, __xdata uint8_t hash_bits) __banked
|
||||
{
|
||||
print_string("port_lag_hash_set, lag: "); print_byte(lag); print_string(", hash: "); print_byte(hash_bits);
|
||||
write_char('\n');
|
||||
if (lag > 3)
|
||||
print_string("Link aggregation group must be 0-3!\n");
|
||||
if (lag > 3) {
|
||||
print_string("Link aggregation group out of range\n");
|
||||
return;
|
||||
}
|
||||
REG_WRITE(RTL837X_TRK_HASH_CTRL_BASE + (lag << 2), 0, 0, 0, hash_bits);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user