mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
Use new signatures for vlan_create and phy-settings
This commit is contained in:
+42
-35
@@ -282,17 +282,17 @@ void parse_lag_hash(void)
|
|||||||
|
|
||||||
void parse_vlan(void)
|
void parse_vlan(void)
|
||||||
{
|
{
|
||||||
__xdata uint16_t vlan;
|
vlan_settings.vlan = 0;
|
||||||
__xdata uint16_t members = 0;
|
vlan_settings.members = 0;
|
||||||
__xdata uint16_t tagged = 0;
|
vlan_settings.tagged = 0;
|
||||||
if (!atoi_short(&vlan, cmd_words_b[1])) {
|
if (!atoi_short(&vlan_settings.vlan, cmd_words_b[1])) {
|
||||||
if (cmd_words_b[2] > 0 && cmd_buffer[cmd_words_b[2]] == 'd' && cmd_words_b[3] < 0) {
|
if (cmd_words_b[2] > 0 && cmd_buffer[cmd_words_b[2]] == 'd' && cmd_words_b[3] < 0) {
|
||||||
vlan_delete(vlan);
|
vlan_delete(vlan_settings.vlan);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (cmd_words_b[2] > 0 && cmd_compare(2, "mgmt")) {
|
if (cmd_words_b[2] > 0 && cmd_compare(2, "mgmt")) {
|
||||||
management_vlan = vlan;
|
management_vlan = vlan_settings.vlan;
|
||||||
if (!vlan)
|
if (!vlan_settings.vlan)
|
||||||
print_string("Management VLAN disabled\n");
|
print_string("Management VLAN disabled\n");
|
||||||
else
|
else
|
||||||
print_string("Management VLAN set to "); print_short(management_vlan); write_char('\n');
|
print_string("Management VLAN set to "); print_short(management_vlan); write_char('\n');
|
||||||
@@ -301,9 +301,9 @@ void parse_vlan(void)
|
|||||||
uint8_t w = 2;
|
uint8_t w = 2;
|
||||||
if (cmd_words_b[w] > 0 && isletter(cmd_buffer[cmd_words_b[w]])) {
|
if (cmd_words_b[w] > 0 && isletter(cmd_buffer[cmd_words_b[w]])) {
|
||||||
register uint8_t i = 0;
|
register uint8_t i = 0;
|
||||||
vlan_names[vlan_ptr++] = hex[(vlan >> 8) & 0xf];
|
vlan_names[vlan_ptr++] = hex[(vlan_settings.vlan >> 8) & 0xf];
|
||||||
vlan_names[vlan_ptr++] = hex[(vlan >> 4) & 0xf] ;
|
vlan_names[vlan_ptr++] = hex[(vlan_settings.vlan >> 4) & 0xf] ;
|
||||||
vlan_names[vlan_ptr++] = hex[vlan & 0xf];
|
vlan_names[vlan_ptr++] = hex[vlan_settings.vlan & 0xf];
|
||||||
while(cmd_buffer[cmd_words_b[w] + i] != ' ') {
|
while(cmd_buffer[cmd_words_b[w] + i] != ' ') {
|
||||||
write_char(cmd_buffer[cmd_words_b[w] + i]);
|
write_char(cmd_buffer[cmd_words_b[w] + i]);
|
||||||
vlan_names[vlan_ptr++] = cmd_buffer[cmd_words_b[w] + i++];
|
vlan_names[vlan_ptr++] = cmd_buffer[cmd_words_b[w] + i++];
|
||||||
@@ -313,25 +313,25 @@ void parse_vlan(void)
|
|||||||
print_string("<\n");
|
print_string("<\n");
|
||||||
}
|
}
|
||||||
while (cmd_words_b[w] > 0) {
|
while (cmd_words_b[w] > 0) {
|
||||||
uint8_t port;
|
__xdata uint8_t port;
|
||||||
if (isnumber(cmd_buffer[cmd_words_b[w]])) {
|
if (isnumber(cmd_buffer[cmd_words_b[w]])) {
|
||||||
port = cmd_buffer[cmd_words_b[w]] - '1';
|
port = cmd_buffer[cmd_words_b[w]] - '1';
|
||||||
if (isnumber(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';
|
port = (port + 1) * 10 + cmd_buffer[cmd_words_b[w] + 1] - '1';
|
||||||
if (cmd_buffer[cmd_words_b[w] + 2] == 't')
|
if (cmd_buffer[cmd_words_b[w] + 2] == 't')
|
||||||
tagged |= ((uint16_t)1) << port;
|
vlan_settings.tagged |= ((uint16_t)1) << port;
|
||||||
} else {
|
} else {
|
||||||
port = machine.phys_to_log_port[port];
|
port = machine.phys_to_log_port[port];
|
||||||
if (cmd_buffer[cmd_words_b[w] + 1] == 't')
|
if (cmd_buffer[cmd_words_b[w] + 1] == 't')
|
||||||
tagged |= ((uint16_t)1) << port;
|
vlan_settings.tagged |= ((uint16_t)1) << port;
|
||||||
}
|
}
|
||||||
if (port > machine.max_port)
|
if (port > machine.max_port)
|
||||||
goto err;
|
goto err;
|
||||||
members |= ((uint16_t)1) << port;
|
vlan_settings.members |= ((uint16_t)1) << port;
|
||||||
}
|
}
|
||||||
w++;
|
w++;
|
||||||
}
|
}
|
||||||
vlan_create(vlan, members, tagged);
|
vlan_create();
|
||||||
}
|
}
|
||||||
if (cmd_words_b[2] > 0 && isletter(cmd_buffer[cmd_words_b[2]])) {
|
if (cmd_words_b[2] > 0 && isletter(cmd_buffer[cmd_words_b[2]])) {
|
||||||
print_string("vlan_ptr "); print_short(vlan_ptr); write_char(':');
|
print_string("vlan_ptr "); print_short(vlan_ptr); write_char(':');
|
||||||
@@ -422,10 +422,10 @@ void parse_mirror(void)
|
|||||||
void parse_port(void)
|
void parse_port(void)
|
||||||
{
|
{
|
||||||
print_string("\nPORT ");
|
print_string("\nPORT ");
|
||||||
uint8_t p = cmd_buffer[cmd_words_b[1]] - '1';
|
phy_settings.port = cmd_buffer[cmd_words_b[1]] - '1';
|
||||||
p = machine.phys_to_log_port[p];
|
phy_settings.port = machine.phys_to_log_port[phy_settings.port];
|
||||||
print_byte(p);
|
print_byte(phy_settings.port);
|
||||||
if (machine.is_sfp[p]) {
|
if (machine.is_sfp[phy_settings.port]) {
|
||||||
print_string(" is SFP no PHY information available.\n");
|
print_string(" is SFP no PHY information available.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -433,46 +433,53 @@ void parse_port(void)
|
|||||||
print_string("\nport <port> [show|on|off|10m|100m|1g|2g5] [half|full]");
|
print_string("\nport <port> [show|on|off|10m|100m|1g|2g5] [half|full]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
phy_settings.duplex = PHY_DUPLEX_BOTH;
|
||||||
if (cmd_compare(2, "10m")) {
|
if (cmd_compare(2, "10m")) {
|
||||||
print_string(" 10M\n");
|
print_string(" 10M\n");
|
||||||
|
phy_settings.speed = PHY_SPEED_10M;
|
||||||
if (cmd_words_b[3] > 0 && cmd_compare(3, "half"))
|
if (cmd_words_b[3] > 0 && cmd_compare(3, "half"))
|
||||||
phy_set_speed(p, PHY_SPEED_10M, PHY_DUPLEX_HALF);
|
phy_settings.duplex = PHY_DUPLEX_HALF;
|
||||||
else if (cmd_words_b[3] > 0 && cmd_compare(3, "full"))
|
else if (cmd_words_b[3] > 0 && cmd_compare(3, "full"))
|
||||||
phy_set_speed(p, PHY_SPEED_10M, PHY_DUPLEX_FULL);
|
phy_settings.duplex = PHY_DUPLEX_FULL;
|
||||||
else
|
phy_set_speed();
|
||||||
phy_set_speed(p, PHY_SPEED_10M, PHY_DUPLEX_BOTH);
|
|
||||||
} else if (cmd_compare(2, "100m")) {
|
} else if (cmd_compare(2, "100m")) {
|
||||||
print_string(" 100M\n");
|
print_string(" 100M\n");
|
||||||
|
phy_settings.speed = PHY_SPEED_100M;
|
||||||
if (cmd_words_b[3] > 0 && cmd_compare(3, "half"))
|
if (cmd_words_b[3] > 0 && cmd_compare(3, "half"))
|
||||||
phy_set_speed(p, PHY_SPEED_100M, PHY_DUPLEX_HALF);
|
phy_settings.duplex = PHY_DUPLEX_HALF;
|
||||||
else if (cmd_words_b[3] > 0 && cmd_compare(3, "full"))
|
else if (cmd_words_b[3] > 0 && cmd_compare(3, "full"))
|
||||||
phy_set_speed(p, PHY_SPEED_100M, PHY_DUPLEX_FULL);
|
phy_settings.duplex = PHY_DUPLEX_FULL;
|
||||||
else
|
phy_set_speed();
|
||||||
phy_set_speed(p, PHY_SPEED_100M, PHY_DUPLEX_BOTH);
|
|
||||||
} else if (cmd_compare(2, "2g5")) {
|
} else if (cmd_compare(2, "2g5")) {
|
||||||
print_string(" 2.5G\n");
|
print_string(" 2.5G\n");
|
||||||
phy_set_speed(p, PHY_SPEED_2G5, PHY_DUPLEX_BOTH);
|
phy_settings.speed = PHY_SPEED_2G5;
|
||||||
|
phy_set_speed();
|
||||||
} else if (cmd_compare(2, "1g")) {
|
} else if (cmd_compare(2, "1g")) {
|
||||||
print_string(" 1G\n");
|
print_string(" 1G\n");
|
||||||
phy_set_speed(p, PHY_SPEED_1G, PHY_DUPLEX_BOTH);
|
phy_settings.speed = PHY_SPEED_1G;
|
||||||
|
phy_set_speed();
|
||||||
} else if (cmd_compare(2, "auto")) {
|
} else if (cmd_compare(2, "auto")) {
|
||||||
print_string(" AUTO\n");
|
print_string(" AUTO\n");
|
||||||
phy_set_speed(p, PHY_SPEED_AUTO, PHY_DUPLEX_BOTH);
|
phy_settings.speed = PHY_SPEED_AUTO;
|
||||||
|
phy_set_speed();
|
||||||
} else if (cmd_compare(2, "off")) {
|
} else if (cmd_compare(2, "off")) {
|
||||||
print_string(" OFF\n");
|
print_string(" OFF\n");
|
||||||
phy_set_speed(p, PHY_OFF, PHY_DUPLEX_BOTH);
|
phy_settings.speed = PHY_OFF;
|
||||||
|
phy_set_speed();
|
||||||
} else if (cmd_compare(2, "on")) {
|
} else if (cmd_compare(2, "on")) {
|
||||||
print_string(" ON\n");
|
print_string(" ON\n");
|
||||||
phy_set_speed(p, PHY_SPEED_AUTO, PHY_DUPLEX_BOTH);
|
phy_settings.speed = PHY_SPEED_AUTO;
|
||||||
|
phy_set_speed();
|
||||||
} else if (cmd_compare(2, "duplex")) {
|
} else if (cmd_compare(2, "duplex")) {
|
||||||
print_string(" DUPLEX\n");
|
print_string(" DUPLEX\n");
|
||||||
if (cmd_words_b[3] > 0 && cmd_compare(3, "full"))
|
if (cmd_words_b[3] > 0 && cmd_compare(3, "full"))
|
||||||
phy_set_duplex(p, PHY_DUPLEX_FULL);
|
phy_settings.speed = PHY_DUPLEX_FULL;
|
||||||
else
|
else
|
||||||
phy_set_duplex(p, PHY_DUPLEX_HALF);
|
phy_settings.speed = PHY_DUPLEX_HALF;
|
||||||
|
phy_set_duplex();
|
||||||
}
|
}
|
||||||
if (cmd_words_b[2] > 0 && cmd_compare(2, "show")) {
|
if (cmd_words_b[2] > 0 && cmd_compare(2, "show")) {
|
||||||
phy_show(p);
|
phy_show(phy_settings.port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user