Loading drivers/staging/rtl8192e/rtl_core.c +0 −13 Original line number Diff line number Diff line Loading @@ -1387,14 +1387,6 @@ short rtl8192_init(struct net_device *dev) priv->ops->init_adapter_variable(dev); rtl8192_get_channel_map(dev); #ifdef CONFIG_CFG_80211 /* channel map setting for the cfg80211 style */ { struct r8192_priv* priv = rtllib_priv(dev); rtllib_set_geo(priv); } #endif init_hal_dm(dev); init_timer(&priv->watch_dog_timer); Loading Loading @@ -3093,11 +3085,6 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev, goto fail1; } #ifdef CONFIG_CFG_80211 if (!rtl8192_register_wiphy_dev(dev)) goto fail1; #endif netif_carrier_off(dev); netif_stop_queue(dev); Loading drivers/staging/rtl8192e/rtl_core.h +0 −13 Original line number Diff line number Diff line Loading @@ -56,10 +56,6 @@ #include "r8190P_def.h" #include "r8192E_dev.h" #ifdef CONFIG_CFG_80211 #include "rtl_regd.h" #endif #ifdef CONFIG_RTL_RFKILL #include "rtl_rfkill.h" #endif Loading Loading @@ -660,11 +656,6 @@ typedef struct r8192_priv void (*rf_close)(struct net_device *dev); void (*rf_init)(struct net_device *dev); #ifdef CONFIG_CFG_80211 struct ieee80211_rate rates[IEEE80211_NUM_BANDS][RTL_RATE_MAX]; struct ieee80211_supported_band bands[IEEE80211_NUM_BANDS]; #endif rx_desc *rx_ring[MAX_RX_QUEUE]; struct sk_buff *rx_buf[MAX_RX_QUEUE][MAX_RX_COUNT]; dma_addr_t rx_ring_dma[MAX_RX_QUEUE]; Loading Loading @@ -1144,8 +1135,4 @@ ActUpdateChannelAccessSetting( PCHANNEL_ACCESS_SETTING ChnlAccessSetting ); #ifdef CONFIG_CFG_80211 struct net_device *wiphy_to_net_device(struct wiphy *wiphy); #endif #endif drivers/staging/rtl8192e/rtllib.h +0 −149 Original line number Diff line number Diff line Loading @@ -35,10 +35,6 @@ #include <linux/delay.h> #include <linux/wireless.h> #ifdef CONFIG_CFG_80211 #include <net/cfg80211.h> #endif #include "rtl819x_HT.h" #include "rtl819x_BA.h" #include "rtl819x_TS.h" Loading Loading @@ -854,7 +850,6 @@ enum _REG_PREAMBLE_MODE{ #define WLAN_GET_SEQ_FRAG(seq) ((seq) & RTLLIB_SCTL_FRAG) #define WLAN_GET_SEQ_SEQ(seq) (((seq) & RTLLIB_SCTL_SEQ) >> 4) #ifndef CONFIG_CFG_80211 /* Authentication algorithms */ #define WLAN_AUTH_OPEN 0 #define WLAN_AUTH_SHARED_KEY 1 Loading Loading @@ -942,7 +937,6 @@ enum rtllib_reasoncode { WLAN_REASON_IEEE8021X_FAILED = 23, WLAN_REASON_CIPHER_SUITE_REJECTED = 24, }; #endif #define RTLLIB_STATMASK_SIGNAL (1<<0) #define RTLLIB_STATMASK_RSSI (1<<1) Loading Loading @@ -2106,145 +2100,6 @@ typedef struct _RT_PMKID_LIST u16 ssid_length; } RT_PMKID_LIST, *PRT_PMKID_LIST; #ifdef CONFIG_CFG_80211 enum { LIBIPW_CH_PASSIVE_ONLY = (1 << 0), LIBIPW_CH_80211H_RULES = (1 << 1), LIBIPW_CH_B_ONLY = (1 << 2), LIBIPW_CH_NO_IBSS = (1 << 3), LIBIPW_CH_UNIFORM_SPREADING = (1 << 4), LIBIPW_CH_RADAR_DETECT = (1 << 5), LIBIPW_CH_INVALID = (1 << 6), }; struct rtllib_channel { u32 freq; u8 channel; u8 flags; u8 max_power; }; #define RTLLIB_24GHZ_MIN_CHANNEL 1 #define RTLLIB_24GHZ_MAX_CHANNEL 14 #define RTLLIB_24GHZ_CHANNELS (RTLLIB_24GHZ_MAX_CHANNEL - \ RTLLIB_24GHZ_MIN_CHANNEL + 1) struct reg_dmn_pair_mapping { u16 regDmnEnum; u16 reg_5ghz_ctl; u16 reg_2ghz_ctl; }; struct rtl_regulatory { char alpha2[2]; u16 country_code; u16 max_power_level; u32 tp_scale; u16 current_rd; u16 current_rd_ext; int16_t power_limit; struct reg_dmn_pair_mapping *regpair; }; struct ieee80211_bss { /* Yes, this is a hack */ struct cfg80211_bss cbss; /* don't want to look up all the time */ size_t ssid_len; u8 ssid[IEEE80211_MAX_SSID_LEN]; u8 dtim_period; bool wmm_used; unsigned long last_probe_resp; #ifdef CONFIG_MAC80211_MESH u8 *mesh_id; size_t mesh_id_len; u8 *mesh_cfg; #endif #define IEEE80211_MAX_SUPP_RATES 32 u8 supp_rates[IEEE80211_MAX_SUPP_RATES]; size_t supp_rates_len; /* * During assocation, we save an ERP value from a probe response so * that we can feed ERP info to the driver when handling the * association completes. these fields probably won't be up-to-date * otherwise, you probably don't want to use them. */ bool has_erp_value; u8 erp_value; }; /* Parsed Information Elements */ struct ieee802_11_elems { u8 *ie_start; size_t total_len; /* pointers to IEs */ u8 *ssid; u8 *supp_rates; u8 *fh_params; u8 *ds_params; u8 *cf_params; struct ieee80211_tim_ie *tim; u8 *ibss_params; u8 *challenge; u8 *wpa; u8 *rsn; u8 *erp_info; u8 *ext_supp_rates; u8 *wmm_info; u8 *wmm_param; struct ieee80211_ht_cap *ht_cap_elem; struct ieee80211_ht_info *ht_info_elem; u8 *mesh_config; u8 *mesh_id; u8 *peer_link; u8 *preq; u8 *prep; u8 *perr; u8 *ch_switch_elem; u8 *country_elem; u8 *pwr_constr_elem; u8 *quiet_elem; /* first quite element */ u8 *timeout_int; /* length of them, respectively */ u8 ssid_len; u8 supp_rates_len; u8 fh_params_len; u8 ds_params_len; u8 cf_params_len; u8 tim_len; u8 ibss_params_len; u8 challenge_len; u8 wpa_len; u8 rsn_len; u8 erp_info_len; u8 ext_supp_rates_len; u8 wmm_info_len; u8 wmm_param_len; u8 mesh_config_len; u8 mesh_id_len; u8 peer_link_len; u8 preq_len; u8 prep_len; u8 perr_len; u8 ch_switch_elem_len; u8 country_elem_len; u8 pwr_constr_elem_len; u8 quiet_elem_len; u8 num_of_quiet_elem; /* can be more the one */ u8 timeout_int_len; }; #endif typedef struct _RT_INTEL_PROMISCUOUS_MODE_INFO { bool bPromiscuousOn; bool bFilterSourceStationFrame; Loading Loading @@ -2283,10 +2138,6 @@ struct rtllib_device { HT_EXTCHNL_OFFSET chan_offset_bk; HT_CHANNEL_WIDTH bandwidth_bk; u8 hwscan_sem_up; #ifdef CONFIG_CFG_80211 struct wireless_dev wdev; struct rtl_regulatory regulatory; #endif u8 CntAfterLink; RT_OP_MODE OpMode; Loading drivers/staging/rtl8192e/rtllib_module.c +0 −65 Original line number Diff line number Diff line Loading @@ -56,26 +56,6 @@ #define DRV_NAME "rtllib_92e" #ifdef CONFIG_CFG_80211 #ifdef CONFIG_RTL_RFKILL static inline void rtllib_rfkill_poll(struct wiphy *wiphy) { struct rtllib_device *rtllib = NULL; rtllib = (struct rtllib_device *)wiphy_priv(wiphy); rtllib = (struct rtllib_device *)netdev_priv_rsl(rtllib->dev); if (rtllib->rtllib_rfkill_poll) rtllib->rtllib_rfkill_poll(rtllib->dev); } #else static inline void rtllib_rfkill_poll(struct wiphy *wiphy) {} #endif struct cfg80211_ops rtllib_config_ops = {.rfkill_poll = rtllib_rfkill_poll }; void *rtllib_wiphy_privid = &rtllib_wiphy_privid; #endif void _setup_timer( struct timer_list* ptimer, void* fun, unsigned long data ) { ptimer->function = fun; Loading Loading @@ -121,43 +101,6 @@ static inline void rtllib_networks_initialize(struct rtllib_device *ieee) list_add_tail(&ieee->networks[i].list, &ieee->network_free_list); } #if defined CONFIG_CFG_80211 static bool rtllib_wdev_alloc(struct rtllib_device *ieee, int sizeof_priv) { int priv_size; struct rtllib_device *rtllib = NULL; priv_size = ALIGN(sizeof(struct rtllib_device),NETDEV_ALIGN) + sizeof_priv; ieee->wdev.wiphy = wiphy_new(&rtllib_config_ops, priv_size); if (!ieee->wdev.wiphy) { RTLLIB_ERROR("Unable to allocate wiphy.\n"); goto out_err_new; } rtllib = (struct rtllib_device *)wiphy_priv(ieee->wdev.wiphy); rtllib->dev = ieee->dev; ieee->dev->ieee80211_ptr = &ieee->wdev; ieee->wdev.iftype = NL80211_IFTYPE_STATION; /* Fill-out wiphy structure bits we know... Not enough info * here to call set_wiphy_dev or set MAC address or channel info * -- have to do that in ->ndo_init... */ ieee->wdev.wiphy->privid = rtllib_wiphy_privid; ieee->wdev.wiphy->max_scan_ssids = 1; ieee->wdev.wiphy->max_scan_ie_len = 0; ieee->wdev.wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC); return true; out_err_new: wiphy_free(ieee->wdev.wiphy); return false; } #endif struct net_device *alloc_rtllib(int sizeof_priv) { struct rtllib_device *ieee = NULL; Loading @@ -175,10 +118,6 @@ struct net_device *alloc_rtllib(int sizeof_priv) memset(ieee, 0, sizeof(struct rtllib_device)+sizeof_priv); ieee->dev = dev; #ifdef CONFIG_CFG_80211 if (!rtllib_wdev_alloc(ieee, sizeof_priv)) goto failed; #endif err = rtllib_networks_allocate(ieee); if (err) { RTLLIB_ERROR("Unable to allocate beacon storage: %d\n", Loading Loading @@ -277,10 +216,6 @@ void free_rtllib(struct net_device *dev) } rtllib_networks_free(ieee); #ifdef CONFIG_CFG_80211 wiphy_unregister(ieee->wdev.wiphy); wiphy_free(ieee->wdev.wiphy); #endif free_netdev(dev); } Loading drivers/staging/rtl8192e/rtllib_rx.c +0 −272 Original line number Diff line number Diff line Loading @@ -45,276 +45,6 @@ #include "rtllib.h" #include "dot11d.h" #if defined CONFIG_CFG_80211 #include <linux/crc32.h> struct ieee80211_channel *rtllib_get_channel(struct wiphy *wiphy, int freq) { enum ieee80211_band band; struct ieee80211_supported_band *sband; int i; for (band = 0; band < IEEE80211_NUM_BANDS; band++) { sband = wiphy->bands[band]; if (!sband) continue; for (i = 0; i < sband->n_channels; i++) { if (sband->channels[i].center_freq == freq) return &sband->channels[i]; } } return NULL; } int rtllib_channel_to_frequency(int chan) { if (chan < 14) return 2407 + chan * 5; if (chan == 14) return 2484; /* FIXME: 802.11j 17.3.8.3.2 */ return (chan + 1000) * 5; } u32 rtllib_parse_elems_crc(u8 *start, size_t len, struct ieee802_11_elems *elems, u64 filter, u32 crc) { size_t left = len; u8 *pos = start; bool calc_crc = filter != 0; memset(elems, 0, sizeof(*elems)); elems->ie_start = start; elems->total_len = len; while (left >= 2) { u8 id, elen; id = *pos++; elen = *pos++; left -= 2; if (elen > left) break; if (calc_crc && id < 64 && (filter & BIT(id))) crc = crc32_be(crc, pos - 2, elen + 2); switch (id) { case WLAN_EID_SSID: elems->ssid = pos; elems->ssid_len = elen; break; case WLAN_EID_SUPP_RATES: elems->supp_rates = pos; elems->supp_rates_len = elen; break; case WLAN_EID_FH_PARAMS: elems->fh_params = pos; elems->fh_params_len = elen; break; case WLAN_EID_DS_PARAMS: elems->ds_params = pos; elems->ds_params_len = elen; break; case WLAN_EID_CF_PARAMS: elems->cf_params = pos; elems->cf_params_len = elen; break; case WLAN_EID_TIM: if (elen >= sizeof(struct ieee80211_tim_ie)) { elems->tim = (void *)pos; elems->tim_len = elen; } break; case WLAN_EID_IBSS_PARAMS: elems->ibss_params = pos; elems->ibss_params_len = elen; break; case WLAN_EID_CHALLENGE: elems->challenge = pos; elems->challenge_len = elen; break; case WLAN_EID_VENDOR_SPECIFIC: if (elen >= 4 && pos[0] == 0x00 && pos[1] == 0x50 && pos[2] == 0xf2) { /* Microsoft OUI (00:50:F2) */ if (calc_crc) crc = crc32_be(crc, pos - 2, elen + 2); if (pos[3] == 1) { /* OUI Type 1 - WPA IE */ elems->wpa = pos; elems->wpa_len = elen; } else if (elen >= 5 && pos[3] == 2) { /* OUI Type 2 - WMM IE */ if (pos[4] == 0) { elems->wmm_info = pos; elems->wmm_info_len = elen; } else if (pos[4] == 1) { elems->wmm_param = pos; elems->wmm_param_len = elen; } } } break; case WLAN_EID_RSN: elems->rsn = pos; elems->rsn_len = elen; break; case WLAN_EID_ERP_INFO: elems->erp_info = pos; elems->erp_info_len = elen; break; case WLAN_EID_EXT_SUPP_RATES: elems->ext_supp_rates = pos; elems->ext_supp_rates_len = elen; break; case WLAN_EID_HT_CAPABILITY: if (elen >= sizeof(struct ieee80211_ht_cap)) elems->ht_cap_elem = (void *)pos; break; case WLAN_EID_HT_INFORMATION: if (elen >= sizeof(struct ieee80211_ht_info)) elems->ht_info_elem = (void *)pos; break; case WLAN_EID_MESH_ID: elems->mesh_id = pos; elems->mesh_id_len = elen; break; case WLAN_EID_MESH_CONFIG: elems->mesh_config = pos; elems->mesh_config_len = elen; break; case WLAN_EID_PEER_LINK: elems->peer_link = pos; elems->peer_link_len = elen; break; case WLAN_EID_PREQ: elems->preq = pos; elems->preq_len = elen; break; case WLAN_EID_PREP: elems->prep = pos; elems->prep_len = elen; break; case WLAN_EID_PERR: elems->perr = pos; elems->perr_len = elen; break; case WLAN_EID_CHANNEL_SWITCH: elems->ch_switch_elem = pos; elems->ch_switch_elem_len = elen; break; case WLAN_EID_QUIET: if (!elems->quiet_elem) { elems->quiet_elem = pos; elems->quiet_elem_len = elen; } elems->num_of_quiet_elem++; break; case WLAN_EID_COUNTRY: elems->country_elem = pos; elems->country_elem_len = elen; break; case WLAN_EID_PWR_CONSTRAINT: elems->pwr_constr_elem = pos; elems->pwr_constr_elem_len = elen; break; case WLAN_EID_TIMEOUT_INTERVAL: elems->timeout_int = pos; elems->timeout_int_len = elen; break; default: break; } left -= elen; pos += elen; } return crc; } void rtllib_parse_elems(u8 *start, size_t len, struct ieee802_11_elems *elems) { rtllib_parse_elems_crc(start, len, elems, 0, 0); } void ieee80211_scan_rx(struct rtllib_device *ieee, struct sk_buff *skb, struct rtllib_rx_stats *rx_status) { struct rtllib_hdr_4addr *header = (struct rtllib_hdr_4addr *)skb->data ; struct ieee80211_mgmt *mgmt; struct ieee80211_bss *bss; u8 *elements; struct ieee80211_channel *channel; size_t baselen; int freq; __le16 fc; bool presp, beacon = false; struct ieee802_11_elems elems; s32 signal = 0; if (skb->len < 2) return; mgmt = (struct ieee80211_mgmt *) skb->data; fc = mgmt->frame_control; if (skb->len < 24) return; presp = (WLAN_FC_GET_STYPE(header->frame_ctl) == RTLLIB_STYPE_PROBE_RESP); if (presp) { /* ignore ProbeResp to foreign address */ if (memcmp(mgmt->da, ieee->dev->dev_addr, ETH_ALEN)) return ;; presp = true; elements = mgmt->u.probe_resp.variable; baselen = offsetof(struct ieee80211_mgmt, u.probe_resp.variable); } else { beacon = (WLAN_FC_GET_STYPE(header->frame_ctl) == RTLLIB_STYPE_BEACON); baselen = offsetof(struct ieee80211_mgmt, u.beacon.variable); elements = mgmt->u.beacon.variable; } if (!presp && !beacon) return; if (baselen > skb->len) return; rtllib_parse_elems(elements, skb->len - baselen, &elems); if (elems.ds_params && elems.ds_params_len == 1) freq = rtllib_channel_to_frequency(elems.ds_params[0]); else return; channel = rtllib_get_channel(ieee->wdev.wiphy, freq); if (!channel || channel->flags & IEEE80211_CHAN_DISABLED) return; signal = rx_status->signal * 100; bss = (void *)cfg80211_inform_bss_frame(ieee->wdev.wiphy, channel, mgmt, skb->len, signal, GFP_ATOMIC); return; } #endif static inline void rtllib_monitor_rx(struct rtllib_device *ieee, struct sk_buff *skb,struct rtllib_rx_stats *rx_status, size_t hdr_length) Loading Loading @@ -499,7 +229,6 @@ rtllib_rx_frame_mgmt(struct rtllib_device *ieee, struct sk_buff *skb, return 0; } #ifndef CONFIG_CFG_80211 /* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */ /* Ethernet-II snap header (RFC1042 for most EtherTypes) */ static unsigned char rfc1042_header[] = Loading @@ -508,7 +237,6 @@ static unsigned char rfc1042_header[] = static unsigned char bridge_tunnel_header[] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 }; /* No encapsulation header if EtherType < 0x600 (=length) */ #endif /* Called by rtllib_rx_frame_decrypt */ static int rtllib_is_eapol_frame(struct rtllib_device *ieee, Loading Loading
drivers/staging/rtl8192e/rtl_core.c +0 −13 Original line number Diff line number Diff line Loading @@ -1387,14 +1387,6 @@ short rtl8192_init(struct net_device *dev) priv->ops->init_adapter_variable(dev); rtl8192_get_channel_map(dev); #ifdef CONFIG_CFG_80211 /* channel map setting for the cfg80211 style */ { struct r8192_priv* priv = rtllib_priv(dev); rtllib_set_geo(priv); } #endif init_hal_dm(dev); init_timer(&priv->watch_dog_timer); Loading Loading @@ -3093,11 +3085,6 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev, goto fail1; } #ifdef CONFIG_CFG_80211 if (!rtl8192_register_wiphy_dev(dev)) goto fail1; #endif netif_carrier_off(dev); netif_stop_queue(dev); Loading
drivers/staging/rtl8192e/rtl_core.h +0 −13 Original line number Diff line number Diff line Loading @@ -56,10 +56,6 @@ #include "r8190P_def.h" #include "r8192E_dev.h" #ifdef CONFIG_CFG_80211 #include "rtl_regd.h" #endif #ifdef CONFIG_RTL_RFKILL #include "rtl_rfkill.h" #endif Loading Loading @@ -660,11 +656,6 @@ typedef struct r8192_priv void (*rf_close)(struct net_device *dev); void (*rf_init)(struct net_device *dev); #ifdef CONFIG_CFG_80211 struct ieee80211_rate rates[IEEE80211_NUM_BANDS][RTL_RATE_MAX]; struct ieee80211_supported_band bands[IEEE80211_NUM_BANDS]; #endif rx_desc *rx_ring[MAX_RX_QUEUE]; struct sk_buff *rx_buf[MAX_RX_QUEUE][MAX_RX_COUNT]; dma_addr_t rx_ring_dma[MAX_RX_QUEUE]; Loading Loading @@ -1144,8 +1135,4 @@ ActUpdateChannelAccessSetting( PCHANNEL_ACCESS_SETTING ChnlAccessSetting ); #ifdef CONFIG_CFG_80211 struct net_device *wiphy_to_net_device(struct wiphy *wiphy); #endif #endif
drivers/staging/rtl8192e/rtllib.h +0 −149 Original line number Diff line number Diff line Loading @@ -35,10 +35,6 @@ #include <linux/delay.h> #include <linux/wireless.h> #ifdef CONFIG_CFG_80211 #include <net/cfg80211.h> #endif #include "rtl819x_HT.h" #include "rtl819x_BA.h" #include "rtl819x_TS.h" Loading Loading @@ -854,7 +850,6 @@ enum _REG_PREAMBLE_MODE{ #define WLAN_GET_SEQ_FRAG(seq) ((seq) & RTLLIB_SCTL_FRAG) #define WLAN_GET_SEQ_SEQ(seq) (((seq) & RTLLIB_SCTL_SEQ) >> 4) #ifndef CONFIG_CFG_80211 /* Authentication algorithms */ #define WLAN_AUTH_OPEN 0 #define WLAN_AUTH_SHARED_KEY 1 Loading Loading @@ -942,7 +937,6 @@ enum rtllib_reasoncode { WLAN_REASON_IEEE8021X_FAILED = 23, WLAN_REASON_CIPHER_SUITE_REJECTED = 24, }; #endif #define RTLLIB_STATMASK_SIGNAL (1<<0) #define RTLLIB_STATMASK_RSSI (1<<1) Loading Loading @@ -2106,145 +2100,6 @@ typedef struct _RT_PMKID_LIST u16 ssid_length; } RT_PMKID_LIST, *PRT_PMKID_LIST; #ifdef CONFIG_CFG_80211 enum { LIBIPW_CH_PASSIVE_ONLY = (1 << 0), LIBIPW_CH_80211H_RULES = (1 << 1), LIBIPW_CH_B_ONLY = (1 << 2), LIBIPW_CH_NO_IBSS = (1 << 3), LIBIPW_CH_UNIFORM_SPREADING = (1 << 4), LIBIPW_CH_RADAR_DETECT = (1 << 5), LIBIPW_CH_INVALID = (1 << 6), }; struct rtllib_channel { u32 freq; u8 channel; u8 flags; u8 max_power; }; #define RTLLIB_24GHZ_MIN_CHANNEL 1 #define RTLLIB_24GHZ_MAX_CHANNEL 14 #define RTLLIB_24GHZ_CHANNELS (RTLLIB_24GHZ_MAX_CHANNEL - \ RTLLIB_24GHZ_MIN_CHANNEL + 1) struct reg_dmn_pair_mapping { u16 regDmnEnum; u16 reg_5ghz_ctl; u16 reg_2ghz_ctl; }; struct rtl_regulatory { char alpha2[2]; u16 country_code; u16 max_power_level; u32 tp_scale; u16 current_rd; u16 current_rd_ext; int16_t power_limit; struct reg_dmn_pair_mapping *regpair; }; struct ieee80211_bss { /* Yes, this is a hack */ struct cfg80211_bss cbss; /* don't want to look up all the time */ size_t ssid_len; u8 ssid[IEEE80211_MAX_SSID_LEN]; u8 dtim_period; bool wmm_used; unsigned long last_probe_resp; #ifdef CONFIG_MAC80211_MESH u8 *mesh_id; size_t mesh_id_len; u8 *mesh_cfg; #endif #define IEEE80211_MAX_SUPP_RATES 32 u8 supp_rates[IEEE80211_MAX_SUPP_RATES]; size_t supp_rates_len; /* * During assocation, we save an ERP value from a probe response so * that we can feed ERP info to the driver when handling the * association completes. these fields probably won't be up-to-date * otherwise, you probably don't want to use them. */ bool has_erp_value; u8 erp_value; }; /* Parsed Information Elements */ struct ieee802_11_elems { u8 *ie_start; size_t total_len; /* pointers to IEs */ u8 *ssid; u8 *supp_rates; u8 *fh_params; u8 *ds_params; u8 *cf_params; struct ieee80211_tim_ie *tim; u8 *ibss_params; u8 *challenge; u8 *wpa; u8 *rsn; u8 *erp_info; u8 *ext_supp_rates; u8 *wmm_info; u8 *wmm_param; struct ieee80211_ht_cap *ht_cap_elem; struct ieee80211_ht_info *ht_info_elem; u8 *mesh_config; u8 *mesh_id; u8 *peer_link; u8 *preq; u8 *prep; u8 *perr; u8 *ch_switch_elem; u8 *country_elem; u8 *pwr_constr_elem; u8 *quiet_elem; /* first quite element */ u8 *timeout_int; /* length of them, respectively */ u8 ssid_len; u8 supp_rates_len; u8 fh_params_len; u8 ds_params_len; u8 cf_params_len; u8 tim_len; u8 ibss_params_len; u8 challenge_len; u8 wpa_len; u8 rsn_len; u8 erp_info_len; u8 ext_supp_rates_len; u8 wmm_info_len; u8 wmm_param_len; u8 mesh_config_len; u8 mesh_id_len; u8 peer_link_len; u8 preq_len; u8 prep_len; u8 perr_len; u8 ch_switch_elem_len; u8 country_elem_len; u8 pwr_constr_elem_len; u8 quiet_elem_len; u8 num_of_quiet_elem; /* can be more the one */ u8 timeout_int_len; }; #endif typedef struct _RT_INTEL_PROMISCUOUS_MODE_INFO { bool bPromiscuousOn; bool bFilterSourceStationFrame; Loading Loading @@ -2283,10 +2138,6 @@ struct rtllib_device { HT_EXTCHNL_OFFSET chan_offset_bk; HT_CHANNEL_WIDTH bandwidth_bk; u8 hwscan_sem_up; #ifdef CONFIG_CFG_80211 struct wireless_dev wdev; struct rtl_regulatory regulatory; #endif u8 CntAfterLink; RT_OP_MODE OpMode; Loading
drivers/staging/rtl8192e/rtllib_module.c +0 −65 Original line number Diff line number Diff line Loading @@ -56,26 +56,6 @@ #define DRV_NAME "rtllib_92e" #ifdef CONFIG_CFG_80211 #ifdef CONFIG_RTL_RFKILL static inline void rtllib_rfkill_poll(struct wiphy *wiphy) { struct rtllib_device *rtllib = NULL; rtllib = (struct rtllib_device *)wiphy_priv(wiphy); rtllib = (struct rtllib_device *)netdev_priv_rsl(rtllib->dev); if (rtllib->rtllib_rfkill_poll) rtllib->rtllib_rfkill_poll(rtllib->dev); } #else static inline void rtllib_rfkill_poll(struct wiphy *wiphy) {} #endif struct cfg80211_ops rtllib_config_ops = {.rfkill_poll = rtllib_rfkill_poll }; void *rtllib_wiphy_privid = &rtllib_wiphy_privid; #endif void _setup_timer( struct timer_list* ptimer, void* fun, unsigned long data ) { ptimer->function = fun; Loading Loading @@ -121,43 +101,6 @@ static inline void rtllib_networks_initialize(struct rtllib_device *ieee) list_add_tail(&ieee->networks[i].list, &ieee->network_free_list); } #if defined CONFIG_CFG_80211 static bool rtllib_wdev_alloc(struct rtllib_device *ieee, int sizeof_priv) { int priv_size; struct rtllib_device *rtllib = NULL; priv_size = ALIGN(sizeof(struct rtllib_device),NETDEV_ALIGN) + sizeof_priv; ieee->wdev.wiphy = wiphy_new(&rtllib_config_ops, priv_size); if (!ieee->wdev.wiphy) { RTLLIB_ERROR("Unable to allocate wiphy.\n"); goto out_err_new; } rtllib = (struct rtllib_device *)wiphy_priv(ieee->wdev.wiphy); rtllib->dev = ieee->dev; ieee->dev->ieee80211_ptr = &ieee->wdev; ieee->wdev.iftype = NL80211_IFTYPE_STATION; /* Fill-out wiphy structure bits we know... Not enough info * here to call set_wiphy_dev or set MAC address or channel info * -- have to do that in ->ndo_init... */ ieee->wdev.wiphy->privid = rtllib_wiphy_privid; ieee->wdev.wiphy->max_scan_ssids = 1; ieee->wdev.wiphy->max_scan_ie_len = 0; ieee->wdev.wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC); return true; out_err_new: wiphy_free(ieee->wdev.wiphy); return false; } #endif struct net_device *alloc_rtllib(int sizeof_priv) { struct rtllib_device *ieee = NULL; Loading @@ -175,10 +118,6 @@ struct net_device *alloc_rtllib(int sizeof_priv) memset(ieee, 0, sizeof(struct rtllib_device)+sizeof_priv); ieee->dev = dev; #ifdef CONFIG_CFG_80211 if (!rtllib_wdev_alloc(ieee, sizeof_priv)) goto failed; #endif err = rtllib_networks_allocate(ieee); if (err) { RTLLIB_ERROR("Unable to allocate beacon storage: %d\n", Loading Loading @@ -277,10 +216,6 @@ void free_rtllib(struct net_device *dev) } rtllib_networks_free(ieee); #ifdef CONFIG_CFG_80211 wiphy_unregister(ieee->wdev.wiphy); wiphy_free(ieee->wdev.wiphy); #endif free_netdev(dev); } Loading
drivers/staging/rtl8192e/rtllib_rx.c +0 −272 Original line number Diff line number Diff line Loading @@ -45,276 +45,6 @@ #include "rtllib.h" #include "dot11d.h" #if defined CONFIG_CFG_80211 #include <linux/crc32.h> struct ieee80211_channel *rtllib_get_channel(struct wiphy *wiphy, int freq) { enum ieee80211_band band; struct ieee80211_supported_band *sband; int i; for (band = 0; band < IEEE80211_NUM_BANDS; band++) { sband = wiphy->bands[band]; if (!sband) continue; for (i = 0; i < sband->n_channels; i++) { if (sband->channels[i].center_freq == freq) return &sband->channels[i]; } } return NULL; } int rtllib_channel_to_frequency(int chan) { if (chan < 14) return 2407 + chan * 5; if (chan == 14) return 2484; /* FIXME: 802.11j 17.3.8.3.2 */ return (chan + 1000) * 5; } u32 rtllib_parse_elems_crc(u8 *start, size_t len, struct ieee802_11_elems *elems, u64 filter, u32 crc) { size_t left = len; u8 *pos = start; bool calc_crc = filter != 0; memset(elems, 0, sizeof(*elems)); elems->ie_start = start; elems->total_len = len; while (left >= 2) { u8 id, elen; id = *pos++; elen = *pos++; left -= 2; if (elen > left) break; if (calc_crc && id < 64 && (filter & BIT(id))) crc = crc32_be(crc, pos - 2, elen + 2); switch (id) { case WLAN_EID_SSID: elems->ssid = pos; elems->ssid_len = elen; break; case WLAN_EID_SUPP_RATES: elems->supp_rates = pos; elems->supp_rates_len = elen; break; case WLAN_EID_FH_PARAMS: elems->fh_params = pos; elems->fh_params_len = elen; break; case WLAN_EID_DS_PARAMS: elems->ds_params = pos; elems->ds_params_len = elen; break; case WLAN_EID_CF_PARAMS: elems->cf_params = pos; elems->cf_params_len = elen; break; case WLAN_EID_TIM: if (elen >= sizeof(struct ieee80211_tim_ie)) { elems->tim = (void *)pos; elems->tim_len = elen; } break; case WLAN_EID_IBSS_PARAMS: elems->ibss_params = pos; elems->ibss_params_len = elen; break; case WLAN_EID_CHALLENGE: elems->challenge = pos; elems->challenge_len = elen; break; case WLAN_EID_VENDOR_SPECIFIC: if (elen >= 4 && pos[0] == 0x00 && pos[1] == 0x50 && pos[2] == 0xf2) { /* Microsoft OUI (00:50:F2) */ if (calc_crc) crc = crc32_be(crc, pos - 2, elen + 2); if (pos[3] == 1) { /* OUI Type 1 - WPA IE */ elems->wpa = pos; elems->wpa_len = elen; } else if (elen >= 5 && pos[3] == 2) { /* OUI Type 2 - WMM IE */ if (pos[4] == 0) { elems->wmm_info = pos; elems->wmm_info_len = elen; } else if (pos[4] == 1) { elems->wmm_param = pos; elems->wmm_param_len = elen; } } } break; case WLAN_EID_RSN: elems->rsn = pos; elems->rsn_len = elen; break; case WLAN_EID_ERP_INFO: elems->erp_info = pos; elems->erp_info_len = elen; break; case WLAN_EID_EXT_SUPP_RATES: elems->ext_supp_rates = pos; elems->ext_supp_rates_len = elen; break; case WLAN_EID_HT_CAPABILITY: if (elen >= sizeof(struct ieee80211_ht_cap)) elems->ht_cap_elem = (void *)pos; break; case WLAN_EID_HT_INFORMATION: if (elen >= sizeof(struct ieee80211_ht_info)) elems->ht_info_elem = (void *)pos; break; case WLAN_EID_MESH_ID: elems->mesh_id = pos; elems->mesh_id_len = elen; break; case WLAN_EID_MESH_CONFIG: elems->mesh_config = pos; elems->mesh_config_len = elen; break; case WLAN_EID_PEER_LINK: elems->peer_link = pos; elems->peer_link_len = elen; break; case WLAN_EID_PREQ: elems->preq = pos; elems->preq_len = elen; break; case WLAN_EID_PREP: elems->prep = pos; elems->prep_len = elen; break; case WLAN_EID_PERR: elems->perr = pos; elems->perr_len = elen; break; case WLAN_EID_CHANNEL_SWITCH: elems->ch_switch_elem = pos; elems->ch_switch_elem_len = elen; break; case WLAN_EID_QUIET: if (!elems->quiet_elem) { elems->quiet_elem = pos; elems->quiet_elem_len = elen; } elems->num_of_quiet_elem++; break; case WLAN_EID_COUNTRY: elems->country_elem = pos; elems->country_elem_len = elen; break; case WLAN_EID_PWR_CONSTRAINT: elems->pwr_constr_elem = pos; elems->pwr_constr_elem_len = elen; break; case WLAN_EID_TIMEOUT_INTERVAL: elems->timeout_int = pos; elems->timeout_int_len = elen; break; default: break; } left -= elen; pos += elen; } return crc; } void rtllib_parse_elems(u8 *start, size_t len, struct ieee802_11_elems *elems) { rtllib_parse_elems_crc(start, len, elems, 0, 0); } void ieee80211_scan_rx(struct rtllib_device *ieee, struct sk_buff *skb, struct rtllib_rx_stats *rx_status) { struct rtllib_hdr_4addr *header = (struct rtllib_hdr_4addr *)skb->data ; struct ieee80211_mgmt *mgmt; struct ieee80211_bss *bss; u8 *elements; struct ieee80211_channel *channel; size_t baselen; int freq; __le16 fc; bool presp, beacon = false; struct ieee802_11_elems elems; s32 signal = 0; if (skb->len < 2) return; mgmt = (struct ieee80211_mgmt *) skb->data; fc = mgmt->frame_control; if (skb->len < 24) return; presp = (WLAN_FC_GET_STYPE(header->frame_ctl) == RTLLIB_STYPE_PROBE_RESP); if (presp) { /* ignore ProbeResp to foreign address */ if (memcmp(mgmt->da, ieee->dev->dev_addr, ETH_ALEN)) return ;; presp = true; elements = mgmt->u.probe_resp.variable; baselen = offsetof(struct ieee80211_mgmt, u.probe_resp.variable); } else { beacon = (WLAN_FC_GET_STYPE(header->frame_ctl) == RTLLIB_STYPE_BEACON); baselen = offsetof(struct ieee80211_mgmt, u.beacon.variable); elements = mgmt->u.beacon.variable; } if (!presp && !beacon) return; if (baselen > skb->len) return; rtllib_parse_elems(elements, skb->len - baselen, &elems); if (elems.ds_params && elems.ds_params_len == 1) freq = rtllib_channel_to_frequency(elems.ds_params[0]); else return; channel = rtllib_get_channel(ieee->wdev.wiphy, freq); if (!channel || channel->flags & IEEE80211_CHAN_DISABLED) return; signal = rx_status->signal * 100; bss = (void *)cfg80211_inform_bss_frame(ieee->wdev.wiphy, channel, mgmt, skb->len, signal, GFP_ATOMIC); return; } #endif static inline void rtllib_monitor_rx(struct rtllib_device *ieee, struct sk_buff *skb,struct rtllib_rx_stats *rx_status, size_t hdr_length) Loading Loading @@ -499,7 +229,6 @@ rtllib_rx_frame_mgmt(struct rtllib_device *ieee, struct sk_buff *skb, return 0; } #ifndef CONFIG_CFG_80211 /* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */ /* Ethernet-II snap header (RFC1042 for most EtherTypes) */ static unsigned char rfc1042_header[] = Loading @@ -508,7 +237,6 @@ static unsigned char rfc1042_header[] = static unsigned char bridge_tunnel_header[] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 }; /* No encapsulation header if EtherType < 0x600 (=length) */ #endif /* Called by rtllib_rx_frame_decrypt */ static int rtllib_is_eapol_frame(struct rtllib_device *ieee, Loading