aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
diff options
context:
space:
mode:
authorHarvey Harrison <harvey.harrison@gmail.com>2008-06-11 17:21:56 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-06-14 12:18:12 -0400
commitfd7c8a40b2a63863f749e4d17f0d94d2e5ab1331 (patch)
tree098e07d68b4d1e7a6c02750db480204c0dd469d5 /drivers/net/wireless/iwlwifi/iwl-4965-rs.c
parente36cfdc9b17fa64245ee6206287e5120e59bbfca (diff)
mac80211: add helpers for frame control testing
A few general categories: 1) ieee80211_has_* tests if particular fctl bits are set, the helpers are de in the same order as the fctl defines: A combined _has_a4 was also added to test when both FROMDS and TODS are set. 2) ieee80211_is_* is meant to test whether the frame control is of a certain ftype - data, mgmt, ctl, and two special helpers _is_data_qos, _is_data_pres which also test a subset of the stype space. When testing for a particular stype applicable only to one ftype, functions like ieee80211_is_ack have been added. Note that the ftype is also being checked in these helpers. They have been added for all mgmt and ctl stypes in the same order as the STYPE defines. 3) ieee80211_get_* is meant to take a struct ieee80211_hdr * and returns a pointer to somewhere in the struct, see get_SA, get_DA, get_qos_ctl. The intel wireless drivers had helpers that used this namespace, convert the all to use the new helpers and remove the byteshifting as they were defined in cpu-order rather than little-endian. Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965-rs.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965-rs.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
index d601d31e0de9..202303117285 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
@@ -281,11 +281,11 @@ static u8 rs_tl_add_packet(struct iwl4965_lq_sta *lq_data,
281 u32 time_diff; 281 u32 time_diff;
282 s32 index; 282 s32 index;
283 struct iwl4965_traffic_load *tl = NULL; 283 struct iwl4965_traffic_load *tl = NULL;
284 u16 fc = le16_to_cpu(hdr->frame_control); 284 __le16 fc = hdr->frame_control;
285 u8 tid; 285 u8 tid;
286 286
287 if (ieee80211_is_qos_data(fc)) { 287 if (ieee80211_is_data_qos(fc)) {
288 u8 *qc = ieee80211_get_qos_ctrl(hdr, ieee80211_get_hdrlen(fc)); 288 u8 *qc = ieee80211_get_qos_ctl(hdr);
289 tid = qc[0] & 0xf; 289 tid = qc[0] & 0xf;
290 } else 290 } else
291 return MAX_TID_COUNT; 291 return MAX_TID_COUNT;
@@ -794,7 +794,7 @@ static void rs_tx_status(void *priv_rate, struct net_device *dev,
794 struct iwl4965_scale_tbl_info tbl_type; 794 struct iwl4965_scale_tbl_info tbl_type;
795 struct iwl4965_scale_tbl_info *curr_tbl, *search_tbl; 795 struct iwl4965_scale_tbl_info *curr_tbl, *search_tbl;
796 u8 active_index = 0; 796 u8 active_index = 0;
797 u16 fc = le16_to_cpu(hdr->frame_control); 797 __le16 fc = hdr->frame_control;
798 s32 tpt = 0; 798 s32 tpt = 0;
799 799
800 IWL_DEBUG_RATE_LIMIT("get frame ack response, update rate scale window\n"); 800 IWL_DEBUG_RATE_LIMIT("get frame ack response, update rate scale window\n");
@@ -1651,7 +1651,8 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
1651 int high_tpt = IWL_INVALID_VALUE; 1651 int high_tpt = IWL_INVALID_VALUE;
1652 u32 fail_count; 1652 u32 fail_count;
1653 s8 scale_action = 0; 1653 s8 scale_action = 0;
1654 u16 fc, rate_mask; 1654 __le16 fc;
1655 u16 rate_mask;
1655 u8 update_lq = 0; 1656 u8 update_lq = 0;
1656 struct iwl4965_lq_sta *lq_sta; 1657 struct iwl4965_lq_sta *lq_sta;
1657 struct iwl4965_scale_tbl_info *tbl, *tbl1; 1658 struct iwl4965_scale_tbl_info *tbl, *tbl1;
@@ -1666,7 +1667,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
1666 1667
1667 IWL_DEBUG_RATE("rate scale calculate new rate for skb\n"); 1668 IWL_DEBUG_RATE("rate scale calculate new rate for skb\n");
1668 1669
1669 fc = le16_to_cpu(hdr->frame_control); 1670 fc = hdr->frame_control;
1670 if (!ieee80211_is_data(fc) || is_multicast_ether_addr(hdr->addr1)) { 1671 if (!ieee80211_is_data(fc) || is_multicast_ether_addr(hdr->addr1)) {
1671 /* Send management frames and broadcast/multicast data using 1672 /* Send management frames and broadcast/multicast data using
1672 * lowest rate. */ 1673 * lowest rate. */
@@ -2100,7 +2101,7 @@ static void rs_get_rate(void *priv_rate, struct net_device *dev,
2100 struct ieee80211_conf *conf = &local->hw.conf; 2101 struct ieee80211_conf *conf = &local->hw.conf;
2101 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; 2102 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
2102 struct sta_info *sta; 2103 struct sta_info *sta;
2103 u16 fc; 2104 __le16 fc;
2104 struct iwl_priv *priv = (struct iwl_priv *)priv_rate; 2105 struct iwl_priv *priv = (struct iwl_priv *)priv_rate;
2105 struct iwl4965_lq_sta *lq_sta; 2106 struct iwl4965_lq_sta *lq_sta;
2106 2107
@@ -2112,7 +2113,7 @@ static void rs_get_rate(void *priv_rate, struct net_device *dev,
2112 2113
2113 /* Send management frames and broadcast/multicast data using lowest 2114 /* Send management frames and broadcast/multicast data using lowest
2114 * rate. */ 2115 * rate. */
2115 fc = le16_to_cpu(hdr->frame_control); 2116 fc = hdr->frame_control;
2116 if (!ieee80211_is_data(fc) || is_multicast_ether_addr(hdr->addr1) || 2117 if (!ieee80211_is_data(fc) || is_multicast_ether_addr(hdr->addr1) ||
2117 !sta || !sta->rate_ctrl_priv) { 2118 !sta || !sta->rate_ctrl_priv) {
2118 sel->rate_idx = rate_lowest_index(local, sband, sta); 2119 sel->rate_idx = rate_lowest_index(local, sband, sta);