mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
Merge pull request #349 from DrDoof/fix/lag-cmd-bounds
lag: number the groups from one and bound what the command is given
This commit is contained in:
+14
-3
@@ -273,7 +273,9 @@ void parse_lag(void)
|
||||
|
||||
if (cmd_words_len < 2 || !isnumber(cmd_buffer[cmd_words_b[1]]))
|
||||
goto err;
|
||||
group = cmd_buffer[cmd_words_b[1]] - '0';
|
||||
group = cmd_buffer[cmd_words_b[1]] - '1';
|
||||
if (group > 3) /* '0' wraps well past three, so one test does both ends */
|
||||
goto err;
|
||||
|
||||
uint8_t w = 2;
|
||||
while (w < cmd_words_len) {
|
||||
@@ -283,6 +285,8 @@ void parse_lag(void)
|
||||
port = cmd_buffer[cmd_words_b[w]] - '1';
|
||||
if (isnumber(cmd_buffer[cmd_words_b[w] + 1]))
|
||||
port = (port + 1) * 10 + cmd_buffer[cmd_words_b[w] + 1] - '1';
|
||||
if (port > 8) /* phys_to_log_port holds nine entries */
|
||||
goto err;
|
||||
port = machine.phys_to_log_port[port];
|
||||
} else {
|
||||
goto err;
|
||||
@@ -295,7 +299,7 @@ void parse_lag(void)
|
||||
port_lag_members_set(group, members);
|
||||
return;
|
||||
err:
|
||||
print_string("Error: lag <lag> [port]...\n");
|
||||
print_string("Error: lag <1-4> [port]...\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -304,7 +308,11 @@ void parse_lag_hash(void)
|
||||
__xdata uint8_t group;
|
||||
__xdata uint8_t hash = 0;
|
||||
|
||||
group = cmd_buffer[cmd_words_b[1]] - '0';
|
||||
if (cmd_words_len < 2 || !isnumber(cmd_buffer[cmd_words_b[1]]))
|
||||
goto err;
|
||||
group = cmd_buffer[cmd_words_b[1]] - '1';
|
||||
if (group > 3) /* '0' wraps well past three, so one test does both ends */
|
||||
goto err;
|
||||
|
||||
uint8_t w = 2;
|
||||
while (w < cmd_words_len) {
|
||||
@@ -330,6 +338,9 @@ void parse_lag_hash(void)
|
||||
w++;
|
||||
}
|
||||
port_lag_hash_set(group, hash);
|
||||
return;
|
||||
err:
|
||||
print_string("Error: lag hash <1-4> [type]...\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ The following shows the network configuration
|
||||
On _both_ switches create a LAG with ports 1 and 2 inside and the default hash algorithm which takes
|
||||
source and destination ports into account, e.g. just use the default:
|
||||
```
|
||||
> lag 0 1 2
|
||||
> lag 1 1 2
|
||||
```
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -356,7 +356,7 @@ void send_l2(uint16_t idx)
|
||||
*/
|
||||
__xdata uint16_t entry = idx & 0xfff;
|
||||
__xdata uint16_t first_entry = 0xffff; // An illegal entry index
|
||||
bool first = true;
|
||||
__bit first = true;
|
||||
char_to_html('[');
|
||||
while (1) {
|
||||
entries_left--;
|
||||
@@ -370,7 +370,7 @@ void send_l2(uint16_t idx)
|
||||
} while (sfr_data[3] & TBL_EXECUTE);
|
||||
|
||||
reg_read_m(RTL837x_L2_DATA_OUT_B);
|
||||
bool valid = (sfr_data[0] & 0x20) != 0;
|
||||
__bit valid = (sfr_data[0] & 0x20) != 0;
|
||||
if (valid) {
|
||||
/* separator + 74-byte worst-case entry + closing "]" */
|
||||
if (slen + 76 > TCP_OUTBUF_SIZE)
|
||||
|
||||
+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