iwlwifi: clean up last_phy_res
authorJohannes Berg <johannes.berg@intel.com>
Wed, 31 Mar 2010 15:59:17 +0000 (08:59 -0700)
committerReinette Chatre <reinette.chatre@intel.com>
Fri, 9 Apr 2010 18:28:16 +0000 (11:28 -0700)
The last_phy_res[100] variable is used in an odd
way. The first byte of it is used as a flag, and
the rest as the data. Thus, the array need only
be 61 bytes, since it is just the flag and a
struct iwl_rx_phy_res (which is 60 bytes).

Clean this up by splitting the variable into two:
last_phy_res and last_phy_res_valid, using correct
types for both (struct and bool). While doing all
this also move the variables to the _agn part of
the hw-specific union since they only apply to
A-MPDUs.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
drivers/net/wireless/iwlwifi/iwl-agn-lib.c
drivers/net/wireless/iwlwifi/iwl-dev.h

index 49e20f1acb7ce7d8c05db281011f7d713f114b56..7f27a945c18781930fa897ffc3566505340448c5 100644 (file)
@@ -1001,11 +1001,11 @@ void iwlagn_rx_reply_rx(struct iwl_priv *priv,
                                phy_res->cfg_phy_cnt + len);
                ampdu_status = le32_to_cpu(rx_pkt_status);
        } else {
-               if (!priv->last_phy_res[0]) {
+               if (!priv->_agn.last_phy_res_valid) {
                        IWL_ERR(priv, "MPDU frame without cached PHY data\n");
                        return;
                }
-               phy_res = (struct iwl_rx_phy_res *)&priv->last_phy_res[1];
+               phy_res = &priv->_agn.last_phy_res;
                amsdu = (struct iwl4965_rx_mpdu_res_start *)pkt->u.raw;
                header = (struct ieee80211_hdr *)(pkt->u.raw + sizeof(*amsdu));
                len = le16_to_cpu(amsdu->byte_count);
@@ -1094,10 +1094,10 @@ void iwlagn_rx_reply_rx(struct iwl_priv *priv,
 /* Cache phy data (Rx signal strength, etc) for HT frame (REPLY_RX_PHY_CMD).
  * This will be used later in iwl_rx_reply_rx() for REPLY_RX_MPDU_CMD. */
 void iwlagn_rx_reply_rx_phy(struct iwl_priv *priv,
-                                   struct iwl_rx_mem_buffer *rxb)
+                           struct iwl_rx_mem_buffer *rxb)
 {
        struct iwl_rx_packet *pkt = rxb_addr(rxb);
-       priv->last_phy_res[0] = 1;
-       memcpy(&priv->last_phy_res[1], &(pkt->u.raw[0]),
+       priv->_agn.last_phy_res_valid = true;
+       memcpy(&priv->_agn.last_phy_res, pkt->u.raw,
               sizeof(struct iwl_rx_phy_res));
 }
index 95c2bc3c79ed8e9b32f4868ec410538c6401534d..9466e909f55319822a5e503eb10d9c84c9071e28 100644 (file)
@@ -1120,7 +1120,6 @@ struct iwl_priv {
        __le16 sensitivity_tbl[HD_TABLE_SIZE];
 
        struct iwl_ht_config current_ht_config;
-       u8 last_phy_res[100];
 
        /* Rate scaling data */
        u8 retry_rate;
@@ -1237,6 +1236,9 @@ struct iwl_priv {
                         * no AGGREGATION
                         */
                        u8 agg_tids_count;
+
+                       struct iwl_rx_phy_res last_phy_res;
+                       bool last_phy_res_valid;
                } _agn;
 #endif
        };