Merge pull request #347 from DrDoof/feat/lag-members-get

port: read a trunk's members through one function
This commit is contained in:
René van Dorst
2026-08-15 19:23:50 +00:00
committed by GitHub
4 changed files with 16 additions and 4 deletions
+1 -2
View File
@@ -250,8 +250,7 @@ void parse_lag(void)
print_string("LAG status:\n"); print_string("LAG status:\n");
for (uint8_t i = 0; i < 4; i++) { for (uint8_t i = 0; i < 4; i++) {
write_char(' '); write_char('1' + i); write_char(' '); write_char('1' + i);
reg_read_m(RTL837X_TRK_MBR_CTRL_BASE + (i << 2)); members = port_lag_members_get(i);
members = ((uint16_t)sfr_data[2]) << 8 | sfr_data[3];
if (!members) { if (!members) {
print_string(" disabled\n"); print_string(" disabled\n");
continue; continue;
+1 -2
View File
@@ -518,8 +518,7 @@ void send_lag(void)
slen += strtox(outbuf + slen, "{\"lagNum\":"); slen += strtox(outbuf + slen, "{\"lagNum\":");
itoa_html(l); itoa_html(l);
slen += strtox(outbuf + slen, ",\"members\":\""); slen += strtox(outbuf + slen, ",\"members\":\"");
reg_read_m(RTL837X_TRK_MBR_CTRL_BASE + (l << 2)); uint16_t ports = port_lag_members_get(l);
uint16_t ports = ((uint16_t)sfr_data[2] << 8) | sfr_data[3];
for (uint8_t i = 0; i < 16; i++) { for (uint8_t i = 0; i < 16; i++) {
bool_to_html(!!(ports & 0x8000)); bool_to_html(!!(ports & 0x8000));
ports <<= 1; ports <<= 1;
+13
View File
@@ -733,6 +733,19 @@ void port_rldp_on(__xdata uint16_t p_ms)
} }
/*
* Reads the member port bitmask of a Link Aggregation Group.
* The groups have numbers 0-3; bit n is set when logical port n is a member.
* The bitmask reflects what the hardware holds, so it covers groups set up
* statically and groups a protocol brought up, without either having to say so.
*/
uint16_t port_lag_members_get(uint8_t lag) __banked
{
reg_read(RTL837X_TRK_MBR_CTRL_BASE + (lag << 2));
return ((uint16_t)SFR_DATA_8 << 8) | SFR_DATA_0;
}
/* /*
* Configure LAGs * Configure LAGs
* Sets the members via port bitmask of a given Link Aggregation Group * Sets the members via port bitmask of a given Link Aggregation Group
+1
View File
@@ -61,6 +61,7 @@ void port_mirror_set(register uint8_t port, __xdata uint16_t rx_pmask, __xdata u
void port_mirror_del(void) __banked; void port_mirror_del(void) __banked;
bool port_ingress_filter(__xdata uint8_t port, __xdata vlan_ingress_mode_t type) __banked; bool port_ingress_filter(__xdata uint8_t port, __xdata vlan_ingress_mode_t type) __banked;
void port_l2_setup(void) __banked; void port_l2_setup(void) __banked;
uint16_t port_lag_members_get(uint8_t lag) __banked;
void port_lag_members_set(__xdata uint8_t lag, __xdata uint16_t members) __banked; void port_lag_members_set(__xdata uint8_t lag, __xdata uint16_t members) __banked;
void port_lag_hash_set(__xdata uint8_t lag, __xdata uint8_t hash) __banked; void port_lag_hash_set(__xdata uint8_t lag, __xdata uint8_t hash) __banked;
void port_eee_enable_all(__xdata uint8_t speed) __banked; void port_eee_enable_all(__xdata uint8_t speed) __banked;