qcacld-3.0: Notify firmware on CSA rejection
The host driver now sends a notification to the firmware when a CSA (Channel Switch Announcement) is rejected due to no change in channel, bandwidth, or puncture. Change-Id: I5d8a424459898d15a7931baf7ca4c3de8308c64e CRs-Fixed: 3595843
This commit is contained in:

committed by
Rahul Choudhary

parent
99408bd7da
commit
c03f357db6
16
Kbuild
16
Kbuild
@@ -936,8 +936,14 @@ CLD_WMI_MC_CP_STATS_OBJS := $(WMI_DIR)/src/wmi_unified_mc_cp_stats_tlv.o \
|
|||||||
$(WMI_DIR)/src/wmi_unified_mc_cp_stats_api.o
|
$(WMI_DIR)/src/wmi_unified_mc_cp_stats_api.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_QCA_TARGET_IF_MLME), y)
|
||||||
|
CLD_WMI_MLME_OBJS += $(WMI_DIR)/src/wmi_unified_mlme_tlv.o \
|
||||||
|
$(WMI_DIR)/src/wmi_unified_mlme_api.o
|
||||||
|
endif
|
||||||
|
|
||||||
CLD_WMI_OBJS := $(CLD_WMI_ROAM_OBJS) \
|
CLD_WMI_OBJS := $(CLD_WMI_ROAM_OBJS) \
|
||||||
$(CLD_WMI_MC_CP_STATS_OBJS)
|
$(CLD_WMI_MC_CP_STATS_OBJS) \
|
||||||
|
$(CLD_WMI_MLME_OBJS)
|
||||||
|
|
||||||
$(call add-wlan-objs,cld_wmi,$(CLD_WMI_OBJS))
|
$(call add-wlan-objs,cld_wmi,$(CLD_WMI_OBJS))
|
||||||
|
|
||||||
@@ -1744,9 +1750,14 @@ $(call add-wlan-objs,wlan_pre_cac,$(WLAN_PRE_CAC_OBJS))
|
|||||||
CLD_TARGET_IF_DIR := components/target_if
|
CLD_TARGET_IF_DIR := components/target_if
|
||||||
|
|
||||||
CLD_TARGET_IF_INC := -I$(WLAN_ROOT)/$(CLD_TARGET_IF_DIR)/pmo/inc \
|
CLD_TARGET_IF_INC := -I$(WLAN_ROOT)/$(CLD_TARGET_IF_DIR)/pmo/inc \
|
||||||
|
-I$(WLAN_ROOT)/$(CLD_TARGET_IF_DIR)/mlme/inc \
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_QCA_TARGET_IF_MLME), y)
|
||||||
|
CLD_TARGET_IF_OBJ := $(CLD_TARGET_IF_DIR)/mlme/src/target_if_mlme.o
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_POWER_MANAGEMENT_OFFLOAD), y)
|
ifeq ($(CONFIG_POWER_MANAGEMENT_OFFLOAD), y)
|
||||||
CLD_TARGET_IF_OBJ := $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_arp.o \
|
CLD_TARGET_IF_OBJ += $(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_arp.o \
|
||||||
$(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_gtk.o \
|
$(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_gtk.o \
|
||||||
$(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_hw_filter.o \
|
$(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_hw_filter.o \
|
||||||
$(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_lphb.o \
|
$(CLD_TARGET_IF_DIR)/pmo/src/target_if_pmo_lphb.o \
|
||||||
@@ -3416,6 +3427,7 @@ ccflags-$(CONFIG_FEATURE_WLAN_SCAN_PNO) += -DFEATURE_WLAN_SCAN_PNO
|
|||||||
ccflags-$(CONFIG_WLAN_FEATURE_PACKET_FILTERING) += -DWLAN_FEATURE_PACKET_FILTERING
|
ccflags-$(CONFIG_WLAN_FEATURE_PACKET_FILTERING) += -DWLAN_FEATURE_PACKET_FILTERING
|
||||||
ccflags-$(CONFIG_DHCP_SERVER_OFFLOAD) += -DDHCP_SERVER_OFFLOAD
|
ccflags-$(CONFIG_DHCP_SERVER_OFFLOAD) += -DDHCP_SERVER_OFFLOAD
|
||||||
ccflags-$(CONFIG_WLAN_NS_OFFLOAD) += -DWLAN_NS_OFFLOAD
|
ccflags-$(CONFIG_WLAN_NS_OFFLOAD) += -DWLAN_NS_OFFLOAD
|
||||||
|
ccflags-$(CONFIG_QCA_TARGET_IF_MLME) += -DQCA_TARGET_IF_MLME
|
||||||
ccflags-$(CONFIG_WLAN_DYNAMIC_ARP_NS_OFFLOAD) += -DFEATURE_WLAN_DYNAMIC_ARP_NS_OFFLOAD
|
ccflags-$(CONFIG_WLAN_DYNAMIC_ARP_NS_OFFLOAD) += -DFEATURE_WLAN_DYNAMIC_ARP_NS_OFFLOAD
|
||||||
ccflags-$(CONFIG_WLAN_FEATURE_ICMP_OFFLOAD) += -DWLAN_FEATURE_ICMP_OFFLOAD
|
ccflags-$(CONFIG_WLAN_FEATURE_ICMP_OFFLOAD) += -DWLAN_FEATURE_ICMP_OFFLOAD
|
||||||
ccflags-$(CONFIG_FEATURE_WLAN_RA_FILTERING) += -DFEATURE_WLAN_RA_FILTERING
|
ccflags-$(CONFIG_FEATURE_WLAN_RA_FILTERING) += -DFEATURE_WLAN_RA_FILTERING
|
||||||
|
4
Kconfig
4
Kconfig
@@ -131,6 +131,10 @@ config CP_STATS
|
|||||||
bool "Enable CP_STATS"
|
bool "Enable CP_STATS"
|
||||||
default n
|
default n
|
||||||
|
|
||||||
|
config QCA_TARGET_IF_MLME
|
||||||
|
bool "Enable TARGET_IF MLME"
|
||||||
|
default n
|
||||||
|
|
||||||
config DCS
|
config DCS
|
||||||
bool "Enable DCS"
|
bool "Enable DCS"
|
||||||
default n
|
default n
|
||||||
|
@@ -129,12 +129,24 @@ struct wlan_mlme_rx_ops {
|
|||||||
struct peer_oper_mode_event *data);
|
struct peer_oper_mode_event *data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_mlme_tx_ops - structure of mlme tx function pointers
|
||||||
|
* @send_csa_event_status_ind: Tx ops function to send csa event indication
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
struct wlan_mlme_tx_ops {
|
||||||
|
QDF_STATUS
|
||||||
|
(*send_csa_event_status_ind)(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint8_t csa_status);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wlan_mlme_psoc_ext_obj -MLME ext psoc priv object
|
* struct wlan_mlme_psoc_ext_obj -MLME ext psoc priv object
|
||||||
* @cfg: cfg items
|
* @cfg: cfg items
|
||||||
* @rso_tx_ops: Roam Tx ops to send roam offload commands to firmware
|
* @rso_tx_ops: Roam Tx ops to send roam offload commands to firmware
|
||||||
* @rso_rx_ops: Roam Rx ops to receive roam offload events from firmware
|
* @rso_rx_ops: Roam Rx ops to receive roam offload events from firmware
|
||||||
* @mlme_rx_ops: mlme Rx ops to receive events from firmware
|
* @mlme_rx_ops: mlme Rx ops to receive events from firmware
|
||||||
|
* @mlme_tx_ops: mlme tx ops
|
||||||
* @wfa_testcmd: WFA config tx ops to send to FW
|
* @wfa_testcmd: WFA config tx ops to send to FW
|
||||||
* @disconnect_stats_param: Peer disconnect stats related params for SAP case
|
* @disconnect_stats_param: Peer disconnect stats related params for SAP case
|
||||||
* @scan_requester_id: mlme scan requester id
|
* @scan_requester_id: mlme scan requester id
|
||||||
@@ -144,6 +156,7 @@ struct wlan_mlme_psoc_ext_obj {
|
|||||||
struct wlan_cm_roam_tx_ops rso_tx_ops;
|
struct wlan_cm_roam_tx_ops rso_tx_ops;
|
||||||
struct wlan_cm_roam_rx_ops rso_rx_ops;
|
struct wlan_cm_roam_rx_ops rso_rx_ops;
|
||||||
struct wlan_mlme_rx_ops mlme_rx_ops;
|
struct wlan_mlme_rx_ops mlme_rx_ops;
|
||||||
|
struct wlan_mlme_tx_ops mlme_tx_ops;
|
||||||
struct wlan_mlme_wfa_cmd wfa_testcmd;
|
struct wlan_mlme_wfa_cmd wfa_testcmd;
|
||||||
struct peer_disconnect_stats_param disconnect_stats_param;
|
struct peer_disconnect_stats_param disconnect_stats_param;
|
||||||
wlan_scan_requester scan_requester_id;
|
wlan_scan_requester scan_requester_id;
|
||||||
@@ -1919,4 +1932,16 @@ wlan_mlme_register_common_events(struct wlan_objmgr_psoc *psoc)
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_send_csa_event_status_ind_cmd() - send csa event status indication
|
||||||
|
* @vdev: vdev obj
|
||||||
|
* @csa_status: csa status
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_send_csa_event_status_ind_cmd(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint8_t csa_status);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -5507,3 +5507,33 @@ QDF_STATUS wlan_mlme_register_common_events(struct wlan_objmgr_psoc *psoc)
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_send_csa_event_status_ind_cmd(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint8_t csa_status)
|
||||||
|
{
|
||||||
|
struct wlan_objmgr_psoc *psoc;
|
||||||
|
struct wlan_mlme_tx_ops *tx_ops;
|
||||||
|
mlme_psoc_ext_t *mlme_priv;
|
||||||
|
|
||||||
|
psoc = wlan_vdev_get_psoc(vdev);
|
||||||
|
if (!psoc) {
|
||||||
|
mlme_err("vdev_id %d psoc object is NULL",
|
||||||
|
wlan_vdev_get_id(vdev));
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
mlme_priv = wlan_psoc_mlme_get_ext_hdl(psoc);
|
||||||
|
if (!mlme_priv)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
tx_ops = &mlme_priv->mlme_tx_ops;
|
||||||
|
|
||||||
|
if (!tx_ops || !tx_ops->send_csa_event_status_ind) {
|
||||||
|
mlme_err("CSA no op defined");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return tx_ops->send_csa_event_status_ind(vdev, csa_status);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -45,6 +45,7 @@
|
|||||||
#include "wlan_mlo_mgr_sta.h"
|
#include "wlan_mlo_mgr_sta.h"
|
||||||
#endif
|
#endif
|
||||||
#include <wlan_lmac_if_def.h>
|
#include <wlan_lmac_if_def.h>
|
||||||
|
#include "target_if_mlme.h"
|
||||||
|
|
||||||
static struct vdev_mlme_ops sta_mlme_ops;
|
static struct vdev_mlme_ops sta_mlme_ops;
|
||||||
static struct vdev_mlme_ops ap_mlme_ops;
|
static struct vdev_mlme_ops ap_mlme_ops;
|
||||||
@@ -1962,6 +1963,9 @@ QDF_STATUS psoc_mlme_ext_hdl_create(struct psoc_mlme_obj *psoc_mlme)
|
|||||||
&psoc_mlme->ext_psoc_ptr->rso_rx_ops);
|
&psoc_mlme->ext_psoc_ptr->rso_rx_ops);
|
||||||
wlan_mlme_register_rx_ops(&psoc_mlme->ext_psoc_ptr->mlme_rx_ops);
|
wlan_mlme_register_rx_ops(&psoc_mlme->ext_psoc_ptr->mlme_rx_ops);
|
||||||
|
|
||||||
|
target_if_mlme_register_tx_ops(
|
||||||
|
&psoc_mlme->ext_psoc_ptr->mlme_tx_ops);
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4825,4 +4825,15 @@ wlan_mlme_set_ap_oper_ch_width(struct wlan_objmgr_vdev *vdev,
|
|||||||
*/
|
*/
|
||||||
enum phy_ch_width
|
enum phy_ch_width
|
||||||
wlan_mlme_get_ap_oper_ch_width(struct wlan_objmgr_vdev *vdev);
|
wlan_mlme_get_ap_oper_ch_width(struct wlan_objmgr_vdev *vdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_send_csa_event_status_ind() - send csa event status ind
|
||||||
|
* @vdev: vdev obj
|
||||||
|
* @csa_status: csa status
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_send_csa_event_status_ind(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint8_t csa_status);
|
||||||
#endif /* _WLAN_MLME_API_H_ */
|
#endif /* _WLAN_MLME_API_H_ */
|
||||||
|
@@ -7983,3 +7983,10 @@ wlan_mlme_get_ap_oper_ch_width(struct wlan_objmgr_vdev *vdev)
|
|||||||
|
|
||||||
return mlme_priv->mlme_ap.oper_ch_width;
|
return mlme_priv->mlme_ap.oper_ch_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_send_csa_event_status_ind(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint8_t csa_status)
|
||||||
|
{
|
||||||
|
return wlan_mlme_send_csa_event_status_ind_cmd(vdev, csa_status);
|
||||||
|
}
|
||||||
|
39
components/target_if/mlme/inc/target_if_mlme.h
Normal file
39
components/target_if/mlme/inc/target_if_mlme.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* 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 above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: contains mlme target if declarations
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _WLAN_MLME_TGT_IF_H_
|
||||||
|
#define _WLAN_MLME_TGT_IF_H_
|
||||||
|
|
||||||
|
#include "qdf_types.h"
|
||||||
|
#include "wlan_mlme_dbg.h"
|
||||||
|
#include "wlan_mlme_api.h"
|
||||||
|
#include "wlan_mlme_main.h"
|
||||||
|
#include "target_if.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* target_if_mlme_register_tx_ops() - registers mlme tx ops
|
||||||
|
* @tx_ops: tx ops
|
||||||
|
*
|
||||||
|
* Return: none
|
||||||
|
*/
|
||||||
|
void target_if_mlme_register_tx_ops(struct wlan_mlme_tx_ops *tx_ops);
|
||||||
|
|
||||||
|
#endif
|
74
components/target_if/mlme/src/target_if_mlme.c
Normal file
74
components/target_if/mlme/src/target_if_mlme.c
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* 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 above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: contains mlme target if declarations
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "target_if_mlme.h"
|
||||||
|
#include <wmi_unified_mlme_api.h>
|
||||||
|
|
||||||
|
static struct wmi_unified
|
||||||
|
*target_if_mlme_get_wmi_handle_from_vdev(struct wlan_objmgr_vdev *vdev)
|
||||||
|
{
|
||||||
|
struct wlan_objmgr_pdev *pdev;
|
||||||
|
struct wmi_unified *wmi_handle;
|
||||||
|
|
||||||
|
pdev = wlan_vdev_get_pdev(vdev);
|
||||||
|
if (!pdev) {
|
||||||
|
target_if_err("PDEV is NULL");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
wmi_handle = get_wmi_unified_hdl_from_pdev(pdev);
|
||||||
|
if (!wmi_handle) {
|
||||||
|
target_if_err("wmi_handle is null");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return wmi_handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
static QDF_STATUS
|
||||||
|
target_if_mlme_send_csa_event_status_ind(struct wlan_objmgr_vdev *vdev,
|
||||||
|
uint8_t csa_status)
|
||||||
|
{
|
||||||
|
wmi_unified_t wmi_handle;
|
||||||
|
struct csa_event_status_ind params = {0};
|
||||||
|
|
||||||
|
params.vdev_id = wlan_vdev_get_id(vdev);
|
||||||
|
params.status = csa_status;
|
||||||
|
|
||||||
|
wmi_handle = target_if_mlme_get_wmi_handle_from_vdev(vdev);
|
||||||
|
if (!wmi_handle)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
return wmi_send_csa_event_status_ind(wmi_handle, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
target_if_mlme_register_tx_ops(struct wlan_mlme_tx_ops *tx_ops)
|
||||||
|
{
|
||||||
|
if (!tx_ops) {
|
||||||
|
target_if_err("target if tx ops is NULL!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tx_ops->send_csa_event_status_ind =
|
||||||
|
target_if_mlme_send_csa_event_status_ind;
|
||||||
|
}
|
||||||
|
|
45
components/wmi/inc/wmi_unified_mlme_api.h
Normal file
45
components/wmi/inc/wmi_unified_mlme_api.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* 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 above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: contains wmi mlme declarations
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _WLAN_UNIFIED_MLME_API_H_
|
||||||
|
#define _WLAN_UNIFIED_MLME_API_H_
|
||||||
|
|
||||||
|
/*
|
||||||
|
* struct csa_event_status_ind - structure for csa event status ind
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @status: accept: 1 reject : 0
|
||||||
|
*/
|
||||||
|
struct csa_event_status_ind {
|
||||||
|
uint8_t vdev_id;
|
||||||
|
uint8_t status;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wmi_send_csa_event_status_ind
|
||||||
|
* @wmi_hdl: wmi handle
|
||||||
|
* @params: csa params
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS_SUCCESS on success, QDF_STATUS_E_** on error
|
||||||
|
*/
|
||||||
|
QDF_STATUS wmi_send_csa_event_status_ind(
|
||||||
|
wmi_unified_t wmi_hdl,
|
||||||
|
struct csa_event_status_ind params);
|
||||||
|
#endif
|
35
components/wmi/src/wmi_unified_mlme_api.c
Normal file
35
components/wmi/src/wmi_unified_mlme_api.c
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* 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 above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: contains wmi mlme declarations
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <osdep.h>
|
||||||
|
#include <wmi.h>
|
||||||
|
#include <wmi_unified_priv.h>
|
||||||
|
#include <wmi_unified_mlme_api.h>
|
||||||
|
|
||||||
|
QDF_STATUS wmi_send_csa_event_status_ind(
|
||||||
|
wmi_unified_t wmi_hdl,
|
||||||
|
struct csa_event_status_ind params)
|
||||||
|
{
|
||||||
|
if (wmi_hdl->ops->send_csa_event_status_ind)
|
||||||
|
return wmi_hdl->ops->send_csa_event_status_ind(wmi_hdl, params);
|
||||||
|
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
68
components/wmi/src/wmi_unified_mlme_tlv.c
Normal file
68
components/wmi/src/wmi_unified_mlme_tlv.c
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* 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 above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: contains wmi mlme declarations
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <wmi_unified_priv.h>
|
||||||
|
#include "wmi.h"
|
||||||
|
#include "wlan_mlme_api.h"
|
||||||
|
|
||||||
|
static QDF_STATUS csa_event_status_ind_tlv(wmi_unified_t wmi_handle,
|
||||||
|
struct csa_event_status_ind params)
|
||||||
|
{
|
||||||
|
wmi_csa_event_status_ind_fixed_param *cmd;
|
||||||
|
wmi_buf_t buf;
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
buf = wmi_buf_alloc(wmi_handle, sizeof(*cmd));
|
||||||
|
if (!buf)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
cmd = (wmi_csa_event_status_ind_fixed_param *)wmi_buf_data(buf);
|
||||||
|
WMITLV_SET_HDR(&cmd->tlv_header,
|
||||||
|
WMITLV_TAG_STRUC_wmi_csa_event_status_ind_fixed_param,
|
||||||
|
WMITLV_GET_STRUCT_TLVLEN
|
||||||
|
(wmi_csa_event_status_ind_fixed_param));
|
||||||
|
|
||||||
|
cmd->vdev_id = params.vdev_id;
|
||||||
|
cmd->status = params.status;
|
||||||
|
|
||||||
|
wmi_debug("vdev_id: %d status: %d ", cmd->vdev_id, cmd->status);
|
||||||
|
|
||||||
|
status = wmi_unified_cmd_send(wmi_handle, buf, sizeof(*cmd),
|
||||||
|
WMI_CSA_EVENT_STATUS_INDICATION_CMDID);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
|
wmi_buf_free(buf);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wmi_mlme_attach_tlv() - attach MLME tlv handlers
|
||||||
|
* @wmi_handle: wmi handle
|
||||||
|
*
|
||||||
|
* Return: void
|
||||||
|
*/
|
||||||
|
void wmi_mlme_attach_tlv(wmi_unified_t wmi_handle)
|
||||||
|
{
|
||||||
|
struct wmi_ops *ops = wmi_handle->ops;
|
||||||
|
|
||||||
|
ops->send_csa_event_status_ind = csa_event_status_ind_tlv;
|
||||||
|
}
|
||||||
|
|
@@ -356,6 +356,10 @@
|
|||||||
#define WLAN_SUPPORT_INFRA_CTRL_PATH_STATS (1)
|
#define WLAN_SUPPORT_INFRA_CTRL_PATH_STATS (1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_QCA_TARGET_IF_MLME
|
||||||
|
#define QCA_TARGET_IF_MLME
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_CP_STATS
|
#ifdef CONFIG_CP_STATS
|
||||||
#define QCA_SUPPORT_CP_STATS (1)
|
#define QCA_SUPPORT_CP_STATS (1)
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1248,6 +1248,8 @@ ifneq ($(CONFIG_WIFI_POS_CONVERGED), y)
|
|||||||
CONFIG_WIFI_POS_LEGACY := y
|
CONFIG_WIFI_POS_LEGACY := y
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME := y
|
||||||
|
|
||||||
CONFIG_CP_STATS := y
|
CONFIG_CP_STATS := y
|
||||||
CONFIG_FEATURE_INTEROP_ISSUES_AP := y
|
CONFIG_FEATURE_INTEROP_ISSUES_AP := y
|
||||||
|
|
||||||
|
@@ -67,6 +67,7 @@ CONFIG_FEATURE_HTC_CREDIT_HISTORY := y
|
|||||||
CONFIG_TRACE_RECORD_FEATURE := y
|
CONFIG_TRACE_RECORD_FEATURE := y
|
||||||
CONFIG_WLAN_NUD_TRACKING := n
|
CONFIG_WLAN_NUD_TRACKING := n
|
||||||
CONFIG_CP_STATS := y
|
CONFIG_CP_STATS := y
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME := y
|
||||||
CONFIG_FEATURE_FW_LOG_PARSING := y
|
CONFIG_FEATURE_FW_LOG_PARSING := y
|
||||||
CONFIG_PTT_SOCK_SVC_ENABLE := y
|
CONFIG_PTT_SOCK_SVC_ENABLE := y
|
||||||
CONFIG_WMI_INTERFACE_EVENT_LOGGING := y
|
CONFIG_WMI_INTERFACE_EVENT_LOGGING := y
|
||||||
|
@@ -22,6 +22,7 @@ CONFIG_CNSS_UTILS=y
|
|||||||
CONFIG_CONNECTIVITY_PKTLOG=y
|
CONFIG_CONNECTIVITY_PKTLOG=y
|
||||||
CONFIG_CONVERGED_P2P_ENABLE=y
|
CONFIG_CONVERGED_P2P_ENABLE=y
|
||||||
CONFIG_CP_STATS=y
|
CONFIG_CP_STATS=y
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME=y
|
||||||
CONFIG_DCS=y
|
CONFIG_DCS=y
|
||||||
CONFIG_DDP_MON_RSSI_IN_DBM=y
|
CONFIG_DDP_MON_RSSI_IN_DBM=y
|
||||||
CONFIG_DEBUG_RX_RING_BUFFER=y
|
CONFIG_DEBUG_RX_RING_BUFFER=y
|
||||||
|
@@ -22,6 +22,7 @@ CONFIG_CNSS_UTILS=y
|
|||||||
CONFIG_CONNECTIVITY_PKTLOG=y
|
CONFIG_CONNECTIVITY_PKTLOG=y
|
||||||
CONFIG_CONVERGED_P2P_ENABLE=y
|
CONFIG_CONVERGED_P2P_ENABLE=y
|
||||||
CONFIG_CP_STATS=y
|
CONFIG_CP_STATS=y
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME=y
|
||||||
CONFIG_DCS=y
|
CONFIG_DCS=y
|
||||||
CONFIG_DDP_MON_RSSI_IN_DBM=y
|
CONFIG_DDP_MON_RSSI_IN_DBM=y
|
||||||
CONFIG_DEBUG_RX_RING_BUFFER=y
|
CONFIG_DEBUG_RX_RING_BUFFER=y
|
||||||
|
@@ -569,6 +569,8 @@ endif
|
|||||||
|
|
||||||
CONFIG_CP_STATS := y
|
CONFIG_CP_STATS := y
|
||||||
|
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME := y
|
||||||
|
|
||||||
CONFIG_FEATURE_WLAN_WAPI := y
|
CONFIG_FEATURE_WLAN_WAPI := y
|
||||||
|
|
||||||
CONFIG_AGEIE_ON_SCAN_RESULTS := y
|
CONFIG_AGEIE_ON_SCAN_RESULTS := y
|
||||||
|
@@ -631,6 +631,7 @@ CONFIG_WIFI_POS_LEGACY := y
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
CONFIG_CP_STATS := y
|
CONFIG_CP_STATS := y
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME := y
|
||||||
|
|
||||||
#Flag to enable compilation of DCS module
|
#Flag to enable compilation of DCS module
|
||||||
CONFIG_DCS := y
|
CONFIG_DCS := y
|
||||||
|
@@ -94,6 +94,7 @@ CONFIG_TRACE_RECORD_FEATURE := y
|
|||||||
CONFIG_WLAN_FEATURE_P2P_DEBUG := n
|
CONFIG_WLAN_FEATURE_P2P_DEBUG := n
|
||||||
CONFIG_WLAN_NUD_TRACKING := n
|
CONFIG_WLAN_NUD_TRACKING := n
|
||||||
CONFIG_CP_STATS := n
|
CONFIG_CP_STATS := n
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME := y
|
||||||
CONFIG_FEATURE_FW_LOG_PARSING := y
|
CONFIG_FEATURE_FW_LOG_PARSING := y
|
||||||
CONFIG_PTT_SOCK_SVC_ENABLE := y
|
CONFIG_PTT_SOCK_SVC_ENABLE := y
|
||||||
CONFIG_WMI_INTERFACE_EVENT_LOGGING := y
|
CONFIG_WMI_INTERFACE_EVENT_LOGGING := y
|
||||||
|
@@ -22,6 +22,7 @@ CONFIG_CNSS_UTILS=y
|
|||||||
CONFIG_CONNECTIVITY_PKTLOG=y
|
CONFIG_CONNECTIVITY_PKTLOG=y
|
||||||
CONFIG_CONVERGED_P2P_ENABLE=y
|
CONFIG_CONVERGED_P2P_ENABLE=y
|
||||||
CONFIG_CP_STATS=y
|
CONFIG_CP_STATS=y
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME=y
|
||||||
CONFIG_DCS=y
|
CONFIG_DCS=y
|
||||||
CONFIG_DDP_MON_RSSI_IN_DBM=y
|
CONFIG_DDP_MON_RSSI_IN_DBM=y
|
||||||
CONFIG_DEBUG_RX_RING_BUFFER=y
|
CONFIG_DEBUG_RX_RING_BUFFER=y
|
||||||
|
@@ -23,6 +23,7 @@ CONFIG_CNSS_UTILS=y
|
|||||||
CONFIG_CONNECTIVITY_PKTLOG=y
|
CONFIG_CONNECTIVITY_PKTLOG=y
|
||||||
CONFIG_CONVERGED_P2P_ENABLE=y
|
CONFIG_CONVERGED_P2P_ENABLE=y
|
||||||
CONFIG_CP_STATS=y
|
CONFIG_CP_STATS=y
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME=y
|
||||||
CONFIG_DCS=y
|
CONFIG_DCS=y
|
||||||
CONFIG_DDP_MON_RSSI_IN_DBM=y
|
CONFIG_DDP_MON_RSSI_IN_DBM=y
|
||||||
CONFIG_DEBUG_RX_RING_BUFFER=y
|
CONFIG_DEBUG_RX_RING_BUFFER=y
|
||||||
|
@@ -580,6 +580,9 @@ CONFIG_WIFI_POS_LEGACY := y
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
CONFIG_CP_STATS := y
|
CONFIG_CP_STATS := y
|
||||||
|
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME := y
|
||||||
|
|
||||||
CONFIG_FEATURE_INTEROP_ISSUES_AP := y
|
CONFIG_FEATURE_INTEROP_ISSUES_AP := y
|
||||||
|
|
||||||
CONFIG_FEATURE_WLAN_WAPI := y
|
CONFIG_FEATURE_WLAN_WAPI := y
|
||||||
|
@@ -837,6 +837,7 @@ CONFIG_WIFI_POS_LEGACY := y
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
CONFIG_CP_STATS := y
|
CONFIG_CP_STATS := y
|
||||||
|
CONFIG_QCA_TARGET_IF_MLME := y
|
||||||
CONFIG_FEATURE_INTEROP_ISSUES_AP := y
|
CONFIG_FEATURE_INTEROP_ISSUES_AP := y
|
||||||
|
|
||||||
CONFIG_FEATURE_WLAN_WAPI := y
|
CONFIG_FEATURE_WLAN_WAPI := y
|
||||||
|
@@ -2244,6 +2244,7 @@ void lim_handle_sta_csa_param(struct mac_context *mac_ctx,
|
|||||||
session_entry->ch_width == lim_ch_switch->ch_width &&
|
session_entry->ch_width == lim_ch_switch->ch_width &&
|
||||||
lim_is_puncture_same(lim_ch_switch, session_entry)) {
|
lim_is_puncture_same(lim_ch_switch, session_entry)) {
|
||||||
pe_debug("Ignore CSA, no change in ch, bw and puncture");
|
pe_debug("Ignore CSA, no change in ch, bw and puncture");
|
||||||
|
wlan_mlme_send_csa_event_status_ind(session_entry->vdev, 0);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -182,6 +182,7 @@ _fixed_ipaths = [
|
|||||||
"components/coex/core/inc",
|
"components/coex/core/inc",
|
||||||
"components/coex/dispatcher/inc",
|
"components/coex/dispatcher/inc",
|
||||||
"components/cp_stats/dispatcher/inc",
|
"components/cp_stats/dispatcher/inc",
|
||||||
|
"components/target_if/mlme/inc",
|
||||||
"components/denylist_mgr/core/inc",
|
"components/denylist_mgr/core/inc",
|
||||||
"components/denylist_mgr/dispatcher/inc",
|
"components/denylist_mgr/dispatcher/inc",
|
||||||
"components/disa/core/inc",
|
"components/disa/core/inc",
|
||||||
@@ -703,6 +704,13 @@ _conditional_srcs = {
|
|||||||
"os_if/cp_stats/src/wlan_cfg80211_mc_cp_stats.c",
|
"os_if/cp_stats/src/wlan_cfg80211_mc_cp_stats.c",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
"CONFIG_QCA_TARGET_IF_MLME": {
|
||||||
|
True: [
|
||||||
|
"components/target_if/mlme/src/target_if_mlme.c",
|
||||||
|
"components/wmi/src/wmi_unified_mlme_api.c",
|
||||||
|
"components/wmi/src/wmi_unified_mlme_tlv.c",
|
||||||
|
],
|
||||||
|
},
|
||||||
"CONFIG_DCS": {
|
"CONFIG_DCS": {
|
||||||
True: [
|
True: [
|
||||||
"cmn/target_if/dcs/src/target_if_dcs.c",
|
"cmn/target_if/dcs/src/target_if_dcs.c",
|
||||||
|
Reference in New Issue
Block a user