Commit adaef660 authored by Adam Wujek's avatar Adam Wujek 💬

userspace: report all modes in wr_mon and snmp

Until now snmpd and wr_mon reported mode only as master or slave. However,
mode can be also non-wr or auto.

changed:
-wr_mon
-snmp
-MIB
-dump_shmem
Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent 0f207471
......@@ -439,7 +439,13 @@ portLink OBJECT-TYPE
::= { ppsiPort 1 }
portMode OBJECT-TYPE
SYNTAX INTEGER {slave(0), master(1)}
SYNTAX INTEGER {
unknown(0),
master(1),
slave(2),
non-wr(3),
auto(4)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
......
......@@ -250,8 +250,7 @@ static void wrs_ppsi_get_per_port(void)
/* No need to copy all ports structures, only what
* we're interested in */
wrs_p_array[i].link_up = state_up(port_state->state);
wrs_p_array[i].port_mode = (port_state->mode ==
HEXP_PORT_MODE_WR_SLAVE ? 0 : 1);
wrs_p_array[i].port_mode = port_state->mode;
if (port_state->state == HAL_PORT_STATE_DISABLED)
/* if port is disabled don't fill
* other fields */
......
......@@ -179,6 +179,15 @@ void show_ports(void)
case HEXP_PORT_MODE_WR_SLAVE:
term_cprintf(C_WHITE, "WR Slave ");
break;
case HEXP_PORT_MODE_NON_WR:
term_cprintf(C_WHITE, "Non WR ");
break;
case HEXP_PORT_MODE_WR_M_AND_S:
term_cprintf(C_WHITE, "WR auto ");
break;
default:
term_cprintf(C_WHITE, "Unknown ");
break;
}
if (port_state->locked)
......@@ -206,9 +215,23 @@ void show_ports(void)
printf("port:%s ", if_name);
printf("lnk:%d ", state_up(port_state->state));
printf("mode:%s ",
port_state->mode == HEXP_PORT_MODE_WR_SLAVE
? "S" : "M");
switch (port_state->mode) {
case HEXP_PORT_MODE_WR_MASTER:
printf("mode:M ");
break;
case HEXP_PORT_MODE_WR_SLAVE:
printf("mode:S ");
break;
case HEXP_PORT_MODE_NON_WR:
printf("mode:N ");
break;
case HEXP_PORT_MODE_WR_M_AND_S:
printf("mode:A ");
break;
default:
printf("mode:U ");
break;
}
printf("lock:%d ", port_state->locked);
}
printf("\n");
......
......@@ -65,6 +65,7 @@ enum dump_type {
dump_type_TimeInternal,
dump_type_ip_address,
dump_type_sfp_flags,
dump_type_port_mode,
};
static int dump_all_rtu_entries = 0; /* rtu exports 4096 vlans and 2048 htab
......@@ -178,6 +179,25 @@ void dump_one_field(void *addr, struct dump_info *info)
printf("SFP in data base, ");
printf("\n");
break;
case dump_type_port_mode:
switch (*(uint32_t *)p) {
case HEXP_PORT_MODE_WR_MASTER:
printf("WR Master\n");
break;
case HEXP_PORT_MODE_WR_SLAVE:
printf("WR Slave\n");
break;
case HEXP_PORT_MODE_NON_WR:
printf("Non-WR\n");
break;
case HEXP_PORT_MODE_WR_M_AND_S:
printf("Auto\n");
break;
default:
printf("Undefined\n");
break;
}
break;
}
}
void dump_many_fields(void *addr, struct dump_info *info, int ninfo)
......@@ -215,7 +235,7 @@ struct dump_info hal_port_info [] = {
DUMP_FIELD(int, hw_index),
DUMP_FIELD(int, fd),
DUMP_FIELD(int, hw_addr_auto),
DUMP_FIELD(int, mode),
DUMP_FIELD(port_mode, mode),
DUMP_FIELD(int, state),
DUMP_FIELD(int, fiber_index),
DUMP_FIELD(int, locked),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment