Skip to content

Commit 3a06ee3

Browse files
author
Jakub Kicinski
committed
Merge tag 'wireless-drivers-next-2019-11-22' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valo says: ==================== wireless-drivers-next patches for v5.5 Last set of patches for v5.5. Major features here 802.11ax support for qtnfmac and airtime fairness support to mt76. And naturally smaller fixes and improvements all over. Major changes: qtnfmac * add 802.11ax support in AP mode * enable offload bridging support iwlwifi * support TX/RX antennas reporting mt76 * mt7615 smart carrier sense support * aggregation statistics via debugfs * airtime fairness (ATF) support * mt76x0 OF mac address support ==================== Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 72a2707 + 05d6c8c commit 3a06ee3

Some content is hidden

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

96 files changed

+2252
-562
lines changed

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -778,15 +778,13 @@ static int brcmf_chip_dmp_get_regaddr(struct brcmf_chip_priv *ci, u32 *eromaddr,
778778
{
779779
u8 desc;
780780
u32 val, szdesc;
781-
u8 mpnum = 0;
782781
u8 stype, sztype, wraptype;
783782

784783
*regbase = 0;
785784
*wrapbase = 0;
786785

787786
val = brcmf_chip_dmp_get_desc(ci, eromaddr, &desc);
788787
if (desc == DMP_DESC_MASTER_PORT) {
789-
mpnum = (val & DMP_MASTER_PORT_NUM) >> DMP_MASTER_PORT_NUM_S;
790788
wraptype = DMP_SLAVE_TYPE_MWRAP;
791789
} else if (desc == DMP_DESC_ADDRESS) {
792790
/* revert erom address */
@@ -854,7 +852,7 @@ int brcmf_chip_dmp_erom_scan(struct brcmf_chip_priv *ci)
854852
u8 desc_type = 0;
855853
u32 val;
856854
u16 id;
857-
u8 nmp, nsp, nmw, nsw, rev;
855+
u8 nmw, nsw, rev;
858856
u32 base, wrap;
859857
int err;
860858

@@ -880,8 +878,6 @@ int brcmf_chip_dmp_erom_scan(struct brcmf_chip_priv *ci)
880878
return -EFAULT;
881879

882880
/* only look at cores with master port(s) */
883-
nmp = (val & DMP_COMP_NUM_MPORT) >> DMP_COMP_NUM_MPORT_S;
884-
nsp = (val & DMP_COMP_NUM_SPORT) >> DMP_COMP_NUM_SPORT_S;
885881
nmw = (val & DMP_COMP_NUM_MWRAP) >> DMP_COMP_NUM_MWRAP_S;
886882
nsw = (val & DMP_COMP_NUM_SWRAP) >> DMP_COMP_NUM_SWRAP_S;
887883
rev = (val & DMP_COMP_REVISION) >> DMP_COMP_REVISION_S;

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1350,6 +1350,11 @@ void brcmf_detach(struct device *dev)
13501350
brcmf_fweh_detach(drvr);
13511351
brcmf_proto_detach(drvr);
13521352

1353+
if (drvr->mon_if) {
1354+
brcmf_net_detach(drvr->mon_if->ndev, false);
1355+
drvr->mon_if = NULL;
1356+
}
1357+
13531358
/* make sure primary interface removed last */
13541359
for (i = BRCMF_MAX_IFS - 1; i > -1; i--) {
13551360
if (drvr->iflist[i])

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,6 +1425,8 @@ static int brcmf_pcie_reset(struct device *dev)
14251425
struct brcmf_fw_request *fwreq;
14261426
int err;
14271427

1428+
brcmf_pcie_intr_disable(devinfo);
1429+
14281430
brcmf_pcie_bus_console_read(devinfo, true);
14291431

14301432
brcmf_detach(dev);

drivers/net/wireless/intel/ipw2x00/ipw2100.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5565,7 +5565,7 @@ static void shim__set_security(struct net_device *dev,
55655565
struct libipw_security *sec)
55665566
{
55675567
struct ipw2100_priv *priv = libipw_priv(dev);
5568-
int i, force_update = 0;
5568+
int i;
55695569

55705570
mutex_lock(&priv->action_mutex);
55715571
if (!(priv->status & STATUS_INITIALIZED))
@@ -5605,7 +5605,6 @@ static void shim__set_security(struct net_device *dev,
56055605
priv->ieee->sec.flags |= SEC_ENABLED;
56065606
priv->ieee->sec.enabled = sec->enabled;
56075607
priv->status |= STATUS_SECURITY_UPDATED;
5608-
force_update = 1;
56095608
}
56105609

56115610
if (sec->flags & SEC_ENCRYPT)

drivers/net/wireless/intel/ipw2x00/ipw2200.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6788,9 +6788,6 @@ static int ipw_wx_set_mlme(struct net_device *dev,
67886788
{
67896789
struct ipw_priv *priv = libipw_priv(dev);
67906790
struct iw_mlme *mlme = (struct iw_mlme *)extra;
6791-
__le16 reason;
6792-
6793-
reason = cpu_to_le16(mlme->reason_code);
67946791

67956792
switch (mlme->cmd) {
67966793
case IW_MLME_DEAUTH:

drivers/net/wireless/intel/iwlwifi/cfg/22000.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
#include "iwl-prph.h"
5858

5959
/* Highest firmware API version supported */
60-
#define IWL_22000_UCODE_API_MAX 51
60+
#define IWL_22000_UCODE_API_MAX 52
6161

6262
/* Lowest firmware API version supported */
6363
#define IWL_22000_UCODE_API_MIN 39

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ void iwl_leds_init(struct iwl_priv *priv)
171171

172172
priv->led.name = kasprintf(GFP_KERNEL, "%s-led",
173173
wiphy_name(priv->hw->wiphy));
174+
if (!priv->led.name)
175+
return;
176+
174177
priv->led.brightness_set = iwl_led_brightness_set;
175178
priv->led.blink_set = iwl_led_blink_set;
176179
priv->led.max_brightness = 1;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -851,7 +851,7 @@ static void rs_bt_update_lq(struct iwl_priv *priv, struct iwl_rxon_context *ctx,
851851
* Is there a need to switch between
852852
* full concurrency and 3-wire?
853853
*/
854-
if (priv->bt_ci_compliance && priv->bt_ant_couple_ok)
854+
if (priv->bt_ci_compliance)
855855
full_concurrent = true;
856856
else
857857
full_concurrent = false;

drivers/net/wireless/intel/iwlwifi/fw/api/scan.h

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,9 @@ enum iwl_umac_scan_general_flags2 {
664664
* @IWL_UMAC_SCAN_GEN_FLAGS_V2_MULTI_SSID: matching on multiple SSIDs
665665
* @IWL_UMAC_SCAN_GEN_FLAGS_V2_FORCE_PASSIVE: all the channels scanned
666666
* as passive
667+
* @IWL_UMAC_SCAN_GEN_FLAGS_V2_TRIGGER_UHB_SCAN: at the end of 2.4GHz and
668+
* 5.2Ghz bands scan, trigger scan on 6GHz band to discover
669+
* the reported collocated APs
667670
*/
668671
enum iwl_umac_scan_general_flags_v2 {
669672
IWL_UMAC_SCAN_GEN_FLAGS_V2_PERIODIC = BIT(0),
@@ -678,6 +681,7 @@ enum iwl_umac_scan_general_flags_v2 {
678681
IWL_UMAC_SCAN_GEN_FLAGS_V2_NTF_START = BIT(9),
679682
IWL_UMAC_SCAN_GEN_FLAGS_V2_MULTI_SSID = BIT(10),
680683
IWL_UMAC_SCAN_GEN_FLAGS_V2_FORCE_PASSIVE = BIT(11),
684+
IWL_UMAC_SCAN_GEN_FLAGS_V2_TRIGGER_UHB_SCAN = BIT(12),
681685
};
682686

683687
/**
@@ -893,7 +897,27 @@ struct iwl_scan_probe_params_v3 {
893897
struct iwl_ssid_ie direct_scan[PROBE_OPTION_MAX];
894898
__le32 short_ssid[SCAN_SHORT_SSID_MAX_SIZE];
895899
u8 bssid_array[ETH_ALEN][SCAN_BSSID_MAX_SIZE];
896-
} __packed;
900+
} __packed; /* SCAN_PROBE_PARAMS_API_S_VER_3 */
901+
902+
/**
903+
* struct iwl_scan_probe_params_v4
904+
* @preq: scan probe request params
905+
* @short_ssid_num: number of valid short SSIDs in short ssid array
906+
* @bssid_num: number of valid bssid in bssids array
907+
* @reserved: reserved
908+
* @direct_scan: list of ssids
909+
* @short_ssid: array of short ssids
910+
* @bssid_array: array of bssids
911+
*/
912+
struct iwl_scan_probe_params_v4 {
913+
struct iwl_scan_probe_req preq;
914+
u8 short_ssid_num;
915+
u8 bssid_num;
916+
__le16 reserved;
917+
struct iwl_ssid_ie direct_scan[PROBE_OPTION_MAX];
918+
__le32 short_ssid[SCAN_SHORT_SSID_MAX_SIZE];
919+
u8 bssid_array[ETH_ALEN][SCAN_BSSID_MAX_SIZE];
920+
} __packed; /* SCAN_PROBE_PARAMS_API_S_VER_4 */
897921

898922
#define SCAN_MAX_NUM_CHANS_V3 67
899923

@@ -932,8 +956,8 @@ struct iwl_scan_channel_params_v4 {
932956
u8 reserved;
933957
struct iwl_scan_channel_cfg_umac channel_config[SCAN_MAX_NUM_CHANS_V3];
934958
u8 adwell_ch_override_bitmap[16];
935-
} __packed; /* SCAN_CHANNEL_PARAMS_API_S_VER_4 */
936-
959+
} __packed; /* SCAN_CHANNEL_PARAMS_API_S_VER_4 also
960+
SCAN_CHANNEL_PARAMS_API_S_VER_5 */
937961
/**
938962
* struct iwl_scan_general_params_v10
939963
* @flags: &enum iwl_umac_scan_flags
@@ -1014,6 +1038,20 @@ struct iwl_scan_req_params_v12 {
10141038
struct iwl_scan_probe_params_v3 probe_params;
10151039
} __packed; /* SCAN_REQUEST_PARAMS_API_S_VER_12 */
10161040

1041+
/**
1042+
* struct iwl_scan_req_params_v13
1043+
* @general_params: &struct iwl_scan_general_params_v10
1044+
* @channel_params: &struct iwl_scan_channel_params_v4
1045+
* @periodic_params: &struct iwl_scan_periodic_parms_v1
1046+
* @probe_params: &struct iwl_scan_probe_params_v4
1047+
*/
1048+
struct iwl_scan_req_params_v13 {
1049+
struct iwl_scan_general_params_v10 general_params;
1050+
struct iwl_scan_channel_params_v4 channel_params;
1051+
struct iwl_scan_periodic_parms_v1 periodic_params;
1052+
struct iwl_scan_probe_params_v4 probe_params;
1053+
} __packed; /* SCAN_REQUEST_PARAMS_API_S_VER_13 */
1054+
10171055
/**
10181056
* struct iwl_scan_req_umac_v11
10191057
* @uid: scan id, &enum iwl_umac_scan_uid_offsets
@@ -1038,6 +1076,18 @@ struct iwl_scan_req_umac_v12 {
10381076
struct iwl_scan_req_params_v12 scan_params;
10391077
} __packed; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_12 */
10401078

1079+
/**
1080+
* struct iwl_scan_req_umac_v13
1081+
* @uid: scan id, &enum iwl_umac_scan_uid_offsets
1082+
* @ooc_priority: out of channel priority - &enum iwl_scan_priority
1083+
* @scan_params: scan parameters
1084+
*/
1085+
struct iwl_scan_req_umac_v13 {
1086+
__le32 uid;
1087+
__le32 ooc_priority;
1088+
struct iwl_scan_req_params_v13 scan_params;
1089+
} __packed; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_13 */
1090+
10411091
/**
10421092
* struct iwl_umac_scan_abort
10431093
* @uid: scan id, &enum iwl_umac_scan_uid_offsets

drivers/net/wireless/intel/iwlwifi/iwl-config.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,6 @@ struct iwl_fw_mon_regs {
409409
* @mac_addr_from_csr: read HW address from CSR registers
410410
* @features: hw features, any combination of feature_whitelist
411411
* @pwr_tx_backoffs: translation table between power limits and backoffs
412-
* @max_rx_agg_size: max RX aggregation size of the ADDBA request/response
413412
* @max_tx_agg_size: max TX aggregation size of the ADDBA request/response
414413
* @max_ht_ampdu_factor: the exponent of the max length of A-MPDU that the
415414
* station can receive in HT
@@ -481,7 +480,6 @@ struct iwl_cfg {
481480
u8 valid_rx_ant;
482481
u8 non_shared_ant;
483482
u8 nvm_hw_section_num;
484-
u8 max_rx_agg_size;
485483
u8 max_tx_agg_size;
486484
u8 max_ht_ampdu_exponent;
487485
u8 max_vht_ampdu_exponent;

drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
* Copyright(c) 2009 - 2014 Intel Corporation. All rights reserved.
55
* Copyright(c) 2015 Intel Deutschland GmbH
6-
* Copyright(c) 2018 Intel Corporation
6+
* Copyright(c) 2018 - 2019 Intel Corporation
77
*
88
* Contact Information:
99
* Intel Linux Wireless <[email protected]>
@@ -21,16 +21,18 @@
2121

2222
TRACE_EVENT(iwlwifi_dev_tx_tb,
2323
TP_PROTO(const struct device *dev, struct sk_buff *skb,
24-
u8 *data_src, size_t data_len),
25-
TP_ARGS(dev, skb, data_src, data_len),
24+
u8 *data_src, dma_addr_t phys, size_t data_len),
25+
TP_ARGS(dev, skb, data_src, phys, data_len),
2626
TP_STRUCT__entry(
2727
DEV_ENTRY
28+
__field(u64, phys)
2829

2930
__dynamic_array(u8, data,
3031
iwl_trace_data(skb) ? data_len : 0)
3132
),
3233
TP_fast_assign(
3334
DEV_ASSIGN;
35+
__entry->phys = phys;
3436
if (iwl_trace_data(skb))
3537
memcpy(__get_dynamic_array(data), data_src, data_len);
3638
),

drivers/net/wireless/intel/iwlwifi/mvm/led.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ int iwl_mvm_leds_init(struct iwl_mvm *mvm)
129129

130130
mvm->led.name = kasprintf(GFP_KERNEL, "%s-led",
131131
wiphy_name(mvm->hw->wiphy));
132+
if (!mvm->led.name)
133+
return -ENOMEM;
134+
132135
mvm->led.brightness_set = iwl_led_brightness_set;
133136
mvm->led.max_brightness = 1;
134137

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,15 @@ static const struct wiphy_iftype_ext_capab he_iftypes_ext_capa[] = {
355355
},
356356
};
357357

358+
static int
359+
iwl_mvm_op_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant)
360+
{
361+
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
362+
*tx_ant = iwl_mvm_get_valid_tx_ant(mvm);
363+
*rx_ant = iwl_mvm_get_valid_rx_ant(mvm);
364+
return 0;
365+
}
366+
358367
int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
359368
{
360369
struct ieee80211_hw *hw = mvm->hw;
@@ -734,6 +743,9 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
734743
wiphy_ext_feature_set(hw->wiphy,
735744
NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER);
736745

746+
hw->wiphy->available_antennas_tx = iwl_mvm_get_valid_tx_ant(mvm);
747+
hw->wiphy->available_antennas_rx = iwl_mvm_get_valid_rx_ant(mvm);
748+
737749
ret = ieee80211_register_hw(mvm->hw);
738750
if (ret) {
739751
iwl_mvm_leds_exit(mvm);
@@ -5028,6 +5040,7 @@ const struct ieee80211_ops iwl_mvm_hw_ops = {
50285040
.tx = iwl_mvm_mac_tx,
50295041
.wake_tx_queue = iwl_mvm_mac_wake_tx_queue,
50305042
.ampdu_action = iwl_mvm_mac_ampdu_action,
5043+
.get_antenna = iwl_mvm_op_get_antenna,
50315044
.start = iwl_mvm_mac_start,
50325045
.reconfig_complete = iwl_mvm_mac_reconfig_complete,
50335046
.stop = iwl_mvm_mac_stop,

drivers/net/wireless/intel/iwlwifi/mvm/ops.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -664,10 +664,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
664664
if (!hw)
665665
return NULL;
666666

667-
if (cfg->max_rx_agg_size)
668-
hw->max_rx_aggregation_subframes = cfg->max_rx_agg_size;
669-
else
670-
hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF;
667+
hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF;
671668

672669
if (cfg->max_tx_agg_size)
673670
hw->max_tx_aggregation_subframes = cfg->max_tx_agg_size;

drivers/net/wireless/intel/iwlwifi/mvm/power.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -370,8 +370,6 @@ static void iwl_mvm_power_config_skip_dtim(struct iwl_mvm *mvm,
370370
if (dtimper >= 10)
371371
return;
372372

373-
/* TODO: check that multicast wake lock is off */
374-
375373
if (host_awake) {
376374
if (iwlmvm_mod_params.power_scheme != IWL_POWER_SCHEME_LP)
377375
return;

drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* in the file called COPYING.
2424
*
2525
* Contact Information:
26-
* Intel Linux Wireless <ilw@linux.intel.com>
26+
* Intel Linux Wireless <linuxwifi@intel.com>
2727
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
2828
*
2929
* BSD LICENSE

0 commit comments

Comments
 (0)