|
@@ -1858,7 +1858,6 @@ static void wl1271_op_stop(struct ieee80211_hw *hw)
|
|
|
wl->tx_results_count = 0;
|
|
|
wl->tx_packets_count = 0;
|
|
|
wl->time_offset = 0;
|
|
|
- wl->tx_spare_blocks = TX_HW_BLOCK_SPARE_DEFAULT;
|
|
|
wl->ap_fw_ps_map = 0;
|
|
|
wl->ap_ps_map = 0;
|
|
|
wl->sched_scanning = false;
|
|
@@ -2912,6 +2911,17 @@ static int wl1271_set_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
|
|
int ret;
|
|
|
bool is_ap = (wlvif->bss_type == BSS_TYPE_AP_BSS);
|
|
|
|
|
|
+ /*
|
|
|
+ * A role set to GEM cipher requires different Tx settings (namely
|
|
|
+ * spare blocks). Note when we are in this mode so the HW can adjust.
|
|
|
+ */
|
|
|
+ if (key_type == KEY_GEM) {
|
|
|
+ if (action == KEY_ADD_OR_REPLACE)
|
|
|
+ wlvif->is_gem = true;
|
|
|
+ else if (action == KEY_REMOVE)
|
|
|
+ wlvif->is_gem = false;
|
|
|
+ }
|
|
|
+
|
|
|
if (is_ap) {
|
|
|
struct wl1271_station *wl_sta;
|
|
|
u8 hlid;
|
|
@@ -2950,17 +2960,6 @@ static int wl1271_set_key(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
|
|
0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
|
|
};
|
|
|
|
|
|
- /*
|
|
|
- * A STA set to GEM cipher requires 2 tx spare blocks.
|
|
|
- * Return to default value when GEM cipher key is removed
|
|
|
- */
|
|
|
- if (key_type == KEY_GEM) {
|
|
|
- if (action == KEY_ADD_OR_REPLACE)
|
|
|
- wl->tx_spare_blocks = 2;
|
|
|
- else if (action == KEY_REMOVE)
|
|
|
- wl->tx_spare_blocks = TX_HW_BLOCK_SPARE_DEFAULT;
|
|
|
- }
|
|
|
-
|
|
|
addr = sta ? sta->addr : bcast_addr;
|
|
|
|
|
|
if (is_zero_ether_addr(addr)) {
|
|
@@ -5259,7 +5258,6 @@ struct ieee80211_hw *wlcore_alloc_hw(size_t priv_size)
|
|
|
wl->quirks = 0;
|
|
|
wl->platform_quirks = 0;
|
|
|
wl->sched_scanning = false;
|
|
|
- wl->tx_spare_blocks = TX_HW_BLOCK_SPARE_DEFAULT;
|
|
|
wl->system_hlid = WL12XX_SYSTEM_HLID;
|
|
|
wl->active_sta_count = 0;
|
|
|
wl->fwlog_size = 0;
|