diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2016-02-27 14:59:03 -0500 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2016-02-27 14:59:03 -0500 |
commit | 51bcc7386a01074452c585e421a24dfc7b19063b (patch) | |
tree | f9c7633d6d4349c0e21b23090b857a0fcd790418 /drivers/net/wireless | |
parent | c89e333d5e4a27f736c960b29040b261c21563a5 (diff) | |
parent | 50ee738d7271fe825e4024cdfa5c5301a871e2c2 (diff) |
Merge tag 'mac80211-next-for-davem-2016-02-26' into next2
Here's another round of updates for -next:
* big A-MSDU RX performance improvement (avoid linearize of paged RX)
* rfkill changes: cleanups, documentation, platform properties
* basic PBSS support in cfg80211
* MU-MIMO action frame processing support
* BlockAck reordering & duplicate detection offload support
* various cleanups & little fixes
Diffstat (limited to 'drivers/net/wireless')
25 files changed, 121 insertions, 94 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 6146a293601a..368de5e5a04f 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c | |||
@@ -6366,12 +6366,13 @@ static u64 ath10k_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif) | |||
6366 | 6366 | ||
6367 | static int ath10k_ampdu_action(struct ieee80211_hw *hw, | 6367 | static int ath10k_ampdu_action(struct ieee80211_hw *hw, |
6368 | struct ieee80211_vif *vif, | 6368 | struct ieee80211_vif *vif, |
6369 | enum ieee80211_ampdu_mlme_action action, | 6369 | struct ieee80211_ampdu_params *params) |
6370 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
6371 | u8 buf_size, bool amsdu) | ||
6372 | { | 6370 | { |
6373 | struct ath10k *ar = hw->priv; | 6371 | struct ath10k *ar = hw->priv; |
6374 | struct ath10k_vif *arvif = ath10k_vif_to_arvif(vif); | 6372 | struct ath10k_vif *arvif = ath10k_vif_to_arvif(vif); |
6373 | struct ieee80211_sta *sta = params->sta; | ||
6374 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
6375 | u16 tid = params->tid; | ||
6375 | 6376 | ||
6376 | ath10k_dbg(ar, ATH10K_DBG_MAC, "mac ampdu vdev_id %i sta %pM tid %hu action %d\n", | 6377 | ath10k_dbg(ar, ATH10K_DBG_MAC, "mac ampdu vdev_id %i sta %pM tid %hu action %d\n", |
6377 | arvif->vdev_id, sta->addr, tid, action); | 6378 | arvif->vdev_id, sta->addr, tid, action); |
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c index fe1fd1a5ae15..639294a9e34d 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c | |||
@@ -1657,13 +1657,14 @@ static void ath9k_htc_reset_tsf(struct ieee80211_hw *hw, | |||
1657 | 1657 | ||
1658 | static int ath9k_htc_ampdu_action(struct ieee80211_hw *hw, | 1658 | static int ath9k_htc_ampdu_action(struct ieee80211_hw *hw, |
1659 | struct ieee80211_vif *vif, | 1659 | struct ieee80211_vif *vif, |
1660 | enum ieee80211_ampdu_mlme_action action, | 1660 | struct ieee80211_ampdu_params *params) |
1661 | struct ieee80211_sta *sta, | ||
1662 | u16 tid, u16 *ssn, u8 buf_size, bool amsdu) | ||
1663 | { | 1661 | { |
1664 | struct ath9k_htc_priv *priv = hw->priv; | 1662 | struct ath9k_htc_priv *priv = hw->priv; |
1665 | struct ath9k_htc_sta *ista; | 1663 | struct ath9k_htc_sta *ista; |
1666 | int ret = 0; | 1664 | int ret = 0; |
1665 | struct ieee80211_sta *sta = params->sta; | ||
1666 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
1667 | u16 tid = params->tid; | ||
1667 | 1668 | ||
1668 | mutex_lock(&priv->mutex); | 1669 | mutex_lock(&priv->mutex); |
1669 | ath9k_htc_ps_wakeup(priv); | 1670 | ath9k_htc_ps_wakeup(priv); |
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index c1b33fdcca08..cf58a304e9f0 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
@@ -1864,14 +1864,16 @@ static void ath9k_reset_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif) | |||
1864 | 1864 | ||
1865 | static int ath9k_ampdu_action(struct ieee80211_hw *hw, | 1865 | static int ath9k_ampdu_action(struct ieee80211_hw *hw, |
1866 | struct ieee80211_vif *vif, | 1866 | struct ieee80211_vif *vif, |
1867 | enum ieee80211_ampdu_mlme_action action, | 1867 | struct ieee80211_ampdu_params *params) |
1868 | struct ieee80211_sta *sta, | ||
1869 | u16 tid, u16 *ssn, u8 buf_size, bool amsdu) | ||
1870 | { | 1868 | { |
1871 | struct ath_softc *sc = hw->priv; | 1869 | struct ath_softc *sc = hw->priv; |
1872 | struct ath_common *common = ath9k_hw_common(sc->sc_ah); | 1870 | struct ath_common *common = ath9k_hw_common(sc->sc_ah); |
1873 | bool flush = false; | 1871 | bool flush = false; |
1874 | int ret = 0; | 1872 | int ret = 0; |
1873 | struct ieee80211_sta *sta = params->sta; | ||
1874 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
1875 | u16 tid = params->tid; | ||
1876 | u16 *ssn = ¶ms->ssn; | ||
1875 | 1877 | ||
1876 | mutex_lock(&sc->mutex); | 1878 | mutex_lock(&sc->mutex); |
1877 | 1879 | ||
diff --git a/drivers/net/wireless/ath/carl9170/main.c b/drivers/net/wireless/ath/carl9170/main.c index 19d3d64416bf..4d1527a2e292 100644 --- a/drivers/net/wireless/ath/carl9170/main.c +++ b/drivers/net/wireless/ath/carl9170/main.c | |||
@@ -1413,10 +1413,12 @@ static void carl9170_ampdu_work(struct work_struct *work) | |||
1413 | 1413 | ||
1414 | static int carl9170_op_ampdu_action(struct ieee80211_hw *hw, | 1414 | static int carl9170_op_ampdu_action(struct ieee80211_hw *hw, |
1415 | struct ieee80211_vif *vif, | 1415 | struct ieee80211_vif *vif, |
1416 | enum ieee80211_ampdu_mlme_action action, | 1416 | struct ieee80211_ampdu_params *params) |
1417 | struct ieee80211_sta *sta, | ||
1418 | u16 tid, u16 *ssn, u8 buf_size, bool amsdu) | ||
1419 | { | 1417 | { |
1418 | struct ieee80211_sta *sta = params->sta; | ||
1419 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
1420 | u16 tid = params->tid; | ||
1421 | u16 *ssn = ¶ms->ssn; | ||
1420 | struct ar9170 *ar = hw->priv; | 1422 | struct ar9170 *ar = hw->priv; |
1421 | struct carl9170_sta_info *sta_info = (void *) sta->drv_priv; | 1423 | struct carl9170_sta_info *sta_info = (void *) sta->drv_priv; |
1422 | struct carl9170_sta_tid *tid_info; | 1424 | struct carl9170_sta_tid *tid_info; |
diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c index 7c169abdbafe..a27279c2c695 100644 --- a/drivers/net/wireless/ath/wcn36xx/main.c +++ b/drivers/net/wireless/ath/wcn36xx/main.c | |||
@@ -857,12 +857,14 @@ static int wcn36xx_resume(struct ieee80211_hw *hw) | |||
857 | 857 | ||
858 | static int wcn36xx_ampdu_action(struct ieee80211_hw *hw, | 858 | static int wcn36xx_ampdu_action(struct ieee80211_hw *hw, |
859 | struct ieee80211_vif *vif, | 859 | struct ieee80211_vif *vif, |
860 | enum ieee80211_ampdu_mlme_action action, | 860 | struct ieee80211_ampdu_params *params) |
861 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
862 | u8 buf_size, bool amsdu) | ||
863 | { | 861 | { |
864 | struct wcn36xx *wcn = hw->priv; | 862 | struct wcn36xx *wcn = hw->priv; |
865 | struct wcn36xx_sta *sta_priv = NULL; | 863 | struct wcn36xx_sta *sta_priv = NULL; |
864 | struct ieee80211_sta *sta = params->sta; | ||
865 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
866 | u16 tid = params->tid; | ||
867 | u16 *ssn = ¶ms->ssn; | ||
866 | 868 | ||
867 | wcn36xx_dbg(WCN36XX_DBG_MAC, "mac ampdu action action %d tid %d\n", | 869 | wcn36xx_dbg(WCN36XX_DBG_MAC, "mac ampdu action action %d tid %d\n", |
868 | action, tid); | 870 | action, tid); |
diff --git a/drivers/net/wireless/ath/wil6210/cfg80211.c b/drivers/net/wireless/ath/wil6210/cfg80211.c index 20d07ef679e8..1f231cd08138 100644 --- a/drivers/net/wireless/ath/wil6210/cfg80211.c +++ b/drivers/net/wireless/ath/wil6210/cfg80211.c | |||
@@ -422,6 +422,11 @@ static int wil_cfg80211_connect(struct wiphy *wiphy, | |||
422 | if (sme->privacy && !rsn_eid) | 422 | if (sme->privacy && !rsn_eid) |
423 | wil_info(wil, "WSC connection\n"); | 423 | wil_info(wil, "WSC connection\n"); |
424 | 424 | ||
425 | if (sme->pbss) { | ||
426 | wil_err(wil, "connect - PBSS not yet supported\n"); | ||
427 | return -EOPNOTSUPP; | ||
428 | } | ||
429 | |||
425 | bss = cfg80211_get_bss(wiphy, sme->channel, sme->bssid, | 430 | bss = cfg80211_get_bss(wiphy, sme->channel, sme->bssid, |
426 | sme->ssid, sme->ssid_len, | 431 | sme->ssid, sme->ssid_len, |
427 | IEEE80211_BSS_TYPE_ESS, IEEE80211_PRIVACY_ANY); | 432 | IEEE80211_BSS_TYPE_ESS, IEEE80211_PRIVACY_ANY); |
@@ -870,6 +875,11 @@ static int wil_cfg80211_start_ap(struct wiphy *wiphy, | |||
870 | return -EINVAL; | 875 | return -EINVAL; |
871 | } | 876 | } |
872 | 877 | ||
878 | if (info->pbss) { | ||
879 | wil_err(wil, "AP: PBSS not yet supported\n"); | ||
880 | return -EOPNOTSUPP; | ||
881 | } | ||
882 | |||
873 | switch (info->hidden_ssid) { | 883 | switch (info->hidden_ssid) { |
874 | case NL80211_HIDDEN_SSID_NOT_IN_USE: | 884 | case NL80211_HIDDEN_SSID_NOT_IN_USE: |
875 | hidden_ssid = WMI_HIDDEN_SSID_DISABLED; | 885 | hidden_ssid = WMI_HIDDEN_SSID_DISABLED; |
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c index bec2dc1ca2e4..61ae2768132a 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c | |||
@@ -818,13 +818,15 @@ brcms_ops_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | |||
818 | static int | 818 | static int |
819 | brcms_ops_ampdu_action(struct ieee80211_hw *hw, | 819 | brcms_ops_ampdu_action(struct ieee80211_hw *hw, |
820 | struct ieee80211_vif *vif, | 820 | struct ieee80211_vif *vif, |
821 | enum ieee80211_ampdu_mlme_action action, | 821 | struct ieee80211_ampdu_params *params) |
822 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
823 | u8 buf_size, bool amsdu) | ||
824 | { | 822 | { |
825 | struct brcms_info *wl = hw->priv; | 823 | struct brcms_info *wl = hw->priv; |
826 | struct scb *scb = &wl->wlc->pri_scb; | 824 | struct scb *scb = &wl->wlc->pri_scb; |
827 | int status; | 825 | int status; |
826 | struct ieee80211_sta *sta = params->sta; | ||
827 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
828 | u16 tid = params->tid; | ||
829 | u8 buf_size = params->buf_size; | ||
828 | 830 | ||
829 | if (WARN_ON(scb->magic != SCB_MAGIC)) | 831 | if (WARN_ON(scb->magic != SCB_MAGIC)) |
830 | return -EIDRM; | 832 | return -EIDRM; |
diff --git a/drivers/net/wireless/intel/iwlegacy/4965-mac.c b/drivers/net/wireless/intel/iwlegacy/4965-mac.c index fd38aa0763e4..b75f4ef3cdc7 100644 --- a/drivers/net/wireless/intel/iwlegacy/4965-mac.c +++ b/drivers/net/wireless/intel/iwlegacy/4965-mac.c | |||
@@ -5982,12 +5982,14 @@ il4965_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, | |||
5982 | 5982 | ||
5983 | int | 5983 | int |
5984 | il4965_mac_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 5984 | il4965_mac_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
5985 | enum ieee80211_ampdu_mlme_action action, | 5985 | struct ieee80211_ampdu_params *params) |
5986 | struct ieee80211_sta *sta, u16 tid, u16 * ssn, | ||
5987 | u8 buf_size, bool amsdu) | ||
5988 | { | 5986 | { |
5989 | struct il_priv *il = hw->priv; | 5987 | struct il_priv *il = hw->priv; |
5990 | int ret = -EINVAL; | 5988 | int ret = -EINVAL; |
5989 | struct ieee80211_sta *sta = params->sta; | ||
5990 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
5991 | u16 tid = params->tid; | ||
5992 | u16 *ssn = ¶ms->ssn; | ||
5991 | 5993 | ||
5992 | D_HT("A-MPDU action on addr %pM tid %d\n", sta->addr, tid); | 5994 | D_HT("A-MPDU action on addr %pM tid %d\n", sta->addr, tid); |
5993 | 5995 | ||
diff --git a/drivers/net/wireless/intel/iwlegacy/4965.h b/drivers/net/wireless/intel/iwlegacy/4965.h index 8ab8706f9422..e432715e02d8 100644 --- a/drivers/net/wireless/intel/iwlegacy/4965.h +++ b/drivers/net/wireless/intel/iwlegacy/4965.h | |||
@@ -182,9 +182,7 @@ void il4965_mac_update_tkip_key(struct ieee80211_hw *hw, | |||
182 | struct ieee80211_sta *sta, u32 iv32, | 182 | struct ieee80211_sta *sta, u32 iv32, |
183 | u16 *phase1key); | 183 | u16 *phase1key); |
184 | int il4965_mac_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 184 | int il4965_mac_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
185 | enum ieee80211_ampdu_mlme_action action, | 185 | struct ieee80211_ampdu_params *params); |
186 | struct ieee80211_sta *sta, u16 tid, u16 * ssn, | ||
187 | u8 buf_size, bool amsdu); | ||
188 | int il4965_mac_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 186 | int il4965_mac_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
189 | struct ieee80211_sta *sta); | 187 | struct ieee80211_sta *sta); |
190 | void | 188 | void |
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c index 4841be2aa499..1799469268ea 100644 --- a/drivers/net/wireless/intel/iwlwifi/dvm/lib.c +++ b/drivers/net/wireless/intel/iwlwifi/dvm/lib.c | |||
@@ -943,14 +943,16 @@ static void iwlagn_wowlan_program_keys(struct ieee80211_hw *hw, | |||
943 | switch (key->cipher) { | 943 | switch (key->cipher) { |
944 | case WLAN_CIPHER_SUITE_TKIP: | 944 | case WLAN_CIPHER_SUITE_TKIP: |
945 | if (sta) { | 945 | if (sta) { |
946 | u64 pn64; | ||
947 | |||
946 | tkip_sc = data->rsc_tsc->all_tsc_rsc.tkip.unicast_rsc; | 948 | tkip_sc = data->rsc_tsc->all_tsc_rsc.tkip.unicast_rsc; |
947 | tkip_tx_sc = &data->rsc_tsc->all_tsc_rsc.tkip.tsc; | 949 | tkip_tx_sc = &data->rsc_tsc->all_tsc_rsc.tkip.tsc; |
948 | 950 | ||
949 | rx_p1ks = data->tkip->rx_uni; | 951 | rx_p1ks = data->tkip->rx_uni; |
950 | 952 | ||
951 | ieee80211_get_key_tx_seq(key, &seq); | 953 | pn64 = atomic64_read(&key->tx_pn); |
952 | tkip_tx_sc->iv16 = cpu_to_le16(seq.tkip.iv16); | 954 | tkip_tx_sc->iv16 = cpu_to_le16(TKIP_PN_TO_IV16(pn64)); |
953 | tkip_tx_sc->iv32 = cpu_to_le32(seq.tkip.iv32); | 955 | tkip_tx_sc->iv32 = cpu_to_le32(TKIP_PN_TO_IV32(pn64)); |
954 | 956 | ||
955 | ieee80211_get_tkip_p1k_iv(key, seq.tkip.iv32, p1k); | 957 | ieee80211_get_tkip_p1k_iv(key, seq.tkip.iv32, p1k); |
956 | iwlagn_convert_p1k(p1k, data->tkip->tx.p1k); | 958 | iwlagn_convert_p1k(p1k, data->tkip->tx.p1k); |
@@ -996,19 +998,13 @@ static void iwlagn_wowlan_program_keys(struct ieee80211_hw *hw, | |||
996 | break; | 998 | break; |
997 | case WLAN_CIPHER_SUITE_CCMP: | 999 | case WLAN_CIPHER_SUITE_CCMP: |
998 | if (sta) { | 1000 | if (sta) { |
999 | u8 *pn = seq.ccmp.pn; | 1001 | u64 pn64; |
1000 | 1002 | ||
1001 | aes_sc = data->rsc_tsc->all_tsc_rsc.aes.unicast_rsc; | 1003 | aes_sc = data->rsc_tsc->all_tsc_rsc.aes.unicast_rsc; |
1002 | aes_tx_sc = &data->rsc_tsc->all_tsc_rsc.aes.tsc; | 1004 | aes_tx_sc = &data->rsc_tsc->all_tsc_rsc.aes.tsc; |
1003 | 1005 | ||
1004 | ieee80211_get_key_tx_seq(key, &seq); | 1006 | pn64 = atomic64_read(&key->tx_pn); |
1005 | aes_tx_sc->pn = cpu_to_le64( | 1007 | aes_tx_sc->pn = cpu_to_le64(pn64); |
1006 | (u64)pn[5] | | ||
1007 | ((u64)pn[4] << 8) | | ||
1008 | ((u64)pn[3] << 16) | | ||
1009 | ((u64)pn[2] << 24) | | ||
1010 | ((u64)pn[1] << 32) | | ||
1011 | ((u64)pn[0] << 40)); | ||
1012 | } else | 1008 | } else |
1013 | aes_sc = data->rsc_tsc->all_tsc_rsc.aes.multicast_rsc; | 1009 | aes_sc = data->rsc_tsc->all_tsc_rsc.aes.multicast_rsc; |
1014 | 1010 | ||
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c index 4db4cb7aa73a..c63ea79571ff 100644 --- a/drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c | |||
@@ -732,12 +732,15 @@ static inline bool iwl_enable_tx_ampdu(const struct iwl_cfg *cfg) | |||
732 | 732 | ||
733 | static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw, | 733 | static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw, |
734 | struct ieee80211_vif *vif, | 734 | struct ieee80211_vif *vif, |
735 | enum ieee80211_ampdu_mlme_action action, | 735 | struct ieee80211_ampdu_params *params) |
736 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
737 | u8 buf_size, bool amsdu) | ||
738 | { | 736 | { |
739 | struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw); | 737 | struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw); |
740 | int ret = -EINVAL; | 738 | int ret = -EINVAL; |
739 | struct ieee80211_sta *sta = params->sta; | ||
740 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
741 | u16 tid = params->tid; | ||
742 | u16 *ssn = ¶ms->ssn; | ||
743 | u8 buf_size = params->buf_size; | ||
741 | struct iwl_station_priv *sta_priv = (void *) sta->drv_priv; | 744 | struct iwl_station_priv *sta_priv = (void *) sta->drv_priv; |
742 | 745 | ||
743 | IWL_DEBUG_HT(priv, "A-MPDU action on addr %pM tid %d\n", | 746 | IWL_DEBUG_HT(priv, "A-MPDU action on addr %pM tid %d\n", |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c index 346376187ef8..5214482a0403 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/d3.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/d3.c | |||
@@ -251,16 +251,19 @@ static void iwl_mvm_wowlan_program_keys(struct ieee80211_hw *hw, | |||
251 | return; | 251 | return; |
252 | case WLAN_CIPHER_SUITE_TKIP: | 252 | case WLAN_CIPHER_SUITE_TKIP: |
253 | if (sta) { | 253 | if (sta) { |
254 | u64 pn64; | ||
255 | |||
254 | tkip_sc = data->rsc_tsc->all_tsc_rsc.tkip.unicast_rsc; | 256 | tkip_sc = data->rsc_tsc->all_tsc_rsc.tkip.unicast_rsc; |
255 | tkip_tx_sc = &data->rsc_tsc->all_tsc_rsc.tkip.tsc; | 257 | tkip_tx_sc = &data->rsc_tsc->all_tsc_rsc.tkip.tsc; |
256 | 258 | ||
257 | rx_p1ks = data->tkip->rx_uni; | 259 | rx_p1ks = data->tkip->rx_uni; |
258 | 260 | ||
259 | ieee80211_get_key_tx_seq(key, &seq); | 261 | pn64 = atomic64_read(&key->tx_pn); |
260 | tkip_tx_sc->iv16 = cpu_to_le16(seq.tkip.iv16); | 262 | tkip_tx_sc->iv16 = cpu_to_le16(TKIP_PN_TO_IV16(pn64)); |
261 | tkip_tx_sc->iv32 = cpu_to_le32(seq.tkip.iv32); | 263 | tkip_tx_sc->iv32 = cpu_to_le32(TKIP_PN_TO_IV32(pn64)); |
262 | 264 | ||
263 | ieee80211_get_tkip_p1k_iv(key, seq.tkip.iv32, p1k); | 265 | ieee80211_get_tkip_p1k_iv(key, TKIP_PN_TO_IV32(pn64), |
266 | p1k); | ||
264 | iwl_mvm_convert_p1k(p1k, data->tkip->tx.p1k); | 267 | iwl_mvm_convert_p1k(p1k, data->tkip->tx.p1k); |
265 | 268 | ||
266 | memcpy(data->tkip->mic_keys.tx, | 269 | memcpy(data->tkip->mic_keys.tx, |
@@ -1614,7 +1617,9 @@ static void iwl_mvm_d3_update_keys(struct ieee80211_hw *hw, | |||
1614 | case WLAN_CIPHER_SUITE_TKIP: | 1617 | case WLAN_CIPHER_SUITE_TKIP: |
1615 | iwl_mvm_tkip_sc_to_seq(&sc->tkip.tsc, &seq); | 1618 | iwl_mvm_tkip_sc_to_seq(&sc->tkip.tsc, &seq); |
1616 | iwl_mvm_set_tkip_rx_seq(sc->tkip.unicast_rsc, key); | 1619 | iwl_mvm_set_tkip_rx_seq(sc->tkip.unicast_rsc, key); |
1617 | ieee80211_set_key_tx_seq(key, &seq); | 1620 | atomic64_set(&key->tx_pn, |
1621 | (u64)seq.tkip.iv16 | | ||
1622 | ((u64)seq.tkip.iv32 << 16)); | ||
1618 | break; | 1623 | break; |
1619 | } | 1624 | } |
1620 | 1625 | ||
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index 01476f545695..53156810185d 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | |||
@@ -837,13 +837,16 @@ iwl_mvm_ampdu_check_trigger(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
837 | 837 | ||
838 | static int iwl_mvm_mac_ampdu_action(struct ieee80211_hw *hw, | 838 | static int iwl_mvm_mac_ampdu_action(struct ieee80211_hw *hw, |
839 | struct ieee80211_vif *vif, | 839 | struct ieee80211_vif *vif, |
840 | enum ieee80211_ampdu_mlme_action action, | 840 | struct ieee80211_ampdu_params *params) |
841 | struct ieee80211_sta *sta, u16 tid, | ||
842 | u16 *ssn, u8 buf_size, bool amsdu) | ||
843 | { | 841 | { |
844 | struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); | 842 | struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); |
845 | int ret; | 843 | int ret; |
846 | bool tx_agg_ref = false; | 844 | bool tx_agg_ref = false; |
845 | struct ieee80211_sta *sta = params->sta; | ||
846 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
847 | u16 tid = params->tid; | ||
848 | u16 *ssn = ¶ms->ssn; | ||
849 | u8 buf_size = params->buf_size; | ||
847 | 850 | ||
848 | IWL_DEBUG_HT(mvm, "A-MPDU action on addr %pM tid %d: action %d\n", | 851 | IWL_DEBUG_HT(mvm, "A-MPDU action on addr %pM tid %d: action %d\n", |
849 | sta->addr, tid, action); | 852 | sta->addr, tid, action); |
@@ -2582,7 +2585,7 @@ static int iwl_mvm_mac_set_key(struct ieee80211_hw *hw, | |||
2582 | switch (key->cipher) { | 2585 | switch (key->cipher) { |
2583 | case WLAN_CIPHER_SUITE_TKIP: | 2586 | case WLAN_CIPHER_SUITE_TKIP: |
2584 | key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC; | 2587 | key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC; |
2585 | key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV; | 2588 | key->flags |= IEEE80211_KEY_FLAG_PUT_IV_SPACE; |
2586 | break; | 2589 | break; |
2587 | case WLAN_CIPHER_SUITE_CCMP: | 2590 | case WLAN_CIPHER_SUITE_CCMP: |
2588 | key->flags |= IEEE80211_KEY_FLAG_PUT_IV_SPACE; | 2591 | key->flags |= IEEE80211_KEY_FLAG_PUT_IV_SPACE; |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c index 5d73db2534a0..caec54ba617a 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c | |||
@@ -299,6 +299,8 @@ static void iwl_mvm_set_tx_cmd_crypto(struct iwl_mvm *mvm, | |||
299 | 299 | ||
300 | case WLAN_CIPHER_SUITE_TKIP: | 300 | case WLAN_CIPHER_SUITE_TKIP: |
301 | tx_cmd->sec_ctl = TX_CMD_SEC_TKIP; | 301 | tx_cmd->sec_ctl = TX_CMD_SEC_TKIP; |
302 | pn = atomic64_inc_return(&keyconf->tx_pn); | ||
303 | ieee80211_tkip_add_iv(crypto_hdr, keyconf, pn); | ||
302 | ieee80211_get_tkip_p2k(keyconf, skb_frag, tx_cmd->key); | 304 | ieee80211_get_tkip_p2k(keyconf, skb_frag, tx_cmd->key); |
303 | break; | 305 | break; |
304 | 306 | ||
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index c32889a1e39c..ee37af1066d2 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c | |||
@@ -1333,10 +1333,8 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw, | |||
1333 | data->tx_bytes += skb->len; | 1333 | data->tx_bytes += skb->len; |
1334 | ack = mac80211_hwsim_tx_frame_no_nl(hw, skb, channel); | 1334 | ack = mac80211_hwsim_tx_frame_no_nl(hw, skb, channel); |
1335 | 1335 | ||
1336 | if (ack && skb->len >= 16) { | 1336 | if (ack && skb->len >= 16) |
1337 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; | ||
1338 | mac80211_hwsim_monitor_ack(channel, hdr->addr2); | 1337 | mac80211_hwsim_monitor_ack(channel, hdr->addr2); |
1339 | } | ||
1340 | 1338 | ||
1341 | ieee80211_tx_info_clear_status(txi); | 1339 | ieee80211_tx_info_clear_status(txi); |
1342 | 1340 | ||
@@ -1845,10 +1843,12 @@ static int mac80211_hwsim_testmode_cmd(struct ieee80211_hw *hw, | |||
1845 | 1843 | ||
1846 | static int mac80211_hwsim_ampdu_action(struct ieee80211_hw *hw, | 1844 | static int mac80211_hwsim_ampdu_action(struct ieee80211_hw *hw, |
1847 | struct ieee80211_vif *vif, | 1845 | struct ieee80211_vif *vif, |
1848 | enum ieee80211_ampdu_mlme_action action, | 1846 | struct ieee80211_ampdu_params *params) |
1849 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
1850 | u8 buf_size, bool amsdu) | ||
1851 | { | 1847 | { |
1848 | struct ieee80211_sta *sta = params->sta; | ||
1849 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
1850 | u16 tid = params->tid; | ||
1851 | |||
1852 | switch (action) { | 1852 | switch (action) { |
1853 | case IEEE80211_AMPDU_TX_START: | 1853 | case IEEE80211_AMPDU_TX_START: |
1854 | ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); | 1854 | ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); |
diff --git a/drivers/net/wireless/marvell/mwl8k.c b/drivers/net/wireless/marvell/mwl8k.c index 30e3aaae32e2..088429d0a634 100644 --- a/drivers/net/wireless/marvell/mwl8k.c +++ b/drivers/net/wireless/marvell/mwl8k.c | |||
@@ -5421,11 +5421,13 @@ static int mwl8k_get_survey(struct ieee80211_hw *hw, int idx, | |||
5421 | 5421 | ||
5422 | static int | 5422 | static int |
5423 | mwl8k_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 5423 | mwl8k_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
5424 | enum ieee80211_ampdu_mlme_action action, | 5424 | struct ieee80211_ampdu_params *params) |
5425 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
5426 | u8 buf_size, bool amsdu) | ||
5427 | { | 5425 | { |
5428 | 5426 | struct ieee80211_sta *sta = params->sta; | |
5427 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
5428 | u16 tid = params->tid; | ||
5429 | u16 *ssn = ¶ms->ssn; | ||
5430 | u8 buf_size = params->buf_size; | ||
5429 | int i, rc = 0; | 5431 | int i, rc = 0; |
5430 | struct mwl8k_priv *priv = hw->priv; | 5432 | struct mwl8k_priv *priv = hw->priv; |
5431 | struct mwl8k_ampdu_stream *stream; | 5433 | struct mwl8k_ampdu_stream *stream; |
diff --git a/drivers/net/wireless/mediatek/mt7601u/main.c b/drivers/net/wireless/mediatek/mt7601u/main.c index f715eee39851..e70dd9523911 100644 --- a/drivers/net/wireless/mediatek/mt7601u/main.c +++ b/drivers/net/wireless/mediatek/mt7601u/main.c | |||
@@ -334,11 +334,13 @@ static int mt7601u_set_rts_threshold(struct ieee80211_hw *hw, u32 value) | |||
334 | 334 | ||
335 | static int | 335 | static int |
336 | mt76_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 336 | mt76_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
337 | enum ieee80211_ampdu_mlme_action action, | 337 | struct ieee80211_ampdu_params *params) |
338 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, u8 buf_size, | ||
339 | bool amsdu) | ||
340 | { | 338 | { |
341 | struct mt7601u_dev *dev = hw->priv; | 339 | struct mt7601u_dev *dev = hw->priv; |
340 | struct ieee80211_sta *sta = params->sta; | ||
341 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
342 | u16 tid = params->tid; | ||
343 | u16 *ssn = ¶ms->ssn; | ||
342 | struct mt76_sta *msta = (struct mt76_sta *) sta->drv_priv; | 344 | struct mt76_sta *msta = (struct mt76_sta *) sta->drv_priv; |
343 | 345 | ||
344 | WARN_ON(msta->wcid.idx > GROUP_WCID(0)); | 346 | WARN_ON(msta->wcid.idx > GROUP_WCID(0)); |
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c index 9733b31a780d..69c1c09687a3 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c | |||
@@ -7935,10 +7935,11 @@ u64 rt2800_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif) | |||
7935 | EXPORT_SYMBOL_GPL(rt2800_get_tsf); | 7935 | EXPORT_SYMBOL_GPL(rt2800_get_tsf); |
7936 | 7936 | ||
7937 | int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 7937 | int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
7938 | enum ieee80211_ampdu_mlme_action action, | 7938 | struct ieee80211_ampdu_params *params) |
7939 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
7940 | u8 buf_size, bool amsdu) | ||
7941 | { | 7939 | { |
7940 | struct ieee80211_sta *sta = params->sta; | ||
7941 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
7942 | u16 tid = params->tid; | ||
7942 | struct rt2x00_sta *sta_priv = (struct rt2x00_sta *)sta->drv_priv; | 7943 | struct rt2x00_sta *sta_priv = (struct rt2x00_sta *)sta->drv_priv; |
7943 | int ret = 0; | 7944 | int ret = 0; |
7944 | 7945 | ||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h index 440790b92b19..83f1a44fb9b4 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h | |||
@@ -218,9 +218,7 @@ int rt2800_conf_tx(struct ieee80211_hw *hw, | |||
218 | const struct ieee80211_tx_queue_params *params); | 218 | const struct ieee80211_tx_queue_params *params); |
219 | u64 rt2800_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif); | 219 | u64 rt2800_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif); |
220 | int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 220 | int rt2800_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
221 | enum ieee80211_ampdu_mlme_action action, | 221 | struct ieee80211_ampdu_params *params); |
222 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
223 | u8 buf_size, bool amsdu); | ||
224 | int rt2800_get_survey(struct ieee80211_hw *hw, int idx, | 222 | int rt2800_get_survey(struct ieee80211_hw *hw, int idx, |
225 | struct survey_info *survey); | 223 | struct survey_info *survey); |
226 | void rt2800_disable_wpdma(struct rt2x00_dev *rt2x00dev); | 224 | void rt2800_disable_wpdma(struct rt2x00_dev *rt2x00dev); |
diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c index 6aed923a709a..7d820c395375 100644 --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | |||
@@ -5375,13 +5375,13 @@ static int rtl8xxxu_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, | |||
5375 | 5375 | ||
5376 | static int | 5376 | static int |
5377 | rtl8xxxu_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 5377 | rtl8xxxu_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
5378 | enum ieee80211_ampdu_mlme_action action, | 5378 | struct ieee80211_ampdu_params *params) |
5379 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, u8 buf_size, | ||
5380 | bool amsdu) | ||
5381 | { | 5379 | { |
5382 | struct rtl8xxxu_priv *priv = hw->priv; | 5380 | struct rtl8xxxu_priv *priv = hw->priv; |
5383 | struct device *dev = &priv->udev->dev; | 5381 | struct device *dev = &priv->udev->dev; |
5384 | u8 ampdu_factor, ampdu_density; | 5382 | u8 ampdu_factor, ampdu_density; |
5383 | struct ieee80211_sta *sta = params->sta; | ||
5384 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
5385 | 5385 | ||
5386 | switch (action) { | 5386 | switch (action) { |
5387 | case IEEE80211_AMPDU_TX_START: | 5387 | case IEEE80211_AMPDU_TX_START: |
diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c b/drivers/net/wireless/realtek/rtlwifi/core.c index 4ae421ef30d9..f2507610314b 100644 --- a/drivers/net/wireless/realtek/rtlwifi/core.c +++ b/drivers/net/wireless/realtek/rtlwifi/core.c | |||
@@ -1371,11 +1371,13 @@ static void rtl_op_sta_notify(struct ieee80211_hw *hw, | |||
1371 | 1371 | ||
1372 | static int rtl_op_ampdu_action(struct ieee80211_hw *hw, | 1372 | static int rtl_op_ampdu_action(struct ieee80211_hw *hw, |
1373 | struct ieee80211_vif *vif, | 1373 | struct ieee80211_vif *vif, |
1374 | enum ieee80211_ampdu_mlme_action action, | 1374 | struct ieee80211_ampdu_params *params) |
1375 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
1376 | u8 buf_size, bool amsdu) | ||
1377 | { | 1375 | { |
1378 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1376 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1377 | struct ieee80211_sta *sta = params->sta; | ||
1378 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
1379 | u16 tid = params->tid; | ||
1380 | u16 *ssn = ¶ms->ssn; | ||
1379 | 1381 | ||
1380 | switch (action) { | 1382 | switch (action) { |
1381 | case IEEE80211_AMPDU_TX_START: | 1383 | case IEEE80211_AMPDU_TX_START: |
diff --git a/drivers/net/wireless/rsi/rsi_91x_mac80211.c b/drivers/net/wireless/rsi/rsi_91x_mac80211.c index b5bcc933a2a6..4df992de7d07 100644 --- a/drivers/net/wireless/rsi/rsi_91x_mac80211.c +++ b/drivers/net/wireless/rsi/rsi_91x_mac80211.c | |||
@@ -659,29 +659,24 @@ static int rsi_mac80211_set_key(struct ieee80211_hw *hw, | |||
659 | * informs the f/w regarding this. | 659 | * informs the f/w regarding this. |
660 | * @hw: Pointer to the ieee80211_hw structure. | 660 | * @hw: Pointer to the ieee80211_hw structure. |
661 | * @vif: Pointer to the ieee80211_vif structure. | 661 | * @vif: Pointer to the ieee80211_vif structure. |
662 | * @action: ieee80211_ampdu_mlme_action enum. | 662 | * @params: Pointer to A-MPDU action parameters |
663 | * @sta: Pointer to the ieee80211_sta structure. | ||
664 | * @tid: Traffic identifier. | ||
665 | * @ssn: Pointer to ssn value. | ||
666 | * @buf_size: Buffer size (for kernel version > 2.6.38). | ||
667 | * @amsdu: is AMSDU in AMPDU allowed | ||
668 | * | 663 | * |
669 | * Return: status: 0 on success, negative error code on failure. | 664 | * Return: status: 0 on success, negative error code on failure. |
670 | */ | 665 | */ |
671 | static int rsi_mac80211_ampdu_action(struct ieee80211_hw *hw, | 666 | static int rsi_mac80211_ampdu_action(struct ieee80211_hw *hw, |
672 | struct ieee80211_vif *vif, | 667 | struct ieee80211_vif *vif, |
673 | enum ieee80211_ampdu_mlme_action action, | 668 | struct ieee80211_ampdu_params *params) |
674 | struct ieee80211_sta *sta, | ||
675 | unsigned short tid, | ||
676 | unsigned short *ssn, | ||
677 | unsigned char buf_size, | ||
678 | bool amsdu) | ||
679 | { | 669 | { |
680 | int status = -EOPNOTSUPP; | 670 | int status = -EOPNOTSUPP; |
681 | struct rsi_hw *adapter = hw->priv; | 671 | struct rsi_hw *adapter = hw->priv; |
682 | struct rsi_common *common = adapter->priv; | 672 | struct rsi_common *common = adapter->priv; |
683 | u16 seq_no = 0; | 673 | u16 seq_no = 0; |
684 | u8 ii = 0; | 674 | u8 ii = 0; |
675 | struct ieee80211_sta *sta = params->sta; | ||
676 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
677 | u16 tid = params->tid; | ||
678 | u16 *ssn = ¶ms->ssn; | ||
679 | u8 buf_size = params->buf_size; | ||
685 | 680 | ||
686 | for (ii = 0; ii < RSI_MAX_VIFS; ii++) { | 681 | for (ii = 0; ii < RSI_MAX_VIFS; ii++) { |
687 | if (vif == adapter->vifs[ii]) | 682 | if (vif == adapter->vifs[ii]) |
diff --git a/drivers/net/wireless/st/cw1200/sta.c b/drivers/net/wireless/st/cw1200/sta.c index 06321c799c90..d0ddcde6c695 100644 --- a/drivers/net/wireless/st/cw1200/sta.c +++ b/drivers/net/wireless/st/cw1200/sta.c | |||
@@ -2129,9 +2129,7 @@ void cw1200_mcast_timeout(unsigned long arg) | |||
2129 | 2129 | ||
2130 | int cw1200_ampdu_action(struct ieee80211_hw *hw, | 2130 | int cw1200_ampdu_action(struct ieee80211_hw *hw, |
2131 | struct ieee80211_vif *vif, | 2131 | struct ieee80211_vif *vif, |
2132 | enum ieee80211_ampdu_mlme_action action, | 2132 | struct ieee80211_ampdu_params *params) |
2133 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
2134 | u8 buf_size, bool amsdu) | ||
2135 | { | 2133 | { |
2136 | /* Aggregation is implemented fully in firmware, | 2134 | /* Aggregation is implemented fully in firmware, |
2137 | * including block ack negotiation. Do not allow | 2135 | * including block ack negotiation. Do not allow |
diff --git a/drivers/net/wireless/st/cw1200/sta.h b/drivers/net/wireless/st/cw1200/sta.h index bebb3379017f..a0bacaa39b31 100644 --- a/drivers/net/wireless/st/cw1200/sta.h +++ b/drivers/net/wireless/st/cw1200/sta.h | |||
@@ -109,9 +109,7 @@ void cw1200_bss_info_changed(struct ieee80211_hw *dev, | |||
109 | u32 changed); | 109 | u32 changed); |
110 | int cw1200_ampdu_action(struct ieee80211_hw *hw, | 110 | int cw1200_ampdu_action(struct ieee80211_hw *hw, |
111 | struct ieee80211_vif *vif, | 111 | struct ieee80211_vif *vif, |
112 | enum ieee80211_ampdu_mlme_action action, | 112 | struct ieee80211_ampdu_params *params); |
113 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
114 | u8 buf_size, bool amsdu); | ||
115 | 113 | ||
116 | void cw1200_suspend_resume(struct cw1200_common *priv, | 114 | void cw1200_suspend_resume(struct cw1200_common *priv, |
117 | struct wsm_suspend_resume *arg); | 115 | struct wsm_suspend_resume *arg); |
diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c index d1109c4f0f0d..45662cf3169f 100644 --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c | |||
@@ -5187,14 +5187,16 @@ out: | |||
5187 | 5187 | ||
5188 | static int wl1271_op_ampdu_action(struct ieee80211_hw *hw, | 5188 | static int wl1271_op_ampdu_action(struct ieee80211_hw *hw, |
5189 | struct ieee80211_vif *vif, | 5189 | struct ieee80211_vif *vif, |
5190 | enum ieee80211_ampdu_mlme_action action, | 5190 | struct ieee80211_ampdu_params *params) |
5191 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | ||
5192 | u8 buf_size, bool amsdu) | ||
5193 | { | 5191 | { |
5194 | struct wl1271 *wl = hw->priv; | 5192 | struct wl1271 *wl = hw->priv; |
5195 | struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif); | 5193 | struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif); |
5196 | int ret; | 5194 | int ret; |
5197 | u8 hlid, *ba_bitmap; | 5195 | u8 hlid, *ba_bitmap; |
5196 | struct ieee80211_sta *sta = params->sta; | ||
5197 | enum ieee80211_ampdu_mlme_action action = params->action; | ||
5198 | u16 tid = params->tid; | ||
5199 | u16 *ssn = ¶ms->ssn; | ||
5198 | 5200 | ||
5199 | wl1271_debug(DEBUG_MAC80211, "mac80211 ampdu action %d tid %d", action, | 5201 | wl1271_debug(DEBUG_MAC80211, "mac80211 ampdu action %d tid %d", action, |
5200 | tid); | 5202 | tid); |