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