wil6210: handle multiple connect/disconnect events
In the current solution wil6210 configures the vring in a worker and holds only one pending CID. This implementation may lead to race conditions between connect and disconnect events of multiple stations or fast connect/disconnect events of the same station. In order to allow the removal of the connect worker and handling of WMI_VRING_CFG_DONE_EVENTID in the connect event, the WMI replies that provide the reply in a given buffer needs to be handled immediately in the WMI event interrupt thread. To prevent deadlocks, WMI replies that requires additional handling are still handled via the events list. Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
此提交包含在:
@@ -794,6 +794,9 @@ int wil_vring_init_tx(struct wil6210_priv *wil, int id, int size,
|
||||
txdata->dot1x_open = false;
|
||||
txdata->enabled = 0;
|
||||
wil_vring_free(wil, vring, 1);
|
||||
wil->vring2cid_tid[id][0] = WIL6210_MAX_CID;
|
||||
wil->vring2cid_tid[id][1] = 0;
|
||||
|
||||
out:
|
||||
|
||||
return rc;
|
||||
|
新增問題並參考
封鎖使用者