<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7651.59">
<TITLE>[PATCH] UBUNTU: iwlwifi: update to v1.0.0-1</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>
<P><FONT SIZE=2 FACE="Courier New">Signed-off-by: Yong Wang <yong.y.wang@intel.com></FONT>
<BR><FONT SIZE=2 FACE="Courier New">---</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> debian/changelog | 9 +++++++</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> ubuntu-firmware/iwlwifi/iwlwifi-3945.ucode | Bin 149652 -> 149652 bytes</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> ubuntu-firmware/iwlwifi/iwlwifi-4965.ucode | Bin 191332 -> 191336 bytes</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> ubuntu/wireless/iwlwifi/base.c | 26 ++++++++++++++------</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> ubuntu/wireless/iwlwifi/iwl-3945-rs.c | 16 +++++++++++++</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> ubuntu/wireless/iwlwifi/iwl-4965-rs.c | 34 +++++++++++++++++++++++++--</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> 6 files changed, 74 insertions(+), 11 deletions(-)</FONT>
</P>
<P><FONT SIZE=2 FACE="Courier New">diff --git a/debian/changelog b/debian/changelog</FONT>
<BR><FONT SIZE=2 FACE="Courier New">index 6702fde..43f6b64 100644</FONT>
<BR><FONT SIZE=2 FACE="Courier New">--- a/debian/changelog</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+++ b/debian/changelog</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -1,3 +1,12 @@</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+linux-ubuntu-modules-2.6.22 (2.6.22-9.23) gutsy; urgency=low</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ [Yong Wang]</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ * iwlwifi: update iwl3945 microcode, update iwl4965 microcode</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ * iwlwifi: update to v1.0.0-1</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ -- Yong Wang <yong.y.wang@intel.com> Mon, 13 Aug 2007 17:42:54 +0800</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> linux-ubuntu-modules-2.6.22 (2.6.22-9.22) gutsy; urgency=low</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> [Ben Collins]</FONT>
<BR><FONT SIZE=2 FACE="Courier New">diff --git a/ubuntu-firmware/iwlwifi/iwlwifi-3945.ucode b/ubuntu-firmware/iwlwifi/iwlwifi-3945.ucode</FONT>
<BR><FONT SIZE=2 FACE="Courier New">index 678e7f6ff0b3c92a5f37023ad3516a639a010d09..14dc7aac962f7abdae0ebe6b6c66568cc2b42050 100644</FONT>
<BR><FONT SIZE=2 FACE="Courier New">GIT binary patch</FONT>
<BR><FONT SIZE=2 FACE="Courier New">delta 19</FONT>
<BR><FONT SIZE=2 FACE="Courier New">acmbO-k#ovKP9|2yMy6IK#;r_DlRN-6(**+n</FONT>
</P>
<P><FONT SIZE=2 FACE="Courier New">delta 19</FONT>
<BR><FONT SIZE=2 FACE="Courier New">acmbO-k#ovKP9_$HMy6IK#;r_DlRN-6yafRO</FONT>
</P>
<P><FONT SIZE=2 FACE="Courier New">diff --git a/ubuntu-firmware/iwlwifi/iwlwifi-4965.ucode b/ubuntu-firmware/iwlwifi/iwlwifi-4965.ucode</FONT>
<BR><FONT SIZE=2 FACE="Courier New">index 90f25e15049d865aa6331442fdb4ec3f9896201d..1fadfd0453508752d6a6f4851546df93569a0b20 100644</FONT>
<BR><FONT SIZE=2 FACE="Courier New">GIT binary patch</FONT>
<BR><FONT SIZE=2 FACE="Courier New">delta 673</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zcmYjPZAepL6n@X$?!ND?+Ojm%O|c@1X@4Zmw7|#;mf6>j5M1^J!FFA0bLy@XYJwj></FONT>
<BR><FONT SIZE=2 FACE="Courier New">zg4YDA1r-KnWpstewxmxeQ%V#wub@#F!;LpX$<`|h_3LoXbIy4lo^z&#_1}i|Yz%Bx</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zk_YT39oT!ubYoh0*dv*K2Ki>atgzHE&6c{{^^EDB^h5z624bZy6?DYIL1~`_uCIeH</FONT>
<BR><FONT SIZE=2 FACE="Courier New">z(#&><TLW(;_7HfJvp;ZcuHBr2=u-X4t;xA5lf67)M|2iHKU3P6(rRpTZCXJUvw<eL</FONT>
<BR><FONT SIZE=2 FACE="Courier New">z&+s2wfCJ@_1cP{TDHLF+fCLznk}7~_ICVJ4b<e9tBO|)5QJmq1EQrM}H=JaLG;OXR</FONT>
<BR><FONT SIZE=2 FACE="Courier New">z9(O}AwBwvgNJy<!*ht8qsJ9Vcpxv1%#Fw5aLlXne8|V@5j9P^n&9BfATw4h_@EHdx</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zLC|(E4&w8N{C1q>0Y_Z2#zFR`B7~YnSs6AreGKI@ODp?uzXvuz5YKq1xbyf#6%=aY</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zV0rc>epW?wFW`wPI18CLzZwo}x1nWl4&SMUg1k9{W8Uh#v~j0~v4~!TgwtPXrDSwK</FONT>
<BR><FONT SIZE=2 FACE="Courier New">z5Yd%rg)estnE1XIZr1(S*i9PE^)RmHiF_gCKgC;Vu2!LmcAQ-US?NWz!F<_JcUQjn</FONT>
<BR><FONT SIZE=2 FACE="Courier New">z>&NZlr{eT;^}C3$($4Ta>5oiD2Am>_ibk!X`~i2?KstYoxBU@i4cVo&{TAgC{JjS9</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zw1cW;5<AZDf_3$|MKIN-iId9k%?8D+uYvjnMcCt|=h%U-(s1Ay^*qL4CB5a@Dl2tv</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zN#PL3lf>6zOjBB+*+@NBGYf`p(kZ-gb_)9!p<$|5AO80WYw0Vz*V7GUEG5T+2zKfI</FONT>
<BR><FONT SIZE=2 FACE="Courier New">R9_E&@o@)V#YhjKa{|k2q83+IX</FONT>
</P>
<P><FONT SIZE=2 FACE="Courier New">delta 671</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zcmYjPZAepL6n@X$hr9dmb!wRt^Ik>!Aei>EC4N8#h0U=3^dnG6ON?!a&iS$3KAdZy</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zXn)@Q(VRa54U@3AqbR0PmJmj$NFv>lLZqb|Z-nAUcPP}aa}MV`=XuV<`97yxn$xL_</FONT>
<BR><FONT SIZE=2 FACE="Courier New">z=!A0pscKdWSH~8#3oJYt6H|Zx!hW5k;Jr*Y?=8+_QisKt3Wze0ERLw5&jc65^E^Dv</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zfG^_8X-H3lccSVNc(Mz741tC+gN<r)!^)G{#W|4>rmA@@AI2-U{5chgfrjJzUB&u%</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zm-JfyU)M;+n;;8%NhBVO1e}lwy<(OVFvCvqgRpA2v$04lF0g=!I9+f}^*|G7h>?g3</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zs&f0aYt+wmBGyZrIUh2Wa`BA!!8}SY<vJ8r8VzTY+7@}|71GfHMX*TTwt#~TGBz3v</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zN5eIws1<DKc^Vr%mx~bU79?ei>zav{GjZ$$nQVn45F=}?vam){+Xj`#GGPxprLofB</FONT>
<BR><FONT SIZE=2 FACE="Courier New">z_$fPDoVE|3XV{*Ug5udH{CvRAorN9ptqpE~g_O6$WwsFQp*G3mcDR_bskd#I?e~tB</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zXc%7bAmph1L9iRrGF~K(#!rGs0;W=PG+c+xa-E<?U;9ak8!QFY@&I>V?;V!z{#kug</FONT>
<BR><FONT SIZE=2 FACE="Courier New">z^-5TtNcgzhxIeDOn7-Lv-kr7!D9MO=1ZjqhxS;?KV(X3|X=oX1-4dkh<fj|Xu(Rqt</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zk{V+1fce19ZAiVHFGQ5FL7!qh=<{=vP)$4@*}hWJCx?ndviAq|W*TZLQJZB4;|k{t</FONT>
<BR><FONT SIZE=2 FACE="Courier New">zm>zyFBzNUka*0UR%IxSz>5$`teaKP14Zfw2F81#o=H+Mktdlo1vNAbw2vFTwFMwDt</FONT>
<BR><FONT SIZE=2 FACE="Courier New">IFk5wh0jL`mdjJ3c</FONT>
</P>
<P><FONT SIZE=2 FACE="Courier New">diff --git a/ubuntu/wireless/iwlwifi/base.c b/ubuntu/wireless/iwlwifi/base.c</FONT>
<BR><FONT SIZE=2 FACE="Courier New">index feabadf..9a650ec 100644</FONT>
<BR><FONT SIZE=2 FACE="Courier New">--- a/ubuntu/wireless/iwlwifi/base.c</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+++ b/ubuntu/wireless/iwlwifi/base.c</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -106,7 +106,7 @@ BUILD_BUG()</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> #define VS</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> #endif</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">-#define IWLWIFI_VERSION "0.0.42" VD VS</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+#define IWLWIFI_VERSION "1.0.0-1k" VD VS</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> #define DRV_COPYRIGHT "Copyright(c) 2003-2007 Intel Corporation"</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> #define DRV_VERSION IWLWIFI_VERSION</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -1611,7 +1611,7 @@ int iwl_eeprom_init(struct iwl_priv *priv)</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> _iwl_release_restricted_access(priv);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> if (!(r & 1)) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">- IWL_ERROR("Time out reading EEPROM[%d]\n", addr);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ IWL_ERROR("Time out reading EEPROM[%d]", addr);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> return -ETIMEDOUT;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> }</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -3793,7 +3793,13 @@ static void iwl_tx_cmd_complete(struct iwl_priv *priv,</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> /* If a Tx command is being handled and it isn't in the actual</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> * command queue then there a command routing bug has been introduced</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> * in the queue management code. */</FONT>
<BR><FONT SIZE=2 FACE="Courier New">- BUG_ON(txq_id != IWL_CMD_QUEUE_NUM);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ WARN_ON(txq_id != IWL_CMD_QUEUE_NUM);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if (txq_id != IWL_CMD_QUEUE_NUM) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ IWL_ERROR("Kernel BUG! Please report below info:\n");</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ IWL_ERROR("Error wrong command queue %d command id 0x%X\n",</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ txq_id, pkt->hdr.cmd);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ dump_stack();</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ }</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> cmd_index = get_next_cmd_index(&priv->txq[IWL_CMD_QUEUE_NUM].q, index,</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> is_huge);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -4245,6 +4251,7 @@ static void iwl_rx_handle(struct iwl_priv *priv)</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> #if IWL == 4965</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> (pkt->hdr.cmd != REPLY_RX_PHY_CMD) &&</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> #endif</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ (pkt->hdr.cmd != STATISTICS_NOTIFICATION) &&</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> (pkt->hdr.cmd != REPLY_TX);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> /* Based on type of command response or notification,</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -6306,10 +6313,6 @@ static void iwl_alive_start(struct iwl_priv *priv)</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> iwl_send_power_mode(priv, IWL_POWER_LEVEL(priv->power_mode));</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">- /* Initialize our rx_config data */</FONT>
<BR><FONT SIZE=2 FACE="Courier New">- iwl_connection_init_rx_config(priv);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">- memcpy(priv->staging_rxon.node_addr, priv->mac_addr, ETH_ALEN);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">-</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> if (iwl_is_associated(priv)) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> struct iwl_rxon_cmd *active_rxon =</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> (struct iwl_rxon_cmd *)(&priv->active_rxon);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -6317,6 +6320,10 @@ static void iwl_alive_start(struct iwl_priv *priv)</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> memcpy(&priv->staging_rxon, &priv->active_rxon,</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> sizeof(priv->staging_rxon));</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ } else {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ /* Initialize our rx_config data */</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ iwl_connection_init_rx_config(priv);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ memcpy(priv->staging_rxon.node_addr, priv->mac_addr, ETH_ALEN);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> }</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> /* Configure BT coexistence */</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -6995,6 +7002,9 @@ static void iwl_bg_post_associate(struct work_struct *data)</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> #endif /* CONFIG_IWLWIFI_SENSITIVITY */</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> #endif /* IWL == 4965 */</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if (priv->iw_mode == IEEE80211_IF_TYPE_IBSS)</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ priv->assoc_station_added = 1;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> mutex_unlock(&priv->mutex);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> }</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -7286,7 +7296,7 @@ static int d_config_interface(struct ieee80211_hw *hw,</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> memcpy(priv->bssid, conf->bssid, ETH_ALEN);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> iwl_commit_rxon(priv);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">- if (priv->iw_mode != IEEE80211_IF_TYPE_AP)</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if (priv->iw_mode == IEEE80211_IF_TYPE_STA)</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> iwl_rxon_add_station(</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> priv, priv->active_rxon.bssid_addr, 1);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">diff --git a/ubuntu/wireless/iwlwifi/iwl-3945-rs.c b/ubuntu/wireless/iwlwifi/iwl-3945-rs.c</FONT>
<BR><FONT SIZE=2 FACE="Courier New">index 161683f..26727cd 100644</FONT>
<BR><FONT SIZE=2 FACE="Courier New">--- a/ubuntu/wireless/iwlwifi/iwl-3945-rs.c</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+++ b/ubuntu/wireless/iwlwifi/iwl-3945-rs.c</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -68,6 +68,7 @@ struct iwl_rate_scale_priv {</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u8 tgg;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u32 tx_packets;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u8 start_rate;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ u8 ibss_sta_added;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> struct timer_list rate_scale_flush;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> struct iwl_rate_scale_data win[IWL_RATE_COUNT];</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> };</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -393,6 +394,7 @@ static void *rs_alloc_sta(void *priv, gfp_t gfp)</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> rs_priv->last_flush = jiffies;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> rs_priv->flush_time = IWL_RATE_FLUSH;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> rs_priv->last_tx_packets = 0;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ rs_priv->ibss_sta_added = 0;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> init_timer(&rs_priv->rate_scale_flush);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> rs_priv->rate_scale_flush.data = (unsigned long)rs_priv;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -679,6 +681,20 @@ static struct ieee80211_rate *rs_get_rate(void *priv_rate,</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> rs_priv = (void *)sta->rate_ctrl_priv;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) &&</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ !rs_priv->ibss_sta_added) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ u8 sta_id = iwl_hw_find_station(priv, hdr->addr1);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if (sta_id == IWL_INVALID_STATION) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ IWL_DEBUG_RATE("LQ: ADD station " MAC_FMT "\n",</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ MAC_ARG(hdr->addr1));</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ sta_id = iwl_add_station(priv,</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ hdr->addr1, 0, CMD_ASYNC);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ }</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if (sta_id != IWL_INVALID_STATION)</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ rs_priv->ibss_sta_added = 1;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ }</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> spin_lock_irqsave(&rs_priv->lock, flags);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> if (rs_priv->start_rate != IWL_RATE_INVALID) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">diff --git a/ubuntu/wireless/iwlwifi/iwl-4965-rs.c b/ubuntu/wireless/iwlwifi/iwl-4965-rs.c</FONT>
<BR><FONT SIZE=2 FACE="Courier New">index 6257cd8..8771375 100644</FONT>
<BR><FONT SIZE=2 FACE="Courier New">--- a/ubuntu/wireless/iwlwifi/iwl-4965-rs.c</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+++ b/ubuntu/wireless/iwlwifi/iwl-4965-rs.c</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -111,6 +111,7 @@ struct iwl_rate_scale_priv {</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u8 is_dup;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u8 phymode;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u8 ready;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ u8 ibss_sta_added;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u16 active_rate;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u16 active_siso_rate;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u16 active_mimo_rate;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -621,6 +622,10 @@ static void rs_tx_status(void *priv_rate,</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> }</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New"> lq = (struct iwl_rate_scale_priv *)sta->rate_ctrl_priv;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) && !lq->ibss_sta_added)</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ return;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> table = &lq->lq;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> active_index = lq->active_tbl;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -1714,15 +1719,38 @@ static struct ieee80211_rate *rs_get_rate(void *priv_rate,</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> return rs_get_lowest_rate(local);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> }</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ lq = (struct iwl_rate_scale_priv *)sta->rate_ctrl_priv;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> i = sta->last_txrate;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">- lq = (struct iwl_rate_scale_priv *)sta->rate_ctrl_priv;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if ((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) && !lq->ibss_sta_added) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ u8 sta_id = iwl_hw_find_station(priv, hdr->addr1);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if (sta_id == IWL_INVALID_STATION) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ IWL_DEBUG_RATE("LQ: ADD station " MAC_FMT "\n",</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ MAC_ARG(hdr->addr1));</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ sta_id = iwl_add_station(priv,</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ hdr->addr1, 0, CMD_ASYNC);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ }</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if ((sta_id != IWL_INVALID_STATION)) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ lq->lq.sta_id = sta_id;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ lq->lq.rate_scale_table[0].rate_n_flags = 0;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ lq->ibss_sta_added = 1;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ lq->ready = 1;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ lq->commit_lq = 1;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ rs_initialize_lq(priv, sta, CMD_ASYNC);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ }</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if (!lq->ibss_sta_added)</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ goto done;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ }</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> if (lq->commit_lq && lq->ready) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> lq->commit_lq = 0;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> if (rs_send_lq_cmd(priv, &lq->lq, CMD_ASYNC))</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> lq->commit_lq = 1;</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> }</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ done:</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> sta_info_put(sta);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> if ((i < 0) || (i > IWL_RATE_COUNT)) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> return rs_get_lowest_rate(local);</FONT>
<BR><FONT SIZE=2 FACE="Courier New">@@ -1779,8 +1807,8 @@ static void rs_rate_init(void *priv_rate, void *priv_sta,</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> * previous packets? Need to have IEEE 802.1X auth succeed immediately</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> * after assoc.. */</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> </FONT>
<BR><FONT SIZE=2 FACE="Courier New">- if (((priv->iw_mode == IEEE80211_IF_TYPE_IBSS) ||</FONT>
<BR><FONT SIZE=2 FACE="Courier New">- (priv->iw_mode == IEEE80211_IF_TYPE_AP))) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ crl->ibss_sta_added = 0;</FONT>
<BR><FONT SIZE=2 FACE="Courier New">+ if (priv->iw_mode == IEEE80211_IF_TYPE_AP) {</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> u8 sta_id = iwl_hw_find_station(priv, sta->addr);</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> /* for IBSS the call are from tasklet */</FONT>
<BR><FONT SIZE=2 FACE="Courier New"> IWL_DEBUG_HT("LQ: ADD station " MAC_FMT " \n",</FONT>
<BR><FONT SIZE=2 FACE="Courier New">-- </FONT>
<BR><FONT SIZE=2 FACE="Courier New">1.5.3.rc2.gc4fba</FONT>
</P>
<BR>
<BR>
</BODY>
</HTML>