Lines Matching full:drv

46 static void from_unknown_sta(struct wpa_driver_nl80211_data *drv,  in from_unknown_sta()  argument
63 wpa_supplicant_event(drv->ctx, EVENT_RX_FROM_UNKNOWN, &event); in from_unknown_sta()
67 static void handle_frame(struct wpa_driver_nl80211_data *drv, in handle_frame() argument
74 if (!drv->use_monitor) in handle_frame()
87 wpa_supplicant_event(drv->ctx, EVENT_RX_MGMT, &event); in handle_frame()
92 from_unknown_sta(drv, buf, len); in handle_frame()
95 from_unknown_sta(drv, buf, len); in handle_frame()
103 struct wpa_driver_nl80211_data *drv = eloop_ctx; in handle_monitor_read() local
163 handle_frame(drv, buf + iter._max_length, in handle_monitor_read()
166 handle_tx_callback(drv->ctx, buf + iter._max_length, in handle_monitor_read()
323 void nl80211_remove_monitor_interface(struct wpa_driver_nl80211_data *drv) in nl80211_remove_monitor_interface() argument
325 if (drv->monitor_refcount > 0) in nl80211_remove_monitor_interface()
326 drv->monitor_refcount--; in nl80211_remove_monitor_interface()
328 drv->monitor_refcount); in nl80211_remove_monitor_interface()
329 if (drv->monitor_refcount > 0) in nl80211_remove_monitor_interface()
332 if (drv->monitor_ifidx >= 0) { in nl80211_remove_monitor_interface()
333 nl80211_remove_iface(drv, drv->monitor_ifidx); in nl80211_remove_monitor_interface()
334 drv->monitor_ifidx = -1; in nl80211_remove_monitor_interface()
336 if (drv->monitor_sock >= 0) { in nl80211_remove_monitor_interface()
337 eloop_unregister_read_sock(drv->monitor_sock); in nl80211_remove_monitor_interface()
338 close(drv->monitor_sock); in nl80211_remove_monitor_interface()
339 drv->monitor_sock = -1; in nl80211_remove_monitor_interface()
344 int nl80211_create_monitor_interface(struct wpa_driver_nl80211_data *drv) in nl80211_create_monitor_interface() argument
351 if (drv->monitor_ifidx >= 0) { in nl80211_create_monitor_interface()
352 drv->monitor_refcount++; in nl80211_create_monitor_interface()
354 drv->monitor_refcount); in nl80211_create_monitor_interface()
358 if (os_strncmp(drv->first_bss->ifname, "p2p-", 4) == 0) { in nl80211_create_monitor_interface()
365 snprintf(buf, IFNAMSIZ, "mon-%s", drv->first_bss->ifname + 4); in nl80211_create_monitor_interface()
371 drv->first_bss->ifname); in nl80211_create_monitor_interface()
382 drv->monitor_ifidx = in nl80211_create_monitor_interface()
383 nl80211_create_iface(drv, buf, NL80211_IFTYPE_MONITOR, NULL, in nl80211_create_monitor_interface()
386 if (drv->monitor_ifidx == -EOPNOTSUPP) { in nl80211_create_monitor_interface()
395 drv->device_ap_sme = 1; in nl80211_create_monitor_interface()
398 if (drv->monitor_ifidx < 0) in nl80211_create_monitor_interface()
401 if (linux_set_iface_flags(drv->global->ioctl_sock, buf, 1)) in nl80211_create_monitor_interface()
406 ll.sll_ifindex = drv->monitor_ifidx; in nl80211_create_monitor_interface()
407 drv->monitor_sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); in nl80211_create_monitor_interface()
408 if (drv->monitor_sock < 0) { in nl80211_create_monitor_interface()
414 if (add_monitor_filter(drv->monitor_sock)) { in nl80211_create_monitor_interface()
420 if (bind(drv->monitor_sock, (struct sockaddr *) &ll, sizeof(ll)) < 0) { in nl80211_create_monitor_interface()
429 (drv->monitor_sock, SOL_SOCKET, SO_PRIORITY, &optval, optlen)) { in nl80211_create_monitor_interface()
435 if (eloop_register_read_sock(drv->monitor_sock, handle_monitor_read, in nl80211_create_monitor_interface()
436 drv, NULL)) { in nl80211_create_monitor_interface()
441 drv->monitor_refcount++; in nl80211_create_monitor_interface()
444 nl80211_remove_monitor_interface(drv); in nl80211_create_monitor_interface()
449 int nl80211_send_monitor(struct wpa_driver_nl80211_data *drv, in nl80211_send_monitor() argument
487 if (drv->monitor_sock < 0) { in nl80211_send_monitor()
497 res = sendmsg(drv->monitor_sock, &msg, 0); in nl80211_send_monitor()