9e3a7ecb7871699a1cf7e323939cca7c749faa47

VDEV is moved to INIT state as part of link switch disconnect, before set MAC address response is received, any disconnect request on this VDEV will not be handled as VDEV is in INIT state, if link switch is in progress then it will abort link switch and starts link switch dequeue process. If the new disconnect request is from userspace it will increment the OSIF ops, but if link switch is on assoc VDEV OSIF is notified to restore the adapter deflink as part of link switch complete where it wait for all OSIF ops to complete. This is a deadlock case where driver is waiting for ops completion on same thread where ops is initiated. To fix this issue, do not handle link switch dequeue on the same thread, instead move the link switch state to abort and when actual link switch thread comes it will flush from serialization. If userspace disconnect is not queued as VDEV is in INIT state due to link switch, kernel won't be notified about the disconnect as this notification is only done on assoc VDEV and any further connect requests from supplicant gets dropped in kernel saying already connected and supplicant will immediately try disconnect which driver will again drop as VDEV is in INIT state. To avoid this kernel-driver out of sync, forcefully move VDEV to disconnecting state and queue the disconnect request. Change-Id: I116859601ebba21d44797e74e160b56532ef833c CRs-Fixed: 3588936
This is CNSS WLAN Host Driver for products starting from iHelium
Descripción
Languages
C
98.7%
C++
0.9%
Makefile
0.3%
Starlark
0.1%