aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Winkler <tomas.winkler@intel.com>2008-04-16 19:34:48 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-05-07 15:02:10 -0400
commit947b13a7ccd31d8adbf41f466d6a1c770461596a (patch)
tree1cbb139f37aefdf6d1120ff2a15b1c657c918dfc
parentf0832f137c21d130998a0f97f97ac01a2d97210b (diff)
iwlwifi: move find station to iwl-sta.c
This patch move iwl_find_station into iwl-sta.c file Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965-rs.c4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c40
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.h4
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-sta.c35
-rw-r--r--drivers/net/wireless/iwlwifi/iwl4965-base.c10
5 files changed, 48 insertions, 45 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
index b608e1ca8b40..557912af1ff6 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
@@ -2190,7 +2190,7 @@ static void rs_get_rate(void *priv_rate, struct net_device *dev,
2190 2190
2191 if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) && 2191 if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) &&
2192 !lq_sta->ibss_sta_added) { 2192 !lq_sta->ibss_sta_added) {
2193 u8 sta_id = iwl4965_hw_find_station(priv, hdr->addr1); 2193 u8 sta_id = iwl_find_station(priv, hdr->addr1);
2194 DECLARE_MAC_BUF(mac); 2194 DECLARE_MAC_BUF(mac);
2195 2195
2196 if (sta_id == IWL_INVALID_STATION) { 2196 if (sta_id == IWL_INVALID_STATION) {
@@ -2268,7 +2268,7 @@ static void rs_rate_init(void *priv_rate, void *priv_sta,
2268 2268
2269 lq_sta->ibss_sta_added = 0; 2269 lq_sta->ibss_sta_added = 0;
2270 if (priv->iw_mode == IEEE80211_IF_TYPE_AP) { 2270 if (priv->iw_mode == IEEE80211_IF_TYPE_AP) {
2271 u8 sta_id = iwl4965_hw_find_station(priv, sta->addr); 2271 u8 sta_id = iwl_find_station(priv, sta->addr);
2272 DECLARE_MAC_BUF(mac); 2272 DECLARE_MAC_BUF(mac);
2273 2273
2274 /* for IBSS the call are from tasklet */ 2274 /* for IBSS the call are from tasklet */
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index be4cc5ffa742..f318c50a1a8f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -492,38 +492,6 @@ int iwl4965_hw_rxq_stop(struct iwl_priv *priv)
492 return 0; 492 return 0;
493} 493}
494 494
495u8 iwl4965_hw_find_station(struct iwl_priv *priv, const u8 *addr)
496{
497 int i;
498 int start = 0;
499 int ret = IWL_INVALID_STATION;
500 unsigned long flags;
501 DECLARE_MAC_BUF(mac);
502
503 if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) ||
504 (priv->iw_mode == IEEE80211_IF_TYPE_AP))
505 start = IWL_STA_ID;
506
507 if (is_broadcast_ether_addr(addr))
508 return priv->hw_params.bcast_sta_id;
509
510 spin_lock_irqsave(&priv->sta_lock, flags);
511 for (i = start; i < priv->hw_params.max_stations; i++)
512 if ((priv->stations[i].used) &&
513 (!compare_ether_addr
514 (priv->stations[i].sta.sta.addr, addr))) {
515 ret = i;
516 goto out;
517 }
518
519 IWL_DEBUG_ASSOC_LIMIT("can not find STA %s total %d\n",
520 print_mac(mac, addr), priv->num_stations);
521
522 out:
523 spin_unlock_irqrestore(&priv->sta_lock, flags);
524 return ret;
525}
526
527static int iwl4965_nic_set_pwr_src(struct iwl_priv *priv, int pwr_max) 495static int iwl4965_nic_set_pwr_src(struct iwl_priv *priv, int pwr_max)
528{ 496{
529 int ret; 497 int ret;
@@ -3125,7 +3093,7 @@ static void iwl4965_sta_modify_ps_wake(struct iwl_priv *priv, int sta_id)
3125static void iwl4965_update_ps_mode(struct iwl_priv *priv, u16 ps_bit, u8 *addr) 3093static void iwl4965_update_ps_mode(struct iwl_priv *priv, u16 ps_bit, u8 *addr)
3126{ 3094{
3127 /* FIXME: need locking over ps_status ??? */ 3095 /* FIXME: need locking over ps_status ??? */
3128 u8 sta_id = iwl4965_hw_find_station(priv, addr); 3096 u8 sta_id = iwl_find_station(priv, addr);
3129 3097
3130 if (sta_id != IWL_INVALID_STATION) { 3098 if (sta_id != IWL_INVALID_STATION) {
3131 u8 sta_awake = priv->stations[sta_id]. 3099 u8 sta_awake = priv->stations[sta_id].
@@ -4112,7 +4080,7 @@ static int iwl4965_mac_ht_tx_agg_start(struct ieee80211_hw *hw, const u8 *da,
4112 IWL_WARNING("%s on da = %s tid = %d\n", 4080 IWL_WARNING("%s on da = %s tid = %d\n",
4113 __func__, print_mac(mac, da), tid); 4081 __func__, print_mac(mac, da), tid);
4114 4082
4115 sta_id = iwl4965_hw_find_station(priv, da); 4083 sta_id = iwl_find_station(priv, da);
4116 if (sta_id == IWL_INVALID_STATION) 4084 if (sta_id == IWL_INVALID_STATION)
4117 return -ENXIO; 4085 return -ENXIO;
4118 4086
@@ -4171,7 +4139,7 @@ static int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, const u8 *da,
4171 else 4139 else
4172 return -EINVAL; 4140 return -EINVAL;
4173 4141
4174 sta_id = iwl4965_hw_find_station(priv, da); 4142 sta_id = iwl_find_station(priv, da);
4175 4143
4176 if (sta_id == IWL_INVALID_STATION) 4144 if (sta_id == IWL_INVALID_STATION)
4177 return -ENXIO; 4145 return -ENXIO;
@@ -4221,7 +4189,7 @@ int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
4221 4189
4222 IWL_DEBUG_HT("A-MPDU action on da=%s tid=%d ", 4190 IWL_DEBUG_HT("A-MPDU action on da=%s tid=%d ",
4223 print_mac(mac, addr), tid); 4191 print_mac(mac, addr), tid);
4224 sta_id = iwl4965_hw_find_station(priv, addr); 4192 sta_id = iwl_find_station(priv, addr);
4225 switch (action) { 4193 switch (action) {
4226 case IEEE80211_AMPDU_RX_START: 4194 case IEEE80211_AMPDU_RX_START:
4227 IWL_DEBUG_HT("start Rx\n"); 4195 IWL_DEBUG_HT("start Rx\n");
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.h b/drivers/net/wireless/iwlwifi/iwl-4965.h
index d728dd837e97..b51243f46938 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.h
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.h
@@ -733,14 +733,14 @@ extern void iwl4965_disable_events(struct iwl_priv *priv);
733extern int iwl4965_get_temperature(const struct iwl_priv *priv); 733extern int iwl4965_get_temperature(const struct iwl_priv *priv);
734 734
735/** 735/**
736 * iwl4965_hw_find_station - Find station id for a given BSSID 736 * iwl_find_station - Find station id for a given BSSID
737 * @bssid: MAC address of station ID to find 737 * @bssid: MAC address of station ID to find
738 * 738 *
739 * NOTE: This should not be hardware specific but the code has 739 * NOTE: This should not be hardware specific but the code has
740 * not yet been merged into a single common layer for managing the 740 * not yet been merged into a single common layer for managing the
741 * station tables. 741 * station tables.
742 */ 742 */
743extern u8 iwl4965_hw_find_station(struct iwl_priv *priv, const u8 *bssid); 743extern u8 iwl_find_station(struct iwl_priv *priv, const u8 *bssid);
744 744
745extern int iwl4965_hw_channel_switch(struct iwl_priv *priv, u16 channel); 745extern int iwl4965_hw_channel_switch(struct iwl_priv *priv, u16 channel);
746extern int iwl4965_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index); 746extern int iwl4965_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index);
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
index e4fdfaa2b9b2..fa463ce6399b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
@@ -28,6 +28,7 @@
28 *****************************************************************************/ 28 *****************************************************************************/
29 29
30#include <net/mac80211.h> 30#include <net/mac80211.h>
31#include <linux/etherdevice.h>
31 32
32#include "iwl-eeprom.h" 33#include "iwl-eeprom.h"
33#include "iwl-4965.h" 34#include "iwl-4965.h"
@@ -38,6 +39,40 @@
38#include "iwl-4965.h" 39#include "iwl-4965.h"
39#include "iwl-sta.h" 40#include "iwl-sta.h"
40 41
42u8 iwl_find_station(struct iwl_priv *priv, const u8 *addr)
43{
44 int i;
45 int start = 0;
46 int ret = IWL_INVALID_STATION;
47 unsigned long flags;
48 DECLARE_MAC_BUF(mac);
49
50 if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) ||
51 (priv->iw_mode == IEEE80211_IF_TYPE_AP))
52 start = IWL_STA_ID;
53
54 if (is_broadcast_ether_addr(addr))
55 return priv->hw_params.bcast_sta_id;
56
57 spin_lock_irqsave(&priv->sta_lock, flags);
58 for (i = start; i < priv->hw_params.max_stations; i++)
59 if (priv->stations[i].used &&
60 (!compare_ether_addr(priv->stations[i].sta.sta.addr,
61 addr))) {
62 ret = i;
63 goto out;
64 }
65
66 IWL_DEBUG_ASSOC_LIMIT("can not find STA %s total %d\n",
67 print_mac(mac, addr), priv->num_stations);
68
69 out:
70 spin_unlock_irqrestore(&priv->sta_lock, flags);
71 return ret;
72}
73EXPORT_SYMBOL(iwl_find_station);
74
75
41int iwl_get_free_ucode_key_index(struct iwl_priv *priv) 76int iwl_get_free_ucode_key_index(struct iwl_priv *priv)
42{ 77{
43 int i; 78 int i;
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c
index 8a68ff4323de..c8cbf70600da 100644
--- a/drivers/net/wireless/iwlwifi/iwl4965-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c
@@ -2076,7 +2076,7 @@ static int iwl4965_get_sta_id(struct iwl_priv *priv,
2076 2076
2077 /* If we are an AP, then find the station, or use BCAST */ 2077 /* If we are an AP, then find the station, or use BCAST */
2078 case IEEE80211_IF_TYPE_AP: 2078 case IEEE80211_IF_TYPE_AP:
2079 sta_id = iwl4965_hw_find_station(priv, hdr->addr1); 2079 sta_id = iwl_find_station(priv, hdr->addr1);
2080 if (sta_id != IWL_INVALID_STATION) 2080 if (sta_id != IWL_INVALID_STATION)
2081 return sta_id; 2081 return sta_id;
2082 return priv->hw_params.bcast_sta_id; 2082 return priv->hw_params.bcast_sta_id;
@@ -2084,7 +2084,7 @@ static int iwl4965_get_sta_id(struct iwl_priv *priv,
2084 /* If this frame is going out to an IBSS network, find the station, 2084 /* If this frame is going out to an IBSS network, find the station,
2085 * or create a new station table entry */ 2085 * or create a new station table entry */
2086 case IEEE80211_IF_TYPE_IBSS: 2086 case IEEE80211_IF_TYPE_IBSS:
2087 sta_id = iwl4965_hw_find_station(priv, hdr->addr1); 2087 sta_id = iwl_find_station(priv, hdr->addr1);
2088 if (sta_id != IWL_INVALID_STATION) 2088 if (sta_id != IWL_INVALID_STATION)
2089 return sta_id; 2089 return sta_id;
2090 2090
@@ -2778,7 +2778,7 @@ static inline int iwl4965_get_ra_sta_id(struct iwl_priv *priv,
2778 return IWL_AP_ID; 2778 return IWL_AP_ID;
2779 else { 2779 else {
2780 u8 *da = ieee80211_get_DA(hdr); 2780 u8 *da = ieee80211_get_DA(hdr);
2781 return iwl4965_hw_find_station(priv, da); 2781 return iwl_find_station(priv, da);
2782 } 2782 }
2783} 2783}
2784 2784
@@ -6768,7 +6768,7 @@ static void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw,
6768 6768
6769 IWL_DEBUG_MAC80211("enter\n"); 6769 IWL_DEBUG_MAC80211("enter\n");
6770 6770
6771 sta_id = iwl4965_hw_find_station(priv, addr); 6771 sta_id = iwl_find_station(priv, addr);
6772 if (sta_id == IWL_INVALID_STATION) { 6772 if (sta_id == IWL_INVALID_STATION) {
6773 IWL_DEBUG_MAC80211("leave - %s not in station map.\n", 6773 IWL_DEBUG_MAC80211("leave - %s not in station map.\n",
6774 print_mac(mac, addr)); 6774 print_mac(mac, addr));
@@ -6824,7 +6824,7 @@ static int iwl4965_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
6824 /* only support pairwise keys */ 6824 /* only support pairwise keys */
6825 return -EOPNOTSUPP; 6825 return -EOPNOTSUPP;
6826 6826
6827 sta_id = iwl4965_hw_find_station(priv, addr); 6827 sta_id = iwl_find_station(priv, addr);
6828 if (sta_id == IWL_INVALID_STATION) { 6828 if (sta_id == IWL_INVALID_STATION) {
6829 IWL_DEBUG_MAC80211("leave - %s not in station map.\n", 6829 IWL_DEBUG_MAC80211("leave - %s not in station map.\n",
6830 print_mac(mac, addr)); 6830 print_mac(mac, addr));