Merge tag 'wireless-drivers-next-2020-01-26' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valo says: ==================== wireless-drivers-next patches for v5.6 Second set of patches for v5.6. Nothing special standing out, smaller new features and fixes allover. Major changes: ar5523 * add support for SMCWUSBT-G2 USB device iwlwifi * support new versions of the FTM FW APIs * support new version of the beacon template FW API * print some extra information when the driver is loaded rtw88 * support wowlan feature for 8822c * add support for WIPHY_WOWLAN_NET_DETECT brcmfmac * add initial support for monitor mode qtnfmac * add module parameter to enable DFS offloading in firmware * add support for STA HE rates * add support for TWT responder and spatial reuse ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -240,7 +240,7 @@ enum iwl_tof_responder_cfg_flags {
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iwl_tof_responder_config_cmd - ToF AP mode (for debug)
|
||||
* struct iwl_tof_responder_config_cmd_v6 - ToF AP mode (for debug)
|
||||
* @cmd_valid_fields: &iwl_tof_responder_cmd_valid_field
|
||||
* @responder_cfg_flags: &iwl_tof_responder_cfg_flags
|
||||
* @bandwidth: current AP Bandwidth: &enum iwl_tof_bandwidth
|
||||
@@ -258,7 +258,7 @@ enum iwl_tof_responder_cfg_flags {
|
||||
* @bssid: Current AP BSSID
|
||||
* @reserved2: reserved
|
||||
*/
|
||||
struct iwl_tof_responder_config_cmd {
|
||||
struct iwl_tof_responder_config_cmd_v6 {
|
||||
__le32 cmd_valid_fields;
|
||||
__le32 responder_cfg_flags;
|
||||
u8 bandwidth;
|
||||
@@ -274,6 +274,42 @@ struct iwl_tof_responder_config_cmd {
|
||||
__le16 reserved2;
|
||||
} __packed; /* TOF_RESPONDER_CONFIG_CMD_API_S_VER_6 */
|
||||
|
||||
/**
|
||||
* struct iwl_tof_responder_config_cmd - ToF AP mode (for debug)
|
||||
* @cmd_valid_fields: &iwl_tof_responder_cmd_valid_field
|
||||
* @responder_cfg_flags: &iwl_tof_responder_cfg_flags
|
||||
* @format_bw: bits 0 - 3: &enum iwl_location_frame_format.
|
||||
* bits 4 - 7: &enum iwl_location_bw.
|
||||
* @rate: current AP rate
|
||||
* @channel_num: current AP Channel
|
||||
* @ctrl_ch_position: coding of the control channel position relative to
|
||||
* the center frequency, see iwl_mvm_get_ctrl_pos()
|
||||
* @sta_id: index of the AP STA when in AP mode
|
||||
* @reserved1: reserved
|
||||
* @toa_offset: Artificial addition [pSec] for the ToA - to be used for debug
|
||||
* purposes, simulating station movement by adding various values
|
||||
* to this field
|
||||
* @common_calib: XVT: common calibration value
|
||||
* @specific_calib: XVT: specific calibration value
|
||||
* @bssid: Current AP BSSID
|
||||
* @reserved2: reserved
|
||||
*/
|
||||
struct iwl_tof_responder_config_cmd {
|
||||
__le32 cmd_valid_fields;
|
||||
__le32 responder_cfg_flags;
|
||||
u8 format_bw;
|
||||
u8 rate;
|
||||
u8 channel_num;
|
||||
u8 ctrl_ch_position;
|
||||
u8 sta_id;
|
||||
u8 reserved1;
|
||||
__le16 toa_offset;
|
||||
__le16 common_calib;
|
||||
__le16 specific_calib;
|
||||
u8 bssid[ETH_ALEN];
|
||||
__le16 reserved2;
|
||||
} __packed; /* TOF_RESPONDER_CONFIG_CMD_API_S_VER_6 */
|
||||
|
||||
#define IWL_LCI_CIVIC_IE_MAX_SIZE 400
|
||||
|
||||
/**
|
||||
@@ -403,7 +439,7 @@ enum iwl_initiator_ap_flags {
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iwl_tof_range_req_ap_entry - AP configuration parameters
|
||||
* struct iwl_tof_range_req_ap_entry_v3 - AP configuration parameters
|
||||
* @initiator_ap_flags: see &enum iwl_initiator_ap_flags.
|
||||
* @channel_num: AP Channel number
|
||||
* @bandwidth: AP bandwidth. One of iwl_tof_bandwidth.
|
||||
@@ -420,7 +456,7 @@ enum iwl_initiator_ap_flags {
|
||||
* @reserved: For alignment and future use
|
||||
* @tsf_delta: not in use
|
||||
*/
|
||||
struct iwl_tof_range_req_ap_entry {
|
||||
struct iwl_tof_range_req_ap_entry_v3 {
|
||||
__le32 initiator_ap_flags;
|
||||
u8 channel_num;
|
||||
u8 bandwidth;
|
||||
@@ -434,6 +470,72 @@ struct iwl_tof_range_req_ap_entry {
|
||||
__le32 tsf_delta;
|
||||
} __packed; /* LOCATION_RANGE_REQ_AP_ENTRY_CMD_API_S_VER_3 */
|
||||
|
||||
/**
|
||||
* enum iwl_location_frame_format - location frame formats
|
||||
* @IWL_LOCATION_FRAME_FORMAT_LEGACY: legacy
|
||||
* @IWL_LOCATION_FRAME_FORMAT_HT: HT
|
||||
* @IWL_LOCATION_FRAME_FORMAT_VHT: VHT
|
||||
* @IWL_LOCATION_FRAME_FORMAT_HE: HE
|
||||
*/
|
||||
enum iwl_location_frame_format {
|
||||
IWL_LOCATION_FRAME_FORMAT_LEGACY,
|
||||
IWL_LOCATION_FRAME_FORMAT_HT,
|
||||
IWL_LOCATION_FRAME_FORMAT_VHT,
|
||||
IWL_LOCATION_FRAME_FORMAT_HE,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum iwl_location_bw - location bandwidth selection
|
||||
* @IWL_LOCATION_BW_20MHZ: 20MHz
|
||||
* @IWL_LOCATION_BW_40MHZ: 40MHz
|
||||
* @IWL_LOCATION_BW_80MHZ: 80MHz
|
||||
*/
|
||||
enum iwl_location_bw {
|
||||
IWL_LOCATION_BW_20MHZ,
|
||||
IWL_LOCATION_BW_40MHZ,
|
||||
IWL_LOCATION_BW_80MHZ,
|
||||
};
|
||||
|
||||
#define HLTK_11AZ_LEN 32
|
||||
#define TK_11AZ_LEN 32
|
||||
|
||||
#define LOCATION_BW_POS 4
|
||||
|
||||
/**
|
||||
* struct iwl_tof_range_req_ap_entry - AP configuration parameters
|
||||
* @initiator_ap_flags: see &enum iwl_initiator_ap_flags.
|
||||
* @channel_num: AP Channel number
|
||||
* @format_bw: bits 0 - 3: &enum iwl_location_frame_format.
|
||||
* bits 4 - 7: &enum iwl_location_bw.
|
||||
* @ctrl_ch_position: Coding of the control channel position relative to the
|
||||
* center frequency, see iwl_mvm_get_ctrl_pos().
|
||||
* @ftmr_max_retries: Max number of retries to send the FTMR in case of no
|
||||
* reply from the AP.
|
||||
* @bssid: AP's BSSID
|
||||
* @burst_period: Recommended value to be sent to the AP. Measurement
|
||||
* periodicity In units of 100ms. ignored if num_of_bursts_exp = 0
|
||||
* @samples_per_burst: the number of FTMs pairs in single Burst (1-31);
|
||||
* @num_of_bursts: Recommended value to be sent to the AP. 2s Exponent of
|
||||
* the number of measurement iterations (min 2^0 = 1, max 2^14)
|
||||
* @reserved: For alignment and future use
|
||||
* @hltk: HLTK to be used for secured 11az measurement
|
||||
* @tk: TK to be used for secured 11az measurement
|
||||
*/
|
||||
struct iwl_tof_range_req_ap_entry {
|
||||
__le32 initiator_ap_flags;
|
||||
u8 channel_num;
|
||||
u8 format_bw;
|
||||
u8 ctrl_ch_position;
|
||||
u8 ftmr_max_retries;
|
||||
u8 bssid[ETH_ALEN];
|
||||
__le16 burst_period;
|
||||
u8 samples_per_burst;
|
||||
u8 num_of_bursts;
|
||||
__le16 reserved;
|
||||
u8 hltk[HLTK_11AZ_LEN];
|
||||
u8 tk[TK_11AZ_LEN];
|
||||
} __packed; /* LOCATION_RANGE_REQ_AP_ENTRY_CMD_API_S_VER_4 */
|
||||
|
||||
/**
|
||||
* enum iwl_tof_response_mode
|
||||
* @IWL_MVM_TOF_RESPONSE_ASAP: report each AP measurement separately as soon as
|
||||
@@ -535,6 +637,38 @@ struct iwl_tof_range_req_cmd_v5 {
|
||||
} __packed;
|
||||
/* LOCATION_RANGE_REQ_CMD_API_S_VER_5 */
|
||||
|
||||
/**
|
||||
* struct iwl_tof_range_req_cmd_v7 - start measurement cmd
|
||||
* @initiator_flags: see flags @ iwl_tof_initiator_flags
|
||||
* @request_id: A Token incremented per request. The same Token will be
|
||||
* sent back in the range response
|
||||
* @num_of_ap: Number of APs to measure (error if > IWL_MVM_TOF_MAX_APS)
|
||||
* @range_req_bssid: ranging request BSSID
|
||||
* @macaddr_mask: Bits set to 0 shall be copied from the MAC address template.
|
||||
* Bits set to 1 shall be randomized by the UMAC
|
||||
* @macaddr_template: MAC address template to use for non-randomized bits
|
||||
* @req_timeout_ms: Requested timeout of the response in units of milliseconds.
|
||||
* This is the session time for completing the measurement.
|
||||
* @tsf_mac_id: report the measurement start time for each ap in terms of the
|
||||
* TSF of this mac id. 0xff to disable TSF reporting.
|
||||
* @common_calib: The common calib value to inject to this measurement calc
|
||||
* @specific_calib: The specific calib value to inject to this measurement calc
|
||||
* @ap: per-AP request data, see &struct iwl_tof_range_req_ap_entry_v2.
|
||||
*/
|
||||
struct iwl_tof_range_req_cmd_v7 {
|
||||
__le32 initiator_flags;
|
||||
u8 request_id;
|
||||
u8 num_of_ap;
|
||||
u8 range_req_bssid[ETH_ALEN];
|
||||
u8 macaddr_mask[ETH_ALEN];
|
||||
u8 macaddr_template[ETH_ALEN];
|
||||
__le32 req_timeout_ms;
|
||||
__le32 tsf_mac_id;
|
||||
__le16 common_calib;
|
||||
__le16 specific_calib;
|
||||
struct iwl_tof_range_req_ap_entry_v3 ap[IWL_MVM_TOF_MAX_APS];
|
||||
} __packed; /* LOCATION_RANGE_REQ_CMD_API_S_VER_7 */
|
||||
|
||||
/**
|
||||
* struct iwl_tof_range_req_cmd - start measurement cmd
|
||||
* @initiator_flags: see flags @ iwl_tof_initiator_flags
|
||||
@@ -565,7 +699,7 @@ struct iwl_tof_range_req_cmd {
|
||||
__le16 common_calib;
|
||||
__le16 specific_calib;
|
||||
struct iwl_tof_range_req_ap_entry ap[IWL_MVM_TOF_MAX_APS];
|
||||
} __packed; /* LOCATION_RANGE_REQ_CMD_API_S_VER_7 */
|
||||
} __packed; /* LOCATION_RANGE_REQ_CMD_API_S_VER_8 */
|
||||
|
||||
/*
|
||||
* enum iwl_tof_range_request_status - status of the sent request
|
||||
|
@@ -921,21 +921,6 @@ struct iwl_scan_probe_params_v4 {
|
||||
|
||||
#define SCAN_MAX_NUM_CHANS_V3 67
|
||||
|
||||
/**
|
||||
* struct iwl_scan_channel_params_v3
|
||||
* @flags: channel flags &enum iwl_scan_channel_flags
|
||||
* @count: num of channels in scan request
|
||||
* @reserved: for future use and alignment
|
||||
* @channel_config: array of explicit channel configurations
|
||||
* for 2.4Ghz and 5.2Ghz bands
|
||||
*/
|
||||
struct iwl_scan_channel_params_v3 {
|
||||
u8 flags;
|
||||
u8 count;
|
||||
__le16 reserved;
|
||||
struct iwl_scan_channel_cfg_umac channel_config[SCAN_MAX_NUM_CHANS_V3];
|
||||
} __packed; /* SCAN_CHANNEL_PARAMS_API_S_VER_3 */
|
||||
|
||||
/**
|
||||
* struct iwl_scan_channel_params_v4
|
||||
* @flags: channel flags &enum iwl_scan_channel_flags
|
||||
@@ -1010,20 +995,6 @@ struct iwl_scan_periodic_parms_v1 {
|
||||
__le16 reserved;
|
||||
} __packed; /* SCAN_PERIODIC_PARAMS_API_S_VER_1 */
|
||||
|
||||
/**
|
||||
* struct iwl_scan_req_params_v11
|
||||
* @general_params: &struct iwl_scan_general_params_v10
|
||||
* @channel_params: &struct iwl_scan_channel_params_v3
|
||||
* @periodic_params: &struct iwl_scan_periodic_parms_v1
|
||||
* @probe_params: &struct iwl_scan_probe_params_v3
|
||||
*/
|
||||
struct iwl_scan_req_params_v11 {
|
||||
struct iwl_scan_general_params_v10 general_params;
|
||||
struct iwl_scan_channel_params_v3 channel_params;
|
||||
struct iwl_scan_periodic_parms_v1 periodic_params;
|
||||
struct iwl_scan_probe_params_v3 probe_params;
|
||||
} __packed; /* SCAN_REQUEST_PARAMS_API_S_VER_11 */
|
||||
|
||||
/**
|
||||
* struct iwl_scan_req_params_v12
|
||||
* @general_params: &struct iwl_scan_general_params_v10
|
||||
@@ -1052,18 +1023,6 @@ struct iwl_scan_req_params_v13 {
|
||||
struct iwl_scan_probe_params_v4 probe_params;
|
||||
} __packed; /* SCAN_REQUEST_PARAMS_API_S_VER_13 */
|
||||
|
||||
/**
|
||||
* struct iwl_scan_req_umac_v11
|
||||
* @uid: scan id, &enum iwl_umac_scan_uid_offsets
|
||||
* @ooc_priority: out of channel priority - &enum iwl_scan_priority
|
||||
* @scan_params: scan parameters
|
||||
*/
|
||||
struct iwl_scan_req_umac_v11 {
|
||||
__le32 uid;
|
||||
__le32 ooc_priority;
|
||||
struct iwl_scan_req_params_v11 scan_params;
|
||||
} __packed; /* SCAN_REQUEST_CMD_UMAC_API_S_VER_11 */
|
||||
|
||||
/**
|
||||
* struct iwl_scan_req_umac_v12
|
||||
* @uid: scan id, &enum iwl_umac_scan_uid_offsets
|
||||
|
@@ -813,6 +813,7 @@ enum iwl_mac_beacon_flags {
|
||||
IWL_MAC_BEACON_ANT_A = BIT(9),
|
||||
IWL_MAC_BEACON_ANT_B = BIT(10),
|
||||
IWL_MAC_BEACON_ANT_C = BIT(11),
|
||||
IWL_MAC_BEACON_FILS = BIT(12),
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -820,6 +821,7 @@ enum iwl_mac_beacon_flags {
|
||||
* @byte_cnt: byte count of the beacon frame.
|
||||
* @flags: least significant byte for rate code. The most significant byte
|
||||
* is &enum iwl_mac_beacon_flags.
|
||||
* @short_ssid: Short SSID
|
||||
* @reserved: reserved
|
||||
* @template_id: currently equal to the mac context id of the coresponding mac.
|
||||
* @tim_idx: the offset of the tim IE in the beacon
|
||||
@@ -831,14 +833,15 @@ enum iwl_mac_beacon_flags {
|
||||
struct iwl_mac_beacon_cmd {
|
||||
__le16 byte_cnt;
|
||||
__le16 flags;
|
||||
__le64 reserved;
|
||||
__le32 short_ssid;
|
||||
__le32 reserved;
|
||||
__le32 template_id;
|
||||
__le32 tim_idx;
|
||||
__le32 tim_size;
|
||||
__le32 ecsa_offset;
|
||||
__le32 csa_offset;
|
||||
struct ieee80211_hdr frame[0];
|
||||
} __packed; /* BEACON_TEMPLATE_CMD_API_S_VER_9 */
|
||||
} __packed; /* BEACON_TEMPLATE_CMD_API_S_VER_10 */
|
||||
|
||||
struct iwl_beacon_notif {
|
||||
struct iwl_mvm_tx_resp beacon_notify_hdr;
|
||||
|
@@ -929,7 +929,7 @@ iwl_fw_error_dump_file(struct iwl_fw_runtime *fwrt,
|
||||
cpu_to_le32(CSR_HW_REV_STEP(fwrt->trans->hw_rev));
|
||||
memcpy(dump_info->fw_human_readable, fwrt->fw->human_readable,
|
||||
sizeof(dump_info->fw_human_readable));
|
||||
strncpy(dump_info->dev_human_readable, fwrt->trans->cfg->name,
|
||||
strncpy(dump_info->dev_human_readable, fwrt->trans->name,
|
||||
sizeof(dump_info->dev_human_readable) - 1);
|
||||
strncpy(dump_info->bus_human_readable, fwrt->dev->bus->name,
|
||||
sizeof(dump_info->bus_human_readable) - 1);
|
||||
@@ -1230,13 +1230,15 @@ static bool iwl_ini_txf_iter(struct iwl_fw_runtime *fwrt,
|
||||
iter->lmac = 0;
|
||||
}
|
||||
|
||||
if (!iter->internal_txf)
|
||||
if (!iter->internal_txf) {
|
||||
for (iter->fifo++; iter->fifo < txf_num; iter->fifo++) {
|
||||
iter->fifo_size =
|
||||
cfg->lmac[iter->lmac].txfifo_size[iter->fifo];
|
||||
if (iter->fifo_size && (lmac_bitmap & BIT(iter->fifo)))
|
||||
return true;
|
||||
}
|
||||
iter->fifo--;
|
||||
}
|
||||
|
||||
iter->internal_txf = 1;
|
||||
|
||||
@@ -2351,9 +2353,6 @@ int iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt,
|
||||
u32 occur, delay;
|
||||
unsigned long idx;
|
||||
|
||||
if (test_bit(STATUS_GEN_ACTIVE_TRIGS, &fwrt->status))
|
||||
return -EBUSY;
|
||||
|
||||
if (!iwl_fw_ini_trigger_on(fwrt, trig)) {
|
||||
IWL_WARN(fwrt, "WRT: Trigger %d is not active, aborting dump\n",
|
||||
tp_id);
|
||||
|
@@ -320,31 +320,6 @@ out:
|
||||
|
||||
FWRT_DEBUGFS_WRITE_FILE_OPS(send_hcmd, 512);
|
||||
|
||||
static ssize_t iwl_dbgfs_fw_dbg_domain_write(struct iwl_fw_runtime *fwrt,
|
||||
char *buf, size_t count)
|
||||
{
|
||||
u32 new_domain;
|
||||
int ret;
|
||||
|
||||
if (!iwl_trans_fw_running(fwrt->trans))
|
||||
return -EIO;
|
||||
|
||||
ret = kstrtou32(buf, 0, &new_domain);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (new_domain != fwrt->trans->dbg.domains_bitmap) {
|
||||
ret = iwl_dbg_tlv_gen_active_trigs(fwrt, new_domain);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
iwl_dbg_tlv_time_point(fwrt, IWL_FW_INI_TIME_POINT_PERIODIC,
|
||||
NULL);
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t iwl_dbgfs_fw_dbg_domain_read(struct iwl_fw_runtime *fwrt,
|
||||
size_t size, char *buf)
|
||||
{
|
||||
@@ -352,7 +327,7 @@ static ssize_t iwl_dbgfs_fw_dbg_domain_read(struct iwl_fw_runtime *fwrt,
|
||||
fwrt->trans->dbg.domains_bitmap);
|
||||
}
|
||||
|
||||
FWRT_DEBUGFS_READ_WRITE_FILE_OPS(fw_dbg_domain, 20);
|
||||
FWRT_DEBUGFS_READ_FILE_OPS(fw_dbg_domain, 20);
|
||||
|
||||
void iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt,
|
||||
struct dentry *dbgfs_dir)
|
||||
@@ -360,5 +335,5 @@ void iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt,
|
||||
INIT_DELAYED_WORK(&fwrt->timestamp.wk, iwl_fw_timestamp_marker_wk);
|
||||
FWRT_DEBUGFS_ADD_FILE(timestamp_marker, dbgfs_dir, 0200);
|
||||
FWRT_DEBUGFS_ADD_FILE(send_hcmd, dbgfs_dir, 0200);
|
||||
FWRT_DEBUGFS_ADD_FILE(fw_dbg_domain, dbgfs_dir, 0600);
|
||||
FWRT_DEBUGFS_ADD_FILE(fw_dbg_domain, dbgfs_dir, 0400);
|
||||
}
|
||||
|
@@ -251,7 +251,7 @@ struct iwl_fw_dbg {
|
||||
struct iwl_fw {
|
||||
u32 ucode_ver;
|
||||
|
||||
char fw_version[ETHTOOL_FWVERS_LEN];
|
||||
char fw_version[64];
|
||||
|
||||
/* ucode images */
|
||||
struct fw_img img[IWL_UCODE_TYPE_MAX];
|
||||
|
@@ -69,7 +69,7 @@
|
||||
#include "iwl-eeprom-parse.h"
|
||||
#include "fw/acpi.h"
|
||||
|
||||
#define IWL_FW_DBG_DOMAIN IWL_FW_INI_DOMAIN_ALWAYS_ON
|
||||
#define IWL_FW_DBG_DOMAIN IWL_TRANS_FW_DBG_DOMAIN(fwrt->trans)
|
||||
|
||||
struct iwl_fw_runtime_ops {
|
||||
int (*dump_start)(void *ctx);
|
||||
@@ -129,14 +129,6 @@ struct iwl_txf_iter_data {
|
||||
u8 internal_txf;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum iwl_fw_runtime_status - fw runtime status flags
|
||||
* @STATUS_GEN_ACTIVE_TRIGS: generating active trigger list
|
||||
*/
|
||||
enum iwl_fw_runtime_status {
|
||||
STATUS_GEN_ACTIVE_TRIGS,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iwl_fw_runtime - runtime data for firmware
|
||||
* @fw: firmware image
|
||||
@@ -150,7 +142,6 @@ enum iwl_fw_runtime_status {
|
||||
* @smem_cfg: saved firmware SMEM configuration
|
||||
* @cur_fw_img: current firmware image, must be maintained by
|
||||
* the driver by calling &iwl_fw_set_current_image()
|
||||
* @status: &enum iwl_fw_runtime_status
|
||||
* @dump: debug dump data
|
||||
*/
|
||||
struct iwl_fw_runtime {
|
||||
@@ -171,8 +162,6 @@ struct iwl_fw_runtime {
|
||||
/* memory configuration */
|
||||
struct iwl_fwrt_shared_mem_cfg smem_cfg;
|
||||
|
||||
unsigned long status;
|
||||
|
||||
/* debug */
|
||||
struct {
|
||||
const struct iwl_fw_dump_desc *desc;
|
||||
|
Reference in New Issue
Block a user