You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

51 lines
1.4 KiB

Disabling PG currently validates the entire given PG config,
even if no configuration is given. Of course since PG is
being disabled, the configuration wouldn't be used anyway, so
ignore any PG configuration given when disabling it.
Signed-off-by: Dan Williams <dcbw at redhat.com>
---
lldp_dcbx_cmds.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lldp_dcbx_cmds.c b/lldp_dcbx_cmds.c
index 7fdf6c4..8dcee7a 100644
--- a/lldp_dcbx_cmds.c
+++ b/lldp_dcbx_cmds.c
@@ -939,14 +939,18 @@ static int set_pg_config(pg_attribs *pg_data, char *port_id, char *ibuf,
cmd_status status = cmd_success;
int i, is_pfc;
int plen;
int off;
bool used[MAX_BANDWIDTH_GROUPS];
bool uppcts_changed = false;
+ /* If PG is disabled, skip changing any other attributes */
+ if (!(pg_data->protocol.Enable))
+ goto done;
+
plen=strlen(port_id);
off = DCB_PORT_OFF + plen + CFG_LEN;
if (ilen == (off + CFG_PG_DLEN)) {
for (i = 0; i < MAX_USER_PRIORITIES; i++) {
flag = *(ibuf+off+PG_UP2TC(i));
if (flag == CLIF_NOT_SUPPLIED)
@@ -1063,14 +1067,15 @@ static int set_pg_config(pg_attribs *pg_data, char *port_id, char *ibuf,
}
if (status != cmd_success) {
printf("invalid DCB settings\n");
return status;
}
+done:
is_pfc = get_pfc(port_id, &pfc_data);
if (is_pfc == cmd_success)
status = put_pg(port_id, pg_data, &pfc_data);
else
status = put_pg(port_id, pg_data, NULL);
if (status != cmd_success)
--
1.8.5.3