[PATCH 5.4 141/168] staging: vt6656: Fix calling conditions of vnt_set_bss_mode

From: Greg Kroah-Hartman
Date: Tue Apr 28 2020 - 14:45:16 EST


From: Malcolm Priestley <tvboxspy@xxxxxxxxx>

commit 664ba5180234593b4b8517530e8198bf2f7359e2 upstream.

vnt_set_bss_mode needs to be called on all changes to BSS_CHANGED_BASIC_RATES,
BSS_CHANGED_ERP_PREAMBLE and BSS_CHANGED_ERP_SLOT

Remove all other calls and vnt_update_ifs which is called in vnt_set_bss_mode.

Fixes an issue that preamble mode is not being updated correctly.

Fixes: c12603576e06 ("staging: vt6656: Only call vnt_set_bss_mode on basic rates change.")
Cc: stable <stable@xxxxxxxxxxxxxxx>
Signed-off-by: Malcolm Priestley <tvboxspy@xxxxxxxxx>
Link: https://lore.kernel.org/r/44110801-6234-50d8-c583-9388f04b486c@xxxxxxxxx
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

---
drivers/staging/vt6656/main_usb.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

--- a/drivers/staging/vt6656/main_usb.c
+++ b/drivers/staging/vt6656/main_usb.c
@@ -633,8 +633,6 @@ static int vnt_add_interface(struct ieee

priv->op_mode = vif->type;

- vnt_set_bss_mode(priv);
-
/* LED blink on TX */
vnt_mac_set_led(priv, LEDSTS_STS, LEDSTS_INTER);

@@ -721,7 +719,6 @@ static void vnt_bss_info_changed(struct
priv->basic_rates = conf->basic_rates;

vnt_update_top_rates(priv);
- vnt_set_bss_mode(priv);

dev_dbg(&priv->usb->dev, "basic rates %x\n", conf->basic_rates);
}
@@ -750,11 +747,14 @@ static void vnt_bss_info_changed(struct
priv->short_slot_time = false;

vnt_set_short_slot_time(priv);
- vnt_update_ifs(priv);
vnt_set_vga_gain_offset(priv, priv->bb_vga[0]);
vnt_update_pre_ed_threshold(priv, false);
}

+ if (changed & (BSS_CHANGED_BASIC_RATES | BSS_CHANGED_ERP_PREAMBLE |
+ BSS_CHANGED_ERP_SLOT))
+ vnt_set_bss_mode(priv);
+
if (changed & BSS_CHANGED_TXPOWER)
vnt_rf_setpower(priv, priv->current_rate,
conf->chandef.chan->hw_value);