qcacld-3.0: Add support for STA+NAN+NDI+NDI

Add support for four port concurrency for
STA+NAN discovery + NDI + NDI.

Change-Id: I7d6d3f482a61bef7f3d0a31eee3fdfe5e5e9d879
CRs-Fixed: 2633982
这个提交包含在:
gaurank kathpalia
2020-02-27 00:02:54 +05:30
提交者 nshrivas
父节点 d6a5f31685
当前提交 82511bc630
修改 12 个文件,包含 184 行新增35 行删除

查看文件

@@ -806,6 +806,8 @@ struct wlan_nan_rx_ops {
* @nan_sap_supported: Target supports NAN Discovery with SAP concurrency
* @ndi_sap_supported: Target supports NAN Datapth with SAP concurrency
* @nan_vdev_allowed: Allow separate vdev creation for NAN discovery
* @sta_nan_ndi_ndi_allowed: 4 port concurrency of STA+NAN+NDI+NDI is supported
* by Fw or not.
*/
struct nan_tgt_caps {
uint32_t nan_disable_supported:1;
@@ -814,6 +816,7 @@ struct nan_tgt_caps {
uint32_t nan_sap_supported:1;
uint32_t ndi_sap_supported:1;
uint32_t nan_vdev_allowed:1;
uint32_t sta_nan_ndi_ndi_allowed:1;
};
#endif

查看文件

@@ -369,6 +369,15 @@ bool ucfg_nan_is_sta_ndp_concurrency_allowed(struct wlan_objmgr_psoc *psoc,
*/
bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_nan_is_sta_nan_ndi_4_port_allowed- Get support for 4 port (STA +
* NAN Disc + NDI + NDI)
* @psoc: pointer to psoc object
*
* Return: True if 4 port concurrency allowed or not.
*/
bool ucfg_nan_is_sta_nan_ndi_4_port_allowed(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_nan_get_is_separate_nan_iface() - get is_separate_nan_iface value
* @psoc: pointer to psoc object
@@ -450,6 +459,12 @@ bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc)
return false;
}
static inline
bool ucfg_nan_is_sta_nan_ndi_4_port_allowed(struct wlan_objmgr_psoc *psoc)
{
return false;
}
static inline
bool ucfg_nan_get_is_separate_nan_iface(struct wlan_objmgr_psoc *psoc)
{

查看文件

@@ -1072,7 +1072,13 @@ bool ucfg_nan_is_sta_ndp_concurrency_allowed(struct wlan_objmgr_psoc *psoc,
if (wlan_vdev_get_id(vdev) == vdev_id_list[id])
return true;
return false;
/* If the flow reaches here then it is 4th NDI with STA */
if (!ucfg_nan_is_sta_nan_ndi_4_port_allowed(psoc))
return false;
/* The final freq would be provided by FW, it is not known now */
return policy_mgr_allow_concurrency(psoc, PM_NDI_MODE, 0,
HW_MODE_20_MHZ);
}
bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc)
@@ -1088,6 +1094,20 @@ bool ucfg_nan_is_vdev_creation_allowed(struct wlan_objmgr_psoc *psoc)
return psoc_nan_obj->nan_caps.nan_vdev_allowed;
}
bool
ucfg_nan_is_sta_nan_ndi_4_port_allowed(struct wlan_objmgr_psoc *psoc)
{
struct nan_psoc_priv_obj *psoc_nan_obj;
psoc_nan_obj = nan_get_psoc_priv_obj(psoc);
if (!psoc_nan_obj) {
nan_err("psoc_nan_obj is null");
return false;
}
return psoc_nan_obj->nan_caps.sta_nan_ndi_ndi_allowed;
}
bool ucfg_nan_get_is_separate_nan_iface(struct wlan_objmgr_psoc *psoc)
{
struct nan_psoc_priv_obj *nan_obj = nan_get_psoc_priv_obj(psoc);