Commit 947b13a7 authored by Tomas Winkler's avatar Tomas Winkler Committed by John W. Linville

iwlwifi: move find station to iwl-sta.c

This patch move iwl_find_station into iwl-sta.c file
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f0832f13
...@@ -2190,7 +2190,7 @@ static void rs_get_rate(void *priv_rate, struct net_device *dev, ...@@ -2190,7 +2190,7 @@ static void rs_get_rate(void *priv_rate, struct net_device *dev,
if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) && if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) &&
!lq_sta->ibss_sta_added) { !lq_sta->ibss_sta_added) {
u8 sta_id = iwl4965_hw_find_station(priv, hdr->addr1); u8 sta_id = iwl_find_station(priv, hdr->addr1);
DECLARE_MAC_BUF(mac); DECLARE_MAC_BUF(mac);
if (sta_id == IWL_INVALID_STATION) { if (sta_id == IWL_INVALID_STATION) {
...@@ -2268,7 +2268,7 @@ static void rs_rate_init(void *priv_rate, void *priv_sta, ...@@ -2268,7 +2268,7 @@ static void rs_rate_init(void *priv_rate, void *priv_sta,
lq_sta->ibss_sta_added = 0; lq_sta->ibss_sta_added = 0;
if (priv->iw_mode == IEEE80211_IF_TYPE_AP) { if (priv->iw_mode == IEEE80211_IF_TYPE_AP) {
u8 sta_id = iwl4965_hw_find_station(priv, sta->addr); u8 sta_id = iwl_find_station(priv, sta->addr);
DECLARE_MAC_BUF(mac); DECLARE_MAC_BUF(mac);
/* for IBSS the call are from tasklet */ /* for IBSS the call are from tasklet */
......
...@@ -492,38 +492,6 @@ int iwl4965_hw_rxq_stop(struct iwl_priv *priv) ...@@ -492,38 +492,6 @@ int iwl4965_hw_rxq_stop(struct iwl_priv *priv)
return 0; return 0;
} }
u8 iwl4965_hw_find_station(struct iwl_priv *priv, const u8 *addr)
{
int i;
int start = 0;
int ret = IWL_INVALID_STATION;
unsigned long flags;
DECLARE_MAC_BUF(mac);
if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) ||
(priv->iw_mode == IEEE80211_IF_TYPE_AP))
start = IWL_STA_ID;
if (is_broadcast_ether_addr(addr))
return priv->hw_params.bcast_sta_id;
spin_lock_irqsave(&priv->sta_lock, flags);
for (i = start; i < priv->hw_params.max_stations; i++)
if ((priv->stations[i].used) &&
(!compare_ether_addr
(priv->stations[i].sta.sta.addr, addr))) {
ret = i;
goto out;
}
IWL_DEBUG_ASSOC_LIMIT("can not find STA %s total %d\n",
print_mac(mac, addr), priv->num_stations);
out:
spin_unlock_irqrestore(&priv->sta_lock, flags);
return ret;
}
static int iwl4965_nic_set_pwr_src(struct iwl_priv *priv, int pwr_max) static int iwl4965_nic_set_pwr_src(struct iwl_priv *priv, int pwr_max)
{ {
int ret; int ret;
...@@ -3125,7 +3093,7 @@ static void iwl4965_sta_modify_ps_wake(struct iwl_priv *priv, int sta_id) ...@@ -3125,7 +3093,7 @@ static void iwl4965_sta_modify_ps_wake(struct iwl_priv *priv, int sta_id)
static void iwl4965_update_ps_mode(struct iwl_priv *priv, u16 ps_bit, u8 *addr) static void iwl4965_update_ps_mode(struct iwl_priv *priv, u16 ps_bit, u8 *addr)
{ {
/* FIXME: need locking over ps_status ??? */ /* FIXME: need locking over ps_status ??? */
u8 sta_id = iwl4965_hw_find_station(priv, addr); u8 sta_id = iwl_find_station(priv, addr);
if (sta_id != IWL_INVALID_STATION) { if (sta_id != IWL_INVALID_STATION) {
u8 sta_awake = priv->stations[sta_id]. 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,7 +4080,7 @@ static int iwl4965_mac_ht_tx_agg_start(struct ieee80211_hw *hw, const u8 *da,
IWL_WARNING("%s on da = %s tid = %d\n", IWL_WARNING("%s on da = %s tid = %d\n",
__func__, print_mac(mac, da), tid); __func__, print_mac(mac, da), tid);
sta_id = iwl4965_hw_find_station(priv, da); sta_id = iwl_find_station(priv, da);
if (sta_id == IWL_INVALID_STATION) if (sta_id == IWL_INVALID_STATION)
return -ENXIO; return -ENXIO;
...@@ -4171,7 +4139,7 @@ static int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, const u8 *da, ...@@ -4171,7 +4139,7 @@ static int iwl4965_mac_ht_tx_agg_stop(struct ieee80211_hw *hw, const u8 *da,
else else
return -EINVAL; return -EINVAL;
sta_id = iwl4965_hw_find_station(priv, da); sta_id = iwl_find_station(priv, da);
if (sta_id == IWL_INVALID_STATION) if (sta_id == IWL_INVALID_STATION)
return -ENXIO; return -ENXIO;
...@@ -4221,7 +4189,7 @@ int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw, ...@@ -4221,7 +4189,7 @@ int iwl4965_mac_ampdu_action(struct ieee80211_hw *hw,
IWL_DEBUG_HT("A-MPDU action on da=%s tid=%d ", IWL_DEBUG_HT("A-MPDU action on da=%s tid=%d ",
print_mac(mac, addr), tid); print_mac(mac, addr), tid);
sta_id = iwl4965_hw_find_station(priv, addr); sta_id = iwl_find_station(priv, addr);
switch (action) { switch (action) {
case IEEE80211_AMPDU_RX_START: case IEEE80211_AMPDU_RX_START:
IWL_DEBUG_HT("start Rx\n"); IWL_DEBUG_HT("start Rx\n");
......
...@@ -733,14 +733,14 @@ extern void iwl4965_disable_events(struct iwl_priv *priv); ...@@ -733,14 +733,14 @@ extern void iwl4965_disable_events(struct iwl_priv *priv);
extern int iwl4965_get_temperature(const struct iwl_priv *priv); extern int iwl4965_get_temperature(const struct iwl_priv *priv);
/** /**
* iwl4965_hw_find_station - Find station id for a given BSSID * iwl_find_station - Find station id for a given BSSID
* @bssid: MAC address of station ID to find * @bssid: MAC address of station ID to find
* *
* NOTE: This should not be hardware specific but the code has * NOTE: This should not be hardware specific but the code has
* not yet been merged into a single common layer for managing the * not yet been merged into a single common layer for managing the
* station tables. * station tables.
*/ */
extern u8 iwl4965_hw_find_station(struct iwl_priv *priv, const u8 *bssid); extern u8 iwl_find_station(struct iwl_priv *priv, const u8 *bssid);
extern int iwl4965_hw_channel_switch(struct iwl_priv *priv, u16 channel); extern int iwl4965_hw_channel_switch(struct iwl_priv *priv, u16 channel);
extern int iwl4965_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index); extern int iwl4965_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index);
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
*****************************************************************************/ *****************************************************************************/
#include <net/mac80211.h> #include <net/mac80211.h>
#include <linux/etherdevice.h>
#include "iwl-eeprom.h" #include "iwl-eeprom.h"
#include "iwl-4965.h" #include "iwl-4965.h"
...@@ -38,6 +39,40 @@ ...@@ -38,6 +39,40 @@
#include "iwl-4965.h" #include "iwl-4965.h"
#include "iwl-sta.h" #include "iwl-sta.h"
u8 iwl_find_station(struct iwl_priv *priv, const u8 *addr)
{
int i;
int start = 0;
int ret = IWL_INVALID_STATION;
unsigned long flags;
DECLARE_MAC_BUF(mac);
if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) ||
(priv->iw_mode == IEEE80211_IF_TYPE_AP))
start = IWL_STA_ID;
if (is_broadcast_ether_addr(addr))
return priv->hw_params.bcast_sta_id;
spin_lock_irqsave(&priv->sta_lock, flags);
for (i = start; i < priv->hw_params.max_stations; i++)
if (priv->stations[i].used &&
(!compare_ether_addr(priv->stations[i].sta.sta.addr,
addr))) {
ret = i;
goto out;
}
IWL_DEBUG_ASSOC_LIMIT("can not find STA %s total %d\n",
print_mac(mac, addr), priv->num_stations);
out:
spin_unlock_irqrestore(&priv->sta_lock, flags);
return ret;
}
EXPORT_SYMBOL(iwl_find_station);
int iwl_get_free_ucode_key_index(struct iwl_priv *priv) int iwl_get_free_ucode_key_index(struct iwl_priv *priv)
{ {
int i; int i;
......
...@@ -2076,7 +2076,7 @@ static int iwl4965_get_sta_id(struct iwl_priv *priv, ...@@ -2076,7 +2076,7 @@ static int iwl4965_get_sta_id(struct iwl_priv *priv,
/* If we are an AP, then find the station, or use BCAST */ /* If we are an AP, then find the station, or use BCAST */
case IEEE80211_IF_TYPE_AP: case IEEE80211_IF_TYPE_AP:
sta_id = iwl4965_hw_find_station(priv, hdr->addr1); sta_id = iwl_find_station(priv, hdr->addr1);
if (sta_id != IWL_INVALID_STATION) if (sta_id != IWL_INVALID_STATION)
return sta_id; return sta_id;
return priv->hw_params.bcast_sta_id; return priv->hw_params.bcast_sta_id;
...@@ -2084,7 +2084,7 @@ static int iwl4965_get_sta_id(struct iwl_priv *priv, ...@@ -2084,7 +2084,7 @@ static int iwl4965_get_sta_id(struct iwl_priv *priv,
/* If this frame is going out to an IBSS network, find the station, /* If this frame is going out to an IBSS network, find the station,
* or create a new station table entry */ * or create a new station table entry */
case IEEE80211_IF_TYPE_IBSS: case IEEE80211_IF_TYPE_IBSS:
sta_id = iwl4965_hw_find_station(priv, hdr->addr1); sta_id = iwl_find_station(priv, hdr->addr1);
if (sta_id != IWL_INVALID_STATION) if (sta_id != IWL_INVALID_STATION)
return sta_id; return sta_id;
...@@ -2778,7 +2778,7 @@ static inline int iwl4965_get_ra_sta_id(struct iwl_priv *priv, ...@@ -2778,7 +2778,7 @@ static inline int iwl4965_get_ra_sta_id(struct iwl_priv *priv,
return IWL_AP_ID; return IWL_AP_ID;
else { else {
u8 *da = ieee80211_get_DA(hdr); u8 *da = ieee80211_get_DA(hdr);
return iwl4965_hw_find_station(priv, da); return iwl_find_station(priv, da);
} }
} }
...@@ -6768,7 +6768,7 @@ static void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw, ...@@ -6768,7 +6768,7 @@ static void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw,
IWL_DEBUG_MAC80211("enter\n"); IWL_DEBUG_MAC80211("enter\n");
sta_id = iwl4965_hw_find_station(priv, addr); sta_id = iwl_find_station(priv, addr);
if (sta_id == IWL_INVALID_STATION) { if (sta_id == IWL_INVALID_STATION) {
IWL_DEBUG_MAC80211("leave - %s not in station map.\n", IWL_DEBUG_MAC80211("leave - %s not in station map.\n",
print_mac(mac, addr)); print_mac(mac, addr));
...@@ -6824,7 +6824,7 @@ static int iwl4965_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, ...@@ -6824,7 +6824,7 @@ static int iwl4965_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
/* only support pairwise keys */ /* only support pairwise keys */
return -EOPNOTSUPP; return -EOPNOTSUPP;
sta_id = iwl4965_hw_find_station(priv, addr); sta_id = iwl_find_station(priv, addr);
if (sta_id == IWL_INVALID_STATION) { if (sta_id == IWL_INVALID_STATION) {
IWL_DEBUG_MAC80211("leave - %s not in station map.\n", IWL_DEBUG_MAC80211("leave - %s not in station map.\n",
print_mac(mac, addr)); print_mac(mac, addr));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment