qcacmn: Receive and parse RCSA with subchannel information

Update NOL list based on the external radar information sent
from the action frame and store in DFS structure.

Add an utility - dispatcher function that can be called by UMAC
with NOL IE information.

In the DFS structure,
	1). If subchannel marking is disabled, add all the current
	    channel's subchannels to NOL, do not update the NOL IE
	    structures inside dfs, and send a flag saying not to
	    propagate the NOL IE to uplink.
	    This is because, in case of cascading repeaters, one
	    of the repeaters (RE1) in the cascading system might have
	    subchannel marking disabled. In that case, sending the
	    same NOL IE to uplink results in RE1 and its BSS to disconnect.

	2). If subchannel marking is enabled, add those subhannels to NOL,
	    and update flags saying NOL and RCSA IE should be sent.

Change-Id: I3f3e14a59503cd1a15573c988a984a20117aa814
CRs-Fixed: 2328377
这个提交包含在:
Vignesh Mohan
2018-11-26 20:11:00 +05:30
提交者 nshrivas
父节点 07035aaed8
当前提交 eba709480e
修改 4 个文件,包含 89 行新增1 行删除

查看文件

@@ -353,6 +353,22 @@ QDF_STATUS utils_dfs_get_rcsa_flags(struct wlan_objmgr_pdev *pdev,
bool *is_rcsa_ie_sent,
bool *is_nol_ie_sent);
/**
* utils_dfs_process_nol_ie_bitmap() - Update NOL with external radar
* information.
* pdev: Pointer to DFS pdev object.
* nol_ie_bandwidth: Minimum DFS subchannel Bandwidth.
* nol_ie_startfreq: Radar affected channel list start channel's
* centre frequency.
* nol_ie_bitmap: Bitmap of radar affected subchannels.
*
* Return: True if NOL IE should be propagated, else false.
*/
bool utils_dfs_process_nol_ie_bitmap(struct wlan_objmgr_pdev *pdev,
uint8_t nol_ie_bandwidth,
uint16_t nol_ie_startfreq,
uint8_t nol_ie_bitmap);
/**
* utils_dfs_set_cac_timer_running() - Sets the cac timer running.
* @pdev: Pointer to DFS pdev object.

查看文件

@@ -409,12 +409,26 @@ QDF_STATUS utils_dfs_get_rcsa_flags(struct wlan_objmgr_pdev *pdev,
dfs = global_dfs_to_mlme.pdev_get_comp_private_obj(pdev);
if (!dfs)
return QDF_STATUS_E_FAILURE;
dfs_get_rcsa_flags(dfs, is_rcsa_ie_sent, is_nol_ie_sent);
return QDF_STATUS_SUCCESS;
}
bool utils_dfs_process_nol_ie_bitmap(struct wlan_objmgr_pdev *pdev,
uint8_t nol_ie_bandwidth,
uint16_t nol_ie_startfreq,
uint8_t nol_ie_bitmap)
{
struct wlan_dfs *dfs;
dfs = global_dfs_to_mlme.pdev_get_comp_private_obj(pdev);
if (!dfs)
return false;
return dfs_process_nol_ie_bitmap(dfs, nol_ie_bandwidth,
nol_ie_startfreq,
nol_ie_bitmap);
}
QDF_STATUS utils_dfs_set_cac_timer_running(struct wlan_objmgr_pdev *pdev,
int val)
{