qcacmn: Enable RCSA with subchannel information
Calculate the bitmap of subchannels that are affected by radar and store in dfs structure along with flags Algorithm: 1). Given the radar affected subchannels list, create a NOL bitmap, where 1 - Radar hit on Subchannel. 0 - Subchannel not affected. 2). Along with the NOL bitmap, send the Minimum Bandwidth for each subchannel and the Channel list's starting channel's centre frequency. Example: Mode : 100HT80, if radar affected subchannels are 100, 104 and 108. NOL bandwidth: 20. NOL start frequency: 5500. NOL Bitmap: 11100000. 3). During precac (precac timer running), if radar hits at secondary segment, the umac code that sends rcsa is still called, but add a new flag to not send rcsa, and in rootAP, channel change is not triggered, only NOL is updated. Add APIs that can be called from mlme to fetch the NOL and IE flags information from DFS structure during RCSA framing. If subchannel marking is disabled, the new NOL bitmap has no meaning and is hence, not sent. CRs-Fixed: 2328377 Change-Id: I3114ff5ca2704c316c9dc83220740fac9a6a00a1
This commit is contained in:
@@ -315,6 +315,44 @@ QDF_STATUS utils_dfs_nol_update(struct wlan_objmgr_pdev *pdev);
|
||||
QDF_STATUS utils_dfs_second_segment_radar_disable(
|
||||
struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
/**
|
||||
* utils_dfs_fetch_nol_ie_info() - Fills the arguments with NOL information
|
||||
* needed for sending RCSA.
|
||||
* pdev: Pointer to DFS pdev object.
|
||||
* nol_ie_bandwidth: Minimum DFS subchannel Bandwidth.
|
||||
* nol_ie_startfreq: Radar affected channel list start subchannel's centre
|
||||
* frequency.
|
||||
* nol_ie_bitmap: Bitmap of radar affected subchannels.
|
||||
*/
|
||||
QDF_STATUS utils_dfs_fetch_nol_ie_info(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *nol_ie_bandwidth,
|
||||
uint16_t *nol_ie_startfreq,
|
||||
uint8_t *nol_ie_bitmap);
|
||||
|
||||
/**
|
||||
* utils_dfs_set_rcsa_flags() - Set flags that are required for sending
|
||||
* RCSA and NOL IE.
|
||||
* pdev: Pointer to DFS pdev object.
|
||||
* is_rcsa_ie_sent: Boolean to check if RCSA IE should be sent or not.
|
||||
* is_nol_ie_sent: Boolean to check if NOL IE should be sent or not.
|
||||
*/
|
||||
|
||||
QDF_STATUS utils_dfs_set_rcsa_flags(struct wlan_objmgr_pdev *pdev,
|
||||
bool is_rcsa_ie_sent,
|
||||
bool is_nol_ie_sent);
|
||||
|
||||
/**
|
||||
* utils_dfs_get_rcsa_flags() - Get flags that are required for sending
|
||||
* RCSA and NOL IE.
|
||||
* pdev: Pointer to DFS pdev object.
|
||||
* is_rcsa_ie_sent: Boolean to check if RCSA IE should be sent or not.
|
||||
* is_nol_ie_sent: Boolean to check if NOL IE should be sent or not.
|
||||
*/
|
||||
|
||||
QDF_STATUS utils_dfs_get_rcsa_flags(struct wlan_objmgr_pdev *pdev,
|
||||
bool *is_rcsa_ie_sent,
|
||||
bool *is_nol_ie_sent);
|
||||
|
||||
/**
|
||||
* utils_dfs_set_cac_timer_running() - Sets the cac timer running.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
|
Reference in New Issue
Block a user