wireless-drivers fixes for 4.8
iwlwifi * fix P2P dump trigger * prevent a potential null dereference in iwlmvm * prevent an uninitialized value from being returned in iwlmvm * advertise support for channel width change in AP mode ath10k * fix racy rx status retrieval from htt context * QCA9887 support is not experimental anymore, remove the warning message ath9k * fix regression with led GPIOs * fix AR5416 GPIO access warning brcmfmac * avoid potential stack overflow in brcmf_cfg80211_start_ap() -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQEcBAABAgAGBQJX0UZGAAoJEG4XJFUm622bNrQH/1x1A5go1O0WT9LFz7xgowY9 LtcpDcyDsz0h+dn1d9VuncTuO8mSREP/zxcDyibhiwnrVXR00QM0F9VgPSlUxASH PwM06NZACblCk/mqSzI79BJ8kNBlwIhcr6OXpwzlcvF9JMUIDu/hQCdRPPn0lDRI XVJHrM7dP2ZB0sVKAbM7+1Q1Bnv5JetPUduu1jOBtk+HiGjOAsejTFOh6AsOqZzZ ZUTKBJeGkDp3XEVnlgkhJ1Y9xPaMpke/yqAlOPIgP90Ghd2SMJHTHiW6S28P/W1F FMtTMXbYzzHAHNVSnOMgJyWRm1xD/Y6sVkeyXTD40BgHYXZcB6uHVLnzjR4i4BY= =teXL -----END PGP SIGNATURE----- Merge tag 'wireless-drivers-for-davem-2016-09-08' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers Kalle Valo says: ==================== wireless-drivers fixes for 4.8 iwlwifi * fix P2P dump trigger * prevent a potential null dereference in iwlmvm * prevent an uninitialized value from being returned in iwlmvm * advertise support for channel width change in AP mode ath10k * fix racy rx status retrieval from htt context * QCA9887 support is not experimental anymore, remove the warning message ath9k * fix regression with led GPIOs * fix AR5416 GPIO access warning brcmfmac * avoid potential stack overflow in brcmf_cfg80211_start_ap() ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
0808a29a20
@ -1525,7 +1525,7 @@ static void ath10k_htt_rx_h_filter(struct ath10k *ar,
|
||||
static int ath10k_htt_rx_handle_amsdu(struct ath10k_htt *htt)
|
||||
{
|
||||
struct ath10k *ar = htt->ar;
|
||||
static struct ieee80211_rx_status rx_status;
|
||||
struct ieee80211_rx_status *rx_status = &htt->rx_status;
|
||||
struct sk_buff_head amsdu;
|
||||
int ret;
|
||||
|
||||
@ -1549,11 +1549,11 @@ static int ath10k_htt_rx_handle_amsdu(struct ath10k_htt *htt)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ath10k_htt_rx_h_ppdu(ar, &amsdu, &rx_status, 0xffff);
|
||||
ath10k_htt_rx_h_ppdu(ar, &amsdu, rx_status, 0xffff);
|
||||
ath10k_htt_rx_h_unchain(ar, &amsdu, ret > 0);
|
||||
ath10k_htt_rx_h_filter(ar, &amsdu, &rx_status);
|
||||
ath10k_htt_rx_h_mpdu(ar, &amsdu, &rx_status);
|
||||
ath10k_htt_rx_h_deliver(ar, &amsdu, &rx_status);
|
||||
ath10k_htt_rx_h_filter(ar, &amsdu, rx_status);
|
||||
ath10k_htt_rx_h_mpdu(ar, &amsdu, rx_status);
|
||||
ath10k_htt_rx_h_deliver(ar, &amsdu, rx_status);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -3162,7 +3162,6 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
|
||||
pci_hard_reset = ath10k_pci_qca988x_chip_reset;
|
||||
break;
|
||||
case QCA9887_1_0_DEVICE_ID:
|
||||
dev_warn(&pdev->dev, "QCA9887 support is still experimental, there are likely bugs. You have been warned.\n");
|
||||
hw_rev = ATH10K_HW_QCA9887;
|
||||
pci_ps = false;
|
||||
pci_soft_reset = ath10k_pci_warm_reset;
|
||||
|
@ -2482,6 +2482,8 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ath9k_gpio_cap_init(ah);
|
||||
|
||||
if (AR_SREV_9485(ah) ||
|
||||
AR_SREV_9285(ah) ||
|
||||
AR_SREV_9330(ah) ||
|
||||
@ -2531,8 +2533,6 @@ int ath9k_hw_fill_cap_info(struct ath_hw *ah)
|
||||
else
|
||||
pCap->hw_caps &= ~ATH9K_HW_CAP_HT;
|
||||
|
||||
ath9k_gpio_cap_init(ah);
|
||||
|
||||
if (AR_SREV_9160_10_OR_LATER(ah) || AR_SREV_9100(ah))
|
||||
pCap->rts_aggr_limit = ATH_AMPDU_LIMIT_MAX;
|
||||
else
|
||||
|
@ -718,9 +718,12 @@ static int ath9k_start(struct ieee80211_hw *hw)
|
||||
if (!ath_complete_reset(sc, false))
|
||||
ah->reset_power_on = false;
|
||||
|
||||
if (ah->led_pin >= 0)
|
||||
if (ah->led_pin >= 0) {
|
||||
ath9k_hw_set_gpio(ah, ah->led_pin,
|
||||
(ah->config.led_active_high) ? 1 : 0);
|
||||
ath9k_hw_gpio_request_out(ah, ah->led_pin, NULL,
|
||||
AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
|
||||
}
|
||||
|
||||
/*
|
||||
* Reset key cache to sane defaults (all entries cleared) instead of
|
||||
@ -864,9 +867,11 @@ static void ath9k_stop(struct ieee80211_hw *hw)
|
||||
|
||||
spin_lock_bh(&sc->sc_pcu_lock);
|
||||
|
||||
if (ah->led_pin >= 0)
|
||||
if (ah->led_pin >= 0) {
|
||||
ath9k_hw_set_gpio(ah, ah->led_pin,
|
||||
(ah->config.led_active_high) ? 0 : 1);
|
||||
ath9k_hw_gpio_request_in(ah, ah->led_pin, NULL);
|
||||
}
|
||||
|
||||
ath_prepare_reset(sc);
|
||||
|
||||
|
@ -4527,7 +4527,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
|
||||
(u8 *)&settings->beacon.head[ie_offset],
|
||||
settings->beacon.head_len - ie_offset,
|
||||
WLAN_EID_SSID);
|
||||
if (!ssid_ie)
|
||||
if (!ssid_ie || ssid_ie->len > IEEE80211_MAX_SSID_LEN)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(ssid_le.SSID, ssid_ie->data, ssid_ie->len);
|
||||
|
@ -960,5 +960,6 @@ int iwl_mvm_start_fw_dbg_conf(struct iwl_mvm *mvm, u8 conf_id)
|
||||
}
|
||||
|
||||
mvm->fw_dbg_conf = conf_id;
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -105,7 +105,8 @@ iwl_fw_dbg_trigger_vif_match(struct iwl_fw_dbg_trigger_tlv *trig,
|
||||
{
|
||||
u32 trig_vif = le32_to_cpu(trig->vif_type);
|
||||
|
||||
return trig_vif == IWL_FW_DBG_CONF_VIF_ANY || vif->type == trig_vif;
|
||||
return trig_vif == IWL_FW_DBG_CONF_VIF_ANY ||
|
||||
ieee80211_vif_type_p2p(vif) == trig_vif;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
|
@ -624,6 +624,7 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
|
||||
hw->wiphy->features |= NL80211_FEATURE_P2P_GO_CTWIN |
|
||||
NL80211_FEATURE_LOW_PRIORITY_SCAN |
|
||||
NL80211_FEATURE_P2P_GO_OPPPS |
|
||||
NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE |
|
||||
NL80211_FEATURE_DYNAMIC_SMPS |
|
||||
NL80211_FEATURE_STATIC_SMPS |
|
||||
NL80211_FEATURE_SUPPORTS_WMM_ADMISSION;
|
||||
|
@ -467,6 +467,8 @@ struct iwl_mvm_vif {
|
||||
static inline struct iwl_mvm_vif *
|
||||
iwl_mvm_vif_from_mac80211(struct ieee80211_vif *vif)
|
||||
{
|
||||
if (!vif)
|
||||
return NULL;
|
||||
return (void *)vif->drv_priv;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user