linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 01/28] iwlwifi: fix a lot of checkpatch.pl warnings
       [not found] <11865584251026-git-send-email-yi.zhu@intel.com>
@ 2007-08-08  7:33 ` Zhu Yi
  2007-08-08  7:33   ` [PATCH 02/28] iwlwifi: add more Kconfig options Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-3945-rs.c |    4 +-
 drivers/net/wireless/iwl-3945.c    |   81 ++++++------
 drivers/net/wireless/iwl-4965-rs.c |   96 +++++++-------
 drivers/net/wireless/iwl-4965.c    |  176 ++++++++++++------------
 drivers/net/wireless/iwl-4965.h    |    4 +-
 drivers/net/wireless/iwl-base.c    |  266 +++++++++++++++++-------------------
 drivers/net/wireless/iwl-helpers.h |    5 +-
 drivers/net/wireless/iwl-io.h      |   28 ++--
 drivers/net/wireless/iwlwifi.h     |   14 +-
 9 files changed, 325 insertions(+), 349 deletions(-)

diff --git a/drivers/net/wireless/iwl-3945-rs.c b/drivers/net/wireless/iwl-3945-rs.c
index 0dfafc9..8a98eb8 100644
--- a/drivers/net/wireless/iwl-3945-rs.c
+++ b/drivers/net/wireless/iwl-3945-rs.c
@@ -745,9 +745,9 @@ static struct ieee80211_rate *rs_get_rate(void *priv_rate,
 		IWL_DEBUG_RATE("decrease rate because of low success_ratio\n");
 		scale_action = -1;
 	} else if ((low_tpt == IWL_INVALID_VALUE) &&
-		   (high_tpt == IWL_INVALID_VALUE)) {
+		   (high_tpt == IWL_INVALID_VALUE))
 		scale_action = 1;
-	} else if ((low_tpt != IWL_INVALID_VALUE) &&
+	else if ((low_tpt != IWL_INVALID_VALUE) &&
 		   (high_tpt != IWL_INVALID_VALUE)
 		   && (low_tpt < current_tpt)
 		   && (high_tpt < current_tpt)) {
diff --git a/drivers/net/wireless/iwl-3945.c b/drivers/net/wireless/iwl-3945.c
index 6074ae0..8e78ad5 100644
--- a/drivers/net/wireless/iwl-3945.c
+++ b/drivers/net/wireless/iwl-3945.c
@@ -168,12 +168,12 @@ void iwl_disable_events(struct iwl_priv *priv)
 		IWL_DEBUG_INFO("Disabling selected uCode log events at 0x%x\n",
 			       disable_ptr);
 		rc = iwl_grab_restricted_access(priv);
-		for (i = 0; i < IWL_EVT_DISABLE_SIZE; i++) {
+		for (i = 0; i < IWL_EVT_DISABLE_SIZE; i++)
 			iwl_write_restricted_mem(priv,
 						 disable_ptr +
 						 (i * sizeof(u32)),
 						 evt_disable[i]);
-		}
+
 		iwl_release_restricted_access(priv);
 	} else {
 		IWL_DEBUG_INFO("Selected uCode log events may be disabled\n");
@@ -943,9 +943,8 @@ int iwl_hw_nic_init(struct iwl_priv *priv)
 		IWL_DEBUG_INFO("SKU OP mode is mrc\n");
 		iwl_set_bit(priv, CSR_HW_IF_CONFIG_REG,
 			    CSR_HW_IF_CONFIG_REG_BIT_SKU_MRC);
-	} else {
+	} else
 		IWL_DEBUG_INFO("SKU OP mode is basic\n");
-	}
 
 	if ((priv->eeprom.board_revision & 0xF0) == 0xD0) {
 		IWL_DEBUG_INFO("3945ABG revision is 0x%X\n",
@@ -1076,10 +1075,10 @@ int iwl_hw_nic_stop_master(struct iwl_priv *priv)
 	reg_val = iwl_read32(priv, CSR_GP_CNTRL);
 
 	if (CSR_GP_CNTRL_REG_FLAG_MAC_POWER_SAVE ==
-	    (reg_val & CSR_GP_CNTRL_REG_MSK_POWER_SAVE_TYPE)) {
+	    (reg_val & CSR_GP_CNTRL_REG_MSK_POWER_SAVE_TYPE))
 		IWL_DEBUG_INFO
 		    ("Card in power save, master is already stopped\n");
-	} else {
+	else {
 		rc = iwl_poll_bit(priv,
 				  CSR_RESET,
 				  CSR_RESET_REG_FLAG_MASTER_DISABLED,
@@ -1190,8 +1189,8 @@ static int iwl_hw_reg_txpower_get_temperature(struct iwl_priv *priv)
 		/* if really really hot(?),
 		 *   substitute the 3rd band/group's temp measured at factory */
 		if (priv->last_temperature > 100)
-			temperature =
-				(s16)le16_to_cpu(priv->eeprom.groups[2].temperature);
+			temperature = (s16) le16_to_cpu(
+					priv->eeprom.groups[2].temperature);
 		else /* else use most recent "sane" value from driver */
 			temperature = priv->last_temperature;
 	}
@@ -1325,7 +1324,7 @@ static struct iwl_tx_power power_gain_table[2][IWL_MAX_GAIN_ENTRIES] = {
 	 {3, 113},
 	 {3, 106},
 	 {3, 102},
-	 {3, 95}},		/* 2.4 GHz, lowest power */
+	 {3, 95} },		/* 2.4 GHz, lowest power */
 	{
 	 {251, 127},		/* 5.x GHz, highest power */
 	 {251, 120},
@@ -1404,7 +1403,7 @@ static struct iwl_tx_power power_gain_table[2][IWL_MAX_GAIN_ENTRIES] = {
 	 {35, 113},
 	 {35, 107},
 	 {35, 99},
-	 {3, 120}}		/* 5.x GHz, lowest power */
+	 {3, 120} }		/* 5.x GHz, lowest power */
 };
 
 static inline u8 iwl_hw_reg_fix_power_index(int index)
@@ -1426,7 +1425,7 @@ static inline u8 iwl_hw_reg_fix_power_index(int index)
  * or 6 Mbit (OFDM) rates.
  */
 static void iwl_hw_reg_set_scan_power(struct iwl_priv *priv, u32 scan_tbl_index,
-			       s32 rate_index, const s8 * clip_pwrs,
+			       s32 rate_index, const s8 *clip_pwrs,
 			       struct iwl_channel_info *ch_info,
 			       int band_index)
 {
@@ -1456,11 +1455,6 @@ static void iwl_hw_reg_set_scan_power(struct iwl_priv *priv, u32 scan_tbl_index,
 	    - (power - ch_info->power_info
 	       [IWL_RATE_6M_INDEX].requested_power) * 2;
 
-#if 0
-	IWL_DEBUG_POWER("chnl %d scan power index %d\n",
-			ch_info->channel, power_index);
-#endif
-
 	/* store reference index that we use when adjusting *all* scan
 	 *   powers.  So we can accommodate user (all channel) or spectrum
 	 *   management (single channel) power changes "between" temperature
@@ -1541,9 +1535,9 @@ int iwl_hw_reg_send_txpower(struct iwl_priv *priv)
  *
  * This does *not* send anything to NIC, just sets up ch_info for one channel.
  *
- * NOTE:reg_compensate_for_temperature_dif() *must* be run after this to
- *	properly fill out the scan powers, and actual h/w gain settings,
- *	and send changes to NIC
+ * NOTE: reg_compensate_for_temperature_dif() *must* be run after this to
+ *	 properly fill out the scan powers, and actual h/w gain settings,
+ *	 and send changes to NIC
  */
 static int iwl_hw_reg_set_new_power(struct iwl_priv *priv,
 			     struct iwl_channel_info *ch_info)
@@ -1602,12 +1596,13 @@ static int iwl_hw_reg_set_new_power(struct iwl_priv *priv,
 }
 
 /**
- * iwl_hw_reg_get_channel_txpower_limit - returns new power limit for channel
+ * iwl_hw_reg_get_ch_txpower_limit - returns new power limit for channel
  *
- * NOTE:  Returned power limit may be less (but not more) than requested,
- *   based strictly on regulatory (eeprom and spectrum mgt) limitations
- *   (no consideration for h/w clipping limitations). */
-static int iwl_hw_reg_get_channel_txpower_limit(struct iwl_channel_info *ch_info)
+ * NOTE: Returned power limit may be less (but not more) than requested,
+ *	 based strictly on regulatory (eeprom and spectrum mgt) limitations
+ *	 (no consideration for h/w clipping limitations).
+ */
+static int iwl_hw_reg_get_ch_txpower_limit(struct iwl_channel_info *ch_info)
 {
 	s8 max_power;
 
@@ -1621,6 +1616,7 @@ static int iwl_hw_reg_get_channel_txpower_limit(struct iwl_channel_info *ch_info
 	else
 #endif
 		max_power = ch_info->eeprom.max_power_avg;
+
 	return min(max_power, ch_info->max_power_avg);
 }
 
@@ -1657,7 +1653,8 @@ static int iwl_hw_reg_comp_txpower_temp(struct iwl_priv *priv)
 
 		/* get power index adjustment based on curr and factory
 		 * temps */
-		delta_index = iwl_hw_reg_adjust_power_by_temp(temperature, ref_temp);
+		delta_index = iwl_hw_reg_adjust_power_by_temp(temperature,
+							      ref_temp);
 
 		/* set tx power value for all rates, OFDM and CCK */
 		for (rate_index = 0; rate_index < IWL_RATE_COUNT;
@@ -1720,7 +1717,7 @@ int iwl_hw_reg_set_txpower(struct iwl_priv *priv, s8 power)
 
 		/* find minimum power of all user and regulatory constraints
 		 *    (does not consider h/w clipping limitations) */
-		max_power = iwl_hw_reg_get_channel_txpower_limit(ch_info);
+		max_power = iwl_hw_reg_get_ch_txpower_limit(ch_info);
 		max_power = min(power, max_power);
 		if (max_power != ch_info->curr_txpow) {
 			ch_info->curr_txpow = max_power;
@@ -1784,15 +1781,19 @@ void iwl3945_bg_reg_txpower_periodic(struct work_struct *work)
 	mutex_unlock(&priv->mutex);
 }
 
-/* iwl_hw_reg_get_chnl_grp_index - find the channel-group index (0-4) for the channel.
+/**
+ * iwl_hw_reg_get_ch_grp_index - find the channel-group index (0-4)
+ * 				   for the channel.
+ *
+ * This function is used when initializing channel-info structs.
  *
- *  ... used when initializing channel-info structs.
- * NOTE:  These channel groups do *NOT* match the bands above!
- *   These channel groups are based on factory-tested channels;
- *   on A-band, EEPROM's "group frequency" entries represent the top channel
- *   in each group 1-4.  Group 5 All B/G channels are in group 0.  */
-static u16 iwl_hw_reg_get_chnl_grp_index(struct iwl_priv *priv,
-				  const struct iwl_channel_info *ch_info)
+ * NOTE: These channel groups do *NOT* match the bands above!
+ *	 These channel groups are based on factory-tested channels;
+ *	 on A-band, EEPROM's "group frequency" entries represent the top
+ *	 channel in each group 1-4.  Group 5 All B/G channels are in group 0.
+ */
+static u16 iwl_hw_reg_get_ch_grp_index(struct iwl_priv *priv,
+				       const struct iwl_channel_info *ch_info)
 {
 	struct iwl_eeprom_txpower_group *ch_grp = &priv->eeprom.groups[0];
 	u8 group;
@@ -1827,7 +1828,7 @@ static u16 iwl_hw_reg_get_chnl_grp_index(struct iwl_priv *priv,
  */
 static int iwl_hw_reg_get_matched_power_index(struct iwl_priv *priv,
 				       s8 requested_power,
-				       s32 setting_index, s32 * new_index)
+				       s32 setting_index, s32 *new_index)
 {
 	const struct iwl_eeprom_txpower_group *chnl_grp = NULL;
 	s32 index0, index1;
@@ -1982,17 +1983,17 @@ int iwl3945_txpower_set_from_eeprom(struct iwl_priv *priv)
 			continue;
 
 		/* find this channel's channel group (*not* "band") index */
-		ch_info->group_index = iwl_hw_reg_get_chnl_grp_index(priv, ch_info);
+		ch_info->group_index =
+			iwl_hw_reg_get_ch_grp_index(priv, ch_info);
 
 		/* Get this chnlgrp's rate->max/clip-powers table */
 		clip_pwrs = priv->clip_groups[ch_info->group_index].clip_powers;
 
 		/* calculate power index *adjustment* value according to
 		 *  diff between current temperature and factory temperature */
-		delta_index = iwl_hw_reg_adjust_power_by_temp(
-			temperature,
-			(s16)le16_to_cpu(
-				priv->eeprom.groups[ch_info->group_index].temperature));
+		delta_index = iwl_hw_reg_adjust_power_by_temp(temperature,
+				(s16) le16_to_cpu(priv->eeprom.groups[
+					ch_info->group_index].temperature));
 
 		IWL_DEBUG_POWER("Delta index for channel %d: %d [%d]\n",
 				ch_info->channel, delta_index, temperature +
diff --git a/drivers/net/wireless/iwl-4965-rs.c b/drivers/net/wireless/iwl-4965-rs.c
index 7d4a980..07fe911 100644
--- a/drivers/net/wireless/iwl-4965-rs.c
+++ b/drivers/net/wireless/iwl-4965-rs.c
@@ -203,10 +203,9 @@ static int rs_send_lq_cmd(struct iwl_priv *priv,
 		       lq->general_params.single_stream_ant_msk,
 		       lq->general_params.dual_stream_ant_msk);
 #ifdef CONFIG_IWLWIFI_DEBUG
-	for (i = 0; i < LINK_QUAL_MAX_RETRY_NUM; i++) {
+	for (i = 0; i < LINK_QUAL_MAX_RETRY_NUM; i++)
 		IWL_DEBUG_RATE("lq index %d 0x%X\n",
 			       i, lq->rate_scale_table[i].rate_n_flags);
-	}
 #endif
 
 	if (flags & CMD_ASYNC)
@@ -217,16 +216,15 @@ static int rs_send_lq_cmd(struct iwl_priv *priv,
 	return rc;
 }
 
-static int rs_rate_scale_clear_window(struct iwl_rate_scale_data
-				      *window)
+static int rs_rate_scale_clear_window(struct iwl_rate_scale_data *window)
 {
-
 	window->data = 0;
 	window->success_counter = 0;
 	window->success_ratio = IWL_INVALID_VALUE;
 	window->counter = 0;
 	window->average_tpt = IWL_INVALID_VALUE;
 	window->stamp = 0;
+
 	return 0;
 }
 
@@ -266,20 +264,19 @@ static int rs_collect_tx_data(struct iwl_rate_scale_data *windows,
 		window->data |= 0x1;
 	}
 
-	if (window->counter > 0) {
+	if (window->counter > 0)
 		window->success_ratio = 128 * (100 * window->success_counter)
 					/ window->counter;
-	} else
+	else
 		window->success_ratio = IWL_INVALID_VALUE;
 
-
 	fail_count = window->counter - window->success_counter;
+
 	if ((fail_count >= IWL_RATE_MIN_FAILURE_TH) ||
 	    (window->success_counter >= IWL_RATE_MIN_SUCCESS_TH))
-		window->average_tpt = ((window->success_ratio *
-					tpt + 64) / 128);
+		window->average_tpt = (window->success_ratio * tpt + 64) / 128;
 	else
-		 window->average_tpt = IWL_INVALID_VALUE;
+		window->average_tpt = IWL_INVALID_VALUE;
 
 	window->stamp = jiffies;
 
@@ -456,9 +453,9 @@ static inline s8 rs_use_green(struct iwl_priv *priv)
  *
  */
 static void rs_get_supported_rates(struct iwl_rate_scale_priv *lq_data,
-				    struct ieee80211_hdr *hdr,
-				    enum iwl_table_type rate_type,
-				    u16 * data_rate)
+				   struct ieee80211_hdr *hdr,
+				   enum iwl_table_type rate_type,
+				   u16 *data_rate)
 {
 	if (is_legacy(rate_type))
 		*data_rate = lq_data->active_rate;
@@ -469,8 +466,8 @@ static void rs_get_supported_rates(struct iwl_rate_scale_priv *lq_data,
 			*data_rate = lq_data->active_mimo_rate;
 	}
 
-	if (hdr && (is_multicast_ether_addr(hdr->addr1))
-	    && (lq_data->active_rate_basic))
+	if (hdr && is_multicast_ether_addr(hdr->addr1) &&
+	    lq_data->active_rate_basic)
 		*data_rate = lq_data->active_rate_basic;
 }
 
@@ -1501,9 +1498,9 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
 
 	current_tpt = window->average_tpt;
 
-	if (low != IWL_RATE_INVALID) {
+	if (low != IWL_RATE_INVALID)
 		low_tpt = tbl->win[low].average_tpt;
-	}
+
 	if (high != IWL_RATE_INVALID)
 		high_tpt = tbl->win[high].average_tpt;
 
@@ -1515,14 +1512,14 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
 		IWL_DEBUG_RATE("decrease rate because of low success_ratio\n");
 		scale_action = -1;
 	} else if ((low_tpt == IWL_INVALID_VALUE) &&
-		   (high_tpt == IWL_INVALID_VALUE)) {
+		   (high_tpt == IWL_INVALID_VALUE))
 		scale_action = 1;
-	} else if ((low_tpt != IWL_INVALID_VALUE) &&
-		   (high_tpt != IWL_INVALID_VALUE)
-		   && (low_tpt < current_tpt)
-		   && (high_tpt < current_tpt)) {
+	else if ((low_tpt != IWL_INVALID_VALUE) &&
+		 (high_tpt != IWL_INVALID_VALUE) &&
+		 (low_tpt < current_tpt) &&
+		 (high_tpt < current_tpt))
 		scale_action = 0;
-	} else {
+	else {
 		if (high_tpt != IWL_INVALID_VALUE) {
 			if (high_tpt > current_tpt)
 				scale_action = 1;
@@ -1557,7 +1554,6 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
 			index = low;
 		}
 		break;
-
 	case 1:
 		if (high != IWL_RATE_INVALID) {
 			update_lq = 1;
@@ -1565,30 +1561,29 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
 		}
 
 		break;
-
 	case 0:
-
 	default:
 		break;
 	}
 
-	IWL_DEBUG_HT
-	    ("choose rate scale index %d action %d low %d high %d\n",
-	     index, scale_action, low, high);
+	IWL_DEBUG_HT("choose rate scale index %d action %d low %d high %d\n",
+		     index, scale_action, low, high);
 
  lq_update:
 	if (update_lq) {
 		rs_mcs_from_tbl(&mcs_rate, tbl, index, is_green);
 		rs_fill_link_cmd(lq_data, &mcs_rate, &(lq_data->lq), sta);
+
 		if (!rs_send_lq_cmd(priv, &lq_data->lq, CMD_ASYNC))
 			lq_data->commit_lq = 0;
 		else
 			lq_data->commit_lq = 1;
 	}
 	rs_stay_in_table(lq_data);
-	if (!update_lq
-	    && !done_search && !lq_data->stay_in_tbl) {
+
+	if (!update_lq && !done_search && !lq_data->stay_in_tbl) {
 		lq_data->last_tpt = current_tpt;
+
 		if (is_legacy(tbl->lq_type))
 			rs_move_legacy_other(priv, lq_data, index);
 		else if (is_siso(tbl->lq_type))
@@ -1602,18 +1597,19 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
 				rs_rate_scale_clear_window(&(tbl->win[i]));
 
 			index = iwl_rate_index_from_plcp(
-				tbl->current_rate.rate_n_flags);
+					tbl->current_rate.rate_n_flags);
 
 			IWL_DEBUG_HT("Switch current  mcs: %X index: %d\n",
 				     tbl->current_rate.rate_n_flags, index);
 			rs_fill_link_cmd(lq_data, &tbl->current_rate,
-					   &(lq_data->lq), sta);
+					 &(lq_data->lq), sta);
 			if (!rs_send_lq_cmd(priv, &lq_data->lq, CMD_ASYNC))
 				lq_data->commit_lq = 0;
 			else
 				lq_data->commit_lq = 1;
 		}
 		tbl1 = &(lq_data->lq_info[lq_data->active_tbl]);
+
 		if (is_legacy(tbl1->lq_type) &&
 #ifdef CONFIG_IWLWIFI_HT
 		    !priv->current_assoc_ht.is_ht &&
@@ -1642,12 +1638,14 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
 			lq_data->flush_timer = jiffies;
 	}
 
- out:
+out:
 	rs_mcs_from_tbl(&tbl->current_rate, tbl, index, is_green);
 	i = index;
 	sta->last_txrate = i;
+
 	/* sta->txrate is an index to A mode rates which start
-	*  at IWL_FIRST_OFDM_RATE  */
+	 * at IWL_FIRST_OFDM_RATE
+	 */
 	if ((lq_data->phymode == (u8) MODE_IEEE80211A) ||
 	    (lq_data->phymode == (u8) MODE_ATHEROS_TURBO))
 		sta->txrate = i - IWL_FIRST_OFDM_RATE;
@@ -1793,9 +1791,8 @@ static struct ieee80211_rate *rs_get_rate(void *priv_rate,
 
  done:
 	sta_info_put(sta);
-	if ((i < 0) || (i > IWL_RATE_COUNT)) {
+	if ((i < 0) || (i > IWL_RATE_COUNT))
 		return rs_get_lowest_rate(local);
-	}
 
 	return &priv->ieee_rates[i];
 }
@@ -1927,7 +1924,8 @@ static int rs_fill_link_cmd(struct iwl_rate_scale_priv *lq_data,
 		repeat_cur_rate = IWL_HT_NUMBER_TRY;
 
 	lq_cmd->rate_scale_table[index].rate_n_flags = tx_mcs->rate_n_flags;
-	lq_cmd->general_params.mimo_delimiter = is_mimo(tbl_type.lq_type) ? 1 : 0;
+	lq_cmd->general_params.mimo_delimiter =
+			is_mimo(tbl_type.lq_type) ? 1 : 0;
 	new_rate.rate_n_flags = tx_mcs->rate_n_flags;
 
 	if (is_mimo(tbl_type.lq_type) || (tbl_type.antenna_type == ANT_MAIN))
@@ -1940,8 +1938,9 @@ static int rs_fill_link_cmd(struct iwl_rate_scale_priv *lq_data,
 
 	while (index < LINK_QUAL_MAX_RETRY_NUM) {
 		while (repeat_cur_rate && (index < LINK_QUAL_MAX_RETRY_NUM)) {
-			if (is_legacy(tbl_type.lq_type)){
-				if (ant_toggle_count < NUM_TRY_BEFORE_ANTENNA_TOGGLE)
+			if (is_legacy(tbl_type.lq_type)) {
+				if (ant_toggle_count <
+				    NUM_TRY_BEFORE_ANTENNA_TOGGLE)
 					ant_toggle_count++;
 				else {
 					rs_toggle_antenna(&new_rate, &tbl_type);
@@ -1954,13 +1953,13 @@ static int rs_fill_link_cmd(struct iwl_rate_scale_priv *lq_data,
 			index++;
 		}
 		rs_get_tbl_info_from_mcs(&lq_cmd->rate_scale_table[index - 1],
-					  lq_data->phymode,
-					  &tbl_type, &rate_idx);
+					 lq_data->phymode, &tbl_type,
+					 &rate_idx);
 		if (is_mimo(tbl_type.lq_type))
 			lq_cmd->general_params.mimo_delimiter = index;
 
 		rs_get_lower_rate(lq_data, &tbl_type, rate_idx,
-				     use_ht_possible, &new_rate, sta);
+				  use_ht_possible, &new_rate, sta);
 
 		if (is_legacy(tbl_type.lq_type)) {
 			if (ant_toggle_count < NUM_TRY_BEFORE_ANTENNA_TOGGLE)
@@ -1970,21 +1969,20 @@ static int rs_fill_link_cmd(struct iwl_rate_scale_priv *lq_data,
 				ant_toggle_count = 1;
 			}
 			repeat_cur_rate = IWL_NUMBER_TRY;
-		} else {
+		} else
 			repeat_cur_rate = IWL_HT_NUMBER_TRY;
-		}
 
 		use_ht_possible = 0;
 
 		lq_cmd->rate_scale_table[index].rate_n_flags =
-		    new_rate.rate_n_flags;
-		/*lq_cmd->rate_scale_table[index].rate_n_flags = 0x800d; */
+				new_rate.rate_n_flags;
+		/* lq_cmd->rate_scale_table[index].rate_n_flags = 0x800d; */
 
 		index++;
 		repeat_cur_rate--;
 	}
 
-	/*lq_cmd->rate_scale_table[0].rate_n_flags = 0x800d; */
+	/* lq_cmd->rate_scale_table[0].rate_n_flags = 0x800d; */
 
 	lq_cmd->general_params.dual_stream_ant_msk = 3;
 	lq_cmd->agg_params.agg_dis_start_th = 3;
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index 2e97e6b..6b8fd73 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -105,7 +105,7 @@ static u8 is_single_stream(struct iwl_priv *priv)
  * This does not determine *which* chains to use, just how many.
  */
 static int iwl4965_get_rx_chain_counter(struct iwl_priv *priv,
-					u8 * idle_state, u8 * rx_state)
+					u8 *idle_state, u8 *rx_state)
 {
 	u8 is_single = is_single_stream(priv);
 	u8 is_cam = (priv->status & STATUS_POWER_PMI) ? 0 : 1;
@@ -205,21 +205,17 @@ static int iwl4965_nic_set_pwr_src(struct iwl_priv *priv, int pwr_max)
 		u32 val;
 		rc = pci_read_config_dword(priv->pci_dev, 0x0C8, &val);
 
-		if (val & PCI_CFG_PMC_PME_FROM_D3COLD_SUPPORT) {
+		if (val & PCI_CFG_PMC_PME_FROM_D3COLD_SUPPORT)
 			iwl_set_bits_mask_restricted_reg(
 				priv, ALM_APMG_PS_CTL,
 				APMG_PS_CTRL_REG_VAL_POWER_SRC_VAUX,
 				~APMG_PS_CTRL_REG_MSK_POWER_SRC);
-
-		}
-	} else {
+	} else
 		iwl_set_bits_mask_restricted_reg(
 			priv, ALM_APMG_PS_CTL,
 			APMG_PS_CTRL_REG_VAL_POWER_SRC_VMAIN,
 			~APMG_PS_CTRL_REG_MSK_POWER_SRC);
 
-	}
-
 	iwl_release_restricted_access(priv);
 	spin_unlock_irqrestore(&priv->lock, flags);
 
@@ -262,7 +258,6 @@ static int iwl4965_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq)
 	 */
 
 	iwl_release_restricted_access(priv);
-
 	spin_unlock_irqrestore(&priv->lock, flags);
 
 	return 0;
@@ -279,9 +274,9 @@ static int iwl4965_kw_init(struct iwl_priv *priv)
 		goto out;
 
 	iwl_write_restricted(priv, IWL_FH_KW_MEM_ADDR_REG,
-			     (priv->kw.dma_addr >> 4));
+			     priv->kw.dma_addr >> 4);
 	iwl_release_restricted_access(priv);
- out:
+out:
 	spin_unlock_irqrestore(&priv->lock, flags);
 	return rc;
 }
@@ -290,6 +285,7 @@ static int iwl4965_kw_alloc(struct iwl_priv *priv)
 {
 	struct pci_dev *dev = priv->pci_dev;
 	struct iwl_kw *kw = &priv->kw;
+
 	kw->size = IWL4965_KW_SIZE;	/* TBW need set somewhere else */
 	kw->v_addr = pci_alloc_consistent(dev, kw->size, &kw->dma_addr);
 	if (!kw->v_addr)
@@ -301,38 +297,37 @@ static int iwl4965_kw_alloc(struct iwl_priv *priv)
 #define CHECK_AND_PRINT(x) ((eeprom_ch->flags & EEPROM_CHANNEL_##x) \
 			    ? # x " " : "")
 
-int iwl4965_set_fat_chan_info(struct iwl_priv *priv, int phymode,
-			      int channel,
+int iwl4965_set_fat_chan_info(struct iwl_priv *priv, int phymode, int channel,
 			      const struct iwl_eeprom_channel *eeprom_ch,
 			      u8 fat_extension_channel)
 {
 	struct iwl_channel_info *ch_info;
 
-	ch_info = (struct iwl_channel_info *)iwl_get_channel_info(priv,
-						phymode,
-						channel);
+	ch_info = (struct iwl_channel_info *)
+			iwl_get_channel_info(priv, phymode, channel);
+
 	if (!is_channel_valid(ch_info))
 		return -1;
 
-		IWL_DEBUG_INFO("FAT Ch. %d [%sGHz] %s%s%s%s%s%s(" BIT_FMT8
-				" %ddBm): Ad-Hoc %ssupported\n",
-				ch_info->channel,
-				is_channel_a_band(ch_info) ?
-				"5.2" : "2.4",
-				CHECK_AND_PRINT(IBSS),
-				CHECK_AND_PRINT(ACTIVE),
-				CHECK_AND_PRINT(RADAR),
-				CHECK_AND_PRINT(WIDE),
-				CHECK_AND_PRINT(NARROW),
-				CHECK_AND_PRINT(DFS),
-				BIT_ARG8(eeprom_ch->flags),
-				eeprom_ch->
-				max_power_avg,
-				((eeprom_ch->
-				flags & EEPROM_CHANNEL_IBSS)
-				&& !(eeprom_ch->
-				flags & EEPROM_CHANNEL_RADAR))
-				? "" : "not ");
+	IWL_DEBUG_INFO("FAT Ch. %d [%sGHz] %s%s%s%s%s%s(" BIT_FMT8
+			" %ddBm): Ad-Hoc %ssupported\n",
+			ch_info->channel,
+			is_channel_a_band(ch_info) ?
+			"5.2" : "2.4",
+			CHECK_AND_PRINT(IBSS),
+			CHECK_AND_PRINT(ACTIVE),
+			CHECK_AND_PRINT(RADAR),
+			CHECK_AND_PRINT(WIDE),
+			CHECK_AND_PRINT(NARROW),
+			CHECK_AND_PRINT(DFS),
+			BIT_ARG8(eeprom_ch->flags),
+			eeprom_ch->
+			max_power_avg,
+			((eeprom_ch->
+			flags & EEPROM_CHANNEL_IBSS)
+			&& !(eeprom_ch->
+			flags & EEPROM_CHANNEL_RADAR))
+			? "" : "not ");
 
 	ch_info->fat_eeprom = *eeprom_ch;
 	ch_info->fat_max_power_avg = eeprom_ch->max_power_avg;
@@ -349,11 +344,11 @@ static void iwl4965_kw_free(struct iwl_priv *priv)
 {
 	struct pci_dev *dev = priv->pci_dev;
 	struct iwl_kw *kw = &priv->kw;
+
 	if (kw->v_addr) {
 		pci_free_consistent(dev, kw->size, kw->v_addr, kw->dma_addr);
 		memset(kw, 0, sizeof(*kw));
 	}
-
 }
 
 /**
@@ -581,10 +576,10 @@ int iwl_hw_nic_stop_master(struct iwl_priv *priv)
 	reg_val = iwl_read32(priv, CSR_GP_CNTRL);
 
 	if (CSR_GP_CNTRL_REG_FLAG_MAC_POWER_SAVE ==
-	    (reg_val & CSR_GP_CNTRL_REG_MSK_POWER_SAVE_TYPE)) {
+	    (reg_val & CSR_GP_CNTRL_REG_MSK_POWER_SAVE_TYPE))
 		IWL_DEBUG_INFO
 		    ("Card in power save, master is already stopped\n");
-	} else {
+	else {
 		rc = iwl_poll_bit(priv,
 				  CSR_RESET,
 				  CSR_RESET_REG_FLAG_MASTER_DISABLED,
@@ -923,10 +918,8 @@ static int iwl4965_sens_energy_cck(struct iwl_priv *priv,
 			data->auto_corr_cck_mrc =
 					 max((u32)AUTO_CORR_MIN_CCK_MRC, val);
 
-		} else {
+		} else
 			IWL_DEBUG_CALIB("... but not changing sensitivity\n");
-		}
-
 
 	/* Else we got a healthy number of false alarms, keep status quo */
 	} else {
@@ -946,9 +939,10 @@ static int iwl4965_sens_energy_cck(struct iwl_priv *priv,
 	}
 
 	/* Make sure the energy threshold does not go above the measured
-	 *   energy of the desired Rx signals (reduced by backoff margin),
-	 *   or else we might start missing Rx frames.
-	 * Lower value is higher energy, so we use max()! */
+	 * energy of the desired Rx signals (reduced by backoff margin),
+	 * or else we might start missing Rx frames.
+	 * Lower value is higher energy, so we use max()!
+	 */
 	data->nrg_th_cck = max(max_nrg_cck, data->nrg_th_cck);
 	IWL_DEBUG_CALIB("new nrg_th_cck %u\n", data->nrg_th_cck);
 
@@ -1016,10 +1010,9 @@ static int iwl4965_sens_auto_corr_ofdm(struct iwl_priv *priv,
 				max((u32)AUTO_CORR_MIN_OFDM_MRC_X1, val);
 	}
 
-	else {
+	else
 		IWL_DEBUG_CALIB("min FA %u < norm FA %u < max FA %u OK\n",
 			 min_false_alarms, false_alarms, max_false_alarms);
-	}
 
 	return 0;
 }
@@ -1392,9 +1385,8 @@ static void iwl4965_noise_calibration(struct iwl_priv *priv,
 
 				data->delta_gain_code[i] =
 					(data->delta_gain_code[i] | (1 << 2));
-			} else {
+			} else
 				data->delta_gain_code[i] = 0;
-			}
 		}
 		IWL_DEBUG_CALIB("delta_gain_codes: a %d b %d c %d\n",
 			     data->delta_gain_code[0],
@@ -1561,10 +1553,9 @@ static void iwl4965_bg_sensitivity_work(struct work_struct *work)
 					IWL_SENS_CALIB_NEED_REINIT) {
 			iwl4965_init_sensitivity(priv, CMD_ASYNC, 0);
 			priv->sensitivity_data.state = IWL_SENS_CALIB_ALLOWED;
-		} else {
+		} else
 			iwl4965_sensitivity_calibration(priv,
 							&priv->statistics);
-		}
 	}
 
 	mutex_unlock(&priv->mutex);
@@ -1614,24 +1605,24 @@ static void iwl4965_set_wr_ptrs(struct iwl_priv *priv, int txq_id, u32 index)
 /*
  * Acquire priv->lock before calling this function !
  */
-static void iwl4965_tx_queue_set_status(struct iwl_priv *priv, struct iwl_tx_queue *txq,
-			    int tx_fifo_id, int scd_retry)
+static void iwl4965_tx_queue_set_status(struct iwl_priv *priv,
+					struct iwl_tx_queue *txq,
+					int tx_fifo_id, int scd_retry)
 {
 	int txq_id = txq->q.id;
 	int active = test_bit(txq_id, &priv->txq_ctx_active_msk)?1:0;
 
-	iwl_write_restricted_reg(priv,
-				 SCD_QUEUE_STATUS_BITS(txq_id),
-				 (active << SCD_QUEUE_STTS_REG_POS_ACTIVE)|
-				 (tx_fifo_id << SCD_QUEUE_STTS_REG_POS_TXF)|
-				 (scd_retry << SCD_QUEUE_STTS_REG_POS_WSL)|
-				 (scd_retry << SCD_QUEUE_STTS_REG_POS_SCD_ACK)|
+	iwl_write_restricted_reg(priv, SCD_QUEUE_STATUS_BITS(txq_id),
+				 (active << SCD_QUEUE_STTS_REG_POS_ACTIVE) |
+				 (tx_fifo_id << SCD_QUEUE_STTS_REG_POS_TXF) |
+				 (scd_retry << SCD_QUEUE_STTS_REG_POS_WSL) |
+				 (scd_retry << SCD_QUEUE_STTS_REG_POS_SCD_ACK) |
 				 SCD_QUEUE_STTS_REG_MSK);
 
 	txq->sched_retry = scd_retry;
 
 	IWL_DEBUG_INFO("%s %s Queue %d on AC %d\n",
-		       (active ? "Activete" : "Deactivate"),
+		       active ? "Activete" : "Deactivate",
 		       scd_retry ? "BA" : "AC", txq_id, tx_fifo_id);
 }
 
@@ -1718,7 +1709,7 @@ int iwl4965_alive_notify(struct iwl_priv *priv)
 				 SCD_TXFACT_REG_TXFIFO_MASK(0, 7));
 
 	iwl4965_set_wr_ptrs(priv, IWL_CMD_QUEUE_NUM, 0);
-	iwl4965_txq_ctx_activate(priv,IWL_CMD_QUEUE_NUM);
+	iwl4965_txq_ctx_activate(priv, IWL_CMD_QUEUE_NUM);
 	iwl4965_tx_queue_set_status(priv, &priv->txq[IWL_CMD_QUEUE_NUM],
 				    IWL_CMD_FIFO_NUM, 0);
 	/* map qos queues to fifos one-to-one */
@@ -1850,7 +1841,7 @@ int iwl_hw_reg_set_txpower(struct iwl_priv *priv, s8 power)
 #define IWL_TX_POWER_CCK_COMPENSATION_B_STEP (9)
 #define IWL_TX_POWER_CCK_COMPENSATION_C_STEP (5)
 
-static s32 iwl4965_math_div_round(s32 num, s32 denom, s32 * res)
+static s32 iwl4965_math_div_round(s32 num, s32 denom, s32 *res)
 {
 	s32 sign = 1;
 
@@ -3093,21 +3084,21 @@ static void iwl4965_turn_on_agg_for_tid(struct iwl_priv *priv,
 
 		spin_lock_irqsave(&priv->lq_mngr.lock, flags);
 		if (!available_queues) {
-			if (auto_agg) {
+			if (auto_agg)
 				lq->agg_ctrl.tid_retry |= tid_msk;
-			} else {
+			else {
 				lq->agg_ctrl.requested_ba &= ~tid_msk;
 				lq->agg_ctrl.wait_for_agg_status &= ~tid_msk;
 			}
 		} else if ((auto_agg) &&
-			   ((load <= lq->agg_ctrl.tid_traffic_load_threshold)
-			    || ((lq->agg_ctrl.wait_for_agg_status & tid_msk)))) {
+			   ((load <= lq->agg_ctrl.tid_traffic_load_threshold) ||
+			    ((lq->agg_ctrl.wait_for_agg_status & tid_msk))))
 			lq->agg_ctrl.tid_retry |= tid_msk;
-		} else {
+		else {
 			lq->agg_ctrl.wait_for_agg_status |= tid_msk;
 			spin_unlock_irqrestore(&priv->lq_mngr.lock, flags);
 			iwl4965_perform_addba(priv, tid, 0x40,
-					   lq->agg_ctrl.ba_timeout);
+					      lq->agg_ctrl.ba_timeout);
 			spin_lock_irqsave(&priv->lq_mngr.lock, flags);
 		}
 	}
@@ -3122,13 +3113,13 @@ static void iwl4965_turn_on_agg(struct iwl_priv *priv, u8 tid)
 	lq = (struct iwl_lq_mngr *)&(priv->lq_mngr);
 
 	if ((tid < TID_MAX_LOAD_COUNT))
-		iwl4965_turn_on_agg_for_tid(priv, lq, lq->agg_ctrl.auto_agg, tid);
+		iwl4965_turn_on_agg_for_tid(priv, lq, lq->agg_ctrl.auto_agg,
+					    tid);
 	else if (tid == TID_ALL_SPECIFIED) {
 		if (lq->agg_ctrl.requested_ba) {
 			for (tid = 0; tid < TID_MAX_LOAD_COUNT; tid++)
 				iwl4965_turn_on_agg_for_tid(priv, lq,
-							 lq->agg_ctrl.auto_agg,
-							 tid);
+					lq->agg_ctrl.auto_agg, tid);
 		} else {
 			spin_lock_irqsave(&priv->lq_mngr.lock, flags);
 			lq->agg_ctrl.tid_retry = 0;
@@ -3138,6 +3129,7 @@ static void iwl4965_turn_on_agg(struct iwl_priv *priv, u8 tid)
 	}
 
 }
+
 void iwl4965_turn_off_agg(struct iwl_priv *priv, u8 tid)
 {
 	u32 tid_msk;
@@ -3715,7 +3707,7 @@ struct ieee802_11_elems {
 	u8 ht_extra_param_len;
 };
 
-static int parse_elems(u8 * start, size_t len, struct ieee802_11_elems *elems)
+static int parse_elems(u8 *start, size_t len, struct ieee802_11_elems *elems)
 {
 	size_t left = len;
 	u8 *pos = start;
@@ -3792,9 +3784,9 @@ static void iwl4965_update_ps_mode(struct iwl_priv *priv, u16 ps_bit, u8 *addr)
 	if (sta_id != IWL_INVALID_STATION) {
 		u8 sta_awake = priv->stations[sta_id].
 				ps_status == STA_PS_STATUS_WAKE;
-		if (sta_awake && ps_bit) {
+		if (sta_awake && ps_bit)
 			priv->stations[sta_id].ps_status = STA_PS_STATUS_SLEEP;
-		} else if (!sta_awake && !ps_bit) {
+		else if (!sta_awake && !ps_bit) {
 			iwl4965_sta_modify_ps_wake(priv, sta_id);
 			priv->stations[sta_id].ps_status = STA_PS_STATUS_WAKE;
 		}
@@ -4074,7 +4066,7 @@ static void iwl4965_rx_reply_rx_phy(struct iwl_priv *priv,
 	       sizeof(struct iwl4965_rx_phy_res));
 }
 
-static void iwl4965_rx_missed_beacon_notif (struct iwl_priv *priv,
+static void iwl4965_rx_missed_beacon_notif(struct iwl_priv *priv,
 					   struct iwl_rx_mem_buffer *rxb)
 
 {
@@ -4099,8 +4091,8 @@ static void iwl4965_rx_missed_beacon_notif (struct iwl_priv *priv,
 #ifdef CONFIG_IWLWIFI_HT
 #ifdef CONFIG_IWLWIFI_HT_AGG
 
-static void iwl4965_set_tx_status(struct iwl_priv *priv,int txq_id, int idx,
-				  u32 status,u32 retry_count, u32 rate)
+static void iwl4965_set_tx_status(struct iwl_priv *priv, int txq_id, int idx,
+				  u32 status, u32 retry_count, u32 rate)
 {
 	struct ieee80211_tx_status *tx_status =
 		&(priv->txq[txq_id].txb[idx].status);
@@ -4110,8 +4102,8 @@ static void iwl4965_set_tx_status(struct iwl_priv *priv,int txq_id, int idx,
 }
 
 
-static void iwl_sta_modify_enable_tid_tx(struct iwl_priv *priv, int sta_id,
-						int tid)
+static void iwl_sta_modify_enable_tid_tx(struct iwl_priv *priv,
+					 int sta_id, int tid)
 {
 	unsigned long lock_flags;
 
@@ -4120,6 +4112,7 @@ static void iwl_sta_modify_enable_tid_tx(struct iwl_priv *priv, int sta_id,
 	priv->stations[sta_id].sta.tid_disable_tx &= cpu_to_le32(~(1 << tid));
 	priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
 	spin_unlock_irqrestore(&priv->sta_lock, lock_flags);
+
 	iwl_send_add_station(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
 }
 
@@ -4299,16 +4292,15 @@ int iwl4965_tx_queue_agg_enable(struct iwl_priv *priv, int txq_id, int tx_fifo,
 	/* supposes that ssn_idx is valid (!= 0xFFF) */
 	iwl4965_set_wr_ptrs(priv, txq_id, ssn_idx);
 
-	iwl_write_restricted_mem(priv, priv->scd_base_addr +
-				SCD_CONTEXT_QUEUE_OFFSET(txq_id),
-				(SCD_WIN_SIZE << SCD_QUEUE_CTX_REG1_WIN_SIZE_POS) &
-				SCD_QUEUE_CTX_REG1_WIN_SIZE_MSK);
+	iwl_write_restricted_mem(priv,
+			priv->scd_base_addr + SCD_CONTEXT_QUEUE_OFFSET(txq_id),
+			(SCD_WIN_SIZE << SCD_QUEUE_CTX_REG1_WIN_SIZE_POS) &
+			SCD_QUEUE_CTX_REG1_WIN_SIZE_MSK);
 
 	iwl_write_restricted_mem(priv, priv->scd_base_addr +
-				SCD_CONTEXT_QUEUE_OFFSET(txq_id) +
-				sizeof(u32),
-				(SCD_FRAME_LIMIT << SCD_QUEUE_CTX_REG2_FRAME_LIMIT_POS) &
-				SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK);
+			SCD_CONTEXT_QUEUE_OFFSET(txq_id) + sizeof(u32),
+			(SCD_FRAME_LIMIT << SCD_QUEUE_CTX_REG2_FRAME_LIMIT_POS)
+			& SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK);
 
 	iwl_set_bits_restricted_reg(priv, SCD_INTERRUPT_MASK, (1 << txq_id));
 
@@ -4352,7 +4344,7 @@ int iwl4965_tx_queue_agg_disable(struct iwl_priv *priv, u16 txq_id,
 	iwl4965_set_wr_ptrs(priv, txq_id, ssn_idx);
 
 	iwl_clear_bits_restricted_reg(priv, SCD_INTERRUPT_MASK, (1 << txq_id));
-	iwl4965_txq_ctx_deactivate(priv,txq_id);
+	iwl4965_txq_ctx_deactivate(priv, txq_id);
 	iwl4965_tx_queue_set_status(priv, &priv->txq[txq_id], tx_fifo, 0);
 
 	iwl_release_restricted_access(priv);
@@ -4384,7 +4376,7 @@ int iwl4965_init_hw_rates(struct iwl_priv *priv, struct ieee80211_rate *rates)
  * rc80211_simple which is what this driver is currently using.
  *
  */
-void iwl4965_add_station(struct iwl_priv *priv, const u8 * addr, int is_ap)
+void iwl4965_add_station(struct iwl_priv *priv, const u8 *addr, int is_ap)
 {
 	int i, r;
 	struct iwl_link_quality_cmd link_cmd = {
@@ -4404,9 +4396,9 @@ void iwl4965_add_station(struct iwl_priv *priv, const u8 * addr, int is_ap)
 		r = IWL_RATE_1M_INDEX;
 
 	while (i < LINK_QUAL_MAX_RETRY_NUM) {
-		if (r >= IWL_FIRST_CCK_RATE && r <= IWL_LAST_CCK_RATE) {
+		if (r >= IWL_FIRST_CCK_RATE && r <= IWL_LAST_CCK_RATE)
 			table[i].rate_n_flags |= RATE_MCS_CCK_MSK;
-		}
+
 		table[i].s.rate = iwl_rates[r].plcp;
 		table[i].rate_n_flags |= RATE_MCS_ANT_B_MSK;
 		table[i].rate_n_flags &= ~RATE_MCS_ANT_A_MSK;
@@ -4524,6 +4516,7 @@ void iwl4965_set_rxon_ht(struct iwl_priv *priv,
 			ht_info->extension_chan_offset, ht_info->control_chan);
 	return;
 }
+
 void iwl4965_set_ht_add_station(struct iwl_priv *priv,
 				u8 index, u8 need_to_lock)
 {
@@ -4627,6 +4620,7 @@ static const u16 default_tid_to_ac[] = {
 static int iwl_txq_ctx_activate_free(struct iwl_priv *priv)
 {
 	int txq_id;
+
 	for (txq_id = 0; txq_id < IWL4965_NUM_QUEUES; txq_id++)
 		if (!test_and_set_bit(txq_id, &priv->txq_ctx_active_msk))
 			return txq_id;
@@ -4650,8 +4644,8 @@ int iwl_mac_ht_tx_agg_start(struct ieee80211_hw *hw, u8 *da, u16 tid,
 	else
 		return -EINVAL;
 
-	IWL_WARNING("iwl-AGG iwl_mac_ht_tx_agg_start on da=" MAC_FMT " tid=%d\n",
-		    MAC_ARG(da), tid);
+	IWL_WARNING("iwl-AGG iwl_mac_ht_tx_agg_start on da=" MAC_FMT
+		    " tid=%d\n", MAC_ARG(da), tid);
 
 	sta_id = iwl_hw_find_station(priv, da);
 	if (sta_id == IWL_INVALID_STATION)
diff --git a/drivers/net/wireless/iwl-4965.h b/drivers/net/wireless/iwl-4965.h
index 7fa17ee..db4a02e 100644
--- a/drivers/net/wireless/iwl-4965.h
+++ b/drivers/net/wireless/iwl-4965.h
@@ -36,7 +36,7 @@ struct sta_ht_info;
  */
 static inline void iwl_eeprom_release_semaphore(struct iwl_priv *priv) {}
 
-static inline void iwl4965_add_station(struct iwl_priv *priv, const u8 * addr,
+static inline void iwl4965_add_station(struct iwl_priv *priv, const u8 *addr,
 				       int is_ap) {}
 static inline void iwl4965_set_rxon_ht(struct iwl_priv *priv,
 				       struct sta_ht_info *ht_info) {}
@@ -77,7 +77,7 @@ extern void iwl_eeprom_release_semaphore(struct iwl_priv *priv);
 extern int iwl4965_tx_queue_update_wr_ptr(struct iwl_priv *priv,
 					  struct iwl_tx_queue *txq,
 					  u16 byte_cnt);
-extern void iwl4965_add_station(struct iwl_priv *priv, const u8 * addr,
+extern void iwl4965_add_station(struct iwl_priv *priv, const u8 *addr,
 				int is_ap);
 extern void iwl4965_set_rxon_ht(struct iwl_priv *priv,
 				struct sta_ht_info *ht_info);
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 9a5041a..d082a10 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -72,11 +72,11 @@ u32 iwl_debug_level;
  ******************************************************************************/
 
 /* module parameters */
-int iwl_param_disable_hw_scan = 0;
-int iwl_param_debug = 0;
-int iwl_param_disable = 0;      /* def: enable radio */
-int iwl_param_antenna = 0;      /* def: 0 = both antennas (use diversity) */
-int iwl_param_hwcrypto = 0;     /* def: using software encryption */
+int iwl_param_disable_hw_scan;
+int iwl_param_debug;
+int iwl_param_disable;      /* def: enable radio */
+int iwl_param_antenna;      /* def: 0 = both antennas (use diversity) */
+int iwl_param_hwcrypto;     /* def: using software encryption */
 int iwl_param_qos_enable = 1;
 
 /*
@@ -293,13 +293,13 @@ void iwl_tx_queue_free(struct iwl_priv *priv, struct iwl_tx_queue *txq)
 
 	/* first, empty all BD's */
 	for (; q->first_empty != q->last_used;
-	     q->last_used = iwl_queue_inc_wrap(q->last_used, q->n_bd)) {
+	     q->last_used = iwl_queue_inc_wrap(q->last_used, q->n_bd))
 		iwl_hw_tx_queue_free_tfd(priv, txq);
-	}
 
 	len = sizeof(txq->cmd[0]) * q->n_window;
 	if (q->id == IWL_CMD_QUEUE_NUM);
-                len +=  IWL_MAX_SCAN_SIZE;
+		len += IWL_MAX_SCAN_SIZE;
+
 	pci_free_consistent(dev, len, txq->cmd, txq->dma_addr_cmd);
 
 	/* free buffers belonging to queue itself */
@@ -329,13 +329,14 @@ const u8 BROADCAST_ADDR[ETH_ALEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
 
 /**************************************************************/
 
-static u8 iwl_remove_station(struct iwl_priv *priv, const u8 * bssid, int is_ap)
+static u8 iwl_remove_station(struct iwl_priv *priv, const u8 *bssid, int is_ap)
 {
 	int index = IWL_INVALID_STATION;
 	int i;
 	unsigned long flags;
 
 	spin_lock_irqsave(&priv->sta_lock, flags);
+
 	if (is_ap) {
 		index = IWL_AP_ID;
 		if ((priv->stations[index].used))
@@ -344,17 +345,17 @@ static u8 iwl_remove_station(struct iwl_priv *priv, const u8 * bssid, int is_ap)
 		index = IWL_BROADCAST_ID;
 		if ((priv->stations[index].used))
 			priv->stations[index].used = 0;
-	} else
+	} else {
 		for (i = IWL_STA_ID; i < priv->num_stations + IWL_STA_ID; i++) {
 			if (priv->stations[i].used &&
-			    !compare_ether_addr(
-				    priv->stations[i].sta.sta.addr, bssid)) {
+			    !compare_ether_addr(priv->stations[i].sta.sta.addr,
+						bssid)) {
 				index = i;
 				priv->stations[index].used = 0;
 				break;
 			}
 		}
-
+	}
 	if (index != IWL_INVALID_STATION) {
 		if (priv->num_stations > 0)
 			priv->num_stations--;
@@ -371,12 +372,12 @@ static void iwl_clear_stations_table(struct iwl_priv *priv)
 	spin_lock_irqsave(&priv->sta_lock, flags);
 
 	priv->num_stations = 0;
-	memset(priv->stations, 0,
-	       IWL_STATION_COUNT * sizeof(struct iwl_station_entry));
+	memset(priv->stations, 0, sizeof(priv->stations));
+
 	spin_unlock_irqrestore(&priv->sta_lock, flags);
 }
 
-u8 iwl_add_station(struct iwl_priv *priv, const u8 * bssid, int is_ap, u8 flags)
+u8 iwl_add_station(struct iwl_priv *priv, const u8 *bssid, int is_ap, u8 flags)
 {
 	int i = IWL_STATION_COUNT;
 	int index = IWL_INVALID_STATION;
@@ -398,7 +399,7 @@ u8 iwl_add_station(struct iwl_priv *priv, const u8 * bssid, int is_ap, u8 flags)
 		    !compare_ether_addr(priv->stations[index].sta.sta.addr,
 					bssid))
 			goto done;
-	} else
+	} else {
 		for (i = IWL_STA_ID; i < priv->num_stations + IWL_STA_ID; i++) {
 			if (priv->stations[i].used &&
 			    !compare_ether_addr(priv->stations[i].sta.sta.addr,
@@ -409,6 +410,7 @@ u8 iwl_add_station(struct iwl_priv *priv, const u8 * bssid, int is_ap, u8 flags)
 			    index == IWL_INVALID_STATION)
 				index = i;
 		}
+	}
 
 	if (index != IWL_INVALID_STATION)
 		i = index;
@@ -437,8 +439,8 @@ u8 iwl_add_station(struct iwl_priv *priv, const u8 * bssid, int is_ap, u8 flags)
 
 	station->sta.station_flags |= STA_FLG_TX_RATE_MSK;
 
-	station->current_rate.rate_n_flags = le16_to_cpu(
-		station->sta.rate_n_flags);
+	station->current_rate.rate_n_flags =
+		le16_to_cpu(station->sta.rate_n_flags);
 #endif
 
 #if IWL == 4965
@@ -822,18 +824,18 @@ int iwl_send_statistics_request(struct iwl_priv *priv)
  * NOTE: mutex must be held before calling the this fnction
 */
 static int iwl_rxon_add_station(struct iwl_priv *priv,
-				const u8 * addr, int is_ap)
+				const u8 *addr, int is_ap)
 {
-	u8 i;
+	u8 rc;
 
 	/* Remove this station if it happens to already exist */
 	iwl_remove_station(priv, addr, is_ap);
 
-	i = iwl_add_station(priv, addr, is_ap, 0);
+	rc = iwl_add_station(priv, addr, is_ap, 0);
 
 	iwl4965_add_station(priv, addr, is_ap);
 
-	return i;
+	return rc;
 }
 
 /**
@@ -1470,8 +1472,8 @@ static void iwl_free_frame(struct iwl_priv *priv, struct iwl_frame *frame)
 	list_add(&frame->list, &priv->free_frames);
 }
 
-int iwl_fill_beacon_frame(struct iwl_priv *priv,
-			  struct ieee80211_hdr *hdr, const u8 * dest, int left)
+int iwl_fill_beacon_frame(struct iwl_priv *priv, struct ieee80211_hdr *hdr,
+			  const u8 *dest, int left)
 {
 
 	if (!iwl_is_associated(priv) || !priv->ibss_beacon ||
@@ -1528,7 +1530,7 @@ static int iwl_send_beacon_cmd(struct iwl_priv *priv)
  *
  ******************************************************************************/
 
-static void get_eeprom_mac(struct iwl_priv *priv, u8 * mac)
+static void get_eeprom_mac(struct iwl_priv *priv, u8 *mac)
 {
 	memcpy(mac, priv->eeprom.mac_address, 6);
 }
@@ -1678,9 +1680,9 @@ void iwl_report_frame(struct iwl_priv *priv,
 	if (to_us && (frame_ctl & ~IEEE80211_FCTL_PROTECTED) ==
 	    (IEEE80211_FCTL_FROMDS | IEEE80211_FTYPE_DATA)) {
 		dataframe = 1;
-		if (!group100) {
+		if (!group100)
 			print_summary = 1;	/* print each frame */
-		} else if (priv->framecnt_to_us < 100) {
+		else if (priv->framecnt_to_us < 100) {
 			priv->framecnt_to_us++;
 			print_summary = 0;
 		} else {
@@ -1731,12 +1733,12 @@ void iwl_report_frame(struct iwl_priv *priv,
 		/* print frame summary.
 		 * MAC addresses show just the last byte (for brevity),
 		 *    but you can hack it to show more, if you'd like to. */
-		if (dataframe) {
+		if (dataframe)
 			IWL_DEBUG_RX("%s: mhd=0x%04x, dst=0x%02x, "
 				     "len=%u, rssi=%d, chnl=%d, rate=%u, \n",
 				     title, frame_ctl, header->addr1[5],
 				     length, rssi, channel, rate);
-		} else {
+		else {
 			/* src/dst addresses assume managed mode */
 			IWL_DEBUG_RX("%s: 0x%04x, dst=0x%02x, "
 				     "src=0x%02x, rssi=%u, tim=%lu usec, "
@@ -1766,7 +1768,7 @@ static void iwl_unset_hw_setting(struct iwl_priv *priv)
  *
  * return : set the bit for each supported rate insert in ie
  */
-static u16 iwl_supported_rate_to_ie(u8 * ie, u16 supported_rate,
+static u16 iwl_supported_rate_to_ie(u8 *ie, u16 supported_rate,
 				    u16 basic_rate, int max_count)
 {
 	u16 ret_rates = 0, bit;
@@ -2046,7 +2048,7 @@ static void iwl_activate_qos(struct iwl_priv *priv, u8 force)
 #define NOSLP 0, 0, 0
 #define SLP IWL_POWER_DRIVER_ALLOW_SLEEP_MSK, 0, 0
 #endif
-#define SLP_TIMEOUT(T)  __constant_cpu_to_le32((T) * MSEC_TO_USEC)
+#define SLP_TIMEOUT(T) __constant_cpu_to_le32((T) * MSEC_TO_USEC)
 #define SLP_VEC(X0, X1, X2, X3, X4) {__constant_cpu_to_le32(X0), \
 				     __constant_cpu_to_le32(X1), \
 				     __constant_cpu_to_le32(X2), \
@@ -2068,11 +2070,15 @@ static struct iwl_power_vec_entry range_0[IWL_POWER_AC] = {
 /* for tim > 10 */
 static struct iwl_power_vec_entry range_1[IWL_POWER_AC] = {
 	{{NOSLP, SLP_TIMEOUT(0), SLP_TIMEOUT(0), SLP_VEC(0, 0, 0, 0, 0)}, 0},
-	{{SLP, SLP_TIMEOUT(200), SLP_TIMEOUT(500), SLP_VEC(1, 2, 3, 4, 0xFF)}, 0},
-	{{SLP, SLP_TIMEOUT(200), SLP_TIMEOUT(300), SLP_VEC(2, 4, 6, 7, 0xFF)}, 0},
-	{{SLP, SLP_TIMEOUT(50), SLP_TIMEOUT(100), SLP_VEC(2, 6, 9, 9, 0xFF)}, 0},
+	{{SLP, SLP_TIMEOUT(200), SLP_TIMEOUT(500),
+		 SLP_VEC(1, 2, 3, 4, 0xFF)}, 0},
+	{{SLP, SLP_TIMEOUT(200), SLP_TIMEOUT(300),
+		 SLP_VEC(2, 4, 6, 7, 0xFF)}, 0},
+	{{SLP, SLP_TIMEOUT(50), SLP_TIMEOUT(100),
+		 SLP_VEC(2, 6, 9, 9, 0xFF)}, 0},
 	{{SLP, SLP_TIMEOUT(50), SLP_TIMEOUT(25), SLP_VEC(2, 7, 9, 9, 0xFF)}, 0},
-	{{SLP, SLP_TIMEOUT(25), SLP_TIMEOUT(25), SLP_VEC(4, 7, 10, 10, 0xFF)}, 0}
+	{{SLP, SLP_TIMEOUT(25), SLP_TIMEOUT(25),
+		 SLP_VEC(4, 7, 10, 10, 0xFF)}, 0}
 };
 
 int iwl_power_init_handle(struct iwl_priv *priv)
@@ -2863,7 +2869,6 @@ static int iwl_tx_skb(struct iwl_priv *priv,
 #endif /* CONFIG_IWLWIFI_HT_AGG */
 #endif /* CONFIG_IWLWIFI_HT */
 #endif
-
 	}
 
 	txq = &priv->txq[txq_id];
@@ -2895,13 +2900,13 @@ static int iwl_tx_skb(struct iwl_priv *priv,
 	len_org = len;
 	len = (len + 3) & ~3;
 
-	if (len_org != len) {
+	if (len_org != len)
 		len_org = 1;
-	} else
+	else
 		len_org = 0;
-	txcmd_phys =
-		txq->dma_addr_cmd + sizeof(struct iwl_cmd) * idx +
-		offsetof(struct iwl_cmd, hdr);
+
+	txcmd_phys = txq->dma_addr_cmd + sizeof(struct iwl_cmd) * idx +
+		     offsetof(struct iwl_cmd, hdr);
 
 	iwl_hw_tx_queue_attach_buffer_to_tfd(priv, tfd, txcmd_phys, len);
 
@@ -2911,13 +2916,11 @@ static int iwl_tx_skb(struct iwl_priv *priv,
 	/* 802.11 null functions have no payload... */
 	len = skb->len - hdr_len;
 	if (len) {
-		phys_addr = pci_map_single(priv->pci_dev,
-						       skb->data + hdr_len,
-						       len, PCI_DMA_TODEVICE);
+		phys_addr = pci_map_single(priv->pci_dev, skb->data + hdr_len,
+					   len, PCI_DMA_TODEVICE);
 		iwl_hw_tx_queue_attach_buffer_to_tfd(priv, tfd, phys_addr, len);
 	}
 
-
 #if IWL == 3945
 	/* If there is no payload, then only one TFD is used */
 	if (!len)
@@ -2946,9 +2949,9 @@ static int iwl_tx_skb(struct iwl_priv *priv,
 	out_cmd->cmd.tx.tx_flags &= ~TX_CMD_FLG_ANT_B_MSK;
 #endif
 
-	if (!(ieee80211_get_morefrag(hdr))) {
+	if (!ieee80211_get_morefrag(hdr)) {
 		txq->need_update = 1;
-		if ( qc ) {
+		if (qc) {
 			u8 tid = (u8)(le16_to_cpu(*qc) & 0xf);
 			priv->stations[sta_id].tid[tid].seq_number =
 				seq_number;
@@ -3018,10 +3021,9 @@ static void iwl_set_rate(struct iwl_priv *priv)
 			priv->active_rate |= (1 << rate->val);
 			if (rate->flags & IEEE80211_RATE_BASIC)
 				priv->active_rate_basic |= (1 << rate->val);
-		} else {
+		} else
 			IWL_DEBUG_RATE("Not adding rate %d (plcp %d)\n",
 				       rate->val, iwl_rates[rate->val].plcp);
-		}
 	}
 
 	IWL_DEBUG_RATE("Set active_rate = %0x, active_rate_basic = %0x\n",
@@ -3503,8 +3505,8 @@ static int iwl_is_tx_success(u32 status)
  *
  ******************************************************************************/
 #if IWL == 4965
-#ifdef  CONFIG_IWLWIFI_HT
-#ifdef  CONFIG_IWLWIFI_HT_AGG
+#ifdef CONFIG_IWLWIFI_HT
+#ifdef CONFIG_IWLWIFI_HT_AGG
 
 static inline int iwl_get_ra_sta_id(struct iwl_priv *priv,
 				    struct ieee80211_hdr *hdr)
@@ -3546,24 +3548,23 @@ int iwl4965_tx_status_reply_tx(struct iwl_priv *priv,
 	int txq_id, idx;
 	u16 seq;
 
-	if (agg->wait_for_ba) {
+	if (agg->wait_for_ba)
 		IWL_DEBUG_TX_REPLY("got tx repsons w/o back\n");
-	}
-
 
 	agg->frame_count = tx_resp->frame_count;
 	agg->start_idx = start_idx;
 	agg->rate_n_flags = le32_to_cpu(tx_resp->rate_n_flags);
 	agg->bitmap0 = agg->bitmap1 = 0;
+
 	if (agg->frame_count == 1) {
 		status = le32_to_cpu(frame_status[0]);
 		seq  = status >> 16;
 		idx = SEQ_TO_INDEX(seq);
 		txq_id = SEQ_TO_QUEUE(seq);
 
-/* FIXME: code repetition */
+		/* FIXME: code repetition */
 		IWL_DEBUG_TX_REPLY("FrameCnt = %d, StartIdx=%d idx=%d\n",
-				agg->frame_count, agg->start_idx, idx);
+				   agg->frame_count, agg->start_idx, idx);
 
 		tx_status = &(priv->txq[txq_id].txb[idx].status);
 		tx_status->retry_count = tx_resp->failure_frame;
@@ -3575,9 +3576,7 @@ int iwl4965_tx_status_reply_tx(struct iwl_priv *priv,
 			IEEE80211_TX_STATUS_ACK : 0;
 		tx_status->control.tx_rate =
 				iwl_hw_get_rate_n_flags(tx_resp->rate_n_flags);
-
-/* FIXME: code repetition end */
-
+		/* FIXME: code repetition end */
 
 		IWL_DEBUG_TX_REPLY("1 Frame 0x%x idx %d failure :%d\n",
 				    status & 0xff, idx, tx_resp->failure_frame);
@@ -3588,16 +3587,15 @@ int iwl4965_tx_status_reply_tx(struct iwl_priv *priv,
 	} else {
 		u64 bitmap = 0;
 		int start = agg->start_idx;
-		for (i = 0; i < agg->frame_count; i++) {
 
+		for (i = 0; i < agg->frame_count; i++) {
 			status = le32_to_cpu(frame_status[i]);
 			seq  = status >> 16;
 			idx = SEQ_TO_INDEX(seq);
 			txq_id = SEQ_TO_QUEUE(seq);
 
-			if (status &
-				(AGG_TX_STATE_FEW_BYTES_MSK|
-				 AGG_TX_STATE_ABORT_MSK))
+			if (status & (AGG_TX_STATE_FEW_BYTES_MSK |
+				      AGG_TX_STATE_ABORT_MSK))
 				continue;
 
 			IWL_DEBUG_TX_REPLY("FrameCnt = %d, txq_id=%d idx=%d\n",
@@ -3613,7 +3611,6 @@ int iwl4965_tx_status_reply_tx(struct iwl_priv *priv,
 				return -1;
 			}
 
-
 			IWL_DEBUG_TX_REPLY("AGG Frame i=%d idx %d seq=%d\n",
 					   i, idx, SEQ_TO_SN(hdr->seq_ctrl));
 
@@ -3623,9 +3620,9 @@ int iwl4965_tx_status_reply_tx(struct iwl_priv *priv,
 				bitmap = bitmap << sh;
 				sh = 0;
 				start = idx;
-			} else if ( sh < -64) {
+			} else if ( sh < -64)
 				sh  = 0xff - (start - idx);
-			} else if (sh < 0) {
+			else if (sh < 0) {
 				sh = start - idx;
 				start = idx;
 				bitmap = bitmap << sh;
@@ -3641,9 +3638,8 @@ int iwl4965_tx_status_reply_tx(struct iwl_priv *priv,
 		agg->start_idx = start;
 		agg->rate_n_flags = cpu_to_le32(tx_resp->rate_n_flags);
 		IWL_DEBUG_TX_REPLY("Frames %d start_idx=%d bitmap=0x%x\n",
-				agg->frame_count,
-				agg->start_idx,
-				agg->bitmap0);
+				   agg->frame_count, agg->start_idx,
+				   agg->bitmap0);
 
 		if (bitmap)
 			agg->wait_for_ba = 1;
@@ -3666,8 +3662,8 @@ static void iwl_rx_reply_tx(struct iwl_priv *priv,
 	struct iwl_tx_resp *tx_resp = (void *)&pkt->u.raw[0];
 	u32  status = le32_to_cpu(tx_resp->status);
 #if IWL == 4965
-#ifdef  CONFIG_IWLWIFI_HT
-#ifdef  CONFIG_IWLWIFI_HT_AGG
+#ifdef CONFIG_IWLWIFI_HT
+#ifdef CONFIG_IWLWIFI_HT_AGG
 	int tid, sta_id;
 #endif
 #endif
@@ -3682,16 +3678,16 @@ static void iwl_rx_reply_tx(struct iwl_priv *priv,
 	}
 
 #if IWL == 4965
-#ifdef  CONFIG_IWLWIFI_HT
-#ifdef  CONFIG_IWLWIFI_HT_AGG
+#ifdef CONFIG_IWLWIFI_HT
+#ifdef CONFIG_IWLWIFI_HT_AGG
 	if (txq->sched_retry) {
 		const u32 scd_ssn = iwl_get_scd_ssn(tx_resp);
-		struct ieee80211_hdr *hdr = iwl_tx_queue_get_hdr(priv, txq_id,
-								 index);
+		struct ieee80211_hdr *hdr =
+			iwl_tx_queue_get_hdr(priv, txq_id, index);
 		struct iwl_ht_agg *agg = NULL;
 		__le16 *qc = ieee80211_get_qos_ctrl(hdr);
 
-		if(qc == NULL) {
+		if (qc == NULL) {
 			IWL_ERROR("BUG_ON qc is null!!!!\n");
 			return;
 		}
@@ -3715,8 +3711,8 @@ static void iwl_rx_reply_tx(struct iwl_priv *priv,
 
 		if (txq->q.last_used != (scd_ssn & 0xff)) {
 			index = iwl_queue_dec_wrap(scd_ssn & 0xff, txq->q.n_bd);
-			IWL_DEBUG_TX_REPLY("Retry scheduler reclaim scd_ssn %d index %d\n",
-					    scd_ssn , index);
+			IWL_DEBUG_TX_REPLY("Retry scheduler reclaim scd_ssn "
+					   "%d index %d\n", scd_ssn , index);
 			iwl_tx_queue_reclaim(priv, txq_id, index);
 		}
 	} else {
@@ -3734,31 +3730,27 @@ static void iwl_rx_reply_tx(struct iwl_priv *priv,
 	    iwl_is_tx_success(status) ? IEEE80211_TX_STATUS_ACK : 0;
 
 #if IWL == 3945
-
 	tx_status->control.tx_rate = iwl_rate_index_from_plcp(tx_resp->rate);
 
 	IWL_DEBUG_TX("Tx queue %d Status %s (0x%08x) plcp rate %d retries %d\n",
 			txq_id, iwl_get_tx_fail_reason(status), status,
 			tx_resp->rate, tx_resp->failure_frame);
-
 #elif IWL == 4965
-
 	tx_status->control.tx_rate =
 		iwl_hw_get_rate_n_flags(tx_resp->rate_n_flags);
 
 	IWL_DEBUG_TX("Tx queue %d Status %s (0x%08x) rate_n_flags 0x%x "
-			"retries %d\n",
-			txq_id, iwl_get_tx_fail_reason(status),
-			status, le32_to_cpu(tx_resp->rate_n_flags),
-			tx_resp->failure_frame);
+		     "retries %d\n", txq_id, iwl_get_tx_fail_reason(status),
+		     status, le32_to_cpu(tx_resp->rate_n_flags),
+		     tx_resp->failure_frame);
 #endif
 
 	IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index);
 	if (index != -1)
 		iwl_tx_queue_reclaim(priv, txq_id, index);
 #if IWL == 4965
-#ifdef  CONFIG_IWLWIFI_HT
-#ifdef  CONFIG_IWLWIFI_HT_AGG
+#ifdef CONFIG_IWLWIFI_HT
+#ifdef CONFIG_IWLWIFI_HT_AGG
 	}
 #endif /* CONFIG_IWLWIFI_HT_AGG */
 #endif /* CONFIG_IWLWIFI_HT */
@@ -3770,7 +3762,7 @@ static void iwl_rx_reply_tx(struct iwl_priv *priv,
 
 
 static void iwl_rx_reply_alive(struct iwl_priv *priv,
-			   struct iwl_rx_mem_buffer *rxb)
+			       struct iwl_rx_mem_buffer *rxb)
 {
 	struct iwl_rx_packet *pkt = (void *)rxb->skb->data;
 	struct iwl_alive_resp *palive;
@@ -4550,16 +4542,16 @@ int iwl_calc_sig_qual(int rssi_dbm, int noise_dbm)
 	 * This formula is a least squares fit of data points collected and
 	 *   compared with a reference system that had a percentage (%) display
 	 *   for signal quality. */
-	} else {
-		sig_qual =
-			(100 * (RSSI_RANGE * RSSI_RANGE) -
-			degradation * (15 * RSSI_RANGE + 62 * degradation)) /
-			(RSSI_RANGE * RSSI_RANGE);
-	}
+	} else
+		sig_qual = (100 * (RSSI_RANGE * RSSI_RANGE) -
+			    degradation * (15 * RSSI_RANGE + 62 * degradation)) /
+			   (RSSI_RANGE * RSSI_RANGE);
+
 	if (sig_qual > 100)
 		sig_qual = 100;
 	else if (sig_qual < 1)
 		sig_qual = 0;
+
 	return sig_qual;
 }
 
@@ -4687,10 +4679,9 @@ int iwl_tx_queue_update_write_ptr(struct iwl_priv *priv,
 
 	/* else not in power-save mode, uCode will never sleep when we're
 	 * trying to tx (during RFKILL, we're not trying to tx). */
-	} else {
+	} else
 		iwl_write32(priv, HBUS_TARG_WRPTR,
 			    txq->q.first_empty | (txq_id << 8));
-	}
 
 	txq->need_update = 0;
 
@@ -4698,7 +4689,6 @@ int iwl_tx_queue_update_write_ptr(struct iwl_priv *priv,
 }
 
 #ifdef CONFIG_IWLWIFI_DEBUG
-
 static void iwl_print_rx_config_cmd(struct iwl_rxon_cmd *rxon)
 {
 	IWL_DEBUG_RADIO("RX CONFIG:\n");
@@ -4722,7 +4712,6 @@ static void iwl_print_rx_config_cmd(struct iwl_rxon_cmd *rxon)
 			MAC_ARG(rxon->bssid_addr));
 	IWL_DEBUG_RADIO("u16 assoc_id: 0x%x\n", le16_to_cpu(rxon->assoc_id));
 }
-
 #endif
 
 static void iwl_enable_interrupts(struct iwl_priv *priv)
@@ -4887,9 +4876,9 @@ static void iwl_print_event_log(struct iwl_priv *priv, u32 start_idx,
 		ptr += sizeof(u32);
 		time = iwl_read_restricted_mem(priv, ptr);
 		ptr += sizeof(u32);
-		if (mode == 0) {
+		if (mode == 0)
 			IWL_ERROR("0x%08x\t%04u\n", time, ev); /* data, ev */
-		} else {
+		else {
 			data = iwl_read_restricted_mem(priv, ptr);
 			ptr += sizeof(u32);
 			IWL_ERROR("%010u\t0x%08x\t%04u\n", time, data, ev);
@@ -4938,11 +4927,10 @@ static void iwl_dump_nic_event_log(struct iwl_priv *priv)
 		  size, num_wraps);
 
 	/* if uCode has wrapped back to top of log, start at the oldest entry,
-	 *    i.e the next one that uCode would fill. */
-	if (num_wraps) {
+	 * i.e the next one that uCode would fill. */
+	if (num_wraps)
 		iwl_print_event_log(priv, next_entry,
 				    capacity - next_entry, mode);
-	}
 
 	/* (then/else) start at top of log */
 	iwl_print_event_log(priv, 0, next_entry, mode);
@@ -5188,8 +5176,8 @@ static irqreturn_t iwl_isr(int irq, void *data)
 		goto none;
 	}
 
-	IWL_DEBUG_ISR ("ISR inta 0x%08x, enabled 0x%08x, fh 0x%08x\n",
-	     inta, inta_mask, inta_fh);
+	IWL_DEBUG_ISR("ISR inta 0x%08x, enabled 0x%08x, fh 0x%08x\n",
+		      inta, inta_mask, inta_fh);
 
 	/* iwl_irq_tasklet() will service interrupts and re-enable them */
 	tasklet_schedule(&priv->irq_tasklet);
@@ -5612,9 +5600,9 @@ static int iwl_get_channels_for_scan(struct iwl_priv *priv, int phymode,
 
 		/*scan_pwr_info->tpc.tx_gain; */
 		if ((phymode == MODE_IEEE80211A) ||
-		    (phymode == MODE_ATHEROS_TURBO)) {
+		    (phymode == MODE_ATHEROS_TURBO))
 			scan_ch->tpc.tx_gain = ((1 << 5) | (3 << 3)) | 3;
-		} else {
+		else {
 			scan_ch->tpc.tx_gain = ((1 << 5) | (5 << 3));
 			/* NOTE: if we were doing 6Mb OFDM for scans we'd use
 			 * power level
@@ -5665,7 +5653,7 @@ static void iwl_init_hw_rates(struct iwl_priv *priv,
 			 * which is CCK | PREAMBLE2
 			 */
 			rates[i].flags |= (iwl_rates[i].plcp == 10) ?
-			    IEEE80211_RATE_CCK : IEEE80211_RATE_CCK_2;
+				IEEE80211_RATE_CCK : IEEE80211_RATE_CCK_2;
 		}
 
 		/* Set up which ones are basic rates... */
@@ -5966,7 +5954,7 @@ static int iwl_verify_inst_full(struct iwl_priv *priv, __le32 * image, u32 len)
  *   using sample data 100 bytes apart.  If these sample points are good,
  *   it's a pretty good bet that everything between them is good, too.
  */
-static int iwl_verify_inst_sparse(struct iwl_priv *priv, __le32 * image, u32 len)
+static int iwl_verify_inst_sparse(struct iwl_priv *priv, __le32 *image, u32 len)
 {
 	u32 val;
 	int rc = 0;
@@ -6009,7 +5997,7 @@ static int iwl_verify_inst_sparse(struct iwl_priv *priv, __le32 * image, u32 len
  * iwl_verify_ucode - determine which instruction image is in SRAM,
  *    and verify its contents
  */
-static int iwl_verify_ucode(struct iwl_priv * priv)
+static int iwl_verify_ucode(struct iwl_priv *priv)
 {
 	__le32 *image;
 	u32 len;
@@ -6055,7 +6043,7 @@ static int iwl_verify_ucode(struct iwl_priv * priv)
 
 
 /* check contents of special bootstrap uCode SRAM */
-static int iwl_verify_bsm(struct iwl_priv * priv)
+static int iwl_verify_bsm(struct iwl_priv *priv)
 {
 	__le32 *image = priv->ucode_boot.v_addr;
 	u32 len = priv->ucode_boot.len;
@@ -6117,7 +6105,7 @@ static int iwl_verify_bsm(struct iwl_priv * priv)
  * the runtime uCode instructions and the backup data cache into SRAM,
  * and re-launches the runtime uCode from where it left off.
  */
-static int iwl_load_bsm(struct iwl_priv * priv)
+static int iwl_load_bsm(struct iwl_priv *priv)
 {
 	__le32 *image = priv->ucode_boot.v_addr;
 	u32 len = priv->ucode_boot.len;
@@ -6164,7 +6152,8 @@ static int iwl_load_bsm(struct iwl_priv * priv)
 	for (reg_offset = BSM_SRAM_LOWER_BOUND;
 	     reg_offset < BSM_SRAM_LOWER_BOUND + len;
 	     reg_offset += sizeof(u32), image++)
-		_iwl_write_restricted_reg(priv, reg_offset, le32_to_cpu( *image));
+		_iwl_write_restricted_reg(priv, reg_offset,
+					  le32_to_cpu(*image));
 
 	rc = iwl_verify_bsm(priv);
 	if (rc) {
@@ -6648,12 +6637,12 @@ static void iwl_alive_start(struct iwl_priv *priv)
 
 	iwl_send_power_mode(priv, IWL_POWER_LEVEL(priv->power_mode));
 
-        if (iwl_is_associated(priv)) {
+	if (iwl_is_associated(priv)) {
 		struct iwl_rxon_cmd *active_rxon =
 				(struct iwl_rxon_cmd *)(&priv->active_rxon);
 
 		memcpy(&priv->staging_rxon, &priv->active_rxon,
-			sizeof(priv->staging_rxon));
+		       sizeof(priv->staging_rxon));
 		active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK;
 	} else {
 		/* Initialize our rx_config data */
@@ -7087,9 +7076,8 @@ static void iwl_bg_request_scan(struct work_struct *data)
 		scan->direct_scan[0].len = priv->essid_len;
 		memcpy(scan->direct_scan[0].ssid, priv->essid, priv->essid_len);
 		direct_mask = 1;
-	} else {
+	} else
 		direct_mask = 0;
-	}
 
 	/* We don't build a direct scan probe request; the uCode will do
 	 * that based on the direct_mask added to each channel entry */
@@ -7621,9 +7609,9 @@ static int iwl_mac_config_interface(struct ieee80211_hw *hw, int if_id,
 			IWL_DEBUG_MAC80211("bssid was set to: " MAC_FMT "\n",
 					   MAC_ARG(conf->bssid));
 		}
-		if (priv->ibss_beacon) {
+		if (priv->ibss_beacon)
 			dev_kfree_skb(priv->ibss_beacon);
-		}
+
 		priv->ibss_beacon = conf->beacon;
 	}
 
@@ -7700,7 +7688,7 @@ static void iwl_mac_remove_interface(struct ieee80211_hw *hw,
 }
 
 #define IWL_DELAY_NEXT_SCAN (HZ*2)
-static int iwl_mac_hw_scan(struct ieee80211_hw *hw, u8 * ssid, size_t len)
+static int iwl_mac_hw_scan(struct ieee80211_hw *hw, u8 *ssid, size_t len)
 {
 	int rc = 0;
 	unsigned long flags;
@@ -7750,7 +7738,7 @@ static int iwl_mac_hw_scan(struct ieee80211_hw *hw, u8 * ssid, size_t len)
 	return rc;
 }
 
-static int iwl_mac_set_key(struct ieee80211_hw *hw, set_key_cmd cmd, u8 * addr,
+static int iwl_mac_set_key(struct ieee80211_hw *hw, set_key_cmd cmd, u8 *addr,
 			   struct ieee80211_key_conf *key, int aid)
 {
 	struct iwl_priv *priv = hw->priv;
@@ -8051,7 +8039,7 @@ union ht_cap_info {
 		u16 sig_txop_protection_support	:1;
 	};
 	u16 val;
-}__attribute__ ((packed));
+} __attribute__ ((packed));
 
 union ht_param_info{
 	struct {
@@ -8060,9 +8048,9 @@ union ht_param_info{
 		u8 reserved		:3;
 	};
 	u8 val;
-}__attribute__ ((packed));
+} __attribute__ ((packed));
 
-union ht_exra_param_info{
+union ht_exra_param_info {
 	struct {
 		u8 ext_chan_offset		:2;
 		u8 tx_chan_width		:1;
@@ -8071,7 +8059,7 @@ union ht_exra_param_info{
 		u8 service_interval_granularity	:3;
 	};
 	u8 val;
-}__attribute__ ((packed));
+} __attribute__ ((packed));
 
 union ht_operation_mode{
 	struct {
@@ -8080,7 +8068,7 @@ union ht_operation_mode{
 		u16 reserved	:13;
 	};
 	u16 val;
-}__attribute__ ((packed));
+} __attribute__ ((packed));
 
 
 static int sta_ht_info_init(struct ieee80211_ht_capability *ht_cap,
@@ -8361,9 +8349,9 @@ static ssize_t store_flags(struct device *d,
 	mutex_lock(&priv->mutex);
 	if (priv->staging_rxon.flags != flags) {
 		/* Cancel any currently running scans... */
-		if (iwl_scan_cancel(priv, 100)) {
+		if (iwl_scan_cancel(priv, 100))
 			IWL_WARNING("Could not cancel scan.\n");
-		} else {
+		else {
 			IWL_DEBUG_INFO("Committing rxon.flags = 0x%04X\n",
 				       flags);
 			priv->staging_rxon.flags = flags;
@@ -8395,9 +8383,9 @@ static ssize_t store_filter_flags(struct device *d,
 	mutex_lock(&priv->mutex);
 	if (priv->staging_rxon.filter_flags != filter_flags) {
 		/* Cancel any currently running scans... */
-		if (iwl_scan_cancel(priv, 100)) {
+		if (iwl_scan_cancel(priv, 100))
 			IWL_WARNING("Could not cancel scan.\n");
-		} else {
+		else {
 			IWL_DEBUG_INFO("Committing rxon.filter_flags = "
 				       "0x%04X\n", filter_flags);
 			priv->staging_rxon.filter_flags = filter_flags;
@@ -8449,9 +8437,9 @@ static ssize_t store_tune(struct device *d,
 		}
 
 		/* Cancel any currently running scans... */
-		if (iwl_scan_cancel(priv, 100)) {
+		if (iwl_scan_cancel(priv, 100))
 			IWL_WARNING("Could not cancel scan.\n");
-		} else {
+		else {
 			IWL_DEBUG_INFO("Committing phymode and "
 				       "rxon.channel = %d %d\n",
 				       phymode, channel);
@@ -8708,7 +8696,7 @@ static ssize_t show_channels(struct device *d,
 		    "Displaying %d channels in 2.4GHz band "
 		    "(802.11bg):\n", count);
 
-	for (i = 0; i < count; i++) {
+	for (i = 0; i < count; i++)
 		len += sprintf(&buf[len], "%d: %ddBm: BSS%s%s, %s.\n",
 			       channels[i].chan,
 			       channels[i].power_level,
@@ -8723,7 +8711,6 @@ static ssize_t show_channels(struct device *d,
 			       channels[i].
 			       flag & IEEE80211_CHAN_W_ACTIVE_SCAN ?
 			       "active/passive" : "passive only");
-	}
 
 	hw_mode = iwl_get_hw_mode(priv, MODE_IEEE80211A);
 	if (hw_mode) {
@@ -8734,12 +8721,10 @@ static ssize_t show_channels(struct device *d,
 		count = 0;
 	}
 
-	len +=
-	    sprintf(&buf[len],
-		    "Displaying %d channels in 5.2GHz band "
-		    "(802.11a):\n", count);
+	len += sprintf(&buf[len], "Displaying %d channels in 5.2GHz band "
+		       "(802.11a):\n", count);
 
-	for (i = 0; i < count; i++) {
+	for (i = 0; i < count; i++)
 		len += sprintf(&buf[len], "%d: %ddBm: BSS%s%s, %s.\n",
 			       channels[i].chan,
 			       channels[i].power_level,
@@ -8754,7 +8739,6 @@ static ssize_t show_channels(struct device *d,
 			       channels[i].
 			       flag & IEEE80211_CHAN_W_ACTIVE_SCAN ?
 			       "active/passive" : "passive only");
-	}
 
 	return len;
 }
diff --git a/drivers/net/wireless/iwl-helpers.h b/drivers/net/wireless/iwl-helpers.h
index 94dbb38..c0ea48e 100644
--- a/drivers/net/wireless/iwl-helpers.h
+++ b/drivers/net/wireless/iwl-helpers.h
@@ -314,9 +314,8 @@ static inline const char *iwl_escape_essid(const char *essid, u8 essid_len)
 			*d++ = '\\';
 			*d++ = '0';
 			s++;
-		} else {
+		} else
 			*d++ = *s++;
-		}
 	}
 	*d = '\0';
 	return escaped;
@@ -334,7 +333,7 @@ static inline unsigned long elapsed_jiffies(unsigned long start,
 
 
 static inline int snprint_line(char *buf, size_t count,
-			       const u8 * data, u32 len, u32 ofs)
+			       const u8 *data, u32 len, u32 ofs)
 {
 	int out, i, j, l;
 	char c;
diff --git a/drivers/net/wireless/iwl-io.h b/drivers/net/wireless/iwl-io.h
index e870cd8..0ae031a 100644
--- a/drivers/net/wireless/iwl-io.h
+++ b/drivers/net/wireless/iwl-io.h
@@ -178,10 +178,9 @@ static inline int _iwl_grab_restricted_access(struct iwl_priv *priv)
 			IWL_DEBUG_RF_KILL("Wait for complete power-down, "
 				"gpctl = 0x%08x\n", gp_ctl);
 			mdelay(10);
-		} else {
+		} else
 			IWL_DEBUG_RF_KILL("power-down complete, "
-				"gpctl = 0x%08x\n", gp_ctl);
-		}
+					  "gpctl = 0x%08x\n", gp_ctl);
 	}
 
 	/* this bit wakes up the NIC */
@@ -268,7 +267,7 @@ static inline u32 __iwl_read_restricted(const char *f, u32 l,
 #define iwl_read_restricted(p, r) _iwl_read_restricted(p, r)
 #endif
 
-static void inline _iwl_write_restricted(struct iwl_priv *priv,
+static inline void _iwl_write_restricted(struct iwl_priv *priv,
 					 u32 reg, u32 value)
 {
 	_iwl_write32(priv, reg, value);
@@ -285,9 +284,10 @@ static void __iwl_write_restricted(u32 line,
 	__iwl_write_restricted(__LINE__, priv, reg, value)
 
 static inline void iwl_write_buffer_restricted(struct iwl_priv *priv,
-					       u32 reg, u32 len, u32 * values)
+					       u32 reg, u32 len, u32 *values)
 {
 	u32 count = sizeof(u32);
+
 	if ((priv != NULL) && (values != NULL)) {
 		for (; 0 < len; len -= count, reg += count, values++)
 			_iwl_write_restricted(priv, reg, *values);
@@ -308,19 +308,19 @@ static inline int _iwl_poll_restricted_bit(struct iwl_priv *priv,
 
 	return -ETIMEDOUT;
 }
+
 static inline int __iwl_poll_restricted_bit(const char *f, u32 l,
 					    struct iwl_priv *priv,
 					    u32 addr, u32 mask, int timeout)
 {
 	int rc = _iwl_poll_restricted_bit(priv, addr, mask, timeout);
+
 	if (unlikely(rc == -ETIMEDOUT))
-		IWL_DEBUG_IO
-		    ("poll_restricted_bit(0x%08X, 0x%08X) - timedout - %s %d\n",
-		     addr, mask, f, l);
+		IWL_DEBUG_IO("poll_restricted_bit(0x%08X, 0x%08X) - "
+			     "timedout - %s %d\n", addr, mask, f, l);
 	else
-		IWL_DEBUG_IO
-		    ("poll_restricted_bit(0x%08X, 0x%08X) = 0x%08X - %s %d\n",
-		     addr, mask, rc, f, l);
+		IWL_DEBUG_IO("poll_restricted_bit(0x%08X, 0x%08X) = 0x%08X "
+			     "- %s %d\n", addr, mask, rc, f, l);
 	return rc;
 }
 
@@ -383,7 +383,7 @@ static inline void __iwl_set_bits_restricted_reg(u32 line, struct iwl_priv
 #define _iwl_set_bits_mask_restricted_reg(priv, reg, bits, mask) \
 	_iwl_write_restricted_reg( \
 	    priv, reg, ((_iwl_read_restricted_reg(priv, reg) & mask) | bits))
-static void inline __iwl_set_bits_mask_restricted_reg(u32 line, struct iwl_priv
+static inline void __iwl_set_bits_mask_restricted_reg(u32 line, struct iwl_priv
 						      *priv, u32 reg,
 						      u32 bits, u32 mask)
 {
@@ -417,7 +417,7 @@ static inline void iwl_write_restricted_mem(struct iwl_priv *priv, u32 addr,
 
 static inline void iwl_write_restricted_mem_buffer(struct iwl_priv *priv,
 						   u32 addr, u32 len,
-						   u32 * values)
+						   u32 *values)
 {
 	iwl_write_restricted(priv, HBUS_TARG_MEM_WADDR, addr);
 	for (; 0 < len; len -= sizeof(u32), values++)
@@ -426,7 +426,7 @@ static inline void iwl_write_restricted_mem_buffer(struct iwl_priv *priv,
 
 static inline void iwl_write_restricted_reg_buffer(struct iwl_priv *priv,
 						   u32 reg, u32 len,
-						   u8 * values)
+						   u8 *values)
 {
 	u32 reg_offset = reg;
 	u32 aligment = reg & 0x3;
diff --git a/drivers/net/wireless/iwlwifi.h b/drivers/net/wireless/iwlwifi.h
index 3de6425..002f8e8 100644
--- a/drivers/net/wireless/iwlwifi.h
+++ b/drivers/net/wireless/iwlwifi.h
@@ -520,11 +520,11 @@ struct fw_image_desc {
 /* uCode file layout */
 struct iwl_ucode {
 	__le32 ver;		/* major/minor/subminor */
-	__le32 inst_size;		/* bytes of runtime instructions */
-	__le32 data_size;		/* bytes of runtime data */
-	__le32 init_size;		/* bytes of initialization instructions */
+	__le32 inst_size;	/* bytes of runtime instructions */
+	__le32 data_size;	/* bytes of runtime data */
+	__le32 init_size;	/* bytes of initialization instructions */
 	__le32 init_data_size;	/* bytes of initialization data */
-	__le32 boot_size;		/* bytes of bootstrap instructions */
+	__le32 boot_size;	/* bytes of bootstrap instructions */
 	u8 data[0];		/* data in same order as "size" elements */
 };
 
@@ -590,7 +590,7 @@ struct iwl_addsta_cmd;
 extern int iwl_send_add_station(struct iwl_priv *priv,
 				struct iwl_addsta_cmd *sta, u8 flags);
 extern const char *iwl_get_tx_fail_reason(u32 status);
-extern u8 iwl_add_station(struct iwl_priv *priv, const u8 * bssid,
+extern u8 iwl_add_station(struct iwl_priv *priv, const u8 *bssid,
 			  int is_ap, u8 flags);
 extern int iwl_is_network_packet(struct iwl_priv *priv,
 				 struct ieee80211_hdr *header);
@@ -631,7 +631,7 @@ extern int iwl_send_cmd_pdu(struct iwl_priv *priv, u8 id, u16 len,
 extern int __must_check iwl_send_cmd(struct iwl_priv *priv,
 				     struct iwl_host_cmd *cmd);
 extern int iwl_fill_beacon_frame(struct iwl_priv *priv,
-				 struct ieee80211_hdr *hdr, const u8 * dest,
+				 struct ieee80211_hdr *hdr, const u8 *dest,
 				 int left);
 extern int iwl_rx_queue_update_write_ptr(struct iwl_priv *priv,
 					 struct iwl_rx_queue *q);
@@ -715,7 +715,7 @@ extern int iwl4965_get_temperature(const struct iwl_priv *priv);
  * not yet been merged into a single common layer for managing the
  * station tables.
  */
-extern u8 iwl_hw_find_station(struct iwl_priv *priv, const u8 * bssid);
+extern u8 iwl_hw_find_station(struct iwl_priv *priv, const u8 *bssid);
 
 extern int iwl_hw_channel_switch(struct iwl_priv *priv, u8 channel);
 extern int iwl_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index);
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 02/28] iwlwifi: add more Kconfig options
  2007-08-08  7:33 ` [PATCH 01/28] iwlwifi: fix a lot of checkpatch.pl warnings Zhu Yi
@ 2007-08-08  7:33   ` Zhu Yi
  2007-08-08  7:33     ` [PATCH 03/28] iwlwifi: Endianity fix for 4965 rate scaling Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Add IWLWIFI_SENSITIVITY, IWLWIFI_SPECTRUM_MEASUREMENT, and IWLWIFI_QOS.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/Kconfig |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index daa7c9e..a9f97ab 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -768,6 +768,29 @@ config IWLWIFI_DEBUG
 	  as the debug information can assist others in helping you resolve
 	  any problems you may encounter.
 
+config IWLWIFI_SENSITIVITY
+	bool "Enable Sensitivity Calibration in iwlwifi drivers"
+	depends on IWLWIFI
+	default y
+	---help---
+	  This option will enable sensitivity calibration for the iwlwifi
+	  drivers.
+
+config IWLWIFI_SPECTRUM_MEASUREMENT
+	bool "Enable Spectrum Measurement in iwlwifi drivers"
+	depends on IWLWIFI
+	default y
+	---help---
+	  This option will enable spectrum measurement for the iwlwifi drivers.
+
+config IWLWIFI_QOS
+	bool "Enable Wireless QoS in iwlwifi drivers"
+	depends on IWLWIFI
+	default y
+	---help---
+	  This option will enable wireless quality of service (QoS) for the
+	  iwlwifi drivers.
+
 config IWLWIFI_HT
 	bool "Enable 802.11n HT features in iwlwifi drivers"
 	depends on EXPERIMENTAL
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 03/28] iwlwifi: Endianity fix for 4965 rate scaling
  2007-08-08  7:33   ` [PATCH 02/28] iwlwifi: add more Kconfig options Zhu Yi
@ 2007-08-08  7:33     ` Zhu Yi
  2007-08-08  7:33       ` [PATCH 04/28] iwlwifi: Endianity fix for 4965 rx chain selection Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Tomas Winkler, Zhu Yi

From: Tomas Winkler <tomas.winkler@intel.com>

This patch fixes endianity issues in 4965 rate scaling algorithm.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-4965-hw.h  |    4 ++-
 drivers/net/wireless/iwl-4965-rs.c  |   54 ++++++++++++++++++++++-------------
 drivers/net/wireless/iwl-4965.c     |   18 ++++++------
 drivers/net/wireless/iwl-commands.h |   11 -------
 4 files changed, 46 insertions(+), 41 deletions(-)

diff --git a/drivers/net/wireless/iwl-4965-hw.h b/drivers/net/wireless/iwl-4965-hw.h
index d7b69f5..fc9f506 100644
--- a/drivers/net/wireless/iwl-4965-hw.h
+++ b/drivers/net/wireless/iwl-4965-hw.h
@@ -314,7 +314,9 @@ struct iwl_link_quality_cmd {
 	__le16 control;
 	struct iwl_link_qual_general_params general_params;
 	struct iwl_link_qual_agg_params agg_params;
-	struct iwl_rate rate_scale_table[LINK_QUAL_MAX_RETRY_NUM];
+	struct {
+		__le32 rate_n_flags;
+	} rs_table[LINK_QUAL_MAX_RETRY_NUM];
 	__le32 reserved2;
 } __attribute__ ((packed));
 
diff --git a/drivers/net/wireless/iwl-4965-rs.c b/drivers/net/wireless/iwl-4965-rs.c
index 07fe911..3fab3c9 100644
--- a/drivers/net/wireless/iwl-4965-rs.c
+++ b/drivers/net/wireless/iwl-4965-rs.c
@@ -69,6 +69,17 @@ static u8 rs_ht_to_legacy[] = {
 	IWL_RATE_48M_INDEX, IWL_RATE_54M_INDEX
 };
 
+struct iwl_rate {
+	union {
+		struct {
+			u8 rate;
+			u8 flags;
+			u16 ext_flags;
+		} s;
+		u32 rate_n_flags;
+	};
+} __attribute__ ((packed));
+
 struct iwl_rate_scale_data {
 	u64 data;
 	s32 success_counter;
@@ -205,7 +216,7 @@ static int rs_send_lq_cmd(struct iwl_priv *priv,
 #ifdef CONFIG_IWLWIFI_DEBUG
 	for (i = 0; i < LINK_QUAL_MAX_RETRY_NUM; i++)
 		IWL_DEBUG_RATE("lq index %d 0x%X\n",
-			       i, lq->rate_scale_table[i].rate_n_flags);
+			       i, lq->rs_table[i].rate_n_flags);
 #endif
 
 	if (flags & CMD_ASYNC)
@@ -340,8 +351,8 @@ int static rs_mcs_from_tbl(struct iwl_rate *mcs_rate,
 	return rc;
 }
 
-static int rs_get_tbl_info_from_mcs(struct iwl_rate *mcs_rate, int phymode,
-				    struct iwl_scale_tbl_info *tbl,
+static int rs_get_tbl_info_from_mcs(const struct iwl_rate *mcs_rate,
+				    int phymode, struct iwl_scale_tbl_info *tbl,
 				    int *rate_idx)
 {
 	int index;
@@ -665,17 +676,17 @@ static void rs_tx_status(void *priv_rate,
 	}
 
 	if (retries &&
-	    (tx_mcs.rate_n_flags != table->rate_scale_table[0].rate_n_flags)) {
+	    (tx_mcs.rate_n_flags != table->rs_table[0].rate_n_flags)) {
 		IWL_DEBUG_RATE("initial rate does not match 0x%x 0x%x\n",
 				tx_mcs.rate_n_flags,
-				table->rate_scale_table[0].rate_n_flags);
+				table->rs_table[0].rate_n_flags);
 		sta_info_put(sta);
 		return;
 	}
 
 	while (retries) {
 		tx_mcs.rate_n_flags =
-		    table->rate_scale_table[index].rate_n_flags;
+		    le32_to_cpu(table->rs_table[index].rate_n_flags);
 		rs_get_tbl_info_from_mcs(&tx_mcs, priv->phymode,
 					  &tbl_type, &rs_index);
 
@@ -708,7 +719,7 @@ static void rs_tx_status(void *priv_rate,
 		tx_mcs.rate_n_flags = tx_resp->control.tx_rate;
 	else
 		tx_mcs.rate_n_flags =
-			table->rate_scale_table[index].rate_n_flags;
+			le32_to_cpu(table->rs_table[index].rate_n_flags);
 
 	rs_get_tbl_info_from_mcs(&tx_mcs, priv->phymode,
 				  &tbl_type, &rs_index);
@@ -1572,7 +1583,7 @@ static void rs_rate_scale_perform(struct iwl_priv *priv,
  lq_update:
 	if (update_lq) {
 		rs_mcs_from_tbl(&mcs_rate, tbl, index, is_green);
-		rs_fill_link_cmd(lq_data, &mcs_rate, &(lq_data->lq), sta);
+		rs_fill_link_cmd(lq_data, &mcs_rate, &lq_data->lq, sta);
 
 		if (!rs_send_lq_cmd(priv, &lq_data->lq, CMD_ASYNC))
 			lq_data->commit_lq = 0;
@@ -1773,7 +1784,7 @@ static struct ieee80211_rate *rs_get_rate(void *priv_rate,
 		}
 		if ((sta_id != IWL_INVALID_STATION)) {
 			lq->lq.sta_id = sta_id;
-			lq->lq.rate_scale_table[0].rate_n_flags = 0;
+			lq->lq.rs_table[0].rate_n_flags = 0;
 			lq->ibss_sta_added = 1;
 			lq->commit_lq = 1;
 			rs_initialize_lq(priv, sta);
@@ -1858,7 +1869,7 @@ static void rs_rate_init(void *priv_rate, void *priv_sta,
 		}
 		if ((sta_id != IWL_INVALID_STATION)) {
 			crl->lq.sta_id = sta_id;
-			crl->lq.rate_scale_table[0].rate_n_flags = 0;
+			crl->lq.rs_table[0].rate_n_flags = 0;
 		}
 		priv->lq_mngr.lq_ready = 1;
 	}
@@ -1912,6 +1923,7 @@ static int rs_fill_link_cmd(struct iwl_rate_scale_priv *lq_data,
 	u8 use_ht_possible = 1;
 	u8 repeat_cur_rate = 0;
 	struct iwl_rate new_rate;
+	struct iwl_rate tbl_rate;
 	struct iwl_scale_tbl_info tbl_type = { 0 };
 
 	rs_get_tbl_info_from_mcs(tx_mcs, lq_data->phymode,
@@ -1923,7 +1935,8 @@ static int rs_fill_link_cmd(struct iwl_rate_scale_priv *lq_data,
 	} else
 		repeat_cur_rate = IWL_HT_NUMBER_TRY;
 
-	lq_cmd->rate_scale_table[index].rate_n_flags = tx_mcs->rate_n_flags;
+	lq_cmd->rs_table[index].rate_n_flags =
+			cpu_to_le32(tx_mcs->rate_n_flags);
 	lq_cmd->general_params.mimo_delimiter =
 			is_mimo(tbl_type.lq_type) ? 1 : 0;
 	new_rate.rate_n_flags = tx_mcs->rate_n_flags;
@@ -1947,13 +1960,14 @@ static int rs_fill_link_cmd(struct iwl_rate_scale_priv *lq_data,
 					ant_toggle_count = 1;
 				}
 			}
-			lq_cmd->rate_scale_table[index].rate_n_flags =
-				    new_rate.rate_n_flags;
+			lq_cmd->rs_table[index].rate_n_flags =
+					cpu_to_le32(new_rate.rate_n_flags);
 			repeat_cur_rate--;
 			index++;
 		}
-		rs_get_tbl_info_from_mcs(&lq_cmd->rate_scale_table[index - 1],
-					 lq_data->phymode, &tbl_type,
+		tbl_rate.rate_n_flags =
+			le32_to_cpu(lq_cmd->rs_table[index - 1].rate_n_flags);
+		rs_get_tbl_info_from_mcs(&tbl_rate, lq_data->phymode, &tbl_type,
 					 &rate_idx);
 		if (is_mimo(tbl_type.lq_type))
 			lq_cmd->general_params.mimo_delimiter = index;
@@ -1974,19 +1988,19 @@ static int rs_fill_link_cmd(struct iwl_rate_scale_priv *lq_data,
 
 		use_ht_possible = 0;
 
-		lq_cmd->rate_scale_table[index].rate_n_flags =
-				new_rate.rate_n_flags;
-		/* lq_cmd->rate_scale_table[index].rate_n_flags = 0x800d; */
+		lq_cmd->rs_table[index].rate_n_flags =
+				cpu_to_le32(new_rate.rate_n_flags);
+		/* lq_cmd->rs_table[index].rate_n_flags = 0x800d; */
 
 		index++;
 		repeat_cur_rate--;
 	}
 
-	/* lq_cmd->rate_scale_table[0].rate_n_flags = 0x800d; */
+	/* lq_cmd->rs_table[0].rate_n_flags = 0x800d; */
 
 	lq_cmd->general_params.dual_stream_ant_msk = 3;
 	lq_cmd->agg_params.agg_dis_start_th = 3;
-	lq_cmd->agg_params.agg_time_limit = 4000;
+	lq_cmd->agg_params.agg_time_limit = cpu_to_le16(4000);
 	return rc;
 }
 
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index 6b8fd73..58ea2a1 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -4382,11 +4382,10 @@ void iwl4965_add_station(struct iwl_priv *priv, const u8 *addr, int is_ap)
 	struct iwl_link_quality_cmd link_cmd = {
 		.reserved1 = 0,
 	};
-	struct iwl_rate *table = link_cmd.rate_scale_table;
+	u16 rate_flags;
 
 	/* Set up the rate scaling to start at 54M and fallback
 	 * all the way to 1M in IEEE order and then spin on IEEE */
-	i = 0;
 	if (is_ap)
 		r = IWL_RATE_54M_INDEX;
 	else if ((priv->phymode == MODE_IEEE80211A) ||
@@ -4395,21 +4394,22 @@ void iwl4965_add_station(struct iwl_priv *priv, const u8 *addr, int is_ap)
 	else
 		r = IWL_RATE_1M_INDEX;
 
-	while (i < LINK_QUAL_MAX_RETRY_NUM) {
+	for (i = 0; i < LINK_QUAL_MAX_RETRY_NUM; i++) {
+		rate_flags = 0;
 		if (r >= IWL_FIRST_CCK_RATE && r <= IWL_LAST_CCK_RATE)
-			table[i].rate_n_flags |= RATE_MCS_CCK_MSK;
+			rate_flags |= RATE_MCS_CCK_MSK;
 
-		table[i].s.rate = iwl_rates[r].plcp;
-		table[i].rate_n_flags |= RATE_MCS_ANT_B_MSK;
-		table[i].rate_n_flags &= ~RATE_MCS_ANT_A_MSK;
+		rate_flags |= RATE_MCS_ANT_B_MSK;
+		rate_flags &= ~RATE_MCS_ANT_A_MSK;
+		link_cmd.rs_table[i].rate_n_flags =
+			iwl_hw_set_rate_n_flags(iwl_rates[r].plcp, rate_flags);
 		r = iwl_get_prev_ieee_rate(r);
-		i++;
 	}
 
 	link_cmd.general_params.single_stream_ant_msk = 2;
 	link_cmd.general_params.dual_stream_ant_msk = 3;
 	link_cmd.agg_params.agg_dis_start_th = 3;
-	link_cmd.agg_params.agg_time_limit = 4000;
+	link_cmd.agg_params.agg_time_limit = cpu_to_le16(4000);
 
 	/* Update the rate scaling for control frame Tx to AP */
 	link_cmd.sta_id = is_ap ? IWL_AP_ID : IWL_BROADCAST_ID;
diff --git a/drivers/net/wireless/iwl-commands.h b/drivers/net/wireless/iwl-commands.h
index 1942c8c..2327ec3 100644
--- a/drivers/net/wireless/iwl-commands.h
+++ b/drivers/net/wireless/iwl-commands.h
@@ -214,17 +214,6 @@ struct iwl_rate {
 		__le16 rate_n_flags;
 	};
 } __attribute__ ((packed));
-#elif IWL == 4965
-struct iwl_rate {
-	union {
-		struct {
-			u8 rate;
-			u8 flags;
-			__le16 ext_flags;
-		} s;
-		__le32 rate_n_flags;
-	};
-} __attribute__ ((packed));
 #endif
 
 struct iwl_dram_scratch {
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 04/28] iwlwifi: Endianity fix for 4965 rx chain selection
  2007-08-08  7:33     ` [PATCH 03/28] iwlwifi: Endianity fix for 4965 rate scaling Zhu Yi
@ 2007-08-08  7:33       ` Zhu Yi
  2007-08-08  7:33         ` [PATCH 05/28] iwlwifi: optimize iwl_queue_{inc|dec}_wrap implementation Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Tomas Winkler, Gregory Greenman, Zhu Yi

From: Tomas Winkler <tomas.winkler@intel.com>

This patch fixes endianity for rx chain setting.

Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-4965-hw.h |   14 +++++++-------
 drivers/net/wireless/iwl-base.c    |    4 ++--
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/iwl-4965-hw.h b/drivers/net/wireless/iwl-4965-hw.h
index fc9f506..106f7c0 100644
--- a/drivers/net/wireless/iwl-4965-hw.h
+++ b/drivers/net/wireless/iwl-4965-hw.h
@@ -244,18 +244,18 @@ struct iwl_channel_switch_notif {
 #define RXON_FLG_CHANNEL_MODE_PURE_40_MSK	0x02000000
 #define RXON_FLG_CHANNEL_MODE_MIXED_MSK		0x04000000
 
-#define RXON_RX_CHAIN_DRIVER_FORCE_MSK		(0x1<<0)
-#define RXON_RX_CHAIN_VALID_MSK			(0x7<<1)
+#define RXON_RX_CHAIN_DRIVER_FORCE_MSK		__constant_cpu_to_le16(0x1<<0)
+#define RXON_RX_CHAIN_VALID_MSK			__constant_cpu_to_le16(0x7<<1)
 #define RXON_RX_CHAIN_VALID_POS			(1)
-#define RXON_RX_CHAIN_FORCE_SEL_MSK		(0x7<<4)
+#define RXON_RX_CHAIN_FORCE_SEL_MSK		__constant_cpu_to_le16(0x7<<4)
 #define RXON_RX_CHAIN_FORCE_SEL_POS		(4)
-#define RXON_RX_CHAIN_FORCE_MIMO_SEL_MSK	(0x7<<7)
+#define RXON_RX_CHAIN_FORCE_MIMO_SEL_MSK	__constant_cpu_to_le16(0x7<<7)
 #define RXON_RX_CHAIN_FORCE_MIMO_SEL_POS	(7)
-#define RXON_RX_CHAIN_CNT_MSK			(0x3<<10)
+#define RXON_RX_CHAIN_CNT_MSK			__constant_cpu_to_le16(0x3<<10)
 #define RXON_RX_CHAIN_CNT_POS			(10)
-#define RXON_RX_CHAIN_MIMO_CNT_MSK		(0x3<<12)
+#define RXON_RX_CHAIN_MIMO_CNT_MSK		__constant_cpu_to_le16(0x3<<12)
 #define RXON_RX_CHAIN_MIMO_CNT_POS		(12)
-#define RXON_RX_CHAIN_MIMO_FORCE_MSK		(0x1<<14)
+#define RXON_RX_CHAIN_MIMO_FORCE_MSK		__constant_cpu_to_le16(0x1<<14)
 #define RXON_RX_CHAIN_MIMO_FORCE_POS		(14)
 
 
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index d082a10..4d73b86 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -7135,9 +7135,9 @@ static void iwl_bg_request_scan(struct work_struct *data)
 	 * Avoid A (0x1) because of its off-channel reception on A-band.
 	 * MIMO is not used here, but value is required to make uCode happy. */
 	scan->rx_chain = RXON_RX_CHAIN_DRIVER_FORCE_MSK |
-			(0x7 << RXON_RX_CHAIN_VALID_POS) |
+			cpu_to_le16((0x7 << RXON_RX_CHAIN_VALID_POS) |
 			(0x6 << RXON_RX_CHAIN_FORCE_SEL_POS) |
-			(0x7 << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS);
+			(0x7 << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS));
 #endif
 
 	if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR)
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 05/28] iwlwifi: optimize iwl_queue_{inc|dec}_wrap implementation
  2007-08-08  7:33       ` [PATCH 04/28] iwlwifi: Endianity fix for 4965 rx chain selection Zhu Yi
@ 2007-08-08  7:33         ` Zhu Yi
  2007-08-08  7:33           ` [PATCH 06/28] iwlwifi: use mask operation to replace '%' for index calculation Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

This patch optimizes implementation of iwl_queue_inc_wrap and
iwl_queue_inc_wrap based on the fact the hardware queue is power-of-two
size. We also add BUG_ON and BUILD_BUG_ON check for queue size against
is_power_of_2 in case future hardwares break this rule.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 4d73b86..becaeea 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -160,14 +160,16 @@ static int iwl_queue_space(const struct iwl_queue *q)
 	return s;
 }
 
+/* XXX: n_bd must be power-of-two size */
 static inline int iwl_queue_inc_wrap(int index, int n_bd)
 {
-	return (++index == n_bd) ? 0 : index;
+	return ++index & (n_bd - 1);
 }
 
+/* XXX: n_bd must be power-of-two size */
 static inline int iwl_queue_dec_wrap(int index, int n_bd)
 {
-	return (index == 0) ? n_bd - 1 : index - 1;
+	return --index & (n_bd - 1);
 }
 
 static inline int x2_queue_used(const struct iwl_queue *q, int i)
@@ -192,6 +194,10 @@ static int iwl_queue_init(struct iwl_priv *priv, struct iwl_queue *q,
 	q->n_window = slots_num;
 	q->id = id;
 
+	/* count must be power-of-two size, otherwise iwl_queue_inc_wrap
+	 * and iwl_queue_dec_wrap are broken. */
+	BUG_ON(!is_power_of_2(count));
+
 	q->low_mark = q->n_window / 4;
 	if (q->low_mark < 4)
 		q->low_mark = 4;
@@ -266,9 +272,13 @@ int iwl_tx_queue_init(struct iwl_priv *priv,
 
 		return -ENOMEM;
 	}
-
 	txq->need_update = 0;
+
+	/* TFD_QUEUE_SIZE_MAX must be power-of-two size, otherwise
+	 * iwl_queue_inc_wrap and iwl_queue_dec_wrap are broken. */
+	BUILD_BUG_ON(TFD_QUEUE_SIZE_MAX & (TFD_QUEUE_SIZE_MAX - 1));
 	iwl_queue_init(priv, &txq->q, TFD_QUEUE_SIZE_MAX, slots_num, txq_id);
+
 	iwl_hw_tx_queue_init(priv, txq);
 
 	return 0;
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 06/28] iwlwifi: use mask operation to replace '%' for index calculation
  2007-08-08  7:33         ` [PATCH 05/28] iwlwifi: optimize iwl_queue_{inc|dec}_wrap implementation Zhu Yi
@ 2007-08-08  7:33           ` Zhu Yi
  2007-08-08  7:33             ` [PATCH 07/28] iwlwifi: make local functions static Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

This patch replaces index calculation with '%' to mask operation. Note,
this is only applicable for power-of-two size.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-4965.c |    2 +-
 drivers/net/wireless/iwl-base.c |   18 +++++++++++-------
 drivers/net/wireless/iwl-hw.h   |    1 +
 drivers/net/wireless/iwlwifi.h  |    2 +-
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index 58ea2a1..c93c607 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -2048,7 +2048,7 @@ static struct iwl_txpower_comp_entry {
 static s32 get_min_power_index(s32 rate_power_index, u32 band)
 {
 	if (!band) {
-		if ((rate_power_index % 8) <= 4)
+		if ((rate_power_index & 7) <= 4)
 			return MIN_TX_GAIN_INDEX_52GHZ_EXT;
 	}
 	return MIN_TX_GAIN_INDEX;
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index becaeea..18c4a23 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -184,7 +184,7 @@ static inline u8 get_next_cmd_index(struct iwl_queue *q, u32 index, int is_huge)
 	if (is_huge)
 		return q->n_window;
 
-	return (u8) (index % q->n_window);
+	return index & (q->n_window - 1);
 }
 
 static int iwl_queue_init(struct iwl_priv *priv, struct iwl_queue *q,
@@ -198,6 +198,10 @@ static int iwl_queue_init(struct iwl_priv *priv, struct iwl_queue *q,
 	 * and iwl_queue_dec_wrap are broken. */
 	BUG_ON(!is_power_of_2(count));
 
+	/* slots_num must be power-of-two size, otherwise
+	 * get_next_cmd_index is broken. */
+	BUG_ON(!is_power_of_2(slots_num));
+
 	q->low_mark = q->n_window / 4;
 	if (q->low_mark < 4)
 		q->low_mark = 4;
@@ -3247,7 +3251,7 @@ int is_duplicate_packet(struct iwl_priv *priv, struct ieee80211_hdr *header)
 		struct list_head *p;
 		struct iwl_ibss_seq *entry = NULL;
 		u8 *mac = header->addr2;
-		int index = mac[5] % IWL_IBSS_MAC_HASH_SIZE;
+		int index = mac[5] & (IWL_IBSS_MAC_HASH_SIZE - 1);
 
 		__list_for_each(p, &priv->ibss_mac_hash[index]) {
 			entry =
@@ -3325,8 +3329,8 @@ static u32 iwl_usecs_to_beacons(u32 usec, u32 beacon_interval)
 	if (!interval || !usec)
 		return 0;
 
-	quot = (usec / interval) % 0x100;
-	rem = (usec % interval) % BEACON_TIME_MASK_LOW;
+	quot = (usec / interval) & (BEACON_TIME_MASK_HIGH >> 24);
+	rem = (usec % interval) & BEACON_TIME_MASK_LOW;
 
 	return (quot << 24) + rem;
 }
@@ -4344,7 +4348,7 @@ int iwl_rx_queue_restock(struct iwl_priv *priv)
 		rxq->bd[rxq->write] =
 		    iwl_dma_addr2rbd_ptr(priv, rxb->dma_addr);
 		rxq->queue[rxq->write] = rxb;
-		rxq->write = (rxq->write + 1) % RX_QUEUE_SIZE;
+		rxq->write = (rxq->write + 1) & RX_QUEUE_MASK;
 		rxq->free_count--;
 	}
 	spin_unlock_irqrestore(&rxq->lock, flags);
@@ -4647,7 +4651,7 @@ static void iwl_rx_handle(struct iwl_priv *priv)
 		spin_lock_irqsave(&rxq->lock, flags);
 		list_add_tail(&rxb->list, &priv->rxq.rx_used);
 		spin_unlock_irqrestore(&rxq->lock, flags);
-		i = (i + 1) % RX_QUEUE_SIZE;
+		i = (i + 1) & RX_QUEUE_MASK;
 	}
 
 	/* Backtrack one entry */
@@ -8562,7 +8566,7 @@ static ssize_t show_rate(struct device *d,
 
 	return sprintf(buf, "%d%s\n",
 		       (iwl_rates[i].ieee >> 1),
-		       (iwl_rates[i].ieee % 2) ? ".5" : "");
+		       (iwl_rates[i].ieee & 0x1) ? ".5" : "");
 }
 
 static DEVICE_ATTR(rate, S_IRUSR, show_rate, NULL);
diff --git a/drivers/net/wireless/iwl-hw.h b/drivers/net/wireless/iwl-hw.h
index 933a367..e01f29c 100644
--- a/drivers/net/wireless/iwl-hw.h
+++ b/drivers/net/wireless/iwl-hw.h
@@ -1076,6 +1076,7 @@ struct statistics {
 #define NUM_TFD_CHUNKS                        4
 
 #define RX_QUEUE_SIZE                         256
+#define RX_QUEUE_MASK                         255
 #define RX_QUEUE_SIZE_LOG                     8
 
 /*
diff --git a/drivers/net/wireless/iwlwifi.h b/drivers/net/wireless/iwlwifi.h
index 002f8e8..be94217 100644
--- a/drivers/net/wireless/iwlwifi.h
+++ b/drivers/net/wireless/iwlwifi.h
@@ -528,7 +528,7 @@ struct iwl_ucode {
 	u8 data[0];		/* data in same order as "size" elements */
 };
 
-#define IWL_IBSS_MAC_HASH_SIZE 31
+#define IWL_IBSS_MAC_HASH_SIZE 32
 
 struct iwl_ibss_seq {
 	u8 mac[ETH_ALEN];
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 07/28] iwlwifi: make local functions static
  2007-08-08  7:33           ` [PATCH 06/28] iwlwifi: use mask operation to replace '%' for index calculation Zhu Yi
@ 2007-08-08  7:33             ` Zhu Yi
  2007-08-08  7:33               ` [PATCH 08/28] iwlwifi: some coding styles cleanup Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-4965.c |    9 +++++----
 drivers/net/wireless/iwl-base.c |    4 ++--
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index c93c607..8175b48 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -4257,8 +4257,9 @@ static int iwl4965_tx_queue_set_q2ratid(struct iwl_priv *priv, u16 ra_tid,
 /**
  * txq_id must be greater than IWL_BACK_QUEUE_FIRST_ID
  */
-int iwl4965_tx_queue_agg_enable(struct iwl_priv *priv, int txq_id, int tx_fifo,
-				int sta_id, int tid, u16 ssn_idx)
+static int iwl4965_tx_queue_agg_enable(struct iwl_priv *priv, int txq_id,
+				       int tx_fifo, int sta_id, int tid,
+				       u16 ssn_idx)
 {
 	unsigned long flags;
 	int rc;
@@ -4315,8 +4316,8 @@ int iwl4965_tx_queue_agg_enable(struct iwl_priv *priv, int txq_id, int tx_fifo,
 /**
  * txq_id must be greater than IWL_BACK_QUEUE_FIRST_ID
  */
-int iwl4965_tx_queue_agg_disable(struct iwl_priv *priv, u16 txq_id,
-				 u16 ssn_idx, u8 tx_fifo)
+static int iwl4965_tx_queue_agg_disable(struct iwl_priv *priv, u16 txq_id,
+					u16 ssn_idx, u8 tx_fifo)
 {
 	unsigned long flags;
 	int rc;
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 18c4a23..e58dcfa 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -310,7 +310,7 @@ void iwl_tx_queue_free(struct iwl_priv *priv, struct iwl_tx_queue *txq)
 	     q->last_used = iwl_queue_inc_wrap(q->last_used, q->n_bd))
 		iwl_hw_tx_queue_free_tfd(priv, txq);
 
-	len = sizeof(txq->cmd[0]) * q->n_window;
+	len = sizeof(struct iwl_cmd) * q->n_window;
 	if (q->id == IWL_CMD_QUEUE_NUM);
 		len += IWL_MAX_SCAN_SIZE;
 
@@ -3549,7 +3549,7 @@ static inline u32 iwl_get_scd_ssn(struct iwl_tx_resp *tx_resp)
 	return le32_to_cpu(*scd_ssn & MAX_SN);
 
 }
-int iwl4965_tx_status_reply_tx(struct iwl_priv *priv,
+static int iwl4965_tx_status_reply_tx(struct iwl_priv *priv,
 				      struct iwl_ht_agg *agg,
 				      struct iwl_tx_resp *tx_resp,
 				      u16 start_idx)
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 08/28] iwlwifi: some coding styles cleanup
  2007-08-08  7:33             ` [PATCH 07/28] iwlwifi: make local functions static Zhu Yi
@ 2007-08-08  7:33               ` Zhu Yi
  2007-08-08  7:33                 ` [PATCH 09/28] iwlwifi: replace unnecessary GFP_ATOMIC with GFP_KERNEL Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c |   54 ++++++++++++++++-----------------------
 1 files changed, 22 insertions(+), 32 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index e58dcfa..8f55f0d 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -901,15 +901,15 @@ static int iwl_check_rxon_cmd(struct iwl_rxon_cmd *rxon)
 	int counter = 1;
 
 	if (rxon->flags & RXON_FLG_BAND_24G_MSK) {
-		error |=
-			le32_to_cpu(rxon->flags & RXON_FLG_TGJ_NARROW_BAND_MSK);
-		error |= le32_to_cpu(rxon->flags & RXON_FLG_RADAR_DETECT_MSK);
+		error |= le32_to_cpu(rxon->flags &
+				(RXON_FLG_TGJ_NARROW_BAND_MSK |
+				 RXON_FLG_RADAR_DETECT_MSK));
 		if (error)
 			IWL_WARNING("check 24G fields %d | %d\n",
 				    counter++, error);
 	} else {
-		error |= ((rxon->flags & RXON_FLG_SHORT_SLOT_MSK) !=
-			RXON_FLG_SHORT_SLOT_MSK);
+		error |= (rxon->flags & RXON_FLG_SHORT_SLOT_MSK) ?
+				0 : le32_to_cpu(RXON_FLG_SHORT_SLOT_MSK);
 		if (error)
 			IWL_WARNING("check 52 fields %d | %d\n",
 				    counter++, error);
@@ -917,7 +917,6 @@ static int iwl_check_rxon_cmd(struct iwl_rxon_cmd *rxon)
 		if (error)
 			IWL_WARNING("check 52 CCK %d | %d\n",
 				    counter++, error);
-
 	}
 	error |= (rxon->node_addr[0] | rxon->bssid_addr[0]) & 0x1;
 	if (error)
@@ -925,7 +924,7 @@ static int iwl_check_rxon_cmd(struct iwl_rxon_cmd *rxon)
 
 	/* make sure basic rates 6Mbps and 1Mbps are supported */
 	error |= (((rxon->ofdm_basic_rates & IWL_RATE_6M_MASK) == 0) &&
-		((rxon->cck_basic_rates & IWL_RATE_1M_MASK) == 0));
+		  ((rxon->cck_basic_rates & IWL_RATE_1M_MASK) == 0));
 	if (error)
 		IWL_WARNING("check basic rate %d | %d\n", counter++, error);
 
@@ -933,43 +932,39 @@ static int iwl_check_rxon_cmd(struct iwl_rxon_cmd *rxon)
 	if (error)
 		IWL_WARNING("check assoc id %d | %d\n", counter++, error);
 
-	error |= ((rxon->flags &
-		   (RXON_FLG_CCK_MSK | RXON_FLG_SHORT_SLOT_MSK)) ==
-		  (RXON_FLG_CCK_MSK | RXON_FLG_SHORT_SLOT_MSK));
+	error |= ((rxon->flags & (RXON_FLG_CCK_MSK | RXON_FLG_SHORT_SLOT_MSK))
+			== (RXON_FLG_CCK_MSK | RXON_FLG_SHORT_SLOT_MSK));
 	if (error)
 		IWL_WARNING("check CCK and short slot %d | %d\n",
 			    counter++, error);
 
 	error |= ((rxon->flags & (RXON_FLG_CCK_MSK | RXON_FLG_AUTO_DETECT_MSK))
-		  == (RXON_FLG_CCK_MSK | RXON_FLG_AUTO_DETECT_MSK));
+			== (RXON_FLG_CCK_MSK | RXON_FLG_AUTO_DETECT_MSK));
 	if (error)
 		IWL_WARNING("check CCK & auto detect %d | %d\n",
 			    counter++, error);
 
-	error |= ((rxon->flags &
-		   (RXON_FLG_AUTO_DETECT_MSK | RXON_FLG_TGG_PROTECT_MSK)) ==
-		  RXON_FLG_TGG_PROTECT_MSK);
+	error |= ((rxon->flags & (RXON_FLG_AUTO_DETECT_MSK |
+			RXON_FLG_TGG_PROTECT_MSK)) == RXON_FLG_TGG_PROTECT_MSK);
 	if (error)
-		IWL_WARNING("check TGG %d | %d\n", counter++, error);
+		IWL_WARNING("check TGG and auto detect %d | %d\n",
+			    counter++, error);
 
 #if IWL == 3945
 	if ((rxon->flags & RXON_FLG_DIS_DIV_MSK))
-		error |= ((rxon->flags &
-			   (RXON_FLG_ANT_B_MSK | RXON_FLG_ANT_A_MSK)) == 0);
+		error |= ((rxon->flags & (RXON_FLG_ANT_B_MSK |
+				RXON_FLG_ANT_A_MSK)) == 0);
 	if (error)
 		IWL_WARNING("check antenna %d %d\n", counter++, error);
 #endif
-
 	if (error)
 		IWL_WARNING("Tuning to channel %d\n",
 			    le16_to_cpu(rxon->channel));
 
 	if (error) {
-		IWL_ERROR
-		    ("Error not a valid iwl_rxon_assoc_cmd field values\n");
+		IWL_ERROR("Not a valid iwl_rxon_assoc_cmd field values\n");
 		return -1;
 	}
-
 	return 0;
 }
 
@@ -1512,7 +1507,7 @@ static int iwl_send_beacon_cmd(struct iwl_priv *priv)
 	frame = iwl_get_free_frame(priv);
 
 	if (!frame) {
-		IWL_ERROR("Coult not obtain free frame buffer for beacon "
+		IWL_ERROR("Could not obtain free frame buffer for beacon "
 			  "command.\n");
 		return -ENOMEM;
 	}
@@ -1642,9 +1637,6 @@ void iwl_report_frame(struct iwl_priv *priv,
 	u32 print_dump = 0;	/* set to 1 to dump all frames' contents */
 	u32 hundred = 0;
 	u32 dataframe = 0;
-
-	/* these are declared without "=" to avoid compiler warnings if we
-	 *   don't use them in the debug messages below */
 	u16 frame_ctl;
 	u16 seq_ctl;
 	u16 channel;
@@ -1659,7 +1651,6 @@ void iwl_report_frame(struct iwl_priv *priv,
 	u8 agc;
 	u16 sig_avg;
 	u16 noise_diff;
-
 	struct iwl_rx_frame_stats *rx_stats = IWL_RX_STATS(pkt);
 	struct iwl_rx_frame_hdr *rx_hdr = IWL_RX_HDR(pkt);
 	struct iwl_rx_frame_end *rx_end = IWL_RX_END(pkt);
@@ -2325,12 +2316,10 @@ static int iwl_scan_cancel(struct iwl_priv *priv, unsigned long ms)
 		} else
 			IWL_DEBUG_SCAN("Scan abort already in progress.\n");
 
-
 		mutex_unlock(&priv->mutex);
 		if (ms)
-			while (!time_after(jiffies,
-					   now + msecs_to_jiffies(ms)) &&
-			       priv->status & STATUS_SCANNING)
+			while (!time_after(jiffies, now + msecs_to_jiffies(ms))
+					&& priv->status & STATUS_SCANNING)
 				msleep(1);
 
 		mutex_lock(&priv->mutex);
@@ -3914,8 +3903,9 @@ static void iwl_rx_reply_scan(struct iwl_priv *priv,
 			      struct iwl_rx_mem_buffer *rxb)
 {
 	struct iwl_rx_packet *pkt = (void *)rxb->skb->data;
-	struct iwl_scanreq_notification *notif =
-	    (struct iwl_scanreq_notification *)pkt->u.raw;
+	struct iwl_scanstart_notification *notif =
+	    (struct iwl_scanstart_notification *)pkt->u.raw;
+
 	IWL_DEBUG_RX("Scan request status = 0x%x\n", notif->status);
 }
 
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 09/28] iwlwifi: replace unnecessary GFP_ATOMIC with GFP_KERNEL
  2007-08-08  7:33               ` [PATCH 08/28] iwlwifi: some coding styles cleanup Zhu Yi
@ 2007-08-08  7:33                 ` Zhu Yi
  2007-08-08  7:33                   ` [PATCH 10/28] iwlwifi: remove priv stuff zeroing in iwl_pci_probe Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 8f55f0d..ca4edd2 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -222,7 +222,7 @@ static int iwl_tx_queue_alloc(struct iwl_priv *priv,
 
 	if (id != IWL_CMD_QUEUE_NUM) {
 		txq->txb = kmalloc(sizeof(txq->txb[0]) *
-				   TFD_QUEUE_SIZE_MAX, GFP_ATOMIC);
+				   TFD_QUEUE_SIZE_MAX, GFP_KERNEL);
 		if (!txq->txb) {
 			IWL_ERROR("kmalloc for auxilary BD "
 				  "structures failed\n");
@@ -1460,7 +1460,7 @@ static struct iwl_frame *iwl_get_free_frame(struct iwl_priv *priv)
 	struct iwl_frame *frame;
 	struct list_head *element;
 	if (list_empty(&priv->free_frames)) {
-		frame = kzalloc(sizeof(*frame), GFP_ATOMIC);
+		frame = kzalloc(sizeof(*frame), GFP_KERNEL);
 		if (!frame) {
 			IWL_ERROR("Could not allocate frame!\n");
 			return NULL;
@@ -5706,19 +5706,19 @@ static int iwl_init_geos(struct iwl_priv *priv)
 	}
 
 	modes = kzalloc(sizeof(struct ieee80211_hw_mode) * mode_count,
-			GFP_ATOMIC);
+			GFP_KERNEL);
 	if (!modes)
 		return -ENOMEM;
 
 	channels = kzalloc(sizeof(struct ieee80211_channel) *
-			   priv->channel_count, GFP_ATOMIC);
+			   priv->channel_count, GFP_KERNEL);
 	if (!channels) {
 		kfree(modes);
 		return -ENOMEM;
 	}
 
 	rates = kzalloc((sizeof(struct ieee80211_rate) * (IWL_MAX_RATES + 1)),
-			GFP_ATOMIC);
+			GFP_KERNEL);
 	if (!rates) {
 		kfree(modes);
 		kfree(channels);
@@ -7014,7 +7014,7 @@ static void iwl_bg_request_scan(struct work_struct *data)
 
 	if (!priv->scan) {
 		priv->scan = kmalloc(sizeof(struct iwl_scan_cmd) +
-				     IWL_MAX_SCAN_SIZE, GFP_ATOMIC);
+				     IWL_MAX_SCAN_SIZE, GFP_KERNEL);
 		if (!priv->scan) {
 			rc = -ENOMEM;
 			goto done;
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 10/28] iwlwifi: remove priv stuff zeroing in iwl_pci_probe
  2007-08-08  7:33                 ` [PATCH 09/28] iwlwifi: replace unnecessary GFP_ATOMIC with GFP_KERNEL Zhu Yi
@ 2007-08-08  7:33                   ` Zhu Yi
  2007-08-08  7:33                     ` [PATCH 11/28] iwlwifi: add name for some PCI configuration space registers Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Remove priv stuff zeroing in iwl_pci_probe() since priv is already zeroed
by ieee80211_alloc_hw().

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c |    4 ----
 1 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index ca4edd2..e419391 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -9045,9 +9045,6 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	iwl_clear_stations_table(priv);
 
-	memset(&(priv->txq[0]), 0,
-	       sizeof(struct iwl_tx_queue) * IWL_MAX_NUM_QUEUES);
-	memset(&priv->card_alive, 0, sizeof(struct iwl_alive_resp));
 	priv->data_retry_limit = -1;
 	priv->ieee_channels = NULL;
 	priv->ieee_rates = NULL;
@@ -9138,7 +9135,6 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 
 #ifdef CONFIG_IWLWIFI_QOS
-	memset(&priv->qos_data, 0, sizeof(struct iwl_qos_info));
 	if (iwl_param_qos_enable)
 		priv->qos_data.qos_enable = 1;
 	priv->qos_data.qos_active = 0;
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 11/28] iwlwifi: add name for some PCI configuration space registers
  2007-08-08  7:33                   ` [PATCH 10/28] iwlwifi: remove priv stuff zeroing in iwl_pci_probe Zhu Yi
@ 2007-08-08  7:33                     ` Zhu Yi
  2007-08-08  7:33                       ` [PATCH 12/28] iwlwifi: shorten some structure and function names Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-3945.c |    3 ++-
 drivers/net/wireless/iwl-4965.c |    8 +++++---
 drivers/net/wireless/iwl-hw.h   |    2 ++
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/iwl-3945.c b/drivers/net/wireless/iwl-3945.c
index 8e78ad5..50c21aa 100644
--- a/drivers/net/wireless/iwl-3945.c
+++ b/drivers/net/wireless/iwl-3945.c
@@ -721,7 +721,8 @@ static int iwl3945_nic_set_pwr_src(struct iwl_priv *priv, int pwr_max)
 
 	if (!pwr_max) {
 		u32 val;
-		rc = pci_read_config_dword(priv->pci_dev, 0x0C8, &val);
+		rc = pci_read_config_dword(priv->pci_dev, PCI_POWER_SOURCE,
+					   &val);
 		if (val & PCI_CFG_PMC_PME_FROM_D3COLD_SUPPORT) {
 			iwl_set_bits_mask_restricted_reg(
 				priv, ALM_APMG_PS_CTL,
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index 8175b48..d334951 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -203,7 +203,8 @@ static int iwl4965_nic_set_pwr_src(struct iwl_priv *priv, int pwr_max)
 
 	if (!pwr_max) {
 		u32 val;
-		rc = pci_read_config_dword(priv->pci_dev, 0x0C8, &val);
+		rc = pci_read_config_dword(priv->pci_dev, PCI_POWER_SOURCE,
+					   &val);
 
 		if (val & PCI_CFG_PMC_PME_FROM_D3COLD_SUPPORT)
 			iwl_set_bits_mask_restricted_reg(
@@ -476,9 +477,10 @@ int iwl_hw_nic_init(struct iwl_priv *priv)
 	spin_lock_irqsave(&priv->lock, flags);
 
 	if ((rev_id & 0x80) == 0x80 && (rev_id & 0x7f) < 8) {
-		pci_read_config_dword(priv->pci_dev, 0xe8, &val);
+		pci_read_config_dword(priv->pci_dev, PCI_REG_WUM8, &val);
 		/* Enable No Snoop field */
-		pci_write_config_dword(priv->pci_dev, 0xe8, val & ~(1 << 11));
+		pci_write_config_dword(priv->pci_dev, PCI_REG_WUM8,
+				       val & ~(1 << 11));
 	}
 
 	spin_unlock_irqrestore(&priv->lock, flags);
diff --git a/drivers/net/wireless/iwl-hw.h b/drivers/net/wireless/iwl-hw.h
index e01f29c..f371794 100644
--- a/drivers/net/wireless/iwl-hw.h
+++ b/drivers/net/wireless/iwl-hw.h
@@ -179,6 +179,8 @@ struct iwl_error_resp {
 } __attribute__ ((packed));
 
 #define PCI_LINK_CTRL      0x0F0
+#define PCI_POWER_SOURCE   0x0C8
+#define PCI_REG_WUM8       0x0E8
 
 /*
  * Rx config defines & structure
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 12/28] iwlwifi: shorten some structure and function names
  2007-08-08  7:33                     ` [PATCH 11/28] iwlwifi: add name for some PCI configuration space registers Zhu Yi
@ 2007-08-08  7:33                       ` Zhu Yi
  2007-08-08  7:33                         ` [PATCH 13/28] iwlwifi: define iwl_rx_reply_scan only when CONFIG_IWLWIFI_DEBUG enabled Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-3945.c   |    1 -
 drivers/net/wireless/iwl-4965.c   |   79 +++++++++++++------------------------
 drivers/net/wireless/iwl-base.c   |   10 +----
 drivers/net/wireless/iwl-eeprom.h |   15 +++----
 drivers/net/wireless/iwl-io.h     |   10 ++---
 5 files changed, 41 insertions(+), 74 deletions(-)

diff --git a/drivers/net/wireless/iwl-3945.c b/drivers/net/wireless/iwl-3945.c
index 50c21aa..c4441db 100644
--- a/drivers/net/wireless/iwl-3945.c
+++ b/drivers/net/wireless/iwl-3945.c
@@ -307,7 +307,6 @@ static void iwl3945_rx_reply_rx(struct iwl_priv *priv,
 		.rate = rx_hdr->rate,
 		.flag = 0,
 	};
-
 	u8 network_packet;
 	int snr;
 
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index d334951..0cbe798 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -660,10 +660,6 @@ int iwl_hw_nic_reset(struct iwl_priv *priv)
 		iwl_release_restricted_access(priv);
 	}
 
-	spin_unlock_irqrestore(&priv->lock, flags);
-
-	spin_lock_irqsave(&priv->lock, flags);
-
 	priv->status &= ~STATUS_HCMD_ACTIVE;
 	wake_up_interruptible(&priv->wait_command_queue);
 
@@ -1894,7 +1890,7 @@ iwl4965_get_channel_txpower_info(struct iwl_priv *priv, u8 phymode, u8 channel)
 	return ch_info;
 }
 
-static s32 iwl4965_get_txatten_group_from_channel(u32 channel)
+static s32 iwl4965_get_tx_atten_grp(u32 channel)
 {
 	if (channel >= CALIB_IWL_TX_ATTEN_GR5_FCH &&
 	    channel <= CALIB_IWL_TX_ATTEN_GR5_LCH)
@@ -1922,22 +1918,18 @@ static s32 iwl4965_get_txatten_group_from_channel(u32 channel)
 
 static u32 iwl4965_get_sub_band(const struct iwl_priv *priv, u32 channel)
 {
-	s32 sub_band = -1;
+	s32 b = -1;
 
-	for (sub_band = 0; sub_band < EEPROM_TX_POWER_BANDS; sub_band++) {
-
-		if (priv->eeprom.calib_info.band_info_tbl[sub_band].ch_from ==
-		    0)
+	for (b = 0; b < EEPROM_TX_POWER_BANDS; b++) {
+		if (priv->eeprom.calib_info.band_info[b].ch_from == 0)
 			continue;
 
-		if ((channel >=
-		     priv->eeprom.calib_info.band_info_tbl[sub_band].ch_from)
-		    && (channel <=
-			priv->eeprom.calib_info.band_info_tbl[sub_band].ch_to))
+		if ((channel >= priv->eeprom.calib_info.band_info[b].ch_from)
+		    && (channel <= priv->eeprom.calib_info.band_info[b].ch_to))
 			break;
 	}
 
-	return sub_band;
+	return b;
 }
 
 static s32 iwl4965_interpolate_value(s32 x, s32 x1, s32 y1, s32 x2, s32 y2)
@@ -1952,16 +1944,15 @@ static s32 iwl4965_interpolate_value(s32 x, s32 x1, s32 y1, s32 x2, s32 y2)
 	}
 }
 
-static int iwl4965_interpolate_chan(
-	struct iwl_priv *priv, u32 channel,
-	struct iwl_eeprom_calib_channel_info *chan_info)
+static int iwl4965_interpolate_chan(struct iwl_priv *priv, u32 channel,
+				    struct iwl_eeprom_calib_ch_info *chan_info)
 {
 	s32 s = -1;
 	u32 c;
 	u32 m;
-	const struct iwl_eeprom_calib_measurement *m1;
-	const struct iwl_eeprom_calib_measurement *m2;
-	struct iwl_eeprom_calib_measurement *omeas;
+	const struct iwl_eeprom_calib_measure *m1;
+	const struct iwl_eeprom_calib_measure *m2;
+	struct iwl_eeprom_calib_measure *omeas;
 	u32 ch_i1;
 	u32 ch_i2;
 
@@ -1971,8 +1962,8 @@ static int iwl4965_interpolate_chan(
 		return -1;
 	}
 
-	ch_i1 = priv->eeprom.calib_info.band_info_tbl[s].ch1.ch_num;
-	ch_i2 = priv->eeprom.calib_info.band_info_tbl[s].ch2.ch_num;
+	ch_i1 = priv->eeprom.calib_info.band_info[s].ch1.ch_num;
+	ch_i2 = priv->eeprom.calib_info.band_info[s].ch2.ch_num;
 	chan_info->ch_num = (u8) channel;
 
 	IWL_DEBUG_TXPOWER("channel %d subband %d factory cal ch %d & %d\n",
@@ -1980,9 +1971,9 @@ static int iwl4965_interpolate_chan(
 
 	for (c = 0; c < EEPROM_TX_POWER_TX_CHAINS; c++) {
 		for (m = 0; m < EEPROM_TX_POWER_MEASUREMENTS; m++) {
-			m1 = &(priv->eeprom.calib_info.band_info_tbl[s].ch1.
+			m1 = &(priv->eeprom.calib_info.band_info[s].ch1.
 			       measurements[c][m]);
-			m2 = &(priv->eeprom.calib_info.band_info_tbl[s].ch2.
+			m2 = &(priv->eeprom.calib_info.band_info[s].ch2.
 			       measurements[c][m]);
 			omeas = &(chan_info->measurements[c][m]);
 
@@ -2299,12 +2290,12 @@ static int iwl4965_fill_txpower_tbl(struct iwl_priv *priv, u8 band, u8 channel,
 	s32 current_temp;
 	s32 reg_limit;
 	s32 current_regulatory;
-	s32 txatten_group = CALIB_CH_GROUP_MAX;
+	s32 txatten_grp = CALIB_CH_GROUP_MAX;
 	int i = 0;
 	int c;
 	const struct iwl_channel_info *ch_info = NULL;
-	struct iwl_eeprom_calib_channel_info ch_eeprom_info;
-	const struct iwl_eeprom_calib_measurement *measurement;
+	struct iwl_eeprom_calib_ch_info ch_eeprom_info;
+	const struct iwl_eeprom_calib_measure *measurement;
 	s16 voltage;
 	s32 init_voltage;
 	s32 voltage_compensation;
@@ -2344,12 +2335,12 @@ static int iwl4965_fill_txpower_tbl(struct iwl_priv *priv, u8 band, u8 channel,
 
 	/* get txatten group, used to select 1) thermal txpower adjustment
 	 *   and 2) mimo txpower balance between Tx chains. */
-	txatten_group = iwl4965_get_txatten_group_from_channel(channel);
-	if (txatten_group < 0)
+	txatten_grp = iwl4965_get_tx_atten_grp(channel);
+	if (txatten_grp < 0)
 		return -EINVAL;
 
 	IWL_DEBUG_TXPOWER("channel %d belongs to txatten group %d\n",
-			  channel, txatten_group);
+			  channel, txatten_grp);
 
 	if (is_fat) {
 		if (ctrl_chan_high)
@@ -2407,18 +2398,12 @@ static int iwl4965_fill_txpower_tbl(struct iwl_priv *priv, u8 band, u8 channel,
 	current_temp = min(priv->temperature, IWL_TX_POWER_TEMPERATURE_MAX);
 	current_temp = KELVIN_TO_CELSIUS(current_temp);
 
-	if (-40 > current_temp) {
-		IWL_WARNING("Invalid temperature %d, can't calculate "
-			    "txpower\n", current_temp);
-		return -EINVAL;
-	}
-
 	/* select thermal txpower adjustment params, based on channel group
 	 *   (same frequency group used for mimo txatten adjustment) */
 	degrees_per_05db_num =
-	    tx_power_cmp_tble[txatten_group].degrees_per_05db_a;
+	    tx_power_cmp_tble[txatten_grp].degrees_per_05db_a;
 	degrees_per_05db_denom =
-	    tx_power_cmp_tble[txatten_group].degrees_per_05db_a_denom;
+	    tx_power_cmp_tble[txatten_grp].degrees_per_05db_a_denom;
 
 	/* get per-chain txpower values from factory measurements */
 	for (c = 0; c < 2; c++) {
@@ -2486,7 +2471,7 @@ static int iwl4965_fill_txpower_tbl(struct iwl_priv *priv, u8 band, u8 channel,
 			if (is_mimo_rate)
 				atten_value =
 				    priv->card_alive_init.
-				    tx_atten[txatten_group][c];
+				    tx_atten[txatten_grp][c];
 			else
 				atten_value = 0;
 
@@ -2765,11 +2750,6 @@ int iwl_hw_tx_queue_init(struct iwl_priv *priv, struct iwl_tx_queue *txq)
 	return 0;
 }
 
-static inline u32 iwl4965_get_dma_lo_address(dma_addr_t addr)
-{
-	return (u32) (addr & 0xffffffff);
-}
-
 static inline u8 iwl4965_get_dma_hi_address(dma_addr_t addr)
 {
 	return sizeof(addr) > sizeof(u32) ? (addr >> 16) >> 16 : 0;
@@ -2792,8 +2772,7 @@ int iwl_hw_tx_queue_attach_buffer_to_tfd(struct iwl_priv *priv,
 	is_odd = num_tbs & 0x1;
 
 	if (!is_odd) {
-		tfd->pa[index].tb1_addr = cpu_to_le32(
-			     iwl4965_get_dma_lo_address(addr));
+		tfd->pa[index].tb1_addr = cpu_to_le32(addr);
 		IWL_SET_BITS(tfd->pa[index], tb1_addr_hi,
 			     iwl4965_get_dma_hi_address(addr));
 		IWL_SET_BITS(tfd->pa[index], tb1_len, len);
@@ -3281,8 +3260,7 @@ int iwl4965_tx_cmd(struct iwl_priv *priv, struct iwl_cmd *out_cmd,
 
 	scratch_phys = txcmd_phys + sizeof(struct iwl_cmd_header) +
 	    offsetof(struct iwl_tx_cmd, scratch);
-	tx->dram_lsb_ptr = cpu_to_le32(
-			iwl4965_get_dma_lo_address(scratch_phys));
+	tx->dram_lsb_ptr = cpu_to_le32(scratch_phys);
 	tx->dram_msb_ptr = iwl4965_get_dma_hi_address(scratch_phys);
 
 	/* Hard coded to start at the highest retry fallback position
@@ -3802,7 +3780,6 @@ static void iwl4965_rx_reply_rx(struct iwl_priv *priv,
 				struct iwl_rx_mem_buffer *rxb)
 {
 	struct iwl_rx_packet *pkt = (void *)rxb->skb->data;
-
 	/* Use phy data (Rx signal strength, etc.) contained within
 	 *   this rx packet for legacy frames,
 	 *   or phy data cached from REPLY_RX_PHY_CMD for HT frames. */
@@ -3810,7 +3787,6 @@ static void iwl4965_rx_reply_rx(struct iwl_priv *priv,
 	struct iwl4965_rx_phy_res *rx_start = (include_phy) ?
 		(struct iwl4965_rx_phy_res *)&(pkt->u.raw[0]) :
 		(struct iwl4965_rx_phy_res *)&priv->last_phy_res[1];
-
 	__le32 *rx_end;
 	unsigned int len = 0;
 	struct ieee80211_hdr *header;
@@ -4098,6 +4074,7 @@ static void iwl4965_set_tx_status(struct iwl_priv *priv, int txq_id, int idx,
 {
 	struct ieee80211_tx_status *tx_status =
 		&(priv->txq[txq_id].txb[idx].status);
+
 	tx_status->flags = status?IEEE80211_TX_STATUS_ACK:0;
 	tx_status->retry_count += retry_count;
 	tx_status->control.tx_rate = rate;
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index e419391..dad9649 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -4296,8 +4296,8 @@ int iwl_rx_queue_update_write_ptr(struct iwl_priv *priv, struct iwl_rx_queue *q)
 		if (rc)
 			goto exit_unlock;
 
-		iwl_write_restricted(priv,
-				     FH_RSCSR_CHNL0_WPTR, q->write & ~0x7);
+		iwl_write_restricted(priv, FH_RSCSR_CHNL0_WPTR,
+				     q->write & ~0x7);
 		iwl_release_restricted_access(priv);
 	} else
 		iwl_write32(priv, FH_RSCSR_CHNL0_WPTR, q->write & ~0x7);
@@ -6745,11 +6745,7 @@ void iwl_down(struct iwl_priv *priv)
 	udelay(5);
 
 	iwl_hw_nic_stop_master(priv);
-
-	spin_lock_irqsave(&priv->lock, flags);
 	iwl_set_bit(priv, CSR_RESET, CSR_RESET_REG_FLAG_SW_RESET);
-	spin_unlock_irqrestore(&priv->lock, flags);
-
 	iwl_hw_nic_reset(priv);
 
  exit:
@@ -9328,9 +9324,7 @@ static void iwl_resume(struct iwl_priv *priv)
 
 	spin_lock_irqsave(&priv->lock, flags);
 	iwl_clear_bit(priv, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ);
-	spin_unlock_irqrestore(&priv->lock, flags);
 
-	spin_lock_irqsave(&priv->lock, flags);
 	if (!iwl_grab_restricted_access(priv)) {
 		iwl_write_restricted_reg(priv, ALM_APMG_CLK_DIS,
 					 APMG_CLK_REG_VAL_DMA_CLK_RQT);
diff --git a/drivers/net/wireless/iwl-eeprom.h b/drivers/net/wireless/iwl-eeprom.h
index 19d7028..c6b0faa 100644
--- a/drivers/net/wireless/iwl-eeprom.h
+++ b/drivers/net/wireless/iwl-eeprom.h
@@ -187,32 +187,31 @@ struct iwl_eeprom_temperature_corr {
 #define EEPROM_TX_POWER_VERSION        (2)
 #define EEPROM_TX_POWER_VERSION_NEW    (5)
 
-struct iwl_eeprom_calib_measurement {
+struct iwl_eeprom_calib_measure {
 	u8 temperature;
 	u8 gain_idx;
 	u8 actual_pow;
 	s8 pa_det;
 } __attribute__ ((packed));
 
-struct iwl_eeprom_calib_channel_info {
+struct iwl_eeprom_calib_ch_info {
 	u8 ch_num;
-	struct iwl_eeprom_calib_measurement
-	 measurements[EEPROM_TX_POWER_TX_CHAINS][EEPROM_TX_POWER_MEASUREMENTS];
+	struct iwl_eeprom_calib_measure measurements[EEPROM_TX_POWER_TX_CHAINS]
+		[EEPROM_TX_POWER_MEASUREMENTS];
 } __attribute__ ((packed));
 
 struct iwl_eeprom_calib_subband_info {
 	u8 ch_from;
 	u8 ch_to;
-	struct iwl_eeprom_calib_channel_info ch1;
-	struct iwl_eeprom_calib_channel_info ch2;
+	struct iwl_eeprom_calib_ch_info ch1;
+	struct iwl_eeprom_calib_ch_info ch2;
 } __attribute__ ((packed));
 
 struct iwl_eeprom_calib_info {
 	u8 saturation_power24;
 	u8 saturation_power52;
 	__le16 voltage;		/* signed */
-	struct iwl_eeprom_calib_subband_info
-	 band_info_tbl[EEPROM_TX_POWER_BANDS];
+	struct iwl_eeprom_calib_subband_info band_info[EEPROM_TX_POWER_BANDS];
 } __attribute__ ((packed));
 
 #endif
diff --git a/drivers/net/wireless/iwl-io.h b/drivers/net/wireless/iwl-io.h
index 0ae031a..3f8cb06 100644
--- a/drivers/net/wireless/iwl-io.h
+++ b/drivers/net/wireless/iwl-io.h
@@ -415,18 +415,16 @@ static inline void iwl_write_restricted_mem(struct iwl_priv *priv, u32 addr,
 	iwl_write_restricted(priv, HBUS_TARG_MEM_WDAT, val);
 }
 
-static inline void iwl_write_restricted_mem_buffer(struct iwl_priv *priv,
-						   u32 addr, u32 len,
-						   u32 *values)
+static inline void iwl_write_restricted_mems(struct iwl_priv *priv, u32 addr,
+					     u32 len, u32 *values)
 {
 	iwl_write_restricted(priv, HBUS_TARG_MEM_WADDR, addr);
 	for (; 0 < len; len -= sizeof(u32), values++)
 		iwl_write_restricted(priv, HBUS_TARG_MEM_WDAT, *values);
 }
 
-static inline void iwl_write_restricted_reg_buffer(struct iwl_priv *priv,
-						   u32 reg, u32 len,
-						   u8 *values)
+static inline void iwl_write_restricted_regs(struct iwl_priv *priv, u32 reg,
+					     u32 len, u8 *values)
 {
 	u32 reg_offset = reg;
 	u32 aligment = reg & 0x3;
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 13/28] iwlwifi: define iwl_rx_reply_scan only when CONFIG_IWLWIFI_DEBUG enabled
  2007-08-08  7:33                       ` [PATCH 12/28] iwlwifi: shorten some structure and function names Zhu Yi
@ 2007-08-08  7:33                         ` Zhu Yi
  2007-08-08  7:33                           ` [PATCH 14/28] iwlwifi: remove redundant quotes Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index dad9649..8863953 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -3902,11 +3902,13 @@ static void iwl_rx_beacon_notif(struct iwl_priv *priv,
 static void iwl_rx_reply_scan(struct iwl_priv *priv,
 			      struct iwl_rx_mem_buffer *rxb)
 {
+#ifdef CONFIG_IWLWIFI_DEBUG
 	struct iwl_rx_packet *pkt = (void *)rxb->skb->data;
 	struct iwl_scanstart_notification *notif =
 	    (struct iwl_scanstart_notification *)pkt->u.raw;
 
 	IWL_DEBUG_RX("Scan request status = 0x%x\n", notif->status);
+#endif
 }
 
 static void iwl_rx_scan_start_notif(struct iwl_priv *priv,
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 14/28] iwlwifi: remove redundant quotes
  2007-08-08  7:33                         ` [PATCH 13/28] iwlwifi: define iwl_rx_reply_scan only when CONFIG_IWLWIFI_DEBUG enabled Zhu Yi
@ 2007-08-08  7:33                           ` Zhu Yi
  2007-08-08  7:33                             ` [PATCH 15/28] iwlwifi: Endianity fix for rxon host commands Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Ian Schram, Zhu Yi

From: Ian Schram <ischram@telenet.be>

Remove some redundant quotes that probably originated
from moving code around.

Signed-of-by: Ian Schram <ischram@telenet.be>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 8863953..25931f5 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -1326,7 +1326,7 @@ static int iwl_add_sta_sync_callback(struct iwl_priv *priv,
 	struct iwl_rx_packet *res = NULL;
 
 	if (!skb) {
-		IWL_ERROR("Error: Response NULL in " "REPLY_ADD_STA.\n");
+		IWL_ERROR("Error: Response NULL in REPLY_ADD_STA.\n");
 		return 1;
 	}
 
@@ -2589,8 +2589,8 @@ static int iwl_set_mode(struct iwl_priv *priv, int mode)
 	cancel_delayed_work(&priv->scan_check);
 	priv->status &= ~STATUS_SCAN_PENDING;
 	if (iwl_scan_cancel(priv, 100)) {
-		IWL_WARNING("Aborted scan still in progress " "after 100ms\n");
-		IWL_DEBUG_MAC80211("leaving - scan abort " "failed.\n");
+		IWL_WARNING("Aborted scan still in progress after 100ms\n");
+		IWL_DEBUG_MAC80211("leaving - scan abort failed.\n");
 		return -EAGAIN;
 	}
 
@@ -7624,7 +7624,7 @@ static int iwl_mac_config_interface(struct ieee80211_hw *hw, int if_id,
 		if (iwl_scan_cancel(priv, 100)) {
 			IWL_WARNING("Aborted scan still in progress "
 				    "after 100ms\n");
-			IWL_DEBUG_MAC80211("leaving - scan abort " "failed.\n");
+			IWL_DEBUG_MAC80211("leaving - scan abort failed.\n");
 			mutex_unlock(&priv->mutex);
 			return -EAGAIN;
 		}
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 15/28] iwlwifi: Endianity fix for rxon host commands
  2007-08-08  7:33                           ` [PATCH 14/28] iwlwifi: remove redundant quotes Zhu Yi
@ 2007-08-08  7:33                             ` Zhu Yi
  2007-08-08  7:33                               ` [PATCH 16/28] iwlwifi: Endianity fix for beacon host command Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Tomas Winkler, Gregory Greenman, Zhu Yi

From: Tomas Winkler <tomas.winkler@intel.com>

This patch fixes left over endianity issues in rxon host command.

Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-4965-hw.h |   21 +++++++++++----------
 drivers/net/wireless/iwl-4965.c    |   10 ++++++----
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/drivers/net/wireless/iwl-4965-hw.h b/drivers/net/wireless/iwl-4965-hw.h
index 106f7c0..bb814cf 100644
--- a/drivers/net/wireless/iwl-4965-hw.h
+++ b/drivers/net/wireless/iwl-4965-hw.h
@@ -229,20 +229,21 @@ struct iwl_channel_switch_notif {
 /********************* END TXPOWER *****************************************/
 
 /* HT flags */
-#define RXON_FLG_CONTROL_CHANNEL_LOCATION_MSK	0x400000
-#define RXON_FLG_CONTROL_CHANNEL_LOC_LOW_MSK	0x000000
-#define RXON_FLG_CONTROL_CHANNEL_LOC_HIGH_MSK	0x400000
+#define RXON_FLG_CONTROL_CHANNEL_LOCATION_POS	(22)
+#define RXON_FLG_CONTROL_CHANNEL_LOCATION_MSK	__constant_cpu_to_le32(0x1<<22)
+#define RXON_FLG_CONTROL_CHANNEL_LOC_LOW_MSK	__constant_cpu_to_le32(0x0<<22)
+#define RXON_FLG_CONTROL_CHANNEL_LOC_HIGH_MSK	__constant_cpu_to_le32(0x1<<22)
 
 #define RXON_FLG_HT_OPERATING_MODE_POS		(23)
-/*yshevet - bug fix */
-#define RXON_FLG_HT_PROT_MSK			0x800000
-#define RXON_FLG_FAT_PROT_MSK			0x1000000
+
+#define RXON_FLG_HT_PROT_MSK			__constant_cpu_to_le32(0x1<<23)
+#define RXON_FLG_FAT_PROT_MSK			__constant_cpu_to_le32(0x2<<23)
 
 #define RXON_FLG_CHANNEL_MODE_POS		(25)
-#define RXON_FLG_CHANNEL_MODE_MSK		0x06000000
-#define RXON_FLG_CHANNEL_MODE_LEGACY_MSK	0x00000000
-#define RXON_FLG_CHANNEL_MODE_PURE_40_MSK	0x02000000
-#define RXON_FLG_CHANNEL_MODE_MIXED_MSK		0x04000000
+#define RXON_FLG_CHANNEL_MODE_MSK		__constant_cpu_to_le32(0x3<<25)
+#define RXON_FLG_CHANNEL_MODE_LEGACY_MSK	__constant_cpu_to_le32(0x0<<25)
+#define RXON_FLG_CHANNEL_MODE_PURE_40_MSK	__constant_cpu_to_le32(0x1<<25)
+#define RXON_FLG_CHANNEL_MODE_MIXED_MSK		__constant_cpu_to_le32(0x2<<25)
 
 #define RXON_RX_CHAIN_DRIVER_FORCE_MSK		__constant_cpu_to_le16(0x1<<0)
 #define RXON_RX_CHAIN_VALID_MSK			__constant_cpu_to_le16(0x7<<1)
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index 0cbe798..5999be5 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -79,7 +79,7 @@ const struct iwl_rate_info iwl_rates[IWL_RATE_COUNT] = {
 	IWL_DECLARE_RATE_INFO(60, 60, 48, INV, 48, INV, 48, INV),/* 60mbps */
 };
 
-static int is_fat_channel(u32 rxon_flags)
+static int is_fat_channel(__le32 rxon_flags)
 {
 	return (rxon_flags & RXON_FLG_CHANNEL_MODE_PURE_40_MSK) ||
 		(rxon_flags & RXON_FLG_CHANNEL_MODE_MIXED_MSK);
@@ -2859,12 +2859,14 @@ void iwl4965_set_rxon_chain(struct iwl_priv *priv)
 	 * Just after first association, iwl4965_noise_calibration()
 	 *    checks which antennas actually *are* connected. */
 	priv->staging_rxon.rx_chain |=
-	    (priv->valid_antenna << RXON_RX_CHAIN_VALID_POS);
+	    cpu_to_le16(priv->valid_antenna << RXON_RX_CHAIN_VALID_POS);
 
 	/* How many receivers should we use? */
 	iwl4965_get_rx_chain_counter(priv, &idle_state, &rx_state);
-	priv->staging_rxon.rx_chain |= (rx_state << RXON_RX_CHAIN_MIMO_CNT_POS);
-	priv->staging_rxon.rx_chain |= (idle_state << RXON_RX_CHAIN_CNT_POS);
+	priv->staging_rxon.rx_chain |=
+		cpu_to_le16(rx_state << RXON_RX_CHAIN_MIMO_CNT_POS);
+	priv->staging_rxon.rx_chain |=
+		cpu_to_le16(idle_state << RXON_RX_CHAIN_CNT_POS);
 
 	if (!is_single && !(priv->status & STATUS_POWER_PMI) && (rx_state >= 2))
 		priv->staging_rxon.rx_chain |= RXON_RX_CHAIN_MIMO_FORCE_MSK;
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 16/28] iwlwifi: Endianity fix for beacon host command
  2007-08-08  7:33                             ` [PATCH 15/28] iwlwifi: Endianity fix for rxon host commands Zhu Yi
@ 2007-08-08  7:33                               ` Zhu Yi
  2007-08-08  7:33                                 ` [PATCH 17/28] iwlwifi: Endianity fix for channel number Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Tomas Winkler, Gregory Greenman, Zhu Yi

From: Tomas Winkler <tomas.winkler@intel.com>

This patch fixes endianity issues in beacon host command

Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-3945.c |    9 +++++----
 drivers/net/wireless/iwl-4965.c |    9 +++++----
 drivers/net/wireless/iwl-base.c |    8 +++++---
 drivers/net/wireless/iwlwifi.h  |    8 ++++----
 4 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/drivers/net/wireless/iwl-3945.c b/drivers/net/wireless/iwl-3945.c
index c4441db..d209873 100644
--- a/drivers/net/wireless/iwl-3945.c
+++ b/drivers/net/wireless/iwl-3945.c
@@ -2232,24 +2232,25 @@ int iwl_hw_set_hw_setting(struct iwl_priv *priv)
 	return 0;
 }
 
-int iwl_hw_get_beacon_cmd(struct iwl_priv *priv,
+unsigned int iwl_hw_get_beacon_cmd(struct iwl_priv *priv,
 			  struct iwl_frame *frame, u8 rate)
 {
 	struct iwl_tx_beacon_cmd *tx_beacon_cmd;
-	int frame_size;
+	unsigned int frame_size;
 
 	tx_beacon_cmd = (struct iwl_tx_beacon_cmd *)&frame->u;
 	memset(tx_beacon_cmd, 0, sizeof(*tx_beacon_cmd));
 
 	tx_beacon_cmd->tx.sta_id = IWL_BROADCAST_ID;
-	tx_beacon_cmd->tx.stop_time.life_time = 0xFFFFFFFF;
+	tx_beacon_cmd->tx.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE;
 
 	frame_size = iwl_fill_beacon_frame(priv,
 				tx_beacon_cmd->frame,
 				BROADCAST_ADDR,
 				sizeof(frame->u) - sizeof(*tx_beacon_cmd));
 
-	tx_beacon_cmd->tx.len = frame_size;
+	BUG_ON(frame_size > MAX_MPDU_SIZE);
+	tx_beacon_cmd->tx.len = cpu_to_le16((u16)frame_size);
 
 	tx_beacon_cmd->tx.rate = rate;
 	tx_beacon_cmd->tx.tx_flags = (TX_CMD_FLG_SEQ_CTL_MSK |
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index 5999be5..e907f06 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -2695,24 +2695,25 @@ int iwl_hw_get_temperature(struct iwl_priv *priv)
 	return priv->temperature;
 }
 
-int iwl_hw_get_beacon_cmd(struct iwl_priv *priv,
+unsigned int iwl_hw_get_beacon_cmd(struct iwl_priv *priv,
 			  struct iwl_frame *frame, u8 rate)
 {
 	struct iwl_tx_beacon_cmd *tx_beacon_cmd;
-	int frame_size;
+	unsigned int frame_size;
 
 	tx_beacon_cmd = &frame->u.beacon;
 	memset(tx_beacon_cmd, 0, sizeof(*tx_beacon_cmd));
 
 	tx_beacon_cmd->tx.sta_id = IWL_BROADCAST_ID;
-	tx_beacon_cmd->tx.stop_time.life_time = 0xFFFFFFFF;
+	tx_beacon_cmd->tx.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE;
 
 	frame_size = iwl_fill_beacon_frame(priv,
 				tx_beacon_cmd->frame,
 				BROADCAST_ADDR,
 				sizeof(frame->u) - sizeof(*tx_beacon_cmd));
 
-	tx_beacon_cmd->tx.len = frame_size;
+	BUG_ON(frame_size > MAX_MPDU_SIZE);
+	tx_beacon_cmd->tx.len = cpu_to_le16((u16)frame_size);
 
 	if ((rate == IWL_RATE_1M_PLCP) || (rate >= IWL_RATE_2M_PLCP))
 		tx_beacon_cmd->tx.rate_n_flags =
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 25931f5..8f19494 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -1481,8 +1481,9 @@ static void iwl_free_frame(struct iwl_priv *priv, struct iwl_frame *frame)
 	list_add(&frame->list, &priv->free_frames);
 }
 
-int iwl_fill_beacon_frame(struct iwl_priv *priv, struct ieee80211_hdr *hdr,
-			  const u8 *dest, int left)
+unsigned int iwl_fill_beacon_frame(struct iwl_priv *priv,
+				struct ieee80211_hdr *hdr,
+				const u8 *dest, int left)
 {
 
 	if (!iwl_is_associated(priv) || !priv->ibss_beacon ||
@@ -1501,7 +1502,8 @@ int iwl_fill_beacon_frame(struct iwl_priv *priv, struct ieee80211_hdr *hdr,
 static int iwl_send_beacon_cmd(struct iwl_priv *priv)
 {
 	struct iwl_frame *frame;
-	int frame_size, rc;
+	unsigned int frame_size;
+	int rc;
 	u8 rate;
 
 	frame = iwl_get_free_frame(priv);
diff --git a/drivers/net/wireless/iwlwifi.h b/drivers/net/wireless/iwlwifi.h
index be94217..6fea9a4 100644
--- a/drivers/net/wireless/iwlwifi.h
+++ b/drivers/net/wireless/iwlwifi.h
@@ -630,9 +630,9 @@ extern int iwl_send_cmd_pdu(struct iwl_priv *priv, u8 id, u16 len,
 			    const void *data);
 extern int __must_check iwl_send_cmd(struct iwl_priv *priv,
 				     struct iwl_host_cmd *cmd);
-extern int iwl_fill_beacon_frame(struct iwl_priv *priv,
-				 struct ieee80211_hdr *hdr, const u8 *dest,
-				 int left);
+extern unsigned int iwl_fill_beacon_frame(struct iwl_priv *priv,
+					struct ieee80211_hdr *hdr,
+					const u8 *dest, int left);
 extern int iwl_rx_queue_update_write_ptr(struct iwl_priv *priv,
 					 struct iwl_rx_queue *q);
 extern int iwl_send_statistics_request(struct iwl_priv *priv);
@@ -692,7 +692,7 @@ extern int iwl_tx_queue_free_tfd(struct iwl_priv *priv,
 				 struct iwl_tx_queue *txq);
 extern int iwl_hw_tx_queue_init(struct iwl_priv *priv,
 				struct iwl_tx_queue *txq);
-extern int iwl_hw_get_beacon_cmd(struct iwl_priv *priv,
+extern unsigned int iwl_hw_get_beacon_cmd(struct iwl_priv *priv,
 				 struct iwl_frame *frame, u8 rate);
 extern int iwl_hw_get_rx_read(struct iwl_priv *priv);
 extern void iwl_hw_build_tx_cmd_rate(struct iwl_priv *priv,
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 17/28] iwlwifi: Endianity fix for channel number
  2007-08-08  7:33                               ` [PATCH 16/28] iwlwifi: Endianity fix for beacon host command Zhu Yi
@ 2007-08-08  7:33                                 ` Zhu Yi
  2007-08-08  7:33                                   ` [PATCH 18/28] iwlwifi: shorten more function names Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Tomas Winkler, Zhu Yi

From: Tomas Winkler <tomas.winkler@intel.com>

This patch fixes endinaity issue for channel number. It tries to
introduce some more consistency in channel number type (u16).

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-3945.c    |    4 +---
 drivers/net/wireless/iwl-4965.c    |   22 ++++++++++------------
 drivers/net/wireless/iwl-4965.h    |    4 ++--
 drivers/net/wireless/iwl-base.c    |    4 ++--
 drivers/net/wireless/iwl-channel.h |    2 +-
 drivers/net/wireless/iwlwifi.h     |    2 +-
 6 files changed, 17 insertions(+), 21 deletions(-)

diff --git a/drivers/net/wireless/iwl-3945.c b/drivers/net/wireless/iwl-3945.c
index d209873..a9a1921 100644
--- a/drivers/net/wireless/iwl-3945.c
+++ b/drivers/net/wireless/iwl-3945.c
@@ -1695,7 +1695,6 @@ int iwl_hw_reg_set_txpower(struct iwl_priv *priv, s8 power)
 {
 	struct iwl_channel_info *ch_info;
 	s8 max_power;
-	u8 channel;
 	u8 a_band;
 	u8 i;
 
@@ -1713,7 +1712,6 @@ int iwl_hw_reg_set_txpower(struct iwl_priv *priv, s8 power)
 	for (i = 0; i < priv->channel_count; i++) {
 		ch_info = &priv->channel_info[i];
 		a_band = is_channel_a_band(ch_info);
-		channel = ch_info->channel;
 
 		/* find minimum power of all user and regulatory constraints
 		 *    (does not consider h/w clipping limitations) */
@@ -1736,7 +1734,7 @@ int iwl_hw_reg_set_txpower(struct iwl_priv *priv, s8 power)
 }
 
 /* will add 3945 channel switch cmd handling later */
-int iwl_hw_channel_switch(struct iwl_priv *priv, u8 channel)
+int iwl_hw_channel_switch(struct iwl_priv *priv, u16 channel)
 {
 	return 0;
 }
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index e907f06..a3e6603 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -298,7 +298,7 @@ static int iwl4965_kw_alloc(struct iwl_priv *priv)
 #define CHECK_AND_PRINT(x) ((eeprom_ch->flags & EEPROM_CHANNEL_##x) \
 			    ? # x " " : "")
 
-int iwl4965_set_fat_chan_info(struct iwl_priv *priv, int phymode, int channel,
+int iwl4965_set_fat_chan_info(struct iwl_priv *priv, int phymode, u16 channel,
 			      const struct iwl_eeprom_channel *eeprom_ch,
 			      u8 fat_extension_channel)
 {
@@ -1878,7 +1878,7 @@ static s32 iwl4965_get_voltage_compensation(s32 eeprom_voltage,
 }
 
 static const struct iwl_channel_info *
-iwl4965_get_channel_txpower_info(struct iwl_priv *priv, u8 phymode, u8 channel)
+iwl4965_get_channel_txpower_info(struct iwl_priv *priv, u8 phymode, u16 channel)
 {
 	const struct iwl_channel_info *ch_info;
 
@@ -1890,7 +1890,7 @@ iwl4965_get_channel_txpower_info(struct iwl_priv *priv, u8 phymode, u8 channel)
 	return ch_info;
 }
 
-static s32 iwl4965_get_tx_atten_grp(u32 channel)
+static s32 iwl4965_get_tx_atten_grp(u16 channel)
 {
 	if (channel >= CALIB_IWL_TX_ATTEN_GR5_FCH &&
 	    channel <= CALIB_IWL_TX_ATTEN_GR5_LCH)
@@ -2277,7 +2277,7 @@ static const struct gain_entry gain_table[2][108] = {
 	 }
 };
 
-static int iwl4965_fill_txpower_tbl(struct iwl_priv *priv, u8 band, u8 channel,
+static int iwl4965_fill_txpower_tbl(struct iwl_priv *priv, u8 band, u16 channel,
 				    u8 is_fat, u8 ctrl_chan_high,
 				    struct iwl_tx_power_db *tx_power_tbl)
 {
@@ -2549,7 +2549,6 @@ int iwl_hw_reg_send_txpower(struct iwl_priv *priv)
 	struct iwl_tx_power_table_cmd cmd = { 0 };
 	int rc = 0;
 	u8 band = 0;
-	u8 channel = 0;
 	u8 is_fat = 0;
 	u8 ctrl_chan_high = 0;
 
@@ -2565,8 +2564,6 @@ int iwl_hw_reg_send_txpower(struct iwl_priv *priv)
 		(priv->phymode == MODE_IEEE80211G) ||
 		(priv->phymode == MODE_ATHEROS_TURBOG)) ? 1 : 0;
 
-	channel = priv->active_rxon.channel;
-
 	is_fat =  is_fat_channel(priv->active_rxon.flags);
 
 	if (is_fat &&
@@ -2574,11 +2571,12 @@ int iwl_hw_reg_send_txpower(struct iwl_priv *priv)
 		ctrl_chan_high = 1;
 
 	cmd.band = band;
-	cmd.channel = channel;
+	cmd.channel = priv->active_rxon.channel;
 	cmd.channel_normal_width = 0;
 
-	rc = iwl4965_fill_txpower_tbl(priv, band, channel, is_fat,
-				      ctrl_chan_high, &cmd.tx_power);
+	rc = iwl4965_fill_txpower_tbl(priv, band,
+				le32_to_cpu(priv->active_rxon.channel),
+				is_fat, ctrl_chan_high, &cmd.tx_power);
 	if (rc)
 		return rc;
 
@@ -2586,7 +2584,7 @@ int iwl_hw_reg_send_txpower(struct iwl_priv *priv)
 	return rc;
 }
 
-int iwl_hw_channel_switch(struct iwl_priv *priv, u8 channel)
+int iwl_hw_channel_switch(struct iwl_priv *priv, u16 channel)
 {
 	int rc;
 	u8 band = 0;
@@ -4404,7 +4402,7 @@ void iwl4965_add_station(struct iwl_priv *priv, const u8 *addr, int is_ap)
 #ifdef CONFIG_IWLWIFI_HT
 
 static u8 iwl_is_channel_extension(struct iwl_priv *priv, int phymode,
-				   int channel, u8 extension_chan_offset)
+				   u16 channel, u8 extension_chan_offset)
 {
 	const struct iwl_channel_info *ch_info;
 
diff --git a/drivers/net/wireless/iwl-4965.h b/drivers/net/wireless/iwl-4965.h
index db4a02e..5a3266f 100644
--- a/drivers/net/wireless/iwl-4965.h
+++ b/drivers/net/wireless/iwl-4965.h
@@ -63,7 +63,7 @@ static inline void iwl4965_chain_noise_reset(struct iwl_priv *priv) {}
 static inline void iwl4965_init_sensitivity(struct iwl_priv *priv, u8 flags,
 					    u8 force) {}
 static inline int iwl4965_set_fat_chan_info(struct iwl_priv *priv, int phymode,
-				int channel,
+				u16 channel,
 				const struct iwl_eeprom_channel *eeprom_ch,
 				u8 fat_extension_channel) { return 0; }
 static inline void iwl4965_rf_kill_ct_config(struct iwl_priv *priv) {}
@@ -98,7 +98,7 @@ extern void iwl4965_chain_noise_reset(struct iwl_priv *priv);
 extern void iwl4965_init_sensitivity(struct iwl_priv *priv, u8 flags,
 				     u8 force);
 extern int iwl4965_set_fat_chan_info(struct iwl_priv *priv, int phymode,
-				int channel,
+				u16 channel,
 				const struct iwl_eeprom_channel *eeprom_ch,
 				u8 fat_extension_channel);
 extern void iwl4965_rf_kill_ct_config(struct iwl_priv *priv);
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 8f19494..3b08c7c 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -5314,7 +5314,7 @@ static void iwl_init_band_reference(const struct iwl_priv *priv, int band,
 }
 
 const struct iwl_channel_info *iwl_get_channel_info(const struct iwl_priv *priv,
-						    int phymode, int channel)
+						    int phymode, u16 channel)
 {
 	int i;
 
@@ -8503,7 +8503,7 @@ static ssize_t store_measurement(struct device *d,
 {
 	struct iwl_priv *priv = dev_get_drvdata(d);
 	struct ieee80211_measurement_params params = {
-		.channel = priv->active_rxon.channel,
+		.channel = le16_to_cpu(priv->active_rxon.channel),
 		.start_time = priv->last_tsf,
 		.duration = 1,
 	};
diff --git a/drivers/net/wireless/iwl-channel.h b/drivers/net/wireless/iwl-channel.h
index d320c2b..97da370 100644
--- a/drivers/net/wireless/iwl-channel.h
+++ b/drivers/net/wireless/iwl-channel.h
@@ -158,6 +158,6 @@ static inline int is_channel_ibss(const struct iwl_channel_info *ch)
 }
 
 extern const struct iwl_channel_info *iwl_get_channel_info(
-	const struct iwl_priv *priv, int phymode, int channel);
+	const struct iwl_priv *priv, int phymode, u16 channel);
 
 #endif
diff --git a/drivers/net/wireless/iwlwifi.h b/drivers/net/wireless/iwlwifi.h
index 6fea9a4..029b590 100644
--- a/drivers/net/wireless/iwlwifi.h
+++ b/drivers/net/wireless/iwlwifi.h
@@ -717,6 +717,6 @@ extern int iwl4965_get_temperature(const struct iwl_priv *priv);
  */
 extern u8 iwl_hw_find_station(struct iwl_priv *priv, const u8 *bssid);
 
-extern int iwl_hw_channel_switch(struct iwl_priv *priv, u8 channel);
+extern int iwl_hw_channel_switch(struct iwl_priv *priv, u16 channel);
 extern int iwl_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index);
 #endif
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 18/28] iwlwifi: shorten more function names
  2007-08-08  7:33                                 ` [PATCH 17/28] iwlwifi: Endianity fix for channel number Zhu Yi
@ 2007-08-08  7:33                                   ` Zhu Yi
  2007-08-08  7:33                                     ` [PATCH 19/28] iwlwifi: make iwl_get_bits inline function from macro Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-3945.c |    8 ++++----
 drivers/net/wireless/iwl-4965.c |    8 ++++----
 drivers/net/wireless/iwl-base.c |   10 +++++-----
 drivers/net/wireless/iwlwifi.h  |    9 +++------
 4 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/drivers/net/wireless/iwl-3945.c b/drivers/net/wireless/iwl-3945.c
index a9a1921..ce9688c 100644
--- a/drivers/net/wireless/iwl-3945.c
+++ b/drivers/net/wireless/iwl-3945.c
@@ -490,8 +490,8 @@ static void iwl3945_rx_reply_rx(struct iwl_priv *priv,
 	}
 }
 
-int iwl_hw_tx_queue_attach_buffer_to_tfd(struct iwl_priv *priv,
-					 void *ptr, dma_addr_t addr, u16 len)
+int iwl_hw_txq_attach_buf_to_tfd(struct iwl_priv *priv, void *ptr,
+				 dma_addr_t addr, u16 len)
 {
 	int count;
 	u32 pad;
@@ -518,11 +518,11 @@ int iwl_hw_tx_queue_attach_buffer_to_tfd(struct iwl_priv *priv,
 }
 
 /**
- * iwl_hw_tx_queue_free_tfd - Free one TFD, those at index [txq->q.last_used]
+ * iwl_hw_txq_free_tfd - Free one TFD, those at index [txq->q.last_used]
  *
  * Does NOT advance any indexes
  */
-int iwl_hw_tx_queue_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq)
+int iwl_hw_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq)
 {
 	struct iwl_tfd_frame *bd_tmp = (struct iwl_tfd_frame *)&txq->bd[0];
 	struct iwl_tfd_frame *bd = &bd_tmp[txq->q.last_used];
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index a3e6603..de5b541 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -1762,11 +1762,11 @@ void iwl_hw_txq_ctx_free(struct iwl_priv *priv)
 }
 
 /**
- * iwl_hw_tx_queue_free_tfd -  Free one TFD, those at index [txq->q.last_used]
+ * iwl_hw_txq_free_tfd -  Free one TFD, those at index [txq->q.last_used]
  *
  * Does NOT advance any indexes
  */
-int iwl_hw_tx_queue_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq)
+int iwl_hw_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq)
 {
 	struct iwl_tfd_frame *bd_tmp = (struct iwl_tfd_frame *)&txq->bd[0];
 	struct iwl_tfd_frame *bd = &bd_tmp[txq->q.last_used];
@@ -2754,8 +2754,8 @@ static inline u8 iwl4965_get_dma_hi_address(dma_addr_t addr)
 	return sizeof(addr) > sizeof(u32) ? (addr >> 16) >> 16 : 0;
 }
 
-int iwl_hw_tx_queue_attach_buffer_to_tfd(struct iwl_priv *priv,
-					 void *ptr, dma_addr_t addr, u16 len)
+int iwl_hw_txq_attach_buf_to_tfd(struct iwl_priv *priv, void *ptr,
+				 dma_addr_t addr, u16 len)
 {
 	int index, is_odd;
 	struct iwl_tfd_frame *tfd = ptr;
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 3b08c7c..94d5ac8 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -308,7 +308,7 @@ void iwl_tx_queue_free(struct iwl_priv *priv, struct iwl_tx_queue *txq)
 	/* first, empty all BD's */
 	for (; q->first_empty != q->last_used;
 	     q->last_used = iwl_queue_inc_wrap(q->last_used, q->n_bd))
-		iwl_hw_tx_queue_free_tfd(priv, txq);
+		iwl_hw_txq_free_tfd(priv, txq);
 
 	len = sizeof(struct iwl_cmd) * q->n_window;
 	if (q->id == IWL_CMD_QUEUE_NUM);
@@ -622,7 +622,7 @@ static int iwl_enqueue_hcmd(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
 
 	phys_addr = txq->dma_addr_cmd + sizeof(txq->cmd[0]) * idx +
 	    offsetof(struct iwl_cmd, hdr);
-	iwl_hw_tx_queue_attach_buffer_to_tfd(priv, tfd, phys_addr, fix_size);
+	iwl_hw_txq_attach_buf_to_tfd(priv, tfd, phys_addr, fix_size);
 
 #if IWL == 3945
 	pad = U32_PAD(out_cmd->meta.len);
@@ -2913,7 +2913,7 @@ static int iwl_tx_skb(struct iwl_priv *priv,
 	txcmd_phys = txq->dma_addr_cmd + sizeof(struct iwl_cmd) * idx +
 		     offsetof(struct iwl_cmd, hdr);
 
-	iwl_hw_tx_queue_attach_buffer_to_tfd(priv, tfd, txcmd_phys, len);
+	iwl_hw_txq_attach_buf_to_tfd(priv, tfd, txcmd_phys, len);
 
 	if (ctl->key_idx != -1)
 		iwl_build_tx_cmd_hwcrypto(priv, ctl, out_cmd, skb, 0);
@@ -2923,7 +2923,7 @@ static int iwl_tx_skb(struct iwl_priv *priv,
 	if (len) {
 		phys_addr = pci_map_single(priv->pci_dev, skb->data + hdr_len,
 					   len, PCI_DMA_TODEVICE);
-		iwl_hw_tx_queue_attach_buffer_to_tfd(priv, tfd, phys_addr, len);
+		iwl_hw_txq_attach_buf_to_tfd(priv, tfd, phys_addr, len);
 	}
 
 #if IWL == 3945
@@ -3477,7 +3477,7 @@ int iwl_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index)
 		if (txq_id != IWL_CMD_QUEUE_NUM) {
 			iwl_txstatus_to_ieee(priv,
 					     &(txq->txb[txq->q.last_used]));
-			iwl_hw_tx_queue_free_tfd(priv, txq);
+			iwl_hw_txq_free_tfd(priv, txq);
 		} else
 			is_next = 1;
 	}
diff --git a/drivers/net/wireless/iwlwifi.h b/drivers/net/wireless/iwlwifi.h
index 029b590..5b826bf 100644
--- a/drivers/net/wireless/iwlwifi.h
+++ b/drivers/net/wireless/iwlwifi.h
@@ -683,13 +683,10 @@ extern int iwl_hw_nic_stop_master(struct iwl_priv *priv);
 extern void iwl_hw_txq_ctx_free(struct iwl_priv *priv);
 extern void iwl_hw_txq_ctx_stop(struct iwl_priv *priv);
 extern int iwl_hw_nic_reset(struct iwl_priv *priv);
-extern int iwl_hw_tx_queue_attach_buffer_to_tfd(
-	struct iwl_priv *priv, void *tfd, dma_addr_t addr, u16 len);
-extern int iwl_hw_tx_queue_free_tfd(struct iwl_priv *priv,
-				    struct iwl_tx_queue *txq);
+extern int iwl_hw_txq_attach_buf_to_tfd(struct iwl_priv *priv, void *tfd,
+					dma_addr_t addr, u16 len);
+extern int iwl_hw_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq);
 extern int iwl_hw_get_temperature(struct iwl_priv *priv);
-extern int iwl_tx_queue_free_tfd(struct iwl_priv *priv,
-				 struct iwl_tx_queue *txq);
 extern int iwl_hw_tx_queue_init(struct iwl_priv *priv,
 				struct iwl_tx_queue *txq);
 extern unsigned int iwl_hw_get_beacon_cmd(struct iwl_priv *priv,
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 19/28] iwlwifi: make iwl_get_bits inline function from macro
  2007-08-08  7:33                                   ` [PATCH 18/28] iwlwifi: shorten more function names Zhu Yi
@ 2007-08-08  7:33                                     ` Zhu Yi
  2007-08-08  7:33                                       ` [PATCH 20/28] iwlwifi: remove BIT_FMT and BIT_ARG Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Make iwl_get_bits and iwl_set_bits inline functions from the original
macro implementation. Add IWL_SET_BITS16 for 16-bits value setting.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-4965.c    |    6 ++--
 drivers/net/wireless/iwl-helpers.h |   53 +++++++++++++++++++++---------------
 2 files changed, 34 insertions(+), 25 deletions(-)

diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index de5b541..258879c 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -2815,11 +2815,11 @@ int iwl4965_tx_queue_update_wr_ptr(struct iwl_priv *priv,
 
 	len = byte_cnt + IWL_TX_CRC_SIZE + IWL_TX_DELIMITER_SIZE;
 
-	IWL_SET_BITS(shared_data->queues_byte_cnt_tbls[txq_id].
-		     tfd_offset[txq->q.first_empty], byte_cnt, len);
+	IWL_SET_BITS16(shared_data->queues_byte_cnt_tbls[txq_id].
+		       tfd_offset[txq->q.first_empty], byte_cnt, len);
 
 	if (txq->q.first_empty < IWL4965_MAX_WIN_SIZE)
-		IWL_SET_BITS(shared_data->queues_byte_cnt_tbls[txq_id].
+		IWL_SET_BITS16(shared_data->queues_byte_cnt_tbls[txq_id].
 			tfd_offset[IWL4965_QUEUE_SIZE + txq->q.first_empty],
 			byte_cnt, len);
 
diff --git a/drivers/net/wireless/iwl-helpers.h b/drivers/net/wireless/iwl-helpers.h
index c0ea48e..6281e3d 100644
--- a/drivers/net/wireless/iwl-helpers.h
+++ b/drivers/net/wireless/iwl-helpers.h
@@ -59,13 +59,14 @@
  * NOTE:  If used from IWL_GET_BITS then pos and len are compile-constants and
  *        will collapse to minimal code by the compiler.
  */
-#define iwl_get_bits(src, pos, len)   \
-({                                    \
-	u32 __tmp = le32_to_cpu(src); \
-	__tmp >>= pos;                \
-	__tmp &= (1UL << len) - 1;    \
-	__tmp;                        \
-})
+static inline u32 iwl_get_bits(__le32 src, u8 pos, u8 len)
+{
+	u32 tmp = le32_to_cpu(src);
+
+	tmp >>= pos;
+	tmp &= (1UL << len) - 1;
+	return tmp;
+}
 
 /**
  * iwl_set_bits - Set a hardware bit-field value
@@ -80,13 +81,23 @@
  * NOTE:  If used IWL_SET_BITS pos and len will be compile-constants and
  *        will collapse to minimal code by the compiler.
  */
-#define iwl_set_bits(dst, pos, len, val)                 \
-({                                                       \
-	u32 __tmp = le32_to_cpu(*dst);                   \
-	__tmp &= ~((1ULL << (pos+len)) - (1 << pos));    \
-	__tmp |= (val & ((1UL << len) - 1)) << pos;      \
-	*dst = cpu_to_le32(__tmp);                       \
-})
+static inline void iwl_set_bits(__le32 *dst, u8 pos, u8 len, int val)
+{
+	u32 tmp = le32_to_cpu(*dst);
+
+	tmp &= ~((1UL << (pos + len)) - (1UL << pos));
+	tmp |= (val & ((1UL << len) - 1)) << pos;
+	*dst = cpu_to_le32(tmp);
+}
+
+static inline void iwl_set_bits16(__le16 *dst, u8 pos, u8 len, int val)
+{
+	u32 tmp = le16_to_cpu(*dst);
+
+	tmp &= ~((1UL << (pos + len)) - (1UL << pos));
+	tmp |= (val & ((1UL << len) - 1)) << pos;
+	*dst = cpu_to_le16(tmp);
+}
 
 /*
  * The bit-field definitions in iwl-xxxx-hw.h are in the form of:
@@ -110,18 +121,16 @@
  * and iwl_{get,set}_bits.
  *
  */
-#define _IWL_SET_BITS(s, d, o, l, v) \
-	iwl_set_bits(&s.d, o, l, v)
-
 #define IWL_SET_BITS(s, sym, v) \
-	_IWL_SET_BITS((s), IWL_ ## sym ## _SYM, IWL_ ## sym ## _POS, \
-		      IWL_ ## sym ## _LEN, (v))
+	iwl_set_bits(&(s).IWL_ ## sym ## _SYM, IWL_ ## sym ## _POS, \
+		     IWL_ ## sym ## _LEN, (v))
 
-#define _IWL_GET_BITS(s, v, o, l) \
-	iwl_get_bits(s.v, o, l)
+#define IWL_SET_BITS16(s, sym, v) \
+	iwl_set_bits16(&(s).IWL_ ## sym ## _SYM, IWL_ ## sym ## _POS, \
+		       IWL_ ## sym ## _LEN, (v))
 
 #define IWL_GET_BITS(s, sym) \
-	_IWL_GET_BITS((s), IWL_ ## sym ## _SYM, IWL_ ## sym ## _POS, \
+	iwl_get_bits((s).IWL_ ## sym ## _SYM, IWL_ ## sym ## _POS, \
 		      IWL_ ## sym ## _LEN)
 
 /* Debug and printf string expansion helpers for printing bitfields */
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 20/28] iwlwifi: remove BIT_FMT and BIT_ARG
  2007-08-08  7:33                                     ` [PATCH 19/28] iwlwifi: make iwl_get_bits inline function from macro Zhu Yi
@ 2007-08-08  7:33                                       ` Zhu Yi
  2007-08-08  7:33                                         ` [PATCH 21/28] iwlwifi: remove WLAN_FC_GET_TYPE macros Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-3945.c    |    8 +++-----
 drivers/net/wireless/iwl-4965.c    |   15 ++++++---------
 drivers/net/wireless/iwl-base.c    |   24 +++++++++---------------
 drivers/net/wireless/iwl-helpers.h |   25 ++-----------------------
 4 files changed, 20 insertions(+), 52 deletions(-)

diff --git a/drivers/net/wireless/iwl-3945.c b/drivers/net/wireless/iwl-3945.c
index ce9688c..6cec308 100644
--- a/drivers/net/wireless/iwl-3945.c
+++ b/drivers/net/wireless/iwl-3945.c
@@ -659,11 +659,9 @@ void iwl_hw_build_tx_cmd_rate(struct iwl_priv *priv,
 	/* CCK */
 	cmd->cmd.tx.supp_rates[1] = (rate_mask >> 8) & 0xF;
 
-	IWL_DEBUG_RATE("Tx sta id: %d, rate: %d (plcp), flags: " BIT_FMT16 " "
-		       "cck/ofdm mask: 0x%x/0x%x\n",
-		       sta_id,
-		       cmd->cmd.tx.rate,
-		       BIT_ARG16(le32_to_cpu(cmd->cmd.tx.tx_flags)),
+	IWL_DEBUG_RATE("Tx sta id: %d, rate: %d (plcp), flags: 0x%4X "
+		       "cck/ofdm mask: 0x%x/0x%x\n", sta_id,
+		       cmd->cmd.tx.rate, le32_to_cpu(cmd->cmd.tx.tx_flags),
 		       cmd->cmd.tx.supp_rates[1], cmd->cmd.tx.supp_rates[0]);
 }
 
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index 258879c..76c0c98 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -310,7 +310,7 @@ int iwl4965_set_fat_chan_info(struct iwl_priv *priv, int phymode, u16 channel,
 	if (!is_channel_valid(ch_info))
 		return -1;
 
-	IWL_DEBUG_INFO("FAT Ch. %d [%sGHz] %s%s%s%s%s%s(" BIT_FMT8
+	IWL_DEBUG_INFO("FAT Ch. %d [%sGHz] %s%s%s%s%s%s(0x%02x"
 			" %ddBm): Ad-Hoc %ssupported\n",
 			ch_info->channel,
 			is_channel_a_band(ch_info) ?
@@ -321,14 +321,11 @@ int iwl4965_set_fat_chan_info(struct iwl_priv *priv, int phymode, u16 channel,
 			CHECK_AND_PRINT(WIDE),
 			CHECK_AND_PRINT(NARROW),
 			CHECK_AND_PRINT(DFS),
-			BIT_ARG8(eeprom_ch->flags),
-			eeprom_ch->
-			max_power_avg,
-			((eeprom_ch->
-			flags & EEPROM_CHANNEL_IBSS)
-			&& !(eeprom_ch->
-			flags & EEPROM_CHANNEL_RADAR))
-			? "" : "not ");
+			eeprom_ch->flags,
+			eeprom_ch->max_power_avg,
+			((eeprom_ch->flags & EEPROM_CHANNEL_IBSS)
+			 && !(eeprom_ch->flags & EEPROM_CHANNEL_RADAR)) ?
+			"" : "not ");
 
 	ch_info->fat_eeprom = *eeprom_ch;
 	ch_info->fat_max_power_avg = eeprom_ch->max_power_avg;
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 94d5ac8..7514928 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -4702,18 +4702,13 @@ static void iwl_print_rx_config_cmd(struct iwl_rxon_cmd *rxon)
 	IWL_DEBUG_RADIO("RX CONFIG:\n");
 	printk_buf(IWL_DL_RADIO, (u8 *) rxon, sizeof(*rxon));
 	IWL_DEBUG_RADIO("u16 channel: 0x%x\n", le16_to_cpu(rxon->channel));
-	IWL_DEBUG_RADIO("u32 flags: 0x%08X " BIT_FMT32 "\n",
-			le32_to_cpu(rxon->flags),
-			BIT_ARG32(le32_to_cpu(rxon->flags)));
-	IWL_DEBUG_RADIO("u32 filter_flags: 0x%08x " BIT_FMT32 "\n",
-			le32_to_cpu(rxon->filter_flags),
-			BIT_ARG32(le32_to_cpu(rxon->filter_flags)));
+	IWL_DEBUG_RADIO("u32 flags: 0x%08X\n", le32_to_cpu(rxon->flags));
+	IWL_DEBUG_RADIO("u32 filter_flags: 0x%08x\n",
+			le32_to_cpu(rxon->filter_flags));
 	IWL_DEBUG_RADIO("u8 dev_type: 0x%x\n", rxon->dev_type);
-	IWL_DEBUG_RADIO("u8 ofdm_basic_rates: 0x%02x " BIT_FMT8 "\n",
-			rxon->ofdm_basic_rates,
-			BIT_ARG8(rxon->ofdm_basic_rates));
-	IWL_DEBUG_RADIO("u8 cck_basic_rates: 0x%02x " BIT_FMT8 "\n",
-			rxon->cck_basic_rates, BIT_ARG8(rxon->cck_basic_rates));
+	IWL_DEBUG_RADIO("u8 ofdm_basic_rates: 0x%02x\n",
+			rxon->ofdm_basic_rates);
+	IWL_DEBUG_RADIO("u8 cck_basic_rates: 0x%02x\n", rxon->cck_basic_rates);
 	IWL_DEBUG_RADIO("u8[6] node_addr: " MAC_FMT "\n",
 			MAC_ARG(rxon->node_addr));
 	IWL_DEBUG_RADIO("u8[6] bssid_addr: " MAC_FMT "\n",
@@ -5421,7 +5416,7 @@ static int iwl_init_channel_map(struct iwl_priv *priv)
 			ch_info->scan_power = eeprom_ch_info[ch].max_power_avg;
 			ch_info->min_power = 0;
 
-			IWL_DEBUG_INFO("Ch. %d [%sGHz] %s%s%s%s%s%s(" BIT_FMT8
+			IWL_DEBUG_INFO("Ch. %d [%sGHz] %s%s%s%s%s%s(0x%02x"
 				       " %ddBm): Ad-Hoc %ssupported\n",
 				       ch_info->channel,
 				       is_channel_a_band(ch_info) ?
@@ -5432,9 +5427,8 @@ static int iwl_init_channel_map(struct iwl_priv *priv)
 				       CHECK_AND_PRINT(WIDE),
 				       CHECK_AND_PRINT(NARROW),
 				       CHECK_AND_PRINT(DFS),
-				       BIT_ARG8(eeprom_ch_info[ch].flags),
-				       eeprom_ch_info[ch].
-				       max_power_avg,
+				       eeprom_ch_info[ch].flags,
+				       eeprom_ch_info[ch].max_power_avg,
 				       ((eeprom_ch_info[ch].
 					 flags & EEPROM_CHANNEL_IBSS)
 					&& !(eeprom_ch_info[ch].
diff --git a/drivers/net/wireless/iwl-helpers.h b/drivers/net/wireless/iwl-helpers.h
index 6281e3d..46084f2 100644
--- a/drivers/net/wireless/iwl-helpers.h
+++ b/drivers/net/wireless/iwl-helpers.h
@@ -85,14 +85,14 @@ static inline void iwl_set_bits(__le32 *dst, u8 pos, u8 len, int val)
 {
 	u32 tmp = le32_to_cpu(*dst);
 
-	tmp &= ~((1UL << (pos + len)) - (1UL << pos));
+	tmp &= ~(((1UL << len) - 1) << pos);
 	tmp |= (val & ((1UL << len) - 1)) << pos;
 	*dst = cpu_to_le32(tmp);
 }
 
 static inline void iwl_set_bits16(__le16 *dst, u8 pos, u8 len, int val)
 {
-	u32 tmp = le16_to_cpu(*dst);
+	u16 tmp = le16_to_cpu(*dst);
 
 	tmp &= ~((1UL << (pos + len)) - (1UL << pos));
 	tmp |= (val & ((1UL << len) - 1)) << pos;
@@ -133,27 +133,6 @@ static inline void iwl_set_bits16(__le16 *dst, u8 pos, u8 len, int val)
 	iwl_get_bits((s).IWL_ ## sym ## _SYM, IWL_ ## sym ## _POS, \
 		      IWL_ ## sym ## _LEN)
 
-/* Debug and printf string expansion helpers for printing bitfields */
-#define BIT_FMT8 "%c%c%c%c-%c%c%c%c"
-#define BIT_FMT16 BIT_FMT8 ":" BIT_FMT8
-#define BIT_FMT32 BIT_FMT16 " " BIT_FMT16
-
-#define BITC(x, y) (((x>>y) & 1) ? '1' : '0')
-#define BIT_ARG8(x) \
-BITC(x, 7), BITC(x, 6), BITC(x, 5), BITC(x, 4), \
-BITC(x, 3), BITC(x, 2), BITC(x, 1), BITC(x, 0)
-
-#define BIT_ARG16(x) \
-BITC(x, 15), BITC(x, 14), BITC(x, 13), BITC(x, 12), \
-BITC(x, 11), BITC(x, 10), BITC(x, 9), BITC(x, 8), \
-BIT_ARG8(x)
-
-#define BIT_ARG32(x) \
-BITC(x, 31), BITC(x, 30), BITC(x, 29), BITC(x, 28), \
-BITC(x, 27), BITC(x, 26), BITC(x, 25), BITC(x, 24), \
-BITC(x, 23), BITC(x, 22), BITC(x, 21), BITC(x, 20), \
-BITC(x, 19), BITC(x, 18), BITC(x, 17), BITC(x, 16), \
-BIT_ARG16(x)
 
 #define KELVIN_TO_CELSIUS(x) ((x)-273)
 #define CELSIUS_TO_KELVIN(x) ((x)+273)
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 21/28] iwlwifi: remove WLAN_FC_GET_TYPE macros
  2007-08-08  7:33                                       ` [PATCH 20/28] iwlwifi: remove BIT_FMT and BIT_ARG Zhu Yi
@ 2007-08-08  7:33                                         ` Zhu Yi
  2007-08-08  7:33                                           ` [PATCH 22/28] iwlwifi: replace private snprint_line with common hex_dump_xxx Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Use IEEE80211_FCTL_FTYPE directly. Also make some inline function unlined.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-3945.c    |    9 ++-
 drivers/net/wireless/iwl-4965.c    |   14 +++--
 drivers/net/wireless/iwl-base.c    |   78 ++++++++++++++++++++---
 drivers/net/wireless/iwl-helpers.h |  122 ++++++++----------------------------
 drivers/net/wireless/iwlwifi.h     |    1 +
 5 files changed, 111 insertions(+), 113 deletions(-)

diff --git a/drivers/net/wireless/iwl-3945.c b/drivers/net/wireless/iwl-3945.c
index 6cec308..53fba5d 100644
--- a/drivers/net/wireless/iwl-3945.c
+++ b/drivers/net/wireless/iwl-3945.c
@@ -395,9 +395,10 @@ static void iwl3945_rx_reply_rx(struct iwl_priv *priv,
 		priv->last_rx_noise = stats.noise;
 	}
 
-	switch (WLAN_FC_GET_TYPE(le16_to_cpu(header->frame_control))) {
+	switch (le16_to_cpu(header->frame_control) & IEEE80211_FCTL_FTYPE) {
 	case IEEE80211_FTYPE_MGMT:
-		switch (WLAN_FC_GET_STYPE(le16_to_cpu(header->frame_control))) {
+		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
@@ -632,8 +633,8 @@ void iwl_hw_build_tx_cmd_rate(struct iwl_priv *priv,
 	if (priv->data_retry_limit != -1)
 		data_retry_limit = priv->data_retry_limit;
 
-	if (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) {
-		switch (WLAN_FC_GET_STYPE(fc)) {
+	if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) {
+		switch (fc & IEEE80211_FCTL_STYPE) {
 		case IEEE80211_STYPE_AUTH:
 		case IEEE80211_STYPE_DEAUTH:
 		case IEEE80211_STYPE_ASSOC_REQ:
diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index 76c0c98..631bd19 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -2655,8 +2655,10 @@ void iwl_hw_build_tx_cmd_rate(struct iwl_priv *priv,
 	if (priv->data_retry_limit != -1)
 		data_retry_limit = priv->data_retry_limit;
 
-	if (WLAN_FC_GET_TYPE(hdr->frame_control) == IEEE80211_FTYPE_MGMT) {
-		switch (WLAN_FC_GET_STYPE(hdr->frame_control)) {
+	if ((le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_FTYPE)
+			== IEEE80211_FTYPE_MGMT) {
+		switch (le16_to_cpu(hdr->frame_control) &
+			IEEE80211_FCTL_STYPE) {
 		case IEEE80211_STYPE_AUTH:
 		case IEEE80211_STYPE_DEAUTH:
 		case IEEE80211_STYPE_ASSOC_REQ:
@@ -3233,7 +3235,7 @@ int iwl4965_tx_cmd(struct iwl_priv *priv, struct iwl_cmd *out_cmd,
 	unicast = !is_multicast_ether_addr(hdr->addr1);
 
 	fc = le16_to_cpu(hdr->frame_control);
-	if (WLAN_FC_GET_TYPE(fc) != IEEE80211_FTYPE_DATA)
+	if ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)
 		is_data = 0;
 
 	memcpy(&cmd, &(out_cmd->cmd.tx), sizeof(struct iwl_tx_cmd));
@@ -3896,13 +3898,13 @@ static void iwl4965_rx_reply_rx(struct iwl_priv *priv,
 	}
 
 	fc = le16_to_cpu(header->frame_control);
-	switch (WLAN_FC_GET_TYPE(fc)) {
+	switch (fc & IEEE80211_FCTL_FTYPE) {
 	case IEEE80211_FTYPE_MGMT:
 
 		if (priv->iw_mode == IEEE80211_IF_TYPE_AP)
 			iwl4965_update_ps_mode(priv, fc  & IEEE80211_FCTL_PM,
 						header->addr2);
-		switch (WLAN_FC_GET_STYPE(fc)) {
+		switch (fc & IEEE80211_FCTL_STYPE) {
 		case IEEE80211_STYPE_PROBE_RESP:
 		case IEEE80211_STYPE_BEACON:
 			if ((priv->iw_mode == IEEE80211_IF_TYPE_STA &&
@@ -3990,7 +3992,7 @@ static void iwl4965_rx_reply_rx(struct iwl_priv *priv,
 
 	case IEEE80211_FTYPE_CTL:
 #ifdef CONFIG_IWLWIFI_HT_AGG
-		switch (WLAN_FC_GET_STYPE(fc)) {
+		switch (fc & IEEE80211_FCTL_STYPE) {
 		case IEEE80211_STYPE_BACK_REQ:
 			IWL_DEBUG_HT("IEEE80211_STYPE_BACK_REQ arrived\n");
 			iwl4965_handle_data_packet(priv, 0, include_phy,
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 7514928..efd4762 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -122,6 +122,68 @@ MODULE_VERSION(DRV_VERSION);
 MODULE_AUTHOR(DRV_COPYRIGHT);
 MODULE_LICENSE("GPL");
 
+__le16 *ieee80211_get_qos_ctrl(struct ieee80211_hdr *hdr)
+{
+	u16 fc = le16_to_cpu(hdr->frame_control);
+	int hdr_len = ieee80211_get_hdrlen(fc);
+
+	if ((fc & 0x00cc) == (IEEE80211_STYPE_QOS_DATA | IEEE80211_FTYPE_DATA))
+		return (__le16 *) ((u8 *) hdr + hdr_len - QOS_CONTROL_LEN);
+	return NULL;
+}
+
+static const struct ieee80211_hw_mode *iwl_get_hw_mode(
+		struct iwl_priv *priv, int mode)
+{
+	int i;
+
+	for (i = 0; i < 3; i++)
+		if (priv->modes[i].mode == mode)
+			return &priv->modes[i];
+
+	return NULL;
+}
+
+static int iwl_is_empty_essid(const char *essid, int essid_len)
+{
+	/* Single white space is for Linksys APs */
+	if (essid_len == 1 && essid[0] == ' ')
+		return 1;
+
+	/* Otherwise, if the entire essid is 0, we assume it is hidden */
+	while (essid_len) {
+		essid_len--;
+		if (essid[essid_len] != '\0')
+			return 0;
+	}
+
+	return 1;
+}
+
+static const char *iwl_escape_essid(const char *essid, u8 essid_len)
+{
+	static char escaped[IW_ESSID_MAX_SIZE * 2 + 1];
+	const char *s = essid;
+	char *d = escaped;
+
+	if (iwl_is_empty_essid(essid, essid_len)) {
+		memcpy(escaped, "<hidden>", sizeof("<hidden>"));
+		return escaped;
+	}
+
+	essid_len = min(essid_len, (u8) IW_ESSID_MAX_SIZE);
+	while (essid_len--) {
+		if (*s == '\0') {
+			*d++ = '\\';
+			*d++ = '0';
+			s++;
+		} else
+			*d++ = *s++;
+	}
+	*d = '\0';
+	return escaped;
+}
+
 /*************** DMA-QUEUE-GENERAL-FUNCTIONS  *****
  * DMA services
  *
@@ -2693,7 +2755,7 @@ static void iwl_build_tx_cmd_basic(struct iwl_priv *priv,
 	cmd->cmd.tx.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE;
 	if (!(ctrl->flags & IEEE80211_TXCTL_NO_ACK)) {
 		tx_flags |= TX_CMD_FLG_ACK_MSK;
-		if (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT)
+		if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT)
 			tx_flags |= TX_CMD_FLG_SEQ_CTL_MSK;
 		if (ieee80211_is_probe_response(fc) &&
 		    !(le16_to_cpu(hdr->seq_ctrl) & 0xf))
@@ -2726,9 +2788,9 @@ static void iwl_build_tx_cmd_basic(struct iwl_priv *priv,
 		tx_flags |= TX_CMD_FLG_FULL_TXOP_PROT_MSK;
 
 	tx_flags &= ~(TX_CMD_FLG_ANT_SEL_MSK);
-	if (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) {
-		if (((WLAN_FC_GET_STYPE(fc)) == IEEE80211_STYPE_ASSOC_REQ) ||
-		    ((WLAN_FC_GET_STYPE(fc)) == IEEE80211_STYPE_REASSOC_REQ))
+	if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) {
+		if ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_ASSOC_REQ ||
+		    (fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_REASSOC_REQ)
 			cmd->cmd.tx.timeout.pm_frame_timeout =
 				cpu_to_le16(3);
 		else
@@ -2749,7 +2811,7 @@ static int iwl_get_sta_id(struct iwl_priv *priv, struct ieee80211_hdr *hdr)
 
 	/* If this frame is broadcast or not data then use the broadcast
 	 * station id */
-	if ((WLAN_FC_GET_TYPE(fc) != IEEE80211_FTYPE_DATA) ||
+	if (((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA) ||
 	    is_multicast_ether_addr(hdr->addr1))
 		return IWL_BROADCAST_ID;
 
@@ -2838,7 +2900,7 @@ static int iwl_tx_skb(struct iwl_priv *priv,
 #endif
 
 	if (!iwl_is_associated(priv) &&
-	    (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_DATA)) {
+	    ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA)) {
 		IWL_DEBUG_DROP("Dropping - !iwl_is_associated\n");
 		goto drop;
 	}
@@ -3232,8 +3294,8 @@ void iwl_handle_data_packet_monitor(struct iwl_priv *priv,
 int is_duplicate_packet(struct iwl_priv *priv, struct ieee80211_hdr *header)
 {
 	u16 sc = le16_to_cpu(header->seq_ctrl);
-	u16 seq = WLAN_GET_SEQ_SEQ(sc);
-	u16 frag = WLAN_GET_SEQ_FRAG(sc);
+	u16 seq = (sc & IEEE80211_SCTL_SEQ) >> 4;
+	u16 frag = sc & IEEE80211_SCTL_FRAG;
 	u16 *last_seq, *last_frag;
 	unsigned long *last_time;
 
diff --git a/drivers/net/wireless/iwl-helpers.h b/drivers/net/wireless/iwl-helpers.h
index 46084f2..6ac119f 100644
--- a/drivers/net/wireless/iwl-helpers.h
+++ b/drivers/net/wireless/iwl-helpers.h
@@ -145,139 +145,97 @@ static inline struct ieee80211_conf *ieee80211_get_hw_conf(
 	return &hw->conf;
 }
 
-static inline const struct ieee80211_hw_mode *iwl_get_hw_mode(
-	struct iwl_priv *priv, int mode)
-{
-	int i;
-
-	for (i = 0; i < 3; i++)
-		if (priv->modes[i].mode == mode)
-			return &priv->modes[i];
-
-	return NULL;
-}
-
-#define WLAN_FC_GET_TYPE(fc)    (((fc) & IEEE80211_FCTL_FTYPE))
-#define WLAN_FC_GET_STYPE(fc)   (((fc) & IEEE80211_FCTL_STYPE))
-#define WLAN_GET_SEQ_FRAG(seq)  ((seq) & 0x000f)
-#define WLAN_GET_SEQ_SEQ(seq)   ((seq) >> 4)
-
 #define QOS_CONTROL_LEN 2
 
-static inline __le16 *ieee80211_get_qos_ctrl(struct ieee80211_hdr *hdr)
-{
-	u16 fc = le16_to_cpu(hdr->frame_control);
-	int hdr_len = ieee80211_get_hdrlen(fc);
-	if ( (fc & 0x00cc) == (IEEE80211_STYPE_QOS_DATA|IEEE80211_FTYPE_DATA))
-		return (__le16 *) ((u8 *) hdr + hdr_len - QOS_CONTROL_LEN);
-	return NULL;
-}
-
 #define IEEE80211_STYPE_BACK_REQ	0x0080
 #define IEEE80211_STYPE_BACK		0x0090
 
 
 static inline int ieee80211_is_management(u16 fc)
 {
-	return WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT;
+	return (fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT;
 }
 
 static inline int ieee80211_is_control(u16 fc)
 {
-	return WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_CTL;
+	return (fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_CTL;
 }
 
 static inline int ieee80211_is_data(u16 fc)
 {
-	return WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_DATA;
+	return (fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA;
 }
 
 static inline int ieee80211_is_back_request(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_CTL) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_BACK_REQ);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_CTL) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_BACK_REQ);
 }
 
 static inline int ieee80211_is_probe_response(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_PROBE_RESP);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PROBE_RESP);
 }
 
 static inline int ieee80211_is_probe_request(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_PROBE_REQ);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_PROBE_REQ);
 }
 
 static inline int ieee80211_is_beacon(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_BEACON);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_BEACON);
 }
 
 static inline int ieee80211_is_atim(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_ATIM);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_ATIM);
 }
 
 static inline int ieee80211_is_assoc_request(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_ASSOC_REQ);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_ASSOC_REQ);
 }
 
 static inline int ieee80211_is_assoc_response(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_ASSOC_RESP);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_ASSOC_RESP);
 }
 
 static inline int ieee80211_is_auth(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_ASSOC_REQ);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_ASSOC_REQ);
 }
 
 static inline int ieee80211_is_deauth(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_ASSOC_REQ);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_ASSOC_REQ);
 }
 
 static inline int ieee80211_is_disassoc(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_ASSOC_REQ);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_ASSOC_REQ);
 }
 
 static inline int ieee80211_is_reassoc_request(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_REASSOC_REQ);
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_REASSOC_REQ);
 }
 
 static inline int ieee80211_is_reassoc_response(u16 fc)
 {
-	return (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT) &&
-	       (WLAN_FC_GET_STYPE(fc) == IEEE80211_STYPE_REASSOC_RESP);
-}
-
-static inline int iwl_is_empty_essid(const char *essid, int essid_len)
-{
-	/* Single white space is for Linksys APs */
-	if (essid_len == 1 && essid[0] == ' ')
-		return 1;
-
-	/* Otherwise, if the entire essid is 0, we assume it is hidden */
-	while (essid_len) {
-		essid_len--;
-		if (essid[essid_len] != '\0')
-			return 0;
-	}
-
-	return 1;
+	return ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) &&
+	       ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_REASSOC_RESP);
 }
 
 static inline int iwl_check_bits(unsigned long field, unsigned long mask)
@@ -285,30 +243,6 @@ static inline int iwl_check_bits(unsigned long field, unsigned long mask)
 	return ((field & mask) == mask) ? 1 : 0;
 }
 
-static inline const char *iwl_escape_essid(const char *essid, u8 essid_len)
-{
-	static char escaped[IW_ESSID_MAX_SIZE * 2 + 1];
-	const char *s = essid;
-	char *d = escaped;
-
-	if (iwl_is_empty_essid(essid, essid_len)) {
-		memcpy(escaped, "<hidden>", sizeof("<hidden>"));
-		return escaped;
-	}
-
-	essid_len = min(essid_len, (u8) IW_ESSID_MAX_SIZE);
-	while (essid_len--) {
-		if (*s == '\0') {
-			*d++ = '\\';
-			*d++ = '0';
-			s++;
-		} else
-			*d++ = *s++;
-	}
-	*d = '\0';
-	return escaped;
-}
-
 static inline unsigned long elapsed_jiffies(unsigned long start,
 					    unsigned long end)
 {
@@ -318,8 +252,6 @@ static inline unsigned long elapsed_jiffies(unsigned long start,
 	return end + (MAX_JIFFY_OFFSET - start);
 }
 
-
-
 static inline int snprint_line(char *buf, size_t count,
 			       const u8 *data, u32 len, u32 ofs)
 {
diff --git a/drivers/net/wireless/iwlwifi.h b/drivers/net/wireless/iwlwifi.h
index 5b826bf..1279a2b 100644
--- a/drivers/net/wireless/iwlwifi.h
+++ b/drivers/net/wireless/iwlwifi.h
@@ -639,6 +639,7 @@ extern int iwl_send_statistics_request(struct iwl_priv *priv);
 extern void iwl_set_decrypted_flag(struct iwl_priv *priv, struct sk_buff *skb,
 				   u32 decrypt_res,
 				   struct ieee80211_rx_status *stats);
+extern __le16 *ieee80211_get_qos_ctrl(struct ieee80211_hdr *hdr);
 
 extern const u8 BROADCAST_ADDR[ETH_ALEN];
 
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 22/28] iwlwifi: replace private snprint_line with common hex_dump_xxx
  2007-08-08  7:33                                         ` [PATCH 21/28] iwlwifi: remove WLAN_FC_GET_TYPE macros Zhu Yi
@ 2007-08-08  7:33                                           ` Zhu Yi
  2007-08-08  7:33                                             ` [PATCH 23/28] iwlwifi: Endianity fix for frame control Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c    |   45 ++++++++++++++++++++++++-----------
 drivers/net/wireless/iwl-helpers.h |   21 ----------------
 2 files changed, 31 insertions(+), 35 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index efd4762..2c107e7 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -184,6 +184,23 @@ static const char *iwl_escape_essid(const char *essid, u8 essid_len)
 	return escaped;
 }
 
+static void iwl_print_hex_dump(int level, void *p, u32 len)
+{
+#ifdef CONFIG_IWLWIFI_DEBUG
+	u32 ofs = 0;
+
+	if (!(iwl_debug_level & level))
+		return;
+
+	while (len) {
+		print_hex_dump(KERN_DEBUG, "iwl data: ", DUMP_PREFIX_OFFSET,
+			       16, 1, p + ofs, len, 1);
+		ofs += 16;
+		len -= min(len, 16U);
+	}
+#endif
+}
+
 /*************** DMA-QUEUE-GENERAL-FUNCTIONS  *****
  * DMA services
  *
@@ -1819,7 +1836,7 @@ void iwl_report_frame(struct iwl_priv *priv,
 		}
 	}
 	if (print_dump)
-		printk_buf(IWL_DL_RX, data, length);
+		iwl_print_hex_dump(IWL_DL_RX, data, length);
 }
 #endif
 
@@ -2836,7 +2853,7 @@ static int iwl_get_sta_id(struct iwl_priv *priv, struct ieee80211_hdr *hdr)
 		IWL_DEBUG_DROP("Station " MAC_FMT " not in station map. "
 			       "Defaulting to broadcast...\n",
 			       MAC_ARG(hdr->addr1));
-		printk_buf(IWL_DL_DROP, (u8 *) hdr, sizeof(*hdr));
+		iwl_print_hex_dump(IWL_DL_DROP, (u8 *) hdr, sizeof(*hdr));
 		return IWL_BROADCAST_ID;
 	}
 
@@ -3028,10 +3045,11 @@ static int iwl_tx_skb(struct iwl_priv *priv,
 		txq->need_update = 0;
 	}
 
-	printk_buf(IWL_DL_TX, out_cmd->cmd.payload, sizeof(out_cmd->cmd.tx));
+	iwl_print_hex_dump(IWL_DL_TX, out_cmd->cmd.payload,
+			   sizeof(out_cmd->cmd.tx));
 
-	printk_buf(IWL_DL_TX, (u8 *) out_cmd->cmd.tx.hdr,
-		   ieee80211_get_hdrlen(fc));
+	iwl_print_hex_dump(IWL_DL_TX, (u8 *)out_cmd->cmd.tx.hdr,
+			   ieee80211_get_hdrlen(fc));
 
 	iwl4965_tx_queue_update_wr_ptr(priv, txq, len);
 
@@ -3939,7 +3957,7 @@ static void iwl_rx_pm_debug_statistics_notif(struct iwl_priv *priv,
 	IWL_DEBUG_RADIO("Dumping %d bytes of unhandled "
 			"notification for %s:\n",
 			le32_to_cpu(pkt->len), get_cmd_string(pkt->hdr.cmd));
-	printk_buf(IWL_DL_RADIO, pkt->u.raw, le32_to_cpu(pkt->len));
+	iwl_print_hex_dump(IWL_DL_RADIO, pkt->u.raw, le32_to_cpu(pkt->len));
 }
 
 static void iwl_rx_beacon_notif(struct iwl_priv *priv,
@@ -4762,7 +4780,7 @@ int iwl_tx_queue_update_write_ptr(struct iwl_priv *priv,
 static void iwl_print_rx_config_cmd(struct iwl_rxon_cmd *rxon)
 {
 	IWL_DEBUG_RADIO("RX CONFIG:\n");
-	printk_buf(IWL_DL_RADIO, (u8 *) rxon, sizeof(*rxon));
+	iwl_print_hex_dump(IWL_DL_RADIO, (u8 *) rxon, sizeof(*rxon));
 	IWL_DEBUG_RADIO("u16 channel: 0x%x\n", le16_to_cpu(rxon->channel));
 	IWL_DEBUG_RADIO("u32 flags: 0x%08X\n", le32_to_cpu(rxon->flags));
 	IWL_DEBUG_RADIO("u32 filter_flags: 0x%08x\n",
@@ -8525,7 +8543,6 @@ static ssize_t show_measurement(struct device *d,
 {
 	struct iwl_priv *priv = dev_get_drvdata(d);
 	struct iwl_spectrum_notification measure_report;
-
 	u32 size = sizeof(measure_report), len = 0, ofs = 0;
 	u8 *data = (u8 *) & measure_report;
 	unsigned long flags;
@@ -8540,9 +8557,9 @@ static ssize_t show_measurement(struct device *d,
 	spin_unlock_irqrestore(&priv->lock, flags);
 
 	while (size && (PAGE_SIZE - len)) {
-		len +=
-		    snprint_line(&buf[len], PAGE_SIZE - len,
-				 &data[ofs], min(size, 16U), ofs);
+		hex_dump_to_buffer(data + ofs, size, 16, 1, buf + len,
+				   PAGE_SIZE - len, 1);
+		len = strlen(buf);
 		if (PAGE_SIZE - len)
 			buf[len++] = '\n';
 
@@ -8828,9 +8845,9 @@ static ssize_t show_statistics(struct device *d,
 	}
 
 	while (size && (PAGE_SIZE - len)) {
-		len +=
-		    snprint_line(&buf[len], PAGE_SIZE - len,
-				 &data[ofs], min(size, 16U), ofs);
+		hex_dump_to_buffer(data + ofs, size, 16, 1, buf + len,
+				   PAGE_SIZE - len, 1);
+		len = strlen(buf);
 		if (PAGE_SIZE - len)
 			buf[len++] = '\n';
 
diff --git a/drivers/net/wireless/iwl-helpers.h b/drivers/net/wireless/iwl-helpers.h
index 6ac119f..78b536e 100644
--- a/drivers/net/wireless/iwl-helpers.h
+++ b/drivers/net/wireless/iwl-helpers.h
@@ -287,25 +287,4 @@ static inline int snprint_line(char *buf, size_t count,
 	return out;
 }
 
-#ifdef CONFIG_IWLWIFI_DEBUG
-static inline void printk_buf(int level, const void *p, u32 len)
-{
-	const u8 *data = p;
-	char line[81];
-	u32 ofs = 0;
-	if (!(iwl_debug_level & level))
-		return;
-
-	while (len) {
-		snprint_line(line, sizeof(line), &data[ofs],
-			     min(len, 16U), ofs);
-		printk(KERN_DEBUG "%s\n", line);
-		ofs += 16;
-		len -= min(len, 16U);
-	}
-}
-#else
-#define printk_buf(level, p, len) do {} while (0)
-#endif
-
 #endif				/* __iwl_helpers_h__ */
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 23/28] iwlwifi: Endianity fix for frame control
  2007-08-08  7:33                                           ` [PATCH 22/28] iwlwifi: replace private snprint_line with common hex_dump_xxx Zhu Yi
@ 2007-08-08  7:33                                             ` Zhu Yi
  2007-08-08  7:33                                               ` [PATCH 24/28] iwlwifi: Endianity fix for ct kill configuration Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Tomas Winkler, Zhu Yi

From: Tomas Winkler <tomas.winkler@intel.com>

This patch fixes endianity issue for frame control field
in iwl_hw_build_tx_cmd_rate function. In addition it converts
frame_ctl to fc to align name convention in driver.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-4965.c |    9 ++++-----
 drivers/net/wireless/iwl-base.c |   28 ++++++++++++++--------------
 2 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index 631bd19..eca9eed 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -2637,6 +2637,7 @@ void iwl_hw_build_tx_cmd_rate(struct iwl_priv *priv,
 	u8 rts_retry_limit = 0;
 	u8 data_retry_limit = 0;
 	__le32 tx_flags;
+	u16 fc = le16_to_cpu(hdr->frame_control);
 
 	tx_flags = cmd->cmd.tx.tx_flags;
 
@@ -2645,7 +2646,7 @@ void iwl_hw_build_tx_cmd_rate(struct iwl_priv *priv,
 	rts_retry_limit = (is_hcca) ?
 	    RTS_HCCA_RETRY_LIMIT : RTS_DFAULT_RETRY_LIMIT;
 
-	if (ieee80211_is_probe_response(hdr->frame_control)) {
+	if (ieee80211_is_probe_response(fc)) {
 		data_retry_limit = 3;
 		if (data_retry_limit < rts_retry_limit)
 			rts_retry_limit = data_retry_limit;
@@ -2655,10 +2656,8 @@ void iwl_hw_build_tx_cmd_rate(struct iwl_priv *priv,
 	if (priv->data_retry_limit != -1)
 		data_retry_limit = priv->data_retry_limit;
 
-	if ((le16_to_cpu(hdr->frame_control) & IEEE80211_FCTL_FTYPE)
-			== IEEE80211_FTYPE_MGMT) {
-		switch (le16_to_cpu(hdr->frame_control) &
-			IEEE80211_FCTL_STYPE) {
+	if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) {
+		switch (fc & IEEE80211_FCTL_STYPE) {
 		case IEEE80211_STYPE_AUTH:
 		case IEEE80211_STYPE_DEAUTH:
 		case IEEE80211_STYPE_ASSOC_REQ:
diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 2c107e7..a6cac9c 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -1718,7 +1718,7 @@ void iwl_report_frame(struct iwl_priv *priv,
 	u32 print_dump = 0;	/* set to 1 to dump all frames' contents */
 	u32 hundred = 0;
 	u32 dataframe = 0;
-	u16 frame_ctl;
+	u16 fc;
 	u16 seq_ctl;
 	u16 channel;
 	u16 phy_flags;
@@ -1738,7 +1738,7 @@ void iwl_report_frame(struct iwl_priv *priv,
 	u8 *data = IWL_RX_DATA(pkt);
 
 	/* MAC header */
-	frame_ctl = le16_to_cpu(header->frame_control);
+	fc = le16_to_cpu(header->frame_control);
 	seq_ctl = le16_to_cpu(header->seq_ctrl);
 
 	/* metadata */
@@ -1763,7 +1763,7 @@ void iwl_report_frame(struct iwl_priv *priv,
 
 	/* if data frame is to us and all is good,
 	 *   (optionally) print summary for only 1 out of every 100 */
-	if (to_us && (frame_ctl & ~IEEE80211_FCTL_PROTECTED) ==
+	if (to_us && (fc & ~IEEE80211_FCTL_PROTECTED) ==
 	    (IEEE80211_FCTL_FROMDS | IEEE80211_FTYPE_DATA)) {
 		dataframe = 1;
 		if (!group100)
@@ -1787,25 +1787,25 @@ void iwl_report_frame(struct iwl_priv *priv,
 
 		if (hundred)
 			title = "100Frames";
-		else if (frame_ctl & IEEE80211_FCTL_RETRY)
+		else if (fc & IEEE80211_FCTL_RETRY)
 			title = "Retry";
-		else if (ieee80211_is_assoc_response(frame_ctl))
+		else if (ieee80211_is_assoc_response(fc))
 			title = "AscRsp";
-		else if (ieee80211_is_reassoc_response(frame_ctl))
+		else if (ieee80211_is_reassoc_response(fc))
 			title = "RasRsp";
-		else if (ieee80211_is_probe_response(frame_ctl)) {
+		else if (ieee80211_is_probe_response(fc)) {
 			title = "PrbRsp";
 			print_dump = 1;	/* dump frame contents */
-		} else if (ieee80211_is_beacon(frame_ctl)) {
+		} else if (ieee80211_is_beacon(fc)) {
 			title = "Beacon";
 			print_dump = 1;	/* dump frame contents */
-		} else if (ieee80211_is_atim(frame_ctl))
+		} else if (ieee80211_is_atim(fc))
 			title = "ATIM";
-		else if (ieee80211_is_auth(frame_ctl))
+		else if (ieee80211_is_auth(fc))
 			title = "Auth";
-		else if (ieee80211_is_deauth(frame_ctl))
+		else if (ieee80211_is_deauth(fc))
 			title = "DeAuth";
-		else if (ieee80211_is_disassoc(frame_ctl))
+		else if (ieee80211_is_disassoc(fc))
 			title = "DisAssoc";
 		else
 			title = "Frame";
@@ -1822,14 +1822,14 @@ void iwl_report_frame(struct iwl_priv *priv,
 		if (dataframe)
 			IWL_DEBUG_RX("%s: mhd=0x%04x, dst=0x%02x, "
 				     "len=%u, rssi=%d, chnl=%d, rate=%u, \n",
-				     title, frame_ctl, header->addr1[5],
+				     title, fc, header->addr1[5],
 				     length, rssi, channel, rate);
 		else {
 			/* src/dst addresses assume managed mode */
 			IWL_DEBUG_RX("%s: 0x%04x, dst=0x%02x, "
 				     "src=0x%02x, rssi=%u, tim=%lu usec, "
 				     "phy=0x%02x, chnl=%d\n",
-				     title, frame_ctl, header->addr1[5],
+				     title, fc, header->addr1[5],
 				     header->addr3[5], rssi,
 				     tsf_low - priv->scan_start_tsf,
 				     phy_flags, channel);
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 24/28] iwlwifi: Endianity fix for ct kill configuration
  2007-08-08  7:33                                             ` [PATCH 23/28] iwlwifi: Endianity fix for frame control Zhu Yi
@ 2007-08-08  7:33                                               ` Zhu Yi
  2007-08-08  7:33                                                 ` [PATCH 25/28] iwlwifi: remove unused snprint_line Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Tomas Winkler, Zhu Yi

From: Tomas Winkler <tomas.winkler@intel.com>

This patch fixes endinianity and style issuse in ct kill host command.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-4965.c     |   12 ++++++------
 drivers/net/wireless/iwl-commands.h |    6 +++---
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/iwl-4965.c b/drivers/net/wireless/iwl-4965.c
index eca9eed..6b6ab52 100644
--- a/drivers/net/wireless/iwl-4965.c
+++ b/drivers/net/wireless/iwl-4965.c
@@ -713,8 +713,9 @@ static void iwl4965_bg_statistics_work(struct work_struct *work)
 void iwl4965_rf_kill_ct_config(struct iwl_priv *priv)
 {
 	struct iwl_ct_kill_config cmd;
-	u32 R1 = 0, R2 = 0, R3 = 0;
-	u32 temp_th = 0;
+	u32 R1, R2, R3;
+	u32 temp_th;
+	u32 crit_temperature;
 	unsigned long flags;
 	int rc = 0;
 
@@ -735,15 +736,14 @@ void iwl4965_rf_kill_ct_config(struct iwl_priv *priv)
 
 	temp_th = CELSIUS_TO_KELVIN(TM_CT_KILL_THRESHOLD);
 
-	cmd.critical_temperature_R = ((temp_th * (R3-R1))/CT_LIMIT_CONST) + R2;
+	crit_temperature = ((temp_th * (R3-R1))/CT_LIMIT_CONST) + R2;
+	cmd.critical_temperature_R =  cpu_to_le32(crit_temperature);
 	rc = iwl_send_cmd_pdu(priv,
 			      REPLY_CT_KILL_CONFIG_CMD, sizeof(cmd), &cmd);
 	if (rc)
 		IWL_ERROR("REPLY_CT_KILL_CONFIG_CMD failed\n");
 	else
-		IWL_WARNING("REPLY_CT_KILL_CONFIG_CMD succeeded\n");
-
-	return;
+		IWL_DEBUG_INFO("REPLY_CT_KILL_CONFIG_CMD succeeded\n");
 }
 
 #ifdef CONFIG_IWLWIFI_SENSITIVITY
diff --git a/drivers/net/wireless/iwl-commands.h b/drivers/net/wireless/iwl-commands.h
index 2327ec3..1d2c091 100644
--- a/drivers/net/wireless/iwl-commands.h
+++ b/drivers/net/wireless/iwl-commands.h
@@ -560,9 +560,9 @@ struct iwl_missed_beacon_notif {
 } __attribute__ ((packed));
 
 struct iwl_ct_kill_config {
-	u32   reserved;
-	u32   critical_temperature_M;
-	u32   critical_temperature_R;
+	__le32   reserved;
+	__le32   critical_temperature_M;
+	__le32   critical_temperature_R;
 }  __attribute__ ((packed));
 /*
  * Add/Modify Station Command & Response
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 25/28] iwlwifi: remove unused snprint_line
  2007-08-08  7:33                                               ` [PATCH 24/28] iwlwifi: Endianity fix for ct kill configuration Zhu Yi
@ 2007-08-08  7:33                                                 ` Zhu Yi
  2007-08-08  7:33                                                   ` [PATCH 26/28] iwlwifi: Enhance ISR/RX/CMD debug messages Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Zhu Yi

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-helpers.h |   35 -----------------------------------
 1 files changed, 0 insertions(+), 35 deletions(-)

diff --git a/drivers/net/wireless/iwl-helpers.h b/drivers/net/wireless/iwl-helpers.h
index 78b536e..e2a8d95 100644
--- a/drivers/net/wireless/iwl-helpers.h
+++ b/drivers/net/wireless/iwl-helpers.h
@@ -252,39 +252,4 @@ static inline unsigned long elapsed_jiffies(unsigned long start,
 	return end + (MAX_JIFFY_OFFSET - start);
 }
 
-static inline int snprint_line(char *buf, size_t count,
-			       const u8 *data, u32 len, u32 ofs)
-{
-	int out, i, j, l;
-	char c;
-
-	out = snprintf(buf, count, "%08X", ofs);
-
-	for (l = 0, i = 0; i < 2; i++) {
-		out += snprintf(buf + out, count - out, " ");
-		for (j = 0; j < 8 && l < len; j++, l++)
-			out +=
-			    snprintf(buf + out, count - out, "%02X ",
-				     data[(i * 8 + j)]);
-		for (; j < 8; j++)
-			out += snprintf(buf + out, count - out, "   ");
-	}
-	out += snprintf(buf + out, count - out, " ");
-	for (l = 0, i = 0; i < 2; i++) {
-		out += snprintf(buf + out, count - out, " ");
-		for (j = 0; j < 8 && l < len; j++, l++) {
-			c = data[(i * 8 + j)];
-			if (!isascii(c) || !isprint(c))
-				c = '.';
-
-			out += snprintf(buf + out, count - out, "%c", c);
-		}
-
-		for (; j < 8; j++)
-			out += snprintf(buf + out, count - out, " ");
-	}
-
-	return out;
-}
-
 #endif				/* __iwl_helpers_h__ */
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 26/28] iwlwifi: Enhance ISR/RX/CMD debug messages
  2007-08-08  7:33                                                 ` [PATCH 25/28] iwlwifi: remove unused snprint_line Zhu Yi
@ 2007-08-08  7:33                                                   ` Zhu Yi
  2007-08-08  7:33                                                     ` [PATCH 27/28] iwlwifi: Correct missing hardware detection in iwl_isr() Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Ben Cahill, Zhu Yi

From: Ben Cahill <ben.m.cahill@intel.com>

This patch enhances ISR/RX/CMD debug messages and make sure
all commands are in get_cmd_string(). It also removes 2 unused
commands and enhance comments.

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c     |   84 +++++++++++++++++++++++-----------
 drivers/net/wireless/iwl-commands.h |    5 +--
 2 files changed, 58 insertions(+), 31 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index a6cac9c..ad7e67c 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -593,41 +593,61 @@ static inline int iwl_is_ready_rf(struct iwl_priv *priv)
 static const char *get_cmd_string(u8 cmd)
 {
 	switch (cmd) {
-		IWL_CMD(SCAN_START_NOTIFICATION);
-		IWL_CMD(SCAN_RESULTS_NOTIFICATION);
-		IWL_CMD(SCAN_COMPLETE_NOTIFICATION);
-		IWL_CMD(STATISTICS_NOTIFICATION);
 		IWL_CMD(REPLY_ALIVE);
 		IWL_CMD(REPLY_ERROR);
-		IWL_CMD(REPLY_RXON_ASSOC);
 		IWL_CMD(REPLY_RXON);
+		IWL_CMD(REPLY_RXON_ASSOC);
 		IWL_CMD(REPLY_QOS_PARAM);
 		IWL_CMD(REPLY_RXON_TIMING);
 		IWL_CMD(REPLY_ADD_STA);
+#if IWL == 3945
+		IWL_CMD(REPLY_REMOVE_STA);
+		IWL_CMD(REPLY_REMOVE_ALL_STA);
+		IWL_CMD(REPLY_3945_RX);
+#endif
 		IWL_CMD(REPLY_TX);
 		IWL_CMD(REPLY_BCON);
+#if IWL == 4965
+		IWL_CMD(REPLY_SHUTDOWN);
+#endif
 		IWL_CMD(REPLY_RATE_SCALE);
 		IWL_CMD(REPLY_LEDS_CMD);
+		IWL_CMD(REPLY_TX_LINK_QUALITY_CMD);
+		IWL_CMD(RADAR_NOTIFICATION);
+		IWL_CMD(REPLY_QUIET_CMD);
+		IWL_CMD(REPLY_CHANNEL_SWITCH);
+		IWL_CMD(CHANNEL_SWITCH_NOTIFICATION);
+		IWL_CMD(REPLY_SPECTRUM_MEASUREMENT_CMD);
+		IWL_CMD(SPECTRUM_MEASURE_NOTIFICATION);
+		IWL_CMD(POWER_TABLE_CMD);
+		IWL_CMD(PM_SLEEP_NOTIFICATION);
+		IWL_CMD(PM_DEBUG_STATISTIC_NOTIFIC);
+		IWL_CMD(REPLY_SCAN_CMD);
 		IWL_CMD(REPLY_SCAN_ABORT_CMD);
+		IWL_CMD(SCAN_START_NOTIFICATION);
+		IWL_CMD(SCAN_RESULTS_NOTIFICATION);
+		IWL_CMD(SCAN_COMPLETE_NOTIFICATION);
+		IWL_CMD(BEACON_NOTIFICATION);
 		IWL_CMD(REPLY_TX_BEACON);
-		IWL_CMD(REPLY_BT_CONFIG);
-		IWL_CMD(REPLY_SCAN_CMD);
+		IWL_CMD(WHO_IS_AWAKE_NOTIFICATION);
+		IWL_CMD(QUIET_NOTIFICATION);
 		IWL_CMD(REPLY_TX_PWR_TABLE_CMD);
+		IWL_CMD(MEASURE_ABORT_NOTIFICATION);
+		IWL_CMD(REPLY_BT_CONFIG);
 		IWL_CMD(REPLY_STATISTICS_CMD);
+		IWL_CMD(STATISTICS_NOTIFICATION);
 		IWL_CMD(REPLY_CARD_STATE_CMD);
-		IWL_CMD(REPLY_TX_LINK_QUALITY_CMD);
-#if IWL == 3945
-		IWL_CMD(REPLY_3945_RX);
-#elif IWL == 4965
-		IWL_CMD(MISSED_BEACONS_NOTIFICATION_TH_CMD);
+		IWL_CMD(CARD_STATE_NOTIFICATION);
+		IWL_CMD(MISSED_BEACONS_NOTIFICATION);
+#if IWL == 4965
 		IWL_CMD(REPLY_CT_KILL_CONFIG_CMD);
 		IWL_CMD(SENSITIVITY_CMD);
-		IWL_CMD(REPLY_RX_MPDU_CMD);
+		IWL_CMD(REPLY_PHY_CALIBRATION_CMD);
 		IWL_CMD(REPLY_RX_PHY_CMD);
+		IWL_CMD(REPLY_RX_MPDU_CMD);
 		IWL_CMD(REPLY_4965_RX);
+		IWL_CMD(REPLY_COMPRESSED_BA);
 #endif
-	case POWER_TABLE_CMD:
-		return "POWER_TABLE_CMD";
 	default:
 		return "UNKNOWN";
 
@@ -4647,8 +4667,8 @@ int iwl_calc_sig_qual(int rssi_dbm, int noise_dbm)
  * iwl_rx_handle - Main entry function for receiving responses from the uCode
  *
  * Uses the priv->rx_handlers callback function array to invoke
- * the appropriate handlers including command response and 802.11
- * frame availability.
+ * the appropriate handlers, including command responses,
+ * frame-received notifications, and other notifications.
  */
 static void iwl_rx_handle(struct iwl_priv *priv)
 {
@@ -4662,6 +4682,10 @@ static void iwl_rx_handle(struct iwl_priv *priv)
 	r = iwl_hw_get_rx_read(priv);
 	i = rxq->read;
 
+	/* Rx interrupt, but nothing sent from uCode */
+	if (i == r)
+		IWL_DEBUG(IWL_DL_RX | IWL_DL_ISR, "r = %d, i = %d\n", r, i);
+
 	while (i != r) {
 		rxb = rxq->queue[i];
 
@@ -4677,7 +4701,12 @@ static void iwl_rx_handle(struct iwl_priv *priv)
 					    PCI_DMA_FROMDEVICE);
 		pkt = (struct iwl_rx_packet *)rxb->skb->data;
 
-		/* need to reclaim cmd buffer(s) */
+		/* Reclaim a command buffer only if this packet is a response
+		 *   to a (driver-originated) command.
+		 * If the packet (e.g. Rx frame) originated from uCode,
+		 *   there is no command buffer to reclaim.
+		 * Ucode should set SEQ_RX_FRAME bit if ucode-originated,
+		 *   but apparently a few don't get set; catch them here. */
 		reclaim = !(pkt->hdr.sequence & SEQ_RX_FRAME) &&
 #if IWL == 4965
 			(pkt->hdr.cmd != REPLY_RX_PHY_CMD) &&
@@ -4690,21 +4719,22 @@ static void iwl_rx_handle(struct iwl_priv *priv)
 		 *   handle those that need handling via function in
 		 *   rx_handlers table.  See iwl_setup_rx_handlers() */
 		if (priv->rx_handlers[pkt->hdr.cmd]) {
+			IWL_DEBUG(IWL_DL_HOST_COMMAND | IWL_DL_RX | IWL_DL_ISR,
+				"r = %d, i = %d, %s, 0x%02x\n", r, i,
+				get_cmd_string(pkt->hdr.cmd), pkt->hdr.cmd);
 			priv->rx_handlers[pkt->hdr.cmd] (priv, rxb);
-			IWL_DEBUG(IWL_DL_RX | IWL_DL_ISR,
-				"r = %d, i = %d, rx_handler %s\n", r, i,
-				get_cmd_string(pkt->hdr.cmd));
 		} else {
 			/* No handling needed */
-			IWL_DEBUG_HC("UNHANDLED - #0x%02x %s\n",
-				     pkt->hdr.cmd,
-				     get_cmd_string(pkt->hdr.cmd));
+			IWL_DEBUG(IWL_DL_HOST_COMMAND | IWL_DL_RX | IWL_DL_ISR,
+				"r %d i %d No handler needed for %s, 0x%02x\n",
+				r, i, get_cmd_string(pkt->hdr.cmd),
+				pkt->hdr.cmd);
 		}
 
 		if (reclaim) {
-			/* Invoke any callbacks, transfer the skb to
-			 * caller, and fire off the (possibly) blocking
-			 * iwl_send_cmd() via as we reclaim the queue... */
+			/* Invoke any callbacks, transfer the skb to caller,
+			 * and fire off the (possibly) blocking iwl_send_cmd()
+			 * as we reclaim the driver command queue */
 			if (rxb && rxb->skb)
 				iwl_tx_cmd_complete(priv, rxb);
 			else
diff --git a/drivers/net/wireless/iwl-commands.h b/drivers/net/wireless/iwl-commands.h
index 1d2c091..eecb6f6 100644
--- a/drivers/net/wireless/iwl-commands.h
+++ b/drivers/net/wireless/iwl-commands.h
@@ -130,8 +130,6 @@ enum {
 	REPLY_TX_PWR_TABLE_CMD = 0x97,
 	MEASURE_ABORT_NOTIFICATION = 0x99,
 
-	REPLY_CALIBRATION_TUNE = 0x9a,
-
 	/* BT config command */
 	REPLY_BT_CONFIG = 0x9b,
 	REPLY_STATISTICS_CMD = 0x9c,
@@ -143,15 +141,14 @@ enum {
 
 	/* Missed beacons notification */
 	MISSED_BEACONS_NOTIFICATION = 0xa2,
-	MISSED_BEACONS_NOTIFICATION_TH_CMD = 0xa3,
 
 #if IWL == 4965
 	REPLY_CT_KILL_CONFIG_CMD = 0xa4,
 	SENSITIVITY_CMD = 0xa8,
 	REPLY_PHY_CALIBRATION_CMD = 0xb0,
-	REPLY_4965_RX = 0xc3,
 	REPLY_RX_PHY_CMD = 0xc0,
 	REPLY_RX_MPDU_CMD = 0xc1,
+	REPLY_4965_RX = 0xc3,
 	REPLY_COMPRESSED_BA = 0xc5,
 #endif
 	REPLY_MAX = 0xff
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 27/28] iwlwifi: Correct missing hardware detection in iwl_isr()
  2007-08-08  7:33                                                   ` [PATCH 26/28] iwlwifi: Enhance ISR/RX/CMD debug messages Zhu Yi
@ 2007-08-08  7:33                                                     ` Zhu Yi
  2007-08-08  7:33                                                       ` [PATCH 28/28] iwlwifi: Streamline irq_tasklet() when ISR debug not used Zhu Yi
  0 siblings, 1 reply; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Ben Cahill, Zhu Yi

From: Ben Cahill <ben.m.cahill@intel.com>

This patch corrects missing hardware detection in iwl_isr().

Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index ad7e67c..881945d 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -5282,8 +5282,7 @@ static irqreturn_t iwl_isr(int irq, void *data)
 		goto none;
 	}
 
-	if ((inta == 0xFFFFFFFF) || (inta == 0xa5a5a5a5)
-	    || (inta == 0x5a5a5a5a)) {
+	if ((inta == 0xFFFFFFFF) || ((inta & 0xFFFFFFF0) == 0xa5a5a5a0)) {
 		/* Hardware disappeared */
 		IWL_WARNING("HARDWARE GONE?? INTA == 0x%080x\n", inta);
 		goto none;
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH 28/28] iwlwifi: Streamline irq_tasklet() when ISR debug not used
  2007-08-08  7:33                                                     ` [PATCH 27/28] iwlwifi: Correct missing hardware detection in iwl_isr() Zhu Yi
@ 2007-08-08  7:33                                                       ` Zhu Yi
  0 siblings, 0 replies; 28+ messages in thread
From: Zhu Yi @ 2007-08-08  7:33 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Cahill, Ben M, Zhu Yi

From: Cahill, Ben M <ben.m.cahill@intel.com>

This patch streamlines irq_tasklet() when ISR debug is not used.
It also reports MAC_CLK_ACTV interrupt bit and enhance comments.

Signed-off-by: Cahill, Ben M <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
---
 drivers/net/wireless/iwl-base.c |   35 +++++++++++++++++++++++++----------
 1 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/iwl-base.c b/drivers/net/wireless/iwl-base.c
index 881945d..15965fc 100644
--- a/drivers/net/wireless/iwl-base.c
+++ b/drivers/net/wireless/iwl-base.c
@@ -5125,10 +5125,13 @@ static void iwl_irq_tasklet(struct iwl_priv *priv)
 	inta_fh = iwl_read32(priv, CSR_FH_INT_STATUS);
 	iwl_write32(priv, CSR_FH_INT_STATUS, inta_fh);
 
-	inta_mask = iwl_read32(priv, CSR_INT_MASK); /* just for debug */
-	IWL_DEBUG_ISR
-	    ("inta 0x%08x, enabled 0x%08x, fh 0x%08x\n",
-	     inta, inta_mask, inta_fh);
+#ifdef CONFIG_IWLWIFI_DEBUG
+	if (iwl_debug_level & IWL_DL_ISR) {
+		inta_mask = iwl_read32(priv, CSR_INT_MASK); /* just for debug */
+		IWL_DEBUG_ISR("inta 0x%08x, enabled 0x%08x, fh 0x%08x\n",
+			      inta, inta_mask, inta_fh);
+	}
+#endif
 
 	/* Since CSR_INT and CSR_FH_INT_STATUS reads and clears are not
 	 * atomic, make sure that inta covers all the interrupts that
@@ -5155,6 +5158,21 @@ static void iwl_irq_tasklet(struct iwl_priv *priv)
 		return;
 	}
 
+#ifdef CONFIG_IWLWIFI_DEBUG
+	if (iwl_debug_level & (IWL_DL_ISR)) {
+		/* NIC fires this, but we don't use it, redundant with WAKEUP */
+		if (inta & BIT_INT_MAC_CLK_ACTV)
+			IWL_DEBUG_ISR("Microcode started or stopped.\n");
+
+		/* Alive notification via Rx interrupt will do the real work */
+		if (inta & BIT_INT_ALIVE)
+			IWL_DEBUG_ISR("Alive interrupt\n");
+	}
+#endif
+	/* Safely ignore these bits for debug checks below */
+	inta &= ~(BIT_INT_MAC_CLK_ACTV | BIT_INT_ALIVE);
+
+	/* HW RF KILL switch toggled (4965 only) */
 	if (inta & BIT_INT_RF_KILL) {
 		int hw_rf_kill = 0;
 		if (!(iwl_read32(priv, CSR_GP_CNTRL) &
@@ -5175,11 +5193,13 @@ static void iwl_irq_tasklet(struct iwl_priv *priv)
 		handled |= BIT_INT_RF_KILL;
 	}
 
+	/* Chip got too hot and stopped itself (4965 only) */
 	if (inta & BIT_INT_CT_KILL) {
 		IWL_ERROR("Microcode CT kill error detected.\n");
 		handled |= BIT_INT_CT_KILL;
 	}
 
+	/* Error detected by uCode */
 	if (inta & BIT_INT_SWERROR) {
 		IWL_ERROR("Microcode SW error detected.  Restarting 0x%X.\n",
 			  inta);
@@ -5187,6 +5207,7 @@ static void iwl_irq_tasklet(struct iwl_priv *priv)
 		handled |= BIT_INT_SWERROR;
 	}
 
+	/* uCode wakes up after power-down sleep */
 	if (inta & BIT_INT_WAKEUP) {
 		IWL_DEBUG_ISR("Wakeup interrupt\n");
 		iwl_rx_queue_update_write_ptr(priv, &priv->rxq);
@@ -5200,12 +5221,6 @@ static void iwl_irq_tasklet(struct iwl_priv *priv)
 		handled |= BIT_INT_WAKEUP;
 	}
 
-	/* Alive notification via Rx interrupt will do the real work */
-	if (inta & BIT_INT_ALIVE) {
-		IWL_DEBUG_ISR("Alive interrupt\n");
-		handled |= BIT_INT_ALIVE;
-	}
-
 	/* All uCode command responses, including Tx command responses,
 	 * Rx "responses" (frame-received notification), and other
 	 * notifications from uCode come through here*/
-- 
1.5.2

^ permalink raw reply related	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2007-08-08  7:38 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <11865584251026-git-send-email-yi.zhu@intel.com>
2007-08-08  7:33 ` [PATCH 01/28] iwlwifi: fix a lot of checkpatch.pl warnings Zhu Yi
2007-08-08  7:33   ` [PATCH 02/28] iwlwifi: add more Kconfig options Zhu Yi
2007-08-08  7:33     ` [PATCH 03/28] iwlwifi: Endianity fix for 4965 rate scaling Zhu Yi
2007-08-08  7:33       ` [PATCH 04/28] iwlwifi: Endianity fix for 4965 rx chain selection Zhu Yi
2007-08-08  7:33         ` [PATCH 05/28] iwlwifi: optimize iwl_queue_{inc|dec}_wrap implementation Zhu Yi
2007-08-08  7:33           ` [PATCH 06/28] iwlwifi: use mask operation to replace '%' for index calculation Zhu Yi
2007-08-08  7:33             ` [PATCH 07/28] iwlwifi: make local functions static Zhu Yi
2007-08-08  7:33               ` [PATCH 08/28] iwlwifi: some coding styles cleanup Zhu Yi
2007-08-08  7:33                 ` [PATCH 09/28] iwlwifi: replace unnecessary GFP_ATOMIC with GFP_KERNEL Zhu Yi
2007-08-08  7:33                   ` [PATCH 10/28] iwlwifi: remove priv stuff zeroing in iwl_pci_probe Zhu Yi
2007-08-08  7:33                     ` [PATCH 11/28] iwlwifi: add name for some PCI configuration space registers Zhu Yi
2007-08-08  7:33                       ` [PATCH 12/28] iwlwifi: shorten some structure and function names Zhu Yi
2007-08-08  7:33                         ` [PATCH 13/28] iwlwifi: define iwl_rx_reply_scan only when CONFIG_IWLWIFI_DEBUG enabled Zhu Yi
2007-08-08  7:33                           ` [PATCH 14/28] iwlwifi: remove redundant quotes Zhu Yi
2007-08-08  7:33                             ` [PATCH 15/28] iwlwifi: Endianity fix for rxon host commands Zhu Yi
2007-08-08  7:33                               ` [PATCH 16/28] iwlwifi: Endianity fix for beacon host command Zhu Yi
2007-08-08  7:33                                 ` [PATCH 17/28] iwlwifi: Endianity fix for channel number Zhu Yi
2007-08-08  7:33                                   ` [PATCH 18/28] iwlwifi: shorten more function names Zhu Yi
2007-08-08  7:33                                     ` [PATCH 19/28] iwlwifi: make iwl_get_bits inline function from macro Zhu Yi
2007-08-08  7:33                                       ` [PATCH 20/28] iwlwifi: remove BIT_FMT and BIT_ARG Zhu Yi
2007-08-08  7:33                                         ` [PATCH 21/28] iwlwifi: remove WLAN_FC_GET_TYPE macros Zhu Yi
2007-08-08  7:33                                           ` [PATCH 22/28] iwlwifi: replace private snprint_line with common hex_dump_xxx Zhu Yi
2007-08-08  7:33                                             ` [PATCH 23/28] iwlwifi: Endianity fix for frame control Zhu Yi
2007-08-08  7:33                                               ` [PATCH 24/28] iwlwifi: Endianity fix for ct kill configuration Zhu Yi
2007-08-08  7:33                                                 ` [PATCH 25/28] iwlwifi: remove unused snprint_line Zhu Yi
2007-08-08  7:33                                                   ` [PATCH 26/28] iwlwifi: Enhance ISR/RX/CMD debug messages Zhu Yi
2007-08-08  7:33                                                     ` [PATCH 27/28] iwlwifi: Correct missing hardware detection in iwl_isr() Zhu Yi
2007-08-08  7:33                                                       ` [PATCH 28/28] iwlwifi: Streamline irq_tasklet() when ISR debug not used Zhu Yi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).