diff options
Diffstat (limited to 'drivers/staging/rtl8192e/rtllib_softmac_wx.c')
-rw-r--r-- | drivers/staging/rtl8192e/rtllib_softmac_wx.c | 85 |
1 files changed, 20 insertions, 65 deletions
diff --git a/drivers/staging/rtl8192e/rtllib_softmac_wx.c b/drivers/staging/rtl8192e/rtllib_softmac_wx.c index 1f2fa711e60b..2de63d1f2009 100644 --- a/drivers/staging/rtl8192e/rtllib_softmac_wx.c +++ b/drivers/staging/rtl8192e/rtllib_softmac_wx.c @@ -15,16 +15,6 @@ #include "rtllib.h" #include "dot11d.h" -/* FIXME: add A freqs */ - -const long rtllib_wlan_frequencies[] = { - 2412, 2417, 2422, 2427, - 2432, 2437, 2442, 2447, - 2452, 2457, 2462, 2467, - 2472, 2484 -}; -EXPORT_SYMBOL(rtllib_wlan_frequencies); - int rtllib_wx_set_freq(struct rtllib_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *b) @@ -43,15 +33,8 @@ int rtllib_wx_set_freq(struct rtllib_device *ieee, struct iw_request_info *a, if (fwrq->e == 1) { if ((fwrq->m >= (int)2.412e8 && fwrq->m <= (int)2.487e8)) { - int f = fwrq->m / 100000; - int c = 0; - - while ((c < 14) && (f != rtllib_wlan_frequencies[c])) - c++; - - /* hack to fall through */ + fwrq->m = ieee80211_freq_khz_to_channel(fwrq->m / 100); fwrq->e = 0; - fwrq->m = c + 1; } } @@ -70,7 +53,7 @@ int rtllib_wx_set_freq(struct rtllib_device *ieee, struct iw_request_info *a, if (ieee->iw_mode == IW_MODE_ADHOC || ieee->iw_mode == IW_MODE_MASTER) - if (ieee->state == RTLLIB_LINKED) { + if (ieee->link_state == MAC80211_LINKED) { rtllib_stop_send_beacons(ieee); rtllib_start_send_beacons(ieee); } @@ -83,7 +66,6 @@ out: } EXPORT_SYMBOL(rtllib_wx_set_freq); - int rtllib_wx_get_freq(struct rtllib_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *b) @@ -92,8 +74,8 @@ int rtllib_wx_get_freq(struct rtllib_device *ieee, if (ieee->current_network.channel == 0) return -1; - fwrq->m = rtllib_wlan_frequencies[ieee->current_network.channel-1] * - 100000; + fwrq->m = ieee80211_channel_to_freq_khz(ieee->current_network.channel, + NL80211_BAND_2GHZ) * 100; fwrq->e = 1; return 0; } @@ -113,8 +95,8 @@ int rtllib_wx_get_wap(struct rtllib_device *ieee, /* We want avoid to give to the user inconsistent infos*/ spin_lock_irqsave(&ieee->lock, flags); - if (ieee->state != RTLLIB_LINKED && - ieee->state != RTLLIB_LINKED_SCANNING && + if (ieee->link_state != MAC80211_LINKED && + ieee->link_state != MAC80211_LINKED_SCANNING && ieee->wap_set == 0) eth_zero_addr(wrqu->ap_addr.sa_data); @@ -128,13 +110,11 @@ int rtllib_wx_get_wap(struct rtllib_device *ieee, } EXPORT_SYMBOL(rtllib_wx_get_wap); - int rtllib_wx_set_wap(struct rtllib_device *ieee, struct iw_request_info *info, union iwreq_data *awrq, char *extra) { - int ret = 0; unsigned long flags; @@ -164,7 +144,6 @@ int rtllib_wx_set_wap(struct rtllib_device *ieee, goto out; } - if (ifup) rtllib_stop_protocol(ieee, true); @@ -205,8 +184,8 @@ int rtllib_wx_get_essid(struct rtllib_device *ieee, struct iw_request_info *a, goto out; } - if (ieee->state != RTLLIB_LINKED && - ieee->state != RTLLIB_LINKED_SCANNING && + if (ieee->link_state != MAC80211_LINKED && + ieee->link_state != MAC80211_LINKED_SCANNING && ieee->ssid_set == 0) { ret = -1; goto out; @@ -220,7 +199,6 @@ out: spin_unlock_irqrestore(&ieee->lock, flags); return ret; - } EXPORT_SYMBOL(rtllib_wx_get_essid); @@ -228,10 +206,9 @@ int rtllib_wx_set_rate(struct rtllib_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - u32 target_rate = wrqu->bitrate.value; - ieee->rate = target_rate/100000; + ieee->rate = target_rate / 100000; return 0; } EXPORT_SYMBOL(rtllib_wx_set_rate); @@ -250,14 +227,13 @@ int rtllib_wx_get_rate(struct rtllib_device *ieee, } EXPORT_SYMBOL(rtllib_wx_get_rate); - int rtllib_wx_set_rts(struct rtllib_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - if (wrqu->rts.disabled || !wrqu->rts.fixed) + if (wrqu->rts.disabled || !wrqu->rts.fixed) { ieee->rts = DEFAULT_RTS_THRESHOLD; - else { + } else { if (wrqu->rts.value < MIN_RTS_THRESHOLD || wrqu->rts.value > MAX_RTS_THRESHOLD) return -EINVAL; @@ -332,6 +308,7 @@ void rtllib_wx_sync_scan_wq(void *data) enum ht_channel_width bandwidth = 0; int b40M = 0; + mutex_lock(&ieee->wx_mutex); if (!(ieee->softmac_features & IEEE_SOFTMAC_SCAN)) { rtllib_start_scan_syncro(ieee, 0); goto out; @@ -339,17 +316,14 @@ void rtllib_wx_sync_scan_wq(void *data) chan = ieee->current_network.channel; - ieee->LeisurePSLeave(ieee->dev); + ieee->leisure_ps_leave(ieee->dev); /* notify AP to be in PS mode */ rtllib_sta_ps_send_null_frame(ieee, 1); rtllib_sta_ps_send_null_frame(ieee, 1); rtllib_stop_all_queues(ieee); - - if (ieee->data_hard_stop) - ieee->data_hard_stop(ieee->dev); rtllib_stop_send_beacons(ieee); - ieee->state = RTLLIB_LINKED_SCANNING; + ieee->link_state = MAC80211_LINKED_SCANNING; ieee->link_change(ieee->dev); /* wait for ps packet to be kicked out successfully */ msleep(50); @@ -361,7 +335,7 @@ void rtllib_wx_sync_scan_wq(void *data) b40M = 1; chan_offset = ieee->ht_info->CurSTAExtChnlOffset; bandwidth = (enum ht_channel_width)ieee->ht_info->bCurBW40MHz; - ieee->SetBWModeHandler(ieee->dev, HT_CHANNEL_WIDTH_20, + ieee->set_bw_mode_handler(ieee->dev, HT_CHANNEL_WIDTH_20, HT_EXTCHNL_OFFSET_NO_EXT); } @@ -374,14 +348,14 @@ void rtllib_wx_sync_scan_wq(void *data) ieee->set_chan(ieee->dev, chan - 2); else ieee->set_chan(ieee->dev, chan); - ieee->SetBWModeHandler(ieee->dev, bandwidth, chan_offset); + ieee->set_bw_mode_handler(ieee->dev, bandwidth, chan_offset); } else { ieee->set_chan(ieee->dev, chan); } ieee->ScanOperationBackupHandler(ieee->dev, SCAN_OPT_RESTORE); - ieee->state = RTLLIB_LINKED; + ieee->link_state = MAC80211_LINKED; ieee->link_change(ieee->dev); /* Notify AP that I wake up again */ @@ -392,10 +366,6 @@ void rtllib_wx_sync_scan_wq(void *data) ieee->link_detect_info.NumRecvBcnInPeriod = 1; ieee->link_detect_info.NumRecvDataInPeriod = 1; } - - if (ieee->data_hard_resume) - ieee->data_hard_resume(ieee->dev); - if (ieee->iw_mode == IW_MODE_ADHOC || ieee->iw_mode == IW_MODE_MASTER) rtllib_start_send_beacons(ieee); @@ -403,7 +373,6 @@ void rtllib_wx_sync_scan_wq(void *data) out: mutex_unlock(&ieee->wx_mutex); - } int rtllib_wx_set_scan(struct rtllib_device *ieee, struct iw_request_info *a, @@ -411,21 +380,18 @@ int rtllib_wx_set_scan(struct rtllib_device *ieee, struct iw_request_info *a, { int ret = 0; - mutex_lock(&ieee->wx_mutex); - if (ieee->iw_mode == IW_MODE_MONITOR || !(ieee->proto_started)) { ret = -1; goto out; } - if (ieee->state == RTLLIB_LINKED) { + if (ieee->link_state == MAC80211_LINKED) { schedule_work(&ieee->wx_sync_scan_wq); /* intentionally forget to up sem */ return 0; } out: - mutex_unlock(&ieee->wx_mutex); return ret; } EXPORT_SYMBOL(rtllib_wx_set_scan); @@ -434,7 +400,6 @@ int rtllib_wx_set_essid(struct rtllib_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *extra) { - int ret = 0, len; short proto_started; unsigned long flags; @@ -454,7 +419,6 @@ int rtllib_wx_set_essid(struct rtllib_device *ieee, if (proto_started) rtllib_stop_protocol(ieee, true); - /* this is just to be sure that the GET wx callback * has consistent infos. not needed otherwise */ @@ -492,7 +456,6 @@ int rtllib_wx_set_rawtx(struct rtllib_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - int *parms = (int *)extra; int enable = (parms[0] > 0); short prev = ieee->raw_tx; @@ -508,12 +471,8 @@ int rtllib_wx_set_rawtx(struct rtllib_device *ieee, ieee->raw_tx ? "enabled" : "disabled"); if (ieee->iw_mode == IW_MODE_MONITOR) { - if (prev == 0 && ieee->raw_tx) { - if (ieee->data_hard_resume) - ieee->data_hard_resume(ieee->dev); - + if (prev == 0 && ieee->raw_tx) netif_carrier_on(ieee->dev); - } if (prev && ieee->raw_tx == 1) netif_carrier_off(ieee->dev); @@ -530,14 +489,13 @@ int rtllib_wx_get_name(struct rtllib_device *ieee, struct iw_request_info *info, { const char *b = ieee->modulation & RTLLIB_CCK_MODULATION ? "b" : ""; const char *g = ieee->modulation & RTLLIB_OFDM_MODULATION ? "g" : ""; - const char *n = ieee->mode & (IEEE_N_24G | IEEE_N_5G) ? "n" : ""; + const char *n = ieee->mode & (WIRELESS_MODE_N_24G) ? "n" : ""; scnprintf(wrqu->name, sizeof(wrqu->name), "802.11%s%s%s", b, g, n); return 0; } EXPORT_SYMBOL(rtllib_wx_get_name); - /* this is mostly stolen from hostap */ int rtllib_wx_set_power(struct rtllib_device *ieee, struct iw_request_info *info, @@ -583,12 +541,10 @@ int rtllib_wx_set_power(struct rtllib_device *ieee, default: ret = -EINVAL; goto exit; - } exit: mutex_unlock(&ieee->wx_mutex); return ret; - } EXPORT_SYMBOL(rtllib_wx_set_power); @@ -625,6 +581,5 @@ int rtllib_wx_get_power(struct rtllib_device *ieee, exit: mutex_unlock(&ieee->wx_mutex); return 0; - } EXPORT_SYMBOL(rtllib_wx_get_power); |