mirror of https://gitee.com/openkylin/linux.git
iwlwifi: clean up last_phy_res
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>
This commit is contained in:
parent
76c3c698bf
commit
05d5752027
|
@ -1001,11 +1001,11 @@ void iwlagn_rx_reply_rx(struct iwl_priv *priv,
|
||||||
phy_res->cfg_phy_cnt + len);
|
phy_res->cfg_phy_cnt + len);
|
||||||
ampdu_status = le32_to_cpu(rx_pkt_status);
|
ampdu_status = le32_to_cpu(rx_pkt_status);
|
||||||
} else {
|
} else {
|
||||||
if (!priv->last_phy_res[0]) {
|
if (!priv->_agn.last_phy_res_valid) {
|
||||||
IWL_ERR(priv, "MPDU frame without cached PHY data\n");
|
IWL_ERR(priv, "MPDU frame without cached PHY data\n");
|
||||||
return;
|
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;
|
amsdu = (struct iwl4965_rx_mpdu_res_start *)pkt->u.raw;
|
||||||
header = (struct ieee80211_hdr *)(pkt->u.raw + sizeof(*amsdu));
|
header = (struct ieee80211_hdr *)(pkt->u.raw + sizeof(*amsdu));
|
||||||
len = le16_to_cpu(amsdu->byte_count);
|
len = le16_to_cpu(amsdu->byte_count);
|
||||||
|
@ -1097,7 +1097,7 @@ 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);
|
struct iwl_rx_packet *pkt = rxb_addr(rxb);
|
||||||
priv->last_phy_res[0] = 1;
|
priv->_agn.last_phy_res_valid = true;
|
||||||
memcpy(&priv->last_phy_res[1], &(pkt->u.raw[0]),
|
memcpy(&priv->_agn.last_phy_res, pkt->u.raw,
|
||||||
sizeof(struct iwl_rx_phy_res));
|
sizeof(struct iwl_rx_phy_res));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1120,7 +1120,6 @@ struct iwl_priv {
|
||||||
__le16 sensitivity_tbl[HD_TABLE_SIZE];
|
__le16 sensitivity_tbl[HD_TABLE_SIZE];
|
||||||
|
|
||||||
struct iwl_ht_config current_ht_config;
|
struct iwl_ht_config current_ht_config;
|
||||||
u8 last_phy_res[100];
|
|
||||||
|
|
||||||
/* Rate scaling data */
|
/* Rate scaling data */
|
||||||
u8 retry_rate;
|
u8 retry_rate;
|
||||||
|
@ -1237,6 +1236,9 @@ struct iwl_priv {
|
||||||
* no AGGREGATION
|
* no AGGREGATION
|
||||||
*/
|
*/
|
||||||
u8 agg_tids_count;
|
u8 agg_tids_count;
|
||||||
|
|
||||||
|
struct iwl_rx_phy_res last_phy_res;
|
||||||
|
bool last_phy_res_valid;
|
||||||
} _agn;
|
} _agn;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue