* [PATCH 2/6] ath5k: remove own (wrong) IEEE80211_MAX_LEN
From: Bob Copeland @ 2010-08-15 17:03 UTC (permalink / raw)
To: linville, jirislaby, mickflemm, lrodriguez
Cc: linux-wireless, ath5k-devel, Bob Copeland
In-Reply-To: <1281891795-14718-1-git-send-email-me@bobcopeland.com>
From: Nick Kossifidis <mickflemm@gmail.com>
Use the version already supplied in include/linux/ieee80211.h.
Signed-off-by: Bob Copeland <me@bobcopeland.com>
---
drivers/net/wireless/ath/ath5k/ath5k.h | 5 +----
drivers/net/wireless/ath/ath5k/base.c | 2 +-
2 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h
index 9129e51..f399c4d 100644
--- a/drivers/net/wireless/ath/ath5k/ath5k.h
+++ b/drivers/net/wireless/ath/ath5k/ath5k.h
@@ -175,7 +175,7 @@
#define AR5K_TUNE_ADDITIONAL_SWBA_BACKOFF 0
#define AR5K_TUNE_RADAR_ALERT false
#define AR5K_TUNE_MIN_TX_FIFO_THRES 1
-#define AR5K_TUNE_MAX_TX_FIFO_THRES ((IEEE80211_MAX_LEN / 64) + 1)
+#define AR5K_TUNE_MAX_TX_FIFO_THRES ((IEEE80211_MAX_FRAME_LEN / 64) + 1)
#define AR5K_TUNE_REGISTER_TIMEOUT 20000
/* Register for RSSI threshold has a mask of 0xff, so 255 seems to
* be the max value. */
@@ -343,9 +343,6 @@ struct ath5k_srev_name {
#define AR5K_SREV_PHY_5413 0x61
#define AR5K_SREV_PHY_2425 0x70
-/* IEEE defs */
-#define IEEE80211_MAX_LEN 2500
-
/* TODO add support to mac80211 for vendor-specific rates and modes */
/*
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index cc080d0..efd9350 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1709,7 +1709,7 @@ ath5k_rx_start(struct ath5k_softc *sc)
struct ath5k_buf *bf;
int ret;
- common->rx_bufsize = roundup(IEEE80211_MAX_LEN, common->cachelsz);
+ common->rx_bufsize = roundup(IEEE80211_MAX_FRAME_LEN, common->cachelsz);
ATH5K_DBG(sc, ATH5K_DEBUG_RESET, "cachelsz %u rx_bufsize %u\n",
common->cachelsz, common->rx_bufsize);
--
1.7.1.1
^ permalink raw reply related
* [PATCH 3/6] ath5k: clean up some comments
From: Bob Copeland @ 2010-08-15 17:03 UTC (permalink / raw)
To: linville, jirislaby, mickflemm, lrodriguez
Cc: linux-wireless, ath5k-devel, Bob Copeland
In-Reply-To: <1281891795-14718-1-git-send-email-me@bobcopeland.com>
This fixes a few misspellings, word repetitions, and some grammar
nits in ath5k comments. No code changes.
Signed-off-by: Bob Copeland <me@bobcopeland.com>
---
drivers/net/wireless/ath/ath5k/ani.c | 6 +-
drivers/net/wireless/ath/ath5k/attach.c | 6 +-
drivers/net/wireless/ath/ath5k/base.c | 58 ++++++++++++++--------------
drivers/net/wireless/ath/ath5k/dma.c | 4 +-
drivers/net/wireless/ath/ath5k/eeprom.c | 4 +-
drivers/net/wireless/ath/ath5k/phy.c | 15 +++----
drivers/net/wireless/ath/ath5k/reg.h | 2 +-
drivers/net/wireless/ath/ath5k/reset.c | 22 +++++-----
drivers/net/wireless/ath/ath5k/rfbuffer.h | 4 +-
9 files changed, 59 insertions(+), 62 deletions(-)
diff --git a/drivers/net/wireless/ath/ath5k/ani.c b/drivers/net/wireless/ath/ath5k/ani.c
index 26dbe65..e4a5f04 100644
--- a/drivers/net/wireless/ath/ath5k/ani.c
+++ b/drivers/net/wireless/ath/ath5k/ani.c
@@ -552,9 +552,9 @@ ath5k_ani_mib_intr(struct ath5k_hw *ah)
if (ah->ah_sc->ani_state.ani_mode != ATH5K_ANI_MODE_AUTO)
return;
- /* if one of the errors triggered, we can get a superfluous second
- * interrupt, even though we have already reset the register. the
- * function detects that so we can return early */
+ /* If one of the errors triggered, we can get a superfluous second
+ * interrupt, even though we have already reset the register. The
+ * function detects that so we can return early. */
if (ath5k_ani_save_and_clear_phy_errors(ah, as) == 0)
return;
diff --git a/drivers/net/wireless/ath/ath5k/attach.c b/drivers/net/wireless/ath/ath5k/attach.c
index e72a1e5..aabad4f 100644
--- a/drivers/net/wireless/ath/ath5k/attach.c
+++ b/drivers/net/wireless/ath/ath5k/attach.c
@@ -139,12 +139,12 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
else
ah->ah_version = AR5K_AR5212;
- /*Fill the ath5k_hw struct with the needed functions*/
+ /* Fill the ath5k_hw struct with the needed functions */
ret = ath5k_hw_init_desc_functions(ah);
if (ret)
goto err_free;
- /* Bring device out of sleep and reset it's units */
+ /* Bring device out of sleep and reset its units */
ret = ath5k_hw_nic_wakeup(ah, 0, true);
if (ret)
goto err_free;
@@ -158,7 +158,7 @@ int ath5k_hw_attach(struct ath5k_softc *sc)
CHANNEL_5GHZ);
ah->ah_phy = AR5K_PHY(0);
- /* Try to identify radio chip based on it's srev */
+ /* Try to identify radio chip based on its srev */
switch (ah->ah_radio_5ghz_revision & 0xf0) {
case AR5K_SREV_RAD_5111:
ah->ah_radio = AR5K_RF5111;
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index efd9350..9c49b8d 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -612,7 +612,7 @@ ath5k_pci_probe(struct pci_dev *pdev,
goto err_free;
}
- /*If we passed the test malloc a ath5k_hw struct*/
+ /* If we passed the test, malloc an ath5k_hw struct */
sc->ah = kzalloc(sizeof(struct ath5k_hw), GFP_KERNEL);
if (!sc->ah) {
ret = -ENOMEM;
@@ -786,8 +786,8 @@ ath5k_attach(struct pci_dev *pdev, struct ieee80211_hw *hw)
/*
* Check if the MAC has multi-rate retry support.
* We do this by trying to setup a fake extended
- * descriptor. MAC's that don't have support will
- * return false w/o doing anything. MAC's that do
+ * descriptor. MACs that don't have support will
+ * return false w/o doing anything. MACs that do
* support it will return true w/o doing anything.
*/
ret = ath5k_hw_setup_mrr_tx_desc(ah, NULL, 0, 0, 0, 0, 0, 0);
@@ -827,7 +827,7 @@ ath5k_attach(struct pci_dev *pdev, struct ieee80211_hw *hw)
/*
* Allocate hardware transmit queues: one queue for
* beacon frames and one data queue for each QoS
- * priority. Note that hw functions handle reseting
+ * priority. Note that hw functions handle resetting
* these queues at the needed time.
*/
ret = ath5k_beaconq_setup(ah);
@@ -909,7 +909,7 @@ ath5k_detach(struct pci_dev *pdev, struct ieee80211_hw *hw)
/*
* NB: the order of these is important:
* o call the 802.11 layer before detaching ath5k_hw to
- * insure callbacks into the driver to delete global
+ * ensure callbacks into the driver to delete global
* key cache entries can be handled
* o reclaim the tx queue data structures after calling
* the 802.11 layer as we'll get called back to reclaim
@@ -1514,7 +1514,7 @@ ath5k_txq_setup(struct ath5k_softc *sc,
/*
* Enable interrupts only for EOL and DESC conditions.
* We mark tx descriptors to receive a DESC interrupt
- * when a tx queue gets deep; otherwise waiting for the
+ * when a tx queue gets deep; otherwise we wait for the
* EOL to reap descriptors. Note that this is done to
* reduce interrupt load and this only defers reaping
* descriptors, never transmitting frames. Aside from
@@ -1859,7 +1859,7 @@ ath5k_update_beacon_rssi(struct ath5k_softc *sc, struct sk_buff *skb, int rssi)
}
/*
- * Compute padding position. skb must contains an IEEE 802.11 frame
+ * Compute padding position. skb must contain an IEEE 802.11 frame
*/
static int ath5k_common_padpos(struct sk_buff *skb)
{
@@ -1878,10 +1878,9 @@ static int ath5k_common_padpos(struct sk_buff *skb)
}
/*
- * This function expects a 802.11 frame and returns the number of
- * bytes added, or -1 if we don't have enought header room.
+ * This function expects an 802.11 frame and returns the number of
+ * bytes added, or -1 if we don't have enough header room.
*/
-
static int ath5k_add_padding(struct sk_buff *skb)
{
int padpos = ath5k_common_padpos(skb);
@@ -1901,10 +1900,18 @@ static int ath5k_add_padding(struct sk_buff *skb)
}
/*
- * This function expects a 802.11 frame and returns the number of
- * bytes removed
+ * The MAC header is padded to have 32-bit boundary if the
+ * packet payload is non-zero. The general calculation for
+ * padsize would take into account odd header lengths:
+ * padsize = 4 - (hdrlen & 3); however, since only
+ * even-length headers are used, padding can only be 0 or 2
+ * bytes and we can optimize this a bit. We must not try to
+ * remove padding from short control frames that do not have a
+ * payload.
+ *
+ * This function expects an 802.11 frame and returns the number of
+ * bytes removed.
*/
-
static int ath5k_remove_padding(struct sk_buff *skb)
{
int padpos = ath5k_common_padpos(skb);
@@ -1925,14 +1932,6 @@ ath5k_receive_frame(struct ath5k_softc *sc, struct sk_buff *skb,
{
struct ieee80211_rx_status *rxs;
- /* The MAC header is padded to have 32-bit boundary if the
- * packet payload is non-zero. The general calculation for
- * padsize would take into account odd header lengths:
- * padsize = (4 - hdrlen % 4) % 4; However, since only
- * even-length headers are used, padding can only be 0 or 2
- * bytes and we can optimize this a bit. In addition, we must
- * not try to remove padding from short control frames that do
- * not have payload. */
ath5k_remove_padding(skb);
rxs = IEEE80211_SKB_RXCB(skb);
@@ -2281,10 +2280,11 @@ ath5k_beacon_setup(struct ath5k_softc *sc, struct ath5k_buf *bf)
* default antenna which is supposed to be an omni.
*
* Note2: On sectored scenarios it's possible to have
- * multiple antennas (1omni -the default- and 14 sectors)
- * so if we choose to actually support this mode we need
- * to allow user to set how many antennas we have and tweak
- * the code below to send beacons on all of them.
+ * multiple antennas (1 omni -- the default -- and 14
+ * sectors), so if we choose to actually support this
+ * mode, we need to allow the user to set how many antennas
+ * we have and tweak the code below to send beacons
+ * on all of them.
*/
if (ah->ah_ant_mode == AR5K_ANTMODE_SECTOR_AP)
antenna = sc->bsent & 4 ? 2 : 1;
@@ -2333,7 +2333,7 @@ ath5k_beacon_send(struct ath5k_softc *sc)
}
/*
* Check if the previous beacon has gone out. If
- * not don't don't try to post another, skip this
+ * not, don't don't try to post another: skip this
* period and wait for the next. Missed beacons
* indicate a problem and should not occur. If we
* miss too many consecutive beacons reset the device.
@@ -2905,8 +2905,8 @@ static int ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb,
ATH5K_DBG(sc, ATH5K_DEBUG_XMIT, "tx in monitor (scan?)\n");
/*
- * the hardware expects the header padded to 4 byte boundaries
- * if this is not the case we add the padding after the header
+ * The hardware expects the header padded to 4 byte boundaries.
+ * If this is not the case, we add the padding after the header.
*/
padsize = ath5k_add_padding(skb);
if (padsize < 0) {
@@ -3274,7 +3274,7 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw,
/* Set multicast bits */
ath5k_hw_set_mcast_filter(ah, mfilt[0], mfilt[1]);
- /* Set the cached hw filter flags, this will alter actually
+ /* Set the cached hw filter flags, this will later actually
* be set in HW */
sc->filter_flags = rfilt;
diff --git a/drivers/net/wireless/ath/ath5k/dma.c b/drivers/net/wireless/ath/ath5k/dma.c
index 484f318..58bb6c5 100644
--- a/drivers/net/wireless/ath/ath5k/dma.c
+++ b/drivers/net/wireless/ath/ath5k/dma.c
@@ -377,11 +377,11 @@ int ath5k_hw_set_txdp(struct ath5k_hw *ah, unsigned int queue, u32 phys_addr)
*
* This function increases/decreases the tx trigger level for the tx fifo
* buffer (aka FIFO threshold) that is used to indicate when PCU flushes
- * the buffer and transmits it's data. Lowering this results sending small
+ * the buffer and transmits its data. Lowering this results sending small
* frames more quickly but can lead to tx underruns, raising it a lot can
* result other problems (i think bmiss is related). Right now we start with
* the lowest possible (64Bytes) and if we get tx underrun we increase it using
- * the increase flag. Returns -EIO if we have have reached maximum/minimum.
+ * the increase flag. Returns -EIO if we have reached maximum/minimum.
*
* XXX: Link this with tx DMA size ?
* XXX: Use it to save interrupts ?
diff --git a/drivers/net/wireless/ath/ath5k/eeprom.c b/drivers/net/wireless/ath/ath5k/eeprom.c
index ae316fe..39722dd 100644
--- a/drivers/net/wireless/ath/ath5k/eeprom.c
+++ b/drivers/net/wireless/ath/ath5k/eeprom.c
@@ -661,7 +661,7 @@ ath5k_eeprom_init_11bg_2413(struct ath5k_hw *ah, unsigned int mode, int offset)
* (eeprom versions < 4). For RF5111 we have 11 pre-defined PCDAC
* steps that match with the power values we read from eeprom. On
* older eeprom versions (< 3.2) these steps are equaly spaced at
- * 10% of the pcdac curve -until the curve reaches it's maximum-
+ * 10% of the pcdac curve -until the curve reaches its maximum-
* (11 steps from 0 to 100%) but on newer eeprom versions (>= 3.2)
* these 11 steps are spaced in a different way. This function returns
* the pcdac steps based on eeprom version and curve min/max so that we
@@ -1113,7 +1113,7 @@ ath5k_eeprom_read_pcal_info_5112(struct ath5k_hw *ah, int mode)
*/
/* For RF2413 power calibration data doesn't start on a fixed location and
- * if a mode is not supported, it's section is missing -not zeroed-.
+ * if a mode is not supported, its section is missing -not zeroed-.
* So we need to calculate the starting offset for each section by using
* these two functions */
diff --git a/drivers/net/wireless/ath/ath5k/phy.c b/drivers/net/wireless/ath/ath5k/phy.c
index 6284c38..c7c4465 100644
--- a/drivers/net/wireless/ath/ath5k/phy.c
+++ b/drivers/net/wireless/ath/ath5k/phy.c
@@ -115,7 +115,7 @@ static unsigned int ath5k_hw_rfb_op(struct ath5k_hw *ah,
\**********************/
/*
- * This code is used to optimize rf gain on different environments
+ * This code is used to optimize RF gain on different environments
* (temperature mostly) based on feedback from a power detector.
*
* It's only used on RF5111 and RF5112, later RF chips seem to have
@@ -302,7 +302,7 @@ static bool ath5k_hw_rf_check_gainf_readback(struct ath5k_hw *ah)
}
/* Perform gain_F adjustment by choosing the right set
- * of parameters from rf gain optimization ladder */
+ * of parameters from RF gain optimization ladder */
static s8 ath5k_hw_rf_gainf_adjust(struct ath5k_hw *ah)
{
const struct ath5k_gain_opt *go;
@@ -367,7 +367,7 @@ done:
return ret;
}
-/* Main callback for thermal rf gain calibration engine
+/* Main callback for thermal RF gain calibration engine
* Check for a new gain reading and schedule an adjustment
* if needed.
*
@@ -433,7 +433,7 @@ done:
return ah->ah_gain.g_state;
}
-/* Write initial rf gain table to set the RF sensitivity
+/* Write initial RF gain table to set the RF sensitivity
* this one works on all RF chips and has nothing to do
* with gain_F calibration */
int ath5k_hw_rfgain_init(struct ath5k_hw *ah, unsigned int freq)
@@ -496,7 +496,7 @@ int ath5k_hw_rfgain_init(struct ath5k_hw *ah, unsigned int freq)
/*
- * Setup RF registers by writing rf buffer on hw
+ * Setup RF registers by writing RF buffer on hw
*/
int ath5k_hw_rfregs_init(struct ath5k_hw *ah, struct ieee80211_channel *channel,
unsigned int mode)
@@ -571,7 +571,7 @@ int ath5k_hw_rfregs_init(struct ath5k_hw *ah, struct ieee80211_channel *channel,
return -EINVAL;
}
- /* If it's the first time we set rf buffer, allocate
+ /* If it's the first time we set RF buffer, allocate
* ah->ah_rf_banks based on ah->ah_rf_banks_size
* we set above */
if (ah->ah_rf_banks == NULL) {
@@ -3035,9 +3035,6 @@ ath5k_hw_txpower(struct ath5k_hw *ah, struct ieee80211_channel *channel,
/* Limit max power if we have a CTL available */
ath5k_get_max_ctl_power(ah, channel);
- /* FIXME: Tx power limit for this regdomain
- * XXX: Mac80211/CRDA will do that anyway ? */
-
/* FIXME: Antenna reduction stuff */
/* FIXME: Limit power on turbo modes */
diff --git a/drivers/net/wireless/ath/ath5k/reg.h b/drivers/net/wireless/ath/ath5k/reg.h
index 55b4ac6..05ef587 100644
--- a/drivers/net/wireless/ath/ath5k/reg.h
+++ b/drivers/net/wireless/ath/ath5k/reg.h
@@ -1911,7 +1911,7 @@
#define AR5K_PHY_TURBO 0x9804 /* Register Address */
#define AR5K_PHY_TURBO_MODE 0x00000001 /* Enable turbo mode */
#define AR5K_PHY_TURBO_SHORT 0x00000002 /* Set short symbols to turbo mode */
-#define AR5K_PHY_TURBO_MIMO 0x00000004 /* Set turbo for mimo mimo */
+#define AR5K_PHY_TURBO_MIMO 0x00000004 /* Set turbo for mimo */
/*
* PHY agility command register
diff --git a/drivers/net/wireless/ath/ath5k/reset.c b/drivers/net/wireless/ath/ath5k/reset.c
index f5434eb..4154959 100644
--- a/drivers/net/wireless/ath/ath5k/reset.c
+++ b/drivers/net/wireless/ath/ath5k/reset.c
@@ -959,7 +959,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
AR5K_QUEUE_DCU_SEQNUM(0));
}
- /* TSF accelerates on AR5211 durring reset
+ /* TSF accelerates on AR5211 during reset
* As a workaround save it here and restore
* it later so that it's back in time after
* reset. This way it'll get re-synced on the
@@ -1080,7 +1080,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
return ret;
/* Spur info is available only from EEPROM versions
- * bigger than 5.3 but but the EEPOM routines will use
+ * greater than 5.3, but the EEPROM routines will use
* static values for older versions */
if (ah->ah_mac_srev >= AR5K_SREV_AR5424)
ath5k_hw_set_spur_mitigation_filter(ah,
@@ -1173,11 +1173,11 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
/* Set RSSI/BRSSI thresholds
*
* Note: If we decide to set this value
- * dynamicaly, have in mind that when AR5K_RSSI_THR
- * register is read it might return 0x40 if we haven't
- * wrote anything to it plus BMISS RSSI threshold is zeroed.
+ * dynamically, keep in mind that when AR5K_RSSI_THR
+ * register is read, it might return 0x40 if we haven't
+ * written anything to it. Also, BMISS RSSI threshold is zeroed.
* So doing a save/restore procedure here isn't the right
- * choice. Instead store it on ath5k_hw */
+ * choice. Instead, store it in ath5k_hw */
ath5k_hw_reg_write(ah, (AR5K_TUNE_RSSI_THRES |
AR5K_TUNE_BMISS_THRES <<
AR5K_RSSI_THR_BMISS_S),
@@ -1235,7 +1235,7 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
/*
* Perform ADC test to see if baseband is ready
- * Set tx hold and check adc test register
+ * Set TX hold and check ADC test register
*/
phy_tst1 = ath5k_hw_reg_read(ah, AR5K_PHY_TST1);
ath5k_hw_reg_write(ah, AR5K_PHY_TST1_TXHOLD, AR5K_PHY_TST1);
@@ -1254,15 +1254,15 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
*
* This method is used to calibrate some static offsets
* used together with on-the fly I/Q calibration (the
- * one performed via ath5k_hw_phy_calibrate), that doesn't
+ * one performed via ath5k_hw_phy_calibrate), which doesn't
* interrupt rx path.
*
* While rx path is re-routed to the power detector we also
- * start a noise floor calibration, to measure the
+ * start a noise floor calibration to measure the
* card's noise floor (the noise we measure when we are not
- * transmiting or receiving anything).
+ * transmitting or receiving anything).
*
- * If we are in a noisy environment AGC calibration may time
+ * If we are in a noisy environment, AGC calibration may time
* out and/or noise floor calibration might timeout.
*/
AR5K_REG_ENABLE_BITS(ah, AR5K_PHY_AGCCTL,
diff --git a/drivers/net/wireless/ath/ath5k/rfbuffer.h b/drivers/net/wireless/ath/ath5k/rfbuffer.h
index e50baff..3ac4cff 100644
--- a/drivers/net/wireless/ath/ath5k/rfbuffer.h
+++ b/drivers/net/wireless/ath/ath5k/rfbuffer.h
@@ -25,10 +25,10 @@
*
* We don't write on those registers directly but
* we send a data packet on the chip, using a special register,
- * that holds all the settings we need. After we 've sent the
+ * that holds all the settings we need. After we've sent the
* data packet, we write on another special register to notify hw
* to apply the settings. This is done so that control registers
- * can be dynamicaly programmed during operation and the settings
+ * can be dynamically programmed during operation and the settings
* are applied faster on the hw.
*
* We call each data packet an "RF Bank" and all the data we write
--
1.7.1.1
^ permalink raw reply related
* [PATCH 0/6] ath5k cleanups and fixes
From: Bob Copeland @ 2010-08-15 17:03 UTC (permalink / raw)
To: linville, jirislaby, mickflemm, lrodriguez
Cc: linux-wireless, ath5k-devel, Bob Copeland
Hello,
Here are a few cleanups from myself and Nick, and a couple of
minor filter fixes, for 2.6.37.
Bob Copeland (4):
ath5k: clean up some comments
ath5k: remove monitor check in receive_frame_ok filter
ath5k: remove all mention of monitor iftype
ath5k: don't enable probe request rx for STAs
Nick Kossifidis (2):
ath5k: rename ath5k_hw_set_associd to _set_bssid
ath5k: remove own (wrong) IEEE80211_MAX_LEN
drivers/net/wireless/ath/ath5k/ani.c | 6 +-
drivers/net/wireless/ath/ath5k/ath5k.h | 7 +--
drivers/net/wireless/ath/ath5k/attach.c | 8 ++--
drivers/net/wireless/ath/ath5k/base.c | 81 +++++++++++++----------------
drivers/net/wireless/ath/ath5k/dma.c | 4 +-
drivers/net/wireless/ath/ath5k/eeprom.c | 4 +-
drivers/net/wireless/ath/ath5k/pcu.c | 13 ++---
drivers/net/wireless/ath/ath5k/phy.c | 15 ++---
drivers/net/wireless/ath/ath5k/reg.h | 2 +-
drivers/net/wireless/ath/ath5k/reset.c | 24 ++++----
drivers/net/wireless/ath/ath5k/rfbuffer.h | 4 +-
11 files changed, 77 insertions(+), 91 deletions(-)
^ permalink raw reply
* [PATCH 5/6] ath5k: remove all mention of monitor iftype
From: Bob Copeland @ 2010-08-15 17:03 UTC (permalink / raw)
To: linville, jirislaby, mickflemm, lrodriguez
Cc: linux-wireless, ath5k-devel, Bob Copeland
In-Reply-To: <1281891795-14718-1-git-send-email-me@bobcopeland.com>
Monitor interfaces are never seen by the driver so these
cases are never reached.
Signed-off-by: Bob Copeland <me@bobcopeland.com>
---
drivers/net/wireless/ath/ath5k/base.c | 8 +-------
1 files changed, 1 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 03808b8..e60b148 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -2325,8 +2325,7 @@ ath5k_beacon_send(struct ath5k_softc *sc)
ATH5K_DBG_UNLIMIT(sc, ATH5K_DEBUG_BEACON, "in beacon_send\n");
- if (unlikely(bf->skb == NULL || sc->opmode == NL80211_IFTYPE_STATION ||
- sc->opmode == NL80211_IFTYPE_MONITOR)) {
+ if (unlikely(bf->skb == NULL || sc->opmode == NL80211_IFTYPE_STATION)) {
ATH5K_WARN(sc, "bf=%p bf_skb=%p\n", bf, bf ? bf->skb : NULL);
return;
}
@@ -2900,9 +2899,6 @@ static int ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb,
ath5k_debug_dump_skb(sc, skb, "TX ", 1);
- if (sc->opmode == NL80211_IFTYPE_MONITOR)
- ATH5K_DBG(sc, ATH5K_DEBUG_XMIT, "tx in monitor (scan?)\n");
-
/*
* The hardware expects the header padded to 4 byte boundaries.
* If this is not the case, we add the padding after the header.
@@ -3048,7 +3044,6 @@ static int ath5k_add_interface(struct ieee80211_hw *hw,
case NL80211_IFTYPE_STATION:
case NL80211_IFTYPE_ADHOC:
case NL80211_IFTYPE_MESH_POINT:
- case NL80211_IFTYPE_MONITOR:
sc->opmode = vif->type;
break;
default:
@@ -3250,7 +3245,6 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw,
switch (sc->opmode) {
case NL80211_IFTYPE_MESH_POINT:
- case NL80211_IFTYPE_MONITOR:
rfilt |= AR5K_RX_FILTER_CONTROL |
AR5K_RX_FILTER_BEACON |
AR5K_RX_FILTER_PROBEREQ |
--
1.7.1.1
^ permalink raw reply related
* 4addr mode promisc problem
From: Jochen Friedrich @ 2010-08-15 16:52 UTC (permalink / raw)
To: linux-wireless
Hi,
in the current implementation of mac80211 4addr mode, bridging a
wireless interface to a wired one doesn't work as expected due to
promisc mode forwarding frames sent to a different "AP" to higher
layers...
Given this setup:
A -wireless link- AP -4addr mode link- B -ethernet- C
If I now ping C from A (all ARP entries are already set up), I get
exactly one response back.
This is what's happening:
A sends echo request to AP:
Frame Addr1=AP, Addr2=A, Addr3=C
AP adds CAM entry A=wlan0
B adds CAM entry A=wlan0.sta1
AP sends echo request to B
Frame Addr1=B, Addr2=AP, Addr3=C, Addr4=A
B doesn't have CAM entry for C, forwards echo request to eth0.
C replies with echo reply on eth0.
B adds CAM entry C=eth0
B hat CAM entry of A, sends echo reply to wlan0.sta1
Frame Addr1=AP, Addr2=B, Addr3=A, Addr4=C
AP sends echo reply to A
Frame Addr1=A, Addr2=AP, Addr3=C
B updates CAM entry C=wlan0.sta1
Here the problem happens. B receives the frame from AP to A. It
can't decrypt the frame but it still updates the CAM entry and any
future packet from A to C won't be forwarded to eth0 anymore.
IMHO, promisc mode on an interface with 4addr mode should only
affect addr3 processing, but not addr1. The current behaviour looks
like a bug to me.
Config on B (needs iw patch sent by me two weeks ago):
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet manual
pre-up iw wlan0 set 4addr on
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports wlan0 eth0
bridge_fd 0
bridge_stp off
wpa-ssid <my ssid>
wpa-psk <my password>
wpa-bridge br0
wpa-iface wlan0
Thanks,
Jochen
^ permalink raw reply
* Re: RTL8192E Kernel 2.6.32 Freeze
From: Larry Finger @ 2010-08-15 16:53 UTC (permalink / raw)
To: Fritz; +Cc: linux-wireless
In-Reply-To: <loom.20100815T155457-704@post.gmane.org>
On 08/15/2010 09:17 AM, Fritz wrote:
> Hi,
>
> I'm using the RTL8192E (r8192_pci) staging driver
> that comes with ubuntu kernel 2.6.32-24 and am
> experiencing frequent freezes on an
> Intel Atom N450 based system.
>
> Is this a known problem and is there perhaps a newer
> kernel that I should build and run instead?
>
> The freeze seems to occur whenever the card reconnects
> with the router, see for more detailed problem
> description
> http://ubuntuforums.org/showthread.php?t=1549483
Drivers in drivers/staging are not supported by this group. We look after the
ones in drivers/net/wireless. As the log message tells you, you have been warned
about using anything from staging. To see the full text, use 'dmesg | grep staging'.
I have no idea if it will help, but I suspect that 2.6.35 might be better than
2.6.32. You might also do a 'modinfo r8192_pci' to see who is listed as the
module author. He/she might be able to help.
Larry
^ permalink raw reply
* iwl3945 not associating on 2.6.35
From: Marcus Better @ 2010-08-15 7:42 UTC (permalink / raw)
To: linux-wireless
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
after upgrading from 2.6.34 to either 2.6.35 or 2.6.35.1, wpasupplicant will
no longer associate to my WPA2 access point. The log is full of "Failed to
initiate AP scan" messages.
Is this a known issue? I couldn't quite find out by sifting through the
archives... The system is a Thinkpad T61, x86_64, Debian sid, network-
manager and wpasupplicant 0.6.10-2.
Cheers,
Marcus
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iEYEARECAAYFAkxnmlcACgkQXjXn6TzcAQnMGACfWGBirSDBKoTpgC0wbvVprU3W
U3wAmgKGiivAZdln14CdkBWIF2hJd+BS
=84Cy
-----END PGP SIGNATURE-----
^ permalink raw reply
* RTL8192E Kernel 2.6.32 Freeze
From: Fritz @ 2010-08-15 14:17 UTC (permalink / raw)
To: linux-wireless
Hi,
I'm using the RTL8192E (r8192_pci) staging driver
that comes with ubuntu kernel 2.6.32-24 and am
experiencing frequent freezes on an
Intel Atom N450 based system.
Is this a known problem and is there perhaps a newer
kernel that I should build and run instead?
The freeze seems to occur whenever the card reconnects
with the router, see for more detailed problem
description
http://ubuntuforums.org/showthread.php?t=1549483
Cheers,
Fritz
^ permalink raw reply
* [PATCH] compat-wireless: make patches apply again.
From: Hauke Mehrtens @ 2010-08-15 12:28 UTC (permalink / raw)
To: lrodriguez; +Cc: linux-wireless, mcgrof, Hauke Mehrtens
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
patches/28-pm-qos-params.patch | 14 +++++++-------
1 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/patches/28-pm-qos-params.patch b/patches/28-pm-qos-params.patch
index cd8feca..e28d7a7 100644
--- a/patches/28-pm-qos-params.patch
+++ b/patches/28-pm-qos-params.patch
@@ -58,8 +58,8 @@ little wierd.
/* We have to signal any supplicant if we are disassociating */
if (associated)
@@ -6669,8 +6686,16 @@ static int __init ipw2100_init(void)
- if (ret)
- goto out;
+ printk(KERN_INFO DRV_NAME ": %s, %s\n", DRV_DESCRIPTION, DRV_VERSION);
+ printk(KERN_INFO DRV_NAME ": %s\n", DRV_COPYRIGHT);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
pm_qos_add_request(&ipw2100_pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
@@ -71,10 +71,10 @@ little wierd.
+ pm_qos_add_requirement(PM_QOS_CPU_DMA_LATENCY, "ipw2100",
+ PM_QOS_DEFAULT_VALUE);
+#endif
- #ifdef CONFIG_IPW2100_DEBUG
- ipw2100_debug_level = debug;
- ret = driver_create_file(&ipw2100_pci_driver.driver,
-@@ -6692,7 +6717,13 @@ static void __exit ipw2100_exit(void)
+
+ ret = pci_register_driver(&ipw2100_pci_driver);
+ if (ret)
+@@ -6697,7 +6722,13 @@ static void __exit ipw2100_exit(void)
&driver_attr_debug_level);
#endif
pci_unregister_driver(&ipw2100_pci_driver);
@@ -104,7 +104,7 @@ little wierd.
found->vif.bss_conf.beacon_int);
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
-@@ -514,7 +514,11 @@ static int ieee80211_scan_state_decision
+@@ -500,7 +500,11 @@ static int ieee80211_scan_state_decision
bad_latency = time_after(jiffies +
ieee80211_scan_get_channel_time(next_chan),
local->leave_oper_channel_time +
--
1.7.0.4
^ permalink raw reply related
* After compiling Openwrt, which image should I use for my TP-Link WR1043ND?
From: Robert Chan @ 2010-08-15 6:03 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
Dear all,
Sorry for reposting. The last one did not seem to have gone through.
I am pretty new to Openwrt. I got through the compiling of it, and
selected the ar71xx as my target and TP-Link WR1043ND v1 as my
platform.
Now, when I look into the /bin/ar71xx folder, however, I found quite a
few images:
openwrt-ar71xx-root.squashfs
openwrt-ar71xx-root.squashfs-4k
openwrt-ar71xx-uImage-gzip.bin
openwrt-ar71xx-uImage-lzma.bin
openwrt-ar71xx-vmlinux.bin
openwrt-ar71xx-vmlinux.elf
openwrt-ar71xx-vmlinux.gz
openwrt-ar71xx-vmlinux.lzma
Which image should I use to flash my router?
According to the "Using the Image Builder Howto, I should be expecting
something like openwrt-ar71xx-tl-wr1043nd-v1-squashfs.bin, right?
Also, it looks to me that openwrt-ar71xx-root.squashfs is the one, but
it is 30MB big. AFAIK, the tl-wr1043rd has only 32MB of RAM and 64MB of
flash, would it be too large?
Thanks very much in advance.
Robert
^ permalink raw reply
* After compiling Openwrt, which image should I use for my TP-Link WR1043ND?
From: Robert Chan @ 2010-08-15 4:57 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
Dear all,
I am pretty new to Openwrt. I got through the compiling of it, and
selected the ar71xx as my target and TP-Link WR1043ND v1 as my
platform.
Now, when I look into the /bin/ar71xx folder, however, I found quite a
few images:
openwrt-ar71xx-root.squashfs
openwrt-ar71xx-root.squashfs-4k
openwrt-ar71xx-uImage-gzip.bin
openwrt-ar71xx-uImage-lzma.bin
openwrt-ar71xx-vmlinux.bin
openwrt-ar71xx-vmlinux.elf
openwrt-ar71xx-vmlinux.gz
openwrt-ar71xx-vmlinux.lzma
Which image should I use to flash my router?
According to the "Using the Image Builder Howto, I should be expecting
something like openwrt-ar71xx-tl-wr1043nd-v1-squashfs.bin, right?
Also, it looks to me that openwrt-ar71xx-root.squashfs is the one, but
it is 30MB big. AFAIK, the tl-wr1043rd has only 32MB of RAM and 64MB of
flash, would it be too large?
Thanks very much in advance.
Robert
^ permalink raw reply
* RE: [PATCH 0/2] iwlwifi fix for 2.6.35
From: Guy, Wey-Yi W @ 2010-08-14 21:53 UTC (permalink / raw)
To: Marcel Holtmann
Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org,
ipw3945-devel@lists.sourceforge.net
In-Reply-To: <1281814953.23399.29.camel@localhost.localdomain>
SGkgTWFyY2VsLA0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogTWFyY2VsIEhv
bHRtYW5uIFttYWlsdG86bWFyY2VsQGhvbHRtYW5uLm9yZ10NClNlbnQ6IFNhdHVyZGF5LCBBdWd1
c3QgMTQsIDIwMTAgMTI6NDMgUE0NClRvOiBHdXksIFdleS1ZaSBXDQpDYzogbGludmlsbGVAdHV4
ZHJpdmVyLmNvbTsgbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwub3JnOyBpcHczOTQ1LWRldmVs
QGxpc3RzLnNvdXJjZWZvcmdlLm5ldA0KU3ViamVjdDogUmU6IFtQQVRDSCAwLzJdIGl3bHdpZmkg
Zml4IGZvciAyLjYuMzUNCg0KSGkgV2V5LVlpLA0KDQo+IFdoZW4gdHggcXVldWUgc3R1Y2ssIGl3
bHdpZmkgZHJpdmVyIHNob3VsZCBkZXRlY3QgYW5kIHJlbG9hZCB0aGUgZmlybXdhcmU7DQo+IGRp
ZmZlcmVudCBkZXZpY2VzIGhhcyBkaWZmZXJlbnQgdGltaW5nIHJlcXVpcmVtZW50LCBjaGFuZ2Ug
dGhlIHRpbWVvdXQNCj4gdmFsdWUgZm9yIDUwMDAgc2VyaWVzIGRldmljZXMgdG8gYXZvaWQgdW4t
bmVjZXNzYXJ5IGZpcm13YXJlIHJlbG9hZCB3aGljaA0KPiBjYW4gY2F1c2UgZGV2aWNlIGJlY29t
ZSB1bnN0YWJsZS4NCj4NCj4gVGhpcyBmaXhlczoNCj4gaHR0cDovL2FydGljbGUuZ21hbmUub3Jn
L2dtYW5lLmxpbnV4Lmtlcm5lbC53aXJlbGVzcy5nZW5lcmFsLzUzNTUyDQo+DQo+IFdleS1ZaSBH
dXkgKDIpOg0KPiAgIGl3bHdpZmk6IGxvbmcgbW9uaXRvciB0aW1lcg0KPiAgIGl3bHdpZmk6IHVz
ZSBsb25nIG1vbml0b3IgdGltZXIgdG8gYXZvaWQgdW4tbmVjZXNzYXJ5IHJlbG9hZA0KSSB0aGlu
ayB0aGVzZSBxdWFsaWZ5IGV2ZW4gdG8gYWxsIC1zdGFibGUgdHJlZXMuIEkgaGF2ZSBhdCBsZWFz
dCBzZWVuIGl0DQp3aXRoIGEgMi42LjMzLjYga2VybmVsIGZyb20gRmVkb3JhIDEzLg0KDQpUaGFu
a3MgYW5kIGFncmVlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGl0IGNhbiBiZSBjbGVhbmluZyBhcHBs
eSBmaXJzdCwgdGhlbiBJIHdpbGwgc3VibWl0IGl0ICJzdGFibGUiDQoNCkJlc3QgUmVnYXJkcw0K
V2V5DQoNCg==
^ permalink raw reply
* Re: [PATCH 0/2] iwlwifi fix for 2.6.35
From: Marcel Holtmann @ 2010-08-14 19:42 UTC (permalink / raw)
To: Wey-Yi Guy; +Cc: linville, linux-wireless, ipw3945-devel
In-Reply-To: <1281800751-20784-1-git-send-email-wey-yi.w.guy@intel.com>
Hi Wey-Yi,
> When tx queue stuck, iwlwifi driver should detect and reload the firmware;
> different devices has different timing requirement, change the timeout
> value for 5000 series devices to avoid un-necessary firmware reload which
> can cause device become unstable.
>
> This fixes:
> http://article.gmane.org/gmane.linux.kernel.wireless.general/53552
>
> Wey-Yi Guy (2):
> iwlwifi: long monitor timer
> iwlwifi: use long monitor timer to avoid un-necessary reload
I think these qualify even to all -stable trees. I have at least seen it
with a 2.6.33.6 kernel from Fedora 13.
Regards
Marcel
^ permalink raw reply
* Compat-wireless release for 2010-08-14 is baked
From: Compat-wireless cronjob account @ 2010-08-14 19:02 UTC (permalink / raw)
To: linux-wireless
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
494644 - Total upstream lines of code being pulled
^ permalink raw reply
* [PATCH 0/2] iwlwifi fix for 2.6.35
From: Wey-Yi Guy @ 2010-08-14 15:45 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy
When tx queue stuck, iwlwifi driver should detect and reload the firmware;
different devices has different timing requirement, change the timeout
value for 5000 series devices to avoid un-necessary firmware reload which
can cause device become unstable.
This fixes:
http://article.gmane.org/gmane.linux.kernel.wireless.general/53552
Wey-Yi Guy (2):
iwlwifi: long monitor timer
iwlwifi: use long monitor timer to avoid un-necessary reload
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
drivers/net/wireless/iwlwifi/iwl-1000.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-3945.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-4965.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-5000.c | 14 ++++++------
drivers/net/wireless/iwlwifi/iwl-6000.c | 32 +++++++++++++++---------------
drivers/net/wireless/iwlwifi/iwl-dev.h | 3 +-
6 files changed, 30 insertions(+), 29 deletions(-)
^ permalink raw reply
* [PATCH 1/2] iwlwifi: long monitor timer
From: Wey-Yi Guy @ 2010-08-14 15:45 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy
In-Reply-To: <1281800751-20784-1-git-send-email-wey-yi.w.guy@intel.com>
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Change the name for monitor timer, also adding define for long monitor
timer; long monitor timer can be used for the type of devices require longer
time to determine the uCode is stuck on tx and needed reload.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-1000.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-3945.c | 4 +-
drivers/net/wireless/iwlwifi/iwl-4965.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-5000.c | 14 ++++++------
drivers/net/wireless/iwlwifi/iwl-6000.c | 32 +++++++++++++++---------------
drivers/net/wireless/iwlwifi/iwl-dev.h | 3 +-
6 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index fec0262..0b779a4 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -265,7 +265,7 @@ struct iwl_cfg iwl1000_bgn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 128,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -297,7 +297,7 @@ struct iwl_cfg iwl1000_bg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_EXT_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 128,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 6950a78..8ccfcd0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -2731,7 +2731,7 @@ static struct iwl_cfg iwl3945_bg_cfg = {
.led_compensation = 64,
.broken_powersave = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.tx_power_by_driver = true,
};
@@ -2752,7 +2752,7 @@ static struct iwl_cfg iwl3945_abg_cfg = {
.led_compensation = 64,
.broken_powersave = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.tx_power_by_driver = true,
};
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index d6da356..d92b729 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2322,7 +2322,7 @@ struct iwl_cfg iwl4965_agn_cfg = {
.led_compensation = 61,
.chain_noise_num_beacons = IWL4965_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.temperature_kelvin = true,
.max_event_log_size = 512,
.tx_power_by_driver = true,
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index aacf377..cd9f9fc 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -510,7 +510,7 @@ struct iwl_cfg iwl5300_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -541,7 +541,7 @@ struct iwl_cfg iwl5100_bgn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -570,7 +570,7 @@ struct iwl_cfg iwl5100_abg_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -601,7 +601,7 @@ struct iwl_cfg iwl5100_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -632,7 +632,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -663,7 +663,7 @@ struct iwl_cfg iwl5150_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -693,7 +693,7 @@ struct iwl_cfg iwl5150_abg_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index af4fd50..b6468e9 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -388,7 +388,7 @@ struct iwl_cfg iwl6000g2a_2agn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -424,7 +424,7 @@ struct iwl_cfg iwl6000g2a_2abg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -459,7 +459,7 @@ struct iwl_cfg iwl6000g2a_2bg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -496,7 +496,7 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -532,7 +532,7 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -570,7 +570,7 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -606,7 +606,7 @@ struct iwl_cfg iwl6000g2b_2bg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -644,7 +644,7 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -680,7 +680,7 @@ struct iwl_cfg iwl6000g2b_bg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -721,7 +721,7 @@ struct iwl_cfg iwl6000i_2agn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -756,7 +756,7 @@ struct iwl_cfg iwl6000i_2abg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -791,7 +791,7 @@ struct iwl_cfg iwl6000i_2bg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -828,7 +828,7 @@ struct iwl_cfg iwl6050_2agn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1500,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -866,7 +866,7 @@ struct iwl_cfg iwl6050g2_bgn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1500,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -902,7 +902,7 @@ struct iwl_cfg iwl6050_2abg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1500,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -940,7 +940,7 @@ struct iwl_cfg iwl6000_3agn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
.max_event_log_size = 1024,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index f35bcad..2e97cd2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1049,7 +1049,8 @@ struct iwl_event_log {
#define IWL_DELAY_NEXT_FORCE_FW_RELOAD (HZ*5)
/* timer constants use to monitor and recover stuck tx queues in mSecs */
-#define IWL_MONITORING_PERIOD (1000)
+#define IWL_DEF_MONITORING_PERIOD (1000)
+#define IWL_LONG_MONITORING_PERIOD (5000)
#define IWL_ONE_HUNDRED_MSECS (100)
#define IWL_SIXTY_SECS (60000)
--
1.7.0.4
^ permalink raw reply related
* [PATCH 2/2] iwlwifi: use long monitor timer to avoid un-necessary reload
From: Wey-Yi Guy @ 2010-08-14 15:45 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy
In-Reply-To: <1281800751-20784-1-git-send-email-wey-yi.w.guy@intel.com>
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
For 5000 and 6000g2b series of devices, use long monitor timer to check
stuck tx queues.
.6000g2b series device, it is WiFi/BT combo device, there are some cases,
tx queues are not move for a period of time because the WiFi/BT coex.
.5000 series device, it is being reported firmware got reload more
often than necessary, so extend the timer to avoid un-necessary reload.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
---
drivers/net/wireless/iwlwifi/iwl-5000.c | 10 +++++-----
drivers/net/wireless/iwlwifi/iwl-6000.c | 12 ++++++------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index cd9f9fc..0cbefa3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -510,7 +510,7 @@ struct iwl_cfg iwl5300_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -541,7 +541,7 @@ struct iwl_cfg iwl5100_bgn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -570,7 +570,7 @@ struct iwl_cfg iwl5100_abg_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -601,7 +601,7 @@ struct iwl_cfg iwl5100_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
@@ -632,7 +632,7 @@ struct iwl_cfg iwl5350_agn_cfg = {
.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_LONG_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.ucode_tracing = true,
.sensitivity_calib_by_driver = true,
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index b6468e9..cee06b9 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -496,7 +496,7 @@ struct iwl_cfg iwl6000g2b_2agn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -532,7 +532,7 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -570,7 +570,7 @@ struct iwl_cfg iwl6000g2b_2bgn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -606,7 +606,7 @@ struct iwl_cfg iwl6000g2b_2bg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -644,7 +644,7 @@ struct iwl_cfg iwl6000g2b_bgn_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
@@ -680,7 +680,7 @@ struct iwl_cfg iwl6000g2b_bg_cfg = {
.support_ct_kill_exit = true,
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.chain_noise_scale = 1000,
- .monitor_recover_period = IWL_DEF_MONITORING_PERIOD,
+ .monitor_recover_period = IWL_LONG_MONITORING_PERIOD,
.max_event_log_size = 512,
.sensitivity_calib_by_driver = true,
.chain_noise_calib_by_driver = true,
--
1.7.0.4
^ permalink raw reply related
* Re: cfg80211 support for pre-auth
From: Johannes Berg @ 2010-08-14 12:18 UTC (permalink / raw)
To: Dhiraj Gaurh; +Cc: linux-wireless
In-Reply-To: <AANLkTin1=7JDXSJgTQ-L-9-r18VJY1fUVLPY+cPup8Pn@mail.gmail.com>
Hi,
On Fri, 2010-08-13 at 20:10 +0530, Dhiraj Gaurh wrote:
> Hello folks,
> PMK caching and pre-auth are not currently supported by
> cfg80211/nl80211/supplicant. Actually the former is only not supported
> by wpa_supplicant. I have fixed that and will be moving the code
> upstream shortly.
Sounds good.
> BUT the latter is not even supported by cfg/nl. Anybody working on
> that ? Actually support is not even there for using wext in this
> scenario. So you just fail certification if you use cfg/nl. I need to
> change this scenario.
> Currently thinking if it is better to add support in cfg/nl/supplicant
> or just use wext stuff and a patch.
> I need an API in cfg80211 to let the driver tell cfg that it has got
> beacon from another AP it can preauth with. Then the supplicant will
> start the pre-auth process when it receives the message.
I don't get it. You have the information, it's part of the scan results,
quite obviously. Roaming, and consequently pre-authentication, isn't
triggered by the driver. Or are you thinking about full-mac scenarios?
johannes
^ permalink raw reply
* Re: [PATCH] orinoco: Fix walking past the end of the buffer
From: Dave Kilroy @ 2010-08-14 9:45 UTC (permalink / raw)
To: Denis Kirjanov
Cc: linville, proski, hermes, davem, linux-wireless, orinoco-devel,
netdev
In-Reply-To: <20100811203216.GA25168@hera.kernel.org>
On Wed, Aug 11, 2010 at 9:32 PM, Denis Kirjanov <dkirjanov@kernel.org> wrote:
> diff --git a/drivers/net/wireless/orinoco/hw.c b/drivers/net/wireless/orinoco/hw.c
> index 077baa8..191bc03 100644
> --- a/drivers/net/wireless/orinoco/hw.c
> +++ b/drivers/net/wireless/orinoco/hw.c
> @@ -765,9 +765,12 @@ int orinoco_hw_get_act_bitrate(struct orinoco_private *priv, int *bitrate)
> if (bitrate_table[i].intersil_txratectrl == val)
> break;
>
> - if (i >= BITRATE_TABLE_SIZE)
> + if (i >= BITRATE_TABLE_SIZE) {
> printk(KERN_INFO "%s: Unable to determine current bitrate (0x%04hx)\n",
> priv->ndev->name, val);
> + *bitrate = 100001; /* Mark as invalid */
We should propogate the failure by returning an error in the return
code rather than a cryptic bitrate value. The calling function(s)
should then propogate the error through wext/cfg80211 as appropriate.
> + break;
> + }
>
> *bitrate = bitrate_table[i].bitrate * 100000;
> break;
We can also make the structure easier to understand by setting the
bitrate within the for loop. Something like the following (I only have
access to gmail ATM, so can't format a proper patch):
for (i = 0; i < BITRATE_TABLE_SIZE; i++)
if (bitrate_table[i].intersil_txratectrl == val) {
*bitrate = bitrate_table[i].bitrate * 100000;
break;
}
if (i >= BITRATE_TABLE_SIZE) {
printk(KERN_INFO "%s: Unable to determine current bitrate (0x%04hx)\n",
priv->ndev->name, val);
err = -EIO; /* maybe chose a better value... */
}
break;
Could you update the patch along those lines please?
Thanks,
Dave.
^ permalink raw reply
* Re: [PATCH v2] cfg80211: fix race between sysfs and cfg80211
From: Maxime Bizon @ 2010-08-14 6:31 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless
In-Reply-To: <1281638550.3803.4.camel@jlt3.sipsolutions.net>
On Thu, 2010-08-12 at 20:42 +0200, Johannes Berg wrote:
> Err, it was merged a long time ago
I'm hitting another race now, it appeared after I disabled
CONFIG_CRYPTO_MANAGER_TESTS (new option in 2.6.35.2).
I have a userspace daemon that listen for new phy event, and create and
configure an AP interface just after it gets the event.
The driver is still inside ieee80211_register_hw(), but the userspace is
able to create the AP interface before the call is over. Once
wiphy_register() is done, no lock seems to prevent this from happening.
ieee80211_init_rate_ctrl_alg() then fails with EBUSY, and
ieee80211_register_hw() starts unregistering the phy.
Is that expected ?
I was able to get past it by taking rtnl lock before wiphy_register()
--
Maxime
^ permalink raw reply
* [PATCH] ipw2100: don't sync status queue entries
From: John W. Linville @ 2010-08-13 22:47 UTC (permalink / raw)
To: linux-wireless; +Cc: John W. Linville
These are allocated with pci_alloc_consistent, so calling
pci_dma_sync_single_for_cpu is incorrect usage of the API. Remove this
misuse and consequently avoid the following backtrace:
WARNING: at lib/dma-debug.c:902 check_sync+0xce/0x43a()
Hardware name: 2373HU6
ipw2100 0000:02:02.0: DMA-API: device driver tries to sync DMA memory it has not allocated [device address=0x0000000034e88008] [size=8 bytes]
Modules linked in: microcode ipw2100(+) snd_seq_device ppdev libipw nsc_ircc snd_pcm lib80211 video output irda parport_pc cfg80211 parport thinkpad_acpi e1000 iTCO_wdt crc_ccitt snd_timer iTCO_vendor_support snd i2c_i801 pcspkr rfkill soundcore joydev snd_page_alloc yenta_socket radeon ttm drm_kms_helper drm i2c_algo_bit i2c_core [last unloaded: scsi_wait_scan]
Pid: 0, comm: swapper Tainted: G W 2.6.35-wl+ #8
Call Trace:
[<c043aa42>] warn_slowpath_common+0x6a/0x7f
[<c05d252a>] ? check_sync+0xce/0x43a
[<c043aaca>] warn_slowpath_fmt+0x2b/0x2f
[<c05d252a>] check_sync+0xce/0x43a
[<c046189a>] ? print_lock_contention_bug+0x11/0xb2
[<c05d2b6f>] debug_dma_sync_single_for_cpu+0x47/0x49
[<c06cbd3c>] ? ehci_irq+0x31/0x331
[<f82a224a>] ? ipw2100_irq_tasklet+0x24/0x5e9 [ipw2100]
[<f82a224a>] ? ipw2100_irq_tasklet+0x24/0x5e9 [ipw2100]
[<f82a221d>] pci_dma_sync_single_for_cpu.clone.1+0x42/0x4b [ipw2100]
[<f82a23a2>] ipw2100_irq_tasklet+0x17c/0x5e9 [ipw2100]
[<c043fd87>] tasklet_action+0x78/0xcb
[<c0440293>] __do_softirq+0xc4/0x183
[<c044038d>] do_softirq+0x3b/0x5f
[<c04404d0>] irq_exit+0x3a/0x6d
[<c0404423>] do_IRQ+0x8b/0x9f
[<c04038b5>] common_interrupt+0x35/0x3c
[<c062ecfa>] ? acpi_idle_enter_simple+0xfe/0x13c
[<c045007b>] ? exit_itimers+0x2d/0x73
[<c062ecfc>] ? acpi_idle_enter_simple+0x100/0x13c
[<c070bf10>] cpuidle_idle_call+0x78/0xdc
[<c040251c>] cpu_idle+0x9b/0xb7
[<c07b1dd2>] rest_init+0xa6/0xab
[<c0a4b96d>] start_kernel+0x389/0x38e
[<c0a4b0c9>] i386_start_kernel+0xc9/0xd0
Signed-off-by: John W. Linville <linville@tuxdriver.com>
---
drivers/net/wireless/ipw2x00/ipw2100.c | 8 --------
1 files changed, 0 insertions(+), 8 deletions(-)
diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c
index 1189dbb..996e9d7 100644
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
@@ -2723,14 +2723,6 @@ static void __ipw2100_rx_process(struct ipw2100_priv *priv)
packet = &priv->rx_buffers[i];
- /* Sync the DMA for the STATUS buffer so CPU is sure to get
- * the correct values */
- pci_dma_sync_single_for_cpu(priv->pci_dev,
- sq->nic +
- sizeof(struct ipw2100_status) * i,
- sizeof(struct ipw2100_status),
- PCI_DMA_FROMDEVICE);
-
/* Sync the DMA for the RX buffer so CPU is sure to get
* the correct values */
pci_dma_sync_single_for_cpu(priv->pci_dev, packet->dma_addr,
--
1.7.2.1
^ permalink raw reply related
* Sitecom WL-172 drops ~50% packets (rt2573)
From: Henk Poley @ 2010-08-13 22:34 UTC (permalink / raw)
To: linux-wireless
I'm running Ubuntu 10.04 with bleeding edge compat-wireless. Pinging
often doesn't even resolve DNS, if it does and I let it run for a
while it reports around 50% packets dropped. The Airport Extreme
basestation stats shows a stable ca. -70dBm connection. The local
wireless network performance is excellent with other network devices.
For example I stream MPEG2-TS video just fine with another 802.11g
machine. Also tested the USB dongle on a Windows 7 machine, and it
worked after installing the appropriate driver.
What are the next steps to debug this problem?
dmesg with irrelevant lines removed:
[ 15.092812] cfg80211: World regulatory domain updated:
[ 15.092819] (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp)
[ 15.092823] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 15.092827] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[ 15.092831] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[ 15.092834] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 15.092838] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 16.282712] phy0: Selected rate control algorithm 'minstrel'
[ 16.283937] Registered led device: rt73usb-phy0::radio
[ 16.283983] Registered led device: rt73usb-phy0::assoc
[ 16.285573] Registered led device: rt73usb-phy0::quality
[ 16.286528] usbcore: registered new interface driver rt73usb
[ 16.370910] type=1505 audit(1281736368.123:5):
operation="profile_replace" pid=630 name="/sbin/dhclient3"
[ 16.371640] type=1505 audit(1281736368.123:6):
operation="profile_replace" pid=630
name="/usr/lib/NetworkManager/nm-dhcp-client.action"
[ 16.372403] type=1505 audit(1281736368.127:7):
operation="profile_replace" pid=630
name="/usr/lib/connman/scripts/dhclient-script"
[ 16.470082] type=1505 audit(1281736368.223:8):
operation="profile_load" pid=631 name="/usr/bin/evince"
[ 16.479936] type=1505 audit(1281736368.231:9):
operation="profile_load" pid=631 name="/usr/bin/evince-previewer"
[ 16.486174] type=1505 audit(1281736368.239:10):
operation="profile_load" pid=631 name="/usr/bin/evince-thumbnailer"
[ 16.562356] type=1505 audit(1281736368.315:11):
operation="profile_load" pid=635 name="/usr/sbin/tcpdump"
[ 17.159682] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 24.951478] wlan0: deauthenticating from 00:19:e3:32:71:f6 by local
choice (reason=3)
[ 24.953549] wlan0: authenticate with 00:19:e3:32:71:f6 (try 1)
[ 24.960957] wlan0: authenticated
[ 24.962030] wlan0: associate with 00:19:e3:32:71:f6 (try 1)
[ 24.965056] wlan0: RX AssocResp from 00:19:e3:32:71:f6 (capab=0x31
status=0 aid=1)
[ 24.965064] wlan0: associated
[ 24.984546] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 24.984714] cfg80211: Calling CRDA for country: NL
^ permalink raw reply
* Compat-wireless release for 2010-08-13 is baked
From: Compat-wireless cronjob account @ 2010-08-13 19:03 UTC (permalink / raw)
To: linux-wireless
>From git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next
286bff9..16383b1 history -> origin/history
+ ab5f7cf...f55f020 master -> origin/master (forced update)
5af568c..ad41a1e stable -> origin/stable
* [new tag] next-20100813 -> next-20100813
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
494644 - Total upstream lines of code being pulled
^ permalink raw reply
* Re: i386 allmodconfig, current mainline
From: Randy Dunlap @ 2010-08-13 16:23 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Stephen Rothwell, Andrew Morton, Greg KH, David Woodhouse,
Mike Frysinger, Jesse Barnes, Kevin Curtis, Phillip Lougher,
Faisal Latif, Chien Tung, Dan Williams, Samuel Ortiz,
linux-kernel, netdev, linux-wireless, x86, linux-rdma
In-Reply-To: <AANLkTimtZ7H=rT68V6UGC2GBky8z9VJ5m6-pwFHfm7yw@mail.gmail.com>
On Tue, 10 Aug 2010 18:53:20 +0200 Geert Uytterhoeven wrote:
> On Tue, Aug 10, 2010 at 02:15, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> > On Mon, 9 Aug 2010 16:43:46 -0700 Andrew Morton <akpm@linux-foundation.org> wrote:
> >>
> >> Guys. What's goin' on out there?
> >
> > I guess we are all so up to date that noone does 32 bit builds any
> > more ... Also noone is bothering to look at the build logs:
> >
> > linus tree: http://kisskb.ellerman.id.au/kisskb/branch/3/
> > linux-next: http://kisskb.ellerman.id.au/kisskb/branch/9/
>
> Yeah, we have build failures migrating from -next to -linus :-(
>
> BTW, still no one has commented on http://lkml.org/lkml/2010/7/13/378?
OK.
The diff (regression) script output looks useful to me.
The log summary is still quite (too) verbose, or maybe that's partly due
to the number of warnings & errors. :(
Maybe someone could look at http://www.xenotime.net/linux/scripts/buildsummary.pl also.
Here is today's linux-next *i386* build summary, short mode (totals only):
> buildsummary.pl -t build*.out | more
build-r5372.out: totals: error/warning files: 27, errors: 3, warnings: 44, Section mismatches: 36
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5373.out: totals: error/warning files: 10, errors: 3, warnings: 14, Section mismatches: 36
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5374.out: totals: error/warning files: 29, errors: 0, warnings: 45, Section mismatches: 38
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5375.out: totals: error/warning files: 18, errors: 3, warnings: 36, Section mismatches: 38
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5377.out: totals: error/warning files: 21, errors: 0, warnings: 43, Section mismatches: 67
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5380.out: totals: error/warning files: 16, errors: 4, warnings: 22, Section mismatches: 81
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5381.out: totals: error/warning files: 17, errors: 3, warnings: 75, Section mismatches: 88
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5383.out: totals: error/warning files: 11, errors: 0, warnings: 32, Section mismatches: 130
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5384.out: totals: error/warning files: 23, errors: 3, warnings: 47, Section mismatches: 150
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5385.out: totals: error/warning files: 6, errors: 12, warnings: 9, Section mismatches: 160
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5386.out: totals: error/warning files: 10, errors: 1, warnings: 53, Section mismatches: 163
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5387.out: totals: error/warning files: 18, errors: 0, warnings: 45, Section mismatches: 164
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5388.out: totals: error/warning files: 7, errors: 1, warnings: 8, Section mismatches: 164
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5389.out: totals: error/warning files: 43, errors: 0, warnings: 80, Section mismatches: 167
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5390.out: totals: error/warning files: 12, errors: 0, warnings: 18, Section mismatches: 167
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5391.out: totals: error/warning files: 46, errors: 0, warnings: 77, Section mismatches: 170
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5392.out: totals: error/warning files: 15, errors: 12, warnings: 31, Section mismatches: 184
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5393.out: totals: error/warning files: 15, errors: 0, warnings: 23, Section mismatches: 187
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5394.out: totals: error/warning files: 76, errors: 0, warnings: 141, Section mismatches: 190
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5395.out: totals: error/warning files: 11, errors: 0, warnings: 18, Section mismatches: 192
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
build-r5396.out: totals: error/warning files: 22, errors: 0, warnings: 28, Section mismatches: 193
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
^ permalink raw reply
* Re: [PATCH] ath5k: disable ASPM L0s for all cards
From: Maxim Levitsky @ 2010-08-13 15:45 UTC (permalink / raw)
To: Luis R. Rodriguez
Cc: linville, linux-wireless, ath5k-devel, linux-kernel, David Quan,
Matthew Garrett, Tim Gardner, Jussi Kivilinna, stable
In-Reply-To: <1281713248-25761-1-git-send-email-lrodriguez@atheros.com>
On Fri, 2010-08-13 at 11:27 -0400, Luis R. Rodriguez wrote:
> From: Maxim Levitsky <maximlevitsky@gmail.com>
>
> Atheros PCIe wireless cards handled by ath5k do require L0s disabled.
> For distributions shipping with CONFIG_PCIEASPM (this will be enabled
> by default in the future in 2.6.36) this will also mean both L1 and L0s
> will be disabled when a pre 1.1 PCIe device is detected. We do know L1
> works correctly even for all ath5k pre 1.1 PCIe devices though but cannot
> currently undue the effect of a blacklist, for details you can read
> pcie_aspm_sanity_check() and see how it adjusts the device link
> capability.
>
> It may be possible in the future to implement some PCI API to allow
> drivers to override blacklists for pre 1.1 PCIe but for now it is
> best to accept that both L0s and L1 will be disabled completely for
> distributions shipping with CONFIG_PCIEASPM rather than having this
> issue present. Motivation for adding this new API will be to help
> with power consumption for some of these devices.
>
> Example of issues you'd see:
>
> - On the Acer Aspire One (AOA150, Atheros Communications Inc. AR5001
> Wireless Network Adapter [168c:001c] (rev 01)) doesn't work well
> with ASPM enabled, the card will eventually stall on heavy traffic
> with often 'unsupported jumbo' warnings appearing. Disabling
> ASPM L0s in ath5k fixes these problems.
>
> - On the same card you would see a storm of RXORN interrupts
> even though medium is idle.
>
> Credit for root causing and fixing the bug goes to Jussi Kivilinna.
>
> Cc: David Quan <David.Quan@atheros.com>
> Cc: Matthew Garrett <mjg59@srcf.ucam.org>
> Cc: Tim Gardner <tim.gardner@canonical.com>
> Cc: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
> Cc: stable@kernel.org
> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
> Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
> ---
>
> Maxim, it was just reported this patch never made it upstream
> so I just took the liberty to submit it and also clear up the
> commit log and comments a little more in terms of actual impact
> and possible future fixes. I've also Cc'd stable so this can
> get propagated down to 2.6.32 as well.
Sure. In fact I don't deserve much credit on this patch. It is just one
line and besides ASPM is disabled anyway.
Thanks for Jussi Kivilinna again for finding this.
Best regards,
Maxim Levitsky
>
> drivers/net/wireless/ath/ath5k/base.c | 21 +++++++++++++++++++++
> 1 files changed, 21 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
> index 0d5de25..373dcfe 100644
> --- a/drivers/net/wireless/ath/ath5k/base.c
> +++ b/drivers/net/wireless/ath/ath5k/base.c
> @@ -48,6 +48,7 @@
> #include <linux/netdevice.h>
> #include <linux/cache.h>
> #include <linux/pci.h>
> +#include <linux/pci-aspm.h>
> #include <linux/ethtool.h>
> #include <linux/uaccess.h>
> #include <linux/slab.h>
> @@ -476,6 +477,26 @@ ath5k_pci_probe(struct pci_dev *pdev,
> int ret;
> u8 csz;
>
> + /*
> + * L0s needs to be disabled on all ath5k cards.
> + *
> + * For distributions shipping with CONFIG_PCIEASPM (this will be enabled
> + * by default in the future in 2.6.36) this will also mean both L1 and
> + * L0s will be disabled when a pre 1.1 PCIe device is detected. We do
> + * know L1 works correctly even for all ath5k pre 1.1 PCIe devices
> + * though but cannot currently undue the effect of a blacklist, for
> + * details you can read pcie_aspm_sanity_check() and see how it adjusts
> + * the device link capability.
> + *
> + * It may be possible in the future to implement some PCI API to allow
> + * drivers to override blacklists for pre 1.1 PCIe but for now it is
> + * best to accept that both L0s and L1 will be disabled completely for
> + * distributions shipping with CONFIG_PCIEASPM rather than having this
> + * issue present. Motivation for adding this new API will be to help
> + * with power consumption for some of these devices.
> + */
> + pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S);
> +
> ret = pci_enable_device(pdev);
> if (ret) {
> dev_err(&pdev->dev, "can't enable device\n");
^ 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