* [PATCH 0/7] iwlwifi driver 10/06 updates @ 2008-10-06 8:05 Zhu Yi 2008-10-06 8:05 ` [PATCH 1/7] iwlwifi: make initial calibration set configurable Zhu Yi 0 siblings, 1 reply; 16+ messages in thread From: Zhu Yi @ 2008-10-06 8:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi Hi John, Here are some updates for iwlwifi. Please apply. Thanks, -yi [PATCH 1/7] iwlwifi: make initial calibration set configurable [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains [PATCH 4/7] iwlwifi: scan fix comment [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init [PATCH 6/7] iwlwifi: remove STATUS_CONF_PENDING in scanning [PATCH 7/7] iwlwifi: refactor rxon time command ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/7] iwlwifi: make initial calibration set configurable 2008-10-06 8:05 [PATCH 0/7] iwlwifi driver 10/06 updates Zhu Yi @ 2008-10-06 8:05 ` Zhu Yi 2008-10-06 8:05 ` [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 Zhu Yi 2008-10-06 21:12 ` [PATCH 1/7] iwlwifi: make initial calibration set configurable John W. Linville 0 siblings, 2 replies; 16+ messages in thread From: Zhu Yi @ 2008-10-06 8:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Tomas Winkler, Zhu Yi From: Tomas Winkler <tomas.winkler@intel.com> This patch adds ability to configure inital calibration set. Some clean ups are also included in this patch. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwlwifi/iwl-5000-hw.h | 1 + drivers/net/wireless/iwlwifi/iwl-5000.c | 44 +++++++++++++++++--------- drivers/net/wireless/iwlwifi/iwl-calib.c | 8 +++-- drivers/net/wireless/iwlwifi/iwl-commands.h | 27 +++++++---------- drivers/net/wireless/iwlwifi/iwl-dev.h | 4 ++- 5 files changed, 49 insertions(+), 35 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-5000-hw.h b/drivers/net/wireless/iwlwifi/iwl-5000-hw.h index c479ee2..66ed993 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000-hw.h +++ b/drivers/net/wireless/iwlwifi/iwl-5000-hw.h @@ -132,6 +132,7 @@ struct iwl5000_shared { /* calibrations defined for 5000 */ /* defines the order in which results should be sent to the runtime uCode */ enum iwl5000_calib { + IWL5000_CALIB_XTAL, IWL5000_CALIB_LO, IWL5000_CALIB_TX_IQ, IWL5000_CALIB_TX_IQ_PERD, diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index f6003e7..ba92667 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c @@ -429,20 +429,19 @@ static const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv, /* * Calibration */ -static int iwl5000_send_Xtal_calib(struct iwl_priv *priv) +static int iwl5000_set_Xtal_calib(struct iwl_priv *priv) { + u8 data[sizeof(struct iwl5000_calib_hdr) + + sizeof(struct iwl_cal_xtal_freq)]; + struct iwl5000_calib_cmd *cmd = (struct iwl5000_calib_cmd *)data; + struct iwl_cal_xtal_freq *xtal = (struct iwl_cal_xtal_freq *)cmd->data; u16 *xtal_calib = (u16 *)iwl_eeprom_query_addr(priv, EEPROM_5000_XTAL); - struct iwl5000_calibration cal_cmd = { - .op_code = IWL5000_PHY_CALIBRATE_CRYSTAL_FRQ_CMD, - .data = { - (u8)xtal_calib[0], - (u8)xtal_calib[1], - } - }; - - return iwl_send_cmd_pdu(priv, REPLY_PHY_CALIBRATION_CMD, - sizeof(cal_cmd), &cal_cmd); + cmd->hdr.op_code = IWL5000_PHY_CALIBRATE_CRYSTAL_FRQ_CMD; + xtal->cap_pin1 = (u8)xtal_calib[0]; + xtal->cap_pin2 = (u8)xtal_calib[1]; + return iwl_calib_set(&priv->calib_results[IWL5000_CALIB_XTAL], + data, sizeof(data)); } static int iwl5000_send_calib_cfg(struct iwl_priv *priv) @@ -784,10 +783,8 @@ static int iwl5000_alive_notify(struct iwl_priv *priv) iwl5000_send_wimax_coex(priv); - iwl5000_send_Xtal_calib(priv); - - if (priv->ucode_type == UCODE_RT) - iwl_send_calib_results(priv); + iwl5000_set_Xtal_calib(priv); + iwl_send_calib_results(priv); return 0; } @@ -844,6 +841,23 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv) break; } + /* Set initial calibration set */ + switch (priv->hw_rev & CSR_HW_REV_TYPE_MSK) { + case CSR_HW_REV_TYPE_5100: + case CSR_HW_REV_TYPE_5300: + case CSR_HW_REV_TYPE_5350: + priv->hw_params.calib_init_cfg = + BIT(IWL5000_CALIB_XTAL) | + BIT(IWL5000_CALIB_LO) | + BIT(IWL5000_CALIB_TX_IQ) | + BIT(IWL5000_CALIB_TX_IQ_PERD); + break; + case CSR_HW_REV_TYPE_5150: + priv->hw_params.calib_init_cfg = 0; + break; + } + + return 0; } diff --git a/drivers/net/wireless/iwlwifi/iwl-calib.c b/drivers/net/wireless/iwlwifi/iwl-calib.c index 72fbf47..25f4658 100644 --- a/drivers/net/wireless/iwlwifi/iwl-calib.c +++ b/drivers/net/wireless/iwlwifi/iwl-calib.c @@ -70,7 +70,7 @@ * INIT calibrations framework *****************************************************************************/ - int iwl_send_calib_results(struct iwl_priv *priv) +int iwl_send_calib_results(struct iwl_priv *priv) { int ret = 0; int i = 0; @@ -80,14 +80,16 @@ .meta.flags = CMD_SIZE_HUGE, }; - for (i = 0; i < IWL_CALIB_MAX; i++) - if (priv->calib_results[i].buf) { + for (i = 0; i < IWL_CALIB_MAX; i++) { + if ((BIT(i) & priv->hw_params.calib_init_cfg) && + priv->calib_results[i].buf) { hcmd.len = priv->calib_results[i].buf_len; hcmd.data = priv->calib_results[i].buf; ret = iwl_send_cmd_sync(priv, &hcmd); if (ret) goto err; } + } return 0; err: diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h index 8d04e96..fc467c5 100644 --- a/drivers/net/wireless/iwlwifi/iwl-commands.h +++ b/drivers/net/wireless/iwlwifi/iwl-commands.h @@ -98,6 +98,11 @@ enum { COEX_MEDIUM_NOTIFICATION = 0x5b, COEX_EVENT_CMD = 0x5c, + /* Calibration */ + CALIBRATION_CFG_CMD = 0x65, + CALIBRATION_RES_NOTIFICATION = 0x66, + CALIBRATION_COMPLETE_NOTIFICATION = 0x67, + /* 802.11h related */ RADAR_NOTIFICATION = 0x70, /* not used */ REPLY_QUIET_CMD = 0x71, /* not used */ @@ -2879,25 +2884,11 @@ enum { IWL5000_PHY_CALIBRATE_CHAIN_NOISE_GAIN_CMD = 19, }; -enum { - CALIBRATION_CFG_CMD = 0x65, - CALIBRATION_RES_NOTIFICATION = 0x66, - CALIBRATION_COMPLETE_NOTIFICATION = 0x67 -}; - -struct iwl_cal_crystal_freq_cmd { +struct iwl_cal_xtal_freq { u8 cap_pin1; u8 cap_pin2; } __attribute__ ((packed)); -struct iwl5000_calibration { - u8 op_code; - u8 first_group; - u8 num_groups; - u8 all_data_valid; - struct iwl_cal_crystal_freq_cmd data; -} __attribute__ ((packed)); - #define IWL_CALIB_INIT_CFG_ALL __constant_cpu_to_le32(0xffffffff) struct iwl_calib_cfg_elmnt_s { @@ -2927,6 +2918,11 @@ struct iwl5000_calib_hdr { u8 data_valid; } __attribute__ ((packed)); +struct iwl5000_calib_cmd { + struct iwl5000_calib_hdr hdr; + u8 data[0]; +} __attribute__ ((packed)); + struct iwl5000_calibration_chain_noise_reset_cmd { u8 op_code; /* IWL5000_PHY_CALIBRATE_CHAIN_NOISE_RESET_CMD */ u8 flags; /* not used */ @@ -3039,7 +3035,6 @@ struct iwl_rx_packet { struct iwl_notif_statistics stats; struct iwl_compressed_ba_resp compressed_ba; struct iwl4965_missed_beacon_notif missed_beacon; - struct iwl5000_calibration calib; __le32 status; u8 raw[0]; } u; diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index c018121..2125844 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h @@ -527,6 +527,7 @@ struct iwl_sensitivity_ranges { * @sw_crypto: 0 for hw, 1 for sw * @max_xxx_size: for ucode uses * @ct_kill_threshold: temperature threshold + * @calib_init_cfg: setup initial claibrations for the hw * @struct iwl_sensitivity_ranges: range of sensitivity values * @first_ampdu_q: first HW queue available for ampdu */ @@ -548,6 +549,7 @@ struct iwl_hw_params { u32 max_data_size; u32 max_bsm_size; u32 ct_kill_threshold; /* value in hw-dependent units */ + u32 calib_init_cfg; const struct iwl_sensitivity_ranges *sens; u8 first_ampdu_q; }; @@ -765,7 +767,7 @@ enum { #define IWL_MAX_NUM_QUEUES 20 /* FIXME: do dynamic allocation */ -#define IWL_CALIB_MAX 3 +#define IWL_CALIB_MAX 4 struct iwl_priv { -- 1.5.3.6 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 2008-10-06 8:05 ` [PATCH 1/7] iwlwifi: make initial calibration set configurable Zhu Yi @ 2008-10-06 8:05 ` Zhu Yi 2008-10-06 8:05 ` [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains Zhu Yi 2008-10-06 21:15 ` [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 John W. Linville 2008-10-06 21:12 ` [PATCH 1/7] iwlwifi: make initial calibration set configurable John W. Linville 1 sibling, 2 replies; 16+ messages in thread From: Zhu Yi @ 2008-10-06 8:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Tomas Winkler, Zhu Yi From: Tomas Winkler <tomas.winkler@intel.com> This patch fixes ct kill configuration for 5350. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwlwifi/iwl-5000.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index ba92667..c1300fb 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c @@ -830,12 +830,12 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv) switch (priv->hw_rev & CSR_HW_REV_TYPE_MSK) { case CSR_HW_REV_TYPE_5100: case CSR_HW_REV_TYPE_5300: - /* 5X00 wants in Celsius */ + case CSR_HW_REV_TYPE_5350: + /* 5X00 and 5350 wants in Celsius */ priv->hw_params.ct_kill_threshold = CT_KILL_THRESHOLD; break; case CSR_HW_REV_TYPE_5150: - case CSR_HW_REV_TYPE_5350: - /* 5X50 wants in Kelvin */ + /* 5150 wants in Kelvin */ priv->hw_params.ct_kill_threshold = CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD); break; -- 1.5.3.6 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains 2008-10-06 8:05 ` [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 Zhu Yi @ 2008-10-06 8:05 ` Zhu Yi 2008-10-06 8:05 ` [PATCH 4/7] iwlwifi: scan fix comment Zhu Yi 2008-10-06 21:16 ` [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains John W. Linville 2008-10-06 21:15 ` [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 John W. Linville 1 sibling, 2 replies; 16+ messages in thread From: Zhu Yi @ 2008-10-06 8:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Tomas Winkler From: Tomas Winkler <tomas.winkler@intel.com> This patch sets rx_chain bitmap correctly according hw configuration. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> --- drivers/net/wireless/iwlwifi/iwl-scan.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c index bf855c3..debdbd9 100644 --- a/drivers/net/wireless/iwlwifi/iwl-scan.c +++ b/drivers/net/wireless/iwlwifi/iwl-scan.c @@ -703,7 +703,7 @@ static void iwl_bg_request_scan(struct work_struct *data) u16 cmd_len; enum ieee80211_band band; u8 n_probes = 2; - u8 rx_chain = 0x7; /* bitmap: ABC chains */ + u8 rx_chain = priv->hw_params.valid_rx_ant; conf = ieee80211_get_hw_conf(priv->hw); -- 1.5.3.6 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 4/7] iwlwifi: scan fix comment 2008-10-06 8:05 ` [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains Zhu Yi @ 2008-10-06 8:05 ` Zhu Yi 2008-10-06 8:05 ` [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init Zhu Yi 2008-10-06 21:16 ` [PATCH 4/7] iwlwifi: scan fix comment John W. Linville 2008-10-06 21:16 ` [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains John W. Linville 1 sibling, 2 replies; 16+ messages in thread From: Zhu Yi @ 2008-10-06 8:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Tomas Winkler, Zhu Yi From: Tomas Winkler <tomas.winkler@intel.com> This patch moves comment to proper line, it has moved during code shuffling. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwlwifi/iwl-scan.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c index debdbd9..639904a 100644 --- a/drivers/net/wireless/iwlwifi/iwl-scan.c +++ b/drivers/net/wireless/iwlwifi/iwl-scan.c @@ -843,7 +843,7 @@ static void iwl_bg_request_scan(struct work_struct *data) /* Force use of chains B and C (0x6) for scan Rx for 4965 * Avoid A (0x1) because of its off-channel reception on A-band. - * MIMO is not used here, but value is required */ + */ if ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_4965) rx_chain = 0x6; } else { @@ -851,6 +851,7 @@ static void iwl_bg_request_scan(struct work_struct *data) goto done; } + /* MIMO is not used here, but value is required */ scan->rx_chain = RXON_RX_CHAIN_DRIVER_FORCE_MSK | cpu_to_le16((0x7 << RXON_RX_CHAIN_VALID_POS) | (rx_chain << RXON_RX_CHAIN_FORCE_SEL_POS) | -- 1.5.3.6 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init 2008-10-06 8:05 ` [PATCH 4/7] iwlwifi: scan fix comment Zhu Yi @ 2008-10-06 8:05 ` Zhu Yi 2008-10-06 8:05 ` [PATCH 6/7] iwlwifi: remove STATUS_CONF_PENDING in scanning Zhu Yi 2008-10-06 21:25 ` [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init John W. Linville 2008-10-06 21:16 ` [PATCH 4/7] iwlwifi: scan fix comment John W. Linville 1 sibling, 2 replies; 16+ messages in thread From: Zhu Yi @ 2008-10-06 8:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Tomas Winkler, Emmanuel Grumbach, Zhu Yi From: Tomas Winkler <tomas.winkler@intel.com> This patch selects a valid antenna upon RS init. This solves a SYSASSERT complaining that the driver is setting a non valid antenna in the LQ CMD. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwlwifi/iwl-5000.c | 6 +++++- drivers/net/wireless/iwlwifi/iwl-agn-rs.h | 10 ++++++++++ drivers/net/wireless/iwlwifi/iwl-sta.c | 8 +++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index c1300fb..56a3f0c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c @@ -811,10 +811,14 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv) switch (priv->hw_rev & CSR_HW_REV_TYPE_MSK) { case CSR_HW_REV_TYPE_5100: + priv->hw_params.tx_chains_num = 1; + priv->hw_params.rx_chains_num = 2; + priv->hw_params.valid_tx_ant = ANT_B; + priv->hw_params.valid_rx_ant = ANT_AB; + break; case CSR_HW_REV_TYPE_5150: priv->hw_params.tx_chains_num = 1; priv->hw_params.rx_chains_num = 2; - /* FIXME: move to ANT_A, ANT_B, ANT_C enum */ priv->hw_params.valid_tx_ant = ANT_A; priv->hw_params.valid_rx_ant = ANT_AB; break; diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.h b/drivers/net/wireless/iwlwifi/iwl-agn-rs.h index d148d73..bac91f1 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.h +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.h @@ -284,6 +284,16 @@ static inline u8 num_of_ant(u8 mask) !!((mask) & ANT_C); } +static inline u8 first_antenna(u8 mask) +{ + if (mask & ANT_A) + return ANT_A; + if (mask & ANT_B) + return ANT_B; + return ANT_C; +} + + static inline u8 iwl4965_get_prev_ieee_rate(u8 rate_index) { u8 rate = iwl_rates[rate_index].prev_ieee; diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c index 61797f3..f9efc0c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-sta.c +++ b/drivers/net/wireless/iwlwifi/iwl-sta.c @@ -852,7 +852,7 @@ static void iwl_sta_init_lq(struct iwl_priv *priv, const u8 *addr, int is_ap) struct iwl_link_quality_cmd link_cmd = { .reserved1 = 0, }; - u16 rate_flags; + u32 rate_flags; /* Set up the rate scaling to start at selected rate, fall back * all the way down to 1M in IEEE order, and then spin on 1M */ @@ -869,14 +869,16 @@ static void iwl_sta_init_lq(struct iwl_priv *priv, const u8 *addr, int is_ap) rate_flags |= RATE_MCS_CCK_MSK; /* Use Tx antenna B only */ - rate_flags |= RATE_MCS_ANT_B_MSK; /*FIXME:RS*/ + rate_flags |= first_antenna(priv->hw_params.valid_tx_ant) << + RATE_MCS_ANT_POS; link_cmd.rs_table[i].rate_n_flags = iwl_hw_set_rate_n_flags(iwl_rates[r].plcp, rate_flags); r = iwl4965_get_prev_ieee_rate(r); } - link_cmd.general_params.single_stream_ant_msk = 2; + link_cmd.general_params.single_stream_ant_msk = + first_antenna(priv->hw_params.valid_tx_ant); 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 = cpu_to_le16(4000); -- 1.5.3.6 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 6/7] iwlwifi: remove STATUS_CONF_PENDING in scanning 2008-10-06 8:05 ` [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init Zhu Yi @ 2008-10-06 8:05 ` Zhu Yi 2008-10-06 8:05 ` [PATCH 7/7] iwlwifi: refactor rxon time command Zhu Yi 2008-10-06 21:25 ` [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init John W. Linville 1 sibling, 1 reply; 16+ messages in thread From: Zhu Yi @ 2008-10-06 8:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Tomas Winkler, Zhu Yi From: Tomas Winkler <tomas.winkler@intel.com> This patch removes STATUS_CONF_PENDING usage that called from iwl4965_mac_config internally after scan completed. It's called anyway from the mac80211 ieee80211_scan_completed(): if (local->hw_scanning) { local->hw_scanning = false; if (ieee80211_hw_config(local)) ... } Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwlwifi/iwl-agn.c | 28 ---------------------------- drivers/net/wireless/iwlwifi/iwl-core.h | 3 +-- drivers/net/wireless/iwlwifi/iwl-scan.c | 23 +++++++++++++++++++++-- 3 files changed, 22 insertions(+), 32 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 204abab..24a1aeb 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c @@ -2569,30 +2569,6 @@ static void iwl4965_post_associate(struct iwl_priv *priv) } -static int iwl4965_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf); - -static void iwl_bg_scan_completed(struct work_struct *work) -{ - struct iwl_priv *priv = - container_of(work, struct iwl_priv, scan_completed); - - IWL_DEBUG_SCAN("SCAN complete scan\n"); - - if (test_bit(STATUS_EXIT_PENDING, &priv->status)) - return; - - if (test_bit(STATUS_CONF_PENDING, &priv->status)) - iwl4965_mac_config(priv->hw, ieee80211_get_hw_conf(priv->hw)); - - ieee80211_scan_completed(priv->hw); - - /* Since setting the TXPOWER may have been deferred while - * performing the scan, fire one off */ - mutex_lock(&priv->mutex); - iwl_set_tx_power(priv, priv->tx_power_user_lmt, true); - mutex_unlock(&priv->mutex); -} - /***************************************************************************** * * mac80211 entry point functions @@ -2812,7 +2788,6 @@ static int iwl4965_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *co if (unlikely(!priv->cfg->mod_params->disable_hw_scan && test_bit(STATUS_SCANNING, &priv->status))) { IWL_DEBUG_MAC80211("leave - scanning\n"); - set_bit(STATUS_CONF_PENDING, &priv->status); mutex_unlock(&priv->mutex); return 0; } @@ -2898,7 +2873,6 @@ static int iwl4965_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *co IWL_DEBUG_MAC80211("leave\n"); out: - clear_bit(STATUS_CONF_PENDING, &priv->status); mutex_unlock(&priv->mutex); return ret; } @@ -4117,8 +4091,6 @@ static void iwl_setup_deferred_work(struct iwl_priv *priv) INIT_DELAYED_WORK(&priv->init_alive_start, iwl_bg_init_alive_start); INIT_DELAYED_WORK(&priv->alive_start, iwl_bg_alive_start); - /* FIXME : remove when resolved PENDING */ - INIT_WORK(&priv->scan_completed, iwl_bg_scan_completed); iwl_setup_scan_deferred_work(priv); iwl_setup_power_deferred_work(priv); diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h index 55a4b58..288b6a8 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.h +++ b/drivers/net/wireless/iwlwifi/iwl-core.h @@ -333,8 +333,7 @@ void iwl_dump_nic_event_log(struct iwl_priv *priv); #define STATUS_SCAN_HW 15 #define STATUS_POWER_PMI 16 #define STATUS_FW_ERROR 17 -#define STATUS_CONF_PENDING 18 -#define STATUS_MODE_PENDING 19 +#define STATUS_MODE_PENDING 18 static inline int iwl_is_ready(struct iwl_priv *priv) diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c index 639904a..3b0bee3 100644 --- a/drivers/net/wireless/iwlwifi/iwl-scan.c +++ b/drivers/net/wireless/iwlwifi/iwl-scan.c @@ -916,10 +916,29 @@ static void iwl_bg_abort_scan(struct work_struct *work) mutex_unlock(&priv->mutex); } +static void iwl_bg_scan_completed(struct work_struct *work) +{ + struct iwl_priv *priv = + container_of(work, struct iwl_priv, scan_completed); + + IWL_DEBUG_SCAN("SCAN complete scan\n"); + + if (test_bit(STATUS_EXIT_PENDING, &priv->status)) + return; + + ieee80211_scan_completed(priv->hw); + + /* Since setting the TXPOWER may have been deferred while + * performing the scan, fire one off */ + mutex_lock(&priv->mutex); + iwl_set_tx_power(priv, priv->tx_power_user_lmt, true); + mutex_unlock(&priv->mutex); +} + + void iwl_setup_scan_deferred_work(struct iwl_priv *priv) { - /* FIXME: move here when resolved PENDING - * INIT_WORK(&priv->scan_completed, iwl_bg_scan_completed); */ + INIT_WORK(&priv->scan_completed, iwl_bg_scan_completed); INIT_WORK(&priv->request_scan, iwl_bg_request_scan); INIT_WORK(&priv->abort_scan, iwl_bg_abort_scan); INIT_DELAYED_WORK(&priv->scan_check, iwl_bg_scan_check); -- 1.5.3.6 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 7/7] iwlwifi: refactor rxon time command 2008-10-06 8:05 ` [PATCH 6/7] iwlwifi: remove STATUS_CONF_PENDING in scanning Zhu Yi @ 2008-10-06 8:05 ` Zhu Yi 2008-10-06 21:30 ` John W. Linville 0 siblings, 1 reply; 16+ messages in thread From: Zhu Yi @ 2008-10-06 8:05 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Tomas Winkler, Zhu Yi From: Tomas Winkler <tomas.winkler@intel.com> This patch refactors rxon time command. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwlwifi/iwl-agn.c | 70 ++++++++++----------------- drivers/net/wireless/iwlwifi/iwl-commands.h | 11 +--- drivers/net/wireless/iwlwifi/iwl-dev.h | 3 +- 3 files changed, 29 insertions(+), 55 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 24a1aeb..d6100e7 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c @@ -637,23 +637,22 @@ static void iwl_activate_qos(struct iwl_priv *priv, u8 force) #define MAX_UCODE_BEACON_INTERVAL 4096 -static __le16 iwl4965_adjust_beacon_interval(u16 beacon_val) +static u16 iwl_adjust_beacon_interval(u16 beacon_val) { u16 new_val = 0; u16 beacon_factor = 0; - beacon_factor = - (beacon_val + MAX_UCODE_BEACON_INTERVAL) - / MAX_UCODE_BEACON_INTERVAL; + beacon_factor = (beacon_val + MAX_UCODE_BEACON_INTERVAL) + / MAX_UCODE_BEACON_INTERVAL; new_val = beacon_val / beacon_factor; - return cpu_to_le16(new_val); + return new_val; } -static void iwl4965_setup_rxon_timing(struct iwl_priv *priv) +static void iwl_setup_rxon_timing(struct iwl_priv *priv) { - u64 interval_tm_unit; - u64 tsf, result; + u64 tsf; + s32 interval_tm, rem; unsigned long flags; struct ieee80211_conf *conf = NULL; u16 beacon_int = 0; @@ -661,49 +660,32 @@ static void iwl4965_setup_rxon_timing(struct iwl_priv *priv) conf = ieee80211_get_hw_conf(priv->hw); spin_lock_irqsave(&priv->lock, flags); - priv->rxon_timing.timestamp.dw[1] = cpu_to_le32(priv->timestamp >> 32); - priv->rxon_timing.timestamp.dw[0] = - cpu_to_le32(priv->timestamp & 0xFFFFFFFF); - + priv->rxon_timing.timestamp = cpu_to_le64(priv->timestamp); priv->rxon_timing.listen_interval = cpu_to_le16(conf->listen_interval); - tsf = priv->timestamp; - - beacon_int = priv->beacon_int; - spin_unlock_irqrestore(&priv->lock, flags); - if (priv->iw_mode == NL80211_IFTYPE_STATION) { - if (beacon_int == 0) { - priv->rxon_timing.beacon_interval = cpu_to_le16(100); - priv->rxon_timing.beacon_init_val = cpu_to_le32(102400); - } else { - priv->rxon_timing.beacon_interval = - cpu_to_le16(beacon_int); - priv->rxon_timing.beacon_interval = - iwl4965_adjust_beacon_interval( - le16_to_cpu(priv->rxon_timing.beacon_interval)); - } - + beacon_int = iwl_adjust_beacon_interval(priv->beacon_int); priv->rxon_timing.atim_window = 0; } else { - priv->rxon_timing.beacon_interval = - iwl4965_adjust_beacon_interval(conf->beacon_int); + beacon_int = iwl_adjust_beacon_interval(conf->beacon_int); + /* TODO: we need to get atim_window from upper stack * for now we set to 0 */ priv->rxon_timing.atim_window = 0; } - interval_tm_unit = - (le16_to_cpu(priv->rxon_timing.beacon_interval) * 1024); - result = do_div(tsf, interval_tm_unit); - priv->rxon_timing.beacon_init_val = - cpu_to_le32((u32) ((u64) interval_tm_unit - result)); + priv->rxon_timing.beacon_interval = cpu_to_le16(beacon_int); - IWL_DEBUG_ASSOC - ("beacon interval %d beacon timer %d beacon tim %d\n", - le16_to_cpu(priv->rxon_timing.beacon_interval), - le32_to_cpu(priv->rxon_timing.beacon_init_val), - le16_to_cpu(priv->rxon_timing.atim_window)); + tsf = priv->timestamp; /* tsf is modifed by do_div: copy it */ + interval_tm = beacon_int * 1024; + rem = do_div(tsf, interval_tm); + priv->rxon_timing.beacon_init_val = cpu_to_le32(interval_tm - rem); + + spin_unlock_irqrestore(&priv->lock, flags); + IWL_DEBUG_ASSOC("beacon interval %d beacon timer %d beacon tim %d\n", + le16_to_cpu(priv->rxon_timing.beacon_interval), + le32_to_cpu(priv->rxon_timing.beacon_init_val), + le16_to_cpu(priv->rxon_timing.atim_window)); } static void iwl_set_flags_for_band(struct iwl_priv *priv, @@ -2494,8 +2476,7 @@ static void iwl4965_post_associate(struct iwl_priv *priv) priv->staging_rxon.filter_flags &= ~RXON_FILTER_ASSOC_MSK; iwl4965_commit_rxon(priv); - memset(&priv->rxon_timing, 0, sizeof(struct iwl4965_rxon_time_cmd)); - iwl4965_setup_rxon_timing(priv); + iwl_setup_rxon_timing(priv); ret = iwl_send_cmd_pdu(priv, REPLY_RXON_TIMING, sizeof(priv->rxon_timing), &priv->rxon_timing); if (ret) @@ -2886,15 +2867,14 @@ static void iwl4965_config_ap(struct iwl_priv *priv) return; /* The following should be done only at AP bring up */ - if (!(iwl_is_associated(priv))) { + if (!iwl_is_associated(priv)) { /* RXON - unassoc (to set timing command) */ priv->staging_rxon.filter_flags &= ~RXON_FILTER_ASSOC_MSK; iwl4965_commit_rxon(priv); /* RXON Timing */ - memset(&priv->rxon_timing, 0, sizeof(struct iwl4965_rxon_time_cmd)); - iwl4965_setup_rxon_timing(priv); + iwl_setup_rxon_timing(priv); ret = iwl_send_cmd_pdu(priv, REPLY_RXON_TIMING, sizeof(priv->rxon_timing), &priv->rxon_timing); if (ret) diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h index fc467c5..ba54613 100644 --- a/drivers/net/wireless/iwlwifi/iwl-commands.h +++ b/drivers/net/wireless/iwlwifi/iwl-commands.h @@ -482,11 +482,6 @@ struct iwl_alive_resp { } __attribute__ ((packed)); -union tsf { - u8 byte[8]; - __le16 word[4]; - __le32 dw[2]; -}; /* * REPLY_ERROR = 0x2 (response only, not a command) @@ -497,7 +492,7 @@ struct iwl_error_resp { u8 reserved1; __le16 bad_cmd_seq_num; __le32 error_info; - union tsf timestamp; + __le64 timestamp; } __attribute__ ((packed)); /****************************************************************************** @@ -684,8 +679,8 @@ struct iwl4965_rxon_assoc_cmd { /* * REPLY_RXON_TIMING = 0x14 (command, has simple generic response) */ -struct iwl4965_rxon_time_cmd { - union tsf timestamp; +struct iwl_rxon_time_cmd { + __le64 timestamp; __le16 beacon_interval; __le16 atim_window; __le32 beacon_init_val; diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index 2125844..34306b6 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h @@ -275,7 +275,6 @@ struct iwl_cmd { u16 val16; u32 val32; struct iwl4965_bt_cmd bt; - struct iwl4965_rxon_time_cmd rxon_time; struct iwl_powertable_cmd powertable; struct iwl_qosparam_cmd qosparam; struct iwl_tx_cmd tx; @@ -851,7 +850,7 @@ struct iwl_priv { u8 ucode_write_complete; /* the image write is complete */ - struct iwl4965_rxon_time_cmd rxon_timing; + struct iwl_rxon_time_cmd rxon_timing; /* We declare this const so it can only be * changed via explicit cast within the -- 1.5.3.6 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 7/7] iwlwifi: refactor rxon time command 2008-10-06 8:05 ` [PATCH 7/7] iwlwifi: refactor rxon time command Zhu Yi @ 2008-10-06 21:30 ` John W. Linville 0 siblings, 0 replies; 16+ messages in thread From: John W. Linville @ 2008-10-06 21:30 UTC (permalink / raw) To: Zhu Yi; +Cc: linux-wireless, Tomas Winkler On Mon, Oct 06, 2008 at 04:05:33PM +0800, Zhu Yi wrote: > From: Tomas Winkler <tomas.winkler@intel.com> > > This patch refactors rxon time command. Why did you refactor it? What did you change? What did you accomplish? John -- John W. Linville Linux should be at the core linville@tuxdriver.com of your literate lifestyle. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init 2008-10-06 8:05 ` [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init Zhu Yi 2008-10-06 8:05 ` [PATCH 6/7] iwlwifi: remove STATUS_CONF_PENDING in scanning Zhu Yi @ 2008-10-06 21:25 ` John W. Linville 2008-10-06 21:39 ` Tomas Winkler 1 sibling, 1 reply; 16+ messages in thread From: John W. Linville @ 2008-10-06 21:25 UTC (permalink / raw) To: Zhu Yi; +Cc: linux-wireless, Tomas Winkler, Emmanuel Grumbach On Mon, Oct 06, 2008 at 04:05:31PM +0800, Zhu Yi wrote: > From: Tomas Winkler <tomas.winkler@intel.com> > > This patch selects a valid antenna upon RS init. This solves a SYSASSERT > complaining that the driver is setting a non valid antenna in the LQ CMD. I suppose this is an accurate description, but I think you can do better. :-) > diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c > index c1300fb..56a3f0c 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-5000.c > +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c > @@ -811,10 +811,14 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv) > > switch (priv->hw_rev & CSR_HW_REV_TYPE_MSK) { > case CSR_HW_REV_TYPE_5100: > + priv->hw_params.tx_chains_num = 1; > + priv->hw_params.rx_chains_num = 2; > + priv->hw_params.valid_tx_ant = ANT_B; > + priv->hw_params.valid_rx_ant = ANT_AB; > + break; > case CSR_HW_REV_TYPE_5150: > priv->hw_params.tx_chains_num = 1; > priv->hw_params.rx_chains_num = 2; > - /* FIXME: move to ANT_A, ANT_B, ANT_C enum */ > priv->hw_params.valid_tx_ant = ANT_A; > priv->hw_params.valid_rx_ant = ANT_AB; > break; Do you realize that both clauses are the same (i.e. there is no functional change)? How is this useful? > diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.h b/drivers/net/wireless/iwlwifi/iwl-agn-rs.h > index d148d73..bac91f1 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.h > +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.h > @@ -284,6 +284,16 @@ static inline u8 num_of_ant(u8 mask) > !!((mask) & ANT_C); > } > > +static inline u8 first_antenna(u8 mask) > +{ > + if (mask & ANT_A) > + return ANT_A; > + if (mask & ANT_B) > + return ANT_B; > + return ANT_C; > +} > + > + > static inline u8 iwl4965_get_prev_ieee_rate(u8 rate_index) > { > u8 rate = iwl_rates[rate_index].prev_ieee; > diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c > index 61797f3..f9efc0c 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-sta.c > +++ b/drivers/net/wireless/iwlwifi/iwl-sta.c > @@ -852,7 +852,7 @@ static void iwl_sta_init_lq(struct iwl_priv *priv, const u8 *addr, int is_ap) > struct iwl_link_quality_cmd link_cmd = { > .reserved1 = 0, > }; > - u16 rate_flags; > + u32 rate_flags; > > /* Set up the rate scaling to start at selected rate, fall back > * all the way down to 1M in IEEE order, and then spin on 1M */ > @@ -869,14 +869,16 @@ static void iwl_sta_init_lq(struct iwl_priv *priv, const u8 *addr, int is_ap) > rate_flags |= RATE_MCS_CCK_MSK; > > /* Use Tx antenna B only */ > - rate_flags |= RATE_MCS_ANT_B_MSK; /*FIXME:RS*/ > + rate_flags |= first_antenna(priv->hw_params.valid_tx_ant) << > + RATE_MCS_ANT_POS; You need to change the comment... John -- John W. Linville Linux should be at the core linville@tuxdriver.com of your literate lifestyle. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init 2008-10-06 21:25 ` [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init John W. Linville @ 2008-10-06 21:39 ` Tomas Winkler 2008-10-06 21:42 ` John W. Linville 0 siblings, 1 reply; 16+ messages in thread From: Tomas Winkler @ 2008-10-06 21:39 UTC (permalink / raw) To: John W. Linville; +Cc: Zhu Yi, linux-wireless, Emmanuel Grumbach On Mon, Oct 6, 2008 at 11:25 PM, John W. Linville <linville@tuxdriver.com> wrote: > On Mon, Oct 06, 2008 at 04:05:31PM +0800, Zhu Yi wrote: >> From: Tomas Winkler <tomas.winkler@intel.com> >> >> This patch selects a valid antenna upon RS init. This solves a SYSASSERT >> complaining that the driver is setting a non valid antenna in the LQ CMD. > > I suppose this is an accurate description, but I think you can do > better. :-) > >> diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c >> index c1300fb..56a3f0c 100644 >> --- a/drivers/net/wireless/iwlwifi/iwl-5000.c >> +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c >> @@ -811,10 +811,14 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv) >> >> switch (priv->hw_rev & CSR_HW_REV_TYPE_MSK) { >> case CSR_HW_REV_TYPE_5100: >> + priv->hw_params.tx_chains_num = 1; >> + priv->hw_params.rx_chains_num = 2; >> + priv->hw_params.valid_tx_ant = ANT_B; >> + priv->hw_params.valid_rx_ant = ANT_AB; >> + break; >> case CSR_HW_REV_TYPE_5150: >> priv->hw_params.tx_chains_num = 1; >> priv->hw_params.rx_chains_num = 2; >> - /* FIXME: move to ANT_A, ANT_B, ANT_C enum */ >> priv->hw_params.valid_tx_ant = ANT_A; >> priv->hw_params.valid_rx_ant = ANT_AB; >> break; > > Do you realize that both clauses are the same (i.e. there is no > functional change)? How is this useful? The change is tx_ant > >> diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.h b/drivers/net/wireless/iwlwifi/iwl-agn-rs.h >> index d148d73..bac91f1 100644 >> --- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.h >> +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.h >> @@ -284,6 +284,16 @@ static inline u8 num_of_ant(u8 mask) >> !!((mask) & ANT_C); >> } >> >> +static inline u8 first_antenna(u8 mask) >> +{ >> + if (mask & ANT_A) >> + return ANT_A; >> + if (mask & ANT_B) >> + return ANT_B; >> + return ANT_C; >> +} >> + >> + >> static inline u8 iwl4965_get_prev_ieee_rate(u8 rate_index) >> { >> u8 rate = iwl_rates[rate_index].prev_ieee; >> diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c >> index 61797f3..f9efc0c 100644 >> --- a/drivers/net/wireless/iwlwifi/iwl-sta.c >> +++ b/drivers/net/wireless/iwlwifi/iwl-sta.c >> @@ -852,7 +852,7 @@ static void iwl_sta_init_lq(struct iwl_priv *priv, const u8 *addr, int is_ap) >> struct iwl_link_quality_cmd link_cmd = { >> .reserved1 = 0, >> }; >> - u16 rate_flags; >> + u32 rate_flags; >> >> /* Set up the rate scaling to start at selected rate, fall back >> * all the way down to 1M in IEEE order, and then spin on 1M */ >> @@ -869,14 +869,16 @@ static void iwl_sta_init_lq(struct iwl_priv *priv, const u8 *addr, int is_ap) >> rate_flags |= RATE_MCS_CCK_MSK; >> >> /* Use Tx antenna B only */ >> - rate_flags |= RATE_MCS_ANT_B_MSK; /*FIXME:RS*/ >> + rate_flags |= first_antenna(priv->hw_params.valid_tx_ant) << >> + RATE_MCS_ANT_POS; > > You need to change the comment... Right > John > -- > John W. Linville Linux should be at the core > linville@tuxdriver.com of your literate lifestyle. > -- > To unsubscribe from this list: send the line "unsubscribe linux-wireless" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init 2008-10-06 21:39 ` Tomas Winkler @ 2008-10-06 21:42 ` John W. Linville 0 siblings, 0 replies; 16+ messages in thread From: John W. Linville @ 2008-10-06 21:42 UTC (permalink / raw) To: Tomas Winkler; +Cc: Zhu Yi, linux-wireless, Emmanuel Grumbach On Mon, Oct 06, 2008 at 11:39:49PM +0200, Tomas Winkler wrote: > On Mon, Oct 6, 2008 at 11:25 PM, John W. Linville > <linville@tuxdriver.com> wrote: > >> diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c > >> index c1300fb..56a3f0c 100644 > >> --- a/drivers/net/wireless/iwlwifi/iwl-5000.c > >> +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c > >> @@ -811,10 +811,14 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv) > >> > >> switch (priv->hw_rev & CSR_HW_REV_TYPE_MSK) { > >> case CSR_HW_REV_TYPE_5100: > >> + priv->hw_params.tx_chains_num = 1; > >> + priv->hw_params.rx_chains_num = 2; > >> + priv->hw_params.valid_tx_ant = ANT_B; > >> + priv->hw_params.valid_rx_ant = ANT_AB; > >> + break; > >> case CSR_HW_REV_TYPE_5150: > >> priv->hw_params.tx_chains_num = 1; > >> priv->hw_params.rx_chains_num = 2; > >> - /* FIXME: move to ANT_A, ANT_B, ANT_C enum */ > >> priv->hw_params.valid_tx_ant = ANT_A; > >> priv->hw_params.valid_rx_ant = ANT_AB; > >> break; > > > > Do you realize that both clauses are the same (i.e. there is no > > functional change)? How is this useful? > > The change is tx_ant Quite right. > > You need to change the comment... > > Right Thanks. John -- John W. Linville Linux should be at the core linville@tuxdriver.com of your literate lifestyle. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 4/7] iwlwifi: scan fix comment 2008-10-06 8:05 ` [PATCH 4/7] iwlwifi: scan fix comment Zhu Yi 2008-10-06 8:05 ` [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init Zhu Yi @ 2008-10-06 21:16 ` John W. Linville 1 sibling, 0 replies; 16+ messages in thread From: John W. Linville @ 2008-10-06 21:16 UTC (permalink / raw) To: Zhu Yi; +Cc: linux-wireless, Tomas Winkler On Mon, Oct 06, 2008 at 04:05:30PM +0800, Zhu Yi wrote: > From: Tomas Winkler <tomas.winkler@intel.com> > > This patch moves comment to proper line, it has moved during > code shuffling. This description is OK. John -- John W. Linville Linux should be at the core linville@tuxdriver.com of your literate lifestyle. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains 2008-10-06 8:05 ` [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains Zhu Yi 2008-10-06 8:05 ` [PATCH 4/7] iwlwifi: scan fix comment Zhu Yi @ 2008-10-06 21:16 ` John W. Linville 1 sibling, 0 replies; 16+ messages in thread From: John W. Linville @ 2008-10-06 21:16 UTC (permalink / raw) To: Zhu Yi; +Cc: linux-wireless, Tomas Winkler On Mon, Oct 06, 2008 at 04:05:29PM +0800, Zhu Yi wrote: > From: Tomas Winkler <tomas.winkler@intel.com> > > This patch sets rx_chain bitmap correctly according hw configuration. I guess this description is OK...I'm sure you can do better. John -- John W. Linville Linux should be at the core linville@tuxdriver.com of your literate lifestyle. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 2008-10-06 8:05 ` [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 Zhu Yi 2008-10-06 8:05 ` [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains Zhu Yi @ 2008-10-06 21:15 ` John W. Linville 1 sibling, 0 replies; 16+ messages in thread From: John W. Linville @ 2008-10-06 21:15 UTC (permalink / raw) To: Zhu Yi; +Cc: linux-wireless, Tomas Winkler On Mon, Oct 06, 2008 at 04:05:28PM +0800, Zhu Yi wrote: > From: Tomas Winkler <tomas.winkler@intel.com> > > This patch fixes ct kill configuration for 5350. How about "we need to use the temperature units that the hardware expects for its critical temperature setting"? John -- John W. Linville Linux should be at the core linville@tuxdriver.com of your literate lifestyle. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/7] iwlwifi: make initial calibration set configurable 2008-10-06 8:05 ` [PATCH 1/7] iwlwifi: make initial calibration set configurable Zhu Yi 2008-10-06 8:05 ` [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 Zhu Yi @ 2008-10-06 21:12 ` John W. Linville 1 sibling, 0 replies; 16+ messages in thread From: John W. Linville @ 2008-10-06 21:12 UTC (permalink / raw) To: Zhu Yi; +Cc: linux-wireless, Tomas Winkler On Mon, Oct 06, 2008 at 04:05:27PM +0800, Zhu Yi wrote: > From: Tomas Winkler <tomas.winkler@intel.com> > > This patch adds ability to configure inital calibration set. > Some clean ups are also included in this patch. > > Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> > Signed-off-by: Zhu Yi <yi.zhu@intel.com> Why do I want to do this? What does this buy us? How does this make things better? John -- John W. Linville Linux should be at the core linville@tuxdriver.com of your literate lifestyle. ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2008-10-06 21:42 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-10-06 8:05 [PATCH 0/7] iwlwifi driver 10/06 updates Zhu Yi 2008-10-06 8:05 ` [PATCH 1/7] iwlwifi: make initial calibration set configurable Zhu Yi 2008-10-06 8:05 ` [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 Zhu Yi 2008-10-06 8:05 ` [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains Zhu Yi 2008-10-06 8:05 ` [PATCH 4/7] iwlwifi: scan fix comment Zhu Yi 2008-10-06 8:05 ` [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init Zhu Yi 2008-10-06 8:05 ` [PATCH 6/7] iwlwifi: remove STATUS_CONF_PENDING in scanning Zhu Yi 2008-10-06 8:05 ` [PATCH 7/7] iwlwifi: refactor rxon time command Zhu Yi 2008-10-06 21:30 ` John W. Linville 2008-10-06 21:25 ` [PATCH 5/7] iwlwifi: take a valid antenna upon rate scale init John W. Linville 2008-10-06 21:39 ` Tomas Winkler 2008-10-06 21:42 ` John W. Linville 2008-10-06 21:16 ` [PATCH 4/7] iwlwifi: scan fix comment John W. Linville 2008-10-06 21:16 ` [PATCH 3/7] iwlwifi: scan correct setting of valid rx_chains John W. Linville 2008-10-06 21:15 ` [PATCH 2/7] iwlwifi: fix ct kill configuration for 5350 John W. Linville 2008-10-06 21:12 ` [PATCH 1/7] iwlwifi: make initial calibration set configurable John W. Linville
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).