aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl3945-base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index d0084bcb1eca..0a5bbe9ee938 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -2431,15 +2431,15 @@ static void iwl3945_build_tx_cmd_basic(struct iwl3945_priv *priv,
2431 struct ieee80211_hdr *hdr, 2431 struct ieee80211_hdr *hdr,
2432 int is_unicast, u8 std_id) 2432 int is_unicast, u8 std_id)
2433{ 2433{
2434 u16 fc = le16_to_cpu(hdr->frame_control); 2434 __le16 fc = hdr->frame_control;
2435 __le32 tx_flags = cmd->cmd.tx.tx_flags; 2435 __le32 tx_flags = cmd->cmd.tx.tx_flags;
2436 2436
2437 cmd->cmd.tx.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE; 2437 cmd->cmd.tx.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE;
2438 if (!(info->flags & IEEE80211_TX_CTL_NO_ACK)) { 2438 if (!(info->flags & IEEE80211_TX_CTL_NO_ACK)) {
2439 tx_flags |= TX_CMD_FLG_ACK_MSK; 2439 tx_flags |= TX_CMD_FLG_ACK_MSK;
2440 if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) 2440 if (ieee80211_is_mgmt(fc))
2441 tx_flags |= TX_CMD_FLG_SEQ_CTL_MSK; 2441 tx_flags |= TX_CMD_FLG_SEQ_CTL_MSK;
2442 if (ieee80211_is_probe_response(fc) && 2442 if (ieee80211_is_probe_resp(fc) &&
2443 !(le16_to_cpu(hdr->seq_ctrl) & 0xf)) 2443 !(le16_to_cpu(hdr->seq_ctrl) & 0xf))
2444 tx_flags |= TX_CMD_FLG_TSF_MSK; 2444 tx_flags |= TX_CMD_FLG_TSF_MSK;
2445 } else { 2445 } else {
@@ -2451,8 +2451,8 @@ static void iwl3945_build_tx_cmd_basic(struct iwl3945_priv *priv,
2451 if (ieee80211_get_morefrag(hdr)) 2451 if (ieee80211_get_morefrag(hdr))
2452 tx_flags |= TX_CMD_FLG_MORE_FRAG_MSK; 2452 tx_flags |= TX_CMD_FLG_MORE_FRAG_MSK;
2453 2453
2454 if (ieee80211_is_qos_data(fc)) { 2454 if (ieee80211_is_data_qos(fc)) {
2455 u8 *qc = ieee80211_get_qos_ctrl(hdr, ieee80211_get_hdrlen(fc)); 2455 u8 *qc = ieee80211_get_qos_ctl(hdr);
2456 cmd->cmd.tx.tid_tspec = qc[0] & 0xf; 2456 cmd->cmd.tx.tid_tspec = qc[0] & 0xf;
2457 tx_flags &= ~TX_CMD_FLG_SEQ_CTL_MSK; 2457 tx_flags &= ~TX_CMD_FLG_SEQ_CTL_MSK;
2458 } else { 2458 } else {
@@ -2471,9 +2471,8 @@ static void iwl3945_build_tx_cmd_basic(struct iwl3945_priv *priv,
2471 tx_flags |= TX_CMD_FLG_FULL_TXOP_PROT_MSK; 2471 tx_flags |= TX_CMD_FLG_FULL_TXOP_PROT_MSK;
2472 2472
2473 tx_flags &= ~(TX_CMD_FLG_ANT_SEL_MSK); 2473 tx_flags &= ~(TX_CMD_FLG_ANT_SEL_MSK);
2474 if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) { 2474 if (ieee80211_is_mgmt(fc)) {
2475 if ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_ASSOC_REQ || 2475 if (ieee80211_is_assoc_req(fc) || ieee80211_is_reassoc_req(fc))
2476 (fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_REASSOC_REQ)
2477 cmd->cmd.tx.timeout.pm_frame_timeout = cpu_to_le16(3); 2476 cmd->cmd.tx.timeout.pm_frame_timeout = cpu_to_le16(3);
2478 else 2477 else
2479 cmd->cmd.tx.timeout.pm_frame_timeout = cpu_to_le16(2); 2478 cmd->cmd.tx.timeout.pm_frame_timeout = cpu_to_le16(2);
@@ -2564,7 +2563,7 @@ static int iwl3945_tx_skb(struct iwl3945_priv *priv, struct sk_buff *skb)
2564 u8 sta_id; 2563 u8 sta_id;
2565 u8 tid = 0; 2564 u8 tid = 0;
2566 u16 seq_number = 0; 2565 u16 seq_number = 0;
2567 u16 fc; 2566 __le16 fc;
2568 u8 wait_write_ptr = 0; 2567 u8 wait_write_ptr = 0;
2569 u8 *qc = NULL; 2568 u8 *qc = NULL;
2570 unsigned long flags; 2569 unsigned long flags;
@@ -2589,28 +2588,28 @@ static int iwl3945_tx_skb(struct iwl3945_priv *priv, struct sk_buff *skb)
2589 unicast = !is_multicast_ether_addr(hdr->addr1); 2588 unicast = !is_multicast_ether_addr(hdr->addr1);
2590 id = 0; 2589 id = 0;
2591 2590
2592 fc = le16_to_cpu(hdr->frame_control); 2591 fc = hdr->frame_control;
2593 2592
2594#ifdef CONFIG_IWL3945_DEBUG 2593#ifdef CONFIG_IWL3945_DEBUG
2595 if (ieee80211_is_auth(fc)) 2594 if (ieee80211_is_auth(fc))
2596 IWL_DEBUG_TX("Sending AUTH frame\n"); 2595 IWL_DEBUG_TX("Sending AUTH frame\n");
2597 else if (ieee80211_is_assoc_request(fc)) 2596 else if (ieee80211_is_assoc_req(fc))
2598 IWL_DEBUG_TX("Sending ASSOC frame\n"); 2597 IWL_DEBUG_TX("Sending ASSOC frame\n");
2599 else if (ieee80211_is_reassoc_request(fc)) 2598 else if (ieee80211_is_reassoc_req(fc))
2600 IWL_DEBUG_TX("Sending REASSOC frame\n"); 2599 IWL_DEBUG_TX("Sending REASSOC frame\n");
2601#endif 2600#endif
2602 2601
2603 /* drop all data frame if we are not associated */ 2602 /* drop all data frame if we are not associated */
2604 if ((!iwl3945_is_associated(priv) || 2603 if ((!iwl3945_is_associated(priv) ||
2605 ((priv->iw_mode == IEEE80211_IF_TYPE_STA) && !priv->assoc_id)) && 2604 ((priv->iw_mode == IEEE80211_IF_TYPE_STA) && !priv->assoc_id)) &&
2606 ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA)) { 2605 ieee80211_is_data(fc)) {
2607 IWL_DEBUG_DROP("Dropping - !iwl3945_is_associated\n"); 2606 IWL_DEBUG_DROP("Dropping - !iwl3945_is_associated\n");
2608 goto drop_unlock; 2607 goto drop_unlock;
2609 } 2608 }
2610 2609
2611 spin_unlock_irqrestore(&priv->lock, flags); 2610 spin_unlock_irqrestore(&priv->lock, flags);
2612 2611
2613 hdr_len = ieee80211_get_hdrlen(fc); 2612 hdr_len = ieee80211_get_hdrlen(le16_to_cpu(fc));
2614 2613
2615 /* Find (or create) index into station table for destination station */ 2614 /* Find (or create) index into station table for destination station */
2616 sta_id = iwl3945_get_sta_id(priv, hdr); 2615 sta_id = iwl3945_get_sta_id(priv, hdr);
@@ -2624,8 +2623,8 @@ static int iwl3945_tx_skb(struct iwl3945_priv *priv, struct sk_buff *skb)
2624 2623
2625 IWL_DEBUG_RATE("station Id %d\n", sta_id); 2624 IWL_DEBUG_RATE("station Id %d\n", sta_id);
2626 2625
2627 if (ieee80211_is_qos_data(fc)) { 2626 if (ieee80211_is_data_qos(fc)) {
2628 qc = ieee80211_get_qos_ctrl(hdr, hdr_len); 2627 qc = ieee80211_get_qos_ctl(hdr);
2629 tid = qc[0] & 0xf; 2628 tid = qc[0] & 0xf;
2630 seq_number = priv->stations[sta_id].tid[tid].seq_number & 2629 seq_number = priv->stations[sta_id].tid[tid].seq_number &
2631 IEEE80211_SCTL_SEQ; 2630 IEEE80211_SCTL_SEQ;
@@ -2746,7 +2745,7 @@ static int iwl3945_tx_skb(struct iwl3945_priv *priv, struct sk_buff *skb)
2746 sizeof(out_cmd->cmd.tx)); 2745 sizeof(out_cmd->cmd.tx));
2747 2746
2748 iwl3945_print_hex_dump(IWL_DL_TX, (u8 *)out_cmd->cmd.tx.hdr, 2747 iwl3945_print_hex_dump(IWL_DL_TX, (u8 *)out_cmd->cmd.tx.hdr,
2749 ieee80211_get_hdrlen(fc)); 2748 ieee80211_get_hdrlen(le16_to_cpu(fc)));
2750 2749
2751 /* Tell device the write index *just past* this latest filled TFD */ 2750 /* Tell device the write index *just past* this latest filled TFD */
2752 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd); 2751 q->write_ptr = iwl_queue_inc_wrap(q->write_ptr, q->n_bd);