]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
nl80211: Handle NL80211_CMD_PROBE_CLIENT command response
authorIlan Peer <ilan.peer@intel.com>
Wed, 3 Apr 2019 15:17:12 +0000 (18:17 +0300)
committerJouni Malinen <j@w1.fi>
Mon, 15 Apr 2019 22:53:18 +0000 (01:53 +0300)
When processing the NL80211_CMD_PROBE_CLIENT command response, the
nl80211 layer in the kernel sends a response containing the cookie
associated with the client probe request. This response was not handled
by driver_nl80211.c when sending the command, and it was mistakenly
handled as an asynchronous event. This incorrect event did not include
the MAC/ACK attributes, so it was ignored in practice, but nevertheless,
the command response should not be processed as an event.

Fix this by reading the response as part of the sending the command
flow.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
src/drivers/driver_nl80211.c

index 7b3281fa007e97a08577b30bb0c18df950861650..21d1398ec92b300ce47ceb89a2dd63395be9addb 100644 (file)
@@ -8286,6 +8286,7 @@ static void nl80211_poll_client(void *priv, const u8 *own_addr, const u8 *addr,
        struct i802_bss *bss = priv;
        struct wpa_driver_nl80211_data *drv = bss->drv;
        struct nl_msg *msg;
+       u64 cookie;
        int ret;
 
        if (!drv->poll_command_supported) {
@@ -8299,11 +8300,16 @@ static void nl80211_poll_client(void *priv, const u8 *own_addr, const u8 *addr,
                return;
        }
 
-       ret = send_and_recv_msgs(drv, msg, NULL, NULL);
+       ret = send_and_recv_msgs(drv, msg, cookie_handler, &cookie);
        if (ret < 0) {
                wpa_printf(MSG_DEBUG, "nl80211: Client probe request for "
                           MACSTR " failed: ret=%d (%s)",
                           MAC2STR(addr), ret, strerror(-ret));
+       } else {
+               wpa_printf(MSG_DEBUG,
+                          "nl80211: Client probe request addr=" MACSTR
+                          " cookie=%llu", MAC2STR(addr),
+                          (long long unsigned int) cookie);
        }
 }