<!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>