P2P: Fix infinite loop on interface selection for Action frame TX
When the first wpa_supplicant interface is not the correct one for transmitting an Action frame (e.g., P2P Presence Request frame uses a group interface), the code got stuck in an infinite busy loop. Fix the iteration to go through the interfaces properly.
This commit is contained in:
parent
962473c136
commit
d6ae995057
1 changed files with 2 additions and 1 deletions
|
@ -497,7 +497,7 @@ static void wpas_send_action_cb(void *eloop_ctx, void *timeout_ctx)
|
||||||
* driver uses a separate interface for that purpose. However, some
|
* driver uses a separate interface for that purpose. However, some
|
||||||
* Action frames are actually sent within a P2P Group and when that is
|
* Action frames are actually sent within a P2P Group and when that is
|
||||||
* the case, we need to follow power saving (e.g., GO buffering the
|
* the case, we need to follow power saving (e.g., GO buffering the
|
||||||
* frame for a client in PS mode or a client following the adverised
|
* frame for a client in PS mode or a client following the advertised
|
||||||
* NoA from its GO). To make that easier for the driver, select the
|
* NoA from its GO). To make that easier for the driver, select the
|
||||||
* correct group interface here.
|
* correct group interface here.
|
||||||
*/
|
*/
|
||||||
|
@ -512,6 +512,7 @@ static void wpas_send_action_cb(void *eloop_ctx, void *timeout_ctx)
|
||||||
if (os_memcmp(wpa_s->pending_action_src,
|
if (os_memcmp(wpa_s->pending_action_src,
|
||||||
iface->own_addr, ETH_ALEN) == 0)
|
iface->own_addr, ETH_ALEN) == 0)
|
||||||
break;
|
break;
|
||||||
|
iface = iface->next;
|
||||||
}
|
}
|
||||||
if (iface) {
|
if (iface) {
|
||||||
wpa_printf(MSG_DEBUG, "P2P: Use group interface %s "
|
wpa_printf(MSG_DEBUG, "P2P: Use group interface %s "
|
||||||
|
|
Loading…
Reference in a new issue