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

userspace/tools: untag none by default in wrs_vlans

When parsing dot-config, set "untag none" for all ports that are not in ACCESS
mode.

Fix warnings in wrs_vlans
Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent 7c989d79
...@@ -906,6 +906,7 @@ static int read_dot_config(char *dot_config_file) ...@@ -906,6 +906,7 @@ static int read_dot_config(char *dot_config_file)
char buff[60]; char buff[60];
char *val_ch; char *val_ch;
int i; int i;
int mode;
if (access(dot_config_file, R_OK)) { if (access(dot_config_file, R_OK)) {
pr_error("Unable to read dot-config file %s\n", pr_error("Unable to read dot-config file %s\n",
...@@ -957,6 +958,7 @@ static int read_dot_config(char *dot_config_file) ...@@ -957,6 +958,7 @@ static int read_dot_config(char *dot_config_file)
for (port = 1; port <= NPORTS; port++) { for (port = 1; port <= NPORTS; port++) {
portmask = portmask | (1 << (port - 1)); portmask = portmask | (1 << (port - 1));
mode = QMODE_INVALID;
sprintf(buff, "VLANS_PORT%02d_MODE_ACCESS", port); sprintf(buff, "VLANS_PORT%02d_MODE_ACCESS", port);
ret = libwr_cfg_get(buff); ret = libwr_cfg_get(buff);
...@@ -964,6 +966,7 @@ static int read_dot_config(char *dot_config_file) ...@@ -964,6 +966,7 @@ static int read_dot_config(char *dot_config_file)
if (wrs_msg_level >= LOG_DEBUG) if (wrs_msg_level >= LOG_DEBUG)
printf("Found %s\n", buff); printf("Found %s\n", buff);
set_p_pmode(port - 1, QMODE_ACCESS); set_p_pmode(port - 1, QMODE_ACCESS);
mode = QMODE_ACCESS;
} }
sprintf(buff, "VLANS_PORT%02d_MODE_TRUNK", port); sprintf(buff, "VLANS_PORT%02d_MODE_TRUNK", port);
ret = libwr_cfg_get(buff); ret = libwr_cfg_get(buff);
...@@ -971,6 +974,7 @@ static int read_dot_config(char *dot_config_file) ...@@ -971,6 +974,7 @@ static int read_dot_config(char *dot_config_file)
if (wrs_msg_level >= LOG_DEBUG) if (wrs_msg_level >= LOG_DEBUG)
printf("Found %s\n", buff); printf("Found %s\n", buff);
set_p_pmode(port - 1, QMODE_TRUNK); set_p_pmode(port - 1, QMODE_TRUNK);
mode = QMODE_TRUNK;
} }
sprintf(buff, "VLANS_PORT%02d_MODE_DISABLED", port); sprintf(buff, "VLANS_PORT%02d_MODE_DISABLED", port);
ret = libwr_cfg_get(buff); ret = libwr_cfg_get(buff);
...@@ -978,6 +982,7 @@ static int read_dot_config(char *dot_config_file) ...@@ -978,6 +982,7 @@ static int read_dot_config(char *dot_config_file)
if (wrs_msg_level >= LOG_DEBUG) if (wrs_msg_level >= LOG_DEBUG)
printf("Found %s\n", buff); printf("Found %s\n", buff);
set_p_pmode(port - 1, QMODE_DISABLED); set_p_pmode(port - 1, QMODE_DISABLED);
mode = QMODE_DISABLED;
} }
sprintf(buff, "VLANS_PORT%02d_MODE_UNQUALIFIED", port); sprintf(buff, "VLANS_PORT%02d_MODE_UNQUALIFIED", port);
ret = libwr_cfg_get(buff); ret = libwr_cfg_get(buff);
...@@ -985,21 +990,35 @@ static int read_dot_config(char *dot_config_file) ...@@ -985,21 +990,35 @@ static int read_dot_config(char *dot_config_file)
if (wrs_msg_level >= LOG_DEBUG) if (wrs_msg_level >= LOG_DEBUG)
printf("Found %s\n", buff); printf("Found %s\n", buff);
set_p_pmode(port - 1, QMODE_UNQ); set_p_pmode(port - 1, QMODE_UNQ);
mode = QMODE_UNQ;
} }
sprintf(buff, "VLANS_PORT%02d_UNTAG_ALL", port);
ret = libwr_cfg_get(buff); /* check UNTAG all or none only for ACCESS
if (ret && !strcmp(ret, "y")) { * for other modes use untag none by default */
if (wrs_msg_level >= LOG_DEBUG) if (mode == QMODE_ACCESS) {
printf("Found %s\n", buff); sprintf(buff, "VLANS_PORT%02d_UNTAG_ALL", port);
set_p_untag(port - 1, 1); ret = libwr_cfg_get(buff);
} if (ret && !strcmp(ret, "y")) {
sprintf(buff, "VLANS_PORT%02d_UNTAG_NONE", port); if (wrs_msg_level >= LOG_DEBUG)
ret = libwr_cfg_get(buff); printf("Found %s\n", buff);
if (ret && !strcmp(ret, "y")) { set_p_untag(port - 1, 1);
}
sprintf(buff, "VLANS_PORT%02d_UNTAG_NONE", port);
ret = libwr_cfg_get(buff);
if (ret && !strcmp(ret, "y")) {
if (wrs_msg_level >= LOG_DEBUG)
printf("Found %s\n", buff);
set_p_untag(port - 1, 0);
}
} else {
/* for other modes "untag none" by default */
if (wrs_msg_level >= LOG_DEBUG) if (wrs_msg_level >= LOG_DEBUG)
printf("Found %s\n", buff); printf("Setting port %d to untag none\n",
port);
set_p_untag(port - 1, 0); set_p_untag(port - 1, 0);
} }
sprintf(buff, "VLANS_PORT%02d_PRIO", port); sprintf(buff, "VLANS_PORT%02d_PRIO", port);
val_ch = libwr_cfg_get(buff); val_ch = libwr_cfg_get(buff);
if (val_ch) { if (val_ch) {
...@@ -1028,11 +1047,11 @@ static int read_dot_config(char *dot_config_file) ...@@ -1028,11 +1047,11 @@ static int read_dot_config(char *dot_config_file)
static void read_dot_config_vlans(int vlan_min, int vlan_max) static void read_dot_config_vlans(int vlan_min, int vlan_max)
{ {
int fid, prio, drop, pmask; int fid, prio, drop;
unsigned long pmask;
int vlan_flags; int vlan_flags;
int vlan; int vlan;
char buff[60]; char buff[60];
int port;
for (vlan = vlan_min; vlan <= vlan_max; vlan++) { for (vlan = vlan_min; vlan <= vlan_max; vlan++) {
vlan_flags = 0; vlan_flags = 0;
...@@ -1090,12 +1109,12 @@ static void read_dot_config_vlans(int vlan_min, int vlan_max) ...@@ -1090,12 +1109,12 @@ static void read_dot_config_vlans(int vlan_min, int vlan_max)
parse_mask(buff, &pmask); parse_mask(buff, &pmask);
if (pmask < RTU_PMASK_MIN || pmask > RTU_PMASK_MAX) { if (pmask < RTU_PMASK_MIN || pmask > RTU_PMASK_MAX) {
pr_error("invalid port mask 0x%x (\"%s\") for " pr_error("invalid port mask 0x%lx (\"%s\") for"
"vlan %4d\n", pmask, buff, vlan); " vlan %4d\n", pmask, buff, vlan);
exit(1); exit(1);
} }
if (wrs_msg_level >= LOG_DEBUG) if (wrs_msg_level >= LOG_DEBUG)
printf("Vlan %4d: Port mask 0x%05x\n", printf("Vlan %4d: Port mask 0x%05lx\n",
vlan, pmask); vlan, pmask);
vlan_flags |= VALID_PMASK; vlan_flags |= VALID_PMASK;
} }
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#define QMODE_TRUNK 1 #define QMODE_TRUNK 1
#define QMODE_DISABLED 2 #define QMODE_DISABLED 2
#define QMODE_UNQ 3 #define QMODE_UNQ 3
#define QMODE_INVALID 4
#define MINIPC_TIMEOUT 200 #define MINIPC_TIMEOUT 200
......
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