Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
ok damien@
|
|
- change sign extension such that we do not rely on >> being an
arithmetic shift on signed integers
- various changes to AR9003 code, fix Tx path, enable Tx IQ calibration
|
|
from ath9k.
|
|
|
|
no need to set KEY3&KEY4 entries in the split TKIP MIC case (these
entries are set to 0 already.)
|
|
cache is already cleared at startup and entries >64 will never have
their MAC addresses set. removes pairs of writes in set_key.
|
|
|
|
|
|
|
|
capability in the HT Capabilities field of the HT IE (not used yet.)
|
|
|
|
|
|
opposite) and on AR9380 2.0.
tested on my AR9280 2.1 with a NETGEAR WNHDE111 AP.
|
|
chips (AR9003), which differs from the currently supported
families (AR5008, AR9001 and AR9002).
The main differences (from a driver point of view) are:
* DMA:
Tx and Rx descriptors have changed.
A single Tx descriptor can now reference up to 4 scatter/gather
DMA segments.
There is now a DMA ring for reporting Tx status with separate
Tx status descriptors (this ring is used to report Tx status for
all the Tx FIFOs).
Rx status descriptors are now put at the beginning of Rx buffers
and do not need to be allocated separately from buffers.
There are two Rx FIFOs (low priority and high priority) instead
of one.
* ROM:
The AR9003 family uses OTP-ROM instead of EEPROM.
Reading the ROM is totally insane since vendors can provide only
the chunks of ROM that differ from a default image (and thus the
default image has to be stored in the driver).
This is referenced as "compressed ROM" in the Linux driver, though
there is no real compression involved, at least for the moment.
* PHY registers:
All PHY registers have changed.
Some registers offsets do not fit on 16 bits anymore, but
since they are 32-bit aligned, we can still make them fit on
16 bits to save .rodata space in initialization tables.
* MAC registers:
Some MAC registers offsets have changed (GPIO, interrupt masks)
which is quite annoying (though ~98% remain the same.)
* Initialization values:
Initialization values are now split in mac/soc/bb/radio blocks
and pre/core/post phases in the Linux driver. I have chosen to
not go that road and merge these blocks in modal and non-modal
initialization values (similar to the other families).
The initialization order remains exactly the same as the Linux
driver though.
To manage these differences, I have split athn.c in two backends:
ar5008.c contains the bits that are specific to the AR5008,
AR9001 and AR9002 families (used by ar5416.c, ar9280.c,
ar9285.c and ar9287.c) and that were previously in athn.c.
ar9003.c contains the bits that are specific to the new
AR9003 family (used by ar9380.c only for now.)
I have introduced a thin hardware abstraction layer (actually
a set of pointers to functions) that is used in athn.c.
My intent is to keep this abstraction layer as thin as possible
and not to create another ugly pile of abstraction layers a la
MadWifi.
I think I've managed to keep things sane, probably at the expense
of duplicating some code in both ar5008.c and ar9003.c, but at
least we do not have to dig through layers and layers of virtual
descriptors to figure out what is mapped to the hardware.
Tested for non-regression on various AR5416 (sparc64+i386), AR9281
and AR9285 (i386 only) adapters.
AR9380 part is not tested (hardware is not available to the general
public yet).
Committed over my AR9285 2.0.
|
|
sysctl.h was reliant on this particular include, and many drivers included
sysctl.h unnecessarily. remove sysctl.h or add proc.h as needed.
ok deraadt
|
|
|
|
until i figure out why TX sometimes gets stucked.
a full reset was already necessary on AR9280 devices, so there is
no change for these devices.
|
|
Check for emptiness of the TX queue instead of lastds != NULL.
I have a feeling this might fix the "device timeout" issues reported
by Rivo Nurges on his AR5418 unveiled by athn.c r1.28 commit, though
he is not around to confirm.
This is a candidate for -stable.
|
|
check result of carrier leakage calibration and redo calibration if needed
add support for newer AR9285 chips (AR9285 XE 2.0).
tested for non-regression on a DNXA-95
"Still seems to work here" kettenis@
|
|
|
|
|
|
and athn are only theoretically interesting. i33380211_node fixes a real
bug in occupied channel detection.
ok damien@
|
|
- return 1 in athn_intr for the gpio intr too
|
|
baseband issues.
It would be cleaner to modify directly the initvals for AR9160 but
I want to keep the exact same initvals as the Linux ath9k driver.
from ath9k
|
|
instead of the other way around. Fixes interrupt accounting.
ok damien@
|
|
|
|
vice-versa, and do a full reset of the chip when it happens.
This does not affect the AR9280 since a full reset is always
necessary when the channel changes.
Should fix dual-band AR5416 devices (problem reported by Rivo Nurges).
|
|
- call athn_set_multi on SIOCADDMULTI/SIOCDELMULTI
|
|
|
|
if the current mode is 802.11a or 802.11b.
found by gcc svn.
ok damien@
|
|
|
|
usable size of the PCU TX FIFO to 2KB even though the hardware
has 4KB.
|
|
the interface is up and running by properly clearing the condition.
|
|
power off the cardbus slot after athn_attach() and in athn_stop().
|
|
|
|
|
|
fix 802.11a TXTIME computation (802.11a has a 16us SIFS interval
but does not have the 6us signal extension that ERP-OFDM has so
we can use the same code for 11a and 11g provided that we add
the SIFS nterval in the athn_txtime() function itself.)
|
|
prodded by deraadt
|
|
reminded by deraadt
|
|
connected to raise an interrupt when the pin goes low (or high
depending on the polarity of the radio switch.)
turn the interface down when the interrupt occurs.
this is the same behaviour as in wpi(4) and iwn(4).
cleanup interrupts processing while i'm here.
remove ATHN_INTR_MITIGATION compile option (it is set by default.)
|
|
|
|
use proper debug levels for diagnostic messages such that we don't
spam the logs when athn_debug is low.
|
|
|
|
|
|
function does not take it into account. oops.
|
|
|
|
|