qcacmn: Use frequency ranges for copying NOL after mode switch
Current NOL conversion for dynamic mode switch is in such a way that the NOL data is copied to the pdev ID entry for the targeted mode. That is, the NOL data is split/merged before mode switch and copied to a temporary structure before mode switch command is sent to FW. At this point, the target pdev's frequency range are still the old values because of which, certain entries of the NOL data are missed. Also in case of FW failures, the NOL entry cannot be added back because they have been merged/split already. To avoid the above, rearchitecture deinit and reinit NOL for mode switch in such a way that the NOL data, as-it-is, is copied before mode switch and is only split/merged after the frequency range of the pdevs are properly mapped and the FW response is a success. Change-Id: I4a073d1327ba182c40ced6089aa46d8f5f241d33 CRs-Fixed: 2632582
This commit is contained in:

zatwierdzone przez
nshrivas

rodzic
f2e0f22bf7
commit
1d4f7736d3
@@ -627,8 +627,6 @@ void tgt_dfs_deinit_tmp_psoc_nol(struct wlan_objmgr_pdev *pdev);
|
||||
* tgt_dfs_save_dfs_nol_in_psoc() - Save NOL data of given pdev.
|
||||
* @pdev: Pointer to pdev object.
|
||||
* @pdev_id: The pdev ID which will have the NOL data.
|
||||
* @low_5ghz_freq: The low 5GHz frequency value of the target pdev id.
|
||||
* @high_5ghz_freq: The high 5GHz frequency value of the target pdev id.
|
||||
*
|
||||
* Based on the frequency of the NOL channel, copy it to the target pdev_id
|
||||
* structure in psoc.
|
||||
@@ -636,20 +634,22 @@ void tgt_dfs_deinit_tmp_psoc_nol(struct wlan_objmgr_pdev *pdev);
|
||||
* Return: void.
|
||||
*/
|
||||
void tgt_dfs_save_dfs_nol_in_psoc(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t pdev_id,
|
||||
uint16_t low_5ghz_freq,
|
||||
uint16_t high_5ghz_freq);
|
||||
uint8_t pdev_id);
|
||||
|
||||
/**
|
||||
* tgt_dfs_reinit_nol_from_psoc_copy() - Reinit saved NOL data to corresponding
|
||||
* pdevs.
|
||||
* @pdev: Pointer to pdev object.
|
||||
* @pdev_id: pdev_id of the given pdev.
|
||||
* @low_5ghz_freq: The low 5GHz frequency value of the target pdev id.
|
||||
* @high_5ghz_freq: The high 5GHz frequency value of the target pdev id.
|
||||
*
|
||||
* Return: void.
|
||||
*/
|
||||
void tgt_dfs_reinit_nol_from_psoc_copy(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t pdev_id);
|
||||
uint8_t pdev_id,
|
||||
uint16_t low_5ghz_freq,
|
||||
uint16_t high_5ghz_freq);
|
||||
|
||||
/**
|
||||
* tgt_dfs_reinit_precac_lists() - Reinit preCAC lists.
|
||||
|
@@ -977,9 +977,7 @@ void tgt_dfs_deinit_tmp_psoc_nol(struct wlan_objmgr_pdev *pdev)
|
||||
qdf_export_symbol(tgt_dfs_deinit_tmp_psoc_nol);
|
||||
|
||||
void tgt_dfs_save_dfs_nol_in_psoc(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t pdev_id,
|
||||
uint16_t low_5ghz_freq,
|
||||
uint16_t high_5ghz_freq)
|
||||
uint8_t pdev_id)
|
||||
{
|
||||
struct wlan_dfs *dfs;
|
||||
|
||||
@@ -989,13 +987,15 @@ void tgt_dfs_save_dfs_nol_in_psoc(struct wlan_objmgr_pdev *pdev,
|
||||
return;
|
||||
}
|
||||
|
||||
dfs_save_dfs_nol_in_psoc(dfs, pdev_id, low_5ghz_freq, high_5ghz_freq);
|
||||
dfs_save_dfs_nol_in_psoc(dfs, pdev_id);
|
||||
}
|
||||
|
||||
qdf_export_symbol(tgt_dfs_save_dfs_nol_in_psoc);
|
||||
|
||||
void tgt_dfs_reinit_nol_from_psoc_copy(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t pdev_id)
|
||||
uint8_t pdev_id,
|
||||
uint16_t low_5ghz_freq,
|
||||
uint16_t high_5ghz_freq)
|
||||
{
|
||||
struct wlan_dfs *dfs;
|
||||
|
||||
@@ -1005,7 +1005,10 @@ void tgt_dfs_reinit_nol_from_psoc_copy(struct wlan_objmgr_pdev *pdev,
|
||||
return;
|
||||
}
|
||||
|
||||
dfs_reinit_nol_from_psoc_copy(dfs, pdev_id);
|
||||
dfs_reinit_nol_from_psoc_copy(dfs,
|
||||
pdev_id,
|
||||
low_5ghz_freq,
|
||||
high_5ghz_freq);
|
||||
}
|
||||
|
||||
qdf_export_symbol(tgt_dfs_reinit_nol_from_psoc_copy);
|
||||
|
Reference in New Issue
Block a user