No description
  • C 98.2%
  • Assembly 1%
  • Makefile 0.3%
  • Shell 0.2%
  • Python 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
bings 6df21d1f29 qcacmn: Always free nol timer before free pdev
When wlan target asserts, driver will trigger shutdown and reinit to
do recovery. In shutdown, when pdev is freed and dfs_detach is called,
dfs->dfs_nol should be freed. If at the same time dfs_remove_from_nol
is triggered in another CPU, a race condition may happen as follows:
NOL is moved from dfs->dfs_nol to dfs->dfs_nol_free_list in function
dfs_remove_from_nol, then dfs_detach sets dfs->dfs_pdev_obj to NULL
without freeing the corresponding NOL timer. QDF_ASSERT happens at this
time if the function dfs_remove_from_nol continues to execute.

To be specific: The timer expiry function dfs_remove_from_nol calls
several umac functions e.g. dfs_mlme_nol_timeout_notification which
needs dfs->dfs_pdev_obj as an argument. However, the dfs->dfs_pdev_obj
is set to NULL by wlan_dfs_pdev_obj_destroy_notification function. Even
though before dfs->dfs_pdev_obj is set to NULL, the
wlan_dfs_pdev_obj_destroy_notification waits for the workqueue
qdf_flush_work(&dfs->dfs_nol_elem_free_work) which in turn waits for the
timer epiry function, scheduling of the workqueue seems to have happened
after qdf_flush_work(&dfs->dfs_nol_elem_free_work) in this case. If
qdf_flush_work happens before the workqueue is scheduled then
qdf_flush_work does not wait for the workqueue and therefore we do not
wait for the timer expiry function before setting dfs->dfs_pdev_obj to
NULL.

To fix the race condition, trigger dfs->dfs_nol_elem_free_work
immediately after dfs_nol_delete.

Change-Id: I9fc07231b07139ebe794fc7cc94d2a8ab307c69f
CRs-Fixed: 2400959
2019-03-02 03:38:40 -08:00
cfg
dp qcacmn: Add counters for wdi messages 2019-03-01 23:39:17 -08:00
ftm
global_lmac_if
hal/wifi3.0
hif
htc
init_deinit/dispatcher
os_if/linux
qal
qdf qcacmn: Add generic no fl variant of qdf print API's 2019-03-01 11:14:51 -08:00
scheduler qcacmn: Remove qdf_flex_mem_release() 2019-03-01 11:14:48 -08:00
spectral
target_if
umac qcacmn: Always free nol timer before free pdev 2019-03-02 03:38:40 -08:00
utils
wbuff
wlan_cfg
wmi qcacmn: Add WMI support for pcp-tid mapping 2019-03-02 01:02:20 -08:00
README.txt
VERSION.txt

 This is CNSS WLAN Host Driver for products starting from iHelium