Hello community, here is the log from the commit of package iwlwifi checked in at Mon Aug 27 17:38:37 CEST 2007. -------- --- arch/i386/iwlwifi/iwlwifi.changes 2007-08-24 15:22:31.000000000 +0200 +++ /mounts/work_src_done/STABLE/iwlwifi/iwlwifi.changes 2007-08-27 16:06:28.000000000 +0200 @@ -1,0 +2,11 @@ +Mon Aug 27 16:05:57 CEST 2007 - jg@suse.de + +- update to 0.1.12 + * fix aggregation problem + * fix 11n connection problem + * fix rs_get_best_rate to pick up the right rate + * rate scale quality command fix + * fix iwl_send_cmd_async return value bug + * remove atheros turbo modes + +------------------------------------------------------------------- Old: ---- iwlwifi-0.1.11.tar.bz2 New: ---- iwlwifi-0.1.12.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ iwlwifi.spec ++++++ --- /var/tmp/diff_new_pack.A12021/_old 2007-08-27 17:37:51.000000000 +0200 +++ /var/tmp/diff_new_pack.A12021/_new 2007-08-27 17:37:51.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package iwlwifi (Version 0.1.11) +# spec file for package iwlwifi (Version 0.1.12) # # Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -15,7 +15,7 @@ URL: http://intellinuxwireless.org/ BuildRequires: kernel-source kernel-syms module-init-tools Summary: Intel Wireless Link WiFi drivers -Version: 0.1.11 +Version: 0.1.12 Release: 1 Group: System/Kernel License: BSD 3-Clause, GPL v2 or later @@ -74,6 +74,14 @@ test -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != "/" && rm -rf $RPM_BUILD_ROOT %changelog +* Mon Aug 27 2007 - jg@suse.de +- update to 0.1.12 + * fix aggregation problem + * fix 11n connection problem + * fix rs_get_best_rate to pick up the right rate + * rate scale quality command fix + * fix iwl_send_cmd_async return value bug + * remove atheros turbo modes * Fri Aug 24 2007 - jg@suse.de - update to 0.1.11 * rate scaling - up scaling fix ++++++ iwlwifi-0.1.11.tar.bz2 -> iwlwifi-0.1.12.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/iwlwifi-0.1.11/CHANGES new/iwlwifi-0.1.12/CHANGES --- old/iwlwifi-0.1.11/CHANGES 2007-08-24 04:09:30.000000000 +0200 +++ new/iwlwifi-0.1.12/CHANGES 2007-08-27 07:30:56.000000000 +0200 @@ -1,3 +1,12 @@ +Changes in 0.1.12 + +* fix aggregation problem +* fix 11n connection problem +* fix rs_get_best_rate to pick up the right rate +* rate scale quality command fix +* fix iwl_send_cmd_async return value bug +* remove atheros turbo modes + Changes in 0.1.11 * rate scaling - up scaling fix diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/iwlwifi-0.1.11/GIT_SHA1 new/iwlwifi-0.1.12/GIT_SHA1 --- old/iwlwifi-0.1.11/GIT_SHA1 2007-08-24 04:10:36.000000000 +0200 +++ new/iwlwifi-0.1.12/GIT_SHA1 2007-08-27 07:31:20.000000000 +0200 @@ -1,12 +1,12 @@ -86c68016d87fabc8649cfdf35320f47accfc7795 CHANGES +ad4fbb5ec69965e373d2d104b70ba48ce490f9d4 CHANGES 23ca9cdd8388db72b10960c16f2be582108d6b10 FILES -9162254b9023a895efb0ccc8b3be14da4410502c INSTALL -c83dee7b0e105c159ec1569f0d8e1d1d3ac0aae2 ISSUES +9202308ee3518170433ffcf7479851bb78cb95fb INSTALL +0a69f63b64925007cfc2fcfe0261644717d6581d ISSUES ee7bd187472db499e83b70d55c6b50d36a57484c LICENSE 4b97b2e22a40100471be9aeba3d0ee83194f0a7f LICENSE.BSD 27912a0d3f019ebfed606439f7c7e69e21ae3a90 LICENSE.GPL 9880cb71c2de2653e17eda59eedb5fa67269b25a Makefile -a6e1d860f5aeabddacc907fe491b3aae71b0da3d README.iwlwifi +282194e591b4932e314758434a0f39e025646c20 README.iwlwifi 0af06b5822698adcd7e56c42b8e74b7a4e27a0c6 dvals a52b156522ebebcb127e39ff057a902d5b40dee5 load 902c4c49e858e7324d173e0d1fe594e32ff49c94 origin/Kconfig @@ -17,12 +17,12 @@ bb758367782cc080502139f1a3b1e068a98d9b34 origin/iwl-3945.c 0f4db4c3289e0fdbcdf5d2bd45dcbbf1933849f5 origin/iwl-3945.h 858ec557434d5d36d8007faef7221b242651e023 origin/iwl-4965-hw.h -d16c0fb8187218f99e54af13023427e38772ba94 origin/iwl-4965-rs.c +a97914f82a359477861c665e6ced00288558cdba origin/iwl-4965-rs.c aa9aae560889e2c11f3f212129c5bd0119806c0c origin/iwl-4965-rs.h -901812082c58830b0866a4752bc2fe5cfad2ccf2 origin/iwl-4965.c +a78cc8c6db873290b30eb7426361d2df7d22f568 origin/iwl-4965.c af5215f916669a7cf93f1fd0f0d10a108f0dce8e origin/iwl-4965.h -536028c0a335698002f61b1e903d88031527a680 origin/iwl-base.c -97da370d3b381ba2d3a5d4357bd619ce148849d6 origin/iwl-channel.h +a570ee36ba91102316f1d037193d1da9ba31ce65 origin/iwl-base.c +023c3f240cea6f5212e886607ed7e400a4b81ac7 origin/iwl-channel.h 7f39b0372330b90492cfa6635d5f5c17d04bf03f origin/iwl-commands.h 0ebc4f7dae95db10147720574b5bb17d7db66e76 origin/iwl-debug.h e473c97e3f4fd191d51cf4c63e4dc83ca4687624 origin/iwl-eeprom.h diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/iwlwifi-0.1.11/INSTALL new/iwlwifi-0.1.12/INSTALL --- old/iwlwifi-0.1.11/INSTALL 2007-08-24 04:10:35.000000000 +0200 +++ new/iwlwifi-0.1.12/INSTALL 2007-08-27 07:31:19.000000000 +0200 @@ -8,8 +8,8 @@ INSTALL -Version: 0.1.11 -Date : August 24, 2007 +Version: 0.1.12 +Date : August 27, 2007 Index @@ -96,8 +96,8 @@ Once the mac80211 kernel is installed and running, you build the iwlwifi.ko module: - % tar xzvf iwlwifi-0.1.11.tgz - % cd iwlwifi-0.1.11 + % tar xzvf iwlwifi-0.1.12.tgz + % cd iwlwifi-0.1.12 % make Now you install the firmware. First, determine where to install the @@ -230,9 +230,9 @@ can view the INSTALL files. (Below example is for 3945, you should be able to do the same for 4965): - % tar xzvf iwlwifi-0.1.11.tgz + % tar xzvf iwlwifi-0.1.12.tgz % tar xzvf iwlwifi-3945-ucode-2.14.1.5.tgz - % less iwlwifi-0.1.11/INSTALL + % less iwlwifi-0.1.12/INSTALL % less iwlwifi-3945-ucode-2.14.1.5/INSTALL @@ -290,10 +290,10 @@ 10. BUILDING EXTERNAL (outside kernel source tree) ----------------------------------------------- -Unpack the iwlwifi-0.1.11.tgz archive: +Unpack the iwlwifi-0.1.12.tgz archive: - % tar xzvf iwlwifi-0.1.11.tgz - % cd iwlwifi-0.1.11 + % tar xzvf iwlwifi-0.1.12.tgz + % cd iwlwifi-0.1.12 The driver package contains a Makefile that can be used for building the driver outside of the kernel tree. To build it for the currently running diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/iwlwifi-0.1.11/ISSUES new/iwlwifi-0.1.12/ISSUES --- old/iwlwifi-0.1.11/ISSUES 2007-08-24 04:10:35.000000000 +0200 +++ new/iwlwifi-0.1.12/ISSUES 2007-08-27 07:31:19.000000000 +0200 @@ -9,8 +9,8 @@ ISSUES -Version: 0.1.11 -Date : August 24, 2007 +Version: 0.1.12 +Date : August 27, 2007 ------------------------------ The following are the most common issues reported by users at the time of diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/iwlwifi-0.1.11/origin/iwl-4965.c new/iwlwifi-0.1.12/origin/iwl-4965.c --- old/iwlwifi-0.1.11/origin/iwl-4965.c 2007-08-21 07:26:25.000000000 +0200 +++ new/iwlwifi-0.1.12/origin/iwl-4965.c 2007-08-27 05:19:28.000000000 +0200 @@ -2535,8 +2535,7 @@ } band = ((priv->phymode == MODE_IEEE80211B) || - (priv->phymode == MODE_IEEE80211G) || - (priv->phymode == MODE_ATHEROS_TURBOG)) ? 1 : 0; + (priv->phymode == MODE_IEEE80211G)); is_fat = is_fat_channel(priv->active_rxon.flags); @@ -2568,8 +2567,7 @@ const struct iwl_channel_info *ch_info; band = ((priv->phymode == MODE_IEEE80211B) || - (priv->phymode == MODE_IEEE80211G) || - (priv->phymode == MODE_ATHEROS_TURBOG)) ? 1 : 0; + (priv->phymode == MODE_IEEE80211G)); ch_info = iwl_get_channel_info(priv, priv->phymode, channel); @@ -2990,12 +2988,11 @@ static void iwl4965_ba_status(struct iwl_priv *priv, u8 tid, enum HT_STATUS status); -static int iwl4965_perform_addba(struct iwl_priv *priv, u8 tid, - u32 length, u32 ba_timeout) +static int iwl4965_perform_addba(struct iwl_priv *priv, u8 tid, u32 length, + u32 ba_timeout) { - int rc = 0; + int rc; - IWL_WARNING("ZZZY we are staring Tx agg\n"); rc = ieee80211_start_BA_session(priv->hw, priv->bssid, tid); if (rc) iwl4965_ba_status(priv, tid, BA_STATUS_FAILURE); @@ -3005,18 +3002,18 @@ static int iwl4965_perform_delba(struct iwl_priv *priv, u8 tid) { - int rc = 0; + int rc; rc = ieee80211_stop_BA_session(priv->hw, priv->bssid, tid); - if (rc) iwl4965_ba_status(priv, tid, BA_STATUS_FAILURE); + return rc; } static void iwl4965_turn_on_agg_for_tid(struct iwl_priv *priv, - struct iwl_lq_mngr *lq, - u8 auto_agg, u8 tid) + struct iwl_lq_mngr *lq, + u8 auto_agg, u8 tid) { u32 tid_msk = (1 << tid); unsigned long flags; @@ -4116,7 +4113,7 @@ ack = bitmap0 & (1 << i); IWL_DEBUG_TX_REPLY("%s ON i=%d idx=%d raw=%d\n", ack? "ACK":"NACK", i, idx, agg->start_idx + i); - iwl4965_set_tx_status(priv, ba_resp->tid, idx, ack, 1, + iwl4965_set_tx_status(priv, agg->txq_id, idx, ack, 1, agg->rate_n_flags); } @@ -4346,8 +4343,7 @@ * all the way to 1M in IEEE order and then spin on IEEE */ if (is_ap) r = IWL_RATE_54M_INDEX; - else if ((priv->phymode == MODE_IEEE80211A) || - (priv->phymode == MODE_ATHEROS_TURBO)) + else if (priv->phymode == MODE_IEEE80211A) r = IWL_RATE_6M_INDEX; else r = IWL_RATE_1M_INDEX; @@ -4411,16 +4407,14 @@ return 0; /* no fat tx allowed on 2.4GHZ */ - if ((priv->phymode != MODE_IEEE80211A) && - (priv->phymode != MODE_ATHEROS_TURBO)) + if (priv->phymode != MODE_IEEE80211A) return 0; return (iwl_is_channel_extension(priv, priv->phymode, ht_info->control_channel, ht_info->extension_chan_offset)); } -void iwl4965_set_rxon_ht(struct iwl_priv *priv, - struct sta_ht_info *ht_info) +void iwl4965_set_rxon_ht(struct iwl_priv *priv, struct sta_ht_info *ht_info) { struct iwl_rxon_cmd *rxon = &priv->staging_rxon; u32 val; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/iwlwifi-0.1.11/origin/iwl-4965-rs.c new/iwlwifi-0.1.12/origin/iwl-4965-rs.c --- old/iwlwifi-0.1.11/origin/iwl-4965-rs.c 2007-08-24 03:08:12.000000000 +0200 +++ new/iwlwifi-0.1.12/origin/iwl-4965-rs.c 2007-08-27 05:19:28.000000000 +0200 @@ -108,7 +108,6 @@ u32 total_success; u8 action_counter; u32 flush_timer; - u8 commit_lq; u8 antenna; u8 valid_antenna; u8 is_green; @@ -374,8 +373,7 @@ tbl->lq_type = LQ_NONE; else { - if ((phymode == MODE_ATHEROS_TURBO) || - (phymode == MODE_IEEE80211A)) + if (phymode == MODE_IEEE80211A) tbl->lq_type = LQ_A; else tbl->lq_type = LQ_G; @@ -553,8 +551,7 @@ if (!is_legacy(tbl->lq_type) && (!ht_possible || !scale_index)) { switch_to_legacy = 1; scale_index = rs_ht_to_legacy[scale_index]; - if ((lq_data->phymode == MODE_IEEE80211A) || - (lq_data->phymode == MODE_ATHEROS_TURBO)) + if (lq_data->phymode == MODE_IEEE80211A) tbl->lq_type = LQ_A; else tbl->lq_type = LQ_G; @@ -571,8 +568,7 @@ /* mask with station rate restriction */ if (is_legacy(tbl->lq_type)) { - if ((lq_data->phymode == (u8) MODE_IEEE80211A) || - (lq_data->phymode == (u8) MODE_ATHEROS_TURBO)) + if (lq_data->phymode == (u8) MODE_IEEE80211A) rate_mask = (u16)(rate_mask & (sta->supp_rates << IWL_FIRST_OFDM_RATE)); else @@ -865,13 +861,13 @@ { struct iwl_scale_tbl_info *active_tbl = &(lq_data->lq_info[lq_data->active_tbl]); - s32 new_rate, high, low; + s32 new_rate, high, low, start_hi; s32 active_sr = active_tbl->win[index].success_ratio; s32 *tpt_tbl = tbl->expected_tpt; s32 active_tpt = active_tbl->expected_tpt[index]; u16 high_low; - new_rate = high = low = IWL_RATE_INVALID; + new_rate = high = low = start_hi = IWL_RATE_INVALID; for (; ;) { high_low = rs_get_adjacent_rate(rate, rate_mask, tbl->lq_type); @@ -885,6 +881,11 @@ (tpt_tbl[rate] <= active_tpt))) || ((active_sr >= IWL_RATE_SCALE_SWITCH) && (tpt_tbl[rate] > active_tpt))) { + + if (start_hi != IWL_RATE_INVALID) { + new_rate = start_hi; + break; + } new_rate = rate; if (low != IWL_RATE_INVALID) rate = low; @@ -893,10 +894,13 @@ } else { if (new_rate != IWL_RATE_INVALID) break; - else if (high != IWL_RATE_INVALID) + else if (high != IWL_RATE_INVALID) { + start_hi = high; rate = high; - else + } else { + new_rate = rate; break; + } } } @@ -953,7 +957,7 @@ rs_get_expected_tpt_table(lq_data, tbl); - rate = rs_get_best_rate(priv, lq_data, tbl, rate_mask, index, 4); + rate = rs_get_best_rate(priv, lq_data, tbl, rate_mask, index, index); IWL_DEBUG_HT("LQ: MIMO best rate %d mask %X\n", rate, rate_mask); if ((rate == IWL_RATE_INVALID) || !((1 << rate) & rate_mask)) @@ -1007,7 +1011,7 @@ tbl->is_SGI = 0; rs_get_expected_tpt_table(lq_data, tbl); - rate = rs_get_best_rate(priv, lq_data, tbl, rate_mask, index, 4); + rate = rs_get_best_rate(priv, lq_data, tbl, rate_mask, index, index); IWL_DEBUG_HT("LQ: get best rate %d mask %X\n", rate, rate_mask); if ((rate == IWL_RATE_INVALID) || !((1 << rate) & rate_mask)) { @@ -1036,7 +1040,8 @@ u32 sz = (sizeof(struct iwl_scale_tbl_info) - (sizeof(struct iwl_rate_scale_data) * IWL_RATE_COUNT)); u8 start_action = tbl->action; - for (; ; ) { + + for (; ;) { switch (tbl->action) { case IWL_LEGACY_SWITCH_ANTENNA: IWL_DEBUG_HT("LQ Legacy switch Antenna\n"); @@ -1063,8 +1068,8 @@ search_tbl->lq_type = LQ_SISO; search_tbl->is_SGI = 0; search_tbl->is_fat = 0; - rc = rs_switch_to_siso(priv, lq_data, - search_tbl, index); + rc = rs_switch_to_siso(priv, lq_data, search_tbl, + index); if (!rc) { lq_data->search_better_tbl = 1; lq_data->action_counter = 0; @@ -1080,8 +1085,8 @@ search_tbl->is_SGI = 0; search_tbl->is_fat = 0; search_tbl->antenna_type = ANT_BOTH; - rc = rs_switch_to_mimo(priv, lq_data, - search_tbl, index); + rc = rs_switch_to_mimo(priv, lq_data, search_tbl, + index); if (!rc) { lq_data->search_better_tbl = 1; lq_data->action_counter = 0; @@ -1154,8 +1159,8 @@ search_tbl->is_SGI = 0; search_tbl->is_fat = 0; search_tbl->antenna_type = ANT_BOTH; - rc = rs_switch_to_mimo(priv, lq_data, - search_tbl, index); + rc = rs_switch_to_mimo(priv, lq_data, search_tbl, + index); if (!rc) lq_data->search_better_tbl = 1; @@ -1236,8 +1241,8 @@ else search_tbl->antenna_type = ANT_AUX; - rc = rs_switch_to_siso(priv, lq_data, - search_tbl, index); + rc = rs_switch_to_siso(priv, lq_data, search_tbl, + index); if (!rc) { lq_data->search_better_tbl = 1; goto out; @@ -1404,8 +1409,7 @@ /* mask with station rate restriction */ if (is_legacy(tbl->lq_type)) { - if ((lq_data->phymode == (u8) MODE_IEEE80211A) || - (lq_data->phymode == (u8) MODE_ATHEROS_TURBO)) + if (lq_data->phymode == (u8) MODE_IEEE80211A) rate_scale_index_msk = (u16) (rate_mask & (sta->supp_rates << IWL_FIRST_OFDM_RATE)); else @@ -1443,18 +1447,15 @@ if (((fail_count < IWL_RATE_MIN_FAILURE_TH) && (window->success_counter < IWL_RATE_MIN_SUCCESS_TH)) || (tbl->expected_tpt == NULL)) { - IWL_DEBUG_RATE("LQ: still below TH succ %d total %d\n", - window->success_counter, window->counter); + IWL_DEBUG_RATE("LQ: still below TH succ %d total %d " + "for index %d\n", + window->success_counter, window->counter, index); window->average_tpt = IWL_INVALID_VALUE; rs_stay_in_table(lq_data); 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_fill_link_cmd(lq_data, &mcs_rate, &lq_data->lq, sta); + rs_send_lq_cmd(priv, &lq_data->lq, CMD_ASYNC); } goto out; @@ -1570,18 +1571,15 @@ 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 type %d\n", + index, scale_action, low, high, tbl->lq_type); 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_send_lq_cmd(priv, &lq_data->lq, CMD_ASYNC); } rs_stay_in_table(lq_data); @@ -1607,10 +1605,7 @@ tbl->current_rate.rate_n_flags, index); rs_fill_link_cmd(lq_data, &tbl->current_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_send_lq_cmd(priv, &lq_data->lq, CMD_ASYNC); } tbl1 = &(lq_data->lq_info[lq_data->active_tbl]); @@ -1650,8 +1645,7 @@ /* sta->txrate is an index to A mode rates which start * at IWL_FIRST_OFDM_RATE */ - if ((lq_data->phymode == (u8) MODE_IEEE80211A) || - (lq_data->phymode == (u8) MODE_ATHEROS_TURBO)) + if (lq_data->phymode == (u8) MODE_IEEE80211A) sta->txrate = i - IWL_FIRST_OFDM_RATE; sta->antenna_sel_tx = tbl->lq_type; @@ -1707,7 +1701,7 @@ tbl->current_rate.rate_n_flags = mcs_rate.rate_n_flags; rs_get_expected_tpt_table(lq, tbl); rs_fill_link_cmd(lq, &mcs_rate, &(lq->lq), sta); - lq->commit_lq = 1; + rs_send_lq_cmd(priv, &lq->lq, CMD_ASYNC); out: return; } @@ -1779,20 +1773,12 @@ lq->lq.sta_id = sta_id; lq->lq.rs_table[0].rate_n_flags = 0; lq->ibss_sta_added = 1; - lq->commit_lq = 1; rs_initialize_lq(priv, sta); } if (!lq->ibss_sta_added) goto done; } - - if (lq->commit_lq) { - lq->commit_lq = 0; - if (rs_send_lq_cmd(priv, &lq->lq, CMD_ASYNC)) - lq->commit_lq = 1; - } - done: sta_info_put(sta); if ((i < 0) || (i > IWL_RATE_COUNT)) @@ -1876,8 +1862,7 @@ /* For MODE_IEEE80211A mode cck rate are at end * rate table */ - if ((local->hw.conf.phymode == MODE_IEEE80211A) || - (local->hw.conf.phymode == MODE_ATHEROS_TURBO)) + if (local->hw.conf.phymode == MODE_IEEE80211A) sta->last_txrate += IWL_FIRST_OFDM_RATE; crl->is_dup = priv->is_dup; @@ -1889,15 +1874,17 @@ crl->active_rate_basic = priv->active_rate_basic; crl->phymode = priv->phymode; #ifdef CONFIG_IWLWIFI_HT - crl->active_siso_rate = (priv->active_rate_ht[0] << 1); - crl->active_siso_rate |= (priv->active_rate_ht[0] & 0x1); + crl->active_siso_rate = (priv->current_assoc_ht.supp_rates[0] << 1); + crl->active_siso_rate |= (priv->current_assoc_ht.supp_rates[0] & 0x1); crl->active_siso_rate &= ~((u16)0x2); crl->active_siso_rate = crl->active_siso_rate << IWL_FIRST_OFDM_RATE; - crl->active_mimo_rate = (priv->active_rate_ht[1] << 1); - crl->active_mimo_rate |= (priv->active_rate_ht[1] & 0x1); + crl->active_mimo_rate = (priv->current_assoc_ht.supp_rates[1] << 1); + crl->active_mimo_rate |= (priv->current_assoc_ht.supp_rates[1] & 0x1); crl->active_mimo_rate &= ~((u16)0x2); crl->active_mimo_rate = crl->active_mimo_rate << IWL_FIRST_OFDM_RATE; + IWL_DEBUG_HT("MIMO RATE 0x%X SISO MASK 0x%X\n", crl->active_siso_rate, + crl->active_mimo_rate); #endif /*CONFIG_IWLWIFI_HT*/ if (priv) diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/iwlwifi-0.1.11/origin/iwl-base.c new/iwlwifi-0.1.12/origin/iwl-base.c --- old/iwlwifi-0.1.11/origin/iwl-base.c 2007-08-24 04:10:37.000000000 +0200 +++ new/iwlwifi-0.1.12/origin/iwl-base.c 2007-08-27 07:31:21.000000000 +0200 @@ -107,7 +107,7 @@ #define VS #endif -#define IWLWIFI_VERSION "0.1.11" VD VS +#define IWLWIFI_VERSION "0.1.12" VD VS #define DRV_COPYRIGHT "Copyright(c) 2003-2007 Intel Corporation" #define DRV_VERSION IWLWIFI_VERSION @@ -760,6 +760,8 @@ int iwl_send_cmd_async(struct iwl_priv *priv, struct iwl_host_cmd *cmd) { + int ret; + BUG_ON(!(cmd->meta.flags & CMD_ASYNC)); /* An asynchronous command can not expect an SKB to be set. */ @@ -771,7 +773,11 @@ if (test_bit(STATUS_EXIT_PENDING, &priv->status)) return -EBUSY; - return __iwl_send_cmd(priv, cmd); + ret = __iwl_send_cmd(priv, cmd); + if (ret < 0) + return ret; + + return 0; } int iwl_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd) @@ -943,8 +949,7 @@ return 0; priv->staging_rxon.channel = cpu_to_le16(channel); - if ((phymode == MODE_IEEE80211A) || - (phymode == MODE_ATHEROS_TURBO)) + if (phymode == MODE_IEEE80211A) priv->staging_rxon.flags &= ~RXON_FLG_BAND_24G_MSK; else priv->staging_rxon.flags |= RXON_FLG_BAND_24G_MSK; @@ -2538,8 +2543,7 @@ static void iwl_set_flags_for_phymode(struct iwl_priv *priv, u8 phymode) { - if ((phymode == MODE_IEEE80211A) || - (phymode == MODE_ATHEROS_TURBO)) { + if (phymode == MODE_IEEE80211A) { priv->staging_rxon.flags &= ~(RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK | RXON_FLG_CCK_MSK); @@ -3089,8 +3093,7 @@ priv->active_rate_basic = 0; IWL_DEBUG_RATE("Setting rates for 802.11%c\n", - ((hw->mode == MODE_IEEE80211A) || - (hw->mode == MODE_ATHEROS_TURBO)) ? + hw->mode == MODE_IEEE80211A ? 'a' : ((hw->mode == MODE_IEEE80211B) ? 'b' : 'g')); for (i = 0; i < hw->num_rates; i++) { @@ -3639,16 +3642,16 @@ agg->bitmap0 = agg->bitmap1 = 0; if (agg->frame_count == 1) { + struct iwl_tx_queue *txq ; status = le32_to_cpu(frame_status[0]); - seq = status >> 16; - idx = SEQ_TO_INDEX(seq); - txq_id = SEQ_TO_QUEUE(seq); + txq_id = agg->txq_id; + txq = &priv->txq[txq_id]; /* FIXME: code repetition */ - IWL_DEBUG_TX_REPLY("FrameCnt = %d, StartIdx=%d idx=%d\n", - agg->frame_count, agg->start_idx, idx); + IWL_DEBUG_TX_REPLY("FrameCnt = %d, StartIdx=%d \n", + agg->frame_count, agg->start_idx); - tx_status = &(priv->txq[txq_id].txb[idx].status); + tx_status = &(priv->txq[txq_id].txb[txq->q.last_used].status); tx_status->retry_count = tx_resp->failure_frame; tx_status->queue_number = status & 0xff; tx_status->queue_length = tx_resp->bt_kill_count; @@ -3660,8 +3663,8 @@ iwl_hw_get_rate_n_flags(tx_resp->rate_n_flags); /* FIXME: code repetition end */ - IWL_DEBUG_TX_REPLY("1 Frame 0x%x idx %d failure :%d\n", - status & 0xff, idx, tx_resp->failure_frame); + IWL_DEBUG_TX_REPLY("1 Frame 0x%x failure :%d\n", + status & 0xff, tx_resp->failure_frame); IWL_DEBUG_TX_REPLY("Rate Info rate_n_flags=%x\n", iwl_hw_get_rate_n_flags(tx_resp->rate_n_flags)); @@ -3793,7 +3796,7 @@ /* TODO: send BAR */ } - if (txq->q.last_used != (scd_ssn & 0xff)) { + 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); @@ -5441,7 +5444,6 @@ int i; switch (phymode) { - case MODE_ATHEROS_TURBO: case MODE_IEEE80211A: for (i = 14; i < priv->channel_count; i++) { if (priv->channel_info[i].channel == channel) @@ -5451,7 +5453,6 @@ case MODE_IEEE80211B: case MODE_IEEE80211G: - case MODE_ATHEROS_TURBOG: if (channel >= 1 && channel <= 14) return &priv->channel_info[channel - 1]; break; @@ -5636,8 +5637,7 @@ static inline u16 iwl_get_active_dwell_time(struct iwl_priv *priv, int phymode) { - if ((phymode == MODE_IEEE80211A) || - (phymode == MODE_ATHEROS_TURBO)) + if (phymode == MODE_IEEE80211A) return IWL_ACTIVE_DWELL_TIME_52; else return IWL_ACTIVE_DWELL_TIME_24; @@ -5646,8 +5646,7 @@ static u16 iwl_get_passive_dwell_time(struct iwl_priv *priv, int phymode) { u16 active = iwl_get_active_dwell_time(priv, phymode); - u16 passive = ((phymode != MODE_IEEE80211A) && - (phymode != MODE_ATHEROS_TURBO)) ? + u16 passive = (phymode != MODE_IEEE80211A) ? IWL_PASSIVE_DWELL_BASE + IWL_PASSIVE_DWELL_TIME_24 : IWL_PASSIVE_DWELL_BASE + IWL_PASSIVE_DWELL_TIME_52; @@ -5728,8 +5727,7 @@ /* scan_pwr_info->tpc.dsp_atten; */ /*scan_pwr_info->tpc.tx_gain; */ - if ((phymode == MODE_IEEE80211A) || - (phymode == MODE_ATHEROS_TURBO)) + if (phymode == MODE_IEEE80211A) scan_ch->tpc.tx_gain = ((1 << 5) | (3 << 3)) | 3; else { scan_ch->tpc.tx_gain = ((1 << 5) | (5 << 3)); @@ -5882,13 +5880,13 @@ modes[G].num_channels = 0; #if IWL == 4965 - modes[G_11N].mode = MODE_ATHEROS_TURBOG; + modes[G_11N].mode = MODE_IEEE80211G; modes[G_11N].channels = channels; modes[G_11N].num_rates = 13; /* OFDM & CCK */ modes[G_11N].rates = rates; modes[G_11N].num_channels = 0; - modes[A_11N].mode = MODE_ATHEROS_TURBO; + modes[A_11N].mode = MODE_IEEE80211A; modes[A_11N].channels = &channels[ARRAY_SIZE(iwl_eeprom_band_1)]; modes[A_11N].rates = &rates[4]; modes[A_11N].num_rates = 9; /* just OFDM */ @@ -8291,6 +8289,10 @@ ht_info->ampdu_factor = param_info.max_rx_ampdu_factor; ht_info->mpdu_density = param_info.mpdu_density; + IWL_DEBUG_MAC80211("SISO mask 0x%X MIMO mask 0x%X \n", + ht_cap->supported_mcs_set[0], + ht_cap->supported_mcs_set[1]); + if (ht_info_ap) { ht_info->control_channel = ht_info_ap->control_channel; ht_info->extension_chan_offset = @@ -8387,8 +8389,7 @@ use_wide_channel = 0; /* no fat tx allowed on 2.4GHZ */ - if ((priv->phymode != MODE_IEEE80211A) && - (priv->phymode != MODE_ATHEROS_TURBO)) + if (priv->phymode != MODE_IEEE80211A) use_wide_channel = 0; iwl_set_ht_capab(hw, ht_cap, use_wide_channel); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/iwlwifi-0.1.11/origin/iwl-channel.h new/iwlwifi-0.1.12/origin/iwl-channel.h --- old/iwlwifi-0.1.11/origin/iwl-channel.h 2007-08-21 07:26:25.000000000 +0200 +++ new/iwlwifi-0.1.12/origin/iwl-channel.h 2007-08-27 05:19:28.000000000 +0200 @@ -136,15 +136,13 @@ static inline u8 is_channel_a_band(const struct iwl_channel_info *ch_info) { - return ((ch_info->phymode == MODE_IEEE80211A) || - (ch_info->phymode == MODE_ATHEROS_TURBO)) ? 1 : 0; + return ch_info->phymode == MODE_IEEE80211A; } static inline u8 is_channel_bg_band(const struct iwl_channel_info *ch_info) { return ((ch_info->phymode == MODE_IEEE80211B) || - (ch_info->phymode == MODE_IEEE80211G) || - (ch_info->phymode == MODE_ATHEROS_TURBOG)) ? 1 : 0; + (ch_info->phymode == MODE_IEEE80211G)); } static inline int is_channel_passive(const struct iwl_channel_info *ch) diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/iwlwifi-0.1.11/README.iwlwifi new/iwlwifi-0.1.12/README.iwlwifi --- old/iwlwifi-0.1.11/README.iwlwifi 2007-08-24 04:10:35.000000000 +0200 +++ new/iwlwifi-0.1.12/README.iwlwifi 2007-08-27 07:31:19.000000000 +0200 @@ -10,8 +10,8 @@ README.iwlwifi -Version: 0.1.11 -Date : August 24, 2007 +Version: 0.1.12 +Date : August 27, 2007 Index ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org