Lines Matching refs:priv
158 #define MAX_MULTICAST(priv) (HERMES_MAX_MULTICAST) argument
219 static int __orinoco_up(struct orinoco_private *priv);
220 static int __orinoco_down(struct orinoco_private *priv);
221 static int __orinoco_commit(struct orinoco_private *priv);
227 void set_port_type(struct orinoco_private *priv) in set_port_type() argument
229 switch (priv->iw_mode) { in set_port_type()
231 priv->port_type = 1; in set_port_type()
232 priv->createibss = 0; in set_port_type()
235 if (priv->prefer_port3) { in set_port_type()
236 priv->port_type = 3; in set_port_type()
237 priv->createibss = 0; in set_port_type()
239 priv->port_type = priv->ibss_port; in set_port_type()
240 priv->createibss = 1; in set_port_type()
244 priv->port_type = 3; in set_port_type()
245 priv->createibss = 0; in set_port_type()
249 priv->ndev->name); in set_port_type()
259 struct orinoco_private *priv = ndev_priv(dev); in orinoco_open() local
263 if (orinoco_lock(priv, &flags) != 0) in orinoco_open()
266 err = __orinoco_up(priv); in orinoco_open()
269 priv->open = 1; in orinoco_open()
271 orinoco_unlock(priv, &flags); in orinoco_open()
279 struct orinoco_private *priv = ndev_priv(dev); in orinoco_stop() local
285 orinoco_lock_irq(priv); in orinoco_stop()
287 priv->open = 0; in orinoco_stop()
289 err = __orinoco_down(priv); in orinoco_stop()
291 orinoco_unlock_irq(priv); in orinoco_stop()
299 struct orinoco_private *priv = ndev_priv(dev); in orinoco_get_stats() local
301 return &priv->stats; in orinoco_get_stats()
307 struct orinoco_private *priv = ndev_priv(dev); in orinoco_set_multicast_list() local
310 if (orinoco_lock(priv, &flags) != 0) { in orinoco_set_multicast_list()
317 orinoco_unlock(priv, &flags); in orinoco_set_multicast_list()
323 struct orinoco_private *priv = ndev_priv(dev); in orinoco_change_mtu() local
330 (priv->nicbuf_size - ETH_HLEN)) in orinoco_change_mtu()
369 struct orinoco_private *priv, in orinoco_process_xmit_skb() argument
377 key = (struct orinoco_tkip_key *) priv->keys[priv->tx_key].key; in orinoco_process_xmit_skb()
379 do_mic = ((priv->encode_alg == ORINOCO_ALG_TKIP) && in orinoco_process_xmit_skb()
383 *tx_control |= (priv->tx_key << HERMES_MIC_KEY_ID_SHIFT) | in orinoco_process_xmit_skb()
426 orinoco_mic(priv->tx_tfm_mic, key->tx_mic, in orinoco_process_xmit_skb()
438 struct orinoco_private *priv = ndev_priv(dev); in orinoco_xmit() local
439 struct net_device_stats *stats = &priv->stats; in orinoco_xmit()
440 struct hermes *hw = &priv->hw; in orinoco_xmit()
442 u16 txfid = priv->txfid; in orinoco_xmit()
459 if (orinoco_lock(priv, &flags) != 0) { in orinoco_xmit()
466 (priv->iw_mode == NL80211_IFTYPE_MONITOR)) { in orinoco_xmit()
479 err = orinoco_process_xmit_skb(skb, dev, priv, &tx_control, in orinoco_xmit()
484 if (priv->has_alt_txcntl) { in orinoco_xmit()
571 orinoco_unlock(priv, &flags); in orinoco_xmit()
577 schedule_work(&priv->reset_work); in orinoco_xmit()
578 orinoco_unlock(priv, &flags); in orinoco_xmit()
584 struct orinoco_private *priv = ndev_priv(dev); in __orinoco_ev_alloc() local
587 if (fid != priv->txfid) { in __orinoco_ev_alloc()
599 struct orinoco_private *priv = ndev_priv(dev); in __orinoco_ev_tx() local
600 struct net_device_stats *stats = &priv->stats; in __orinoco_ev_tx()
611 struct orinoco_private *priv = ndev_priv(dev); in __orinoco_ev_txexc() local
612 struct net_device_stats *stats = &priv->stats; in __orinoco_ev_txexc()
667 struct orinoco_private *priv = ndev_priv(dev); in orinoco_tx_timeout() local
668 struct net_device_stats *stats = &priv->stats; in orinoco_tx_timeout()
669 struct hermes *hw = &priv->hw; in orinoco_tx_timeout()
678 schedule_work(&priv->reset_work); in orinoco_tx_timeout()
717 struct orinoco_private *priv = ndev_priv(dev); in orinoco_stat_gather() local
729 if (SPY_NUMBER(priv)) { in orinoco_stat_gather()
754 struct orinoco_private *priv = ndev_priv(dev); in orinoco_rx_monitor() local
755 struct net_device_stats *stats = &priv->stats; in orinoco_rx_monitor()
756 struct hermes *hw = &priv->hw; in orinoco_rx_monitor()
845 struct orinoco_private *priv = ndev_priv(dev); in __orinoco_ev_rx() local
846 struct net_device_stats *stats = &priv->stats; in __orinoco_ev_rx()
847 struct iw_statistics *wstats = &priv->wstats; in __orinoco_ev_rx()
879 if (priv->iw_mode == NL80211_IFTYPE_MONITOR) { in __orinoco_ev_rx()
945 list_add_tail(&rx_data->list, &priv->rx_list); in __orinoco_ev_rx()
946 tasklet_schedule(&priv->rx_tasklet); in __orinoco_ev_rx()
964 struct orinoco_private *priv = ndev_priv(dev); in orinoco_rx() local
965 struct net_device_stats *stats = &priv->stats; in orinoco_rx()
990 key = (struct orinoco_tkip_key *) priv->keys[key_id].key; in orinoco_rx()
999 orinoco_mic(priv->rx_tfm_mic, key->rx_mic, desc->addr1, src, in orinoco_rx()
1023 (void) orinoco_hw_get_tkip_iv(priv, key_id, in orinoco_rx()
1083 struct orinoco_private *priv = (struct orinoco_private *) data; in orinoco_rx_isr_tasklet() local
1084 struct net_device *dev = priv->ndev; in orinoco_rx_isr_tasklet()
1096 if (orinoco_lock(priv, &flags) != 0) in orinoco_rx_isr_tasklet()
1100 list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) { in orinoco_rx_isr_tasklet()
1111 orinoco_unlock(priv, &flags); in orinoco_rx_isr_tasklet()
1158 struct orinoco_private *priv = in orinoco_join_ap() local
1160 struct net_device *dev = priv->ndev; in orinoco_join_ap()
1161 struct hermes *hw = &priv->hw; in orinoco_join_ap()
1180 if (orinoco_lock(priv, &flags) != 0) in orinoco_join_ap()
1184 if (!priv->bssid_fixed) in orinoco_join_ap()
1187 if (strlen(priv->desired_essid) == 0) in orinoco_join_ap()
1206 if (memcmp(&atom->bssid, priv->desired_bssid, ETH_ALEN) == 0) { in orinoco_join_ap()
1218 memcpy(req.bssid, priv->desired_bssid, ETH_ALEN); in orinoco_join_ap()
1226 orinoco_unlock(priv, &flags); in orinoco_join_ap()
1233 static void orinoco_send_bssid_wevent(struct orinoco_private *priv) in orinoco_send_bssid_wevent() argument
1235 struct net_device *dev = priv->ndev; in orinoco_send_bssid_wevent()
1236 struct hermes *hw = &priv->hw; in orinoco_send_bssid_wevent()
1251 static void orinoco_send_assocreqie_wevent(struct orinoco_private *priv) in orinoco_send_assocreqie_wevent() argument
1253 struct net_device *dev = priv->ndev; in orinoco_send_assocreqie_wevent()
1254 struct hermes *hw = &priv->hw; in orinoco_send_assocreqie_wevent()
1260 if (!priv->has_wpa) in orinoco_send_assocreqie_wevent()
1281 static void orinoco_send_assocrespie_wevent(struct orinoco_private *priv) in orinoco_send_assocrespie_wevent() argument
1283 struct net_device *dev = priv->ndev; in orinoco_send_assocrespie_wevent()
1284 struct hermes *hw = &priv->hw; in orinoco_send_assocrespie_wevent()
1290 if (!priv->has_wpa) in orinoco_send_assocrespie_wevent()
1314 struct orinoco_private *priv = in orinoco_send_wevents() local
1318 if (orinoco_lock(priv, &flags) != 0) in orinoco_send_wevents()
1321 orinoco_send_assocreqie_wevent(priv); in orinoco_send_wevents()
1322 orinoco_send_assocrespie_wevent(priv); in orinoco_send_wevents()
1323 orinoco_send_bssid_wevent(priv); in orinoco_send_wevents()
1325 orinoco_unlock(priv, &flags); in orinoco_send_wevents()
1328 static void qbuf_scan(struct orinoco_private *priv, void *buf, in qbuf_scan() argument
1342 spin_lock_irqsave(&priv->scan_lock, flags); in qbuf_scan()
1343 list_add_tail(&sd->list, &priv->scan_list); in qbuf_scan()
1344 spin_unlock_irqrestore(&priv->scan_lock, flags); in qbuf_scan()
1346 schedule_work(&priv->process_scan); in qbuf_scan()
1349 static void qabort_scan(struct orinoco_private *priv) in qabort_scan() argument
1360 spin_lock_irqsave(&priv->scan_lock, flags); in qabort_scan()
1361 list_add_tail(&sd->list, &priv->scan_list); in qabort_scan()
1362 spin_unlock_irqrestore(&priv->scan_lock, flags); in qabort_scan()
1364 schedule_work(&priv->process_scan); in qabort_scan()
1369 struct orinoco_private *priv = in orinoco_process_scan_results() local
1377 spin_lock_irqsave(&priv->scan_lock, flags); in orinoco_process_scan_results()
1378 list_for_each_entry_safe(sd, temp, &priv->scan_list, list) { in orinoco_process_scan_results()
1385 spin_unlock_irqrestore(&priv->scan_lock, flags); in orinoco_process_scan_results()
1390 orinoco_add_extscan_result(priv, buf, len); in orinoco_process_scan_results()
1392 orinoco_add_hostscan_results(priv, buf, len); in orinoco_process_scan_results()
1397 orinoco_scan_done(priv, (len < 0)); in orinoco_process_scan_results()
1400 spin_lock_irqsave(&priv->scan_lock, flags); in orinoco_process_scan_results()
1402 spin_unlock_irqrestore(&priv->scan_lock, flags); in orinoco_process_scan_results()
1407 struct orinoco_private *priv = ndev_priv(dev); in __orinoco_ev_info() local
1437 struct iw_statistics *wstats = &priv->wstats; in __orinoco_ev_info()
1472 if (priv->iw_mode == NL80211_IFTYPE_MONITOR) in __orinoco_ev_info()
1490 priv->firmware_type == FIRMWARE_TYPE_SYMBOL && in __orinoco_ev_info()
1491 priv->has_hostscan && priv->scan_request) { in __orinoco_ev_info()
1505 if (newstatus != priv->last_linkstatus) { in __orinoco_ev_info()
1506 priv->last_linkstatus = newstatus; in __orinoco_ev_info()
1512 schedule_work(&priv->wevent_work); in __orinoco_ev_info()
1517 if (!priv->scan_request && priv->bssid_fixed && in __orinoco_ev_info()
1518 priv->firmware_type == FIRMWARE_TYPE_INTERSIL) { in __orinoco_ev_info()
1519 schedule_work(&priv->join_work); in __orinoco_ev_info()
1533 qabort_scan(priv); in __orinoco_ev_info()
1541 qabort_scan(priv); in __orinoco_ev_info()
1550 qabort_scan(priv); in __orinoco_ev_info()
1564 qbuf_scan(priv, buf, len, type); in __orinoco_ev_info()
1571 if (!priv->scan_request) { in __orinoco_ev_info()
1579 qbuf_scan(priv, NULL, len, type); in __orinoco_ev_info()
1604 qbuf_scan(priv, bss, len, type); in __orinoco_ev_info()
1611 if (priv->firmware_type == FIRMWARE_TYPE_AGERE) in __orinoco_ev_info()
1633 static int __orinoco_up(struct orinoco_private *priv) in __orinoco_up() argument
1635 struct net_device *dev = priv->ndev; in __orinoco_up()
1636 struct hermes *hw = &priv->hw; in __orinoco_up()
1641 err = __orinoco_commit(priv); in __orinoco_up()
1662 static int __orinoco_down(struct orinoco_private *priv) in __orinoco_down() argument
1664 struct net_device *dev = priv->ndev; in __orinoco_down()
1665 struct hermes *hw = &priv->hw; in __orinoco_down()
1670 if (!priv->hw_unavailable) { in __orinoco_down()
1671 if (!priv->broken_disableport) { in __orinoco_down()
1679 priv->broken_disableport = 1; in __orinoco_down()
1686 orinoco_scan_done(priv, true); in __orinoco_down()
1690 priv->last_linkstatus = 0xffff; in __orinoco_down()
1695 static int orinoco_reinit_firmware(struct orinoco_private *priv) in orinoco_reinit_firmware() argument
1697 struct hermes *hw = &priv->hw; in orinoco_reinit_firmware()
1701 if (priv->do_fw_download && !err) { in orinoco_reinit_firmware()
1702 err = orinoco_download(priv); in orinoco_reinit_firmware()
1704 priv->do_fw_download = 0; in orinoco_reinit_firmware()
1707 err = orinoco_hw_allocate_fid(priv); in orinoco_reinit_firmware()
1715 struct orinoco_private *priv = ndev_priv(dev); in __orinoco_set_multicast_list() local
1722 (netdev_mc_count(dev) > MAX_MULTICAST(priv))) { in __orinoco_set_multicast_list()
1730 err = __orinoco_hw_set_multicast_list(priv, dev, mc_count, promisc); in __orinoco_set_multicast_list()
1739 struct orinoco_private *priv = in orinoco_reset() local
1741 struct net_device *dev = priv->ndev; in orinoco_reset()
1742 struct hermes *hw = &priv->hw; in orinoco_reset()
1746 if (orinoco_lock(priv, &flags) != 0) in orinoco_reset()
1759 priv->hw_unavailable++; in orinoco_reset()
1760 priv->last_linkstatus = 0xffff; /* firmware will have to reassociate */ in orinoco_reset()
1763 orinoco_unlock(priv, &flags); in orinoco_reset()
1766 orinoco_scan_done(priv, true); in orinoco_reset()
1768 if (priv->hard_reset) { in orinoco_reset()
1769 err = (*priv->hard_reset)(priv); in orinoco_reset()
1777 err = orinoco_reinit_firmware(priv); in orinoco_reset()
1785 orinoco_lock_irq(priv); in orinoco_reset()
1787 priv->hw_unavailable--; in orinoco_reset()
1791 if (priv->open && (!priv->hw_unavailable)) { in orinoco_reset()
1792 err = __orinoco_up(priv); in orinoco_reset()
1800 orinoco_unlock_irq(priv); in orinoco_reset()
1809 static int __orinoco_commit(struct orinoco_private *priv) in __orinoco_commit() argument
1811 struct net_device *dev = priv->ndev; in __orinoco_commit()
1818 priv->tkip_cm_active = 0; in __orinoco_commit()
1820 err = orinoco_hw_program_rids(priv); in __orinoco_commit()
1831 int orinoco_commit(struct orinoco_private *priv) in orinoco_commit() argument
1833 struct net_device *dev = priv->ndev; in orinoco_commit()
1834 struct hermes *hw = &priv->hw; in orinoco_commit()
1837 if (priv->broken_disableport) { in orinoco_commit()
1838 schedule_work(&priv->reset_work); in orinoco_commit()
1846 priv->broken_disableport = 1; in orinoco_commit()
1850 err = __orinoco_commit(priv); in orinoco_commit()
1867 schedule_work(&priv->reset_work); in orinoco_commit()
1892 struct orinoco_private *priv = dev_id; in orinoco_interrupt() local
1893 struct net_device *dev = priv->ndev; in orinoco_interrupt()
1894 struct hermes *hw = &priv->hw; in orinoco_interrupt()
1907 if (orinoco_lock(priv, &flags) != 0) { in orinoco_interrupt()
1916 orinoco_unlock(priv, &flags); in orinoco_interrupt()
1930 schedule_work(&priv->reset_work); in orinoco_interrupt()
1963 orinoco_unlock(priv, &flags); in orinoco_interrupt()
1976 struct orinoco_private *priv = container_of(notifier, in orinoco_pm_notifier() local
1984 if (!priv->do_fw_download) in orinoco_pm_notifier()
1990 orinoco_cache_fw(priv, 0); in orinoco_pm_notifier()
1998 orinoco_uncache_fw(priv); in orinoco_pm_notifier()
2009 static void orinoco_register_pm_notifier(struct orinoco_private *priv) in orinoco_register_pm_notifier() argument
2011 priv->pm_notifier.notifier_call = orinoco_pm_notifier; in orinoco_register_pm_notifier()
2012 register_pm_notifier(&priv->pm_notifier); in orinoco_register_pm_notifier()
2015 static void orinoco_unregister_pm_notifier(struct orinoco_private *priv) in orinoco_unregister_pm_notifier() argument
2017 unregister_pm_notifier(&priv->pm_notifier); in orinoco_unregister_pm_notifier()
2020 #define orinoco_register_pm_notifier(priv) do { } while (0) argument
2021 #define orinoco_unregister_pm_notifier(priv) do { } while (0) argument
2028 int orinoco_init(struct orinoco_private *priv) in orinoco_init() argument
2030 struct device *dev = priv->dev; in orinoco_init()
2031 struct wiphy *wiphy = priv_to_wiphy(priv); in orinoco_init()
2032 struct hermes *hw = &priv->hw; in orinoco_init()
2037 priv->nicbuf_size = IEEE80211_MAX_FRAME_LEN + ETH_HLEN; in orinoco_init()
2047 err = determine_fw_capabilities(priv, wiphy->fw_version, in orinoco_init()
2055 if (priv->do_fw_download) { in orinoco_init()
2057 orinoco_cache_fw(priv, 0); in orinoco_init()
2060 err = orinoco_download(priv); in orinoco_init()
2062 priv->do_fw_download = 0; in orinoco_init()
2065 err = determine_fw_capabilities(priv, wiphy->fw_version, in orinoco_init()
2074 if (priv->has_port3) in orinoco_init()
2076 if (priv->has_ibss) in orinoco_init()
2078 if (priv->has_wep) in orinoco_init()
2080 priv->has_big_wep ? "104" : "40"); in orinoco_init()
2081 if (priv->has_wpa) { in orinoco_init()
2083 if (orinoco_mic_init(priv)) { in orinoco_init()
2086 priv->has_wpa = 0; in orinoco_init()
2090 err = orinoco_hw_read_card_settings(priv, wiphy->perm_addr); in orinoco_init()
2094 err = orinoco_hw_allocate_fid(priv); in orinoco_init()
2101 priv->iw_mode = NL80211_IFTYPE_STATION; in orinoco_init()
2103 priv->prefer_port3 = priv->has_port3 && (!priv->has_ibss); in orinoco_init()
2104 set_port_type(priv); in orinoco_init()
2105 priv->channel = 0; /* use firmware default */ in orinoco_init()
2107 priv->promiscuous = 0; in orinoco_init()
2108 priv->encode_alg = ORINOCO_ALG_NONE; in orinoco_init()
2109 priv->tx_key = 0; in orinoco_init()
2110 priv->wpa_enabled = 0; in orinoco_init()
2111 priv->tkip_cm_active = 0; in orinoco_init()
2112 priv->key_mgmt = 0; in orinoco_init()
2113 priv->wpa_ie_len = 0; in orinoco_init()
2114 priv->wpa_ie = NULL; in orinoco_init()
2123 orinoco_lock_irq(priv); in orinoco_init()
2124 priv->hw_unavailable--; in orinoco_init()
2125 orinoco_unlock_irq(priv); in orinoco_init()
2177 struct orinoco_private *priv; in alloc_orinocodev() local
2189 priv = wiphy_priv(wiphy); in alloc_orinocodev()
2190 priv->dev = device; in alloc_orinocodev()
2193 priv->card = (void *)((unsigned long)priv in alloc_orinocodev()
2196 priv->card = NULL; in alloc_orinocodev()
2201 priv->wireless_data.spy_data = &priv->spy_data; in alloc_orinocodev()
2205 priv->hard_reset = hard_reset; in alloc_orinocodev()
2206 priv->stop_fw = stop_fw; in alloc_orinocodev()
2208 spin_lock_init(&priv->lock); in alloc_orinocodev()
2209 priv->open = 0; in alloc_orinocodev()
2210 priv->hw_unavailable = 1; /* orinoco_init() must clear this in alloc_orinocodev()
2213 INIT_WORK(&priv->reset_work, orinoco_reset); in alloc_orinocodev()
2214 INIT_WORK(&priv->join_work, orinoco_join_ap); in alloc_orinocodev()
2215 INIT_WORK(&priv->wevent_work, orinoco_send_wevents); in alloc_orinocodev()
2217 INIT_LIST_HEAD(&priv->rx_list); in alloc_orinocodev()
2218 tasklet_init(&priv->rx_tasklet, orinoco_rx_isr_tasklet, in alloc_orinocodev()
2219 (unsigned long) priv); in alloc_orinocodev()
2221 spin_lock_init(&priv->scan_lock); in alloc_orinocodev()
2222 INIT_LIST_HEAD(&priv->scan_list); in alloc_orinocodev()
2223 INIT_WORK(&priv->process_scan, orinoco_process_scan_results); in alloc_orinocodev()
2225 priv->last_linkstatus = 0xffff; in alloc_orinocodev()
2228 priv->cached_pri_fw = NULL; in alloc_orinocodev()
2229 priv->cached_fw = NULL; in alloc_orinocodev()
2233 orinoco_register_pm_notifier(priv); in alloc_orinocodev()
2235 return priv; in alloc_orinocodev()
2246 int orinoco_if_add(struct orinoco_private *priv, in orinoco_if_add() argument
2251 struct wiphy *wiphy = priv_to_wiphy(priv); in orinoco_if_add()
2271 dev->wireless_data = &priv->wireless_data; in orinoco_if_add()
2291 SET_NETDEV_DEV(dev, priv->dev); in orinoco_if_add()
2296 priv->ndev = dev; in orinoco_if_add()
2299 dev_dbg(priv->dev, "Registerred interface %s.\n", dev->name); in orinoco_if_add()
2309 void orinoco_if_del(struct orinoco_private *priv) in orinoco_if_del() argument
2311 struct net_device *dev = priv->ndev; in orinoco_if_del()
2318 void free_orinocodev(struct orinoco_private *priv) in free_orinocodev() argument
2320 struct wiphy *wiphy = priv_to_wiphy(priv); in free_orinocodev()
2327 tasklet_kill(&priv->rx_tasklet); in free_orinocodev()
2330 list_for_each_entry_safe(rx_data, temp, &priv->rx_list, list) { in free_orinocodev()
2338 cancel_work_sync(&priv->process_scan); in free_orinocodev()
2340 list_for_each_entry_safe(sd, sdtemp, &priv->scan_list, list) { in free_orinocodev()
2348 orinoco_unregister_pm_notifier(priv); in free_orinocodev()
2349 orinoco_uncache_fw(priv); in free_orinocodev()
2351 priv->wpa_ie_len = 0; in free_orinocodev()
2352 kfree(priv->wpa_ie); in free_orinocodev()
2353 orinoco_mic_free(priv); in free_orinocodev()
2358 int orinoco_up(struct orinoco_private *priv) in orinoco_up() argument
2360 struct net_device *dev = priv->ndev; in orinoco_up()
2364 priv->hw.ops->lock_irqsave(&priv->lock, &flags); in orinoco_up()
2366 err = orinoco_reinit_firmware(priv); in orinoco_up()
2374 priv->hw_unavailable--; in orinoco_up()
2376 if (priv->open && !priv->hw_unavailable) { in orinoco_up()
2377 err = __orinoco_up(priv); in orinoco_up()
2384 priv->hw.ops->unlock_irqrestore(&priv->lock, &flags); in orinoco_up()
2390 void orinoco_down(struct orinoco_private *priv) in orinoco_down() argument
2392 struct net_device *dev = priv->ndev; in orinoco_down()
2396 priv->hw.ops->lock_irqsave(&priv->lock, &flags); in orinoco_down()
2397 err = __orinoco_down(priv); in orinoco_down()
2403 priv->hw_unavailable++; in orinoco_down()
2404 priv->hw.ops->unlock_irqrestore(&priv->lock, &flags); in orinoco_down()