Skip to content

Commit 248c690

Browse files
committed
Merge tag 'wireless-drivers-for-davem-2018-07-03' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers
Kalle Valo says: ==================== wireless-drivers fixes for 4.18 First set of fixes for 4.18 and for numerous drivers. Something to mention about is the wcn36xx fix which makes it possible to compile with gcc older than 4.4 (though I'm not sure if we even support those anymore). qtnfmac * coverity fix for a new commit in v4.18-rc1 rtlwifi * fix kernel oops during driver removal * fix firmware image corruption for rtl8821ae brcmfmac * fix crash if there's no firmware image mwifiex * a revert and a better fix for a new commit v4.18-rc1 mt7601u * fix a recent regression about unnecessary warning about avg_rssi wcn36xx * convert testmode.c to plain ASCII ath10k * fix a firmware crash during bandwidth change ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 2d0ec54 + 4fa9433 commit 248c690

File tree

14 files changed

+47
-27
lines changed

14 files changed

+47
-27
lines changed

MAINTAINERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8628,7 +8628,7 @@ MARVELL MWIFIEX WIRELESS DRIVER
86288628
M: Amitkumar Karwar <[email protected]>
86298629
M: Nishant Sarmukadam <[email protected]>
86308630
M: Ganapathi Bhat <[email protected]>
8631-
M: Xinming Hu <huxm@marvell.com>
8631+
M: Xinming Hu <huxinming820@gmail.com>
86328632
86338633
S: Maintained
86348634
F: drivers/net/wireless/marvell/mwifiex/

drivers/net/wireless/ath/ath10k/mac.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6058,8 +6058,19 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
60586058
ath10k_mac_max_vht_nss(vht_mcs_mask)));
60596059

60606060
if (changed & IEEE80211_RC_BW_CHANGED) {
6061-
ath10k_dbg(ar, ATH10K_DBG_MAC, "mac update sta %pM peer bw %d\n",
6062-
sta->addr, bw);
6061+
enum wmi_phy_mode mode;
6062+
6063+
mode = chan_to_phymode(&def);
6064+
ath10k_dbg(ar, ATH10K_DBG_MAC, "mac update sta %pM peer bw %d phymode %d\n",
6065+
sta->addr, bw, mode);
6066+
6067+
err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
6068+
WMI_PEER_PHYMODE, mode);
6069+
if (err) {
6070+
ath10k_warn(ar, "failed to update STA %pM peer phymode %d: %d\n",
6071+
sta->addr, mode, err);
6072+
goto exit;
6073+
}
60636074

60646075
err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
60656076
WMI_PEER_CHAN_WIDTH, bw);
@@ -6100,6 +6111,7 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
61006111
sta->addr);
61016112
}
61026113

6114+
exit:
61036115
mutex_unlock(&ar->conf_mutex);
61046116
}
61056117

drivers/net/wireless/ath/ath10k/wmi.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6144,6 +6144,7 @@ enum wmi_peer_param {
61446144
WMI_PEER_NSS = 0x5,
61456145
WMI_PEER_USE_4ADDR = 0x6,
61466146
WMI_PEER_DEBUG = 0xa,
6147+
WMI_PEER_PHYMODE = 0xd,
61476148
WMI_PEER_DUMMY_VAR = 0xff, /* dummy parameter for STA PS workaround */
61486149
};
61496150

drivers/net/wireless/ath/wcn36xx/testmode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*
1+
/*
22
* Copyright (c) 2018, The Linux Foundation. All rights reserved.
33
*
44
* Permission to use, copy, modify, and/or distribute this software for any

drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4296,6 +4296,13 @@ void brcmf_sdio_remove(struct brcmf_sdio *bus)
42964296
brcmf_dbg(TRACE, "Enter\n");
42974297

42984298
if (bus) {
4299+
/* Stop watchdog task */
4300+
if (bus->watchdog_tsk) {
4301+
send_sig(SIGTERM, bus->watchdog_tsk, 1);
4302+
kthread_stop(bus->watchdog_tsk);
4303+
bus->watchdog_tsk = NULL;
4304+
}
4305+
42994306
/* De-register interrupt handler */
43004307
brcmf_sdiod_intr_unregister(bus->sdiodev);
43014308

drivers/net/wireless/marvell/mwifiex/usb.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -644,11 +644,6 @@ static void mwifiex_usb_disconnect(struct usb_interface *intf)
644644
MWIFIEX_FUNC_SHUTDOWN);
645645
}
646646

647-
if (adapter->workqueue)
648-
flush_workqueue(adapter->workqueue);
649-
650-
mwifiex_usb_free(card);
651-
652647
mwifiex_dbg(adapter, FATAL,
653648
"%s: removing card\n", __func__);
654649
mwifiex_remove_card(adapter);
@@ -1356,6 +1351,8 @@ static void mwifiex_unregister_dev(struct mwifiex_adapter *adapter)
13561351
{
13571352
struct usb_card_rec *card = (struct usb_card_rec *)adapter->card;
13581353

1354+
mwifiex_usb_free(card);
1355+
13591356
mwifiex_usb_cleanup_tx_aggr(adapter);
13601357

13611358
card->adapter = NULL;

drivers/net/wireless/mediatek/mt7601u/phy.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -986,13 +986,15 @@ static void mt7601u_agc_tune(struct mt7601u_dev *dev)
986986
*/
987987
spin_lock_bh(&dev->con_mon_lock);
988988
avg_rssi = ewma_rssi_read(&dev->avg_rssi);
989-
WARN_ON_ONCE(avg_rssi == 0);
989+
spin_unlock_bh(&dev->con_mon_lock);
990+
if (avg_rssi == 0)
991+
return;
992+
990993
avg_rssi = -avg_rssi;
991994
if (avg_rssi <= -70)
992995
val -= 0x20;
993996
else if (avg_rssi <= -60)
994997
val -= 0x10;
995-
spin_unlock_bh(&dev->con_mon_lock);
996998

997999
if (val != mt7601u_bbp_rr(dev, 66))
9981000
mt7601u_bbp_wr(dev, 66, val);

drivers/net/wireless/quantenna/qtnfmac/cfg80211.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -654,8 +654,7 @@ qtnf_disconnect(struct wiphy *wiphy, struct net_device *dev,
654654
vif = qtnf_mac_get_base_vif(mac);
655655
if (!vif) {
656656
pr_err("MAC%u: primary VIF is not configured\n", mac->macid);
657-
ret = -EFAULT;
658-
goto out;
657+
return -EFAULT;
659658
}
660659

661660
if (vif->wdev.iftype != NL80211_IFTYPE_STATION) {

drivers/net/wireless/realtek/rtlwifi/base.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -484,18 +484,21 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw)
484484

485485
}
486486

487-
void rtl_deinit_deferred_work(struct ieee80211_hw *hw)
487+
void rtl_deinit_deferred_work(struct ieee80211_hw *hw, bool ips_wq)
488488
{
489489
struct rtl_priv *rtlpriv = rtl_priv(hw);
490490

491491
del_timer_sync(&rtlpriv->works.watchdog_timer);
492492

493-
cancel_delayed_work(&rtlpriv->works.watchdog_wq);
494-
cancel_delayed_work(&rtlpriv->works.ips_nic_off_wq);
495-
cancel_delayed_work(&rtlpriv->works.ps_work);
496-
cancel_delayed_work(&rtlpriv->works.ps_rfon_wq);
497-
cancel_delayed_work(&rtlpriv->works.fwevt_wq);
498-
cancel_delayed_work(&rtlpriv->works.c2hcmd_wq);
493+
cancel_delayed_work_sync(&rtlpriv->works.watchdog_wq);
494+
if (ips_wq)
495+
cancel_delayed_work(&rtlpriv->works.ips_nic_off_wq);
496+
else
497+
cancel_delayed_work_sync(&rtlpriv->works.ips_nic_off_wq);
498+
cancel_delayed_work_sync(&rtlpriv->works.ps_work);
499+
cancel_delayed_work_sync(&rtlpriv->works.ps_rfon_wq);
500+
cancel_delayed_work_sync(&rtlpriv->works.fwevt_wq);
501+
cancel_delayed_work_sync(&rtlpriv->works.c2hcmd_wq);
499502
}
500503
EXPORT_SYMBOL_GPL(rtl_deinit_deferred_work);
501504

drivers/net/wireless/realtek/rtlwifi/base.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ void rtl_init_rfkill(struct ieee80211_hw *hw);
121121
void rtl_deinit_rfkill(struct ieee80211_hw *hw);
122122

123123
void rtl_watch_dog_timer_callback(struct timer_list *t);
124-
void rtl_deinit_deferred_work(struct ieee80211_hw *hw);
124+
void rtl_deinit_deferred_work(struct ieee80211_hw *hw, bool ips_wq);
125125

126126
bool rtl_action_proc(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx);
127127
int rtlwifi_rate_mapping(struct ieee80211_hw *hw, bool isht,

0 commit comments

Comments
 (0)