]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/wireless/iwlwifi/iwl-3945.c
iwl3945 : Code cleanup
[karo-tx-linux.git] / drivers / net / wireless / iwlwifi / iwl-3945.c
index b3931f6135a4002aed0cd3d0f1a9007540a7f696..3d100e8982499be45a42290bde00d617bf41758c 100644 (file)
@@ -26,7 +26,6 @@
 
 #include <linux/kernel.h>
 #include <linux/module.h>
-#include <linux/version.h>
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/dma-mapping.h>
@@ -532,99 +531,6 @@ static int iwl3945_is_network_packet(struct iwl3945_priv *priv,
        }
 }
 
-static void iwl3945_add_radiotap(struct iwl3945_priv *priv,
-                                struct sk_buff *skb,
-                                struct iwl3945_rx_frame_hdr *rx_hdr,
-                                struct ieee80211_rx_status *stats)
-{
-       /* First cache any information we need before we overwrite
-        * the information provided in the skb from the hardware */
-       s8 signal = stats->signal;
-       s8 noise = 0;
-       int rate = stats->rate_idx;
-       u64 tsf = stats->mactime;
-       __le16 phy_flags_hw = rx_hdr->phy_flags, antenna;
-
-       struct iwl3945_rt_rx_hdr {
-               struct ieee80211_radiotap_header rt_hdr;
-               __le64 rt_tsf;          /* TSF */
-               u8 rt_flags;            /* radiotap packet flags */
-               u8 rt_rate;             /* rate in 500kb/s */
-               __le16 rt_channelMHz;   /* channel in MHz */
-               __le16 rt_chbitmask;    /* channel bitfield */
-               s8 rt_dbmsignal;        /* signal in dBm, kluged to signed */
-               s8 rt_dbmnoise;
-               u8 rt_antenna;          /* antenna number */
-       } __attribute__ ((packed)) *iwl3945_rt;
-
-       if (skb_headroom(skb) < sizeof(*iwl3945_rt)) {
-               if (net_ratelimit())
-                       printk(KERN_ERR "not enough headroom [%d] for "
-                              "radiotap head [%zd]\n",
-                              skb_headroom(skb), sizeof(*iwl3945_rt));
-               return;
-       }
-
-       /* put radiotap header in front of 802.11 header and data */
-       iwl3945_rt = (void *)skb_push(skb, sizeof(*iwl3945_rt));
-
-       /* initialise radiotap header */
-       iwl3945_rt->rt_hdr.it_version = PKTHDR_RADIOTAP_VERSION;
-       iwl3945_rt->rt_hdr.it_pad = 0;
-
-       /* total header + data */
-       put_unaligned_le16(sizeof(*iwl3945_rt), &iwl3945_rt->rt_hdr.it_len);
-
-       /* Indicate all the fields we add to the radiotap header */
-       put_unaligned_le32((1 << IEEE80211_RADIOTAP_TSFT) |
-                          (1 << IEEE80211_RADIOTAP_FLAGS) |
-                          (1 << IEEE80211_RADIOTAP_RATE) |
-                          (1 << IEEE80211_RADIOTAP_CHANNEL) |
-                          (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) |
-                          (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) |
-                          (1 << IEEE80211_RADIOTAP_ANTENNA),
-                       &iwl3945_rt->rt_hdr.it_present);
-
-       /* Zero the flags, we'll add to them as we go */
-       iwl3945_rt->rt_flags = 0;
-
-       put_unaligned_le64(tsf, &iwl3945_rt->rt_tsf);
-
-       iwl3945_rt->rt_dbmsignal = signal;
-       iwl3945_rt->rt_dbmnoise = noise;
-
-       /* Convert the channel frequency and set the flags */
-       put_unaligned_le16(stats->freq, &iwl3945_rt->rt_channelMHz);
-       if (!(phy_flags_hw & RX_RES_PHY_FLAGS_BAND_24_MSK))
-               put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_5GHZ,
-                             &iwl3945_rt->rt_chbitmask);
-       else if (phy_flags_hw & RX_RES_PHY_FLAGS_MOD_CCK_MSK)
-               put_unaligned_le16(IEEE80211_CHAN_CCK | IEEE80211_CHAN_2GHZ,
-                             &iwl3945_rt->rt_chbitmask);
-       else    /* 802.11g */
-               put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_2GHZ,
-                             &iwl3945_rt->rt_chbitmask);
-
-       if (rate == -1)
-               iwl3945_rt->rt_rate = 0;
-       else {
-               if (stats->band == IEEE80211_BAND_5GHZ)
-                       rate += IWL_FIRST_OFDM_RATE;
-
-               iwl3945_rt->rt_rate = iwl3945_rates[rate].ieee;
-       }
-
-       /* antenna number */
-       antenna = phy_flags_hw & RX_RES_PHY_FLAGS_ANTENNA_MSK;
-       iwl3945_rt->rt_antenna = le16_to_cpu(antenna) >> 4;
-
-       /* set the preamble flag if we have it */
-       if (phy_flags_hw & RX_RES_PHY_FLAGS_SHORT_PREAMBLE_MSK)
-               iwl3945_rt->rt_flags |= IEEE80211_RADIOTAP_F_SHORTPRE;
-
-       stats->flag |= RX_FLAG_RADIOTAP;
-}
-
 static void iwl3945_pass_packet_to_mac80211(struct iwl3945_priv *priv,
                                   struct iwl3945_rx_mem_buffer *rxb,
                                   struct ieee80211_rx_status *stats)
@@ -658,9 +564,6 @@ static void iwl3945_pass_packet_to_mac80211(struct iwl3945_priv *priv,
                iwl3945_set_decrypted_flag(priv, rxb->skb,
                                       le32_to_cpu(rx_end->status), stats);
 
-       if (priv->add_radiotap)
-               iwl3945_add_radiotap(priv, rxb->skb, rx_hdr, stats);
-
 #ifdef CONFIG_IWL3945_LEDS
        if (ieee80211_is_data(hdr->frame_control))
                priv->rxtxpackets += len;
@@ -685,7 +588,6 @@ static void iwl3945_rx_reply_rx(struct iwl3945_priv *priv,
        u16 rx_stats_noise_diff = le16_to_cpu(rx_stats->noise_diff);
        u8 network_packet;
 
-       rx_status.antenna = 0;
        rx_status.flag = 0;
        rx_status.mactime = le64_to_cpu(rx_end->timestamp);
        rx_status.freq =
@@ -697,6 +599,13 @@ static void iwl3945_rx_reply_rx(struct iwl3945_priv *priv,
        if (rx_status.band == IEEE80211_BAND_5GHZ)
                rx_status.rate_idx -= IWL_FIRST_OFDM_RATE;
 
+       rx_status.antenna = le16_to_cpu(rx_hdr->phy_flags &
+                                       RX_RES_PHY_FLAGS_ANTENNA_MSK) >> 4;
+
+       /* set the preamble flag if appropriate */
+       if (rx_hdr->phy_flags & RX_RES_PHY_FLAGS_SHORT_PREAMBLE_MSK)
+               rx_status.flag |= RX_FLAG_SHORTPRE;
+
        if ((unlikely(rx_stats->phy_count > 20))) {
                IWL_DEBUG_DROP
                    ("dsp size out of range [0,20]: "
@@ -772,100 +681,7 @@ static void iwl3945_rx_reply_rx(struct iwl3945_priv *priv,
                priv->last_rx_noise = rx_status.noise;
        }
 
-       if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) {
-               iwl3945_pass_packet_to_mac80211(priv, rxb, &rx_status);
-               return;
-       }
-
-       switch (le16_to_cpu(header->frame_control) & IEEE80211_FCTL_FTYPE) {
-       case IEEE80211_FTYPE_MGMT:
-               switch (le16_to_cpu(header->frame_control) &
-                       IEEE80211_FCTL_STYPE) {
-               case IEEE80211_STYPE_PROBE_RESP:
-               case IEEE80211_STYPE_BEACON:{
-                               /* If this is a beacon or probe response for
-                                * our network then cache the beacon
-                                * timestamp */
-                               if ((((priv->iw_mode == IEEE80211_IF_TYPE_STA)
-                                     && !compare_ether_addr(header->addr2,
-                                                            priv->bssid)) ||
-                                    ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS)
-                                     && !compare_ether_addr(header->addr3,
-                                                            priv->bssid)))) {
-                                       struct ieee80211_mgmt *mgmt =
-                                           (struct ieee80211_mgmt *)header;
-                                       __le32 *pos;
-                                       pos = (__le32 *)&mgmt->u.beacon.
-                                           timestamp;
-                                       priv->timestamp0 = le32_to_cpu(pos[0]);
-                                       priv->timestamp1 = le32_to_cpu(pos[1]);
-                                       priv->beacon_int = le16_to_cpu(
-                                           mgmt->u.beacon.beacon_int);
-                                       if (priv->call_post_assoc_from_beacon &&
-                                           (priv->iw_mode ==
-                                               IEEE80211_IF_TYPE_STA))
-                                               queue_work(priv->workqueue,
-                                                   &priv->post_associate.work);
-
-                                       priv->call_post_assoc_from_beacon = 0;
-                               }
-
-                               break;
-                       }
-
-               case IEEE80211_STYPE_ACTION:
-                       /* TODO: Parse 802.11h frames for CSA... */
-                       break;
-
-                       /*
-                        * TODO: Use the new callback function from
-                        * mac80211 instead of sniffing these packets.
-                        */
-               case IEEE80211_STYPE_ASSOC_RESP:
-               case IEEE80211_STYPE_REASSOC_RESP:{
-                               struct ieee80211_mgmt *mgnt =
-                                   (struct ieee80211_mgmt *)header;
-
-                               /* We have just associated, give some
-                                * time for the 4-way handshake if
-                                * any. Don't start scan too early. */
-                               priv->next_scan_jiffies = jiffies +
-                                       IWL_DELAY_NEXT_SCAN_AFTER_ASSOC;
-
-                               priv->assoc_id = (~((1 << 15) | (1 << 14)) &
-                                                 le16_to_cpu(mgnt->u.
-                                                             assoc_resp.aid));
-                               priv->assoc_capability =
-                                   le16_to_cpu(mgnt->u.assoc_resp.capab_info);
-                               if (priv->beacon_int)
-                                       queue_work(priv->workqueue,
-                                           &priv->post_associate.work);
-                               else
-                                       priv->call_post_assoc_from_beacon = 1;
-                               break;
-                       }
-
-               case IEEE80211_STYPE_PROBE_REQ:{
-                               DECLARE_MAC_BUF(mac1);
-                               DECLARE_MAC_BUF(mac2);
-                               DECLARE_MAC_BUF(mac3);
-                               if (priv->iw_mode == IEEE80211_IF_TYPE_IBSS)
-                                       IWL_DEBUG_DROP
-                                           ("Dropping (non network): %s"
-                                            ", %s, %s\n",
-                                            print_mac(mac1, header->addr1),
-                                            print_mac(mac2, header->addr2),
-                                            print_mac(mac3, header->addr3));
-                               return;
-                       }
-               }
-
-       case IEEE80211_FTYPE_DATA:
-               /* fall through */
-       default:
-               iwl3945_pass_packet_to_mac80211(priv, rxb, &rx_status);
-               break;
-       }
+       iwl3945_pass_packet_to_mac80211(priv, rxb, &rx_status);
 }
 
 int iwl3945_hw_txq_attach_buf_to_tfd(struct iwl3945_priv *priv, void *ptr,