diff options
Diffstat (limited to '')
-rw-r--r-- | drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c | 185 |
1 files changed, 7 insertions, 178 deletions
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c index 46b6e8c900e9..b7ec1ddee704 100644 --- a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c @@ -510,34 +510,11 @@ out: } } -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -/* called both by wq with ieee->lock held */ -void ieee80211_softmac_scan(struct ieee80211_device *ieee) -{ -#if 0 - short watchdog = 0; - do{ - ieee->current_network.channel = - (ieee->current_network.channel + 1) % MAX_CHANNEL_NUMBER; - if (watchdog++ > MAX_CHANNEL_NUMBER) - return; /* no good chans */ - }while(!ieee->channel_map[ieee->current_network.channel]); -#endif - - schedule_task(&ieee->softmac_scan_wq); -} -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)) void ieee80211_softmac_scan_wq(struct work_struct *work) { struct delayed_work *dwork = container_of(work, struct delayed_work, work); struct ieee80211_device *ieee = container_of(dwork, struct ieee80211_device, softmac_scan_wq); -#else -void ieee80211_softmac_scan_wq(struct ieee80211_device *ieee) -{ -#endif static short watchdog = 0; u8 last_channel = ieee->current_network.channel; #ifdef ENABLE_DOT11D @@ -575,13 +552,7 @@ void ieee80211_softmac_scan_wq(struct ieee80211_device *ieee) ieee80211_send_probe_requests(ieee); -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) queue_delayed_work(ieee->wq, &ieee->softmac_scan_wq, IEEE80211_SOFTMAC_SCAN_TIME); -#else - //ieee->scan_timer.expires = jiffies + MSECS(IEEE80211_SOFTMAC_SCAN_TIME); - if (ieee->scanning == 1) - mod_timer(&ieee->scan_timer,(jiffies + MSECS(IEEE80211_SOFTMAC_SCAN_TIME))); -#endif up(&ieee->scan_sem); return; @@ -597,19 +568,6 @@ out: up(&ieee->scan_sem); } -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -void ieee80211_softmac_scan_cb(unsigned long _dev) -{ - unsigned long flags; - struct ieee80211_device *ieee = (struct ieee80211_device *)_dev; - - spin_lock_irqsave(&ieee->lock, flags); - ieee80211_softmac_scan(ieee); - spin_unlock_irqrestore(&ieee->lock, flags); -} -#endif - - void ieee80211_beacons_start(struct ieee80211_device *ieee) { unsigned long flags; @@ -665,11 +623,7 @@ void ieee80211_softmac_stop_scan(struct ieee80211_device *ieee) if (ieee->scanning == 1){ ieee->scanning = 0; -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) cancel_delayed_work(&ieee->softmac_scan_wq); -#else - del_timer_sync(&ieee->scan_timer); -#endif } // spin_unlock_irqrestore(&ieee->lock, flags); @@ -704,16 +658,7 @@ void ieee80211_rtl_start_scan(struct ieee80211_device *ieee) if (ieee->softmac_features & IEEE_SOFTMAC_SCAN){ if (ieee->scanning == 0){ ieee->scanning = 1; -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20) queue_delayed_work(ieee->wq, &ieee->softmac_scan_wq, 0); -#else - - queue_work(ieee->wq, &ieee->softmac_scan_wq); -#endif -#else - ieee80211_softmac_scan(ieee); -#endif } }else ieee->start_scan(ieee->dev); @@ -1428,13 +1373,8 @@ void ieee80211_associate_abort(struct ieee80211_device *ieee) ieee->state = IEEE80211_ASSOCIATING_RETRY; -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) queue_delayed_work(ieee->wq, &ieee->associate_retry_wq, \ IEEE80211_SOFTMAC_ASSOC_RETRY_TIME); -#else - schedule_task(&ieee->associate_retry_wq); -#endif - spin_unlock_irqrestore(&ieee->lock, flags); } @@ -1527,14 +1467,9 @@ void ieee80211_associate_step2(struct ieee80211_device *ieee) //dev_kfree_skb_any(skb);//edit by thomas } } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)) void ieee80211_associate_complete_wq(struct work_struct *work) { struct ieee80211_device *ieee = container_of(work, struct ieee80211_device, associate_complete_wq); -#else -void ieee80211_associate_complete_wq(struct ieee80211_device *ieee) -{ -#endif printk(KERN_INFO "Associated successfully\n"); ieee->is_roaming = false; if(ieee80211_is_54g(ieee->current_network) && @@ -1606,21 +1541,12 @@ void ieee80211_associate_complete(struct ieee80211_device *ieee) } #endif //ieee->UpdateHalRATRTableHandler(dev, ieee->dot11HTOperationalRateSet); -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) queue_work(ieee->wq, &ieee->associate_complete_wq); -#else - schedule_task(&ieee->associate_complete_wq); -#endif } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)) void ieee80211_associate_procedure_wq(struct work_struct *work) { struct ieee80211_device *ieee = container_of(work, struct ieee80211_device, associate_procedure_wq); -#else -void ieee80211_associate_procedure_wq(struct ieee80211_device *ieee) -{ -#endif ieee->sync_scan_hurryup = 1; #ifdef ENABLE_IPS if(ieee->ieee80211_ips_leave != NULL) @@ -1734,11 +1660,7 @@ inline void ieee80211_softmac_new_net(struct ieee80211_device *ieee, struct ieee } ieee->state = IEEE80211_ASSOCIATING; -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) queue_work(ieee->wq, &ieee->associate_procedure_wq); -#else - schedule_task(&ieee->associate_procedure_wq); -#endif }else{ if(ieee80211_is_54g(ieee->current_network) && (ieee->modulation & IEEE80211_OFDM_MODULATION)){ @@ -2332,11 +2254,7 @@ ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb, "Association response status code 0x%x\n", errcode); if(ieee->AsocRetryCount < RT_ASOC_RETRY_LIMIT) { -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) queue_work(ieee->wq, &ieee->associate_procedure_wq); -#else - schedule_task(&ieee->associate_procedure_wq); -#endif } else { ieee80211_associate_abort(ieee); } @@ -2446,11 +2364,7 @@ ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb, // notify_wx_assoc_event(ieee); //HTSetConnectBwMode(ieee, HT_CHANNEL_WIDTH_20, HT_EXTCHNL_OFFSET_NO_EXT); RemovePeerTS(ieee, header->addr2); -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) queue_work(ieee->wq, &ieee->associate_procedure_wq); -#else - schedule_task(&ieee->associate_procedure_wq); -#endif } break; case IEEE80211_STYPE_MANAGE_ACT: @@ -2687,16 +2601,11 @@ void ieee80211_start_monitor_mode(struct ieee80211_device *ieee) netif_carrier_on(ieee->dev); } } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)) void ieee80211_start_ibss_wq(struct work_struct *work) { struct delayed_work *dwork = container_of(work, struct delayed_work, work); struct ieee80211_device *ieee = container_of(dwork, struct ieee80211_device, start_ibss_wq); -#else -void ieee80211_start_ibss_wq(struct ieee80211_device *ieee) -{ -#endif /* iwconfig mode ad-hoc will schedule this and return * on the other hand this will block further iwconfig SET * operations because of the wx_sem hold. @@ -2807,11 +2716,7 @@ void ieee80211_start_ibss_wq(struct ieee80211_device *ieee) inline void ieee80211_start_ibss(struct ieee80211_device *ieee) { -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) queue_delayed_work(ieee->wq, &ieee->start_ibss_wq, 150); -#else - schedule_task(&ieee->start_ibss_wq); -#endif } /* this is called only in user context, with wx_sem held */ @@ -2873,22 +2778,22 @@ void ieee80211_disassociate(struct ieee80211_device *ieee) if(IS_DOT11D_ENABLE(ieee)) Dot11d_Reset(ieee); #endif - ieee->state = IEEE80211_NOLINK; ieee->is_set_key = false; ieee->link_change(ieee->dev); //HTSetConnectBwMode(ieee, HT_CHANNEL_WIDTH_20, HT_EXTCHNL_OFFSET_NO_EXT); - notify_wx_assoc_event(ieee); + if (ieee->state == IEEE80211_LINKED || + ieee->state == IEEE80211_ASSOCIATING) { + ieee->state = IEEE80211_NOLINK; + notify_wx_assoc_event(ieee); + } + + ieee->state = IEEE80211_NOLINK; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20)) void ieee80211_associate_retry_wq(struct work_struct *work) { struct delayed_work *dwork = container_of(work, struct delayed_work, work); struct ieee80211_device *ieee = container_of(dwork, struct ieee80211_device, associate_retry_wq); -#else -void ieee80211_associate_retry_wq(struct ieee80211_device *ieee) -{ -#endif unsigned long flags; down(&ieee->wx_sem); @@ -2990,10 +2895,8 @@ void ieee80211_stop_protocol(struct ieee80211_device *ieee, u8 shutdown) ieee80211_stop_send_beacons(ieee); del_timer_sync(&ieee->associate_timer); -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) cancel_delayed_work(&ieee->associate_retry_wq); cancel_delayed_work(&ieee->start_ibss_wq); -#endif ieee80211_stop_scan(ieee); ieee80211_disassociate(ieee); @@ -3114,11 +3017,6 @@ void ieee80211_softmac_init(struct ieee80211_device *ieee) ieee->sta_edca_param[3] = 0x002F3262; ieee->aggregation = true; ieee->enable_rx_imm_BA = 1; -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) - init_timer(&ieee->scan_timer); - ieee->scan_timer.data = (unsigned long)ieee; - ieee->scan_timer.function = ieee80211_softmac_scan_cb; -#endif ieee->tx_pending.txb = NULL; init_timer(&ieee->associate_timer); @@ -3129,16 +3027,12 @@ void ieee80211_softmac_init(struct ieee80211_device *ieee) ieee->beacon_timer.data = (unsigned long) ieee; ieee->beacon_timer.function = ieee80211_send_beacon_cb; -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) #ifdef PF_SYNCTHREAD ieee->wq = create_workqueue(DRV_NAME,0); #else ieee->wq = create_workqueue(DRV_NAME); #endif -#endif -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20) INIT_DELAYED_WORK(&ieee->start_ibss_wq,ieee80211_start_ibss_wq); INIT_WORK(&ieee->associate_complete_wq, ieee80211_associate_complete_wq); INIT_WORK(&ieee->associate_procedure_wq, ieee80211_associate_procedure_wq); @@ -3146,23 +3040,6 @@ void ieee80211_softmac_init(struct ieee80211_device *ieee) INIT_DELAYED_WORK(&ieee->associate_retry_wq, ieee80211_associate_retry_wq); INIT_WORK(&ieee->wx_sync_scan_wq,ieee80211_wx_sync_scan_wq); -#else - INIT_WORK(&ieee->start_ibss_wq,(void(*)(void*)) ieee80211_start_ibss_wq,ieee); - INIT_WORK(&ieee->associate_retry_wq,(void(*)(void*)) ieee80211_associate_retry_wq,ieee); - INIT_WORK(&ieee->associate_complete_wq,(void(*)(void*)) ieee80211_associate_complete_wq,ieee); - INIT_WORK(&ieee->associate_procedure_wq,(void(*)(void*)) ieee80211_associate_procedure_wq,ieee); - INIT_WORK(&ieee->softmac_scan_wq,(void(*)(void*)) ieee80211_softmac_scan_wq,ieee); - INIT_WORK(&ieee->wx_sync_scan_wq,(void(*)(void*)) ieee80211_wx_sync_scan_wq,ieee); -#endif - -#else - tq_init(&ieee->start_ibss_wq,(void(*)(void*)) ieee80211_start_ibss_wq,ieee); - tq_init(&ieee->associate_retry_wq,(void(*)(void*)) ieee80211_associate_retry_wq,ieee); - tq_init(&ieee->associate_complete_wq,(void(*)(void*)) ieee80211_associate_complete_wq,ieee); - tq_init(&ieee->associate_procedure_wq,(void(*)(void*)) ieee80211_associate_procedure_wq,ieee); - tq_init(&ieee->softmac_scan_wq,(void(*)(void*)) ieee80211_softmac_scan_wq,ieee); - tq_init(&ieee->wx_sync_scan_wq,(void(*)(void*)) ieee80211_wx_sync_scan_wq,ieee); -#endif sema_init(&ieee->wx_sem, 1); sema_init(&ieee->scan_sem, 1); #ifdef ENABLE_IPS @@ -3189,10 +3066,8 @@ void ieee80211_softmac_free(struct ieee80211_device *ieee) #endif del_timer_sync(&ieee->associate_timer); -#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0) cancel_delayed_work(&ieee->associate_retry_wq); destroy_workqueue(ieee->wq); -#endif up(&ieee->wx_sem); } @@ -3647,49 +3522,3 @@ void notify_wx_assoc_event(struct ieee80211_device *ieee) memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN); wireless_send_event(ieee->dev, SIOCGIWAP, &wrqu, NULL); } - -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) -//EXPORT_SYMBOL(ieee80211_get_beacon); -//EXPORT_SYMBOL(ieee80211_rtl_wake_queue); -//EXPORT_SYMBOL(ieee80211_rtl_stop_queue); -//EXPORT_SYMBOL(ieee80211_reset_queue); -//EXPORT_SYMBOL(ieee80211_softmac_stop_protocol); -//EXPORT_SYMBOL(ieee80211_softmac_start_protocol); -//EXPORT_SYMBOL(ieee80211_is_shortslot); -//EXPORT_SYMBOL(ieee80211_is_54g); -//EXPORT_SYMBOL(ieee80211_wpa_supplicant_ioctl); -//EXPORT_SYMBOL(ieee80211_ps_tx_ack); -//EXPORT_SYMBOL(ieee80211_softmac_xmit); -//EXPORT_SYMBOL(ieee80211_stop_send_beacons); -//EXPORT_SYMBOL(notify_wx_assoc_event); -//EXPORT_SYMBOL(SendDisassociation); -//EXPORT_SYMBOL(ieee80211_disassociate); -//EXPORT_SYMBOL(ieee80211_start_send_beacons); -//EXPORT_SYMBOL(ieee80211_stop_scan); -//EXPORT_SYMBOL(ieee80211_send_probe_requests); -//EXPORT_SYMBOL(ieee80211_softmac_scan_syncro); -//EXPORT_SYMBOL(ieee80211_start_scan_syncro); -#else -EXPORT_SYMBOL_NOVERS(ieee80211_get_beacon); -EXPORT_SYMBOL_NOVERS(ieee80211_rtl_wake_queue); -EXPORT_SYMBOL_NOVERS(ieee80211_rtl_stop_queue); -EXPORT_SYMBOL_NOVERS(ieee80211_reset_queue); -EXPORT_SYMBOL_NOVERS(ieee80211_softmac_stop_protocol); -EXPORT_SYMBOL_NOVERS(ieee80211_softmac_start_protocol); -EXPORT_SYMBOL_NOVERS(ieee80211_is_shortslot); -EXPORT_SYMBOL_NOVERS(ieee80211_is_54g); -EXPORT_SYMBOL_NOVERS(ieee80211_wpa_supplicant_ioctl); -EXPORT_SYMBOL_NOVERS(ieee80211_ps_tx_ack); -EXPORT_SYMBOL_NOVERS(ieee80211_softmac_xmit); -EXPORT_SYMBOL_NOVERS(ieee80211_stop_send_beacons); -EXPORT_SYMBOL_NOVERS(notify_wx_assoc_event); -EXPORT_SYMBOL_NOVERS(SendDisassociation); -EXPORT_SYMBOL_NOVERS(ieee80211_disassociate); -EXPORT_SYMBOL_NOVERS(ieee80211_start_send_beacons); -EXPORT_SYMBOL_NOVERS(ieee80211_stop_scan); -EXPORT_SYMBOL_NOVERS(ieee80211_send_probe_requests); -EXPORT_SYMBOL_NOVERS(ieee80211_softmac_scan_syncro); -EXPORT_SYMBOL_NOVERS(ieee80211_start_scan_syncro); -EXPORT_SYMBOL_NOVERS(ieee80211_sta_ps_send_null_frame); -EXPORT_SYMBOL_NOVERS(ieee80211_sta_ps_send_pspoll_frame); -#endif |