Skip to content

Commit d67703f

Browse files
committed
Merge tag 'mac80211-next-for-davem-2016-02-26' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Johannes Berg says: ==================== 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 ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 4ec6207 + 50ee738 commit d67703f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+1518
-912
lines changed

Documentation/ABI/obsolete/sysfs-class-rfkill

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
rfkill - radio frequency (RF) connector kill switch support
2+
3+
For details to this subsystem look at Documentation/rfkill.txt.
4+
5+
What: /sys/class/rfkill/rfkill[0-9]+/claim
6+
Date: 09-Jul-2007
7+
KernelVersion v2.6.22
8+
9+
Description: This file was deprecated because there no longer was a way to
10+
claim just control over a single rfkill instance.
11+
This file was scheduled to be removed in 2012, and was removed
12+
in 2016.
13+
Values: 0: Kernel handles events

Documentation/ABI/stable/sysfs-class-rfkill

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ rfkill - radio frequency (RF) connector kill switch support
22

33
For details to this subsystem look at Documentation/rfkill.txt.
44

5-
For the deprecated /sys/class/rfkill/*/state and
6-
/sys/class/rfkill/*/claim knobs of this interface look in
7-
Documentation/ABI/obsolete/sysfs-class-rfkill.
5+
For the deprecated /sys/class/rfkill/*/claim knobs of this interface look in
6+
Documentation/ABI/removed/sysfs-class-rfkill.
87

98
What: /sys/class/rfkill
109
Date: 09-Jul-2007
@@ -42,6 +41,28 @@ Values: A numeric value.
4241
1: true
4342

4443

44+
What: /sys/class/rfkill/rfkill[0-9]+/state
45+
Date: 09-Jul-2007
46+
KernelVersion v2.6.22
47+
48+
Description: Current state of the transmitter.
49+
This file was scheduled to be removed in 2014, but due to its
50+
large number of users it will be sticking around for a bit
51+
longer. Despite it being marked as stabe, the newer "hard" and
52+
"soft" interfaces should be preffered, since it is not possible
53+
to express the 'soft and hard block' state of the rfkill driver
54+
through this interface. There will likely be another attempt to
55+
remove it in the future.
56+
Values: A numeric value.
57+
0: RFKILL_STATE_SOFT_BLOCKED
58+
transmitter is turned off by software
59+
1: RFKILL_STATE_UNBLOCKED
60+
transmitter is (potentially) active
61+
2: RFKILL_STATE_HARD_BLOCKED
62+
transmitter is forced off by something outside of
63+
the driver's control.
64+
65+
4566
What: /sys/class/rfkill/rfkill[0-9]+/hard
4667
Date: 12-March-2010
4768
KernelVersion v2.6.34

Documentation/networking/mac80211-injection.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,23 @@ radiotap headers and used to control injection:
2828
IEEE80211_RADIOTAP_F_TX_NOACK: frame should be sent without waiting for
2929
an ACK even if it is a unicast frame
3030

31+
* IEEE80211_RADIOTAP_RATE
32+
33+
legacy rate for the transmission (only for devices without own rate control)
34+
35+
* IEEE80211_RADIOTAP_MCS
36+
37+
HT rate for the transmission (only for devices without own rate control).
38+
Also some flags are parsed
39+
40+
IEEE80211_TX_RC_SHORT_GI: use short guard interval
41+
IEEE80211_TX_RC_40_MHZ_WIDTH: send in HT40 mode
42+
43+
* IEEE80211_RADIOTAP_DATA_RETRIES
44+
45+
number of retries when either IEEE80211_RADIOTAP_RATE or
46+
IEEE80211_RADIOTAP_MCS was used
47+
3148
The injection code can also skip all other currently defined radiotap fields
3249
facilitating replay of captured radiotap headers directly.
3350

Documentation/rfkill.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ rfkill drivers that control devices that can be hard-blocked unless they also
8383
assign the poll_hw_block() callback (then the rfkill core will poll the
8484
device). Don't do this unless you cannot get the event in any other way.
8585

86+
RFKill provides per-switch LED triggers, which can be used to drive LEDs
87+
according to the switch state (LED_FULL when blocked, LED_OFF otherwise).
8688

8789

8890
5. Userspace support

arch/arm/mach-tegra/board-paz00.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,25 @@
1717
*
1818
*/
1919

20+
#include <linux/property.h>
2021
#include <linux/gpio/machine.h>
2122
#include <linux/platform_device.h>
22-
#include <linux/rfkill-gpio.h>
2323

2424
#include "board.h"
2525

26-
static struct rfkill_gpio_platform_data wifi_rfkill_platform_data = {
27-
.name = "wifi_rfkill",
28-
.type = RFKILL_TYPE_WLAN,
26+
static struct property_entry __initdata wifi_rfkill_prop[] = {
27+
PROPERTY_ENTRY_STRING("name", "wifi_rfkill"),
28+
PROPERTY_ENTRY_STRING("type", "wlan"),
29+
{ },
30+
};
31+
32+
static struct property_set __initdata wifi_rfkill_pset = {
33+
.properties = wifi_rfkill_prop,
2934
};
3035

3136
static struct platform_device wifi_rfkill_device = {
3237
.name = "rfkill_gpio",
3338
.id = -1,
34-
.dev = {
35-
.platform_data = &wifi_rfkill_platform_data,
36-
},
3739
};
3840

3941
static struct gpiod_lookup_table wifi_gpio_lookup = {
@@ -47,6 +49,7 @@ static struct gpiod_lookup_table wifi_gpio_lookup = {
4749

4850
void __init tegra_paz00_wifikill_init(void)
4951
{
52+
platform_device_add_properties(&wifi_rfkill_device, &wifi_rfkill_pset);
5053
gpiod_add_lookup_table(&wifi_gpio_lookup);
5154
platform_device_register(&wifi_rfkill_device);
5255
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6366,12 +6366,13 @@ static u64 ath10k_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
63666366

63676367
static int ath10k_ampdu_action(struct ieee80211_hw *hw,
63686368
struct ieee80211_vif *vif,
6369-
enum ieee80211_ampdu_mlme_action action,
6370-
struct ieee80211_sta *sta, u16 tid, u16 *ssn,
6371-
u8 buf_size, bool amsdu)
6369+
struct ieee80211_ampdu_params *params)
63726370
{
63736371
struct ath10k *ar = hw->priv;
63746372
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;
63756376

63766377
ath10k_dbg(ar, ATH10K_DBG_MAC, "mac ampdu vdev_id %i sta %pM tid %hu action %d\n",
63776378
arvif->vdev_id, sta->addr, tid, action);

drivers/net/wireless/ath/ath9k/htc_drv_main.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1657,13 +1657,14 @@ static void ath9k_htc_reset_tsf(struct ieee80211_hw *hw,
16571657

16581658
static int ath9k_htc_ampdu_action(struct ieee80211_hw *hw,
16591659
struct ieee80211_vif *vif,
1660-
enum ieee80211_ampdu_mlme_action action,
1661-
struct ieee80211_sta *sta,
1662-
u16 tid, u16 *ssn, u8 buf_size, bool amsdu)
1660+
struct ieee80211_ampdu_params *params)
16631661
{
16641662
struct ath9k_htc_priv *priv = hw->priv;
16651663
struct ath9k_htc_sta *ista;
16661664
int ret = 0;
1665+
struct ieee80211_sta *sta = params->sta;
1666+
enum ieee80211_ampdu_mlme_action action = params->action;
1667+
u16 tid = params->tid;
16671668

16681669
mutex_lock(&priv->mutex);
16691670
ath9k_htc_ps_wakeup(priv);

drivers/net/wireless/ath/ath9k/main.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1864,14 +1864,16 @@ static void ath9k_reset_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
18641864

18651865
static int ath9k_ampdu_action(struct ieee80211_hw *hw,
18661866
struct ieee80211_vif *vif,
1867-
enum ieee80211_ampdu_mlme_action action,
1868-
struct ieee80211_sta *sta,
1869-
u16 tid, u16 *ssn, u8 buf_size, bool amsdu)
1867+
struct ieee80211_ampdu_params *params)
18701868
{
18711869
struct ath_softc *sc = hw->priv;
18721870
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
18731871
bool flush = false;
18741872
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 = &params->ssn;
18751877

18761878
mutex_lock(&sc->mutex);
18771879

drivers/net/wireless/ath/carl9170/main.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1413,10 +1413,12 @@ static void carl9170_ampdu_work(struct work_struct *work)
14131413

14141414
static int carl9170_op_ampdu_action(struct ieee80211_hw *hw,
14151415
struct ieee80211_vif *vif,
1416-
enum ieee80211_ampdu_mlme_action action,
1417-
struct ieee80211_sta *sta,
1418-
u16 tid, u16 *ssn, u8 buf_size, bool amsdu)
1416+
struct ieee80211_ampdu_params *params)
14191417
{
1418+
struct ieee80211_sta *sta = params->sta;
1419+
enum ieee80211_ampdu_mlme_action action = params->action;
1420+
u16 tid = params->tid;
1421+
u16 *ssn = &params->ssn;
14201422
struct ar9170 *ar = hw->priv;
14211423
struct carl9170_sta_info *sta_info = (void *) sta->drv_priv;
14221424
struct carl9170_sta_tid *tid_info;

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -857,12 +857,14 @@ static int wcn36xx_resume(struct ieee80211_hw *hw)
857857

858858
static int wcn36xx_ampdu_action(struct ieee80211_hw *hw,
859859
struct ieee80211_vif *vif,
860-
enum ieee80211_ampdu_mlme_action action,
861-
struct ieee80211_sta *sta, u16 tid, u16 *ssn,
862-
u8 buf_size, bool amsdu)
860+
struct ieee80211_ampdu_params *params)
863861
{
864862
struct wcn36xx *wcn = hw->priv;
865863
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 = &params->ssn;
866868

867869
wcn36xx_dbg(WCN36XX_DBG_MAC, "mac ampdu action action %d tid %d\n",
868870
action, tid);

drivers/net/wireless/ath/wil6210/cfg80211.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,11 @@ static int wil_cfg80211_connect(struct wiphy *wiphy,
422422
if (sme->privacy && !rsn_eid)
423423
wil_info(wil, "WSC connection\n");
424424

425+
if (sme->pbss) {
426+
wil_err(wil, "connect - PBSS not yet supported\n");
427+
return -EOPNOTSUPP;
428+
}
429+
425430
bss = cfg80211_get_bss(wiphy, sme->channel, sme->bssid,
426431
sme->ssid, sme->ssid_len,
427432
IEEE80211_BSS_TYPE_ESS, IEEE80211_PRIVACY_ANY);
@@ -870,6 +875,11 @@ static int wil_cfg80211_start_ap(struct wiphy *wiphy,
870875
return -EINVAL;
871876
}
872877

878+
if (info->pbss) {
879+
wil_err(wil, "AP: PBSS not yet supported\n");
880+
return -EOPNOTSUPP;
881+
}
882+
873883
switch (info->hidden_ssid) {
874884
case NL80211_HIDDEN_SSID_NOT_IN_USE:
875885
hidden_ssid = WMI_HIDDEN_SSID_DISABLED;

drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -818,13 +818,15 @@ brcms_ops_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
818818
static int
819819
brcms_ops_ampdu_action(struct ieee80211_hw *hw,
820820
struct ieee80211_vif *vif,
821-
enum ieee80211_ampdu_mlme_action action,
822-
struct ieee80211_sta *sta, u16 tid, u16 *ssn,
823-
u8 buf_size, bool amsdu)
821+
struct ieee80211_ampdu_params *params)
824822
{
825823
struct brcms_info *wl = hw->priv;
826824
struct scb *scb = &wl->wlc->pri_scb;
827825
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;
828830

829831
if (WARN_ON(scb->magic != SCB_MAGIC))
830832
return -EIDRM;

drivers/net/wireless/intel/iwlegacy/4965-mac.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5982,12 +5982,14 @@ il4965_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
59825982

59835983
int
59845984
il4965_mac_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
5985-
enum ieee80211_ampdu_mlme_action action,
5986-
struct ieee80211_sta *sta, u16 tid, u16 * ssn,
5987-
u8 buf_size, bool amsdu)
5985+
struct ieee80211_ampdu_params *params)
59885986
{
59895987
struct il_priv *il = hw->priv;
59905988
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 = &params->ssn;
59915993

59925994
D_HT("A-MPDU action on addr %pM tid %d\n", sta->addr, tid);
59935995

drivers/net/wireless/intel/iwlegacy/4965.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,7 @@ void il4965_mac_update_tkip_key(struct ieee80211_hw *hw,
182182
struct ieee80211_sta *sta, u32 iv32,
183183
u16 *phase1key);
184184
int il4965_mac_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
185-
enum ieee80211_ampdu_mlme_action action,
186-
struct ieee80211_sta *sta, u16 tid, u16 * ssn,
187-
u8 buf_size, bool amsdu);
185+
struct ieee80211_ampdu_params *params);
188186
int il4965_mac_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
189187
struct ieee80211_sta *sta);
190188
void

drivers/net/wireless/intel/iwlwifi/dvm/lib.c

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -943,14 +943,16 @@ static void iwlagn_wowlan_program_keys(struct ieee80211_hw *hw,
943943
switch (key->cipher) {
944944
case WLAN_CIPHER_SUITE_TKIP:
945945
if (sta) {
946+
u64 pn64;
947+
946948
tkip_sc = data->rsc_tsc->all_tsc_rsc.tkip.unicast_rsc;
947949
tkip_tx_sc = &data->rsc_tsc->all_tsc_rsc.tkip.tsc;
948950

949951
rx_p1ks = data->tkip->rx_uni;
950952

951-
ieee80211_get_key_tx_seq(key, &seq);
952-
tkip_tx_sc->iv16 = cpu_to_le16(seq.tkip.iv16);
953-
tkip_tx_sc->iv32 = cpu_to_le32(seq.tkip.iv32);
953+
pn64 = atomic64_read(&key->tx_pn);
954+
tkip_tx_sc->iv16 = cpu_to_le16(TKIP_PN_TO_IV16(pn64));
955+
tkip_tx_sc->iv32 = cpu_to_le32(TKIP_PN_TO_IV32(pn64));
954956

955957
ieee80211_get_tkip_p1k_iv(key, seq.tkip.iv32, p1k);
956958
iwlagn_convert_p1k(p1k, data->tkip->tx.p1k);
@@ -996,19 +998,13 @@ static void iwlagn_wowlan_program_keys(struct ieee80211_hw *hw,
996998
break;
997999
case WLAN_CIPHER_SUITE_CCMP:
9981000
if (sta) {
999-
u8 *pn = seq.ccmp.pn;
1001+
u64 pn64;
10001002

10011003
aes_sc = data->rsc_tsc->all_tsc_rsc.aes.unicast_rsc;
10021004
aes_tx_sc = &data->rsc_tsc->all_tsc_rsc.aes.tsc;
10031005

1004-
ieee80211_get_key_tx_seq(key, &seq);
1005-
aes_tx_sc->pn = cpu_to_le64(
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));
1006+
pn64 = atomic64_read(&key->tx_pn);
1007+
aes_tx_sc->pn = cpu_to_le64(pn64);
10121008
} else
10131009
aes_sc = data->rsc_tsc->all_tsc_rsc.aes.multicast_rsc;
10141010

drivers/net/wireless/intel/iwlwifi/dvm/mac80211.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -732,12 +732,15 @@ static inline bool iwl_enable_tx_ampdu(const struct iwl_cfg *cfg)
732732

733733
static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
734734
struct ieee80211_vif *vif,
735-
enum ieee80211_ampdu_mlme_action action,
736-
struct ieee80211_sta *sta, u16 tid, u16 *ssn,
737-
u8 buf_size, bool amsdu)
735+
struct ieee80211_ampdu_params *params)
738736
{
739737
struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw);
740738
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 = &params->ssn;
743+
u8 buf_size = params->buf_size;
741744
struct iwl_station_priv *sta_priv = (void *) sta->drv_priv;
742745

743746
IWL_DEBUG_HT(priv, "A-MPDU action on addr %pM tid %d\n",

0 commit comments

Comments
 (0)