--- src/drivers/driver_nl80211.c | 17 ++++++++++------- 1 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 7646a36..dcc688b 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -1592,7 +1592,8 @@ static void nl80211_client_probe_event(struct wpa_driver_nl80211_data *drv, static int process_event(struct nl_msg *msg, void *arg) { - struct wpa_driver_nl80211_data *drv = arg; + struct i802_bss *bss = arg; + struct wpa_driver_nl80211_data *drv = bss->drv; struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); struct nlattr *tb[NL80211_ATTR_MAX + 1]; @@ -1729,7 +1730,8 @@ static void wpa_driver_nl80211_event_receive(int sock, void *eloop_ctx, void *handle) { struct nl_cb *cb; - struct wpa_driver_nl80211_data *drv = eloop_ctx; + struct i802_bss *bss = eloop_ctx; + struct wpa_driver_nl80211_data *drv = bss->drv; wpa_printf(MSG_DEBUG, "nl80211: Event message available"); @@ -1737,7 +1739,7 @@ static void wpa_driver_nl80211_event_receive(int sock, void *eloop_ctx, if (!cb) return; nl_cb_set(cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, no_seq_check, NULL); - nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, process_event, drv); + nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, process_event, bss); nl_recvmsgs(handle, cb); nl_cb_put(cb); } @@ -2035,8 +2037,9 @@ static int wpa_driver_nl80211_capa(struct wpa_driver_nl80211_data *drv) } -static int wpa_driver_nl80211_init_nl(struct wpa_driver_nl80211_data *drv) +static int wpa_driver_nl80211_init_nl(struct i802_bss *bss) { + struct wpa_driver_nl80211_data *drv = bss->drv; int ret; /* Initialize generic netlink and nl80211 */ @@ -2092,7 +2095,7 @@ static int wpa_driver_nl80211_init_nl(struct wpa_driver_nl80211_data *drv) } eloop_register_read_sock(nl_socket_get_fd(drv->nl_event.handle), - wpa_driver_nl80211_event_receive, drv, + wpa_driver_nl80211_event_receive, bss, drv->nl_event.handle); return 0; @@ -2253,7 +2256,7 @@ static void * wpa_driver_nl80211_init(void *ctx, const char *ifname, drv->ioctl_sock = -1; drv->ap_scan_as_station = NL80211_IFTYPE_UNSPECIFIED; - if (wpa_driver_nl80211_init_nl(drv)) { + if (wpa_driver_nl80211_init_nl(bss)) { os_free(drv); return NULL; } @@ -7108,7 +7111,7 @@ static int wpa_driver_nl80211_probe_req_report(void *priv, int report) goto out_err; eloop_register_read_sock(nl_socket_get_fd(bss->nl_preq.handle), - wpa_driver_nl80211_event_receive, drv, + wpa_driver_nl80211_event_receive, bss, bss->nl_preq.handle); return 0; -- 1.7.6.3