From d3d048310c2b730bdfec057177a61e4962bea054 Mon Sep 17 00:00:00 2001 From: Jithu Jance Date: Fri, 23 May 2014 11:21:07 +0530 Subject: [PATCH] nl80211: Work around error case prints for nl_recvmsgs on Android 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 --- src/drivers/driver_nl80211.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 1cb2acd09..756865387 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -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); }