Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 179521 Details for
Bug 256001
iwlwifi4965, ping cannot work under IBSS mode
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
Patch to 1.0.0-1 "hotfix" release which should resolve the bug
iwlwifi-hotfix2.patch (text/plain), 6.50 KB, created by
Geoff Gustafson
on 2007-08-29 18:05:55 UTC
(
hide
)
Description:
Patch to 1.0.0-1 "hotfix" release which should resolve the bug
Filename:
MIME Type:
Creator:
Geoff Gustafson
Created:
2007-08-29 18:05:55 UTC
Size:
6.50 KB
patch
obsolete
>Index: linux-2.6.18.i686/drivers/net/wireless/iwlwifi/base.c >=================================================================== >--- linux-2.6.18.i686.orig/drivers/net/wireless/iwlwifi/base.c 2007-08-15 10:23:16.000000000 -0400 >+++ linux-2.6.18.i686/drivers/net/wireless/iwlwifi/base.c 2007-08-15 10:32:28.000000000 -0400 >@@ -106,7 +106,7 @@ BUILD_BUG() > #define VS > #endif > >-#define IWLWIFI_VERSION "1.0.0k" VD VS >+#define IWLWIFI_VERSION "1.0.0-1" VD VS > #define DRV_COPYRIGHT "Copyright(c) 2003-2007 Intel Corporation" > #define DRV_VERSION IWLWIFI_VERSION > >@@ -3793,7 +3793,13 @@ static void iwl_tx_cmd_complete(struct i > /* 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_pri > #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_p > > 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_p > 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 */ >@@ -6989,6 +6996,9 @@ static void iwl_bg_post_associate(void * > #endif /* CONFIG_IWLWIFI_SENSITIVITY */ > #endif /* IWL == 4965 */ > >+ if (priv->iw_mode == IEEE80211_IF_TYPE_IBSS) >+ priv->assoc_station_added = 1; >+ > mutex_unlock(&priv->mutex); > } > >@@ -7278,7 +7288,7 @@ static int d_config_interface(struct iee > 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); > >Index: linux-2.6.18.i686/drivers/net/wireless/iwlwifi/iwl-3945-rs.c >=================================================================== >--- linux-2.6.18.i686.orig/drivers/net/wireless/iwlwifi/iwl-3945-rs.c 2007-08-15 10:23:16.000000000 -0400 >+++ linux-2.6.18.i686/drivers/net/wireless/iwlwifi/iwl-3945-rs.c 2007-08-15 10:32:28.000000000 -0400 >@@ -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, gf > 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_rat > > 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) { >Index: linux-2.6.18.i686/drivers/net/wireless/iwlwifi/iwl-4965-rs.c >=================================================================== >--- linux-2.6.18.i686.orig/drivers/net/wireless/iwlwifi/iwl-4965-rs.c 2007-08-15 10:23:16.000000000 -0400 >+++ linux-2.6.18.i686/drivers/net/wireless/iwlwifi/iwl-4965-rs.c 2007-08-15 10:32:28.000000000 -0400 >@@ -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_rat > 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 > * 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",
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 256001
: 179521