Commit 3b9990cb authored by James Ketrenos's avatar James Ketrenos

Updated ipw2200 to use the new ieee80211 callbacks

(handle_probe_response, handle_beacon, handle_association_response).

Fixed a problem with ipw_send_cmd() returning non-zero on success.
Signed-off-by: default avatarJames Ketrenos <jketreno@linux.intel.com>
parent 1fe0adb4
...@@ -1925,7 +1925,8 @@ static int ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd) ...@@ -1925,7 +1925,8 @@ static int ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd)
goto exit; goto exit;
} }
spin_unlock_irqrestore(&priv->lock, flags); spin_unlock_irqrestore(&priv->lock, flags);
} } else
rc = 0;
if (priv->status & STATUS_RF_KILL_HW) { if (priv->status & STATUS_RF_KILL_HW) {
IPW_ERROR("Failed to send %s: Aborted due to RF kill switch.\n", IPW_ERROR("Failed to send %s: Aborted due to RF kill switch.\n",
...@@ -7011,9 +7012,9 @@ u8 ipw_qos_current_mode(struct ipw_priv * priv) ...@@ -7011,9 +7012,9 @@ u8 ipw_qos_current_mode(struct ipw_priv * priv)
/* /*
* Handle management frame beacon and probe response * Handle management frame beacon and probe response
*/ */
static int ipw_qos_handle_probe_reponse(struct ipw_priv *priv, static int ipw_qos_handle_probe_response(struct ipw_priv *priv,
int active_network, int active_network,
struct ieee80211_network *network) struct ieee80211_network *network)
{ {
u32 size = sizeof(struct ieee80211_qos_parameters); u32 size = sizeof(struct ieee80211_qos_parameters);
...@@ -7407,35 +7408,41 @@ static void ipw_bg_qos_activate(void *data) ...@@ -7407,35 +7408,41 @@ static void ipw_bg_qos_activate(void *data)
up(&priv->sem); up(&priv->sem);
} }
/* static int ipw_handle_probe_response(struct net_device *dev,
* Handler for probe responce and beacon frame struct ieee80211_probe_response *resp,
*/ struct ieee80211_network *network)
static int ipw_handle_management(struct net_device *dev,
struct ieee80211_network *network, u16 type)
{ {
struct ipw_priv *priv = ieee80211_priv(dev); struct ipw_priv *priv = ieee80211_priv(dev);
int active_network; int active_network = ((priv->status & STATUS_ASSOCIATED) &&
(network == priv->assoc_network));
if (priv->status & STATUS_ASSOCIATED && network == priv->assoc_network) ipw_qos_handle_probe_response(priv, active_network, network);
active_network = 1;
else
active_network = 0;
switch (type) { return 0;
case IEEE80211_STYPE_PROBE_RESP: }
case IEEE80211_STYPE_BEACON:
ipw_qos_handle_probe_reponse(priv, active_network, network); static int ipw_handle_beacon(struct net_device *dev,
break; struct ieee80211_beacon *resp,
case IEEE80211_STYPE_ASSOC_RESP: struct ieee80211_network *network)
ipw_qos_association_resp(priv, network); {
break; struct ipw_priv *priv = ieee80211_priv(dev);
default: int active_network = ((priv->status & STATUS_ASSOCIATED) &&
break; (network == priv->assoc_network));
}
ipw_qos_handle_probe_response(priv, active_network, network);
return 0; return 0;
} }
static int ipw_handle_assoc_response(struct net_device *dev,
struct ieee80211_assoc_response *resp,
struct ieee80211_network *network)
{
struct ipw_priv *priv = ieee80211_priv(dev);
ipw_qos_association_resp(priv, network);
return 0;
}
static int ipw_send_qos_params_command(struct ipw_priv *priv, struct ieee80211_qos_parameters static int ipw_send_qos_params_command(struct ipw_priv *priv, struct ieee80211_qos_parameters
*qos_param) *qos_param)
{ {
...@@ -11260,7 +11267,9 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -11260,7 +11267,9 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
priv->ieee->is_queue_full = ipw_net_is_queue_full; priv->ieee->is_queue_full = ipw_net_is_queue_full;
#ifdef CONFIG_IPW_QOS #ifdef CONFIG_IPW_QOS
priv->ieee->handle_management = ipw_handle_management; priv->ieee->handle_probe_response = ipw_handle_beacon;
priv->ieee->handle_beacon = ipw_handle_probe_response;
priv->ieee->handle_assoc_response = ipw_handle_assoc_response;
#endif /* CONFIG_IPW_QOS */ #endif /* CONFIG_IPW_QOS */
priv->ieee->perfect_rssi = -20; priv->ieee->perfect_rssi = -20;
......
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