qcacmn: Handle TWT renegotiation failure case
Generally below process should happen in renegotiation failure case. 1. TWT setup (successful) 2. TWT setup (renegotiation failure) 3. TWT teardown 4. TWT GET STATUS - 0(dialog ID) 0 0 0 5. TWT setup - successful Since all WMI TWT events gets executed in WMI thread. So when renegotiation failure case hits, driver sends TWT teardown to firmware and waits for twt ack in worker thread. In same worker thread TWT event needs to be processed. TWT ack event will not process as it's waiting in same worker thread and it will get timedout. As part of fix, break the context in renegotiation and send the teardown in the new worker context. Change-Id: Id12cb906b780d3013562c1772e276639a056c8f7 CRs-Fixed: 3207537
Este commit está contenido en:

cometido por
Madan Koyyalamudi

padre
f4bfa6616b
commit
4afef82b70
@@ -873,6 +873,22 @@ struct twt_notify_event_param {
|
||||
enum HOST_TWT_NOTIFY_STATUS status;
|
||||
};
|
||||
|
||||
/* HOST_TWT_NEXT_WORK_ACTION - next action of TWT worker thread
|
||||
* @HOST_TWT_SEND_DELETE_CMD: Send TWT delete command request
|
||||
*/
|
||||
enum HOST_TWT_NEXT_WORK_ACTION {
|
||||
HOST_TWT_SEND_DELETE_CMD = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct twt_work_params
|
||||
* @peer_macaddr: peer mac address
|
||||
* @dialog_id: Dialog ID
|
||||
*/
|
||||
struct twt_work_params {
|
||||
struct qdf_mac_addr peer_macaddr;
|
||||
uint32_t dialog_id;
|
||||
};
|
||||
#ifdef WLAN_SUPPORT_BCAST_TWT
|
||||
/**
|
||||
* struct twt_btwt_invite_sta_cmd_param -
|
||||
|
Referencia en una nueva incidencia
Block a user