01 Dec, 2011
1 commit
-
This patch converts the drivers in net/rfkill/* to use the
module_platform_driver() macro which makes the code smaller and a bit
simpler.Cc: "David S. Miller"
Cc: "John W. Linville"
Cc: Johannes Berg
Cc: Antonio Ospite
Cc: Rhyland Klein
Signed-off-by: Axel Lin
Acked-by: Rhyland Klein
Signed-off-by: John W. Linville
29 Nov, 2011
39 commits
-
Add more data when inconsistencies occur in the AGG state machine.
Signed-off-by: Emmanuel Grumbach
Signed-off-by: Wey-Yi Guy
Signed-off-by: John W. Linville -
Not sure it is the best way to do it, but many times we want to know what the
configuration options were enabled for the compiled driver.
Let's just log the options during load time; so there were be no confusion.Signed-off-by: Wey-Yi Guy
Signed-off-by: John W. Linville -
missing the string, add it
Signed-off-by: Wey-Yi Guy
Signed-off-by: John W. Linville -
Since the uCode hasn't been released (yet?),
warn only if using older than API 4, but load
anything up to API 6.Signed-off-by: Johannes Berg
Signed-off-by: Wey-Yi Guy
Signed-off-by: John W. Linville -
This makes handling the calibration data more generic
and no longer requires updating IWL_CALIB_MAX when a
new uCode comes with more calibration packets. Since
we just copy the data back, there's also no need for
understanding which calibration we received -- we can
just reflect it back to the runtime uCode.Signed-off-by: Johannes Berg
Signed-off-by: Wey-Yi Guy
Signed-off-by: John W. Linville -
The init microcode knows very well which calibrations
are required and sends us results for those that are.
Consequently, we can just send all of those to the RT
uCode again.The problem with having the driver know about this is
that it is a uCode feature, not a hardware feature so
the config is completely unsuitable.The only thing we need to check is whether the device
needs crystal calibration or not, add a new parameter
to the configuration for that.This makes new uCode work on 6000 series devices.
Signed-off-by: Johannes Berg
Signed-off-by: Wey-Yi Guy
Signed-off-by: John W. Linville -
Create new testmode commands to suppot indirect access
of peripheral register.
- IWL_TM_CMD_APP2DEV_INDIRECT_REG_READ32
- IWL_TM_CMD_APP2DEV_INDIRECT_REG_WRITE32Meanwhile, add affix "DIRECT" into original register access
commands for better discrimination with new commands.
- IWL_TM_CMD_APP2DEV_DIRECT_REG_READ32
- IWL_TM_CMD_APP2DEV_DIRECT_REG_WRITE32
- IWL_TM_CMD_APP2DEV_DIRECT_REG_WRITE8Signed-off-by: Kenny Hsu
Signed-off-by: Wey-Yi Guy
Signed-off-by: John W. Linville -
Optimize ath5k_cw_validate by using the classic (X & (X - 1)) == 0
check to see if a number is power of 2.v2: Use functions from log2.h instead
Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
According to documentation higher DCUs have higher priority and should
be used for beacons and CAB traffic. More specifically DCU 9 should be
used for beacons and DCU 8 for CAB traffic, I assumed DCU 7 should be
OK for UAPSD traffic.Note that DCU 8 and 9 are special because they can only be mapped to a single
QCU each but since we use a 1:1 mapping between QCUs and DCUs anyway we don't
have to change much.P.S. I also did a few related cleanups on qcu.c and ath5k.h
Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
No need to take ath5k_hw as an argument.
Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
MRR support and 2GHz radio override belong in ah_capabilities and we
should use them (e.g. so far we used to set mrr descriptor without
checking if MRR support is enabled + we checked for MRR support 2
times, one by trying to set up an MRR descriptor and another one based
on MAC version).Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
Add a module parameter to disable hw rf kill switch (GPIO interrupt) because
in some cases when the card doesn't come with the laptop, EEPROM configuration
doesn't match laptop's configuration and rf kill interrupt always fires up and
disables hw. I thought of moving this to debugfs and make it per-card but
this way it's easier for users and distros to handle.Signed-off-by: Nick Kossifidis
Tested-by: Pavel Roskin
Signed-off-by: John W. Linville -
There is no short calibration on AR5210, make sure we treat it always
as full calibration.Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
No functional changes
Add kernel doc for all ath5k_hw_* functions and strcucts. Also do some cleanup,
rename ath5k_hw_init_beacon to ath5k_hw_init_beacon_timers, remove an unused
variable from ath5k_hw_pcu_init and a few obsolete macros, mostly related to XR.Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
Use usleep_range where possible to reduce busy waits
Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
Noise floor calibration does not interfere with traffic and should run more
often as part of our "short calibration". The full calibration is not the
noise floor calibration but the AGC + Gain_F (on RF5111 and RF5112) calibration
and should run less often because it does interfere with traffic.So
Short calibration -> I/Q & NF Calibration
Long calibration -> Short + AGC + Gain_FThis patch was for some time on my pub/ dir on www.kernel.org and has been tested
by a few people and me. I think it's O.K. to go in.I also changed ah_calibration to ah_iq_cal_needed to make more sense.
v2 Use a workqueue instead of a tasklet for calibration
Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
No functional changes, just a few comments/documentation/cleanup
Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
Add TXNOFRM to INT_TX_ALL since it's a TX interrupt too.
Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
Since card has 12 tx queues and we want to keep track of the interrupts
per queue we can't fit all these interrupt bits on a single register.
So we have 5 registers, the primary interrupt status register (PISR) and
the 4 secondary interupt status registers (SISRs).In order to be able to read them all at once (atomic operation) Atheros
introduced the Read-And-Clear registers to make things easier. So when
reading RAC_PISR register, hw does a read on PISR and all SISRs, returns
the value of PISR, copies all SISR values to their shadow copies (RAC_SISRx)
and clears PISR and SISRs. This saves us from reading PISR/SISRs in a sequence.So far we 've used this approach and MadWiFi/Windows driver etc also used it
for years.It turns out this operation is not atomic after all (at least not on all cards)
That means it's possible to loose some interrupts because they came after the
copy step and hw cleared them on the clean step !That's probably the reason we got missed beacons, got stuck queues etc and
couldn't figure out what was going on.With this patch we switch from RaC operation to an alternative method (that
makes more sense IMHO anyway, I just chose to be on the safe side so far).
Instead of reading RAC registers, we read the normal PISR/SISR registers and
clear any bits we got by writing them back on the register. This will clear only
the bits we got on our read step and leave any new bits unaffected (at least
that's what docs say). So if any new interrupts come up we won't miss it.I've tested this with an AR5213 and an AR2425 and it seems O.K.
Many thanks to Adrian Chadd for debuging this and reviewing the patch !
v2: Make sure we don't clear PISR bits that map to SISR generated interrupts
(added a comment on the code for this)Signed-off-by: Nick Kossifidis
Signed-off-by: John W. Linville -
There's little point in this config symbol, if
tracing is disabled the overhead is negligible
and if you think it's too bad you can always
turn off tracing completely.Also remove the part where we don't have sparse
check the tracing code -- it seems that it can
now deal with it (or the code changed).Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
Lose about two levels of unnecessary indentation.
Signed-off-by: Thomas Pedersen
Signed-off-by: John W. Linville -
We used to initiate a path discovery when receiving a frame for which
there is no forwarding information. To cut down on PREQ spam, just send
a (gated) PERR in response.Also separate path discovery logic from nexthop querying. This patch
means we no longer queue frames when forwarding, so kill the PERR TX
stuff in discard_frame().Signed-off-by: Thomas Pedersen
Signed-off-by: John W. Linville -
As per 802.11mb 13.9.11.3
Signed-off-by: Thomas Pedersen
Signed-off-by: Javier Cardona
Signed-off-by: John W. Linville -
We can't rely on ieee80211_select_queue() to do its job at this point
since the skb->protocol is not yet known. Instead, factor out and reuse
the queue mapping logic for injected frames.Also, to mitigate congestion, forwarded frames should be dropped if the
outgoing queue was stopped. This was not correctly implemented as we
were not checking the right queue. Furthermore, we were dropping frames
that had arrived to their destination if that queue was stopped.Signed-off-by: Thomas Pedersen
Signed-off-by: Javier Cardona
Signed-off-by: John W. Linville -
HWMP originator and target addresses were switched on the air but also
on reception, which is why path selection still worked.Signed-off-by: Thomas Pedersen
Signed-off-by: John W. Linville -
Don't write the TA until next hop is actually known, since we might need
the original TA for sending a PERR. Previously we would send a PERR to
ourself if path resolution for a forwarded frame failed.Signed-off-by: Thomas Pedersen
Signed-off-by: Javier Cardona
Signed-off-by: John W. Linville -
Signed-off-by: Chun-Yeow Yeoh
Signed-off-by: Thomas Pedersen
Signed-off-by: John W. Linville -
Signed-off-by: Veli-Pekka Peltola
Signed-off-by: John W. Linville -
Signed-off-by: Ben Greear
Signed-off-by: John W. Linville -
In ancient times it was necessary to manually initialize the bus field of an
spi_driver to spi_bus_type. These days this is done in spi_driver_register(),
so we can drop the manual assignment.The patch was generated using the following coccinelle semantic patch:
//
@@
identifier _driver;
@@
struct spi_driver _driver = {
.driver = {
- .bus = &spi_bus_type,
},
};
//Signed-off-by: Lars-Peter Clausen
Cc: Dan Williams
Cc: "John W. Linville"
Cc: Christian Lamparter
Cc: Luciano Coelho
Cc: libertas-dev@lists.infradead.org
Cc: linux-wireless@vger.kernel.org
Acked-by: Luciano Coelho
Signed-off-by: John W. Linville -
It doesn't have any actual effect here, but we should
skb_put() *before* copying the data.Signed-off-by: Eliad Peller
Signed-off-by: John W. Linville -
Emmanuel reported that my previous patches to enable
handing all fragments to drivers at once triggered
the warning that the SKB queue wasn't empty. This is
happening when we actually queue up some frames and
don't hand them to the driver (queues are stopped).The reason for it is that my code that splices the
frame(s) over to the pending queue didn't re-init
the local queue, so skb_queue_empty() was false. Fix
this by using the _init versions of the splicing.Also, convert the warning to WARN_ON_ONCE.
Reported-by: Emmanuel Grumbach
Signed-off-by: Johannes Berg
Tested-by: Emmanuel Grumbach
Signed-off-by: John W. Linville -
Previously BlockAcks were always dropped by the rt2800 hardware while
BlockAckReqs were always accepted. However, both are only useful on
monitor interfaces at the moment and both are control frames. So
pass them up when mac80211 sets FIF_CONTROL.Signed-off-by: Helmut Schaa
Acked-by: Gertjan van Wingerde
Acked-by: Ivo van Doorn
Signed-off-by: John W. Linville -
The recent discussion regarding an incorrect return of IRQ_HANDLED
from rt2800pci caused me to look at this PCI interrupt routine. I
discovered that changes were needed.Signed-off-by: Larry Finger
Signed-off-by: John W. Linville -
This fixes frequent WARN_ONs when using AP VLAN + aggregation, as these vifs
are virtual and not registered with drivers.
Use sta_info_get_bss instead of sta_info_get in aggregation callbacks, so
that these callbacks can find the station entry when called with the AP vif.Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
Add additional debug logging of initiator and reason when rx
aggregation session is stoppedSigned-off-by: Nikolay Martynov
Signed-off-by: John W. Linville -
Use WLAN_BACK_RECIPIENT instead of hardcoded 0 for clarity
Signed-off-by: Nikolay Martynov
Signed-off-by: John W. Linville -
Currently tx aggregation is not being timed out even if timeout is
specified when aggregation is opened. Tx tid stays active until delba
arrives from recipient (i.e. recipient times out tid when it is
inactive).
The problem with this approach is that delba can get lost in the air
and tx tid will stay perpetually opened on the originator while closed
on recipient thus all data sent via this tid will be lost.
This patch implements tx tid timeouting in way very similar to rx tid
timeouting.Signed-off-by: Nikolay Martynov
Signed-off-by: John W. Linville -
Change parameter to device pointer for bus layer interface function
brcmf_sdbrcm_bus_stop. This is part of the fullmac bus interface
refactoring.Reviewed-by: Pieter-Paul Giesberts
Reviewed-by: Arend van Spriel
Signed-off-by: Franky Lin
Signed-off-by: John W. Linville