]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
nl80211: Work around error case prints for nl_recvmsgs on Android
authorJithu Jance <jithu@broadcom.com>
Fri, 23 May 2014 05:51:07 +0000 (11:21 +0530)
committerJouni Malinen <j@w1.fi>
Sun, 1 Jun 2014 08:25:02 +0000 (11:25 +0300)
I got the below prints on a particular Android platform:

I/wpa_supplicant( 2637): nl80211: send_and_recv->nl_recvmsgs failed: 20
I/wpa_supplicant( 2637): nl80211: send_and_recv->nl_recvmsgs failed: 20

In JellyBean libnl_2 code, I see that the nl_recvmsgs returns postive values
too. In some cases, nl_recvmgs return the output of nl_recv function. nl_recv
function can return Number of bytes read, 0 or a negative error code.

Looks like this positive return value for nl_recvmsgs may be specific to
Android. While this is not how the API is supposed to work, this does no
harm with upstream libnl which returns only 0 or -1 from the function.

Signed-off-by: Jithu Jance <jithu@broadcom.com>
src/drivers/driver_nl80211.c

index 1cb2acd097348aebf7c7550ab92a7d770e6b0c59..756865387746bcb4a2d23280e3671039004bdfad 100644 (file)
@@ -652,7 +652,7 @@ static int send_and_recv(struct nl80211_global *global,
 
        while (err > 0) {
                int res = nl_recvmsgs(nl_handle, cb);
-               if (res) {
+               if (res < 0) {
                        wpa_printf(MSG_INFO,
                                   "nl80211: %s->nl_recvmsgs failed: %d",
                                   __func__, res);
@@ -910,7 +910,7 @@ static void nl80211_recv_beacons(int sock, void *eloop_ctx, void *handle)
        wpa_printf(MSG_EXCESSIVE, "nl80211: Beacon event message available");
 
        res = nl_recvmsgs(handle, w->nl_cb);
-       if (res) {
+       if (res < 0) {
                wpa_printf(MSG_INFO, "nl80211: %s->nl_recvmsgs failed: %d",
                           __func__, res);
        }
@@ -3276,7 +3276,7 @@ static void wpa_driver_nl80211_event_receive(int sock, void *eloop_ctx,
        wpa_printf(MSG_MSGDUMP, "nl80211: Event message available");
 
        res = nl_recvmsgs(handle, cb);
-       if (res) {
+       if (res < 0) {
                wpa_printf(MSG_INFO, "nl80211: %s->nl_recvmsgs failed: %d",
                           __func__, res);
        }