Home | History | Annotate | Download | only in drivers

Lines Matching refs:drv

40 int wpa_driver_register_event_cb(struct wpa_driver_ndis_data *drv);
46 static void wpa_driver_ndis_poll(void *drv);
48 static int wpa_driver_ndis_adapter_init(struct wpa_driver_ndis_data *drv);
49 static int wpa_driver_ndis_adapter_open(struct wpa_driver_ndis_data *drv);
50 static void wpa_driver_ndis_adapter_close(struct wpa_driver_ndis_data *drv);
450 static int ndis_get_oid(struct wpa_driver_ndis_data *drv, unsigned int oid,
465 o->ptcDeviceName = drv->adapter_name;
467 if (!DeviceIoControl(drv->ndisuio, IOCTL_NDISUIO_QUERY_OID_VALUE,
505 if (!PacketRequest(drv->adapter, FALSE, o)) {
525 static int ndis_set_oid(struct wpa_driver_ndis_data *drv, unsigned int oid,
544 o->ptcDeviceName = drv->adapter_name;
548 if (!DeviceIoControl(drv->ndisuio, IOCTL_NDISUIO_SET_OID_VALUE,
574 if (!PacketRequest(drv->adapter, TRUE, o)) {
586 static int ndis_set_auth_mode(struct wpa_driver_ndis_data *drv, int mode)
589 if (ndis_set_oid(drv, OID_802_11_AUTHENTICATION_MODE,
600 static int ndis_get_auth_mode(struct wpa_driver_ndis_data *drv)
604 res = ndis_get_oid(drv, OID_802_11_AUTHENTICATION_MODE,
615 static int ndis_set_encr_status(struct wpa_driver_ndis_data *drv, int encr)
618 if (ndis_set_oid(drv, OID_802_11_ENCRYPTION_STATUS,
628 static int ndis_get_encr_status(struct wpa_driver_ndis_data *drv)
632 res = ndis_get_oid(drv, OID_802_11_ENCRYPTION_STATUS,
645 struct wpa_driver_ndis_data *drv = priv;
647 if (drv->wired) {
656 return ndis_get_oid(drv, OID_802_11_BSSID, (char *) bssid, ETH_ALEN) <
663 struct wpa_driver_ndis_data *drv = priv;
667 res = ndis_get_oid(drv, OID_802_11_SSID, (char *) &buf, sizeof(buf));
670 if (drv->wired) {
682 static int wpa_driver_ndis_set_ssid(struct wpa_driver_ndis_data *drv,
695 drv->radio_enabled = 1;
696 return ndis_set_oid(drv, OID_802_11_SSID, (char *) &buf, sizeof(buf));
702 static int wpa_driver_ndis_radio_off(struct wpa_driver_ndis_data *drv)
704 drv->radio_enabled = 0;
705 return ndis_set_oid(drv, OID_802_11_DISASSOCIATE, " ", 4);
710 static int wpa_driver_ndis_disconnect(struct wpa_driver_ndis_data *drv)
716 return wpa_driver_ndis_set_ssid(drv, (u8 *) ssid, 32);
723 struct wpa_driver_ndis_data *drv = priv;
724 return wpa_driver_ndis_disconnect(drv);
736 struct wpa_driver_ndis_data *drv,
746 res = ndis_set_oid(drv, OID_DOT11_SCAN_REQUEST, (char *) &req,
748 eloop_cancel_timeout(wpa_driver_ndis_scan_timeout, drv, drv->ctx);
749 eloop_register_timeout(7, 0, wpa_driver_ndis_scan_timeout, drv,
750 drv->ctx);
758 struct wpa_driver_ndis_data *drv = priv;
761 if (drv->native80211)
762 return wpa_driver_ndis_scan_native80211(drv, params);
764 if (!drv->radio_enabled) {
767 if (wpa_driver_ndis_disconnect(drv) < 0) {
770 drv->radio_enabled = 1;
773 res = ndis_set_oid(drv, OID_802_11_BSSID_LIST_SCAN, " ", 4);
774 eloop_cancel_timeout(wpa_driver_ndis_scan_timeout, drv, drv->ctx);
775 eloop_register_timeout(7, 0, wpa_driver_ndis_scan_timeout, drv,
776 drv->ctx);
828 struct wpa_driver_ndis_data *drv = priv;
840 len = ndis_get_oid(drv, OID_802_11_BSSID_LIST, (char *) b, blen);
914 static int wpa_driver_ndis_remove_key(struct wpa_driver_ndis_data *drv,
930 res = ndis_set_oid(drv, OID_802_11_REMOVE_KEY, (char *) &rkey,
934 res2 = ndis_set_oid(drv, OID_802_11_REMOVE_WEP,
945 static int wpa_driver_ndis_add_wep(struct wpa_driver_ndis_data *drv,
970 res = ndis_set_oid(drv, OID_802_11_ADD_WEP, (char *) wep, len);
984 struct wpa_driver_ndis_data *drv = priv;
993 if (wpa_driver_ndis_get_bssid(drv, bssid) < 0)
1002 return wpa_driver_ndis_remove_key(drv, key_idx, addr, bssid,
1007 return wpa_driver_ndis_add_wep(drv, pairwise, key_idx, set_tx,
1041 res = ndis_set_oid(drv, OID_802_11_ADD_KEY, (char *) nkey, len);
1052 struct wpa_driver_ndis_data *drv = priv;
1056 drv->mode = params->mode;
1064 eloop_cancel_timeout(wpa_driver_ndis_poll_timeout, drv, NULL);
1066 drv, NULL);
1069 if (ndis_set_oid(drv, OID_802_11_INFRASTRUCTURE_MODE,
1086 wpa_driver_ndis_set_key(drv->ifname, drv, WPA_ALG_WEP,
1124 wpa_driver_ndis_set_key(drv->ifname, drv, WPA_ALG_WEP,
1176 if (ndis_set_oid(drv, OID_802_11_PRIVACY_FILTER,
1184 ndis_set_auth_mode(drv, auth_mode);
1185 ndis_set_encr_status(drv, encr);
1188 ndis_set_oid(drv, OID_802_11_BSSID, (char *) params->bssid,
1190 drv->oid_bssid_set = 1;
1191 } else if (drv->oid_bssid_set) {
1192 ndis_set_oid(drv, OID_802_11_BSSID, "\xff\xff\xff\xff\xff\xff",
1194 drv->oid_bssid_set = 0;
1197 return wpa_driver_ndis_set_ssid(drv, params->ssid, params->ssid_len);
1201 static int wpa_driver_ndis_set_pmkid(struct wpa_driver_ndis_data *drv)
1208 entry = drv->pmkid;
1211 if (count >= drv->no_of_pmkid)
1222 entry = drv->pmkid;
1229 ret = ndis_set_oid(drv, OID_802_11_PMKID, (char *) p, len);
1238 struct wpa_driver_ndis_data *drv = priv;
1241 if (drv->no_of_pmkid == 0)
1245 entry = drv->pmkid;
1259 entry->next = drv->pmkid;
1260 drv->pmkid = entry;
1267 entry->next = drv->pmkid;
1268 drv->pmkid = entry;
1272 return wpa_driver_ndis_set_pmkid(drv);
1279 struct wpa_driver_ndis_data *drv = priv;
1282 if (drv->no_of_pmkid == 0)
1285 entry = drv->pmkid;
1293 drv->pmkid = entry->next;
1300 return wpa_driver_ndis_set_pmkid(drv);
1306 struct wpa_driver_ndis_data *drv = priv;
1311 if (drv->no_of_pmkid == 0)
1314 pmkid = drv->pmkid;
1315 drv->pmkid = NULL;
1326 prev_authmode = ndis_get_auth_mode(drv);
1328 ndis_set_auth_mode(drv, Ndis802_11AuthModeWPA2);
1335 ret = ndis_set_oid(drv, OID_802_11_PMKID, (char *) &p, 8);
1338 ndis_set_auth_mode(drv, prev_authmode);
1344 static int wpa_driver_ndis_get_associnfo(struct wpa_driver_ndis_data *drv)
1353 len = ndis_get_oid(drv, OID_802_11_ASSOCIATION_INFORMATION, buf,
1367 len = ndis_get_oid(drv, OID_802_11_ASSOCIATION_INFORMATION,
1416 len = ndis_get_oid(drv, OID_802_11_BSSID_LIST, (char *) b, blen);
1429 if (os_memcmp(drv->bssid, bss->MacAddress, ETH_ALEN) == 0 &&
1447 wpa_supplicant_event(drv->ctx, EVENT_ASSOCINFO, &data);
1457 struct wpa_driver_ndis_data *drv = eloop_ctx;
1461 if (drv->wired)
1464 if (wpa_driver_ndis_get_bssid(drv, bssid)) {
1466 if (!is_zero_ether_addr(drv->bssid)) {
1467 os_memset(drv->bssid, 0, ETH_ALEN);
1468 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC, NULL);
1472 if (os_memcmp(drv->bssid, bssid, ETH_ALEN) != 0) {
1473 os_memcpy(drv->bssid, bssid, ETH_ALEN);
1474 wpa_driver_ndis_get_associnfo(drv);
1475 wpa_supplicant_event(drv->ctx, EVENT_ASSOC, NULL);
1485 poll = drv->mode == IEEE80211_MODE_IBSS;
1494 drv, NULL);
1501 struct wpa_driver_ndis_data *drv = priv;
1502 eloop_cancel_timeout(wpa_driver_ndis_poll_timeout, drv, NULL);
1503 wpa_driver_ndis_poll_timeout(drv, NULL);
1509 void wpa_driver_ndis_event_connect(struct wpa_driver_ndis_data *drv)
1512 if (wpa_driver_ndis_get_bssid(drv, drv->bssid) == 0) {
1513 wpa_driver_ndis_get_associnfo(drv);
1514 wpa_supplicant_event(drv->ctx, EVENT_ASSOC, NULL);
1521 void wpa_driver_ndis_event_disconnect(struct wpa_driver_ndis_data *drv)
1524 os_memset(drv->bssid, 0, ETH_ALEN);
1525 wpa_supplicant_event(drv->ctx, EVENT_DISASSOC, NULL);
1529 static void wpa_driver_ndis_event_auth(struct wpa_driver_ndis_data *drv,
1557 wpa_supplicant_event(drv->ctx, EVENT_MICHAEL_MIC_FAILURE,
1563 static void wpa_driver_ndis_event_pmkid(struct wpa_driver_ndis_data *drv,
1600 wpa_supplicant_event(drv->ctx, EVENT_PMKID_CANDIDATE,
1608 void wpa_driver_ndis_event_media_specific(struct wpa_driver_ndis_data *drv,
1625 wpa_driver_ndis_event_auth(drv, data, data_len);
1628 wpa_driver_ndis_event_pmkid(drv, data, data_len);
1639 void wpa_driver_ndis_event_adapter_arrival(struct wpa_driver_ndis_data *drv)
1648 wpa_driver_ndis_adapter_close(drv);
1649 if (wpa_driver_ndis_adapter_init(drv) < 0 ||
1650 wpa_driver_ndis_adapter_open(drv) < 0) {
1661 os_strlcpy(event.interface_status.ifname, drv->ifname,
1664 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, &event);
1669 void wpa_driver_ndis_event_adapter_removal(struct wpa_driver_ndis_data *drv)
1675 os_strlcpy(event.interface_status.ifname, drv->ifname,
1678 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_STATUS, &event);
1683 wpa_driver_ndis_get_wpa_capability(struct wpa_driver_ndis_data *drv)
1687 if (ndis_set_auth_mode(drv, Ndis802_11AuthModeWPA) == 0 &&
1688 ndis_get_auth_mode(drv) == Ndis802_11AuthModeWPA) {
1690 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA;
1693 if (ndis_set_auth_mode(drv, Ndis802_11AuthModeWPAPSK) == 0 &&
1694 ndis_get_auth_mode(drv) == Ndis802_11AuthModeWPAPSK) {
1697 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA_PSK;
1700 if (ndis_set_encr_status(drv, Ndis802_11Encryption3Enabled) == 0 &&
1701 ndis_get_encr_status(drv) == Ndis802_11Encryption3KeyAbsent) {
1703 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP;
1706 if (ndis_set_encr_status(drv, Ndis802_11Encryption2Enabled) == 0 &&
1707 ndis_get_encr_status(drv) == Ndis802_11Encryption2KeyAbsent) {
1709 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP;
1712 if (ndis_set_encr_status(drv, Ndis802_11Encryption1Enabled) == 0 &&
1713 ndis_get_encr_status(drv) == Ndis802_11Encryption1KeyAbsent) {
1715 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40 |
1719 if (ndis_set_auth_mode(drv, Ndis802_11AuthModeShared) == 0 &&
1720 ndis_get_auth_mode(drv) == Ndis802_11AuthModeShared) {
1721 drv->capa.auth |= WPA_DRIVER_AUTH_SHARED;
1724 if (ndis_set_auth_mode(drv, Ndis802_11AuthModeOpen) == 0 &&
1725 ndis_get_auth_mode(drv) == Ndis802_11AuthModeOpen) {
1726 drv->capa.auth |= WPA_DRIVER_AUTH_OPEN;
1729 ndis_set_encr_status(drv, Ndis802_11EncryptionDisabled);
1734 if (drv->capa.key_mgmt & WPA_DRIVER_CAPA_KEY_MGMT_WPA &&
1735 drv->capa.enc & (WPA_DRIVER_CAPA_ENC_TKIP |
1738 drv->has_capability = 1;
1745 drv->capa.key_mgmt, drv->capa.enc, drv->capa.auth);
1749 static void wpa_driver_ndis_get_capability(struct wpa_driver_ndis_data *drv)
1756 drv->capa.flags = WPA_DRIVER_FLAGS_DRIVER_IE;
1758 len = ndis_get_oid(drv, OID_802_11_CAPABILITY, buf, sizeof(buf));
1760 wpa_driver_ndis_get_wpa_capability(drv);
1775 drv->has_capability = 1;
1776 drv->no_of_pmkid = c->NoOfPMKIDs;
1790 drv->capa.auth |= WPA_DRIVER_AUTH_OPEN;
1793 drv->capa.auth |= WPA_DRIVER_AUTH_SHARED;
1796 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA;
1799 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA_PSK;
1802 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_WPA2;
1805 drv->capa.key_mgmt |=
1809 drv->capa.key_mgmt |=
1817 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP40;
1818 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_WEP104;
1821 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_TKIP;
1824 drv->capa.enc |= WPA_DRIVER_CAPA_ENC_CCMP;
1833 drv->capa.key_mgmt, drv->capa.enc, drv->capa.auth);
1839 struct wpa_driver_ndis_data *drv = priv;
1840 if (!drv->has_capability)
1842 os_memcpy(capa, &drv->capa, sizeof(*capa));
1849 struct wpa_driver_ndis_data *drv = priv;
1850 return drv->ifname;
1856 struct wpa_driver_ndis_data *drv = priv;
1857 return drv->own_addr;
1867 struct wpa_driver_ndis_data *drv = eloop_data;
1872 if (!ReadMsgQueue(drv->event_queue, buf, NDISUIO_MSG_SIZE, &len, 0,
1893 wpa_driver_ndis_event_adapter_arrival(drv);
1899 wpa_driver_ndis_event_adapter_removal(drv);
1904 SetEvent(drv->connected_event);
1905 wpa_driver_ndis_event_connect(drv);
1908 ResetEvent(drv->connected_event);
1910 wpa_driver_ndis_event_disconnect(drv);
1916 drv, hdr->pvStatusBuffer, hdr->uiStatusBufferSize);
1919 drv, ((const u8 *) hdr) + hdr->uiOffsetToStatusBuffer,
1931 static void ndisuio_notification_deinit(struct wpa_driver_ndis_data *drv)
1936 req.hMsgQueue = drv->event_queue;
1939 if (!DeviceIoControl(drv->ndisuio, IOCTL_NDISUIO_REQUEST_NOTIFICATION,
1946 if (!DeviceIoControl(drv->ndisuio, IOCTL_NDISUIO_CANCEL_NOTIFICATION,
1953 if (drv->event_queue) {
1954 eloop_unregister_event(drv->event_queue,
1955 sizeof(drv->event_queue));
1956 CloseHandle(drv->event_queue);
1957 drv->event_queue = NULL;
1960 if (drv->connected_event) {
1961 CloseHandle(drv->connected_event);
1962 drv->connected_event = NULL;
1967 static int ndisuio_notification_init(struct wpa_driver_ndis_data *drv)
1972 drv->connected_event =
1974 if (drv->connected_event == NULL) {
1987 drv->event_queue = CreateMsgQueue(NULL, &opt);
1988 if (drv->event_queue == NULL) {
1992 ndisuio_notification_deinit(drv);
1997 req.hMsgQueue = drv->event_queue;
2009 if (!DeviceIoControl(drv->ndisuio, IOCTL_NDISUIO_REQUEST_NOTIFICATION,
2014 ndisuio_notification_deinit(drv);
2018 eloop_register_event(drv->event_queue, sizeof(drv->event_queue),
2019 ndisuio_notification_receive, drv, NULL);
2026 static int wpa_driver_ndis_get_names(struct wpa_driver_ndis_data *drv)
2044 if (!DeviceIoControl(drv->ndisuio, IOCTL_NDISUIO_QUERY_BINDING,
2073 if (os_strstr(name, drv->ifname)) {
2079 if (os_strncmp(desc, drv->ifname, os_strlen(drv->ifname)) == 0)
2090 drv->ifname);
2095 os_strlcpy(drv->ifname,
2097 sizeof(drv->ifname));
2099 drv->adapter_name = wpa_strdup_tchar(drv->ifname);
2100 if (drv->adapter_name == NULL) {
2113 drv->adapter_desc = dup_binstr(desc, dlen);
2115 if (drv->adapter_desc == NULL)
2119 drv->adapter_desc);
2245 if (found_name == -1 && os_strstr(name[i], drv->ifname))
2248 os_strncmp(desc[i], drv->ifname, os_strlen(drv->ifname)) ==
2258 os_strlcpy(drv->ifname,
2261 sizeof(drv->ifname));
2266 drv->ifname);
2281 drv->adapter_desc = dup_binstr(desc[i], dlen);
2283 if (drv->adapter_desc == NULL)
2287 drv->adapter_desc);
2353 static int wpa_driver_ndis_rebind_adapter(struct wpa_driver_ndis_data *drv)
2359 len = _tcslen(drv->adapter_name);
2372 memcpy(multi, drv->adapter_name, len * sizeof(TCHAR));
2397 static int wpa_driver_ndis_set_wzc(struct wpa_driver_ndis_data *drv,
2419 return wpa_driver_ndis_rebind_adapter(drv);
2497 drv->wzc_disabled = 1;
2498 return wpa_driver_ndis_rebind_adapter(drv);
2567 if (os_strstr(drv->ifname, guid) == NULL)
2624 drv->wzc_disabled = 0;
2643 drv->wzc_disabled = 1;
2661 static int wpa_driver_ndis_set_wzc(struct wpa_driver_ndis_data *drv,
2685 static int wpa_driver_ndis_adapter_init(struct wpa_driver_ndis_data *drv)
2692 drv->ndisuio = CreateFile(NDISUIO_DEVICE_NAME,
2697 if (drv->ndisuio == INVALID_HANDLE_VALUE) {
2702 driver_ndis_ndisuio_handle = drv->ndisuio;
2705 if (!DeviceIoControl(drv->ndisuio, IOCTL_NDISUIO_BIND_WAIT, NULL, 0,
2709 CloseHandle(drv->ndisuio);
2710 drv->ndisuio = INVALID_HANDLE_VALUE;
2722 static int wpa_driver_ndis_adapter_open(struct wpa_driver_ndis_data *drv)
2736 len = pos + os_strlen(drv->ifname);
2742 ifname[i] = (WCHAR) drv->ifname[i - pos];
2745 if (!DeviceIoControl(drv->ndisuio, IOCTL_NDISUIO_OPEN_DEVICE,
2752 CloseHandle(drv->ndisuio);
2753 drv->ndisuio = INVALID_HANDLE_VALUE;
2762 os_snprintf(ifname, sizeof(ifname), "\\Device\\NPF_%s", drv->ifname);
2763 drv->adapter = PacketOpenAdapter(ifname);
2764 if (drv->adapter == NULL) {
2774 static void wpa_driver_ndis_adapter_close(struct wpa_driver_ndis_data *drv)
2778 if (drv->ndisuio != INVALID_HANDLE_VALUE)
2779 CloseHandle(drv->ndisuio);
2781 if (drv->adapter)
2782 PacketCloseAdapter(drv->adapter);
2787 static int ndis_add_multicast(struct wpa_driver_ndis_data *drv)
2789 if (ndis_set_oid(drv, OID_802_3_MULTICAST_LIST,
2802 struct wpa_driver_ndis_data *drv;
2805 drv = os_zalloc(sizeof(*drv));
2806 if (drv == NULL)
2808 drv->ctx = ctx;
2819 os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
2821 if (wpa_driver_ndis_adapter_init(drv) < 0) {
2822 os_free(drv);
2826 if (wpa_driver_ndis_get_names(drv) < 0) {
2827 wpa_driver_ndis_adapter_close(drv);
2828 os_free(drv);
2832 wpa_driver_ndis_set_wzc(drv, 0);
2834 if (wpa_driver_ndis_adapter_open(drv) < 0) {
2835 wpa_driver_ndis_adapter_close(drv);
2836 os_free(drv);
2840 if (ndis_get_oid(drv, OID_802_3_CURRENT_ADDRESS,
2841 (char *) drv->own_addr, ETH_ALEN) < 0) {
2844 wpa_driver_ndis_adapter_close(drv);
2845 os_free(drv);
2848 wpa_driver_ndis_get_capability(drv);
2852 wpa_driver_ndis_flush_pmkid(drv);
2858 wpa_driver_ndis_disconnect(drv);
2860 eloop_register_timeout(1, 0, wpa_driver_ndis_poll_timeout, drv, NULL);
2863 drv->events = ndis_events_init(&drv->events_pipe, &drv->event_avail,
2864 drv->ifname, drv->adapter_desc);
2865 if (drv->events == NULL) {
2866 wpa_driver_ndis_deinit(drv);
2869 eloop_register_event(drv->event_avail, sizeof(drv->event_avail),
2870 wpa_driver_ndis_event_pipe_cb, drv, NULL);
2874 if (ndisuio_notification_init(drv) < 0) {
2875 wpa_driver_ndis_deinit(drv);
2883 if (ndis_set_oid(drv, OID_802_11_INFRASTRUCTURE_MODE,
2892 res = ndis_get_oid(drv, OID_DOT11_CURRENT_OPERATION_MODE, buf,
2898 drv->native80211 = 1;
2899 } else if (!drv->has_capability || drv->capa.enc == 0) {
2907 drv->wired = 1;
2908 drv->capa.flags |= WPA_DRIVER_FLAGS_WIRED;
2909 drv->has_capability = 1;
2910 ndis_add_multicast(drv);
2914 return drv;
2920 struct wpa_driver_ndis_data *drv = priv;
2923 if (drv->events) {
2924 eloop_unregister_event(drv->event_avail,
2925 sizeof(drv->event_avail));
2926 ndis_events_deinit(drv->events);
2931 ndisuio_notification_deinit(drv);
2934 eloop_cancel_timeout(wpa_driver_ndis_scan_timeout, drv, drv->ctx);
2935 eloop_cancel_timeout(wpa_driver_ndis_poll_timeout, drv, NULL);
2936 wpa_driver_ndis_flush_pmkid(drv);
2937 wpa_driver_ndis_disconnect(drv);
2938 if (wpa_driver_ndis_radio_off(drv) < 0) {
2943 wpa_driver_ndis_adapter_close(drv);
2945 if (drv->wzc_disabled)
2946 wpa_driver_ndis_set_wzc(drv, 1);
2949 os_free(drv->adapter_name);
2951 os_free(drv->adapter_desc);
2952 os_free(drv);