mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 08:07:32 -04:00
Merge tag 'LA.UM.9.14.r1-21200-LAHAINA.QSSI13.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/qca-wifi-host-cmn into android13-5.4-lahaina
"LA.UM.9.14.r1-21200-LAHAINA.QSSI13.0" * tag 'LA.UM.9.14.r1-21200-LAHAINA.QSSI13.0' of https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/wlan/qca-wifi-host-cmn: qcacmn: Realloc memory for wmi_service_ext_bitmap qcacmn: Remove logic to enable/disable wake msi for drv systems qcacmn: Fix FILS Discovery rx frames capture in packet capture mode qcacmn: Roam control configuration for 6 GHz in full scan only on prior discovery qcacmn: Send fils discovery template to wmi layer qcacmn: Add a vendor attribute for roam control configuration for full scan qcacmn: A vendor roam control configuration for delaying hand off for RX qcacmn: Update mgmt action category qcacmn: Add support to handle vendor specific protected action frame Change-Id: I37354c38b6a51b425e14582a06ed29008646f2ad
This commit is contained in:
commit
f336483dbb
12 changed files with 225 additions and 19 deletions
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2018, 2020-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -477,7 +478,6 @@ int hif_apps_irqs_disable(struct hif_opaque_softc *hif_ctx)
|
|||
return -EINVAL;
|
||||
|
||||
/* if the wake_irq is shared, don't disable it twice */
|
||||
disable_irq(scn->wake_irq);
|
||||
for (i = 0; i < scn->ce_count; ++i) {
|
||||
int irq = scn->bus_ops.hif_map_ce_to_irq(scn, i);
|
||||
|
||||
|
|
@ -499,7 +499,6 @@ int hif_apps_irqs_enable(struct hif_opaque_softc *hif_ctx)
|
|||
return -EINVAL;
|
||||
|
||||
/* if the wake_irq is shared, don't enable it twice */
|
||||
enable_irq(scn->wake_irq);
|
||||
for (i = 0; i < scn->ce_count; ++i) {
|
||||
int irq = scn->bus_ops.hif_map_ce_to_irq(scn, i);
|
||||
|
||||
|
|
|
|||
|
|
@ -2047,10 +2047,8 @@ irqreturn_t hif_wake_interrupt_handler(int irq, void *context)
|
|||
|
||||
hif_info("wake interrupt received on irq %d", irq);
|
||||
|
||||
if (hif_pm_runtime_get_monitor_wake_intr(hif_ctx)) {
|
||||
hif_pm_runtime_set_monitor_wake_intr(hif_ctx, 0);
|
||||
hif_pm_runtime_request_resume(hif_ctx);
|
||||
}
|
||||
hif_pm_runtime_set_monitor_wake_intr(hif_ctx, 0);
|
||||
hif_pm_runtime_request_resume(hif_ctx);
|
||||
|
||||
if (scn->initial_wakeup_cb)
|
||||
scn->initial_wakeup_cb(scn->initial_wakeup_priv);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -2403,8 +2404,6 @@ int hif_pci_bus_suspend_noirq(struct hif_softc *scn)
|
|||
if (hif_can_suspend_link(GET_HIF_OPAQUE_HDL(scn)))
|
||||
qdf_atomic_set(&scn->link_suspended, 1);
|
||||
|
||||
hif_apps_wake_irq_enable(GET_HIF_OPAQUE_HDL(scn));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -2419,8 +2418,6 @@ int hif_pci_bus_suspend_noirq(struct hif_softc *scn)
|
|||
*/
|
||||
int hif_pci_bus_resume_noirq(struct hif_softc *scn)
|
||||
{
|
||||
hif_apps_wake_irq_disable(GET_HIF_OPAQUE_HDL(scn));
|
||||
|
||||
/* a vote for link up can come in the middle of the ongoing resume
|
||||
* process. hence, clear the link suspend flag once
|
||||
* hif_bus_resume_noirq() succeeds since PCIe link is already resumed
|
||||
|
|
|
|||
|
|
@ -3245,6 +3245,41 @@ enum qca_vendor_attr_roam_candidate_selection_criteria {
|
|||
* threshold value specified by the
|
||||
* QCA_ATTR_ROAM_CONTROL_CANDIDATE_RSSI_THRESHOLD attribute shall be used.
|
||||
*
|
||||
* @QCA_ATTR_ROAM_CONTROL_HO_DELAY_FOR_RX: u16 value in milliseconds.
|
||||
* Optional parameter. This configuration delays hand-off (in msec) by the
|
||||
* specified duration to receive pending rx frames from current BSS.
|
||||
*
|
||||
* @QCA_ATTR_ROAM_CONTROL_FULL_SCAN_NO_REUSE_PARTIAL_SCAN_FREQ: Unsigned 8-bit
|
||||
* value.
|
||||
* During the roam scan, if there are no desired APs found in the partial
|
||||
* frequency list, an immediate full scan on all the supported frequencies
|
||||
* is initiated as a fallback. This flag controls the frequency list
|
||||
* creation for the full scan on the following lines.
|
||||
* 1 - Full scan to exclude the frequencies that were already scanned by
|
||||
* the previous partial scan.
|
||||
* 0 - Full scan to include all the supported frequencies irrespective of
|
||||
* the ones part of the earlier partial scan.
|
||||
* If this flag is not specified, a full scan shall include all the
|
||||
* supported frequencies irrespective of the ones part of an earlier
|
||||
* partial scan.
|
||||
*
|
||||
* @QCA_ATTR_ROAM_CONTROL_FULL_SCAN_6GHZ_ONLY_ON_PRIOR_DISCOVERY: Unsigned 8-bit
|
||||
* value.
|
||||
* During the roam scan, if there are no desired APs found in the partial
|
||||
* frequency list, an immediate full scan on all the supported frequencies
|
||||
* is initiated as a fallback. This full scan would add the 2.4/5/6 GHz
|
||||
* frequencies, including all PSC frequencies by default. This attribute
|
||||
* controls the inclusion of the 6 GHz PSC frequencies for the full scan
|
||||
* as following.
|
||||
* 1 - Full scan to include the supported 6 GHz PSC frequencies only on the
|
||||
* prior discovery of any 6 GHz frequency support in the environment.
|
||||
* This discovery can happen through a prior RNR, 11k neighbor
|
||||
* request, 11v BTM request, host scan, etc.
|
||||
* 0 - Default behavior. Full scan to include all the supported 6 GHz
|
||||
* PSC frequencies regardless of whether 6 GHz BSSs have been
|
||||
* discovered.
|
||||
* The default behavior if this flag is not specified is to include all
|
||||
* the supported 6 GHz PSC frequencies in the roam full scan.
|
||||
*/
|
||||
enum qca_vendor_attr_roam_control {
|
||||
QCA_ATTR_ROAM_CONTROL_ENABLE = 1,
|
||||
|
|
@ -3263,6 +3298,9 @@ enum qca_vendor_attr_roam_control {
|
|||
QCA_ATTR_ROAM_CONTROL_CANDIDATE_RSSI_THRESHOLD_2P4GHZ = 14,
|
||||
QCA_ATTR_ROAM_CONTROL_CANDIDATE_RSSI_THRESHOLD_5GHZ = 15,
|
||||
QCA_ATTR_ROAM_CONTROL_CANDIDATE_RSSI_THRESHOLD_6GHZ = 16,
|
||||
QCA_ATTR_ROAM_CONTROL_HO_DELAY_FOR_RX = 25,
|
||||
QCA_ATTR_ROAM_CONTROL_FULL_SCAN_NO_REUSE_PARTIAL_SCAN_FREQ = 26,
|
||||
QCA_ATTR_ROAM_CONTROL_FULL_SCAN_6GHZ_ONLY_ON_PRIOR_DISCOVERY = 27,
|
||||
|
||||
/* keep last */
|
||||
QCA_ATTR_ROAM_CONTROL_AFTER_LAST,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -69,6 +70,17 @@ target_if_vdev_mgr_get_tx_ops(struct wlan_objmgr_psoc *psoc)
|
|||
QDF_STATUS
|
||||
target_if_vdev_mgr_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops);
|
||||
|
||||
/**
|
||||
* target_if_vdev_mgr_send_fd_tmpl() - sends fils discovery template
|
||||
* to wmi layer.
|
||||
* @vdev: pointer to wlan objmgr vdev.
|
||||
* @param: pointer to fils discovery template parameter
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
|
||||
*/
|
||||
QDF_STATUS target_if_vdev_mgr_send_fd_tmpl(struct wlan_objmgr_vdev *vdev,
|
||||
struct fils_discovery_tmpl_params *param);
|
||||
|
||||
/**
|
||||
* target_if_vdev_mgr_assert_mgmt() - vdev assert mgmt api
|
||||
* @PSOC: pointer to objmgr psoc
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -363,11 +364,11 @@ static QDF_STATUS target_if_vdev_mgr_set_param_send(
|
|||
mlme_err("Failed to get WMI handle!");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
param_id = target_if_vdev_mlme_id_2_wmi(param->param_id);
|
||||
param->param_id = param_id;
|
||||
if (param->param_id == wmi_vdev_param_txbf)
|
||||
param->param_value = target_if_vdev_mlme_build_txbf_caps(vdev);
|
||||
|
||||
status = wmi_unified_vdev_set_param_send(wmi_handle, param);
|
||||
|
||||
return status;
|
||||
|
|
@ -717,6 +718,28 @@ static QDF_STATUS target_if_vdev_mgr_beacon_tmpl_send(
|
|||
return status;
|
||||
}
|
||||
|
||||
QDF_STATUS target_if_vdev_mgr_send_fd_tmpl(struct wlan_objmgr_vdev *vdev,
|
||||
struct fils_discovery_tmpl_params *param)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
struct wmi_unified *wmi_handle;
|
||||
|
||||
if (!vdev || !param) {
|
||||
mlme_err("Invalid input");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
wmi_handle = target_if_vdev_mgr_wmi_handle_get(vdev);
|
||||
if (!wmi_handle) {
|
||||
mlme_err("Failed to get WMI handle!");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
status = wmi_unified_fd_tmpl_send_cmd(wmi_handle, param);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static QDF_STATUS target_if_vdev_mgr_set_nac_rssi_send(
|
||||
struct wlan_objmgr_vdev *vdev,
|
||||
struct vdev_scan_nac_rssi_params *param)
|
||||
|
|
|
|||
|
|
@ -151,9 +151,14 @@
|
|||
*/
|
||||
#define WLAN_TPE_IE_MAX_LEN 9
|
||||
|
||||
#define WLAN_TPE_IE_MIN_LEN 2
|
||||
#define WLAN_MAX_NUM_TPE_IE 8
|
||||
/* Max channel switch time IE length */
|
||||
#define WLAN_MAX_CHAN_SWITCH_TIME_IE_LEN 4
|
||||
|
||||
/* Length of Timestamp field */
|
||||
#define WLAN_TIMESTAMP_LEN 8
|
||||
|
||||
/* HT capability flags */
|
||||
#define WLAN_HTCAP_C_ADVCODING 0x0001
|
||||
#define WLAN_HTCAP_C_CHWIDTH40 0x0002
|
||||
|
|
@ -912,6 +917,53 @@ enum wlan_status_code {
|
|||
#define RSN_CAP_MFP_CAPABLE 0x80
|
||||
#define RSN_CAP_MFP_REQUIRED 0x40
|
||||
|
||||
/* FILS Discovery */
|
||||
#define WLAN_ACTION_FILS_DISCOVERY 34
|
||||
#define WLAN_FD_FRAMECNTL_CAP 0x0020
|
||||
#define WLAN_FD_FRAMECNTL_SHORTSSID 0x0040
|
||||
#define WLAN_FD_FRAMECNTL_CH_CENTERFREQ 0x0200
|
||||
#define WLAN_FD_FRAMECNTL_LEN_PRES 0x1000
|
||||
#define WLAN_FD_FRAMECNTL_SHORTSSID_LEN 0x0003
|
||||
|
||||
#define WLAN_FD_SSID_LEN_PRES(_v) ((_v) & 0x1F)
|
||||
#define WLAN_FD_IS_CAP_PRESENT(_v) ((_v) & WLAN_FD_FRAMECNTL_CAP)
|
||||
#define WLAN_FD_IS_LEN_PRESENT(_v) ((_v) & WLAN_FD_FRAMECNTL_LEN_PRES)
|
||||
#define WLAN_FD_IS_FRAMECNTL_CH_CENTERFREQ(_v)\
|
||||
((_v) & WLAN_FD_FRAMECNTL_CH_CENTERFREQ)
|
||||
|
||||
#define WLAN_FD_CAP_LEN 2
|
||||
#define WLAN_FD_CAP_ESS_S 0
|
||||
#define WLAN_FD_CAP_PRIVACY_S 1
|
||||
#define WLAN_FD_CAP_BSS_CHWIDTH_S 2
|
||||
#define WLAN_FD_CAP_NSS_S 5
|
||||
#define WLAN_FD_CAP_PHY_INDEX_S 2
|
||||
#define WLAN_FD_CAP_MIN_RATE_S 5
|
||||
|
||||
#define WLAN_FD_CHWIDTH_20 0
|
||||
#define WLAN_FD_CHWIDTH_40 1
|
||||
#define WLAN_FD_CHWIDTH_80 2
|
||||
#define WLAN_FD_CHWIDTH_160_80_80 3
|
||||
#define WLAN_FD_CHWIDTH_320 4
|
||||
|
||||
#define WLAN_FD_CAP_NSS_GTE_5 4
|
||||
#define WLAN_FD_CAP_NSS_MODE_1 1
|
||||
#define WLAN_FD_CAP_NSS_MODE_2 2
|
||||
#define WLAN_FD_CAP_NSS_MODE_3 3
|
||||
#define WLAN_FD_CAP_NSS_MODE_4 4
|
||||
#define WLAN_FD_CAP_NSS_MODE_5 5
|
||||
#define WLAN_FD_CAP_NSS_MODE_6 6
|
||||
#define WLAN_FD_CAP_NSS_MODE_7 7
|
||||
#define WLAN_FD_CAP_NSS_MODE_8 8
|
||||
|
||||
#define WLAN_FD_CAP_ESS_ENABLE 1
|
||||
|
||||
#define WLAN_FD_CAP_PHY_INDEX_NON_HT_OFDM 1
|
||||
#define WLAN_FD_CAP_PHY_INDEX_HT 2
|
||||
#define WLAN_FD_CAP_PHY_INDEX_VHT 3
|
||||
#define WLAN_FD_CAP_PHY_INDEX_HE 4
|
||||
|
||||
#define WLAN_FD_CAP_MIN_RATE 0
|
||||
|
||||
/**
|
||||
* struct element_info - defines length of a memory block and memory block
|
||||
* @len: length of memory block
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -116,6 +116,14 @@ enum mgmt_subtype {
|
|||
* @ACTION_CATEGORY_RVS: robust av streaming action category
|
||||
* @ACTION_CATEGORY_UNPROT_DMG: dmg action category
|
||||
* @ACTION_CATEGORY_VHT: vht action category
|
||||
* @ACTION_CATEGORY_USIG: Unprotected S1G Action frame
|
||||
* @ACTION_CATEGORY_SIG: S1G Action frame
|
||||
* @ACTION_CATEGORY_FLOW_CONTROL: Flow Control Action frame
|
||||
* @ACTION_CATEGORY_CONTROL_RSP_MCS_NEGO: Control Response MCS Negotiation frame
|
||||
* @ACTION_CATEGORY_FILS: FILS Action frame
|
||||
* @ACTION_CATEGORY_CDMG: CDMG Action frame
|
||||
* @ACTION_CATEGORY_CMMG: CMMG Action frame
|
||||
* @ACTION_CATEGORY_GLK: GLK Action frame
|
||||
* @ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED: vendor specific protected
|
||||
* action category
|
||||
* @ACTION_CATEGORY_VENDOR_SPECIFIC: vendor specific action category
|
||||
|
|
@ -144,6 +152,13 @@ enum mgmt_action_category {
|
|||
ACTION_CATEGORY_UNPROT_DMG = 20,
|
||||
ACTION_CATEGORY_VHT = 21,
|
||||
ACTION_CATEGORY_USIG = 22,
|
||||
ACTION_CATEGORY_SIG = 23,
|
||||
ACTION_CATEGORY_FLOW_CONTROL = 24,
|
||||
ACTION_CATEGORY_CONTROL_RSP_MCS_NEGO = 25,
|
||||
ACTION_CATEGORY_FILS = 26,
|
||||
ACTION_CATEGORY_CDMG = 27,
|
||||
ACTION_CATEGORY_CMMG = 28,
|
||||
ACTION_CATEGORY_GLK = 29,
|
||||
ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
|
||||
ACTION_CATEGORY_VENDOR_SPECIFIC = 127,
|
||||
};
|
||||
|
|
@ -216,7 +231,8 @@ enum block_ack_actioncode {
|
|||
* @PUB_ACTION_GAS_COMEBACK_RESPONSE: GAS comeback respose action frame
|
||||
* @PUB_ACTION_TDLS_DISCRESP: tdls discovery response public action frame
|
||||
* @PUB_ACTION_FTM_REQUEST: FTM request action frame
|
||||
* @PUB_ACTION_FTM_RESPONSE: FTM respose action frame
|
||||
* @PUB_ACTION_FTM_RESPONSE: FTM response action frame
|
||||
* @PUB_ACTION_FILS_DISCOVERY: FILS Discovery action frame
|
||||
*/
|
||||
enum pub_actioncode {
|
||||
PUB_ACTION_2040_BSS_COEXISTENCE = 0,
|
||||
|
|
@ -229,6 +245,7 @@ enum pub_actioncode {
|
|||
PUB_ACTION_TDLS_DISCRESP = 14,
|
||||
PUB_ACTION_FTM_REQUEST = 32,
|
||||
PUB_ACTION_FTM_RESPONSE = 33,
|
||||
PUB_ACTION_FILS_DISCOVERY = 34,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -356,6 +373,7 @@ enum wnm_actioncode {
|
|||
* @TDLS_PEER_PSM_RESPONSE: tdls peer psm response frame
|
||||
* @TDLS_PEER_TRAFFIC_RESPONSE: tdls peer traffic response frame
|
||||
* @TDLS_DISCOVERY_REQUEST: tdls discovery request frame
|
||||
* @TDLS_DISCOVERY_RESPONSE: tdls discovery response frame
|
||||
*/
|
||||
enum tdls_actioncode {
|
||||
TDLS_SETUP_REQUEST = 0,
|
||||
|
|
@ -481,6 +499,7 @@ enum vht_actioncode {
|
|||
/**
|
||||
* enum twt_actioncode - twt action frames
|
||||
* @TWT_SETUP: twt set up action frame
|
||||
* @TWT_TEARDOWN: twt teardown action frame
|
||||
* @TWT_INFORMATION: twt information action frame
|
||||
*/
|
||||
enum twt_actioncode {
|
||||
|
|
@ -530,7 +549,9 @@ struct action_frm_hdr {
|
|||
* @MGMT_ACTION_BA_ADDBA_RESPONSE: ADDBA response action frame
|
||||
* @MGMT_ACTION_BA_DELBA: DELBA action frame
|
||||
* @MGMT_ACTION_2040_BSS_COEXISTENCE: 20-40 bss coex action frame
|
||||
* @MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC: category vendor spcific action frame
|
||||
* @MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC: category vendor specific action frame
|
||||
* @MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED: category vendor specific
|
||||
* protected action frame
|
||||
* @MGMT_ACTION_EXT_CHANNEL_SWITCH_ID: ext channel switch id action frame
|
||||
* @MGMT_ACTION_VENDOR_SPECIFIC: vendor specific action frame
|
||||
* @MGMT_ACTION_TDLS_DISCRESP: TDLS discovery response frame
|
||||
|
|
@ -540,6 +561,10 @@ struct action_frm_hdr {
|
|||
* @MGMT_ACTION_RRM_LINK_MEASUREMENT_RPT: rrm link meas. report action frame
|
||||
* @MGMT_ACTION_RRM_NEIGHBOR_REQ: rrm neighbor request action frame
|
||||
* @MGMT_ACTION_RRM_NEIGHBOR_RPT: rrm neighbor response action frame
|
||||
* @MGMT_ACTION_FT_REQUEST: ft request action frame
|
||||
* @MGMT_ACTION_FT_RESPONSE: ft response action frame
|
||||
* @MGMT_ACTION_FT_CONFIRM: ft confirm action frame
|
||||
* @MGMT_ACTION_FT_ACK: ft ack action frame
|
||||
* @MGMT_ACTION_HT_NOTIFY_CHANWIDTH: notify channel width action frame
|
||||
* @MGMT_ACTION_HT_SMPS: spatial multiplexing power save action frame
|
||||
* @MGMT_ACTION_HT_PSMP: psmp action frame
|
||||
|
|
@ -606,7 +631,7 @@ struct action_frm_hdr {
|
|||
* @MGMT_ACTION_GAS_COMEBACK_REQUEST: GAS Comeback request action frame
|
||||
* @MGMT_ACTION_GAS_COMEBACK_RESPONSE: GAS Comeback response action frame
|
||||
* @MGMT_ACTION_FST_SETUP_REQ: FST setup request frame
|
||||
* @MGMT_ACTION_FST_SETUP_RSPA: FST setup response frame
|
||||
* @MGMT_ACTION_FST_SETUP_RSP: FST setup response frame
|
||||
* @MGMT_ACTION_FST_TEAR_DOWN: FST qos teardown frame
|
||||
* @MGMT_ACTION_FST_ACK_REQ: FST ack frame for request
|
||||
* @MGMT_ACTION_FST_ACK_RSP: FST ack frame for response
|
||||
|
|
@ -624,6 +649,7 @@ struct action_frm_hdr {
|
|||
* @MGMT_ACTION_TWT_INFORMATION: TWT information frame
|
||||
* @MGMT_ACTION_FTM_REQUEST: FTM request frame
|
||||
* @MGMT_ACTION_FTM_RESPONSE: FTM response frame
|
||||
* @MGMT_ACTION_FILS_DISCOVERY: FILS Discovery frame
|
||||
* @MGMT_MAX_FRAME_TYPE: max. mgmt frame types
|
||||
*/
|
||||
enum mgmt_frame_type {
|
||||
|
|
@ -657,6 +683,7 @@ enum mgmt_frame_type {
|
|||
MGMT_ACTION_BA_DELBA,
|
||||
MGMT_ACTION_2040_BSS_COEXISTENCE,
|
||||
MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC,
|
||||
MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED,
|
||||
MGMT_ACTION_EXT_CHANNEL_SWITCH_ID,
|
||||
MGMT_ACTION_VENDOR_SPECIFIC,
|
||||
MGMT_ACTION_TDLS_DISCRESP,
|
||||
|
|
@ -754,6 +781,7 @@ enum mgmt_frame_type {
|
|||
MGMT_ACTION_TWT_INFORMATION,
|
||||
MGMT_ACTION_FTM_REQUEST,
|
||||
MGMT_ACTION_FTM_RESPONSE,
|
||||
MGMT_ACTION_FILS_DISCOVERY,
|
||||
MGMT_MAX_FRAME_TYPE,
|
||||
};
|
||||
|
||||
|
|
@ -766,7 +794,7 @@ enum mgmt_frame_type {
|
|||
* @chan_freq: channel frequency on which this frame is received
|
||||
* @channel: channel on which this frame is received
|
||||
* @snr: snr information used to call rssi
|
||||
* @rssi_ctl[WLAN_MGMT_TXRX_HOST_MAX_ANTENNA]: RSSI of PRI 20MHz for each chain
|
||||
* @rssi_ctl: RSSI of PRI 20MHz for each chain
|
||||
* @rate: Rate kbps
|
||||
* @phy_mode: rx phy mode
|
||||
* @buf_len: length of the frame
|
||||
|
|
@ -775,6 +803,7 @@ enum mgmt_frame_type {
|
|||
* scan source for a scan result mgmt frame
|
||||
* @rssi: combined RSSI, i.e. the sum of the snr + noise floor (dBm units)
|
||||
* @tsf_delta: tsf delta
|
||||
* @tsf_l32: tsf value
|
||||
* @pdev_id: pdev id
|
||||
* @rx_params: pointer to other rx params
|
||||
* (win specific, will be removed in phase 4)
|
||||
|
|
@ -909,6 +938,13 @@ QDF_STATUS wlan_mgmt_txrx_mgmt_frame_tx(struct wlan_objmgr_peer *peer,
|
|||
mgmt_ota_comp_cb tx_ota_comp_cb,
|
||||
enum wlan_umac_comp_id comp_id,
|
||||
void *mgmt_tx_params);
|
||||
/**
|
||||
* wlan_mgmt_is_rmf_mgmt_action_frame() - API to check action category is rmf
|
||||
* @action_category: action category to check
|
||||
*
|
||||
* Return: true if action category is rmf else false
|
||||
*/
|
||||
bool wlan_mgmt_is_rmf_mgmt_action_frame(uint8_t action_category);
|
||||
|
||||
/**
|
||||
* wlan_mgmt_txrx_beacon_frame_tx() - transmits mgmt. beacon
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -216,6 +216,9 @@ mgmt_get_public_action_subtype(uint8_t action_code)
|
|||
case PUB_ACTION_FTM_RESPONSE:
|
||||
frm_type = MGMT_ACTION_FTM_RESPONSE;
|
||||
break;
|
||||
case PUB_ACTION_FILS_DISCOVERY:
|
||||
frm_type = MGMT_ACTION_FILS_DISCOVERY;
|
||||
break;
|
||||
default:
|
||||
frm_type = MGMT_FRM_UNSPECIFIED;
|
||||
break;
|
||||
|
|
@ -871,6 +874,9 @@ mgmt_txrx_get_action_frm_subtype(uint8_t *mpdu_data_ptr)
|
|||
case ACTION_CATEGORY_VENDOR_SPECIFIC:
|
||||
frm_type = MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC;
|
||||
break;
|
||||
case ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED:
|
||||
frm_type = MGMT_ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED;
|
||||
break;
|
||||
case ACTION_CATEGORY_FST:
|
||||
frm_type = mgmt_get_fst_action_subtype(action_hdr->action_code);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -505,6 +506,39 @@ QDF_STATUS wlan_mgmt_txrx_beacon_frame_tx(struct wlan_objmgr_peer *peer,
|
|||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
bool wlan_mgmt_is_rmf_mgmt_action_frame(uint8_t action_category)
|
||||
{
|
||||
switch (action_category) {
|
||||
case ACTION_CATEGORY_SPECTRUM_MGMT:
|
||||
case ACTION_CATEGORY_QOS:
|
||||
case ACTION_CATEGORY_DLS:
|
||||
case ACTION_CATEGORY_BACK:
|
||||
case ACTION_CATEGORY_RRM:
|
||||
case ACTION_FAST_BSS_TRNST:
|
||||
case ACTION_CATEGORY_SA_QUERY:
|
||||
case ACTION_CATEGORY_PROTECTED_DUAL_OF_PUBLIC_ACTION:
|
||||
case ACTION_CATEGORY_WNM:
|
||||
case ACTION_CATEGORY_MESH_ACTION:
|
||||
case ACTION_CATEGORY_MULTIHOP_ACTION:
|
||||
case ACTION_CATEGORY_DMG:
|
||||
case ACTION_CATEGORY_FST:
|
||||
case ACTION_CATEGORY_RVS:
|
||||
case ACTION_CATEGORY_SIG:
|
||||
case ACTION_CATEGORY_FLOW_CONTROL:
|
||||
case ACTION_CATEGORY_CONTROL_RSP_MCS_NEGO:
|
||||
case ACTION_CATEGORY_FILS:
|
||||
case ACTION_CATEGORY_CDMG:
|
||||
case ACTION_CATEGORY_CMMG:
|
||||
case ACTION_CATEGORY_GLK:
|
||||
case ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef WLAN_SUPPORT_FILS
|
||||
QDF_STATUS
|
||||
wlan_mgmt_txrx_fd_action_frame_tx(struct wlan_objmgr_vdev *vdev,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -2653,6 +2654,7 @@ struct wmi_soc {
|
|||
/* WMI service bitmap received from target */
|
||||
uint32_t *wmi_service_bitmap;
|
||||
uint32_t *wmi_ext_service_bitmap;
|
||||
uint32_t wmi_ext2_service_bitmap_len;
|
||||
uint32_t *wmi_ext2_service_bitmap;
|
||||
uint32_t services[wmi_services_max];
|
||||
uint16_t wmi_max_cmds;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -9685,12 +9685,21 @@ QDF_STATUS save_ext_service_bitmap_tlv(wmi_unified_t wmi_handle, void *evt_buf,
|
|||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (!soc->wmi_ext2_service_bitmap) {
|
||||
if (!soc->wmi_ext2_service_bitmap ||
|
||||
(param_buf->num_wmi_service_ext_bitmap >
|
||||
soc->wmi_ext2_service_bitmap_len)) {
|
||||
if (soc->wmi_ext2_service_bitmap) {
|
||||
qdf_mem_free(soc->wmi_ext2_service_bitmap);
|
||||
soc->wmi_ext2_service_bitmap = NULL;
|
||||
}
|
||||
soc->wmi_ext2_service_bitmap =
|
||||
qdf_mem_malloc(param_buf->num_wmi_service_ext_bitmap *
|
||||
sizeof(uint32_t));
|
||||
if (!soc->wmi_ext2_service_bitmap)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
soc->wmi_ext2_service_bitmap_len =
|
||||
param_buf->num_wmi_service_ext_bitmap;
|
||||
}
|
||||
|
||||
qdf_mem_copy(soc->wmi_ext2_service_bitmap,
|
||||
|
|
|
|||
Loading…
Reference in a new issue