qcacld-3.0: Dont issue disconnect on STA while start/stop SAP
Currently, our host logic is "If an STA connection is in progress in another adapter, driver disconnects the STA and completes the SAP operation (start BSS or stop BSS)". This is due to below reasons: In the old kernel version and for STA+SAP concurrency support from GUI, the first STA connection gets triggered and while it is in progress, SAP start/stop also comes up. Once STA association is successful, the STA connect event is sent to the kernel which gets queued in the kernel workqueue and the supplicant won't process M1 received from AP and send M2 until this NL80211_CONNECT event is received. Workqueue is not scheduled as RTNL lock is already taken by hostapd thread which has issued start_bss/stop_bss command to the driver. The driver cannot complete start_bss/stop_bss as the pending command at the head of the SME command pending list is hw_mode_update for STA session which cannot be processed as SME is in WAITforKey state for STA interface. The start_bss/stop_bss command for SAP interface is queued behind the hw_mode_update command and so it cannot be processed until hw_mode_update command is processed. This is causing a deadlock so disconnect the STA interface first if a connection or key exchange is in progress and then start or stop the SAP interface. As part of connection mgr changes, removed dependency on WAITforKey state in serialization, and h/w mode also is not sent immediately after the STA connection, So no possibility of the above deadlock scenario. The fix is to avoid disconnection on the STA interface during the start or stop of the SAP interface. Change-Id: Iad3ada091e505007cc6901a461be3b88fc051f4e CRs-Fixed: 3339784
Loading
Please register or sign in to comment