Skip to content
This repository has been archived by the owner on Jul 30, 2022. It is now read-only.

Commit

Permalink
WEXT: Add "HANGED" processing
Browse files Browse the repository at this point in the history
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
  • Loading branch information
Dmitry Shmidt committed Nov 24, 2009
1 parent 68b591f commit aea96d8
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
19 changes: 16 additions & 3 deletions driver_wext.c
Expand Up @@ -84,6 +84,7 @@ struct wpa_driver_wext_data {
char mlmedev[IFNAMSIZ + 1];

int scan_complete_events;
int errors;
};


Expand Down Expand Up @@ -1001,6 +1002,7 @@ void * wpa_driver_wext_init(void *ctx, const char *ifname)

drv->mlme_sock = -1;

drv->errors = 0;
wpa_driver_wext_finish_drv_init(drv);

return drv;
Expand Down Expand Up @@ -2542,11 +2544,15 @@ static int wpa_driver_priv_driver_cmd(void *priv, char *cmd, char *buf, size_t b
else if (os_strcasecmp(cmd, "STOP") == 0) {
if ((wpa_driver_wext_get_ifflags(drv, &flags) == 0) &&
(flags & IFF_UP)) {
wpa_printf(MSG_ERROR, "WEXT: %s when iface is UP",
cmd);
wpa_printf(MSG_ERROR, "WEXT: %s when iface is UP", cmd);
wpa_driver_wext_set_ifflags(drv, flags & ~IFF_UP);
}
}
else if( os_strcasecmp(cmd, "RELOAD") == 0 ) {
wpa_printf(MSG_DEBUG,"Reload command");
wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "HANGED");
return ret;
}

os_memset(&iwr, 0, sizeof(iwr));
os_strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
Expand All @@ -2558,9 +2564,16 @@ static int wpa_driver_priv_driver_cmd(void *priv, char *cmd, char *buf, size_t b
perror("ioctl[SIOCSIWPRIV]");
}

if (ret < 0)
if (ret < 0) {
wpa_printf(MSG_ERROR, "%s failed", __func__);
drv->errors++;
if (drv->errors > WEXT_NUMBER_SEQUENTIAL_ERRORS) {
drv->errors = 0;
wpa_msg(drv->ctx, MSG_INFO, WPA_EVENT_DRIVER_STATE "HANGED");
}
}
else {
drv->errors = 0;
ret = 0;
if ((os_strcasecmp(cmd, "RSSI") == 0) ||
(os_strcasecmp(cmd, "LINKSPEED") == 0) ||
Expand Down
1 change: 1 addition & 0 deletions driver_wext.h
Expand Up @@ -52,6 +52,7 @@ int wpa_driver_wext_get_version(struct wpa_driver_wext_data *drv);

#define WPA_DRIVER_WEXT_WAIT_US 400000
#define MAX_DRV_CMD_SIZE 248
#define WEXT_NUMBER_SEQUENTIAL_ERRORS 4
#endif

#endif /* DRIVER_WEXT_H */

0 comments on commit aea96d8

Please sign in to comment.