mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-28 18:28:23 -05:00
P2P: Cancel offchannel TX wait on PD Response TX status
PD Response is sent out using a 200 ms offchannel wait, but that wait was not cancelled on TX status report. This could result in offchannel operation being left waiting unnecessarily long. Fix this by making the P2P_NO_PENDING_ACTION case in Action TX callback cancel the wait if a pending wait is marked (and mark this for PD Response). Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
1578796a31
commit
c5c2d942c5
@ -2990,6 +2990,10 @@ void p2p_send_action_cb(struct p2p_data *p2p, unsigned int freq, const u8 *dst,
|
|||||||
p2p->pending_action_state = P2P_NO_PENDING_ACTION;
|
p2p->pending_action_state = P2P_NO_PENDING_ACTION;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case P2P_NO_PENDING_ACTION:
|
case P2P_NO_PENDING_ACTION:
|
||||||
|
if (p2p->send_action_in_progress) {
|
||||||
|
p2p->send_action_in_progress = 0;
|
||||||
|
p2p->cfg->send_action_done(p2p->cfg->cb_ctx);
|
||||||
|
}
|
||||||
if (p2p->after_scan_tx_in_progress) {
|
if (p2p->after_scan_tx_in_progress) {
|
||||||
p2p->after_scan_tx_in_progress = 0;
|
p2p->after_scan_tx_in_progress = 0;
|
||||||
if (p2p->start_after_scan != P2P_AFTER_SCAN_NOTHING &&
|
if (p2p->start_after_scan != P2P_AFTER_SCAN_NOTHING &&
|
||||||
|
@ -389,6 +389,7 @@ struct p2p_data {
|
|||||||
u8 after_scan_peer[ETH_ALEN];
|
u8 after_scan_peer[ETH_ALEN];
|
||||||
struct p2p_pending_action_tx *after_scan_tx;
|
struct p2p_pending_action_tx *after_scan_tx;
|
||||||
unsigned int after_scan_tx_in_progress:1;
|
unsigned int after_scan_tx_in_progress:1;
|
||||||
|
unsigned int send_action_in_progress:1;
|
||||||
|
|
||||||
/* Requested device types for find/search */
|
/* Requested device types for find/search */
|
||||||
unsigned int num_req_dev_types;
|
unsigned int num_req_dev_types;
|
||||||
|
@ -224,7 +224,8 @@ out:
|
|||||||
p2p->cfg->dev_addr,
|
p2p->cfg->dev_addr,
|
||||||
wpabuf_head(resp), wpabuf_len(resp), 200) < 0) {
|
wpabuf_head(resp), wpabuf_len(resp), 200) < 0) {
|
||||||
p2p_dbg(p2p, "Failed to send Action frame");
|
p2p_dbg(p2p, "Failed to send Action frame");
|
||||||
}
|
} else
|
||||||
|
p2p->send_action_in_progress = 1;
|
||||||
|
|
||||||
wpabuf_free(resp);
|
wpabuf_free(resp);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user