Move some P2P offchannel operations to offchannel.c
There is no need for p2p_supplicant.c to access wpa_s->pending_action_tx so move these references to offchannel.c to get a bit cleaner interface between the components. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
b4419c62ad
commit
2f3101d8df
3 changed files with 34 additions and 7 deletions
|
@ -356,6 +356,33 @@ void offchannel_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* offchannel_pending_action_tx - Check whether there is a pending Action TX
|
||||||
|
* @wpa_s: Pointer to wpa_supplicant data
|
||||||
|
* Returns: Pointer to pending frame or %NULL if no pending operation
|
||||||
|
*
|
||||||
|
* This function can be used to check whether there is a pending Action frame TX
|
||||||
|
* operation. The returned pointer should be used only for checking whether it
|
||||||
|
* is %NULL (no pending frame) or to print the pointer value in debug
|
||||||
|
* information (i.e., the pointer should not be dereferenced).
|
||||||
|
*/
|
||||||
|
const void * offchannel_pending_action_tx(struct wpa_supplicant *wpa_s)
|
||||||
|
{
|
||||||
|
return wpa_s->pending_action_tx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* offchannel_clear_pending_action_tx - Clear pending Action frame TX
|
||||||
|
* @wpa_s: Pointer to wpa_supplicant data
|
||||||
|
*/
|
||||||
|
void offchannel_clear_pending_action_tx(struct wpa_supplicant *wpa_s)
|
||||||
|
{
|
||||||
|
wpabuf_free(wpa_s->pending_action_tx);
|
||||||
|
wpa_s->pending_action_tx = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* offchannel_deinit - Deinit off-channel operations
|
* offchannel_deinit - Deinit off-channel operations
|
||||||
* @wpa_s: Pointer to wpa_supplicant data
|
* @wpa_s: Pointer to wpa_supplicant data
|
||||||
|
@ -365,7 +392,6 @@ void offchannel_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
|
||||||
*/
|
*/
|
||||||
void offchannel_deinit(struct wpa_supplicant *wpa_s)
|
void offchannel_deinit(struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
wpabuf_free(wpa_s->pending_action_tx);
|
offchannel_clear_pending_action_tx(wpa_s);
|
||||||
wpa_s->pending_action_tx = NULL;
|
|
||||||
eloop_cancel_timeout(wpas_send_action_cb, wpa_s, NULL);
|
eloop_cancel_timeout(wpas_send_action_cb, wpa_s, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,5 +29,7 @@ void offchannel_deinit(struct wpa_supplicant *wpa_s);
|
||||||
void offchannel_send_action_tx_status(
|
void offchannel_send_action_tx_status(
|
||||||
struct wpa_supplicant *wpa_s, const u8 *dst, const u8 *data,
|
struct wpa_supplicant *wpa_s, const u8 *dst, const u8 *data,
|
||||||
size_t data_len, enum offchannel_send_action_result result);
|
size_t data_len, enum offchannel_send_action_result result);
|
||||||
|
const void * offchannel_pending_action_tx(struct wpa_supplicant *wpa_s);
|
||||||
|
void offchannel_clear_pending_action_tx(struct wpa_supplicant *wpa_s);
|
||||||
|
|
||||||
#endif /* OFFCHANNEL_H */
|
#endif /* OFFCHANNEL_H */
|
||||||
|
|
|
@ -3758,12 +3758,12 @@ void wpas_p2p_cancel_remain_on_channel_cb(struct wpa_supplicant *wpa_s,
|
||||||
{
|
{
|
||||||
wpa_printf(MSG_DEBUG, "P2P: Cancel remain-on-channel callback "
|
wpa_printf(MSG_DEBUG, "P2P: Cancel remain-on-channel callback "
|
||||||
"(p2p_long_listen=%d ms pending_action_tx=%p)",
|
"(p2p_long_listen=%d ms pending_action_tx=%p)",
|
||||||
wpa_s->p2p_long_listen, wpa_s->pending_action_tx);
|
wpa_s->p2p_long_listen, offchannel_pending_action_tx(wpa_s));
|
||||||
if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL)
|
if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL)
|
||||||
return;
|
return;
|
||||||
if (p2p_listen_end(wpa_s->global->p2p, freq) > 0)
|
if (p2p_listen_end(wpa_s->global->p2p, freq) > 0)
|
||||||
return; /* P2P module started a new operation */
|
return; /* P2P module started a new operation */
|
||||||
if (wpa_s->pending_action_tx)
|
if (offchannel_pending_action_tx(wpa_s))
|
||||||
return;
|
return;
|
||||||
if (wpa_s->p2p_long_listen > 0)
|
if (wpa_s->p2p_long_listen > 0)
|
||||||
wpa_s->p2p_long_listen -= wpa_s->max_remain_on_chan;
|
wpa_s->p2p_long_listen -= wpa_s->max_remain_on_chan;
|
||||||
|
@ -4321,13 +4321,12 @@ int wpas_p2p_scan_result_text(const u8 *ies, size_t ies_len, char *buf,
|
||||||
|
|
||||||
static void wpas_p2p_clear_pending_action_tx(struct wpa_supplicant *wpa_s)
|
static void wpas_p2p_clear_pending_action_tx(struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
if (!wpa_s->pending_action_tx)
|
if (!offchannel_pending_action_tx(wpa_s))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
wpa_printf(MSG_DEBUG, "P2P: Drop pending Action TX due to new "
|
wpa_printf(MSG_DEBUG, "P2P: Drop pending Action TX due to new "
|
||||||
"operation request");
|
"operation request");
|
||||||
wpabuf_free(wpa_s->pending_action_tx);
|
offchannel_clear_pending_action_tx(wpa_s);
|
||||||
wpa_s->pending_action_tx = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue