Message ID | 1473085991-5073-11-git-send-email-andrei.otcheretianski@intel.com |
---|---|
State | Changes Requested |
Headers | show |
On Mon, Sep 05, 2016 at 05:33:04PM +0300, andrei.otcheretianski@intel.com wrote: > P2P long listen that was stopped for off-channel action TX is not > resumed when the action frame sequence is done but only on the > TX status event. However, it is possible that by the time the > TX status event is received the action frame sequence was already > done. In such case P2P long listen will not be resumed since the > TX status event is being ignored. > Fix this by also resuming P2P long listen when action frame sequence > is done. Could you please provide a debug log showing a case where the long listen is stopped or at least describe a frame sequence where this can happen? I would like to get a hwsim test case for this, but when trying to write one, I could not get this to trigger since no offchannel TX case stopped the exchange based on the first frame before receiving the TX status event.
> -----Original Message----- > From: Hostap [mailto:hostap-bounces@lists.infradead.org] On Behalf Of > Jouni Malinen > Sent: Tuesday, September 27, 2016 00:42 > To: Otcheretianski, Andrei <andrei.otcheretianski@intel.com> > Cc: hostap@lists.infradead.org; Stern, Avraham <avraham.stern@intel.com> > Subject: Re: [PATCH 11/18] P2P: Resume P2P long listen after off channel TX > > On Mon, Sep 05, 2016 at 05:33:04PM +0300, andrei.otcheretianski@intel.com > wrote: > > P2P long listen that was stopped for off-channel action TX is not > > resumed when the action frame sequence is done but only on the TX > > status event. However, it is possible that by the time the TX status > > event is received the action frame sequence was already done. In such > > case P2P long listen will not be resumed since the TX status event is > > being ignored. > > Fix this by also resuming P2P long listen when action frame sequence > > is done. > > Could you please provide a debug log showing a case where the long listen is > stopped or at least describe a frame sequence where this can happen? I > would like to get a hwsim test case for this, but when trying to write one, I > could not get this to trigger since no offchannel TX case stopped the > exchange based on the first frame before receiving the TX status event. > Avi might have such a log but he is currently travelling. A possible flow for this is a GoN, where the local P2P Device expects a GoN confirm frame, but before getting the Tx status event p2p_timeout_connect() fires, in which case the action sequence would be cancelled. Not sure that this is the same sequence Avi saw. Regards, Ilan.
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 21b6213..a6184db 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -1607,6 +1607,12 @@ static void wpas_send_action_done(void *ctx) } offchannel_send_action_done(wpa_s); + + if (wpa_s->p2p_long_listen > 0) { + /* Continue the listen */ + wpa_printf(MSG_DEBUG, "P2P: Continuing long Listen state"); + wpas_p2p_listen_start(wpa_s, wpa_s->p2p_long_listen); + } }