From c22bec092fab06c0e60ab91ff38108cdad1d02c1 Mon Sep 17 00:00:00 2001 From: pizza Date: Thu, 31 Jan 2008 14:34:36 +0000 Subject: [PATCH] When wlan_wext_write is enabled, auto-transition the devices to ifstate_enable. --- src/p80211/p80211mod.c | 2 ++ src/p80211/p80211netdev.c | 22 ++++++++++++++++++++-- src/prism2/driver/prism2_cs.c | 3 +++ src/prism2/driver/prism2_pci.c | 3 +++ src/prism2/driver/prism2_plx.c | 4 +++- src/prism2/driver/prism2_usb.c | 3 +++ src/prism2/driver/prism2sta.c | 2 +- 7 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/p80211/p80211mod.c b/src/p80211/p80211mod.c index 3a3294d..8c13323 100644 --- a/src/p80211/p80211mod.c +++ b/src/p80211/p80211mod.c @@ -214,3 +214,5 @@ EXPORT_SYMBOL(p80211skb_free); EXPORT_SYMBOL(p80211skb_rxmeta_attach); EXPORT_SYMBOL(p80211wext_event_associated); + +EXPORT_SYMBOL(wlan_wext_write); diff --git a/src/p80211/p80211netdev.c b/src/p80211/p80211netdev.c index 905a569..f4c82f5 100644 --- a/src/p80211/p80211netdev.c +++ b/src/p80211/p80211netdev.c @@ -938,7 +938,11 @@ int wlan_setup(wlandevice_t *wlandev) dev->wireless_handlers = &p80211wext_handler_def; #endif #endif - + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24) ) + dev->nd_net = &init_net; +#endif + #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,38) ) dev->tbusy = 1; dev->start = 0; @@ -1062,9 +1066,23 @@ int register_wlandev(wlandevice_t *wlandev) } #endif + if (wlan_wext_write) { +/* + // fake out a call to ifstate_enable! + p80211msg_lnxreq_ifstate_t msg; + memset(&msg, 0, sizeof(msg)); + msg.msgcode = DIDmsg_lnxreq_ifstate; + msg.msglen = sizeof(msg); + msg.ifstate.status = P80211ENUM_msgitem_status_data_ok; + msg.ifstate.data = P80211ENUM_ifstate_enable; + + p80211req_dorequest(wlandev, &msg); +*/ + } else { #ifdef CONFIG_HOTPLUG - p80211_run_sbin_hotplug(wlandev, WLAN_HOTPLUG_REGISTER); + p80211_run_sbin_hotplug(wlandev, WLAN_HOTPLUG_REGISTER); #endif + } DBFEXIT; return 0; diff --git a/src/prism2/driver/prism2_cs.c b/src/prism2/driver/prism2_cs.c index 0db283b..cf67a5f 100644 --- a/src/prism2/driver/prism2_cs.c +++ b/src/prism2/driver/prism2_cs.c @@ -577,6 +577,9 @@ static int prism2_cs_probe(struct pcmcia_device *pdev) /* And now we're done! */ wlandev->msdstate = WLAN_MSD_HWPRESENT; + if (wlan_wext_write) + prism2sta_ifstate(wlandev, P80211ENUM_ifstate_enable); + goto done; cs_failed: diff --git a/src/prism2/driver/prism2_pci.c b/src/prism2/driver/prism2_pci.c index 084314e..a1ce42c 100644 --- a/src/prism2/driver/prism2_pci.c +++ b/src/prism2/driver/prism2_pci.c @@ -167,6 +167,9 @@ prism2sta_probe_pci( wlandev->msdstate = WLAN_MSD_HWPRESENT; + if (wlan_wext_write) + prism2sta_ifstate(wlandev, P80211ENUM_ifstate_enable); + result = 0; goto done; diff --git a/src/prism2/driver/prism2_plx.c b/src/prism2/driver/prism2_plx.c index c351d9a..56b0315 100644 --- a/src/prism2/driver/prism2_plx.c +++ b/src/prism2/driver/prism2_plx.c @@ -276,8 +276,10 @@ prism2sta_probe_plx( wlandev->msdstate = WLAN_MSD_HWPRESENT; - result = 0; + if (wlan_wext_write) + prism2sta_ifstate(wlandev, P80211ENUM_ifstate_enable); + result = 0; goto done; failed: diff --git a/src/prism2/driver/prism2_usb.c b/src/prism2/driver/prism2_usb.c index b6f4f45..cf04c2a 100644 --- a/src/prism2/driver/prism2_usb.c +++ b/src/prism2/driver/prism2_usb.c @@ -167,6 +167,9 @@ static int prism2sta_probe_usb( wlandev->msdstate = WLAN_MSD_HWPRESENT; + if (wlan_wext_write) + prism2sta_ifstate(wlandev, P80211ENUM_ifstate_enable); + goto done; failed: diff --git a/src/prism2/driver/prism2sta.c b/src/prism2/driver/prism2sta.c index d4c78b4..68de522 100644 --- a/src/prism2/driver/prism2sta.c +++ b/src/prism2/driver/prism2sta.c @@ -2279,8 +2279,8 @@ static int prism2sta_resume_pci (struct pci_dev *pdev) wlandev = (wlandevice_t *) pci_get_drvdata(pdev); if (wlandev) { - prism2sta_ifstate(wlandev, P80211ENUM_ifstate_disable); p80211_resume(wlandev); + prism2sta_ifstate(wlandev, P80211ENUM_ifstate_enable); } return 0;