* Re: rt2x00 & mac80211: correct usage of ieee80211_beacon_get_tim?
From: John W. Linville @ 2010-06-26 15:32 UTC (permalink / raw)
To: Helmut Schaa
Cc: Johannes Berg, linux-wireless, Ivo van Doorn,
Gertjan van Wingerde
In-Reply-To: <201006251801.06209.helmut.schaa@googlemail.com>
On Fri, Jun 25, 2010 at 06:01:06PM +0200, Helmut Schaa wrote:
> Am Donnerstag 24 Juni 2010 schrieb Johannes Berg:
> > b) You need to get a new beacon frame from mac80211 only when it
> > changes. You can do this from set_tim(). HOWEVER: since you're not
> > getting a new one from mac80211 all the time anyway, you NEED to
> > have the driver or firmware overwrite the DTIM count, like b43's
> > firmware for example will do.
>
> And the broad- and multicast buffering also needs to be done in the driver
> (when the fw/hw cannot handle it) as mac80211 uses its own DTIM count for
> deciding when to "release" buffered frames to the driver.
That seems a bit...yucky...
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: ATH5k - Signal measurement reports wrong values - "calib" did not help
From: Jaroslav Fojtik @ 2010-06-26 12:43 UTC (permalink / raw)
To: Bruno Randolf, linux-wireless
In-Reply-To: <201006250947.39223.br1@einfach.org>
Dear Bruno Randolf,
> > Nothing changed after setting "calib" on.
> hey jara!
>
> setting "calib" is not supposed to change the results, it would just show us
> debug messages in the kernel log (dmesg). have you tried the patch i sent
> later? that should fix it...
Thanks for your info. According to logs it looked like noise floor is -94dB
and it is negligible.
I do not know which patch do you mean. If it is integrated into a current
tarball, I could simply download it and try it.
http://www.orbit-lab.org/kernel/compat-wireless-2.6/compat-wireless-2010-06-25.tar.bz2
If it is not, please Email me such patch.
I am currently using compat-wireless-2010-06-22 and it is still affected by
wrong signal measurement.
regards
Jara
>
> bruno
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* [PATCH 0/2] iwlwifi fixes for 2.6.35
From: Reinette Chatre @ 2010-06-25 22:43 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Reinette Chatre
We include a much anticipated fix for an issue introduced that
broke multicast. This was particularly severe in 3945.
Some references about this issue:
https://bugzilla.kernel.org/show_bug.cgi?id=16235
http://marc.info/?l=linux-kernel&m=127653628301300&w=2
http://thread.gmane.org/gmane.linux.kernel.wireless.general/51614
The second fix is a required change to make all of our current RTS/CTS
settings take effect. Previously we would only modify the RXON setting, but
this setting would only be viewed by firmware if the TX flags have the
TX_CMD_FLAG_PROT_REQUIRE_MSK bit set, which we have not done until now.
These patches are also available from wireless-2.6 branch on
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git
Johannes Berg (1):
iwlwifi: fix multicast
Wey-Yi Guy (1):
iwlwifi: set TX_CMD_FLAG_PROT_REQUIRE_MSK in tx_flag
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 6 +-----
drivers/net/wireless/iwlwifi/iwl-core.c | 7 ++++++-
2 files changed, 7 insertions(+), 6 deletions(-)
^ permalink raw reply
* [PATCH 1/2] iwlwifi: fix multicast
From: Reinette Chatre @ 2010-06-25 22:43 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Johannes Berg
In-Reply-To: <1277505799-25306-1-git-send-email-reinette.chatre@intel.com>
From: Johannes Berg <johannes.berg@intel.com>
commit 3474ad635db371b0d8d0ee40086f15d223d5b6a4
Author: Johannes Berg <johannes.berg@intel.com>
Date: Thu Apr 29 04:43:05 2010 -0700
iwlwifi: apply filter flags directly
broke multicast. The reason, it turns out, is that
the code previously checked if ALLMULTI _changed_,
which the new code no longer did, and normally it
_never_ changes. Had somebody changed it manually,
the code prior to my patch there would have been
broken already.
The reason is that we always, unconditionally, ask
the device to pass up all multicast frames, but the
new code made it depend on ALLMULTI which broke it
since now we'd pass up multicast frames depending
on the default filter in the device, which isn't
necessarily what we want (since we don't program it
right now).
Fix this by simply not checking allmulti as we have
allmulti behaviour enabled already anyway.
Reported-by: Maxim Levitsky <maximlevitsky@gmail.com>
Tested-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-core.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 426e955..5bbc529 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -1314,7 +1314,6 @@ void iwl_configure_filter(struct ieee80211_hw *hw,
changed_flags, *total_flags);
CHK(FIF_OTHER_BSS | FIF_PROMISC_IN_BSS, RXON_FILTER_PROMISC_MSK);
- CHK(FIF_ALLMULTI, RXON_FILTER_ACCEPT_GRP_MSK);
CHK(FIF_CONTROL, RXON_FILTER_CTL2HOST_MSK);
CHK(FIF_BCN_PRBRESP_PROMISC, RXON_FILTER_BCON_AWARE_MSK);
@@ -1329,6 +1328,12 @@ void iwl_configure_filter(struct ieee80211_hw *hw,
mutex_unlock(&priv->mutex);
+ /*
+ * Receiving all multicast frames is always enabled by the
+ * default flags setup in iwl_connection_init_rx_config()
+ * since we currently do not support programming multicast
+ * filters into the device.
+ */
*total_flags &= FIF_OTHER_BSS | FIF_ALLMULTI | FIF_PROMISC_IN_BSS |
FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL;
}
--
1.7.0.4
^ permalink raw reply related
* [PATCH 2/2] iwlwifi: set TX_CMD_FLAG_PROT_REQUIRE_MSK in tx_flag
From: Reinette Chatre @ 2010-06-25 22:43 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1277505799-25306-1-git-send-email-reinette.chatre@intel.com>
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
When building tx command, always set TX_CMD_FLAG_PROT_REQUIRE_MSK
for 5000 series and up.
Without setting this bit the firmware will not examine the RTS/CTS setting
and thus not send traffic with the appropriate protection. RTS/CTS is is
required for HT traffic in a noisy environment where, without this setting,
connections will stall on some hardware as documented in the patch that
initially attempted to address this:
commit 1152dcc28c66a74b5b3f1a3ede0aa6729bfd48e4
Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Date: Fri Jan 15 13:42:58 2010 -0800
iwlwifi: Fix throughput stall issue in HT mode for 5000
Similar to 6000 and 1000 series, RTS/CTS is the recommended
protection mechanism for 5000 series in HT mode based on the HW design.
Using RTS/CTS will better protect the inner exchange from interference,
especially in highly-congested environment, it also prevent uCode encounter
TX FIFO underrun and other HT mode related performance issues.
For 3945 and 4965, different flags are used for RTS/CTS or CTS-to-Self
protection.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 6 +-----
1 files changed, 1 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
index 44ef5d9..01658cf 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
@@ -212,11 +212,7 @@ static void iwlagn_chain_noise_reset(struct iwl_priv *priv)
static void iwlagn_rts_tx_cmd_flag(struct ieee80211_tx_info *info,
__le32 *tx_flags)
{
- if ((info->control.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) ||
- (info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT))
- *tx_flags |= TX_CMD_FLG_RTS_CTS_MSK;
- else
- *tx_flags &= ~TX_CMD_FLG_RTS_CTS_MSK;
+ *tx_flags |= TX_CMD_FLG_RTS_CTS_MSK;
}
/* Calc max signal level (dBm) among 3 possible receivers */
--
1.7.0.4
^ permalink raw reply related
* [PATCH 5/8] iwlwifi: read rfkill during resume
From: Reinette Chatre @ 2010-06-25 22:42 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Johannes Berg, Reinette Chatre
In-Reply-To: <1277505781-25268-1-git-send-email-reinette.chatre@intel.com>
From: Johannes Berg <johannes.berg@intel.com>
When resuming from hibernate or suspend,
the status of the rfkill switch isn't
known since it might have been toggled
while the system was asleep. Therefore,
we need to read out the status at resume
time to make sure the system knows about
an up-to-date status.
Reported-by: Mark Tung <mark.y.tung@intel.com>
Tested-by: Mark Tung <mark.y.tung@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-core.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index f47a58f..a56fb46 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -2845,6 +2845,7 @@ int iwl_pci_resume(struct pci_dev *pdev)
{
struct iwl_priv *priv = pci_get_drvdata(pdev);
int ret;
+ bool hw_rfkill = false;
/*
* We disable the RETRY_TIMEOUT register (0x41) to keep
@@ -2859,6 +2860,17 @@ int iwl_pci_resume(struct pci_dev *pdev)
pci_restore_state(pdev);
iwl_enable_interrupts(priv);
+ if (!(iwl_read32(priv, CSR_GP_CNTRL) &
+ CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW))
+ hw_rfkill = true;
+
+ if (hw_rfkill)
+ set_bit(STATUS_RF_KILL_HW, &priv->status);
+ else
+ clear_bit(STATUS_RF_KILL_HW, &priv->status);
+
+ wiphy_rfkill_set_hw_state(priv->hw->wiphy, hw_rfkill);
+
return 0;
}
EXPORT_SYMBOL(iwl_pci_resume);
--
1.7.0.4
^ permalink raw reply related
* [PATCH 6/8] iwlwifi: turn on RTS/CTS after aggregation become operational
From: Reinette Chatre @ 2010-06-25 22:42 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1277505781-25268-1-git-send-email-reinette.chatre@intel.com>
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
If RTS/CTS protection is needed for HT, wait until get operational
notification from mac80211, then inform uCode to switch to RTS/CTS
through RXON command.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 17 +++++------------
drivers/net/wireless/iwlwifi/iwl-agn.c | 28 +++++++++++++++++++++++++++-
drivers/net/wireless/iwlwifi/iwl-scan.c | 9 +++++++++
3 files changed, 41 insertions(+), 13 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
index 40933a5..35c86d2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rs.c
@@ -324,18 +324,11 @@ static void rs_tl_turn_on_agg(struct iwl_priv *priv, u8 tid,
struct iwl_lq_sta *lq_data,
struct ieee80211_sta *sta)
{
- if ((tid < TID_MAX_LOAD_COUNT) &&
- !rs_tl_turn_on_agg_for_tid(priv, lq_data, tid, sta)) {
- if (priv->cfg->use_rts_for_ht) {
- /*
- * switch to RTS/CTS if it is the prefer protection
- * method for HT traffic
- */
- IWL_DEBUG_HT(priv, "use RTS/CTS protection for HT\n");
- priv->staging_rxon.flags &= ~RXON_FLG_SELF_CTS_EN;
- iwlcore_commit_rxon(priv);
- }
- }
+ if (tid < TID_MAX_LOAD_COUNT)
+ rs_tl_turn_on_agg_for_tid(priv, lq_data, tid, sta);
+ else
+ IWL_ERR(priv, "tid exceeds max load count: %d/%d\n",
+ tid, TID_MAX_LOAD_COUNT);
}
static inline int get_num_of_ant_from_rate(u32 rate_n_flags)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 7488a68..3368cfd 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -3368,6 +3368,25 @@ static int iwl_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
return ret;
}
+/*
+ * switch to RTS/CTS for TX
+ */
+static void iwl_enable_rts_cts(struct iwl_priv *priv)
+{
+
+ if (test_bit(STATUS_EXIT_PENDING, &priv->status))
+ return;
+
+ priv->staging_rxon.flags &= ~RXON_FLG_SELF_CTS_EN;
+ if (!test_bit(STATUS_SCANNING, &priv->status)) {
+ IWL_DEBUG_INFO(priv, "use RTS/CTS protection\n");
+ iwlcore_commit_rxon(priv);
+ } else {
+ /* scanning, defer the request until scan completed */
+ IWL_DEBUG_INFO(priv, "defer setting RTS/CTS protection\n");
+ }
+}
+
static int iwl_mac_ampdu_action(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
enum ieee80211_ampdu_mlme_action action,
@@ -3416,7 +3435,14 @@ static int iwl_mac_ampdu_action(struct ieee80211_hw *hw,
ret = 0;
break;
case IEEE80211_AMPDU_TX_OPERATIONAL:
- /* do nothing, return value ignored */
+ if (priv->cfg->use_rts_for_ht) {
+ /*
+ * switch to RTS/CTS if it is the prefer protection
+ * method for HT traffic
+ */
+ iwl_enable_rts_cts(priv);
+ }
+ ret = 0;
break;
}
mutex_unlock(&priv->mutex);
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
index 798f93e..2a7c399 100644
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
@@ -537,6 +537,15 @@ void iwl_bg_scan_completed(struct work_struct *work)
/* Since setting the TXPOWER may have been deferred while
* performing the scan, fire one off */
iwl_set_tx_power(priv, priv->tx_power_user_lmt, true);
+
+ /*
+ * Since setting the RXON may have been deferred while
+ * performing the scan, fire one off if needed
+ */
+ if (memcmp(&priv->active_rxon,
+ &priv->staging_rxon, sizeof(priv->staging_rxon)))
+ iwlcore_commit_rxon(priv);
+
out:
mutex_unlock(&priv->mutex);
--
1.7.0.4
^ permalink raw reply related
* [PATCH 7/8] iwlagn: reduce severity of disconnected antennas warning
From: Reinette Chatre @ 2010-06-25 22:43 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Reinette Chatre
In-Reply-To: <1277505781-25268-1-git-send-email-reinette.chatre@intel.com>
From: Reinette Chatre <reinette.chatre@intel.com>
This message is encountered regularly and we need to take a closer look at
the circumstances under which it is printed before presenting errors to
users.
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-agn-calib.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-calib.c b/drivers/net/wireless/iwlwifi/iwl-agn-calib.c
index 400eb31..eb052b0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-calib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-calib.c
@@ -843,10 +843,10 @@ void iwl_chain_noise_calibration(struct iwl_priv *priv,
if (active_chains != priv->hw_params.valid_rx_ant &&
active_chains != priv->chain_noise_data.active_chains)
- IWL_WARN(priv,
- "Detected that not all antennas are connected! "
- "Connected: %#x, valid: %#x.\n",
- active_chains, priv->hw_params.valid_rx_ant);
+ IWL_DEBUG_CALIB(priv,
+ "Detected that not all antennas are connected! "
+ "Connected: %#x, valid: %#x.\n",
+ active_chains, priv->hw_params.valid_rx_ant);
/* Save for use within RXON, TX, SCAN commands, etc. */
priv->chain_noise_data.active_chains = active_chains;
--
1.7.0.4
^ permalink raw reply related
* [PATCH 8/8] iwlwifi: add disable rf calibration support for 6000g2a and 6000g2b
From: Reinette Chatre @ 2010-06-25 22:43 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1277505781-25268-1-git-send-email-reinette.chatre@intel.com>
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Radio calibration (chain noise and sensitivity) should be allowed to
be disabled from debugfs if compiled with CONFIG_IWLWIFI_DEBUGFS. For both
6000g2a and 6000g2b, the parameters are missing in "cfg", which cause
user can not disable the radio calibration manually; add the support to
allow the operation.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-6000.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 61cf0b3..8577664 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -423,6 +423,8 @@ struct iwl_cfg iwl6000g2a_2abg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .sensitivity_calib_by_driver = true,
+ .chain_noise_calib_by_driver = true,
.need_dc_calib = true,
};
@@ -456,6 +458,8 @@ struct iwl_cfg iwl6000g2a_2bg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .sensitivity_calib_by_driver = true,
+ .chain_noise_calib_by_driver = true,
.need_dc_calib = true,
};
@@ -491,6 +495,8 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .sensitivity_calib_by_driver = true,
+ .chain_noise_calib_by_driver = true,
.need_dc_calib = true,
};
@@ -524,6 +530,8 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .sensitivity_calib_by_driver = true,
+ .chain_noise_calib_by_driver = true,
.need_dc_calib = true,
};
@@ -559,6 +567,8 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .sensitivity_calib_by_driver = true,
+ .chain_noise_calib_by_driver = true,
.need_dc_calib = true,
};
@@ -592,6 +602,8 @@ struct iwl_cfg iwl6000g2b_2bg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .sensitivity_calib_by_driver = true,
+ .chain_noise_calib_by_driver = true,
.need_dc_calib = true,
};
@@ -627,6 +639,8 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .sensitivity_calib_by_driver = true,
+ .chain_noise_calib_by_driver = true,
.need_dc_calib = true,
};
@@ -660,6 +674,8 @@ struct iwl_cfg iwl6000g2b_bg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .sensitivity_calib_by_driver = true,
+ .chain_noise_calib_by_driver = true,
.need_dc_calib = true,
};
--
1.7.0.4
^ permalink raw reply related
* [PATCH 4/8] iwlwifi: update LQ for bcast station on channel change
From: Reinette Chatre @ 2010-06-25 22:42 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Daniel Halperin, Reinette Chatre
In-Reply-To: <1277505781-25268-1-git-send-email-reinette.chatre@intel.com>
From: Daniel Halperin <dhalperi@cs.washington.edu>
The rate table in the bcast LQ is computed only when the station is
allocated, and chooses the lowest rate for the band. Because of when this
occurs, this is the 2.4 GHz band and uses the 0x420a (CCK, 1 Mbps) rate. In 5 GHz
beaconing mode, this rate will prevent beacons from being sent and any other
packets from being received.
We can fix this by re-initializing the bcast station's LQ command when the
channel is changed.
Signed-off-by: Daniel Halperin <dhalperi@cs.washington.edu>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-1000.c | 1 +
drivers/net/wireless/iwlwifi/iwl-4965.c | 1 +
drivers/net/wireless/iwlwifi/iwl-5000.c | 2 ++
drivers/net/wireless/iwlwifi/iwl-6000.c | 1 +
drivers/net/wireless/iwlwifi/iwl-core.c | 3 +++
drivers/net/wireless/iwlwifi/iwl-core.h | 1 +
drivers/net/wireless/iwlwifi/iwl-sta.c | 30 ++++++++++++++++++++++++++++++
drivers/net/wireless/iwlwifi/iwl-sta.h | 1 +
8 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index 24743b9..1daf159 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -217,6 +217,7 @@ static struct iwl_lib_ops iwl1000_lib = {
.set_ct_kill = iwl1000_set_ct_threshold,
},
.manage_ibss_station = iwlagn_manage_ibss_station,
+ .update_bcast_station = iwl_update_bcast_station,
.debugfs_ops = {
.rx_stats_read = iwl_ucode_rx_stats_read,
.tx_stats_read = iwl_ucode_tx_stats_read,
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 67526a1..1dd3bc4 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2280,6 +2280,7 @@ static struct iwl_lib_ops iwl4965_lib = {
.set_ct_kill = iwl4965_set_ct_threshold,
},
.manage_ibss_station = iwlagn_manage_ibss_station,
+ .update_bcast_station = iwl_update_bcast_station,
.debugfs_ops = {
.rx_stats_read = iwl_ucode_rx_stats_read,
.tx_stats_read = iwl_ucode_tx_stats_read,
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index fa2dbb5..b8f3e20 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -393,6 +393,7 @@ static struct iwl_lib_ops iwl5000_lib = {
.set_ct_kill = iwl5000_set_ct_threshold,
},
.manage_ibss_station = iwlagn_manage_ibss_station,
+ .update_bcast_station = iwl_update_bcast_station,
.debugfs_ops = {
.rx_stats_read = iwl_ucode_rx_stats_read,
.tx_stats_read = iwl_ucode_tx_stats_read,
@@ -455,6 +456,7 @@ static struct iwl_lib_ops iwl5150_lib = {
.set_ct_kill = iwl5150_set_ct_threshold,
},
.manage_ibss_station = iwlagn_manage_ibss_station,
+ .update_bcast_station = iwl_update_bcast_station,
.debugfs_ops = {
.rx_stats_read = iwl_ucode_rx_stats_read,
.tx_stats_read = iwl_ucode_tx_stats_read,
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index c909a9c..61cf0b3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -318,6 +318,7 @@ static struct iwl_lib_ops iwl6000_lib = {
.set_calib_version = iwl6000_set_calib_version,
},
.manage_ibss_station = iwlagn_manage_ibss_station,
+ .update_bcast_station = iwl_update_bcast_station,
.debugfs_ops = {
.rx_stats_read = iwl_ucode_rx_stats_read,
.tx_stats_read = iwl_ucode_tx_stats_read,
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 329e510..f47a58f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -2110,6 +2110,9 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)
iwl_set_flags_for_band(priv, conf->channel->band, priv->vif);
spin_unlock_irqrestore(&priv->lock, flags);
+ if (priv->cfg->ops->lib->update_bcast_station)
+ ret = priv->cfg->ops->lib->update_bcast_station(priv);
+
set_ch_out:
/* The list of supported rates and rate mask can be different
* for each band; since the band may have changed, reset
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index cdcb51d..15930e0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -196,6 +196,7 @@ struct iwl_lib_ops {
/* station management */
int (*manage_ibss_station)(struct iwl_priv *priv,
struct ieee80211_vif *vif, bool add);
+ int (*update_bcast_station)(struct iwl_priv *priv);
/* recover from tx queue stall */
void (*recover_from_tx_stall)(unsigned long data);
/* check for plcp health */
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
index 6a9cd08..9511f03 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
@@ -1259,6 +1259,36 @@ int iwl_alloc_bcast_station(struct iwl_priv *priv, bool init_lq)
}
EXPORT_SYMBOL_GPL(iwl_alloc_bcast_station);
+/**
+ * iwl_update_bcast_station - update broadcast station's LQ command
+ *
+ * Only used by iwlagn. Placed here to have all bcast station management
+ * code together.
+ */
+int iwl_update_bcast_station(struct iwl_priv *priv)
+{
+ unsigned long flags;
+ struct iwl_link_quality_cmd *link_cmd;
+ u8 sta_id = priv->hw_params.bcast_sta_id;
+
+ link_cmd = iwl_sta_alloc_lq(priv, sta_id);
+ if (!link_cmd) {
+ IWL_ERR(priv, "Unable to initialize rate scaling for bcast station.\n");
+ return -ENOMEM;
+ }
+
+ spin_lock_irqsave(&priv->sta_lock, flags);
+ if (priv->stations[sta_id].lq)
+ kfree(priv->stations[sta_id].lq);
+ else
+ IWL_DEBUG_INFO(priv, "Bcast station rate scaling has not been initialized yet.\n");
+ priv->stations[sta_id].lq = link_cmd;
+ spin_unlock_irqrestore(&priv->sta_lock, flags);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(iwl_update_bcast_station);
+
void iwl_dealloc_bcast_station(struct iwl_priv *priv)
{
unsigned long flags;
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.h b/drivers/net/wireless/iwlwifi/iwl-sta.h
index 619bb99..ba95b1a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.h
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.h
@@ -60,6 +60,7 @@ void iwl_restore_stations(struct iwl_priv *priv);
void iwl_clear_ucode_stations(struct iwl_priv *priv);
int iwl_alloc_bcast_station(struct iwl_priv *priv, bool init_lq);
void iwl_dealloc_bcast_station(struct iwl_priv *priv);
+int iwl_update_bcast_station(struct iwl_priv *priv);
int iwl_get_free_ucode_key_index(struct iwl_priv *priv);
int iwl_send_add_sta(struct iwl_priv *priv,
struct iwl_addsta_cmd *sta, u8 flags);
--
1.7.0.4
^ permalink raw reply related
* [PATCH 3/8] iwlwifi: add a mechanism to disable plcp error checking
From: Reinette Chatre @ 2010-06-25 22:42 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1277505781-25268-1-git-send-email-reinette.chatre@intel.com>
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
For some devices, especially the upcoming new devices, the plcp error
rate is different. Before the correct error rate can be determine, also
for the debugging purpose; add the mechanism to disable plcp error checking
which cause radio reset happen.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-3945.c | 5 +++++
drivers/net/wireless/iwlwifi/iwl-agn-rx.c | 6 ++++++
drivers/net/wireless/iwlwifi/iwl-debugfs.c | 4 ++--
drivers/net/wireless/iwlwifi/iwl-dev.h | 3 ++-
4 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 93d513e..a07310f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -406,6 +406,11 @@ static bool iwl3945_good_plcp_health(struct iwl_priv *priv,
unsigned int plcp_msec;
unsigned long plcp_received_jiffies;
+ if (priv->cfg->plcp_delta_threshold ==
+ IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE) {
+ IWL_DEBUG_RADIO(priv, "plcp_err check disabled\n");
+ return rc;
+ }
memcpy(¤t_stat, pkt->u.raw, sizeof(struct
iwl3945_notif_statistics));
/*
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c
index ad2bead..d54edc3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c
@@ -166,6 +166,12 @@ bool iwl_good_plcp_health(struct iwl_priv *priv,
unsigned int plcp_msec;
unsigned long plcp_received_jiffies;
+ if (priv->cfg->plcp_delta_threshold ==
+ IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE) {
+ IWL_DEBUG_RADIO(priv, "plcp_err check disabled\n");
+ return rc;
+ }
+
/*
* check for plcp_err and trigger radio reset if it exceeds
* the plcp error threshold plcp_delta.
diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
index cee3d12..7d9ffc1 100644
--- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
@@ -1430,10 +1430,10 @@ static ssize_t iwl_dbgfs_plcp_delta_write(struct file *file,
return -EFAULT;
if (sscanf(buf, "%d", &plcp) != 1)
return -EINVAL;
- if ((plcp <= IWL_MAX_PLCP_ERR_THRESHOLD_MIN) ||
+ if ((plcp < IWL_MAX_PLCP_ERR_THRESHOLD_MIN) ||
(plcp > IWL_MAX_PLCP_ERR_THRESHOLD_MAX))
priv->cfg->plcp_delta_threshold =
- IWL_MAX_PLCP_ERR_THRESHOLD_DEF;
+ IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE;
else
priv->cfg->plcp_delta_threshold = plcp;
return count;
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 1af845c..df07a14 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1036,11 +1036,12 @@ struct iwl_event_log {
* This is the threshold value of plcp error rate per 100mSecs. It is
* used to set and check for the validity of plcp_delta.
*/
-#define IWL_MAX_PLCP_ERR_THRESHOLD_MIN (0)
+#define IWL_MAX_PLCP_ERR_THRESHOLD_MIN (1)
#define IWL_MAX_PLCP_ERR_THRESHOLD_DEF (50)
#define IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF (100)
#define IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF (200)
#define IWL_MAX_PLCP_ERR_THRESHOLD_MAX (255)
+#define IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE (0)
#define IWL_DELAY_NEXT_FORCE_RF_RESET (HZ*3)
#define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5)
--
1.7.0.4
^ permalink raw reply related
* [PATCH 0/8] iwlwifi updates for 2.6.36
From: Reinette Chatre @ 2010-06-25 22:42 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Reinette Chatre
A variety of changes are included in this series. With the recent station
management changes the rate is not allocated correctly for broadcast
station if user happens to switch from 2.4 to 5 GHz. Fix this. We also
include a fix for the case when the user switches the rfkill state while
system hibernates. A recent patch introduced an error message with it is
learned that antennas are disconnected ... we since have seen this message
under various circumstances and reduce the severity here until our
understanding of the behavior is complete. We add some configuration
capabilities to driver to deal with requirements of various hardwares.
There is a potential issue at the moment where a move to RTS/CTS protection
can cause problems, this is reworked to set RTS/CTS mode when the
aggregation becomes operational ... which it when it is really needed.
Please note that I merged wireless-2.6 into wireless-next-2.6 since there
is a fix in wireless-2.6 ("iwlwifi: set TX_CMD_FLAG_PROT_REQUIRE_MSK
in tx_flag") that should be considered in a name change patch included in
this series.
These patches are also available from wireless-next-2.6 branch on
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git
Daniel Halperin (1):
iwlwifi: update LQ for bcast station on channel change
Johannes Berg (1):
iwlwifi: read rfkill during resume
Reinette Chatre (1):
iwlagn: reduce severity of disconnected antennas warning
Wey-Yi Guy (5):
iwlwifi: name change from signal protection flag
iwlwifi: enable DC calibration based on config parameter
iwlwifi: add a mechanism to disable plcp error checking
iwlwifi: turn on RTS/CTS after aggregation become operational
iwlwifi: add disable rf calibration support for 6000g2a and 6000g2b
drivers/net/wireless/iwlwifi/iwl-1000.c | 3 +
drivers/net/wireless/iwlwifi/iwl-3945.c | 5 +
drivers/net/wireless/iwlwifi/iwl-4965.c | 1 +
drivers/net/wireless/iwlwifi/iwl-5000.c | 7 +-
drivers/net/wireless/iwlwifi/iwl-6000.c | 160 ++++++--------------------
drivers/net/wireless/iwlwifi/iwl-agn-calib.c | 8 +-
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 17 +--
drivers/net/wireless/iwlwifi/iwl-agn-rx.c | 6 +
drivers/net/wireless/iwlwifi/iwl-agn.c | 28 +++++-
drivers/net/wireless/iwlwifi/iwl-commands.h | 30 ++++--
drivers/net/wireless/iwlwifi/iwl-core.c | 15 +++
drivers/net/wireless/iwlwifi/iwl-core.h | 2 +
drivers/net/wireless/iwlwifi/iwl-debugfs.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-dev.h | 3 +-
drivers/net/wireless/iwlwifi/iwl-eeprom.c | 3 +
drivers/net/wireless/iwlwifi/iwl-scan.c | 9 ++
drivers/net/wireless/iwlwifi/iwl-sta.c | 30 +++++
drivers/net/wireless/iwlwifi/iwl-sta.h | 1 +
19 files changed, 179 insertions(+), 155 deletions(-)
^ permalink raw reply
* [PATCH 1/8] iwlwifi: name change from signal protection flag
From: Reinette Chatre @ 2010-06-25 22:42 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1277505781-25268-1-git-send-email-reinette.chatre@intel.com>
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
This bit need to be set for both RTS/CTS or CTS-to-self protection, if
CTS-to-self is used, then uCode will check the RXON_FLG_SELF_CTS_EN
status. Change the name from TX_CMD_FLG_RTS_CTS_MSK to TX_CMD_FLAG_PROT_REQUIRE_MSK
to match the behavior of the bit setting.
Also update comments to reflect which hardware uses which of the TX command
flags.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-commands.h | 30 ++++++++++++++++++--------
2 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
index d89a11c..f06d1fe 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
@@ -214,7 +214,7 @@ static void iwlagn_chain_noise_reset(struct iwl_priv *priv)
static void iwlagn_rts_tx_cmd_flag(struct ieee80211_tx_info *info,
__le32 *tx_flags)
{
- *tx_flags |= TX_CMD_FLG_RTS_CTS_MSK;
+ *tx_flags |= TX_CMD_FLG_PROT_REQUIRE_MSK;
}
/* Calc max signal level (dBm) among 3 possible receivers */
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index 4984925..a304f77 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -1399,18 +1399,27 @@ struct iwl_rx_mpdu_res_start {
/* REPLY_TX Tx flags field */
-/* 1: Use RTS/CTS protocol or CTS-to-self if spec allows it
+/*
+ * 1: Use RTS/CTS protocol or CTS-to-self if spec allows it
* before this frame. if CTS-to-self required check
- * RXON_FLG_SELF_CTS_EN status. */
-#define TX_CMD_FLG_RTS_CTS_MSK cpu_to_le32(1 << 0)
+ * RXON_FLG_SELF_CTS_EN status.
+ * unused in 3945/4965, used in 5000 series and after
+ */
+#define TX_CMD_FLG_PROT_REQUIRE_MSK cpu_to_le32(1 << 0)
-/* 1: Use Request-To-Send protocol before this frame.
- * Mutually exclusive vs. TX_CMD_FLG_CTS_MSK. */
+/*
+ * 1: Use Request-To-Send protocol before this frame.
+ * Mutually exclusive vs. TX_CMD_FLG_CTS_MSK.
+ * used in 3945/4965, unused in 5000 series and after
+ */
#define TX_CMD_FLG_RTS_MSK cpu_to_le32(1 << 1)
-/* 1: Transmit Clear-To-Send to self before this frame.
+/*
+ * 1: Transmit Clear-To-Send to self before this frame.
* Driver should set this for AUTH/DEAUTH/ASSOC-REQ/REASSOC mgmnt frames.
- * Mutually exclusive vs. TX_CMD_FLG_RTS_MSK. */
+ * Mutually exclusive vs. TX_CMD_FLG_RTS_MSK.
+ * used in 3945/4965, unused in 5000 series and after
+ */
#define TX_CMD_FLG_CTS_MSK cpu_to_le32(1 << 2)
/* 1: Expect ACK from receiving station
@@ -1430,8 +1439,11 @@ struct iwl_rx_mpdu_res_start {
* Set when Txing a block-ack request frame. Also set TX_CMD_FLG_ACK_MSK. */
#define TX_CMD_FLG_IMM_BA_RSP_MASK cpu_to_le32(1 << 6)
-/* 1: Frame requires full Tx-Op protection.
- * Set this if either RTS or CTS Tx Flag gets set. */
+/*
+ * 1: Frame requires full Tx-Op protection.
+ * Set this if either RTS or CTS Tx Flag gets set.
+ * used in 3945/4965, unused in 5000 series and after
+ */
#define TX_CMD_FLG_FULL_TXOP_PROT_MSK cpu_to_le32(1 << 7)
/* Tx antenna selection field; used only for 3945, reserved (0) for 4965.
--
1.7.0.4
^ permalink raw reply related
* [PATCH 2/8] iwlwifi: enable DC calibration based on config parameter
From: Reinette Chatre @ 2010-06-25 22:42 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1277505781-25268-1-git-send-email-reinette.chatre@intel.com>
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Different devices have different calibration requirement,
some need DC calibration and some don't; make it a cfg parameter
for easy management.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-1000.c | 2 +
drivers/net/wireless/iwlwifi/iwl-5000.c | 5 +-
drivers/net/wireless/iwlwifi/iwl-6000.c | 143 ++++-------------------------
drivers/net/wireless/iwlwifi/iwl-core.h | 1 +
drivers/net/wireless/iwlwifi/iwl-eeprom.c | 3 +
5 files changed, 29 insertions(+), 125 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index dba91e0..24743b9 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -157,6 +157,8 @@ static int iwl1000_hw_set_hw_params(struct iwl_priv *priv)
BIT(IWL_CALIB_TX_IQ) |
BIT(IWL_CALIB_TX_IQ_PERD) |
BIT(IWL_CALIB_BASE_BAND);
+ if (priv->cfg->need_dc_calib)
+ priv->hw_params.calib_init_cfg |= BIT(IWL_CALIB_DC);
priv->hw_params.beacon_time_tsf_bits = IWLAGN_EXT_BEACON_TIME_POS;
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index c6ccc25..fa2dbb5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -249,10 +249,11 @@ static int iwl5150_hw_set_hw_params(struct iwl_priv *priv)
/* Set initial calibration set */
priv->hw_params.sens = &iwl5150_sensitivity;
priv->hw_params.calib_init_cfg =
- BIT(IWL_CALIB_DC) |
BIT(IWL_CALIB_LO) |
BIT(IWL_CALIB_TX_IQ) |
BIT(IWL_CALIB_BASE_BAND);
+ if (priv->cfg->need_dc_calib)
+ priv->hw_params.calib_init_cfg |= BIT(IWL_CALIB_DC);
priv->hw_params.beacon_time_tsf_bits = IWLAGN_EXT_BEACON_TIME_POS;
@@ -660,6 +661,7 @@ struct iwl_cfg iwl5150_agn_cfg = {
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl5150_abg_cfg = {
@@ -689,6 +691,7 @@ struct iwl_cfg iwl5150_abg_cfg = {
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
+ .need_dc_calib = true,
};
MODULE_FIRMWARE(IWL5000_MODULE_FIRMWARE(IWL5000_UCODE_API_MAX));
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index afdeec5..c909a9c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -84,9 +84,10 @@ static void iwl6000_set_ct_threshold(struct iwl_priv *priv)
}
/* Indicate calibration version to uCode. */
-static void iwl6050_set_calib_version(struct iwl_priv *priv)
+static void iwl6000_set_calib_version(struct iwl_priv *priv)
{
- if (priv->cfg->ops->lib->eeprom_ops.calib_version(priv) >= 6)
+ if (priv->cfg->need_dc_calib &&
+ (priv->cfg->ops->lib->eeprom_ops.calib_version(priv) >= 6))
iwl_set_bit(priv, CSR_GP_DRIVER_REG,
CSR_GP_DRIVER_REG_BIT_CALIB_VERSION6);
}
@@ -186,53 +187,8 @@ static int iwl6000_hw_set_hw_params(struct iwl_priv *priv)
BIT(IWL_CALIB_LO) |
BIT(IWL_CALIB_TX_IQ) |
BIT(IWL_CALIB_BASE_BAND);
-
- priv->hw_params.beacon_time_tsf_bits = IWLAGN_EXT_BEACON_TIME_POS;
-
- return 0;
-}
-
-static int iwl6050_hw_set_hw_params(struct iwl_priv *priv)
-{
- if (priv->cfg->mod_params->num_of_queues >= IWL_MIN_NUM_QUEUES &&
- priv->cfg->mod_params->num_of_queues <= IWLAGN_NUM_QUEUES)
- priv->cfg->num_of_queues =
- priv->cfg->mod_params->num_of_queues;
-
- priv->hw_params.max_txq_num = priv->cfg->num_of_queues;
- priv->hw_params.dma_chnl_num = FH50_TCSR_CHNL_NUM;
- priv->hw_params.scd_bc_tbls_size =
- priv->cfg->num_of_queues *
- sizeof(struct iwlagn_scd_bc_tbl);
- priv->hw_params.tfd_size = sizeof(struct iwl_tfd);
- priv->hw_params.max_stations = IWL5000_STATION_COUNT;
- priv->hw_params.bcast_sta_id = IWL5000_BROADCAST_ID;
-
- priv->hw_params.max_data_size = IWL60_RTC_DATA_SIZE;
- priv->hw_params.max_inst_size = IWL60_RTC_INST_SIZE;
-
- priv->hw_params.max_bsm_size = 0;
- priv->hw_params.ht40_channel = BIT(IEEE80211_BAND_2GHZ) |
- BIT(IEEE80211_BAND_5GHZ);
- priv->hw_params.rx_wrt_ptr_reg = FH_RSCSR_CHNL0_WPTR;
-
- priv->hw_params.tx_chains_num = num_of_ant(priv->cfg->valid_tx_ant);
- priv->hw_params.rx_chains_num = num_of_ant(priv->cfg->valid_rx_ant);
- priv->hw_params.valid_tx_ant = priv->cfg->valid_tx_ant;
- priv->hw_params.valid_rx_ant = priv->cfg->valid_rx_ant;
-
- if (priv->cfg->ops->lib->temp_ops.set_ct_kill)
- priv->cfg->ops->lib->temp_ops.set_ct_kill(priv);
-
- /* Set initial sensitivity parameters */
- /* Set initial calibration set */
- priv->hw_params.sens = &iwl6000_sensitivity;
- priv->hw_params.calib_init_cfg =
- BIT(IWL_CALIB_XTAL) |
- BIT(IWL_CALIB_DC) |
- BIT(IWL_CALIB_LO) |
- BIT(IWL_CALIB_TX_IQ) |
- BIT(IWL_CALIB_BASE_BAND);
+ if (priv->cfg->need_dc_calib)
+ priv->hw_params.calib_init_cfg |= BIT(IWL_CALIB_DC);
priv->hw_params.beacon_time_tsf_bits = IWLAGN_EXT_BEACON_TIME_POS;
@@ -359,6 +315,7 @@ static struct iwl_lib_ops iwl6000_lib = {
.temp_ops = {
.temperature = iwlagn_temperature,
.set_ct_kill = iwl6000_set_ct_threshold,
+ .set_calib_version = iwl6000_set_calib_version,
},
.manage_ibss_station = iwlagn_manage_ibss_station,
.debugfs_ops = {
@@ -397,79 +354,6 @@ static const struct iwl_ops iwl6000g2b_ops = {
.led = &iwlagn_led_ops,
};
-static struct iwl_lib_ops iwl6050_lib = {
- .set_hw_params = iwl6050_hw_set_hw_params,
- .txq_update_byte_cnt_tbl = iwlagn_txq_update_byte_cnt_tbl,
- .txq_inval_byte_cnt_tbl = iwlagn_txq_inval_byte_cnt_tbl,
- .txq_set_sched = iwlagn_txq_set_sched,
- .txq_agg_enable = iwlagn_txq_agg_enable,
- .txq_agg_disable = iwlagn_txq_agg_disable,
- .txq_attach_buf_to_tfd = iwl_hw_txq_attach_buf_to_tfd,
- .txq_free_tfd = iwl_hw_txq_free_tfd,
- .txq_init = iwl_hw_tx_queue_init,
- .rx_handler_setup = iwlagn_rx_handler_setup,
- .setup_deferred_work = iwlagn_setup_deferred_work,
- .is_valid_rtc_data_addr = iwlagn_hw_valid_rtc_data_addr,
- .load_ucode = iwlagn_load_ucode,
- .dump_nic_event_log = iwl_dump_nic_event_log,
- .dump_nic_error_log = iwl_dump_nic_error_log,
- .dump_csr = iwl_dump_csr,
- .dump_fh = iwl_dump_fh,
- .init_alive_start = iwlagn_init_alive_start,
- .alive_notify = iwlagn_alive_notify,
- .send_tx_power = iwlagn_send_tx_power,
- .update_chain_flags = iwl_update_chain_flags,
- .set_channel_switch = iwl6000_hw_channel_switch,
- .apm_ops = {
- .init = iwl_apm_init,
- .stop = iwl_apm_stop,
- .config = iwl6000_nic_config,
- .set_pwr_src = iwl_set_pwr_src,
- },
- .eeprom_ops = {
- .regulatory_bands = {
- EEPROM_REG_BAND_1_CHANNELS,
- EEPROM_REG_BAND_2_CHANNELS,
- EEPROM_REG_BAND_3_CHANNELS,
- EEPROM_REG_BAND_4_CHANNELS,
- EEPROM_REG_BAND_5_CHANNELS,
- EEPROM_6000_REG_BAND_24_HT40_CHANNELS,
- EEPROM_REG_BAND_52_HT40_CHANNELS
- },
- .verify_signature = iwlcore_eeprom_verify_signature,
- .acquire_semaphore = iwlcore_eeprom_acquire_semaphore,
- .release_semaphore = iwlcore_eeprom_release_semaphore,
- .calib_version = iwlagn_eeprom_calib_version,
- .query_addr = iwlagn_eeprom_query_addr,
- .update_enhanced_txpower = iwlcore_eeprom_enhanced_txpower,
- },
- .post_associate = iwl_post_associate,
- .isr = iwl_isr_ict,
- .config_ap = iwl_config_ap,
- .temp_ops = {
- .temperature = iwlagn_temperature,
- .set_ct_kill = iwl6000_set_ct_threshold,
- .set_calib_version = iwl6050_set_calib_version,
- },
- .manage_ibss_station = iwlagn_manage_ibss_station,
- .debugfs_ops = {
- .rx_stats_read = iwl_ucode_rx_stats_read,
- .tx_stats_read = iwl_ucode_tx_stats_read,
- .general_stats_read = iwl_ucode_general_stats_read,
- },
- .recover_from_tx_stall = iwl_bg_monitor_recover,
- .check_plcp_health = iwl_good_plcp_health,
- .check_ack_health = iwl_good_ack_health,
-};
-
-static const struct iwl_ops iwl6050_ops = {
- .lib = &iwl6050_lib,
- .hcmd = &iwlagn_hcmd,
- .utils = &iwlagn_hcmd_utils,
- .led = &iwlagn_led_ops,
-};
-
-
struct iwl_cfg iwl6000g2a_2agn_cfg = {
.name = "6000 Series 2x2 AGN Gen2a",
.fw_name_pre = IWL6000G2A_FW_PRE,
@@ -505,6 +389,7 @@ struct iwl_cfg iwl6000g2a_2agn_cfg = {
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6000g2a_2abg_cfg = {
@@ -537,6 +422,7 @@ struct iwl_cfg iwl6000g2a_2abg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6000g2a_2bg_cfg = {
@@ -569,6 +455,7 @@ struct iwl_cfg iwl6000g2a_2bg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6000g2b_2agn_cfg = {
@@ -603,6 +490,7 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6000g2b_2abg_cfg = {
@@ -635,6 +523,7 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6000g2b_2bgn_cfg = {
@@ -669,6 +558,7 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6000g2b_2bg_cfg = {
@@ -701,6 +591,7 @@ struct iwl_cfg iwl6000g2b_2bg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6000g2b_bgn_cfg = {
@@ -735,6 +626,7 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6000g2b_bg_cfg = {
@@ -767,6 +659,7 @@ struct iwl_cfg iwl6000g2b_bg_cfg = {
.chain_noise_scale = 1000,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.max_event_log_size = 512,
+ .need_dc_calib = true,
};
/*
@@ -885,7 +778,7 @@ struct iwl_cfg iwl6050_2agn_cfg = {
.ucode_api_max = IWL6050_UCODE_API_MAX,
.ucode_api_min = IWL6050_UCODE_API_MIN,
.sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
- .ops = &iwl6050_ops,
+ .ops = &iwl6000_ops,
.eeprom_size = OTP_LOW_IMAGE_SIZE,
.eeprom_ver = EEPROM_6050_EEPROM_VERSION,
.eeprom_calib_ver = EEPROM_6050_TX_POWER_VERSION,
@@ -914,6 +807,7 @@ struct iwl_cfg iwl6050_2agn_cfg = {
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6050_2abg_cfg = {
@@ -922,7 +816,7 @@ struct iwl_cfg iwl6050_2abg_cfg = {
.ucode_api_max = IWL6050_UCODE_API_MAX,
.ucode_api_min = IWL6050_UCODE_API_MIN,
.sku = IWL_SKU_A|IWL_SKU_G,
- .ops = &iwl6050_ops,
+ .ops = &iwl6000_ops,
.eeprom_size = OTP_LOW_IMAGE_SIZE,
.eeprom_ver = EEPROM_6050_EEPROM_VERSION,
.eeprom_calib_ver = EEPROM_6050_TX_POWER_VERSION,
@@ -949,6 +843,7 @@ struct iwl_cfg iwl6050_2abg_cfg = {
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
+ .need_dc_calib = true,
};
struct iwl_cfg iwl6000_3agn_cfg = {
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 5e72d74..cdcb51d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -330,6 +330,7 @@ struct iwl_cfg {
const bool chain_noise_calib_by_driver;
u8 scan_rx_antennas[IEEE80211_NUM_BANDS];
u8 scan_tx_antennas[IEEE80211_NUM_BANDS];
+ const bool need_dc_calib;
};
/***************************
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.c b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
index ee11452..a45d02e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-eeprom.c
+++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.c
@@ -629,6 +629,9 @@ int iwl_eeprom_check_version(struct iwl_priv *priv)
calib_ver < priv->cfg->eeprom_calib_ver)
goto err;
+ IWL_INFO(priv, "device EEPROM VER=0x%x, CALIB=0x%x\n",
+ eeprom_ver, calib_ver);
+
return 0;
err:
IWL_ERR(priv, "Unsupported (too old) EEPROM VER=0x%x < 0x%x CALIB=0x%x < 0x%x\n",
--
1.7.0.4
^ permalink raw reply related
* Re: mesh configuration information element is wrong?
From: Iuri Diniz @ 2010-06-25 22:39 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <AANLkTimeR5kQX2hSNw0Ud0QOF0-nsqCFMkSNul9wwa7C@mail.gmail.com>
On Fri, Jun 25, 2010 at 2:43 PM, Iuri Diniz <iuridiniz@gmail.com> wrote:
> I'm analyzing the 802.11s code and I think I've found that mesh
> configuration information element has wrongs sizes.
>
> It is not according to my copy of 802.11s draft 3.
It seems that (in the past) the code had that sizes I think right.
http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=blobdiff;f=net/mac80211/mesh.c;h=c8a4f19ed13bb810a97bb5e25200a74cdd55a31c;hp=79425182c2903a70f355f1bdb34fe9fe8239fe05;hb=10f8f42ece65ba964ca14e794e5f45ad98d56cf1;hpb=8f2fda9594f083981ad54c1994863875fe680925
so I'll assume that the last draft has changed the size of this IE.
But could someone with access to the last draft draft confirm it?
Sorry for annoying you guys, I don't have the last draft.
--
Iuri Diniz
http://iuridiniz.com [Sou um agitador, não um advogado]
http://blog.igdium.com [Linux on Limbo]
^ permalink raw reply
* Compat-wireless release for 2010-06-25 is baked
From: Compat-wireless cronjob account @ 2010-06-25 19:03 UTC (permalink / raw)
To: linux-wireless, linux-bluetooth
>From git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat-wireless-2.6
87dca92..8a97897 master -> origin/master
>From git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/compat
b6af507..126c387 master -> origin/master
>From git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next
2e58c02..138f35f history -> origin/history
+ df17781...c3116ae master -> origin/master (forced update)
* [new tag] next-20100625 -> next-20100625
cat: /var/opt/compat/compat-wireless-2.6/compat_version: No such file or directory
cat: compat_base_tree: No such file or directory
cat: compat_base_tree_version: No such file or directory
cat: compat_version: No such file or directory
cat: /var/opt/compat/compat-wireless-2.6/compat_version: No such file or directory
scripts/Makefile.clean:17: /var/opt/compat/compat-wireless-2.6/drivers/net/wireless/hostap/Makefile: No such file or directory
make[4]: *** No rule to make target `/var/opt/compat/compat-wireless-2.6/drivers/net/wireless/hostap/Makefile'. Stop.
make[3]: *** [/var/opt/compat/compat-wireless-2.6/drivers/net/wireless/hostap] Error 2
make[2]: *** [/var/opt/compat/compat-wireless-2.6/drivers/net/wireless] Error 2
make[1]: *** [_clean_/var/opt/compat/compat-wireless-2.6] Error 2
make: *** [clean] Error 2
compat-wireless code metrics
494345 - Total upstream lines of code being pulled
1407 - backport code changes
1174 - backport code additions
233 - backport code deletions
5765 - backport from compat module
7172 - total backport code
1.4508 - % of code consists of backport work
1218 - Crap changes not yet posted
1179 - Crap additions not yet posted
39 - Crap deletions not yet posted
0.2464 - % of crap code
Base tree: linux-next.git
Base tree version: next-20100625
compat-wireless release: compat-wireless-2010-06-17-6-g8a97897
^ permalink raw reply
* Re: intel 5100/iwlagn bug in 2.6.35-rc2 during large file transfer
From: reinette chatre @ 2010-06-25 18:57 UTC (permalink / raw)
To: Richard Farina; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <4C24D926.7010806@gmail.com>
On Fri, 2010-06-25 at 09:28 -0700, Richard Farina wrote:
> reinette chatre wrote:
> > On Thu, 2010-06-24 at 10:30 -0700, Richard Farina wrote:
> I've added this patch to my system. I'm about 5GB into a download right
> now and here are the issues. First, and relatively quickly this line
> showed up in dmesg:
> [ 1589.605470] CE: hpet increased min_delta_ns to 7500 nsec
I googled a bit for this string and found a few mentions where it is
connected to system hangs. I do not know if you are running into the
same issue as these people (did not spend much time reading through all
the bug reports), but I did notice that sometimes the people were able
to work around the issue by booting with a different clock source (eg.
clocksource=jiffies) or disabling hpet (eg. hpet=disable). I am very
unfamiliar with this aspect so if this is giving you issues I'd propose
you go to lkml or kernel.org bugzilla.
> I've been carefully monitoring my system and I have loads of RAM spare.
> Things have been much smoother but the system still freezes up for a few
> seconds at a time. Mind you, this is an improvement as the freezes are
> slightly less frequent and before the patch the freezes were hitting the
> 120s hangcheck timer in the kernel and now they last like 20-60 seconds.
>
> I finally managed to trigger the oops again but it does seem that it
> took much longer this time. Pasted at the bottom. (please note the
> timestamps included are accurate to show the time difference bettween
> the hpet warning and the oops).
They seem pretty far apart so may not be related ...
>
> What else can I do to provide useful information? Or do you just want to
> update the thresholds again?
Sure ... let's try that. Patch is below. I also made things less noisy
when it does fail in atomic.
>
> Thanks,
> Rick Farina
>
> PS> The patch does look at bit odd as you change RX_LOW_WATERMARK while
> at the same time removing one of the places that uses it. I'm sure that
> is on purpose just seems odd to me as I don't understand.
That was on purpose. Since I increased the watermark I did not want to
increase the threshold used to print warnings to the user also. That is
why I just made that a hard 8 so that if memory allocation fails we will
only start seeing the dumps when we are down to 8 buffers and not the
new high watermark.
---
drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 5 +++--
drivers/net/wireless/iwlwifi/iwl-fh.h | 2 +-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index 0f292a2..2815ee7 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -613,7 +613,8 @@ void iwlagn_rx_allocate(struct iwl_priv *priv, gfp_t priority)
}
spin_unlock_irqrestore(&rxq->lock, flags);
- if (rxq->free_count > RX_LOW_WATERMARK)
+ if ((priority == GFP_ATOMIC) ||
+ (rxq->free_count > RX_LOW_WATERMARK / 4))
gfp_mask |= __GFP_NOWARN;
if (priv->hw_params.rx_page_order > 0)
@@ -627,7 +628,7 @@ void iwlagn_rx_allocate(struct iwl_priv *priv, gfp_t priority)
"order: %d\n",
priv->hw_params.rx_page_order);
- if ((rxq->free_count <= RX_LOW_WATERMARK) &&
+ if ((rxq->free_count <= RX_LOW_WATERMARK / 4) &&
net_ratelimit())
IWL_CRIT(priv, "Failed to alloc_pages with %s. Only %u free buffers remaining.\n",
priority == GFP_ATOMIC ? "GFP_ATOMIC" : "GFP_KERNEL",
diff --git a/drivers/net/wireless/iwlwifi/iwl-fh.h b/drivers/net/wireless/iwlwifi/iwl-fh.h
index 113c366..431bc58 100644
--- a/drivers/net/wireless/iwlwifi/iwl-fh.h
+++ b/drivers/net/wireless/iwlwifi/iwl-fh.h
@@ -426,7 +426,7 @@
* RX related structures and functions
*/
#define RX_FREE_BUFFERS 64
-#define RX_LOW_WATERMARK 8
+#define RX_LOW_WATERMARK 128
/* Size of one Rx buffer in host DRAM */
#define IWL_RX_BUF_SIZE_3K (3 * 1000) /* 3945 only */
--
1.7.0.4
^ permalink raw reply related
* Re: [PATCH 2/2] wl1251: fix ELP_CTRL register reads
From: Denis 'GNUtoo' Carikli @ 2010-06-25 18:06 UTC (permalink / raw)
To: Grazvydas Ignotas
Cc: Bob Copeland, Kalle Valo, John W.Linville, linux-wireless
In-Reply-To: <1277481694.2712.7.camel@gnutoo-laptop>
On Fri, 2010-06-25 at 18:01 +0200, Denis 'GNUtoo' Carikli wrote:
> [ 2132.599578] wl1251: cmd configure
> [ 2132.619567] wl1251: acx wake up conditions
> [ 2132.619628] wl1251: cmd configure
> [ 2132.639587] wl1251: cmd set ps mode
> [ 2132.640747] wl1251: sleep auth psm/elp
> [ 2132.640808] wl1251: acx sleep auth
> [ 2132.640808] wl1251: cmd configure
> [ 2132.650268] wl1251: elp work
> [ 2132.650299] wl1251: chip to elp
> [ 2133.239471] wl1251: IRQ
> [ 2133.239654] wl1251: IRQ work
> [ 2133.239654] wl1251: waking up chip from elp
> [ 2133.239715] wl1251: wakeup time: 0 ms
does it mean that here it works?
> [ 2133.239868] wl1251: intr: 0x3
> [ 2133.239929] wl1251: RX: FW +1
> [ 2133.239929] wl1251: RX counter: 7
> [ 2133.239959] wl1251: WL1251_ACX_INTR_RX0_DATA
> [ 2133.240081] wl1251: rx skb 0xc61c3480: 88 B
> [ 2133.240203] wl1251: WL1251_ACX_INTR_TX_RESULT
> [ 2133.240478] wl1251: tx status id 0 skb 0xc635f480 failures 0 rate
> 0x1
> status 0x0 ()
> [ 2133.251251] wl1251: elp work
> [ 2133.264434] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2133.479278] wlan0: no IPv6 routers present
> [ 2134.269470] mmc0: Command CRC error
> [ 2134.269561] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> [ 2135.284484] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2136.289428] mmc0: Command CRC error
> [ 2136.289489] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> [ 2137.304504] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2138.309478] mmc0: Command CRC error
> [ 2138.309539] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> [ 2139.324523] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2140.329437] mmc0: Command CRC error
> [ 2140.329498] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> [ 2141.344512] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2142.349456] mmc0: Command CRC error
> [ 2142.349548] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> [ 2143.364501] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2144.369476] mmc0: Command CRC error
> [ 2144.369537] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> [ 2145.384490] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2146.389404] mmc0: Command CRC error
> [ 2146.389495] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> [ 2147.404541] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2148.409454] mmc0: Command CRC error
> [ 2148.409545] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> [ 2149.424530] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2150.429534] mmc0: Command CRC error
> [ 2150.429595] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> [ 2151.444488] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> [ 2152.449432] mmc0: Command CRC error
> [ 2152.449523] mmc0:0001: error -84 reading SDIO_CCCR_INTx
and that here it doesn't anymore?
> [ 2152.969360] wl1251: mac80211 config ch 7 psm off power 20
> [ 2152.969421] wl1251: waking up chip from elp
> [ 2152.989410] wl1251: wakeup time: 20 ms
> [ 2152.989440] wl1251: psm disabled
> [ 2152.989471] wl1251: leaving psm
> [ 2152.989471] wl1251: sleep auth cam
Denis.
^ permalink raw reply
* Fwd: mesh configuration information element is wrong?
From: Iuri Diniz @ 2010-06-25 17:43 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <AANLkTinHfFVr45OV3V6CT9auK3L-JfrCYUMQpeo9toTw@mail.gmail.com>
Hello folks,
I'm analyzing the 802.11s code and I think I've found that mesh
configuration information element has wrongs sizes.
It is not according to my copy of 802.11s draft 3.
on linux-wireless-testing/linux/include/ieee80211.h we have:
--------
/**
* struct ieee80211_meshconf_ie
*
* This structure refers to "Mesh Configuration information element"
*/
struct ieee80211_meshconf_ie {
u8 meshconf_psel;
u8 meshconf_pmetric;
u8 meshconf_congest;
u8 meshconf_synch;
u8 meshconf_auth;
u8 meshconf_form;
u8 meshconf_cap;
} __attribute__ ((packed));
----------
All fields have 1 byte, but according to
http://i45.tinypic.com/4ghhd1.jpg some of they must have 4 or 2 bytes
the function mesh.c:mesh_mgmt_ies_add uses those wrong sizes to
prepare the management frame.
Is there a new draft? or is there any reason to use those sizes?
(March 2009) Draft 3 802.11s MESH CONFIGURATION ELEMENT:
http://i45.tinypic.com/4ghhd1.jpg
--
Iuri Diniz
http://iuridiniz.com [Sou um agitador, não um advogado]
http://blog.igdium.com [Linux on Limbo]
^ permalink raw reply
* Re: intel 5100/iwlagn bug in 2.6.35-rc2 during large file transfer
From: Richard Farina @ 2010-06-25 16:28 UTC (permalink / raw)
To: reinette chatre; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <1277401731.25793.2391.camel@rchatre-DESK>
reinette chatre wrote:
> On Thu, 2010-06-24 at 10:30 -0700, Richard Farina wrote:
>
>> There were two compat-wireless releases for 2.6.35_rc2 because Luis had
>> asked me to test and then he changed it for the official release. I'll
>> use the official 2.6.35_rc2 release for the current testing so if there
>> are any patches you wish to toss my way please base them on that. The
>> other option is you tell me what to do, I can run any kernel, any git
>> snapshot, whatever you say. Like I said, all I have to do is download
>> something or transfer something large so it is pretty easily
>> reproducible here so I'll test whatever you like.
>>
>
>
> Could you please try out this patch? It is based on the latest linux-2.6
> so should apply cleanly to your latest 2.6.35 stable compat.
>
>
I've added this patch to my system. I'm about 5GB into a download right
now and here are the issues. First, and relatively quickly this line
showed up in dmesg:
[ 1589.605470] CE: hpet increased min_delta_ns to 7500 nsec
I've been carefully monitoring my system and I have loads of RAM spare.
Things have been much smoother but the system still freezes up for a few
seconds at a time. Mind you, this is an improvement as the freezes are
slightly less frequent and before the patch the freezes were hitting the
120s hangcheck timer in the kernel and now they last like 20-60 seconds.
I finally managed to trigger the oops again but it does seem that it
took much longer this time. Pasted at the bottom. (please note the
timestamps included are accurate to show the time difference bettween
the hpet warning and the oops).
What else can I do to provide useful information? Or do you just want to
update the thresholds again?
Thanks,
Rick Farina
PS> The patch does look at bit odd as you change RX_LOW_WATERMARK while
at the same time removing one of the places that uses it. I'm sure that
is on purpose just seems odd to me as I don't understand.
[ 4705.404568] iwlagn 0000:02:00.0: Failed to alloc_pages with
GFP_ATOMIC. Only 14 free buffers remaining.
[ 4705.404586] swapper: page allocation failure. order:1, mode:0x4020
[ 4705.404589] Pid: 0, comm: swapper Not tainted 2.6.34-pentoo-r2 #2
[ 4705.404591] Call Trace:
[ 4705.404593] <IRQ> [<ffffffff810984c0>]
__alloc_pages_nodemask+0x571/0x5b9
[ 4705.404614] [<ffffffffa05162f3>] iwlagn_rx_allocate+0x98/0x2e0 [iwlagn]
[ 4705.404622] [<ffffffffa051668c>] iwlagn_rx_replenish_now+0x16/0x23
[iwlagn]
[ 4705.404628] [<ffffffffa0500cc6>] iwl_rx_handle+0x4a6/0x4c2 [iwlagn]
[ 4705.404632] [<ffffffff8103156c>] ? __wake_up_common+0x49/0x7f
[ 4705.404639] [<ffffffffa0502766>] iwl_irq_tasklet+0xb0e/0xecd [iwlagn]
[ 4705.404644] [<ffffffff8170ab2f>] ? _raw_spin_unlock_irq+0x26/0x28
[ 4705.404650] [<ffffffffa050a7ef>] ? iwl_isr_ict+0x8e7/0xa49 [iwlagn]
[ 4705.404653] [<ffffffff81044ca0>] tasklet_action+0x6f/0xba
[ 4705.404657] [<ffffffff810193dc>] ? lapic_next_event+0x18/0x1c
[ 4705.404660] [<ffffffff810456d7>] __do_softirq+0x91/0x11a
[ 4705.404664] [<ffffffff8100384c>] call_softirq+0x1c/0x28
[ 4705.404666] [<ffffffff8100550b>] do_softirq+0x33/0x68
[ 4705.404669] [<ffffffff810453d4>] irq_exit+0x36/0x87
[ 4705.404672] [<ffffffff81004bf0>] do_IRQ+0xa7/0xbe
[ 4705.404675] [<ffffffff8170af13>] ret_from_intr+0x0/0xa
[ 4705.404677] <EOI> [<ffffffff814f2453>] ?
acpi_idle_enter_simple+0x150/0x17b
[ 4705.404684] [<ffffffff814f2449>] ? acpi_idle_enter_simple+0x146/0x17b
[ 4705.404689] [<ffffffff816035c4>] cpuidle_idle_call+0x8b/0xc3
[ 4705.404692] [<ffffffff81001ca7>] cpu_idle+0xa6/0xe7
[ 4705.404696] [<ffffffff81003750>] ? kernel_thread_helper+0x0/0x10
[ 4705.404700] [<ffffffff816ecbc1>] rest_init+0xb5/0xba
[ 4705.404704] [<ffffffff81acbb65>] start_kernel+0x3f2/0x3fd
[ 4705.404707] [<ffffffff81acb0b6>] x86_64_start_reservations+0xb3/0xb7
[ 4705.404710] [<ffffffff81acb19a>] x86_64_start_kernel+0xe0/0xe7
[ 4705.404712] Mem-Info:
[ 4705.404714] DMA per-cpu:
[ 4705.404716] CPU 0: hi: 0, btch: 1 usd: 0
[ 4705.404718] CPU 1: hi: 0, btch: 1 usd: 0
[ 4705.404719] DMA32 per-cpu:
[ 4705.404721] CPU 0: hi: 186, btch: 31 usd: 160
[ 4705.404723] CPU 1: hi: 186, btch: 31 usd: 154
[ 4705.404724] Normal per-cpu:
[ 4705.404726] CPU 0: hi: 186, btch: 31 usd: 145
[ 4705.404728] CPU 1: hi: 186, btch: 31 usd: 185
[ 4705.404732] active_anon:341531 inactive_anon:114822 isolated_anon:0
[ 4705.404733] active_file:153488 inactive_file:295800 isolated_file:210
[ 4705.404734] unevictable:23 dirty:14035 writeback:28555 unstable:33013
[ 4705.404735] free:6788 slab_reclaimable:9432 slab_unreclaimable:12868
[ 4705.404736] mapped:37668 shmem:12218 pagetables:3822 bounce:0
[ 4705.404742] DMA free:15644kB min:28kB low:32kB high:40kB
active_anon:0kB inactive_anon:0kB active_file:120kB inactive_file:60kB
unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15708kB
mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB
slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB
pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.404747] lowmem_reserve[]: 0 2900 3910 3910
[ 4705.404755] DMA32 free:10748kB min:5924kB low:7404kB high:8884kB
active_anon:1238044kB inactive_anon:323152kB active_file:347988kB
inactive_file:909448kB unevictable:0kB isolated(anon):0kB
isolated(file):576kB present:2970488kB mlocked:0kB dirty:45440kB
writeback:92884kB mapped:8036kB shmem:14132kB slab_reclaimable:15944kB
slab_unreclaimable:26600kB kernel_stack:104kB pagetables:3688kB
unstable:101736kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.404761] lowmem_reserve[]: 0 0 1010 1010
[ 4705.404768] Normal free:760kB min:2060kB low:2572kB high:3088kB
active_anon:128080kB inactive_anon:136136kB active_file:265844kB
inactive_file:273692kB unevictable:92kB isolated(anon):0kB
isolated(file):264kB present:1034240kB mlocked:0kB dirty:10700kB
writeback:21336kB mapped:142636kB shmem:34740kB slab_reclaimable:21784kB
slab_unreclaimable:24864kB kernel_stack:2160kB pagetables:11600kB
unstable:30316kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.404774] lowmem_reserve[]: 0 0 0 0
[ 4705.404777] DMA: 3*4kB 2*8kB 0*16kB 2*32kB 3*64kB 0*128kB 2*256kB
1*512kB 2*1024kB 2*2048kB 2*4096kB = 15644kB
[ 4705.404785] DMA32: 2440*4kB 78*8kB 0*16kB 0*32kB 1*64kB 1*128kB
1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10832kB
[ 4705.404792] Normal: 76*4kB 11*8kB 17*16kB 3*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 760kB
[ 4705.404800] 461661 total pagecache pages
[ 4705.404801] 0 pages in swap cache
[ 4705.404803] Swap cache stats: add 0, delete 0, find 0/0
[ 4705.404804] Free swap = 4200992kB
[ 4705.404806] Total swap = 4200992kB
[ 4705.419628] 1048560 pages RAM
[ 4705.419630] 83243 pages reserved
[ 4705.419632] 626146 pages shared
[ 4705.419633] 399708 pages non-shared
[ 4705.419637] iwlagn 0000:02:00.0: Failed to alloc_pages with
GFP_ATOMIC. Only 5 free buffers remaining.
[ 4705.419690] swapper: page allocation failure. order:1, mode:0x4020
[ 4705.419694] Pid: 0, comm: swapper Not tainted 2.6.34-pentoo-r2 #2
[ 4705.419696] Call Trace:
[ 4705.419698] <IRQ> [<ffffffff810984c0>]
__alloc_pages_nodemask+0x571/0x5b9
[ 4705.419717] [<ffffffffa05162f3>] iwlagn_rx_allocate+0x98/0x2e0 [iwlagn]
[ 4705.419722] [<ffffffff810bebf8>] ? discard_slab+0x31/0x33
[ 4705.419727] [<ffffffff8147e871>] ? is_swiotlb_buffer+0x2e/0x3b
[ 4705.419735] [<ffffffffa051668c>] iwlagn_rx_replenish_now+0x16/0x23
[iwlagn]
[ 4705.419742] [<ffffffffa0500ca1>] iwl_rx_handle+0x481/0x4c2 [iwlagn]
[ 4705.419747] [<ffffffff8162c7b6>] ? __kfree_skb+0x19/0x7c
[ 4705.419753] [<ffffffffa0502766>] iwl_irq_tasklet+0xb0e/0xecd [iwlagn]
[ 4705.419757] [<ffffffff8162c01f>] ? skb_dequeue+0x5f/0x6b
[ 4705.419761] [<ffffffff81044ca0>] tasklet_action+0x6f/0xba
[ 4705.419765] [<ffffffff810456d7>] __do_softirq+0x91/0x11a
[ 4705.419769] [<ffffffff8100384c>] call_softirq+0x1c/0x28
[ 4705.419773] [<ffffffff8100550b>] do_softirq+0x33/0x68
[ 4705.419776] [<ffffffff810453d4>] irq_exit+0x36/0x87
[ 4705.419779] [<ffffffff81004bf0>] do_IRQ+0xa7/0xbe
[ 4705.419784] [<ffffffff8170af13>] ret_from_intr+0x0/0xa
[ 4705.419786] <EOI> [<ffffffff814f2453>] ?
acpi_idle_enter_simple+0x150/0x17b
[ 4705.419794] [<ffffffff814f2449>] ? acpi_idle_enter_simple+0x146/0x17b
[ 4705.419799] [<ffffffff816035c4>] cpuidle_idle_call+0x8b/0xc3
[ 4705.419803] [<ffffffff81001ca7>] cpu_idle+0xa6/0xe7
[ 4705.419807] [<ffffffff81003750>] ? kernel_thread_helper+0x0/0x10
[ 4705.419811] [<ffffffff816ecbc1>] rest_init+0xb5/0xba
[ 4705.419816] [<ffffffff81acbb65>] start_kernel+0x3f2/0x3fd
[ 4705.419820] [<ffffffff81acb0b6>] x86_64_start_reservations+0xb3/0xb7
[ 4705.419823] [<ffffffff81acb19a>] x86_64_start_kernel+0xe0/0xe7
[ 4705.419825] Mem-Info:
[ 4705.419827] DMA per-cpu:
[ 4705.419830] CPU 0: hi: 0, btch: 1 usd: 0
[ 4705.419832] CPU 1: hi: 0, btch: 1 usd: 0
[ 4705.419833] DMA32 per-cpu:
[ 4705.419835] CPU 0: hi: 186, btch: 31 usd: 160
[ 4705.419838] CPU 1: hi: 186, btch: 31 usd: 155
[ 4705.419839] Normal per-cpu:
[ 4705.419841] CPU 0: hi: 186, btch: 31 usd: 151
[ 4705.419844] CPU 1: hi: 186, btch: 31 usd: 185
[ 4705.419848] active_anon:341531 inactive_anon:114822 isolated_anon:0
[ 4705.419849] active_file:153488 inactive_file:295800 isolated_file:210
[ 4705.419850] unevictable:23 dirty:14035 writeback:28555 unstable:33013
[ 4705.419851] free:6788 slab_reclaimable:9432 slab_unreclaimable:12851
[ 4705.419852] mapped:37668 shmem:12218 pagetables:3822 bounce:0
[ 4705.419859] DMA free:15644kB min:28kB low:32kB high:40kB
active_anon:0kB inactive_anon:0kB active_file:120kB inactive_file:60kB
unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15708kB
mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB
slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB
pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.419864] lowmem_reserve[]: 0 2900 3910 3910
[ 4705.419874] DMA32 free:10748kB min:5924kB low:7404kB high:8884kB
active_anon:1238044kB inactive_anon:323152kB active_file:347988kB
inactive_file:909448kB unevictable:0kB isolated(anon):0kB
isolated(file):576kB present:2970488kB mlocked:0kB dirty:45440kB
writeback:92884kB mapped:8036kB shmem:14132kB slab_reclaimable:15944kB
slab_unreclaimable:26600kB kernel_stack:104kB pagetables:3688kB
unstable:101736kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.419880] lowmem_reserve[]: 0 0 1010 1010
[ 4705.419890] Normal free:760kB min:2060kB low:2572kB high:3088kB
active_anon:128080kB inactive_anon:136136kB active_file:265844kB
inactive_file:273692kB unevictable:92kB isolated(anon):0kB
isolated(file):264kB present:1034240kB mlocked:0kB dirty:10700kB
writeback:21336kB mapped:142636kB shmem:34740kB slab_reclaimable:21784kB
slab_unreclaimable:24796kB kernel_stack:2160kB pagetables:11600kB
unstable:30316kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.419896] lowmem_reserve[]: 0 0 0 0
[ 4705.419901] DMA: 3*4kB 2*8kB 0*16kB 2*32kB 3*64kB 0*128kB 2*256kB
1*512kB 2*1024kB 2*2048kB 2*4096kB = 15644kB
[ 4705.419914] DMA32: 2440*4kB 78*8kB 0*16kB 0*32kB 1*64kB 1*128kB
1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10832kB
[ 4705.419926] Normal: 76*4kB 11*8kB 17*16kB 3*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 760kB
[ 4705.419939] 461661 total pagecache pages
[ 4705.419941] 0 pages in swap cache
[ 4705.419943] Swap cache stats: add 0, delete 0, find 0/0
[ 4705.419945] Free swap = 4200992kB
[ 4705.419946] Total swap = 4200992kB
[ 4705.435226] 1048560 pages RAM
[ 4705.435229] 83243 pages reserved
[ 4705.435230] 626151 pages shared
[ 4705.435232] 399702 pages non-shared
[ 4705.435235] iwlagn 0000:02:00.0: Failed to alloc_pages with
GFP_ATOMIC. Only 1 free buffers remaining.
[ 4705.435289] swapper: page allocation failure. order:1, mode:0x4020
[ 4705.435293] Pid: 0, comm: swapper Not tainted 2.6.34-pentoo-r2 #2
[ 4705.435295] Call Trace:
[ 4705.435297] <IRQ> [<ffffffff810984c0>]
__alloc_pages_nodemask+0x571/0x5b9
[ 4705.435318] [<ffffffffa05162f3>] iwlagn_rx_allocate+0x98/0x2e0 [iwlagn]
[ 4705.435331] [<ffffffffa04cf5bb>] ? iwl_rx_statistics+0x2f5/0x325
[iwlcore]
[ 4705.435336] [<ffffffff8147e871>] ? is_swiotlb_buffer+0x2e/0x3b
[ 4705.435343] [<ffffffffa051668c>] iwlagn_rx_replenish_now+0x16/0x23
[iwlagn]
[ 4705.435349] [<ffffffffa0500ca1>] iwl_rx_handle+0x481/0x4c2 [iwlagn]
[ 4705.435354] [<ffffffff8162c7b6>] ? __kfree_skb+0x19/0x7c
[ 4705.435360] [<ffffffffa0502766>] iwl_irq_tasklet+0xb0e/0xecd [iwlagn]
[ 4705.435363] [<ffffffff8162c01f>] ? skb_dequeue+0x5f/0x6b
[ 4705.435367] [<ffffffff81044ca0>] tasklet_action+0x6f/0xba
[ 4705.435370] [<ffffffff810456d7>] __do_softirq+0x91/0x11a
[ 4705.435374] [<ffffffff8100384c>] call_softirq+0x1c/0x28
[ 4705.435377] [<ffffffff8100550b>] do_softirq+0x33/0x68
[ 4705.435379] [<ffffffff810453d4>] irq_exit+0x36/0x87
[ 4705.435382] [<ffffffff81004bf0>] do_IRQ+0xa7/0xbe
[ 4705.435387] [<ffffffff8170af13>] ret_from_intr+0x0/0xa
[ 4705.435389] <EOI> [<ffffffff814f2453>] ?
acpi_idle_enter_simple+0x150/0x17b
[ 4705.435396] [<ffffffff814f2449>] ? acpi_idle_enter_simple+0x146/0x17b
[ 4705.435401] [<ffffffff816035c4>] cpuidle_idle_call+0x8b/0xc3
[ 4705.435405] [<ffffffff81001ca7>] cpu_idle+0xa6/0xe7
[ 4705.435409] [<ffffffff81003750>] ? kernel_thread_helper+0x0/0x10
[ 4705.435414] [<ffffffff816ecbc1>] rest_init+0xb5/0xba
[ 4705.435418] [<ffffffff81acbb65>] start_kernel+0x3f2/0x3fd
[ 4705.435422] [<ffffffff81acb0b6>] x86_64_start_reservations+0xb3/0xb7
[ 4705.435425] [<ffffffff81acb19a>] x86_64_start_kernel+0xe0/0xe7
[ 4705.435426] Mem-Info:
[ 4705.435428] DMA per-cpu:
[ 4705.435430] CPU 0: hi: 0, btch: 1 usd: 0
[ 4705.435432] CPU 1: hi: 0, btch: 1 usd: 0
[ 4705.435433] DMA32 per-cpu:
[ 4705.435435] CPU 0: hi: 186, btch: 31 usd: 159
[ 4705.435437] CPU 1: hi: 186, btch: 31 usd: 150
[ 4705.435438] Normal per-cpu:
[ 4705.435440] CPU 0: hi: 186, btch: 31 usd: 151
[ 4705.435442] CPU 1: hi: 186, btch: 31 usd: 185
[ 4705.435447] active_anon:341531 inactive_anon:114822 isolated_anon:0
[ 4705.435448] active_file:153488 inactive_file:295800 isolated_file:210
[ 4705.435449] unevictable:23 dirty:14035 writeback:28555 unstable:33013
[ 4705.435450] free:6788 slab_reclaimable:9432 slab_unreclaimable:12851
[ 4705.435451] mapped:37668 shmem:12218 pagetables:3822 bounce:0
[ 4705.435457] DMA free:15644kB min:28kB low:32kB high:40kB
active_anon:0kB inactive_anon:0kB active_file:120kB inactive_file:60kB
unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15708kB
mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB
slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB
pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.435462] lowmem_reserve[]: 0 2900 3910 3910
[ 4705.435470] DMA32 free:10748kB min:5924kB low:7404kB high:8884kB
active_anon:1238044kB inactive_anon:323152kB active_file:347988kB
inactive_file:909448kB unevictable:0kB isolated(anon):0kB
isolated(file):576kB present:2970488kB mlocked:0kB dirty:45440kB
writeback:92884kB mapped:8036kB shmem:14132kB slab_reclaimable:15944kB
slab_unreclaimable:26600kB kernel_stack:104kB pagetables:3688kB
unstable:101736kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.435476] lowmem_reserve[]: 0 0 1010 1010
[ 4705.435484] Normal free:760kB min:2060kB low:2572kB high:3088kB
active_anon:128080kB inactive_anon:136136kB active_file:265844kB
inactive_file:273692kB unevictable:92kB isolated(anon):0kB
isolated(file):264kB present:1034240kB mlocked:0kB dirty:10700kB
writeback:21336kB mapped:142636kB shmem:34740kB slab_reclaimable:21784kB
slab_unreclaimable:24796kB kernel_stack:2160kB pagetables:11600kB
unstable:30316kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.435489] lowmem_reserve[]: 0 0 0 0
[ 4705.435492] DMA: 3*4kB 2*8kB 0*16kB 2*32kB 3*64kB 0*128kB 2*256kB
1*512kB 2*1024kB 2*2048kB 2*4096kB = 15644kB
[ 4705.435501] DMA32: 2440*4kB 81*8kB 0*16kB 0*32kB 1*64kB 1*128kB
1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10856kB
[ 4705.435509] Normal: 76*4kB 11*8kB 17*16kB 3*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 760kB
[ 4705.435517] 461661 total pagecache pages
[ 4705.435519] 0 pages in swap cache
[ 4705.435521] Swap cache stats: add 0, delete 0, find 0/0
[ 4705.435522] Free swap = 4200992kB
[ 4705.435523] Total swap = 4200992kB
[ 4705.450608] 1048560 pages RAM
[ 4705.450610] 83243 pages reserved
[ 4705.450611] 626155 pages shared
[ 4705.450612] 399697 pages non-shared
[ 4705.450616] iwlagn 0000:02:00.0: Failed to alloc_pages with
GFP_ATOMIC. Only 5 free buffers remaining.
[ 4705.450675] swapper: page allocation failure. order:1, mode:0x4020
[ 4705.450679] Pid: 0, comm: swapper Not tainted 2.6.34-pentoo-r2 #2
[ 4705.450681] Call Trace:
[ 4705.450683] <IRQ> [<ffffffff810984c0>]
__alloc_pages_nodemask+0x571/0x5b9
[ 4705.450703] [<ffffffffa05162f3>] iwlagn_rx_allocate+0x98/0x2e0 [iwlagn]
[ 4705.450709] [<ffffffff8147e871>] ? is_swiotlb_buffer+0x2e/0x3b
[ 4705.450716] [<ffffffffa051668c>] iwlagn_rx_replenish_now+0x16/0x23
[iwlagn]
[ 4705.450722] [<ffffffffa0500ca1>] iwl_rx_handle+0x481/0x4c2 [iwlagn]
[ 4705.450726] [<ffffffff8162c7b6>] ? __kfree_skb+0x19/0x7c
[ 4705.450733] [<ffffffffa0502766>] iwl_irq_tasklet+0xb0e/0xecd [iwlagn]
[ 4705.450736] [<ffffffff8162c01f>] ? skb_dequeue+0x5f/0x6b
[ 4705.450740] [<ffffffff81044ca0>] tasklet_action+0x6f/0xba
[ 4705.450743] [<ffffffff810456d7>] __do_softirq+0x91/0x11a
[ 4705.450747] [<ffffffff8100384c>] call_softirq+0x1c/0x28
[ 4705.450750] [<ffffffff8100550b>] do_softirq+0x33/0x68
[ 4705.450753] [<ffffffff810453d4>] irq_exit+0x36/0x87
[ 4705.450755] [<ffffffff81004bf0>] do_IRQ+0xa7/0xbe
[ 4705.450761] [<ffffffff8170af13>] ret_from_intr+0x0/0xa
[ 4705.450762] <EOI> [<ffffffff814f2453>] ?
acpi_idle_enter_simple+0x150/0x17b
[ 4705.450770] [<ffffffff814f2449>] ? acpi_idle_enter_simple+0x146/0x17b
[ 4705.450775] [<ffffffff816035c4>] cpuidle_idle_call+0x8b/0xc3
[ 4705.450780] [<ffffffff81001ca7>] cpu_idle+0xa6/0xe7
[ 4705.450783] [<ffffffff81003750>] ? kernel_thread_helper+0x0/0x10
[ 4705.450789] [<ffffffff816ecbc1>] rest_init+0xb5/0xba
[ 4705.450793] [<ffffffff81acbb65>] start_kernel+0x3f2/0x3fd
[ 4705.450797] [<ffffffff81acb0b6>] x86_64_start_reservations+0xb3/0xb7
[ 4705.450800] [<ffffffff81acb19a>] x86_64_start_kernel+0xe0/0xe7
[ 4705.450801] Mem-Info:
[ 4705.450803] DMA per-cpu:
[ 4705.450805] CPU 0: hi: 0, btch: 1 usd: 0
[ 4705.450807] CPU 1: hi: 0, btch: 1 usd: 0
[ 4705.450808] DMA32 per-cpu:
[ 4705.450810] CPU 0: hi: 186, btch: 31 usd: 155
[ 4705.450812] CPU 1: hi: 186, btch: 31 usd: 148
[ 4705.450813] Normal per-cpu:
[ 4705.450815] CPU 0: hi: 186, btch: 31 usd: 151
[ 4705.450817] CPU 1: hi: 186, btch: 31 usd: 185
[ 4705.450821] active_anon:341531 inactive_anon:114822 isolated_anon:0
[ 4705.450822] active_file:153488 inactive_file:295800 isolated_file:210
[ 4705.450823] unevictable:23 dirty:14035 writeback:28555 unstable:33013
[ 4705.450824] free:6788 slab_reclaimable:9432 slab_unreclaimable:12851
[ 4705.450825] mapped:37668 shmem:12218 pagetables:3822 bounce:0
[ 4705.450831] DMA free:15644kB min:28kB low:32kB high:40kB
active_anon:0kB inactive_anon:0kB active_file:120kB inactive_file:60kB
unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15708kB
mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB
slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB
pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.450835] lowmem_reserve[]: 0 2900 3910 3910
[ 4705.450843] DMA32 free:10748kB min:5924kB low:7404kB high:8884kB
active_anon:1238044kB inactive_anon:323152kB active_file:347988kB
inactive_file:909448kB unevictable:0kB isolated(anon):0kB
isolated(file):576kB present:2970488kB mlocked:0kB dirty:45440kB
writeback:92884kB mapped:8036kB shmem:14132kB slab_reclaimable:15944kB
slab_unreclaimable:26600kB kernel_stack:104kB pagetables:3688kB
unstable:101736kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.450848] lowmem_reserve[]: 0 0 1010 1010
[ 4705.450855] Normal free:760kB min:2060kB low:2572kB high:3088kB
active_anon:128080kB inactive_anon:136136kB active_file:265844kB
inactive_file:273692kB unevictable:92kB isolated(anon):0kB
isolated(file):264kB present:1034240kB mlocked:0kB dirty:10700kB
writeback:21336kB mapped:142636kB shmem:34740kB slab_reclaimable:21784kB
slab_unreclaimable:24796kB kernel_stack:2160kB pagetables:11600kB
unstable:30316kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.450860] lowmem_reserve[]: 0 0 0 0
[ 4705.450863] DMA: 3*4kB 2*8kB 0*16kB 2*32kB 3*64kB 0*128kB 2*256kB
1*512kB 2*1024kB 2*2048kB 2*4096kB = 15644kB
[ 4705.450871] DMA32: 2440*4kB 85*8kB 0*16kB 0*32kB 1*64kB 1*128kB
1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10888kB
[ 4705.450878] Normal: 76*4kB 11*8kB 17*16kB 3*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 760kB
[ 4705.450885] 461661 total pagecache pages
[ 4705.450887] 0 pages in swap cache
[ 4705.450888] Swap cache stats: add 0, delete 0, find 0/0
[ 4705.450890] Free swap = 4200992kB
[ 4705.450891] Total swap = 4200992kB
[ 4705.465982] 1048560 pages RAM
[ 4705.465984] 83243 pages reserved
[ 4705.465986] 626159 pages shared
[ 4705.465987] 399693 pages non-shared
[ 4705.465990] iwlagn 0000:02:00.0: Failed to alloc_pages with
GFP_ATOMIC. Only 4 free buffers remaining.
[ 4705.466048] swapper: page allocation failure. order:1, mode:0x4020
[ 4705.466052] Pid: 0, comm: swapper Not tainted 2.6.34-pentoo-r2 #2
[ 4705.466054] Call Trace:
[ 4705.466056] <IRQ> [<ffffffff810984c0>]
__alloc_pages_nodemask+0x571/0x5b9
[ 4705.466076] [<ffffffffa05162f3>] iwlagn_rx_allocate+0x98/0x2e0 [iwlagn]
[ 4705.466080] [<ffffffff810513ca>] ? queue_work+0x4b/0x55
[ 4705.466085] [<ffffffff8147e871>] ? is_swiotlb_buffer+0x2e/0x3b
[ 4705.466092] [<ffffffffa051668c>] iwlagn_rx_replenish_now+0x16/0x23
[iwlagn]
[ 4705.466098] [<ffffffffa0500ca1>] iwl_rx_handle+0x481/0x4c2 [iwlagn]
[ 4705.466103] [<ffffffff8162c7b6>] ? __kfree_skb+0x19/0x7c
[ 4705.466109] [<ffffffffa0502766>] iwl_irq_tasklet+0xb0e/0xecd [iwlagn]
[ 4705.466112] [<ffffffff8162c01f>] ? skb_dequeue+0x5f/0x6b
[ 4705.466116] [<ffffffff81044ca0>] tasklet_action+0x6f/0xba
[ 4705.466119] [<ffffffff810456d7>] __do_softirq+0x91/0x11a
[ 4705.466123] [<ffffffff8100384c>] call_softirq+0x1c/0x28
[ 4705.466126] [<ffffffff8100550b>] do_softirq+0x33/0x68
[ 4705.466128] [<ffffffff810453d4>] irq_exit+0x36/0x87
[ 4705.466131] [<ffffffff81004bf0>] do_IRQ+0xa7/0xbe
[ 4705.466137] [<ffffffff8170af13>] ret_from_intr+0x0/0xa
[ 4705.466139] <EOI> [<ffffffff814f2453>] ?
acpi_idle_enter_simple+0x150/0x17b
[ 4705.466146] [<ffffffff814f2449>] ? acpi_idle_enter_simple+0x146/0x17b
[ 4705.466150] [<ffffffff816035c4>] cpuidle_idle_call+0x8b/0xc3
[ 4705.466154] [<ffffffff81001ca7>] cpu_idle+0xa6/0xe7
[ 4705.466158] [<ffffffff81003750>] ? kernel_thread_helper+0x0/0x10
[ 4705.466163] [<ffffffff816ecbc1>] rest_init+0xb5/0xba
[ 4705.466168] [<ffffffff81acbb65>] start_kernel+0x3f2/0x3fd
[ 4705.466171] [<ffffffff81acb0b6>] x86_64_start_reservations+0xb3/0xb7
[ 4705.466174] [<ffffffff81acb19a>] x86_64_start_kernel+0xe0/0xe7
[ 4705.466176] Mem-Info:
[ 4705.466178] DMA per-cpu:
[ 4705.466179] CPU 0: hi: 0, btch: 1 usd: 0
[ 4705.466181] CPU 1: hi: 0, btch: 1 usd: 0
[ 4705.466183] DMA32 per-cpu:
[ 4705.466184] CPU 0: hi: 186, btch: 31 usd: 151
[ 4705.466186] CPU 1: hi: 186, btch: 31 usd: 147
[ 4705.466188] Normal per-cpu:
[ 4705.466190] CPU 0: hi: 186, btch: 31 usd: 151
[ 4705.466192] CPU 1: hi: 186, btch: 31 usd: 185
[ 4705.466196] active_anon:341531 inactive_anon:114822 isolated_anon:0
[ 4705.466197] active_file:153488 inactive_file:295800 isolated_file:210
[ 4705.466198] unevictable:23 dirty:14035 writeback:28555 unstable:33013
[ 4705.466199] free:6813 slab_reclaimable:9432 slab_unreclaimable:12851
[ 4705.466200] mapped:37668 shmem:12218 pagetables:3822 bounce:0
[ 4705.466206] DMA free:15644kB min:28kB low:32kB high:40kB
active_anon:0kB inactive_anon:0kB active_file:120kB inactive_file:60kB
unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15708kB
mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB
slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB
pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.466211] lowmem_reserve[]: 0 2900 3910 3910
[ 4705.466219] DMA32 free:10848kB min:5924kB low:7404kB high:8884kB
active_anon:1238044kB inactive_anon:323152kB active_file:347988kB
inactive_file:909448kB unevictable:0kB isolated(anon):0kB
isolated(file):576kB present:2970488kB mlocked:0kB dirty:45440kB
writeback:92884kB mapped:8036kB shmem:14132kB slab_reclaimable:15944kB
slab_unreclaimable:26600kB kernel_stack:104kB pagetables:3688kB
unstable:101736kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.466225] lowmem_reserve[]: 0 0 1010 1010
[ 4705.466233] Normal free:760kB min:2060kB low:2572kB high:3088kB
active_anon:128080kB inactive_anon:136136kB active_file:265844kB
inactive_file:273692kB unevictable:92kB isolated(anon):0kB
isolated(file):264kB present:1034240kB mlocked:0kB dirty:10700kB
writeback:21336kB mapped:142636kB shmem:34740kB slab_reclaimable:21784kB
slab_unreclaimable:24796kB kernel_stack:2160kB pagetables:11600kB
unstable:30316kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.466238] lowmem_reserve[]: 0 0 0 0
[ 4705.466241] DMA: 3*4kB 2*8kB 0*16kB 2*32kB 3*64kB 0*128kB 2*256kB
1*512kB 2*1024kB 2*2048kB 2*4096kB = 15644kB
[ 4705.466250] DMA32: 2440*4kB 89*8kB 0*16kB 0*32kB 1*64kB 1*128kB
1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10920kB
[ 4705.466258] Normal: 76*4kB 11*8kB 17*16kB 3*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 760kB
[ 4705.466266] 461661 total pagecache pages
[ 4705.466268] 0 pages in swap cache
[ 4705.466270] Swap cache stats: add 0, delete 0, find 0/0
[ 4705.466271] Free swap = 4200992kB
[ 4705.466272] Total swap = 4200992kB
[ 4705.481398] 1048560 pages RAM
[ 4705.481400] 83243 pages reserved
[ 4705.481402] 626163 pages shared
[ 4705.481403] 399690 pages non-shared
[ 4705.481458] swapper: page allocation failure. order:1, mode:0x4020
[ 4705.481462] Pid: 0, comm: swapper Not tainted 2.6.34-pentoo-r2 #2
[ 4705.481464] Call Trace:
[ 4705.481465] <IRQ> [<ffffffff810984c0>]
__alloc_pages_nodemask+0x571/0x5b9
[ 4705.481483] [<ffffffffa05162f3>] iwlagn_rx_allocate+0x98/0x2e0 [iwlagn]
[ 4705.481488] [<ffffffff8147e871>] ? is_swiotlb_buffer+0x2e/0x3b
[ 4705.481495] [<ffffffffa051668c>] iwlagn_rx_replenish_now+0x16/0x23
[iwlagn]
[ 4705.481501] [<ffffffffa0500ca1>] iwl_rx_handle+0x481/0x4c2 [iwlagn]
[ 4705.481506] [<ffffffff8162c7b6>] ? __kfree_skb+0x19/0x7c
[ 4705.481512] [<ffffffffa0502766>] iwl_irq_tasklet+0xb0e/0xecd [iwlagn]
[ 4705.481515] [<ffffffff8162c01f>] ? skb_dequeue+0x5f/0x6b
[ 4705.481519] [<ffffffff81044ca0>] tasklet_action+0x6f/0xba
[ 4705.481522] [<ffffffff810456d7>] __do_softirq+0x91/0x11a
[ 4705.481526] [<ffffffff8100384c>] call_softirq+0x1c/0x28
[ 4705.481529] [<ffffffff8100550b>] do_softirq+0x33/0x68
[ 4705.481531] [<ffffffff810453d4>] irq_exit+0x36/0x87
[ 4705.481534] [<ffffffff81004bf0>] do_IRQ+0xa7/0xbe
[ 4705.481539] [<ffffffff8170af13>] ret_from_intr+0x0/0xa
[ 4705.481540] <EOI> [<ffffffff814f2453>] ?
acpi_idle_enter_simple+0x150/0x17b
[ 4705.481547] [<ffffffff814f2449>] ? acpi_idle_enter_simple+0x146/0x17b
[ 4705.481551] [<ffffffff816035c4>] cpuidle_idle_call+0x8b/0xc3
[ 4705.481555] [<ffffffff81001ca7>] cpu_idle+0xa6/0xe7
[ 4705.481559] [<ffffffff81003750>] ? kernel_thread_helper+0x0/0x10
[ 4705.481563] [<ffffffff816ecbc1>] rest_init+0xb5/0xba
[ 4705.481567] [<ffffffff81acbb65>] start_kernel+0x3f2/0x3fd
[ 4705.481570] [<ffffffff81acb0b6>] x86_64_start_reservations+0xb3/0xb7
[ 4705.481573] [<ffffffff81acb19a>] x86_64_start_kernel+0xe0/0xe7
[ 4705.481575] Mem-Info:
[ 4705.481577] DMA per-cpu:
[ 4705.481578] CPU 0: hi: 0, btch: 1 usd: 0
[ 4705.481580] CPU 1: hi: 0, btch: 1 usd: 0
[ 4705.481582] DMA32 per-cpu:
[ 4705.481584] CPU 0: hi: 186, btch: 31 usd: 146
[ 4705.481585] CPU 1: hi: 186, btch: 31 usd: 144
[ 4705.481587] Normal per-cpu:
[ 4705.481589] CPU 0: hi: 186, btch: 31 usd: 151
[ 4705.481591] CPU 1: hi: 186, btch: 31 usd: 185
[ 4705.481595] active_anon:341531 inactive_anon:114822 isolated_anon:0
[ 4705.481596] active_file:153488 inactive_file:295800 isolated_file:210
[ 4705.481597] unevictable:23 dirty:14035 writeback:28555 unstable:33013
[ 4705.481598] free:6813 slab_reclaimable:9432 slab_unreclaimable:12876
[ 4705.481599] mapped:37668 shmem:12218 pagetables:3822 bounce:0
[ 4705.481605] DMA free:15644kB min:28kB low:32kB high:40kB
active_anon:0kB inactive_anon:0kB active_file:120kB inactive_file:60kB
unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15708kB
mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB
slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB
pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.481610] lowmem_reserve[]: 0 2900 3910 3910
[ 4705.481618] DMA32 free:10848kB min:5924kB low:7404kB high:8884kB
active_anon:1238044kB inactive_anon:323152kB active_file:347988kB
inactive_file:909448kB unevictable:0kB isolated(anon):0kB
isolated(file):576kB present:2970488kB mlocked:0kB dirty:45440kB
writeback:92884kB mapped:8036kB shmem:14132kB slab_reclaimable:15944kB
slab_unreclaimable:26700kB kernel_stack:104kB pagetables:3688kB
unstable:101736kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.481624] lowmem_reserve[]: 0 0 1010 1010
[ 4705.481632] Normal free:760kB min:2060kB low:2572kB high:3088kB
active_anon:128080kB inactive_anon:136136kB active_file:265844kB
inactive_file:273692kB unevictable:92kB isolated(anon):0kB
isolated(file):264kB present:1034240kB mlocked:0kB dirty:10700kB
writeback:21336kB mapped:142636kB shmem:34740kB slab_reclaimable:21784kB
slab_unreclaimable:24796kB kernel_stack:2160kB pagetables:11600kB
unstable:30316kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.481637] lowmem_reserve[]: 0 0 0 0
[ 4705.481640] DMA: 3*4kB 2*8kB 0*16kB 2*32kB 3*64kB 0*128kB 2*256kB
1*512kB 2*1024kB 2*2048kB 2*4096kB = 15644kB
[ 4705.481649] DMA32: 2440*4kB 93*8kB 0*16kB 0*32kB 1*64kB 1*128kB
1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10952kB
[ 4705.481657] Normal: 76*4kB 11*8kB 17*16kB 3*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 760kB
[ 4705.481665] 461661 total pagecache pages
[ 4705.481666] 0 pages in swap cache
[ 4705.481668] Swap cache stats: add 0, delete 0, find 0/0
[ 4705.481670] Free swap = 4200992kB
[ 4705.481671] Total swap = 4200992kB
[ 4705.497155] 1048560 pages RAM
[ 4705.497157] 83243 pages reserved
[ 4705.497158] 626163 pages shared
[ 4705.497160] 399687 pages non-shared
[ 4705.497211] swapper: page allocation failure. order:1, mode:0x4020
[ 4705.497215] Pid: 0, comm: swapper Not tainted 2.6.34-pentoo-r2 #2
[ 4705.497217] Call Trace:
[ 4705.497219] <IRQ> [<ffffffff810984c0>]
__alloc_pages_nodemask+0x571/0x5b9
[ 4705.497238] [<ffffffffa05162f3>] iwlagn_rx_allocate+0x98/0x2e0 [iwlagn]
[ 4705.497243] [<ffffffff810513ca>] ? queue_work+0x4b/0x55
[ 4705.497248] [<ffffffff8147e871>] ? is_swiotlb_buffer+0x2e/0x3b
[ 4705.497256] [<ffffffffa051668c>] iwlagn_rx_replenish_now+0x16/0x23
[iwlagn]
[ 4705.497262] [<ffffffffa0500ca1>] iwl_rx_handle+0x481/0x4c2 [iwlagn]
[ 4705.497267] [<ffffffff8162c7b6>] ? __kfree_skb+0x19/0x7c
[ 4705.497274] [<ffffffffa0502766>] iwl_irq_tasklet+0xb0e/0xecd [iwlagn]
[ 4705.497277] [<ffffffff8162c01f>] ? skb_dequeue+0x5f/0x6b
[ 4705.497282] [<ffffffff81044ca0>] tasklet_action+0x6f/0xba
[ 4705.497285] [<ffffffff810456d7>] __do_softirq+0x91/0x11a
[ 4705.497289] [<ffffffff8100384c>] call_softirq+0x1c/0x28
[ 4705.497293] [<ffffffff8100550b>] do_softirq+0x33/0x68
[ 4705.497296] [<ffffffff810453d4>] irq_exit+0x36/0x87
[ 4705.497299] [<ffffffff81004bf0>] do_IRQ+0xa7/0xbe
[ 4705.497304] [<ffffffff8170af13>] ret_from_intr+0x0/0xa
[ 4705.497306] <EOI> [<ffffffff814f2453>] ?
acpi_idle_enter_simple+0x150/0x17b
[ 4705.497314] [<ffffffff814f2449>] ? acpi_idle_enter_simple+0x146/0x17b
[ 4705.497319] [<ffffffff816035c4>] cpuidle_idle_call+0x8b/0xc3
[ 4705.497323] [<ffffffff81001ca7>] cpu_idle+0xa6/0xe7
[ 4705.497327] [<ffffffff81003750>] ? kernel_thread_helper+0x0/0x10
[ 4705.497331] [<ffffffff816ecbc1>] rest_init+0xb5/0xba
[ 4705.497336] [<ffffffff81acbb65>] start_kernel+0x3f2/0x3fd
[ 4705.497340] [<ffffffff81acb0b6>] x86_64_start_reservations+0xb3/0xb7
[ 4705.497344] [<ffffffff81acb19a>] x86_64_start_kernel+0xe0/0xe7
[ 4705.497346] Mem-Info:
[ 4705.497348] DMA per-cpu:
[ 4705.497350] CPU 0: hi: 0, btch: 1 usd: 0
[ 4705.497352] CPU 1: hi: 0, btch: 1 usd: 0
[ 4705.497354] DMA32 per-cpu:
[ 4705.497356] CPU 0: hi: 186, btch: 31 usd: 173
[ 4705.497358] CPU 1: hi: 186, btch: 31 usd: 145
[ 4705.497360] Normal per-cpu:
[ 4705.497361] CPU 0: hi: 186, btch: 31 usd: 151
[ 4705.497364] CPU 1: hi: 186, btch: 31 usd: 185
[ 4705.497368] active_anon:341531 inactive_anon:114822 isolated_anon:0
[ 4705.497369] active_file:153488 inactive_file:295800 isolated_file:210
[ 4705.497370] unevictable:23 dirty:14035 writeback:28555 unstable:33013
[ 4705.497371] free:6813 slab_reclaimable:9432 slab_unreclaimable:12876
[ 4705.497372] mapped:37668 shmem:12218 pagetables:3822 bounce:0
[ 4705.497379] DMA free:15644kB min:28kB low:32kB high:40kB
active_anon:0kB inactive_anon:0kB active_file:120kB inactive_file:60kB
unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15708kB
mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB
slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB
pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.497384] lowmem_reserve[]: 0 2900 3910 3910
[ 4705.497394] DMA32 free:10848kB min:5924kB low:7404kB high:8884kB
active_anon:1238044kB inactive_anon:323152kB active_file:347988kB
inactive_file:909448kB unevictable:0kB isolated(anon):0kB
isolated(file):576kB present:2970488kB mlocked:0kB dirty:45440kB
writeback:92884kB mapped:8036kB shmem:14132kB slab_reclaimable:15944kB
slab_unreclaimable:26700kB kernel_stack:104kB pagetables:3688kB
unstable:101736kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.497400] lowmem_reserve[]: 0 0 1010 1010
[ 4705.497410] Normal free:760kB min:2060kB low:2572kB high:3088kB
active_anon:128080kB inactive_anon:136136kB active_file:265844kB
inactive_file:273692kB unevictable:92kB isolated(anon):0kB
isolated(file):264kB present:1034240kB mlocked:0kB dirty:10700kB
writeback:21336kB mapped:142636kB shmem:34740kB slab_reclaimable:21784kB
slab_unreclaimable:24796kB kernel_stack:2160kB pagetables:11600kB
unstable:30316kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.497416] lowmem_reserve[]: 0 0 0 0
[ 4705.497421] DMA: 3*4kB 2*8kB 0*16kB 2*32kB 3*64kB 0*128kB 2*256kB
1*512kB 2*1024kB 2*2048kB 2*4096kB = 15644kB
[ 4705.497433] DMA32: 2451*4kB 76*8kB 0*16kB 0*32kB 1*64kB 1*128kB
1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10860kB
[ 4705.497446] Normal: 76*4kB 11*8kB 17*16kB 3*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 760kB
[ 4705.497459] 461661 total pagecache pages
[ 4705.497461] 0 pages in swap cache
[ 4705.497463] Swap cache stats: add 0, delete 0, find 0/0
[ 4705.497465] Free swap = 4200992kB
[ 4705.497467] Total swap = 4200992kB
[ 4705.513089] 1048560 pages RAM
[ 4705.513091] 83243 pages reserved
[ 4705.513092] 626165 pages shared
[ 4705.513094] 399682 pages non-shared
[ 4705.513153] swapper: page allocation failure. order:1, mode:0x4020
[ 4705.513157] Pid: 0, comm: swapper Not tainted 2.6.34-pentoo-r2 #2
[ 4705.513159] Call Trace:
[ 4705.513161] <IRQ> [<ffffffff810984c0>]
__alloc_pages_nodemask+0x571/0x5b9
[ 4705.513182] [<ffffffffa05162f3>] iwlagn_rx_allocate+0x98/0x2e0 [iwlagn]
[ 4705.513187] [<ffffffff8147e871>] ? is_swiotlb_buffer+0x2e/0x3b
[ 4705.513194] [<ffffffffa051668c>] iwlagn_rx_replenish_now+0x16/0x23
[iwlagn]
[ 4705.513201] [<ffffffffa0500ca1>] iwl_rx_handle+0x481/0x4c2 [iwlagn]
[ 4705.513206] [<ffffffff8162c7b6>] ? __kfree_skb+0x19/0x7c
[ 4705.513213] [<ffffffffa0502766>] iwl_irq_tasklet+0xb0e/0xecd [iwlagn]
[ 4705.513216] [<ffffffff8162c01f>] ? skb_dequeue+0x5f/0x6b
[ 4705.513221] [<ffffffff81044ca0>] tasklet_action+0x6f/0xba
[ 4705.513225] [<ffffffff810456d7>] __do_softirq+0x91/0x11a
[ 4705.513229] [<ffffffff8100384c>] call_softirq+0x1c/0x28
[ 4705.513232] [<ffffffff8100550b>] do_softirq+0x33/0x68
[ 4705.513236] [<ffffffff810453d4>] irq_exit+0x36/0x87
[ 4705.513239] [<ffffffff81004bf0>] do_IRQ+0xa7/0xbe
[ 4705.513244] [<ffffffff8170af13>] ret_from_intr+0x0/0xa
[ 4705.513246] <EOI> [<ffffffff814f2453>] ?
acpi_idle_enter_simple+0x150/0x17b
[ 4705.513254] [<ffffffff814f2449>] ? acpi_idle_enter_simple+0x146/0x17b
[ 4705.513259] [<ffffffff816035c4>] cpuidle_idle_call+0x8b/0xc3
[ 4705.513263] [<ffffffff81001ca7>] cpu_idle+0xa6/0xe7
[ 4705.513267] [<ffffffff81003750>] ? kernel_thread_helper+0x0/0x10
[ 4705.513271] [<ffffffff816ecbc1>] rest_init+0xb5/0xba
[ 4705.513276] [<ffffffff81acbb65>] start_kernel+0x3f2/0x3fd
[ 4705.513280] [<ffffffff81acb0b6>] x86_64_start_reservations+0xb3/0xb7
[ 4705.513283] [<ffffffff81acb19a>] x86_64_start_kernel+0xe0/0xe7
[ 4705.513286] Mem-Info:
[ 4705.513287] DMA per-cpu:
[ 4705.513289] CPU 0: hi: 0, btch: 1 usd: 0
[ 4705.513291] CPU 1: hi: 0, btch: 1 usd: 0
[ 4705.513293] DMA32 per-cpu:
[ 4705.513295] CPU 0: hi: 186, btch: 31 usd: 169
[ 4705.513298] CPU 1: hi: 186, btch: 31 usd: 142
[ 4705.513299] Normal per-cpu:
[ 4705.513301] CPU 0: hi: 186, btch: 31 usd: 151
[ 4705.513303] CPU 1: hi: 186, btch: 31 usd: 185
[ 4705.513308] active_anon:341531 inactive_anon:114822 isolated_anon:0
[ 4705.513309] active_file:153488 inactive_file:295800 isolated_file:210
[ 4705.513310] unevictable:23 dirty:14035 writeback:28555 unstable:33013
[ 4705.513311] free:6813 slab_reclaimable:9432 slab_unreclaimable:12876
[ 4705.513312] mapped:37668 shmem:12218 pagetables:3822 bounce:0
[ 4705.513319] DMA free:15644kB min:28kB low:32kB high:40kB
active_anon:0kB inactive_anon:0kB active_file:120kB inactive_file:60kB
unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15708kB
mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB
slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB
pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.513324] lowmem_reserve[]: 0 2900 3910 3910
[ 4705.513334] DMA32 free:10848kB min:5924kB low:7404kB high:8884kB
active_anon:1238044kB inactive_anon:323152kB active_file:347988kB
inactive_file:909448kB unevictable:0kB isolated(anon):0kB
isolated(file):576kB present:2970488kB mlocked:0kB dirty:45440kB
writeback:92884kB mapped:8036kB shmem:14132kB slab_reclaimable:15944kB
slab_unreclaimable:26700kB kernel_stack:104kB pagetables:3688kB
unstable:101736kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.513340] lowmem_reserve[]: 0 0 1010 1010
[ 4705.513350] Normal free:760kB min:2060kB low:2572kB high:3088kB
active_anon:128080kB inactive_anon:136136kB active_file:265844kB
inactive_file:273692kB unevictable:92kB isolated(anon):0kB
isolated(file):264kB present:1034240kB mlocked:0kB dirty:10700kB
writeback:21336kB mapped:142636kB shmem:34740kB slab_reclaimable:21784kB
slab_unreclaimable:24796kB kernel_stack:2160kB pagetables:11600kB
unstable:30316kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.513356] lowmem_reserve[]: 0 0 0 0
[ 4705.513361] DMA: 3*4kB 2*8kB 0*16kB 2*32kB 3*64kB 0*128kB 2*256kB
1*512kB 2*1024kB 2*2048kB 2*4096kB = 15644kB
[ 4705.513374] DMA32: 2451*4kB 80*8kB 0*16kB 0*32kB 1*64kB 1*128kB
1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10892kB
[ 4705.513386] Normal: 76*4kB 11*8kB 17*16kB 3*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 760kB
[ 4705.513399] 461661 total pagecache pages
[ 4705.513401] 0 pages in swap cache
[ 4705.513403] Swap cache stats: add 0, delete 0, find 0/0
[ 4705.513405] Free swap = 4200992kB
[ 4705.513406] Total swap = 4200992kB
[ 4705.528482] 1048560 pages RAM
[ 4705.528484] 83243 pages reserved
[ 4705.528485] 626172 pages shared
[ 4705.528487] 399630 pages non-shared
[ 4705.528586] swapper: page allocation failure. order:1, mode:0x4020
[ 4705.528590] Pid: 0, comm: swapper Not tainted 2.6.34-pentoo-r2 #2
[ 4705.528591] Call Trace:
[ 4705.528593] <IRQ> [<ffffffff810984c0>]
__alloc_pages_nodemask+0x571/0x5b9
[ 4705.528611] [<ffffffffa05162f3>] iwlagn_rx_allocate+0x98/0x2e0 [iwlagn]
[ 4705.528617] [<ffffffff8147e871>] ? is_swiotlb_buffer+0x2e/0x3b
[ 4705.528624] [<ffffffffa051668c>] iwlagn_rx_replenish_now+0x16/0x23
[iwlagn]
[ 4705.528630] [<ffffffffa0500ca1>] iwl_rx_handle+0x481/0x4c2 [iwlagn]
[ 4705.528635] [<ffffffff8162c7b6>] ? __kfree_skb+0x19/0x7c
[ 4705.528641] [<ffffffffa0502766>] iwl_irq_tasklet+0xb0e/0xecd [iwlagn]
[ 4705.528644] [<ffffffff8162c01f>] ? skb_dequeue+0x5f/0x6b
[ 4705.528649] [<ffffffff81044ca0>] tasklet_action+0x6f/0xba
[ 4705.528652] [<ffffffff810456d7>] __do_softirq+0x91/0x11a
[ 4705.528655] [<ffffffff8100384c>] call_softirq+0x1c/0x28
[ 4705.528658] [<ffffffff8100550b>] do_softirq+0x33/0x68
[ 4705.528661] [<ffffffff810453d4>] irq_exit+0x36/0x87
[ 4705.528664] [<ffffffff81004bf0>] do_IRQ+0xa7/0xbe
[ 4705.528668] [<ffffffff8170af13>] ret_from_intr+0x0/0xa
[ 4705.528670] <EOI> [<ffffffff814f2453>] ?
acpi_idle_enter_simple+0x150/0x17b
[ 4705.528678] [<ffffffff814f2449>] ? acpi_idle_enter_simple+0x146/0x17b
[ 4705.528682] [<ffffffff816035c4>] cpuidle_idle_call+0x8b/0xc3
[ 4705.528685] [<ffffffff81001ca7>] cpu_idle+0xa6/0xe7
[ 4705.528688] [<ffffffff81003750>] ? kernel_thread_helper+0x0/0x10
[ 4705.528693] [<ffffffff816ecbc1>] rest_init+0xb5/0xba
[ 4705.528699] [<ffffffff81acbb65>] start_kernel+0x3f2/0x3fd
[ 4705.528703] [<ffffffff81acb0b6>] x86_64_start_reservations+0xb3/0xb7
[ 4705.528706] [<ffffffff81acb19a>] x86_64_start_kernel+0xe0/0xe7
[ 4705.528708] Mem-Info:
[ 4705.528709] DMA per-cpu:
[ 4705.528711] CPU 0: hi: 0, btch: 1 usd: 0
[ 4705.528714] CPU 1: hi: 0, btch: 1 usd: 0
[ 4705.528715] DMA32 per-cpu:
[ 4705.528717] CPU 0: hi: 186, btch: 31 usd: 164
[ 4705.528719] CPU 1: hi: 186, btch: 31 usd: 154
[ 4705.528720] Normal per-cpu:
[ 4705.528721] CPU 0: hi: 186, btch: 31 usd: 148
[ 4705.528723] CPU 1: hi: 186, btch: 31 usd: 179
[ 4705.528728] active_anon:341531 inactive_anon:114822 isolated_anon:0
[ 4705.528729] active_file:153488 inactive_file:295736 isolated_file:245
[ 4705.528730] unevictable:23 dirty:14035 writeback:28555 unstable:33013
[ 4705.528731] free:6808 slab_reclaimable:9432 slab_unreclaimable:12876
[ 4705.528732] mapped:37668 shmem:12218 pagetables:3822 bounce:0
[ 4705.528737] DMA free:15644kB min:28kB low:32kB high:40kB
active_anon:0kB inactive_anon:0kB active_file:120kB inactive_file:60kB
unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15708kB
mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB
slab_reclaimable:0kB slab_unreclaimable:8kB kernel_stack:0kB
pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.528741] lowmem_reserve[]: 0 2900 3910 3910
[ 4705.528749] DMA32 free:10848kB min:5924kB low:7404kB high:8884kB
active_anon:1238044kB inactive_anon:323152kB active_file:347988kB
inactive_file:909272kB unevictable:0kB isolated(anon):0kB
isolated(file):716kB present:2970488kB mlocked:0kB dirty:45440kB
writeback:92884kB mapped:8036kB shmem:14132kB slab_reclaimable:15944kB
slab_unreclaimable:26700kB kernel_stack:104kB pagetables:3688kB
unstable:101736kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.528754] lowmem_reserve[]: 0 0 1010 1010
[ 4705.528761] Normal free:740kB min:2060kB low:2572kB high:3088kB
active_anon:128080kB inactive_anon:136136kB active_file:265844kB
inactive_file:273612kB unevictable:92kB isolated(anon):0kB
isolated(file):264kB present:1034240kB mlocked:0kB dirty:10700kB
writeback:21336kB mapped:142636kB shmem:34740kB slab_reclaimable:21784kB
slab_unreclaimable:24796kB kernel_stack:2160kB pagetables:11600kB
unstable:30316kB bounce:0kB writeback_tmp:0kB pages_scanned:0
all_unreclaimable? no
[ 4705.528766] lowmem_reserve[]: 0 0 0 0
[ 4705.528769] DMA: 3*4kB 2*8kB 0*16kB 2*32kB 3*64kB 0*128kB 2*256kB
1*512kB 2*1024kB 2*2048kB 2*4096kB = 15644kB
[ 4705.528778] DMA32: 2451*4kB 88*8kB 0*16kB 0*32kB 1*64kB 1*128kB
1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 10956kB
[ 4705.528785] Normal: 93*4kB 0*8kB 17*16kB 3*32kB 0*64kB 0*128kB
0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 740kB
[ 4705.528792] 461599 total pagecache pages
[ 4705.528793] 0 pages in swap cache
[ 4705.528795] Swap cache stats: add 0, delete 0, find 0/0
[ 4705.528796] Free swap = 4200992kB
[ 4705.528798] Total swap = 4200992kB
[ 4705.544019] 1048560 pages RAM
[ 4705.544021] 83243 pages reserved
[ 4705.544023] 626171 pages shared
[ 4705.544024] 399657 pages non-shared
> diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
> index 0f292a2..028db74 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
> @@ -613,7 +613,7 @@ void iwlagn_rx_allocate(struct iwl_priv *priv, gfp_t priority)
> }
> spin_unlock_irqrestore(&rxq->lock, flags);
>
> - if (rxq->free_count > RX_LOW_WATERMARK)
> + if (rxq->free_count > 8)
> gfp_mask |= __GFP_NOWARN;
>
> if (priv->hw_params.rx_page_order > 0)
> diff --git a/drivers/net/wireless/iwlwifi/iwl-fh.h b/drivers/net/wireless/iwlwifi/iwl-fh.h
> index 113c366..396a16c 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-fh.h
> +++ b/drivers/net/wireless/iwlwifi/iwl-fh.h
> @@ -426,7 +426,7 @@
> * RX related structures and functions
> */
> #define RX_FREE_BUFFERS 64
> -#define RX_LOW_WATERMARK 8
> +#define RX_LOW_WATERMARK 64
>
> /* Size of one Rx buffer in host DRAM */
> #define IWL_RX_BUF_SIZE_3K (3 * 1000) /* 3945 only */
>
>
>
>
^ permalink raw reply
* Re: [PATCH 2/2] wl1251: fix ELP_CTRL register reads
From: Denis 'GNUtoo' Carikli @ 2010-06-25 16:01 UTC (permalink / raw)
To: Grazvydas Ignotas
Cc: Bob Copeland, Kalle Valo, John W.Linville, linux-wireless
In-Reply-To: <AANLkTinGVsGRFZ5J06Y_s13TGjJcIRbm2ugfNfgSCIEw@mail.gmail.com>
On Fri, 2010-06-25 at 02:34 +0300, Grazvydas Ignotas wrote:
> > I've changed that struct to wl12xx_platform_Data and added the irq
> > int,and I've still the following errors:
> > [ 541.676849] wl1251: ERROR sdio_writeb failed (-84)
> > [ 542.006378] mmc0: Command timeout
> > [ 542.011444] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> > [ 543.016357] mmc0: Command CRC error
> > [ 543.016418] mmc0:0001: error -84 reading SDIO_CCCR_INTx
> > [ 544.026367] mmc0: Command timeout
> > [ 544.031433] mmc0:0001: error -110 reading SDIO_CCCR_INTx
> > [ 545.036376] mmc0: Command CRC error
>
> Has powersaving ever worked on your device with this driver? It does
> work fine on pandora (OMAP3).
Not sure,
I've updated the sd driver,but I think I've still an issue
maybe the irq is not well recognized because I did some mistake.
here are the debug:
[ 2132.599578] wl1251: cmd configure
[ 2132.619567] wl1251: acx wake up conditions
[ 2132.619628] wl1251: cmd configure
[ 2132.639587] wl1251: cmd set ps mode
[ 2132.640747] wl1251: sleep auth psm/elp
[ 2132.640808] wl1251: acx sleep auth
[ 2132.640808] wl1251: cmd configure
[ 2132.650268] wl1251: elp work
[ 2132.650299] wl1251: chip to elp
[ 2133.239471] wl1251: IRQ
[ 2133.239654] wl1251: IRQ work
[ 2133.239654] wl1251: waking up chip from elp
[ 2133.239715] wl1251: wakeup time: 0 ms
[ 2133.239868] wl1251: intr: 0x3
[ 2133.239929] wl1251: RX: FW +1
[ 2133.239929] wl1251: RX counter: 7
[ 2133.239959] wl1251: WL1251_ACX_INTR_RX0_DATA
[ 2133.240081] wl1251: rx skb 0xc61c3480: 88 B
[ 2133.240203] wl1251: WL1251_ACX_INTR_TX_RESULT
[ 2133.240478] wl1251: tx status id 0 skb 0xc635f480 failures 0 rate 0x1
status 0x0 ()
[ 2133.251251] wl1251: elp work
[ 2133.264434] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2133.479278] wlan0: no IPv6 routers present
[ 2134.269470] mmc0: Command CRC error
[ 2134.269561] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2135.284484] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2136.289428] mmc0: Command CRC error
[ 2136.289489] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2137.304504] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2138.309478] mmc0: Command CRC error
[ 2138.309539] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2139.324523] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2140.329437] mmc0: Command CRC error
[ 2140.329498] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2141.344512] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2142.349456] mmc0: Command CRC error
[ 2142.349548] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2143.364501] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2144.369476] mmc0: Command CRC error
[ 2144.369537] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2145.384490] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2146.389404] mmc0: Command CRC error
[ 2146.389495] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2147.404541] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2148.409454] mmc0: Command CRC error
[ 2148.409545] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2149.424530] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2150.429534] mmc0: Command CRC error
[ 2150.429595] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2151.444488] mmc0:0001: error -110 reading SDIO_CCCR_INTx
[ 2152.449432] mmc0: Command CRC error
[ 2152.449523] mmc0:0001: error -84 reading SDIO_CCCR_INTx
[ 2152.969360] wl1251: mac80211 config ch 7 psm off power 20
[ 2152.969421] wl1251: waking up chip from elp
[ 2152.989410] wl1251: wakeup time: 20 ms
[ 2152.989440] wl1251: psm disabled
[ 2152.989471] wl1251: leaving psm
[ 2152.989471] wl1251: sleep auth cam
SDIO_CCCR_INT is in sdio_irq.c in driver/mmc/core
static int process_sdio_pending_irqs(struct mmc_card *card)
{
int i, ret, count;
unsigned char pending;
ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_INTx, 0, &pending);
if (ret) {
printk(KERN_DEBUG "%s: error %d reading SDIO_CCCR_INTx\n",
mmc_card_id(card), ret);
return ret;
}
...
so I think that the IRQ could not have been proprerly initialized and so
it would prevent PSM because:
it seem to want to enter PSM,then fail because of the IRQ issue and go
back to normal mode.
Denis.
^ permalink raw reply
* Re: rt2x00 & mac80211: correct usage of ieee80211_beacon_get_tim?
From: Helmut Schaa @ 2010-06-25 16:01 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless, Ivo van Doorn, Gertjan van Wingerde
In-Reply-To: <1277394714.3870.8.camel@jlt3.sipsolutions.net>
Am Donnerstag 24 Juni 2010 schrieb Johannes Berg:
> b) You need to get a new beacon frame from mac80211 only when it
> changes. You can do this from set_tim(). HOWEVER: since you're not
> getting a new one from mac80211 all the time anyway, you NEED to
> have the driver or firmware overwrite the DTIM count, like b43's
> firmware for example will do.
And the broad- and multicast buffering also needs to be done in the driver
(when the fw/hw cannot handle it) as mac80211 uses its own DTIM count for
deciding when to "release" buffered frames to the driver.
Helmut
^ permalink raw reply
* Re: [PATCH] b43: Add SDIO_DEVICE() for EW-CG1102GC
From: Michael Büsch @ 2010-06-25 13:29 UTC (permalink / raw)
To: Magnus Damm
Cc: linux-kernel, Tejun Heo, Stefano Brivio, netdev, linux-wireless,
John W. Linville, Albert Herranz
In-Reply-To: <20100625093254.9484.69877.sendpatchset@t400s>
On 06/25/2010 11:32 AM, Magnus Damm wrote:
> From: Magnus Damm<damm@opensource.se>
>
> This patch enables the EW-CG1102GC SDIO card in the b43 driver.
>
> b43-sdio mmc0:0001:1: Chip ID 14e4:4318
> ssb: Core 0 found: ChipCommon (cc 0x800, rev 0x0D, vendor 0x4243)
> ssb: Core 1 found: IEEE 802.11 (cc 0x812, rev 0x09, vendor 0x4243)
> ssb: Core 2 found: PCI (cc 0x804, rev 0x0C, vendor 0x4243)
> ssb: Core 3 found: PCMCIA (cc 0x80D, rev 0x07, vendor 0x4243)
> b43-phy0: Broadcom 4318 WLAN found (core revision 9)
> b43-phy0 debug: Found PHY: Analog 3, Type 2, Revision 7
> b43-phy0 debug: Found Radio: Manuf 0x17F, Version 0x2050, Revision 8
>
> Tested with openfwwf-5.2 using a SuperH SDHI host controller.
>
> Signed-off-by: Magnus Damm<damm@opensource.se>
> ---
>
> drivers/net/wireless/b43/sdio.c | 1 +
> 1 file changed, 1 insertion(+)
>
> --- 0001/drivers/net/wireless/b43/sdio.c
> +++ work/drivers/net/wireless/b43/sdio.c 2010-06-25 18:20:46.000000000 +0900
> @@ -182,6 +182,7 @@ static void b43_sdio_remove(struct sdio_
>
> static const struct sdio_device_id b43_sdio_ids[] = {
> { SDIO_DEVICE(0x02d0, 0x044b) }, /* Nintendo Wii WLAN daughter card */
> + { SDIO_DEVICE(0x0092, 0x0004) }, /* C-guys, Inc. EW-CG1102GC */
> { },
> };
>
>
ack
--
Greetings Michael.
^ permalink raw reply
* Re: [PATCH 0/3] b43: logging cleanups
From: Michael Büsch @ 2010-06-25 13:28 UTC (permalink / raw)
To: Joe Perches
Cc: John W. Linville, Stefano Brivio, linux-wireless, netdev,
linux-kernel, Larry.Finger, zajec5
In-Reply-To: <1277408432.1654.80.camel@Joe-Laptop.home>
On 06/24/2010 09:40 PM, Joe Perches wrote:
> On Thu, 2010-06-24 at 14:53 -0400, John W. Linville wrote:
>> On Sat, Jun 19, 2010 at 04:30:08PM -0700, Joe Perches wrote:
>>> Just some small cleanups
>>> Joe Perches (3):
>>> drivers/net/wireless/b43: Use local ratelimit_state
>>> drivers/net/wireless/b43: Logging cleanups
>>> drivers/net/wireless/b43: Rename b43_debug to b43_debugging
>> Any of the b43 guys want to express an opinion on these?
The cleanups, well, exchange one name for the other. I don't have a
strong opinion on one or the other. So in the end I don't see why
that stuff should be renamed. However, in the end I really do not care.
I'm not sure why we need an additional ratelimit here. Is it a policy
that every kernel driver should have local ratelimiting? If not, why
do you think b43 needs its own ratelimiting? Note that b43 does not
output a single line to dmesg in normal operation, after init has
finished (and ratelimit is disabled in init).
> Stefano, are you active here?
> Your last ack for b43 was Feb 2008.
> There have been 400+ commits to b43 without your ack.
>
> Should your name be moved from MAINTAINERS to CREDITS?
>
> $ ./scripts/get_maintainer.pl --rolestats -f drivers/net/wireless/b43/
> Stefano Brivio<stefano.brivio@polimi.it> (maintainer:B43 WIRELESS DRIVER)
> "John W. Linville"<linville@tuxdriver.com> (maintainer:NETWORKING [WIREL...,commit_signer:204/240=85%)
> "Rafał Miłecki"<zajec5@gmail.com> (commit_signer:83/240=35%)
> "Gábor Stefanik"<netrolller.3d@gmail.com> (commit_signer:44/240=18%)
> Michael Buesch<mb@bu3sch.de> (commit_signer:39/240=16%)
> Larry Finger<Larry.Finger@lwfinger.net> (commit_signer:13/240=5%)
> linux-wireless@vger.kernel.org (open list:B43 WIRELESS DRIVER)
> netdev@vger.kernel.org (open list:NETWORKING DRIVERS)
> linux-kernel@vger.kernel.org (open list)
I think these statistics are almost worthless for b43.
--
Greetings Michael.
^ permalink raw reply
* Re: [PATCH net-next] MAINTAINERS: b43 updates
From: Michael Büsch @ 2010-06-25 13:22 UTC (permalink / raw)
To: Larry Finger
Cc: Joe Perches, John W. Linville, Stefano Brivio, linux-wireless,
netdev, linux-kernel, zajec5, Gábor Stefanik
In-Reply-To: <4C241770.6030701@lwfinger.net>
On 06/25/2010 04:41 AM, Larry Finger wrote:
> On 06/24/2010 06:57 PM, Joe Perches wrote:
>> On Thu, 2010-06-24 at 18:53 -0500, Larry Finger wrote:
>>> I never said that b43 is unmaintained. It is definitely getting much
>>> more than "odd fixes".
>>
>> If Stefano isn't maintaining it, who is?
>
> We are working on that.
Well, there are some developers working on the driver and there
are some developers that do not actively work on the driver but used
to work on it in the past (that includes me). Neither of them is an
official maintainer (yet). I used to be a maintainer, but I dropped
my official MAINTAINERS file entry, because I do not actively work
on b43 anymore. However, I still read the patches going into the driver
and comment on them as appropriate.
So well. I think b43 does not have a maintainer. But it's
not unmaintained. There are lots of people working on it. I don't think
an official maintainer is needed. Patches are sent directly to John
(the wireless maintainer) and the b43 development crew reviews them.
There's no problem with that.
--
Greetings Michael.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox