267654 |
20-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
263447 |
20-Mar-2014 |
dim |
MFC r243164 (by adrian):
I'm not sure why ah_desc.h was required here, but it doesn't _need_ to be. So, just toss it.
There's no options or ah_desc fields in here.
Whilst I'm here, fix up the #ifdef and #define to mach.
|
249132 |
05-Apr-2013 |
mav |
MFC r227293 (by ed): Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs.
This means that their use is restricted to a single C file.
|
248085 |
09-Mar-2013 |
marius |
MFC: r227309 (partial)
Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs.
The SYSCTL_NODE macro defines a list that stores all child-elements of that node. If there's no SYSCTL_DECL macro anywhere else, there's no reason why it shouldn't be static.
|
248078 |
09-Mar-2013 |
marius |
MFC: r243857 (partial)
Mechanically substitute flags from historic mbuf allocator with malloc(9) flags in sys/dev.
|
246069 |
29-Jan-2013 |
pfg |
Clean some 'svn:executable' properties in the tree.
Submitted by: Christoph Mallon
While here, merge some other mergeinfo properties that were left behind from my commits
/head/include:r241008,241141,241181 /head/contrib/gcc:r244776,244792 /head/cddl:r238457,238509,238558
|
245449 |
15-Jan-2013 |
dim |
Revert the MFC to sys/dev/ath/ath_hal/ar9002/ar9285_attach.c again, since it does not compile on stable/9. During testing, I had a different local fix, so I failed to notice this did not work. Apologies for the breakage.
Pointy hat to: dim
|
245429 |
14-Jan-2013 |
dim |
Partial MFC of r234508 (by adrian):
"Upgrade" the AR9285 code to support PCI/ART EEPROM on flash.
I've just verified that this boots on an Atheros AP91. I haven't verified it with traffic though, so YMMV.
(This is a prerequisite for the coming clang 3.2 upgrade.)
|
243261 |
19-Nov-2012 |
adrian |
Merge r227468: Don't fondle this particular CCA register from extension channel.
|
242908 |
12-Nov-2012 |
dim |
MFC r242625:
Remove duplicate const specifiers in many drivers (I hope I got all of them, please let me know if not). Most of these are of the form:
static const struct bzzt_type { [...list of members...] } const bzzt_devs[] = { [...list of initializers...] };
The second const is unnecessary, as arrays cannot be modified anyway, and if the elements are const, the whole thing is const automatically (e.g. it is placed in .rodata).
I have verified this does not change the binary output of a full kernel build (except for build timestamps embedded in the object files).
Reviewed by: yongari, marius
|
235743 |
21-May-2012 |
jhb |
Toss bogus mergeinfo.
|
235738 |
21-May-2012 |
sbruno |
MFC r235634
Fix and update battery status bits according to linux driver
|
234753 |
28-Apr-2012 |
dim |
MFC r225941: Fix an unaligned access issue; tidy up OFDM/DS rate decoding from the PLCP.
This fixes a panic on PPC.
Submitted by: novel Obtained from: OpenBSD, sys/dev/ic/bwi.c r1.89
MFC r226181: Update from OpenBSD: Include 0x4402 in the bbp id mapping table used on older devices.
http://bcm-specs.sipsolutions.net/BackPlane agrees.
Obtained from: OpenBSD, sys/dev/ic/bwi.c r1.88
MFC r226182: Fix an incorrect use of sizeof().
Obtained from: OpenBSD sys/dev/ic/bwi.c r1.87
MFC r228621: Fix some net80211 enum nits: - ic_vap_create() uses an ieee80211_opmode argument - ieee80211_rate2media() takes an ieee80211_phymode argument - ieee80211_plcp2rate() takes an ieee80211_phytype argument - cast to enum ieee80211_protmode and ieee80211_roamingmode to silence compiler warnings
Submitted by: arundel@
|
232786 |
10-Mar-2012 |
gavin |
Merge r232250 from head:
Correct capitalization of "Hz" in user-visible text (manpages, printf(), etc).
|
229740 |
06-Jan-2012 |
dim |
MFC r228817:
Use the correct types when calling the decompression mask function.
There's currently no public code which uses this feature and the current reference driver doesn't enable this feature at all. It's possible it was used by a previous version of the driver and that indeed it should return HAL_STATUS; but at this point I'm happy to require that they complain and submit a patch.
This was found by LLVM compile-time type checking.
|
229733 |
06-Jan-2012 |
dim |
MFC r228980:
Reapply r228785 now it has been tested by Adrian. Also add comments with the old AR_SCR_SLE_XXX values, with a short explanation why they were changed.
Reviewed by: adrian
|
229461 |
04-Jan-2012 |
eadler |
MFC r227458, r226436:
- change "is is" to "is" or "it is" - change "the the" to "the" - other typo fixes
Approved by: lstewart
|
225736 |
23-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
225473 |
11-Sep-2011 |
adrian |
Fix the order of parameters passed to the HT frame duration calculation.
Approved by: re (kib)
|
225444 |
08-Sep-2011 |
adrian |
Update the TSF and next-TBTT methods to work for the AR5416 and later NICs. This is another commit in a series of TDMA support fixes for the 11n NICs.
* Move ath_hal_getnexttbtt() into the HAL; write methods for it. This returns a timer value in TSF, rather than TU.
* Move ath_hal_getcca() and ath_hal_setcca() into the HAL too, where they likely now belong.
* Create a new HAL capability: HAL_CAP_LONG_RXDESC_TSF. The pre-11n NICs write 15 bit TSF snapshots into the RX descriptor; the AR5416 and later write 32 bit TSF snapshots into the RX descriptor. * Use the new capability to choose between 15 and 31 bit TSF adjustment functions in ath_extend_tsf().
* Write ar5416GetTsf64() and ar5416SetTsf64() methods. ar5416GetTsf64() tries to compensate for TSF changes at the 32 bit boundary.
According to yin, this fixes the TDMA beaconing on 11n chipsets and TDMA stations can now associate/talk, but there are still issues with traffic stability which need to be investigated.
The ath_hal_extendtsf() function is also used in RX packet timestamping; this may improve adhoc mode on the 11n chipsets. It also will affect the timestamps seen in radiotap frames.
Submitted by: Kang Yin Su <cantona@cantona.net> Approved by: re (kib)
|
225431 |
07-Sep-2011 |
adrian |
Add a definition for ASYNC_CAUSE_CLR. It's not used yet, but the reference driver does clear the async interrupts after each service. I'll tinker with this in a future commit.
Obtained from: Atheros Approved by: re (kib)
|
225421 |
06-Sep-2011 |
adrian |
Fix 5ghz calibration logic when using AR9280 w/ fast clock.
When the fast clock (44mhz) is enabled for 5ghz HT20, the dual ADCs aren't enabled. Trying to do the ADC calibrations here would result in calibration never completing; this resulted in IQ calibration never running and thus performance issues in 11a/11n HT20 mode.
Leave it enabled for non-fastclock (40mhz) 11a mode and HT40 modes.
This has been fixed in discussion with Felix Fietkau (nbd) and discussions with the Atheros baseband team.
Linux ath9k now has a similar fix.
Approved by: re (kib)
|
225420 |
06-Sep-2011 |
adrian |
Fix the addac serial load register write for AR5416.
Obtained from: Linux, Atheros Approved by: re (kib)
|
225145 |
24-Aug-2011 |
adrian |
Fix a missing initialisation of bt_flags when setting up the TDMA beacon.
The AR5212 HAL didn't check this field; timers are enabled a different way.
The AR5416 HAL however did, and since this field was uninitialised, it had whatever was on the stack at the time. This lead to "unpredictable" behaviour.
This allows TDMA to work on the AR5416 and later chipsets.
Thanks to: paradyse@gmail.com Approved by: re (kib, blanket)
|
225125 |
24-Aug-2011 |
adrian |
TIM/Timer fixes for AR5416 and later:
* Fix SLEEP1/SLEEP2 register definitions; the CAB/Beacon timeout fields have changed in AR5416 and later * The TIM_PERIOD and DTIM_PERIOD registers are now microsecond fields, not TU.
Obtained from: Linux ath9k, Atheros reference Approved by: re (kib, blanket)
|
225111 |
23-Aug-2011 |
adrian |
These timer registers are all 1uS in resolution in AR5416 or later. Previous hardware had some as TU, some as 1/8th TU.
* Modify AR_NEXT_DBA and AR_NEXT_SWBA to use a new macro, ONE_EIGHTH_TU_TO_USEC(), which converts the 1/8th TU fields to USEC. This is just cosmetic and matches the Atheros reference driver.
* Fix AR_NEXT_TBTT, which is USEC, not TU.
Submitted by: paradyse@gmail.com Approved by: re (kib, blanket)
|
224734 |
09-Aug-2011 |
adrian |
Remove the now unneeded references to these DFS methods.
Sorry for the noise everyone.
Approved by: re (kib, blanket)
|
224724 |
09-Aug-2011 |
adrian |
Remove this call, now that I've solved the radar module problem without needing this particular modification.
It can be called during ath_dfs_radar_enable() and still achieve the same functionality, so I am.
Approved by: re (kib, blanket)
|
224720 |
08-Aug-2011 |
adrian |
And add another missing brace. Another pointy hat moment. This one however isn't used by any public code yet, so it didn't break the build.
Approved by: re (kib, blanket)
|
224719 |
08-Aug-2011 |
adrian |
Bitten again by the optional HALDEBUG compilation.
Remove this debugging, it's not needed anymore and when not enabled, those variables trigger a compiler warning.
Approved by: re (kib, blanket) Pointy-hat-to: adrian, for not testing a non-debug compile of this code enough
|
224718 |
08-Aug-2011 |
adrian |
The older HAL code sets up the regulatory domain once; FreeBSD/net80211 allows it to be overridden at runtime.
Thus, add a function which updates ah_dfsDomain after a channel set call to ath_hal_set_channels().
Approved by: re (kib, blanket)
|
224716 |
08-Aug-2011 |
adrian |
Introduce some more DFS related hooks, inspired both by local work and the Atheros reference code.
The radar detection code needs to know what the current DFS domain is. Since net80211 doesn't currently know this information, it's extracted from the HAL regulatory domain information.
The specifics:
* add a new ath_dfs API hook, ath_dfs_init_radar_filters(), which updates the radar filters whenever the regulatory domain changes. * add HAL_DFS_DOMAIN which describes the currently configured DFS domain . * add a new HAL internal variable which tracks the currently configured HAL DFS domain. * add a new HAL capability, HAL_CAP_DFS_DMN, which returns the currently configured HAL DFS domain setting. * update the HAL DFS domain setting whenever the channel setting is updated.
Since this isn't currently used by any radar code, these should all be no-ops for existing users.
Obtained from: Atheros Submitted by: KBC Networks, sibridge Approved by: re (kib, blanket)
|
224715 |
08-Aug-2011 |
adrian |
.. and add a missing bracket.
Approved by: re (kib, blanket)
|
224714 |
08-Aug-2011 |
adrian |
Fix method naming to match the reference HAL definition.
Obtained from: Atheros Approved by: re (kib, blanket)
|
224709 |
08-Aug-2011 |
adrian |
Add another HAL method - ah_isFastClockEnabled - which returns AH_TRUE if 5ghz fast clock is enabled in the current operating mode.
It's slightly dirty, but it's part of the reference HAL and used by the (currently closed-source) radar event code to map radar pulses back to microsecond durations.
Obtained from: Atheros Approved by: re (kib, blanket)
|
224644 |
04-Aug-2011 |
adrian |
Undo this for now. It's "right", but it means everything will rely on the ar9130 code.
Since at least one kernel config specifies individual ath HAL chips rather than just "device ath_hal" (arm/AVILA), I'm doing this so people aren't caught out when they update to -HEAD or 9.0 and discover their ath setup doesn't compile.
I'll revisit this with a proper fix sometime before 9.0-RELEASE.
Approved by: re (kib, blanket) Pointed out by: ray@ Pointy hat to: adrian@
|
224634 |
03-Aug-2011 |
adrian |
Add in a dirty hack that allows for AR9280/AR9285/AR9287 embedded systems, in the same way that AR9130 embedded systems work.
This isn't -everything- that is required - the PCI glue still needs to be taught about the eepromdata hint, along the same lines as the AHB glue.
Approved by: re (kib, blanket)
|
224633 |
03-Aug-2011 |
adrian |
* Fix a clash in structure naming which occurs with (closed source) radar detection code. This is just to make porting the atheros radar code easier.
* add a missing space.
Approved by: re (kib, blanket)
|
224624 |
03-Aug-2011 |
adrian |
Remove the EEPROM minor >= 19 check for txgaintype; that's only needed for Merlin / v14 eeprom formats.
Approved by: re (kib, blanket)
|
224588 |
02-Aug-2011 |
adrian |
Fix a corner case in RXEOL handling which was likely introduced by yours truly.
Before 802.11n, the RX descriptor list would employ the "self-linked tail descriptor" trick which linked the last descriptor back to itself. This way, the RX engine would never hit the "end" of the list and stop processing RX (and assert RXEOL) as it never hit a descriptor whose next pointer was 0. It would just keep overwriting the last descriptor until the software freed up some more RX descriptors and chained them onto the end.
For 802.11n, this needs to stop as a self-linked RX descriptor tickles the block-ack logic into ACK'ing whatever frames are received into that self-linked descriptor - so in very busy periods, you could end up with A-MPDU traffic that is ACKed but never received by the 802.11 stack. This would cause some confusion as the ADDBA windows would suddenly be out of sync.
So when that occured here, the last descriptor would be hit and the PCU logic would stop. It would only start again when the RX descriptor list was updated and the PCU RX engine was re-tickled. That wasn't being done, so RXEOL would be continuously asserted and no RX would continue.
This patch introduces a new flag - sc->sc_kickpcu - which when set, signals the RX task to kick the PCU after its processed whatever packets it can. This way completed packets aren't discarded.
In case some other task gets called which resets the hardware, don't update sc->sc_imask - instead, just update the hardware interrupt mask directly and let either ath_rx_proc() or ath_reset() restore the imask to its former setting.
Note: this bug was only triggered when doing a whole lot of frame snooping with serial console IO in the RX task. This would defer interrupt processing enough to cause an RX descriptor overflow. It doesn't happen in normal conditions.
Approved by: re (kib, blanket)
|
224550 |
31-Jul-2011 |
adrian |
Disable the RXORN/RXEOL interrupts if RXEOL occurs, preventing an interrupt storm.
This is easily triggered by flipping on and off tcpdump -y IEEE802_11_RADIO w/ witness enabled. This causes a whole lot of console IO and when you're attached to a serial console (eg on my AR7161 embedded board), the RX interrupt doesn't get called quickly enough and the RX queue fills up.
This wasn't a problem in the past because of the self-linked RX descriptor trick - the RX would never hit the "end" of the RX descriptor list. However this isn't possible for 802.11n (see previous commit history for why.)
Both Linux ath9k and the Atheros reference driver code do this; I'm just looking now for where they then restart the PCU receive. Right now the RX will just stop until the interface is reset.
Obtained from: Linux, Atheros Approved by: re (kib)
|
224542 |
31-Jul-2011 |
adrian |
Remove two debugging printf()s which snuck in during the testing of the last commit.
Approved by: re (kib) Pointy-hat-to: adrian@
|
224541 |
31-Jul-2011 |
adrian |
Implement the 4KB split transaction workaround for Merlin (AR9280).
The AR9280 apparently has an issue with descriptors which straddle a page boundary (4k). I'm not yet sure whether I should use PAGE_SIZE in the calculations or whether I should use 4096; the reference code uses 4096.
This patch fiddles with descriptor allocation so a descriptor entry doesn't straddle a 4kb address boundary. The descriptor memory allocation is made larger to contain extra descriptors and then the descriptor address is advanced to the next 4kb boundary where needed.
I've tested this both on Merlin (AR9280) and non-Merlin (in this case, AR9160.)
Obtained from: Linux, Atheros Approved by: re (kib)
|
224540 |
31-Jul-2011 |
adrian |
Fix typo!
Approved by: re (kib)
|
224539 |
31-Jul-2011 |
adrian |
Add extra flags for the radar event API. (They're not used by any public code at the current time.)
Approved by: re (kib)
|
224538 |
31-Jul-2011 |
adrian |
Add some more phyerr bits.
Obtained from: Atheros Approved by: re (kib)
|
224520 |
30-Jul-2011 |
adrian |
Fix incorrect error reporting during the dfs ioctl function.
Approved by: re (kib)
|
224519 |
30-Jul-2011 |
adrian |
Introduce the FRAC_5G EEPROM parameter.
This seems to indicate whether to program the NIC for fractional 5ghz mode (ie, 5mhz spaced channels, rather than 10 or 20mhz spacing) or not. The default (0) seems to mean "only program fractional mode if needed". A different value (eg 1) seems to always enable fractional 5ghz mode regardless of the frequency.
Obtained from: Atheros Approved by: re (kib)
|
224518 |
30-Jul-2011 |
adrian |
Prepare for embedded use of the AR9285/AR9287.
Calibration/PCI data that's written to flash (rather than EEPROM attached to the NIC) is typically already in host-endian. The existing checks end up swapping 16 bit words incorrectly - the correct solution would be to read the magic value and determine the EEPROM endianness from that. (This is what Linux does.)
This doesn't completely enable embedded use of the AR9285/AR9287 - notably, the EEPROM read methods need to be made generic and available to all EEPROM drivers. I'll worry about that later.
Approved by: re (kib)
|
224517 |
30-Jul-2011 |
adrian |
Fix AR5416 radar parameter initialisation.
* I messed up the order of parameter true/false; oops! * AR_PHY_RADAR_1 was being written at the wrong place, and was writing potential garbage to the hardware.
Approved by: re (kib)
|
224515 |
30-Jul-2011 |
adrian |
Fix the initial calibration sample count when doing ADC calibrations.
Obtained from: Atheros Approved by: re (kib)
|
224514 |
30-Jul-2011 |
adrian |
Fix ANI handling to work correctly when (trying) to receive radar errors.
* Teach the AR5212/AR5416 ANI code to use the RX filter methods, rather than calling the RX filter routines directly.
* Make HAL_ANI_PRESENT and HAL_ANI_MODE unconditionally available, regardless of whether ah_ani_function is masking it.
* (Mostly) fully disable ANI if interference mitigation is disabled. When disabled, the ANI code doesn't touch any ANI/PHY registers, leaving them the default value. This is in line with what the Atheros reference driver does.
* Correctly set the ANI parameters during ANI reset, rather than when ANI is enabled. In this way, if ANI is disabled or enabled whilst the NIC is not active (and there's no current channel), bogus parameters or a NULL pointer deference doesn't occur.
There's still some lingering issues - notably, the MIB events/interrupts aren't fully disabled, so MIB interrupts still occur. I'll worry about that later.
Approved by: re (kib)
|
224512 |
30-Jul-2011 |
adrian |
Bring over AR5416 specific RX filter get/set routines.
This in particular fixes radar PHY handling - on the AR5212 NIC, one enables the AR_PHY_ERR_RADAR bit in AR_PHY_ERR; the AR5416 and later also needs a bit set in AR_RX_FILTER.
A follow-up commit is needed to convert the AR5416 ANI code to use this particular method, as it's currently using the AR5212 methods directly.
Obtained from: Atheros Approved by: re (kib)
|
224510 |
30-Jul-2011 |
adrian |
I noticed that the Merlin NICs I had (AR9220, AR9280) never completed the ADC calibrations if the NIC is in 5ghz 11a or 5ghz HT/20 modes. I've been told that the dual-ADC is only engaged in turbo/40mhz modes.
Since Sowl (AR9160) seems to return valid-looking calibration data in 5ghz 20MHz modes, I'm only disabling it for Merlin for now. It may turn out I can disable it for all chipsets and only enable it for 40MHz modes.
Approved by: re (kib)
|
224509 |
30-Jul-2011 |
adrian |
Fix the AR9280 initial AGC calibration code.
It looks like this was mixed up with the AR9285 calibration code. This code is now more in line with what Linux ath9k and Atheros reference drivers do.
Obtained from: Atheros Approved by: re (kib)
|
224502 |
30-Jul-2011 |
adrian |
Reset the NIC if ANI is enabled or disabled.
Although this may not be what the original sysctl was designed to do, it feels a bit more "expected".
Before, if ANI is disabled, the initial ANI parameters are still written to the hardware, even if they're not enabled. "ANI enabled" would then adjust the noise immunity parameters dynamically. Disabling ANI would simply leave the existing noise immunity parameters where they are, and disable the dynamic part.
The problem is that disabling ANI doesn't leave the hardware in a consistent, predictable state - so asking a user to disable ANI wouldn't actually reset the NIC to a consistent set of PHY signal detection parameters, resulting in an unpredictable/unreliable outcome. This makes it difficult to get reliable debugging information from the user.
Approved by: re (kib)
|
224267 |
22-Jul-2011 |
adrian |
Implement a basic radar parameter API in the dfs_null module.
Since no actual radar data is ever handled, this won't do anything. It's mostly here as a reference for those who wish to experiment with radar detection.
Approved by: re (kib)
|
224245 |
21-Jul-2011 |
adrian |
This links in the ath dfs ioctl into the driver and defines the ioctl interface for DFS modules to use.
Since there's no open source dfs code yet, this doesn't introduce any operational changes.
Approved by: re (kib)
|
224244 |
21-Jul-2011 |
adrian |
Modify the radar API a little to be easier to "change" via run-time tools.
* introduce pe_enabled, which (will) indicate whether the radar detection stuff is enabled or not. Right now it's incorrectly set, based on something previously written. I'll sort it out later.
* Don't set HAL_PHYERR_PARAM_ENABLE in pe_relstep to say whether radar detection is on.
* Return whether blockradar, fir128 and enmaxrssi is enabled.
* Change some of the phyerr params to be integers rather than HAL_BOOL so they can be set to the NOPARAM value when the setup function is called. This is in line with other radar parameters.
* Add new configuration parameters for fir128, blockradar and enmaxrssi, rather than defaulting to off, on and on respectively.
Approved by: re (kib)
|
224243 |
21-Jul-2011 |
adrian |
Break out the PLL setup into (mostly) per-chip methods, rather than polluting the AR5416 code with later chipset support.
Note: ar9280InitPLL() supports Merlin (AR9280) and later (AR9285, AR9287.)
Submitted by: ssgriffonuser@gmail.com Approved by: re (kib)
|
224242 |
21-Jul-2011 |
adrian |
This re-enables HT40 channels for use when DFS is enabled.
These should be disabled for the AR5416 in hostap/mesh/ibss mode, as the AR5416 doesn't have support for radar detection on the ext channel of a HT40 setup. Later chips do.
Approved by: re (kib)
|
224226 |
20-Jul-2011 |
adrian |
These two are ath_hal regulatory domain updates from the Atheros reference driver.
* Australia should use FCC3_WORLD * Add some new SKUs; these are just the EEPROM values and haven't been fully defined yet. As such they won't affect anything.
Obtained from: Atheros Approved by: re (kib)
|
224045 |
14-Jul-2011 |
adrian |
Add a missing check for the global ath_hal_debug.
This was removed accidentally when the per HAL instance code was added, and not reverted when I added back the global debug variable (for early chip setup debugging.)
|
223671 |
29-Jun-2011 |
adrian |
Fix a corner case in STA beacon processing when a CSA is received but the AP doesn't transmit beacons.
If the AP requests a CSA (ie, a channel switch) and then enters CAC (channel availability check) for 60 seconds, it doesn't send beacons and it just listens for radar events (and other things which we don't do yet.)
Now, ath_newstate() was not resetting the beacon timer config on a transition to the RUN state when in STA mode - it was setting sc_syncbeacon, which simply updates the beacon config from the contents of the next received beacon.
This means the STA never generates beacon miss events.
If the AP goes into CAC for 60 seconds and recovers, the STA will happily receive the first beacon and reconfigure timers. But if it gets a radar event after that, it'll change channel again, not notify the station that it's changed channel.. and since the station is happily waiting for the first beacon to configure the beacon timer details from, it won't ever generate a beacon miss interrupt and it'll sit there forever (or until the AP appears on that channel once again.)
This change forces the last known beacon timer config to be written to hardware on a transition from CSA->RUN in STA mode. This forces bmiss events to occur and the STA will eventually (after a handful of beacon miss events) begin scanning for another access point.
|
223615 |
28-Jun-2011 |
adrian |
Make sure the extended regdomain word is initialised.
As with the AR9285, the AR9287 has a default word of 0x1F which means all the various bits in that field are set on by default.
|
223568 |
26-Jun-2011 |
adrian |
Fix beacon transmission after a channel set.
The DFS code was tickling the channel set directly whilst going through the state RUN -> CSA -> RUN. This only changed the channel; it didn't go via ath_reset(). However in this driver, a channel change always causes a chip reset, which resets the beacon timer configuration and interrupt setup. This meant that data would go out but as the beacon timers never fired, beacons would never be queued.
The confusing part is that sometimes the state transition was RUN -> SCAN -> CAC -> RUN (with CSA being in there sometimes); going via SCAN would clear sc_beacons and thus the transition to RUN would reprogram beacon transmission.
In case someone tries debugging why suspending a device currently beaconing (versus just RX'ing beacons which is what occurs in STA mode), add a silly comment which should hopefully land them at this commit message. The call to ath_hal_reset() will be clearing the beacon config and it may not be always reset.
|
223567 |
26-Jun-2011 |
adrian |
Add ATH_ENABLE_DFS which enables the DFS flag so the DFS code can be tested.
This doesn't at all actually do radar detection! It's just so developers who wish to test the net80211 DFS code can easily do so. Without this flag, the DFS channels are never marked DFS and thus the DFS stuff doesn't run.
|
223525 |
25-Jun-2011 |
adrian |
Commit missing piece from a couple days ago - re-add ath_hal_debug.
|
223524 |
25-Jun-2011 |
adrian |
Small fix to bring the non-debug definitions of HALDEBUG/HALDEBUG_G in line with the debug definitions.
|
223474 |
23-Jun-2011 |
adrian |
add missing #define for the non-debug case.
|
223466 |
23-Jun-2011 |
adrian |
Re-introduce a global ath_hal_debug again for now, whilst I figure out what to do about the few cases where the HAL state isn't available (regdomain) or isn't yet setup (probe/attach.)
The global ath_hal_debug now affects all instances of the HAL.
This also restores the ability for probe/attach debugging to work; as the sysctl tree may not be attached at that point. Users can just set the global "hw.ath.hal.debug" to a suitable value to enable probe/attach related debugging.
|
223465 |
23-Jun-2011 |
adrian |
Fix indenting issues introduced by the previous commit.
|
223459 |
23-Jun-2011 |
adrian |
Break out most of the HAL related tweaks into a per-HAL instance, rather than global variables.
This specifically allows for debugging to be enabled per-NIC, rather than globally.
Since the ath driver doesn't know about AH_DEBUG, and to keep the ABI consistent regardless of whether AH_DEBUG is enabled or not, enable the debug parameter always but only conditionally compile in the debug methods if needed.
The ALQ support is currently still global pending some brainstorming.
Submitted by: ssgriffonuser@gmail.com Reviewed by: adrian, bschmidt
|
223032 |
13-Jun-2011 |
adrian |
Fix ath_ahb(4) bus attach and eeprom error handling.
Submitted by: Luiz Otavio O Souza <loos.br@gmail.com>
|
222821 |
07-Jun-2011 |
adrian |
Since HAL_PHYERR_* is used in the radar code, always include ah_desc.h.
|
222815 |
07-Jun-2011 |
adrian |
Flesh out a new HAL method to fetch the radar PHY error frame information.
For the AR5211/AR5212, this is apparently a one byte pulse duration counter value. It is only coded up here for the AR5212 as I don't have any AR5211-series hardware to test it on.
This information was extracted from the Madwifi DFS branch along with some local additions.
Please note - all this does is extract out the radar event duration, it in no way reflects the presence of a radar. Further code is needed to take a set of radar events and filter them to extract out correct radar pulse trains (and ignore other events.)
For further information, please see:
http://wiki.freebsd.org/dev/ath_hal%284%29/RadarDetection
This includes references to the relevant patents which describe what is going on.
Obtained from: Madwifi
|
222707 |
05-Jun-2011 |
adrian |
Add a missing call to sync the DMAed buffer before the radar event data is extracted.
|
222672 |
04-Jun-2011 |
adrian |
Commit radar detection changes missed by my previous commit.
|
222668 |
04-Jun-2011 |
adrian |
A few changes to make radar detection implementable in a hal_dfs/ module.
* If sc->sc_dodfs is set to 1 by the ath_dfs_radar_enable(), set the relevant rx filter bit to begin receiving radar PHY errors. The HAL code already knows how to set the relevant error mask register to enable radar events.
* Add a missing call to ath_dfs_radar_enable() after ath_hal_reset()
* change ath_dfs_process_phyerr() to take a const char *buf for now, rather than a descriptor. This way it can get access to the packet buffer contents.
|
222644 |
03-Jun-2011 |
adrian |
Bring over the relevant registers to use when implementing the quiet time portion of 802.11h.
The AR5212 code has been brought over as a reference, it's currently untested.
Obtained from: Atheros
|
222585 |
01-Jun-2011 |
adrian |
Flesh out the radar detection related operations for the ath driver.
This is in no way a complete DFS/radar detection implementation! It merely creates an abstracted interface which allows for future development of the DFS radar detection code.
Note: Net80211 already handles the bulk of the DFS machinery, all we need to do here is figure out that a radar event has occured and inform it as such. It then drives the DFS state engine for us.
The "null" DFS radar detection module is included by default; it doesn't require a device line.
This commit:
* Adds a simple abstracted layer for radar detection state - sys/dev/ath/ath_dfs/; * Implements a null DFS module which doesn't do anything; (ie, implements the exact behaviour at the moment); * Adds hooks to the ath driver to process received radar events and gives the DFS module a chance to determine whether a radar has been detected.
Obtained from: Atheros
|
222584 |
01-Jun-2011 |
adrian |
Add some missing DFS chipset functionality to the FreeBSD HAL.
Please note - this doesn't in any way constitute a full DFS implementation, it merely adds the relevant capability bits and radar detection threshold register access.
The particulars:
* Add new capability bits outlining what the DFS capabilities are of the various chipsets. * Add HAL methods to set and get the radar related register values. * Add AR5212 and AR5416+ DFS radar related register value routines. * Add a missing HAL phy error code that's related to radar event processing. * Add HAL_PHYERR_PARAM, a data type that encapsulates the radar register values.
The AR5212 routines are just for completeness. The AR5416 routines are a super-set of those; I may later on do a drive-by pass to tidy up duplicate code.
Obtained from: Linux, Atheros
|
222498 |
30-May-2011 |
adrian |
Enable setting the short-GI bit when TX'ing HT rates but only if the hardware supports it.
Since ni->ni_htcap in hostap mode is what the remote end has advertised, not what has been negotiated/decided, we need to check ourselves what the current channel width is and what the hardware supports before enabling short-GI.
It's important that short-GI isn't enabled when it isn't negotiated and when the hardware doesn't support it (ie, short-gi for 20mhz channels on any chip < AR9287.)
I've quickly verified this on the AR9285 in 11n mode.
|
222497 |
30-May-2011 |
adrian |
Set default A-MPDU density/size.
|
222432 |
29-May-2011 |
adrian |
Teach if_ath about devices which have short-GI in 20MHz channel modes.
This has been disabled until now because there hasn't been any supported device which has this feature. Since the AR9287 is the first device to support it, and since now the HAL has functional AR9287+11n support, flip this on.
|
222424 |
28-May-2011 |
adrian |
Fix AR9287 operation when >1 TX chain is enabled.
I didn't pick this up with the initial commit because I was only testing with 11bg.
|
222324 |
26-May-2011 |
adrian |
Fix a macro name - it's currently unused in this file however, but keep it consistent with ar9280.c.
|
222323 |
26-May-2011 |
adrian |
Revert this erroneous commit and re-disable the AR9285 combined antenna diversity.
|
222316 |
26-May-2011 |
adrian |
Remove the three-chain scaled power check for the AR9287 - it isn't needed.
|
222315 |
26-May-2011 |
adrian |
Make sure only two chains are calibrated for the AR9287.
|
222314 |
26-May-2011 |
adrian |
Add some open-loop TX power debugging for AR9287.
|
222312 |
26-May-2011 |
adrian |
Bring over the AR5416 per-rate TX power code, modified to use the AR9287 EEPROM layout.
The AR9287 only supports 2ghz, so I've removed the 5ghz code (but left the 5ghz edge flags in there for now) and hard-coded the 2ghz-only path.
Whilst I'm there, fix a typo (ar9285->ar9287.)
This meets basic TX throughput testing - iperf TX tests == 27-28mbit in 11g, matching the rest of my 11g kit.
|
222310 |
26-May-2011 |
adrian |
Flesh out ar9287SetTransmitPower() based on the AR9285 routine.
Hard-code the per-rate TX power at 5dBm for now so testing can be done.
This passes initial TX testing in 11g mode (but, obviously, at 5dBm.)
|
222308 |
26-May-2011 |
adrian |
Flesh out the TX power calibration for the AR9287.
I'm assuming for now that the AR9287 is only open-loop TX power control (as mine is) so I've hard-coded the attach path to fail if the NIC is not open-loop.
This greatly simplifies the TX calibration path and the amount of code which needs to be ported over.
This still isn't complete - the rate calculation code still needs to be ported and it all needs to be glued together.
Obtained from: Linux ath9k
|
222305 |
26-May-2011 |
adrian |
Add the AR9287 chip identification string.
|
222303 |
26-May-2011 |
adrian |
Fix a bad merge from a previous commit.
|
222302 |
26-May-2011 |
adrian |
Merlin -> Kiwi
|
222301 |
26-May-2011 |
adrian |
Bring over my AR9287 work in progress.
It isn't linked into the build because it's missing the TX power and PDADC programming code.
This code is mostly based on the ath9k codebase, compared against the Atheros codebase as appropriate.
What's implemented:
* probe/attach * EEPROM board value programming * RX initial calibration * radio channel programming * general MAC / baseband setup * async fifo setup * open-loop tx power calibration
What's missing before it can be enabled by default:
* TX power / calibration setting code * closed-loop tx power calibration routines * TSF2 handling * generic timer support from ath9k
Obtained from: Atheros, ath9k
|
222300 |
26-May-2011 |
adrian |
AR9287 prep work:
* Add PCI/PCIE devids * Add AR9287/Kiwi version check macros * AR_SREV_9287 -> AR_SREV_KIWI
Obtained from: Atheros, ath9k
|
222299 |
26-May-2011 |
adrian |
Add temp sense to the EEPROM variable list; Export the temperature sense variables to ah_eeprom_9287.c
|
222277 |
25-May-2011 |
adrian |
The current ANI capability information uses a different set of values for the commands, compared to the internal command values (HAL_ANI_CMD.)
My eventual aim is to make the HAL_ANI_CMD internal enum match the public API and then remove all this messiness.
This now allows HAL_CAP_INTMIT users to use a public HAL_CAP_INTMIT_ enum rather than magic constants.
The only magic constants currently used by if_ath are "enable" and "present". Some local tools of mine allow for direct, manual fiddling of the ANI variables and I'll convert these to use the public enum API before I commit them.
|
222276 |
25-May-2011 |
adrian |
Tidy up the ANI API in preparation for looking to expose some more of the ANI statistics and committing some tools which use these.
* Change HAL_ANI_* commands _back_ to be numerical, rather than a bitmap; * modify access to the ANI control bitmap to convert a command to a bitmap; * Fix the ANI noise immunity fiddling for CCK errors - it wasn't checking whether noise immunity was disabled or not.
|
222265 |
24-May-2011 |
adrian |
The ANI control for the AR5416 and later chips was calling ar5212AniControl(), which did AR5212 specific initialisation. This would cause some slight silliness when enabling/disabling ANI.
Just to be completely correct - and to ensure the phy error mask/RX filter register isn't incorrectly played with - make the ANI control function a method, have it set appropriately for AR5212/AR5416, and call that from the ANI control interface.
|
222241 |
24-May-2011 |
adrian |
Use the new per-series antenna and TPC definitions when setting ctl8->11.
This should hopefully make it clearer to developers what is going on and when TPC is being hacked on, make it obvious why it isn't working for series 1, 2, 3.
I won't flip on setting TX power for TX series 1, 2, 3 until I've done some further testing with Kite to ensure it doesn't break anything. (Before people ask - yes, TPC is only needed for 5ghz regdomains and yes, Kite is a 2.4ghz only chip, but there are potential use cases for 2ghz TPC. I just need to sit down and ensure it's supported and functional.)
|
222240 |
24-May-2011 |
adrian |
Add in descriptions for TX descriptor fields ctl8-11 - these fields control the antenna control bits for the four TX series and the TPC settings for TX series 1, 2, 3.
The specifics:
* The TPC setting for TX series 0 is handled in ctl0.
* TPC is currently disabled, so the per-packet TX power is set via the global per-rate TX power register, not per packet.
* The antenna control bits don't matter for AR5416 and later so they should stay 0 (which they currently do); they may be set for Kite but as there's no TX diversity supported at the moment (it requires the NIC to be built with an external antenna switch, matching how antenna diversity is done on legacy NICs), so again keep them 0.
This is in preparation for supporting per-rate TPC on the AR5416 and later. The Kite (and soon to come Kiwi) code sets ctl8-11 to 0x0, which doesn't have any effect at the moment. When TPC is enabled it would result in the second, third and fourth TX series attmpts to be done with a TX power of 0. This commit doesn't change that; it'll be followed up with some commits to properly set the TPC registers appropriately.
|
222157 |
21-May-2011 |
adrian |
The Merlin analog register bank is from 0x7800 -> 0x78fc; fix the code to reflect this.
|
222054 |
18-May-2011 |
adrian |
This isn't needed any longer, it's defined in ah_internal.h.
|
222049 |
18-May-2011 |
adrian |
Modify the sample rate control algorithm to only select/sample HT rates for HT nodes.
|
222031 |
17-May-2011 |
adrian |
Fix the debugging code path to correctly support HAL_DEBUG_UNMASKABLE.
|
222027 |
17-May-2011 |
adrian |
Fix case, introduced in my previous commit.
Pointy hat goes to: adrian, for having multiple build screens open and checking the wrong one.
|
222021 |
17-May-2011 |
adrian |
Use the halMcastKeySrchSupport capability bit to selectively enable/disable the multicast key search support for AR5212, AR5416 and later.
The general HAL routine ath_hal_getcapability() implement checking this but it's overridden by a check in ar5212_misc:ar5212GetCapability(). This restores the later functionality in case it's found to be broken in any of the 11n chipsets.
|
222020 |
17-May-2011 |
adrian |
Set this HAL capabilities flag correctly even though it isn't currently being used.
|
221965 |
15-May-2011 |
adrian |
* Add some more TX descriptor error counters; this'll be helpful when implementing TX aggregation * Whilst I'm there, comment some RX error counters
|
221944 |
15-May-2011 |
adrian |
Fix NF calibration breakage introduced by me in a past commit.
Since the returned NF will be -ve, checking for <= 0 is not good enough. For now, check whether it equals 0 or -1; a future commit will tidy this mess up and have it return HAL_BOOL instead.
|
221897 |
14-May-2011 |
adrian |
Fix the Merlin 5ghz fast-clock EEPROM fetch to return the correct value.
The eeprom Get method should return HAL_OK if fastclock is enabled in the EEPROM. It was returning the opposite of what it should have.
Submitted by: Matthew Fleming <mdf356@gmail.com>
|
221896 |
14-May-2011 |
adrian |
Fix the eeprom set API method to return HAL_STATUS.
The code assumed it could return HAL_OK, HAL_EINVAL and other HAL_STATUS types; so it shouldn't be declared as returning HAL_BOOL.
This commit was brought to you by the Clang compiler.
Submitted by: Matthew Fleming <mdf356@gmail.com>
|
221888 |
14-May-2011 |
adrian |
Import initial EEPROM code for Kite (AR9287).
I've tested this locally and it does indeed read and attach to an AR9287 EEPROM. But a lot more code needs to be ported over to the HAL before the AR9287 is functional.
I'm importing this separate from the rest of the codebase (and unlinked from the build for now) in case someone wishes to begin fiddling with porting the rest of the code over from Linux ath9k.
Obtained from: Linux ath9k
|
221878 |
14-May-2011 |
adrian |
When disabling RIFS for Sowl (AR9160) and Howl (AR9130), make sure RIFS is totally disabled.
The Atheros HAL code does this for Sowl/Howl but not for Owl (AR5416) where RIFS is disabled by default.
This seems to quieten the occasional baseband hang I've been seeing with the AR9160 in STA mode under constant heavy traffic load.
Obtained from: Atheros
|
221876 |
14-May-2011 |
adrian |
Major fix: when doing open-loop TX power calibration, adjust the correct CCK rates rather than adjusting the first handful. This may have affected some AR9280 based NICs.
Minor fix: merlin check update
|
221875 |
14-May-2011 |
adrian |
Fixes from the Atheros HAL - formatting; update Merlin checks to be consistent. Nothing functional should change with this commit.
|
221869 |
14-May-2011 |
attilio |
Disconnect sun4v architecture from the three.
Some files keep the SUN4V tags as a code reference, for the future, if any rewamped sun4v support wants to be added again.
Reviewed by: marius Tested by: sbruno Approved by: re
|
221868 |
14-May-2011 |
adrian |
Even though initial calibrations aren't done (yet), add this so we're consistent with the Atheros HAL.
|
221837 |
13-May-2011 |
adrian |
Only do open loop power control and temperature compensation for the AR9280 based NICs if it's actually enabled.
Some of the OLC code was erroneously called during setup and calibration. This may have caused some incorrect behaviour.
|
221834 |
13-May-2011 |
adrian |
Remove duplicate code - add a function which calculates the ratesArray[] table which contains the per-rate target TX power.
This code is shared between the v14 eeprom board setup (AR5416, AR9160, AR9280) and will also be used by the upcoming Kite (AR9287) support.
|
221833 |
13-May-2011 |
adrian |
Some diversity changes relating to AR9285.
* grab the main, alt and selected LNA config * add some optional / disabled logging code * add a check to reject packets with an invalid main rssi too, in case the alt is the active receive chain and main is -ve.
Note: The software-controlled combined diversity code is still disabled.
|
221811 |
12-May-2011 |
adrian |
Now that the devices with functioning ps-poll hardware support have been enumerated (merlin and later), flick this on.
|
221806 |
12-May-2011 |
adrian |
Break out the AR9285 analog registers from ar5416/ar5416phy.h and put them in a new header file, ar9002/ar9285_an.h.
Shuffle the AR9280 analog registers in ar5416/ar541phy.h into a contiguous spot.
|
221801 |
12-May-2011 |
adrian |
Fix the half/quater rate PLL setup for AR5416, AR9160 and (beta?) AR9280 chips.
Note: This doesn't "fix" half/quarter rate support for these chips; it merely fixes an oversight.
Obtained from: Atheros
|
221800 |
12-May-2011 |
adrian |
Fixes from Atheros:
* If AR9130, give the chip extra time to reset * If AR5416, don't shutdown the chip during reset
|
221779 |
11-May-2011 |
adrian |
Make the NF calibration logic (hopefully!) more resistive to noisy environments.
In setups where NF calibration can take a while, don't load the CCA and kick off a new NF calibration if the previous one hasn't yet completed. This shouldn't happen unless the environment is noisy but those exist (hi phk!).
Here, if the previous NF hasn't completed when ar5416LoadNf() is run (which reads the NF), it skips updating the history buffer, loading the NF CCA array and kicking off the next NF cal. It's hoped it'll occur in the next long calibration interval.
Obtained from: Atheros, ath9k, my local HAL
|
221778 |
11-May-2011 |
adrian |
Always log if the NF CCA load fails; so users with debugging enabled can see they're likely in a very noisy environment.
|
221777 |
11-May-2011 |
adrian |
Make sure the chip is awake before writing to it to finally detach it.
Obtained from: Atheros
|
221776 |
11-May-2011 |
adrian |
Add a new flag - HAL_DEBUG_UNMASKABLE - which always logs a debug message (when debug is enabled) no matter what.
|
221775 |
11-May-2011 |
adrian |
Remove unused variable
|
221773 |
11-May-2011 |
adrian |
Remove the initial NF completion check.
This is taking quite a while for some people in some situations (eg AR5418 in phk's Abusive Radio Environment).
Instead, the rest of the calibration related code should ensure that a NF calibration has occured before reading NF values and kicking off another NF calibration.
The channel should also likely be marked as "noisy" (CWINT) if the NF calibration takes too long.
|
221772 |
11-May-2011 |
adrian |
Remove a now unneeded comment..
|
221766 |
11-May-2011 |
adrian |
Restore the RSSI threshold after writing the board values.
This would be overwritten by the board initvals written in ah->writeIni().
|
221722 |
10-May-2011 |
adrian |
AR9285 (Kite) fixes.
* Correct some of the silicon revision checks to match what the Atheros HAL does. (See [1] below.)
* Move the PA cal and init cal method assignment to -after- the mac version/revision IDs are stored. The AR9285 init cal was never being called.
* Enable ANI.
Note Kite 1.0 and 1.1 were prototypes that shouldn't be seen in the wild. Linux ath9k simply removed the prototype code from their codebase. I'm going to leave it in there for now but make it conditionally compilable in the future.
Obtained from: Atheros
|
221702 |
09-May-2011 |
adrian |
Disable diversity combining support until I can get a firm answer from Atheros as to what/when this is supposed to be enabled.
Using the default RX fast diversity settings seems to help quite a bit.
Whilst I'm here, change the prototype to return HAL_BOOL rather than int.
|
221701 |
09-May-2011 |
adrian |
Fix a regression I introduced - only swap analog chains if the RX chainmask is 0x5.
|
221700 |
09-May-2011 |
adrian |
Disable TX STBC - it isn't used for now, but it isn't supported on Kite.
|
221694 |
09-May-2011 |
adrian |
Import some initial Kite fixed diversity code from Atheros.
For now, the diversity settings are controlled by 'txantenna', -not- rxantenna. This is because the earlier chipsets had controllable TX diversity; the RX antenna setting twiddles the default antenna register. I'll try sort that stuff out at some point.
Call the antenna switch function from the board setup function so scans, channel changes, mode changes, etc don't set the diversity back to a default state too far from what's intended.
Things to todo:
* Squirrel away the last antenna diversity/combining parameters and restore them during board setup if HAL_ANT_VARIABLE is defined. That way scans, etc don't reset the diversity settings.
* Add some more public facing statistics, rather than what's simply logged under HAL_DEBUG_DIVERSITY.
For now, the fixed antenna settings behave better than variable settings for me. I have some further fiddling to do..
Obtained from: Atheros
|
221693 |
09-May-2011 |
adrian |
Remove an un-needed PA cal call here.
|
221667 |
08-May-2011 |
adrian |
Fix the 5ghz fast clock logic.
The macro which I incorrectly copied into ah_internal.h assumed that it'd be called with an AR_SREV_MERLIN_20() check to ensure it was only enabled for Merlin (AR9280) silicon revision 2.0 or later.
Trouble is, the 5GHz fast clock EEPROM flag is only valid for EEPROM revision 16 or greater; it's assumed to be enabled by default for Merlin rev >= 2.0. This meant it'd be incorrectly set for AR5416 and AR9160 in 5GHz mode.
This would have affected non-default clock timings such as SIFS, ACK and slot time. The incorrect slot time was very likely wrong for 5ghz mode.
|
221666 |
08-May-2011 |
adrian |
* Add AR_SREV_KITE macro for later use * Modify AR_SREV_MERLIN_20() to match the Atheros/Linux ath9k behaviour - its supposed to match Merlin 2.0 and later Merlin chips. AR_SREV_MERLIN_20_OR_LATER() matches AR9280 2.0 and later chips (AR9285, AR9287, etc.)
|
221622 |
08-May-2011 |
adrian |
These EEPROM bits actually defined whether HT/20 and HT/40 support for the given channel is available.
It isn't used yet; ar5416GetWirelessModes() needs to be taught about this rather than assuming HT20/HT40 is available.
|
221620 |
08-May-2011 |
adrian |
Fiddle with the PLL initialisation order to match ath9k/Atheros HAL.
This seems to make the AR9160 behave better during heavy scanning, where before it'd hang and require a hard reset to recover.
Obtained From: Linux ath9k, Atheros
|
221618 |
08-May-2011 |
adrian |
Properly indent the WAR code i pasted in from ath9k a few months ago.
|
221617 |
08-May-2011 |
adrian |
* Add in a comment about ar5416InitUserSettings() potentially modifying AR_DIAG_SW.
There's a hardware workaround which sets disabling some errors early at startup and clears said bits before the PCU begins receiving - it does this to avoid RX descriptor status errors.
It's possible these bits aren't being completely properly twiddled in all instances; but in particular if the diag_reg HAL variable is set it won't be setting these bits correctly. I'll review this at some point.
* Disable multicast search on mac address and key id - the driver doesn't use it at the moment and thus adhoc may be broken for merlin and later.
* Change this to be for Merlin 1.0 (which from what I understand wasn't ever publicly released) to be more correct.
|
221616 |
08-May-2011 |
adrian |
Fiddle with the AR5416 1.0 chainmask setup.
Apparently all three RX chains need to be enabled before initial calibration is done, even if only two are configured.
Reorder the alt chain swap bit to match what the Atheros HAL is doing.
Obtained From: ath9k, Atheros
|
221608 |
07-May-2011 |
adrian |
Fix the IS_5416 checks to actually work correctly.
I've verified that my AR5416 revision 2.2 (minor revision 0x0A) now matches the correct checks.
|
221603 |
07-May-2011 |
adrian |
Do a HAL capabilities sync pass based on the Atheros HAL.
* Shuffle some of the capability numbers around to match the Atheros HAL capability IDs, just for consistency.
* Add some new capabilities to FreeBSD from the Atheros HAL which will be be shortly used when new chipsets are added (HAL SGI-20 support is for Kiwi/AR9287 support); for TX aggregation (MBSSID aggregate support, WDS aggregation support); CST/GTT support for carrier sense/TX timeout.
|
221600 |
07-May-2011 |
adrian |
Update the ext channel cycpwr threshold 1 register for the extension channel when the channel is HT/40.
The new ANI code (primarily for the AR9300/AR9400) in ath9k sets this register but the ANI code for the previous 11n chips didn't set this.
Unlike ath9k, only set this for HT/40 channels.
Obtained From: ath9k
|
221596 |
07-May-2011 |
adrian |
Read in the extended regulatory domain flags so future code can use them.
These describe FCC/Japan channel and DFS behaviour.
The AR9285 and later chips don't set these bits in the eeprom, the correct behaviour is to just assume all five bits are enabled.
|
221582 |
07-May-2011 |
adrian |
Instead of returning an unknown mac/bb signature, just return 0.
|
221581 |
07-May-2011 |
adrian |
Add some comments about which HAL capabilities are currently FreeBSD specific.
The Atheros HAL and FreeBSD HAL share the same capabilities up until HAL_CAP_11D, where things begin to diverge.
I'll look at tidying these up soon.
Obtained from: Atheros
|
221580 |
07-May-2011 |
adrian |
Some BB hang changes:
* Add Howl (ar9130) to the list of chips that have DFS/BB/MAC hangs * Don't treat unknown BB hangs as fatal; ath9k/Atheros HAL don't treat it as such. * Add HAL_DEBUG_DFS to the debug fields in ath_hal/ah_debug.h
The BB hang check simply loops over an observation register checking for a stuck state engine, but it can happen under high traffic conditions. Ath9k and the Atheros HAL simply log a debug message and continue.
Private to FreeBSD:
* Add HAL_DEBUG_HANG to the debug fields * Change the hang debugging to HAL_DEBUG_HANG rather than HAL_DEBUG_DFS like in the Atheros HAL.
Obtained from: Atheros
|
221574 |
07-May-2011 |
adrian |
Change AR_SREV_OWL_{X}_OR_LATER to AR_SREV_5416_{X}_OR_LATER.
For now, these are equivalent macros. AR_SREV_OWL{X}_OR_LATER will later change to exclude Howl (AR9130) in line with what the Atheros HAL does.
This should not functionally change anything.
Obtained from: Atheros
|
221573 |
07-May-2011 |
adrian |
Fix the OWL revision checks.
A quick story, which is partially documented in the commit.
The silicon revision in Linux ath9k and the Atheros HAL use an AR_SREV_REVISION mask of 0x07.
FreeBSD's HAL uses the AR5212 AR_SREV_REVISION mask of 0x0F.
Thus the OWL silicon revisions were coming through as 0xA, 0xB, 0xC, rather than 0x0, 0x1 and 0x2.
My ath9k-sourced AR_SREV_OWL_<X> macros were thus using the wrong silicon revision values and wouldn't correctly match.
This commit does a few things:
* Change the AR_SREV_OWL_<x> macros to use the AR_SREV_REVISION_OWL_* values, not AR_XSREV_REVISION_OWL macros; * Disable AR_XSREV_REVISION_OWL_* values; * Modify the IS_5416 to properly check the MAC is OWL, rather than potentially matching on non-OWL revisions (which shouldn't happen unless there's a silicon revision of higher than 0x9 in a later chip..) * Add a couple more macros from the Atheros HAL for compatibility.
The main difference now is that the Atheros HAL defines AR_SREV_OWL_{20,22}_OR_LATER subtly differently - it fails on all HOWL silicon. The AR_SREV_5416_*_OR_LATER macros match on the relevant OWL version -and- all HOWL versions, along with subsequent versions.
A subsequent commit is going to migrate the uses of AR_SREV_OWL_X_OR_LATER to AR_SREV_5416_X_OR_LATER to match what's going on in the Atheros HAL.
There's only two uses of AR_SREV_OWL_X_OR_LATER which currently don't apply to FreeBSD but it may do in the future.
Yes, it's all confusing!
|
221535 |
06-May-2011 |
adrian |
Add a function which enables or disables RX RIFS searching, and migrate the code which does this into it.
|
221488 |
05-May-2011 |
adrian |
Don't perform NF calibration for radio chains which aren't in use:
Quoting the ath9k commit message:
At present the noise floor calibration is processed in supported control and extension chains rather than required chains. Unnccesarily doing nfcal in all supported chains leads to invalid nf readings on extn chains and these invalid values got updated into history buffer. While loading those values from history buffer is moving the chip to deaf state.
This issue was observed in AR9002/AR9003 chips while doing associate/dissociate in HT40 mode and interface up/down in iterative manner. After some iterations, the chip was moved to deaf state. Somehow the pci devices are recovered by poll work after chip reset. Raading the nf values in all supported extension chains when the hw is not yet configured in HT40 mode results invalid values.
Reference: https://patchwork.kernel.org/patch/753862/
Obtained from: Linux ath9k
|
221483 |
05-May-2011 |
adrian |
Another Howl (AR9130) fix.
I haven't seen a 5ghz AR9130 based board yet though!
Obtained from: Atheros
|
221480 |
05-May-2011 |
adrian |
Fix up the chipset checks for the AR5416 and later silicon.
The checks should function as follows:
* AR_SREV_<silicon> : check macVersion matches that version id * AR_SREV_<silicon>_<revision> : check macVersion and macRevision match the version / revision respectively
* AR_SREV_<silicon>_<revision>_OR_LATER: check that + if the chip silicon version == macVersion, enforce revision >= macRevision + if the chip silicon version > macVersion, allow it.
For example, AR_SREV_MERLIN() only matches AR9280 (any revision), AR_SREV_MERLIN_10() would only match AR9280 version 1.0, but AR_SREV_MERLIN_20_OR_LATER() matches AR9280 version >= 2.0 _AND_ any subsequent MAC (So AR9285, AR9287, etc.)
The specific fixes which may impact users:
* if there is Merlin hardware > revision 2.0, it'll now be correctly matched by AR_SREV_MERLIN_20_OR_LATER() - the older code simply would match on either Merlin 2.0 or a subsequent MAC (AR9285, AR9287, etc.)
* Kite version 1.1/1.2 should now correctly match. As these macros are used in the AR9285 reset/attach path, and it's assumed that the hardware is kite anyway, the behaviour shouldn't change. It'll only change if these macros are used in other codepaths shared with older silicon.
Obtained from: Linux ath9k, Atheros
|
221479 |
05-May-2011 |
adrian |
Import some HOWL (AR9130) related fixes from Atheros.
Obtained from: Atheros
|
221427 |
04-May-2011 |
adrian |
Remove this useless bit of code for Kite. The RIFS register value is overriden by the initvals, so disabling RIFS before calling writeIni() effectively does nothing.
|
221210 |
29-Apr-2011 |
adrian |
Cosmetic changes to fit 80 character screen width.
|
221206 |
29-Apr-2011 |
adrian |
Remove some holdovers from the AR5212 origin of this code. These aren't relevant here.
|
221163 |
28-Apr-2011 |
adrian |
Introduce AR9130 (HOWL) WMAC support to the FreeBSD HAL.
The AR9130 is an AR9160/AR5416 family WMAC which is glued directly to the AR913x SoC peripheral bus (APB) rather than via a PCI/PCIe bridge.
The specifics:
* A new build option is required to use the AR9130 - AH_SUPPORT_AR9130. This is needed due to the different location the RTC registers live with this chip; hopefully this will be undone in the future. This does currently mean that enabling this option will break non-AR9130 builds, so don't enable it unless you're specifically building an image for the AR913x SoC.
* Add the new probe, attach, EEPROM and PLL methods specific to Howl.
* Add a work-around to ah_eeprom_v14.c which disables some of the checks for endian-ness and magic in the EEPROM image if an eepromdata block is provided. This'll be fixed at a later stage by porting the ath9k probe code and making sure it doesn't break in other setups (which my previous attempt at this did.)
* Sprinkle Howl modifications throughput the interrupt path - it doesn't implement the SYNC interrupt registers, so ignore those.
* Sprinkle Howl chip powerup/down throughout the reset path; the RTC methods were
* Sprinkle some other Howl workarounds in the reset path.
* Hard-code an alternative setup for the AR_CFG register for Howl, that sets up things suitable for Big-Endian MIPS (which is the only platform this chip is glued to.)
This has been tested on the AR913x based TP-Link WR-1043nd mode, in legacy, HT/20 and HT/40 modes.
Caveats:
* 2ghz has only been tested. I've not seen any 5ghz radios glued to this chipset so I can't test it.
* AR5416_INTERRUPT_MITIGATION is not supported on the AR9130. At least, it isn't implemented in ath9k. Please don't enable this.
* This hasn't been tested in MBSS mode or in RX/TX block-aggregation mode.
|
221019 |
25-Apr-2011 |
adrian |
Wrap the MIMO stuff in #ifdef AH_SUPPORT_AR5416, as the channel state doesn't have MIMO stuff in it by default.
|
220990 |
24-Apr-2011 |
adrian |
Break out the PLL setup into an overridable method.
The only method right now is ar5416InitPLL() which handles multiple chipsets; this can now be overridden by newer chipset HAL code.
|
220989 |
24-Apr-2011 |
adrian |
Use the refactored ar5416WriteTxPowerRateRegisters() call in the ar9285 code.
|
220988 |
24-Apr-2011 |
adrian |
Eliminate code duplication between AR5416/AR9160/AR9280 and AR9285.
Writing the TX power registers is the same between all of these chips and later NICs (AR9287, AR9271 USB, etc.) so this will reduce code duplication when those NICs are added to the HAL.
|
220966 |
23-Apr-2011 |
adrian |
Fix a corner-case of interrupt handling which resulted in potentially spurious (and fatal) interrupt errors.
One user reported seeing this:
Apr 22 18:04:24 ceres kernel: ar5416GetPendingInterrupts: fatal error, ISR_RAC 0x0 SYNC_CAUSE 0x2000
SYNC_CAUSE of 0x2000 is AR_INTR_SYNC_LOCAL_TIMEOUT which is a bus timeout; this shouldn't cause HAL_INT_FATAL to be set.
After checking out ath9k, ath9k_ar9002_hw_get_isr() clears (*masked) before continuing, regardless of whether any bits in the ISR registers are set. So if AR_INTR_SYNC_CAUSE is set to something that isn't treated as fatal, and AR_ISR isn't read or is read and is 0, then (*masked) wouldn't be cleared. Thus any of the existing bits set that were passed in would be preserved in the output.
The caller in if_ath - ath_intr() - wasn't setting the masked value to 0 before calling ath_hal_getisr(), so anything that was present in that uninitialised variable would be preserved in the case above of AR_ISR=0, AR_INTR_SYNC_CAUSE != 0; and if the HAL_INT_FATAL bit was set, a fatal condition would be interpreted and the chip was reset.
This patch does the following:
* ath_intr() - set masked to 0 before calling ath_hal_getisr(); * ar5416GetPendingInterrupts() - clear (*masked) before processing continues; so if the interrupt source is AR_INTR_SYNC_CAUSE and it isn't fatal, the hardware isn't reset via returning HAL_INT_FATAL.
This doesn't fix any underlying errors which trigger AR_INTR_SYNC_LOCAL_TIMEOUT - which is a bus timeout of some sort - so that likely should be further investigated.
|
220955 |
22-Apr-2011 |
adrian |
Fix the merlin LNA configuration code - these are bit flags, not raw values to be written into the registers.
|
220947 |
22-Apr-2011 |
adrian |
The second regdomain word is a set of bitflags describing regulatory domain behaviour. Document what the v14 EEPROM flags are.
|
220946 |
22-Apr-2011 |
adrian |
Bring over a pdadc calibration fix from ath9k - unused power detector gain values should be 58, not the previous values.
Obtained From: linux ath9k
|
220784 |
18-Apr-2011 |
adrian |
For now, only enable GTT. CST is firing very frequently during local tests; I'll figure out what's going on before re-enabling this as it does add to the interrupt load.
|
220782 |
18-Apr-2011 |
adrian |
Add TX carrier sense timeout statistics.
|
220780 |
18-Apr-2011 |
adrian |
Bump pad, I'm adding more statistics.
|
220779 |
18-Apr-2011 |
adrian |
Rework the Global TX timeout handling to look more like ath9k.
It correctly now sets the AR_IMR BCNMISC register, along with the GTT register in AR_IMR_S2.
|
220772 |
18-Apr-2011 |
adrian |
Add global TX timeout handling.
The global TX timeout counter increments whenever a frame is ready to be transmitted and the medium is busy.
|
220738 |
17-Apr-2011 |
adrian |
Mark the PHY as inactive before the chip is reset.
It's also marked inactive by the initvals, and enabled after the baseband/PLL has been configured, but before the RF registers have been programmed.
The origin and reason for this particular change is currently unknown.
Obtained from: Linux ath9k
|
220722 |
16-Apr-2011 |
adrian |
Don't do Kite antenna switch selection this way (for now); antenna diversity is done elsewhere now.
|
220718 |
16-Apr-2011 |
adrian |
Disable classic-style fast diversity on the AR5416 and later.
Antenna diversity on the >= AR5416 is implemented differently than the AR5212 and previous chips. So for now, and not to confuse things, just disable it for now.
|
220713 |
16-Apr-2011 |
adrian |
Remove some duplicate code from the AR9285 TX power configuration path.
|
220601 |
13-Apr-2011 |
adrian |
Add in the AR9285 (Kite) diversity to if_ath, enabling TX/RX antenna diversity.
This is bit dirty and likely should be revised at a later date, with an eye to unifying/tidying up the whole diversity setup and allowing developers to do "tricky stuff" as they desire. For now, this works.
|
220600 |
13-Apr-2011 |
adrian |
Add in the last bit of the HAL support for Kite diversity.
* add a new method, specifically for doing per-RX packet antenna diversity * set that HAL method only if it's Kite and a Kite chip that does diversity.
|
220599 |
13-Apr-2011 |
adrian |
More kite diversity related changes.
* add a diversity flag to the HAL debugging section * add a check to make sure the kite diversity code doesn't run on boards that don't require it, as not all Kite chips will implement it. * add some debug statements when the diversity code makes changes to the antenna diversity/combining setup.
|
220598 |
13-Apr-2011 |
adrian |
Change this to be less noisy.
|
220593 |
13-Apr-2011 |
adrian |
Bring over the antenna diversity logic support for Kite.
Again, this is just the code ported from ath9k and included in the build, it isn't yet enabled.
|
220590 |
13-Apr-2011 |
adrian |
Port over a TX gain fix from ath9k specific to the AR9285 (Kite) and AR9271. Note: this HAL currently only supports the AR9285.
From Linux ath9k:
The problem is that when the attenuation is increased, the rate will start to drop from MCS7 -> MCS6, and finally will see MCS1 -> CCK_11Mbps. When the rate is changed b/w CCK and OFDM, it will use register desired_scale to calculate how much tx gain need to change.
The output power with the same tx gain for CCK and OFDM modulated signals are different. This difference is constant for AR9280 but not AR9285/AR9271. It has different PA architecture a constant. So it should be calibrated against this PA characteristic.
The driver has to read the calibrated values from EEPROM and set the tx power registers accordingly.
|
220589 |
13-Apr-2011 |
adrian |
Add new fields to the v4k EEPROM modal header.
|
220588 |
13-Apr-2011 |
adrian |
Add OS_REG_RMW, which mirrors ath9k's REG_RMW.
This macro does a read-modify-write pass with register bits to set and clear.
|
220587 |
13-Apr-2011 |
adrian |
Add the initial AR9285 PHY glue for supporting antenna diversity. This code isn't currently used anywhere; it's just linked into the build.
|
220539 |
11-Apr-2011 |
adrian |
De-dup the ar5416 rates array definition.
|
220444 |
08-Apr-2011 |
adrian |
Fix the completely wrong types I used in the previous commit.
|
220443 |
08-Apr-2011 |
adrian |
Begin fleshing out a public HAL routine to export the per-chain ctl/ext noise floor values.
This routine doesn't check to see whether the radio is MIMO capable - instead, it simply returns either the raw values, the "nominal" values if the raw values aren't yet available or are invalid, or '0' values if there's no valid channel/ no valid MIMO values.
Callers are expected to verify the radio is a MIMO radio (which for now means it's an 11n chipset, there are non-11n MIMO chipsets out there but I don't think we support them, at least in MIMO mode) before exporting the MIMO values.
|
220442 |
08-Apr-2011 |
adrian |
Export the per-chain ctl/ext noise floor values, raw and uncut, to the upper-level HAL.
Right now the per-chain noise floor values aren't used anywhere in the upper-level HAL, so the driver currently has no real reference to compare the per-chain RSSI values to.
This is needed before per-chain RSSI values (for ctl and ext radios) are can be thrown upstairs to the net80211 code.
|
220438 |
08-Apr-2011 |
adrian |
Extend the RX descriptor block to include two more EVM words.
This will be needed for later AR93xx/AR94xx 3-stream devices.
|
220423 |
07-Apr-2011 |
adrian |
Add some more OS_MARK probes to the RX DMA setup/teardown code path.
I'm trying to debug the RX DMA path and help the ath9k guys with "RX dma abort stuck" issue that both our drivers have.
|
220367 |
05-Apr-2011 |
adrian |
Make the alq log path tunable
|
220360 |
05-Apr-2011 |
adrian |
The xpaBiasLvlFreq[] fields in the modal header also need swapping when the EEPROM contents are byte-swapped.
|
220325 |
04-Apr-2011 |
adrian |
Commit missing bits from the last commit:
* add the hal capability flag * make sure its disabled for the ar9280/ar9285.
|
220324 |
04-Apr-2011 |
adrian |
Add a HAL capability bit for supporting self-linked RX descriptors and disable it for the 11n chipsets.
From the ath9k source:
==
11N: we can no longer afford to self link the last descriptor. MAC acknowledges BA status as long as it copies frames to host buffer (or rx fifo). This can incorrectly acknowledge packets to a sender if last desc is self-linked.
==
Since this is useful for pre-AR5416 chips that communicate PHY errors via error frames rather than by on-chip counters, leave the support in there, but disable it for AR5416 and later.
|
220323 |
04-Apr-2011 |
adrian |
At least set the coverage class value here; worry about populating the register values at a later date.
|
220302 |
03-Apr-2011 |
adrian |
I missed committing this last time - it's needed for the 5ghz fast clock calculation.
|
220298 |
03-Apr-2011 |
adrian |
Add in the clock timing calculation when Merlin is using the 5ghz fast clock. This is a 44mhz clock, not a 40mhz clock like normal for 5ghz operation.
|
220294 |
03-Apr-2011 |
adrian |
Import a fix from the ath9k - reduce the TX FIFO size for Kite (AR9285.)
|
220293 |
03-Apr-2011 |
adrian |
Add an explanation of the inivals
|
220259 |
02-Apr-2011 |
adrian |
From ath9k - clear the RX descriptor status before recycling it.
|
220258 |
02-Apr-2011 |
adrian |
Add some more debugging
|
220188 |
31-Mar-2011 |
adrian |
Introduce AH_AR5416_INTERRUPT_MITIGATION which enables interrupt mitigation for the AR5416 and later. Rename the older HAL option to use this.
|
220185 |
31-Mar-2011 |
adrian |
Break out the ath PCI logic into a separate device/module.
Introduce the AHB glue for Atheros embedded systems. Right now it's hard-coded for the AR9130 chip whose support isn't yet in this HAL; it'll be added in a subsequent commit.
Kernel configuration files now need both 'ath' and 'ath_pci' devices; both modules need to be loaded for the ath device to work.
|
220132 |
29-Mar-2011 |
adrian |
According to ath9k recv.c, one shouldn't be doing self-linked descriptors in the RX path when doing 11n and block-ack'ed frames. Apparently, the MAC will loop over that self-linked descriptor and treat it as "good enough" for (incorrectly!) ACKing the frames in the block-ack.
Until I figure out how to work around this issue in the future, this counter will tell me if packet RX processing ever gets to the point where it's touching the self-linked descriptor. If there's ever enough packets to get to that point, BA's will be invalid and likely very unhappy.
|
220098 |
28-Mar-2011 |
adrian |
Add in HT protection but disable it by default.
I'll clear how it's supposed to work with Bernhard and then look at enabling this in the correct situations.
But this -does- enable HT RTS protection (using the appropriate legacy rates) if this bit of code is enabled.
|
220054 |
27-Mar-2011 |
adrian |
Fix typo.
|
220053 |
27-Mar-2011 |
adrian |
Rename AH_ENABLE_11N to ATH_ENABLE_11 - the HAL supports 11n by default but the ath driver doesn't. This is a much more consistent name.
|
220035 |
26-Mar-2011 |
adrian |
.. And another missed commit - add the PSPOLL capability.
|
220034 |
26-Mar-2011 |
adrian |
This was missing from the previous HAL commit - it fixes a typo and introduces the PS-POLL hardware support.
|
220033 |
26-Mar-2011 |
adrian |
If 802.11n is enabled, bump the number of buffers used up to a larger level.
This is important for AMPDU RX as each burst is multiple packets in a row.
|
220029 |
26-Mar-2011 |
adrian |
Add in the hardware PS-POLL frame reception setting, but leave it disabled by default.
Adventourous souls with an AR9220/AR9280 or later and who have a device that sends PS-POLL frames may wish to try tinkering with this option and get back to me.
|
220027 |
26-Mar-2011 |
adrian |
Introduce hardware PS-POLL support in the HAL.
Linux ath9k only enables this for AR9280 and later NICs; so create a capability for it so it isn't enabled for earlier NICs.
Enabling hardware PS-POLL support will come in a later commit and will be disabled by default.
|
220025 |
26-Mar-2011 |
adrian |
Put these two back to mirror what ath9k does.
Even though they map to setting the error filter register, ath9k also writes them untouched to AR_RX_FILTER.
The Force-BSSID match bit can stay high, as it maps to a misc mode register setting rather than an RX filter bit.
|
220022 |
26-Mar-2011 |
adrian |
Shuffle around the HAL_RX_FILTER bits to be slightly more sensible.
The phyerr, radar and bssid-match bits aren't real bits, they map to enabling bits in other registers. Move those out of the way of valid RX filter bits.
Add a few new fields from ath9k - compba, ps-poll, mcast-bcast-all.
|
219985 |
25-Mar-2011 |
adrian |
After discussing with Bernhard, the "right" way in net80211 to check the channel width is ni->ni_chw, which is set to the negotiated channel width. ni->ni_htflags is the capability, rather than the negotiated value.
Teach both the TX path and the sample rate module about this.
|
219984 |
25-Mar-2011 |
adrian |
I broke periodic adc calibrations - so restore them to working order.
|
219981 |
25-Mar-2011 |
adrian |
Re-disable the setting of 2040/shortgi bits for now.
This seems to work fine for STA but not HT/20 AP mode.
Further discussion with net80211 people will need to take place to ensure that the right flags are set based on the negotiated capabilities of the remote peer, rather than whatever the local parameters are.
Sending short-gi frames in 20mhz may work on some chips but it certainly isn't supported on anything currently supported by the HAL; and sending HT40 frames in HT20 mode just plain won't work.
|
219980 |
25-Mar-2011 |
adrian |
After discussion with Felix Fietkau (nbd) about the ath9k Merlin LNA bit settings, it seems that our defines are backwards and don't match what is in the EEPROM documentation or internal driver.
The ath9k code used to have a bitfield here, rather than a uint8_t, and there were #defines used to swap the order based on the endian of the platform - this wasn't because of nybble or bit ordering of the underlying host but because of what the compiler was doing.
This may be the reason for the backwards field numbers, as ath9k had similar issues.
|
219979 |
25-Mar-2011 |
adrian |
Flip ANI on for the AR5416 and later chips. I haven't verified it on the AR9285 so I'll leave it off for that.
Ath9k sources indiciate that one of the ANI modes interferes with RIFS detection, so match ath9k and disable that.
|
219978 |
25-Mar-2011 |
adrian |
The right commit - add a couple more AR_PCU_MISC_MODE2 register bits - SOWL specific.
|
219977 |
25-Mar-2011 |
adrian |
oops, commited the wrong file change.
|
219976 |
25-Mar-2011 |
adrian |
Add some more AR_PCU_MISC_MODE2 register settings - these are SOWL or later.
|
219975 |
25-Mar-2011 |
adrian |
Bring over interrupt mitigation changes from ath9k.
* The existing interrupt mitigation code didn't mitigate anything - the per-packet TX/RX interrupts are still occuring. It's possible this worked for the AR5416 but not any later chipsets; I'll investigate and update as needed.
* Set both the RX and TX threshold registers whilst I'm at it.
This is verified to work on the AR9220 and AR9160. I'm leaving it off by default in case it's truely broken, but I need to have it enabled when doing 11n testing or interrupt loads exceed 10,000 interrupts/sec.
|
219962 |
24-Mar-2011 |
adrian |
Flip back HT/40 and Short-GI (for 40mhz operation). These are now verified to work.
|
219948 |
24-Mar-2011 |
adrian |
Fix a completely wrong variable reference.
|
219942 |
23-Mar-2011 |
adrian |
Make the ar2133ForceBias() call controllable at runtime.
At least one AR5416 user has reported measurable throughput drops with this option. For now, disable it and make it a run-time twiddle. It won't take affect until the next radio programming trip though (eg channel scan, channel change.)
|
219894 |
23-Mar-2011 |
adrian |
The AR5416+ chips all have MIB counters (which the AR5416 ANI code assumes) so there's no need to enable the RX of invalid frames just to do ANI.
The if_ath code and AR5212 ANI code setup the RX filter bits to enable receiving OFDM/CCK errors if the device doesn't have the hardware MIB counters. It isn't initialising it for the AR5416+ because all of those chips have hardware MIB counters.
This fixes the odd (and performance affecting!) situation where if ani is enabled (via sysctl dev.ath.X.intmit) then suddenly there's be a very large volume of phy errors - which is good to track, but not what was intended. Since each PHY error is a received (0 length) frame, it can significantly tie up the RX side of things.
|
219891 |
22-Mar-2011 |
adrian |
Enable setting the MCS rate bit for ast_tx_rate.
This allows ath_stats to print the MCS rate when TX'ing.
|
219870 |
22-Mar-2011 |
adrian |
Clean up setting the short preamble bit in the rate - this way it is very obvious (and cleanly so) that it occurs for non-11n rates.
|
219869 |
22-Mar-2011 |
adrian |
Flip this over to be a configurable option for people who wish to play with it.
It's still not ready for prime-time - there's some TX niggles with these 11n cards that I'm still trying to wrap my head around, and AMPDU-TX is just not implemented so things will come to a crashing halt if you're not careful.
|
219868 |
22-Mar-2011 |
adrian |
This isn't actually needed any longer, A-MPDU frames work fine if only tagged for 11n nodes.
|
219863 |
22-Mar-2011 |
adrian |
Bring over an XPA (external power amplifer) bias fix for the AR9160.
This fix modifies the const addac initval array, rather than modifying a local copy. It means that running >1 AR9160 on a board may prove to be unpredictable.
The AR5416 init path also does something similar, so supporting >1 AR5416 of different revisions could cause problems.
The later fix will be to create a private copy of the Addac data for the AR5416, AR9160 (and AR9100 when it's merged in) and then modify that as needed.
Obtained From: Linux ath9k
|
219862 |
22-Mar-2011 |
adrian |
Fix OFDM ANI statistics gathering for the AR5416 and later chips.
I found this when trying to figure out why the RX PHY error count didn't match the OFDM error count ANI was using. It turns out there was two problems:
* What this commit addresses - using the wrong mask for OFDM errors, and * The RX filter is set incorrectly after a channel scan (at least) even if interference mitigation is enabled by default.
ANI is still disabled by default for the AR5416 and later chips.
|
219860 |
22-Mar-2011 |
adrian |
Set the "right" CCA register.
Obtained From: ath9k
|
219855 |
22-Mar-2011 |
adrian |
Break out the RF mode setup into ar5416SetRfMode(), mirroring what ath9k does.
|
219854 |
22-Mar-2011 |
adrian |
Do a bit of spring cleaning in the board setup code, just to bring it in line with the rest of the register initialisation.
I've verified that the 2/5ghz board values written to the chip match what was previously written.
|
219853 |
22-Mar-2011 |
adrian |
Bring over a few queue changes from ath9k:
* add pspoll/uapsd queue setup defaults; * enable the exponential backoff window rather than the random backoff window when doing TX contention management.
|
219852 |
22-Mar-2011 |
adrian |
Even though it's very unlikely the misc mode register setting at -attach- would be a problem, make sure it isn't overwritten by whatever is in there at cold reset.
This brings the > ar5416 init path treatment of AR_MISC_MODE.
|
219851 |
22-Mar-2011 |
adrian |
Remove the merlin delay workaround here, it isn't appropriate for the analog bank writes as Merlin never does them.
|
219840 |
21-Mar-2011 |
adrian |
Back that commit out - something's broken, and I need to figure out what/why.
|
219839 |
21-Mar-2011 |
adrian |
This CLKDRV workaround should only be for AR5416 v2.0/2.1; the check was too strict and enabled it for all non AR5416-v2.2 chipsets - including later ones.
|
219822 |
21-Mar-2011 |
adrian |
Fix static ucastrate for ath_rate_sample.
* Pull out the static rix stuff into a different function * I know this may slightly drop performance, but check if a static rix is needed before each packet TX.
* Whilst I'm at it, add a little extra debugging to the rate control stuff to make it easier to follow what's going on.
|
219802 |
20-Mar-2011 |
adrian |
Disable a check I added a while ago to ensure the initial NF cal completed.
Give it a good go (32 attempts) and then print out a warning that's going to occur whether HAL debugging is enabled or not. Then don't abort the radio setup; just continue merrily along.
This should fix the issue that users were having where scanning would occasionally fail on the active channel, causing traffic to cease until the radio scanned again.
|
219794 |
20-Mar-2011 |
adrian |
Cave in and disable the ADC DC gain/offset calibrations if they're not needed.
These calibrations are only applicable if the chip operating mode engages both interleaved RX ADCs (ie, it's compensating for the differences in DC gain and DC offset -between- the two ADCs.) Otherwise the chip reads values of 0x0 for the secondary ADC (as I guess it's not enabled here) and thus writes potentially bogus info into the chip.
I've tested this on the AR9160 and AR9280; both behave themselves in 11g mode with these calibrations disabled.
|
219793 |
20-Mar-2011 |
adrian |
* Remove a not-needed check in the AR5416+ case * Restore the chip default of the DCU backoff threshold to 0x2, mirroring what ath9k does.
|
219792 |
20-Mar-2011 |
adrian |
Bring over a copy of the AR5212 TX queue reset and setup routines, in preparation for fixing them based on the ath9k related TXQ fixes.
I've done this so people can go over the history of the diffs to the original AR5212 routines (which AR5416 and later chips use) to see what's changed.
|
219790 |
20-Mar-2011 |
adrian |
Add a PSPOLL queue type, in preparation for (eventually) porting over the TX queue setup code from ath9k for the AR5416 and later chips.
|
219773 |
19-Mar-2011 |
adrian |
Add in the channel survey data structures. These will be filled out by the HAL at some point in the future.
|
219772 |
19-Mar-2011 |
adrian |
Reserve a new diagnostic code for the channel survey code I'll add soon.
|
219771 |
19-Mar-2011 |
adrian |
Make sure that the AR_MISC_MODE value from the initvals are properly respected.
This commit really is "fix the OFDM duration calculation to match reality when running in 802.11g mode."
The AR5212 init vals set AR_MISC_MODE to 0x0 and all the bits that can be set are set through code.
The AR5416 and later initvals set AR_MISC_MODE to various other values (with the AR5212 AR_MISC_MODE options cleared), which include AR_PCU_CCK_SIFS_MODE . This adds 6uS to SIFS on non-CCK frames when transmitting.
This fixes the issue where _DATA_ 802.11g OFDM frames were being TX'ed with the ACK duration set to 38uS, not 44uS as on the AR5212 (and other devices.)
The AR5212 TX pathway obeys the software-programmed duration field in the packet, but the 11n TX pathway overrides that with a hardware-calculated duration. This was getting it wrong because of the above AR_MISC_MODE setting. I've verified that 11g data OFDM frames are now being TXed with the correct ACK+SIFS duration programmed in.
|
219770 |
19-Mar-2011 |
adrian |
Use the HAL method rather than directly calling ar5212ResetTxQueue().
Since ath9k does some slightly different bit fiddling when setting up the TX queues, it may that the TX queue setup/reset functions will need overriding later on.
|
219767 |
19-Mar-2011 |
adrian |
Add debugging messages to the AR5416 ANI code that's found in the AR5212 ANI code.
|
219628 |
14-Mar-2011 |
adrian |
Fix typo that snuck in.
|
219627 |
14-Mar-2011 |
adrian |
Bring over the AR9285 board update code from ath9k.
This does a few things in particular:
* Abstracts out the gain control settings into a separate function; * Configure antenna diversity, LNA and antenna gain parameters; * Configure ob/db entries - the later v4k EEPROM modal revisions have multiple OB/DB parameters which are used for some form of calibration. Although the radio does have defaults for each, the EEPROM can override them.
This resolves the AR2427 related issues I've been seeing and makes it stable at all 11g rates for both TX and RX.
|
219605 |
13-Mar-2011 |
adrian |
Fix the nfarray offsets for the ar2133/ar5133 radio - (AR5416, AR9160, etc.)
The offsets didn't match the assumption that nfarray[] is ordered by the chainmask bits and programmed via the register order in ar5416_cca_regs[]. This repairs that damage and ensures that chain 1 is programmed correctly. (And extension channels will now be programmed correctly also.)
This fixes some of the stuck beacons I've been seeing on my AR9160/AR5416 setups - because Chain 1 would be programmed -80 or -85 dBm, which is higher than the actual noise floor and thus convincing the radio that indeed it can't ever transmit.
|
219588 |
13-Mar-2011 |
adrian |
The number of streams is not based on the interface stream count, but the number of streams needed for that MCS rate.
|
219586 |
13-Mar-2011 |
adrian |
Move out some of the shared eeprom board value calculation routines into ah.c rather than duplicating them for the v14 (ar5416+) and v4k (ar9285) codebases.
Further chipsets (eg the AR9287) have yet another EEPROM format which will use these routines to calculate things.
|
219585 |
13-Mar-2011 |
adrian |
* Add in some board settings debugging to log what's being written to the TX closed-loop power control registers. * Modify a couple of functions to take the register chain number, rather than the regChainOffset value. This allows for the register chain to be logged.
|
219481 |
11-Mar-2011 |
adrian |
Port over the AR9285 PA calibration and initial calibration code from Linux ath9k.
The ath9k ar9002_hw_init_cal() isn't entirely clear about what is supposed to be called for what chipsets, so I'm ignoring the rest of it and just porting the AR9285 init cal path as-is and leaving the rest alone. Subsequent commits may also tidy up the Merlin (AR9285) and other chipset support.
Obtained from: Linux ath9k
|
219480 |
11-Mar-2011 |
adrian |
Introduce methods for the initial calibration and the new PA calibration routines.
These are needed for the AR9285/AR2427 and AR9287 calibration routines which will be introducecd in a later commit.
|
219479 |
11-Mar-2011 |
adrian |
Remove the ar9285FillVpdTable() and just use ar5416FillVpdTable().
|
219475 |
11-Mar-2011 |
adrian |
Bring over the same fix from the AR5416 PDADC calibration code.
The ath9k driver has a unified boundary/pdadc function, whereas ours is split into two (one for each EEPROM type.) This is why the AR9280 check is done here where we could safely assume it'll always be AR9280 or later.
|
219474 |
11-Mar-2011 |
adrian |
Don't call ar5416SetTransmitPower() directly from ar5416SetTxPowerLimit(); this is incorrect for Kite (AR9285) and any future chipsets that override the EEPROM related routines.
It meant that a direct call to set the TX power would call the v14 EEPROM AR5416/AR9280 calibration routines, rather than the v4k EEPROM routines for the AR9285. It thus read the incorrect values from the EEPROM and programmed garbage PDADC and TX power values into the hardware.
|
219450 |
10-Mar-2011 |
adrian |
Kite is a 1x1 stream device.
|
219445 |
10-Mar-2011 |
adrian |
Now that the power curve adjustment code is in, disable the error check I introduced earlier, and turn it into debugging output.
|
219444 |
10-Mar-2011 |
adrian |
Port over the v14 eeprom PDADC curve changes from ath9k.
It looks like these apply in both open and closed loop TX power control, but the only merlin boards i have either have OL -or- a non-default power offset, not both.
|
219443 |
10-Mar-2011 |
adrian |
Merlin fix - first pdadc gain index is 0 - minpwr/2 .
Obtained from: Linux ath9k
|
219442 |
10-Mar-2011 |
adrian |
Migrate the regulatory database definitions into separate header files to both make things clearer, and to make it easier to write userland code which pulls in these definitions without needing to pull in the rest of the HAL.
This stuff should be deprecated at some point in the future once the net80211 regulatory domain support encapsulates all of the defintions here.
|
219441 |
10-Mar-2011 |
adrian |
Introduce the Merlin PWDCLKIND workaround.
This is something bus clock related from what I can gather. It is needed for the AR9220 based Ubiquiti SR71-12 and SR71-15 Mini-PCI NICs.
(Note: those NICs don't work right now because of earlier changes to handle power table offset correctly. That'll be resolved in a follow-up commit.)
|
219419 |
09-Mar-2011 |
adrian |
For chips that are full reset in ar5416ChipReset(), save and restore the TSF.
Merlin (ar9280) and later were full-reset if they're doing open-loop TX power control but the TSF wasn't being saved/restored.
Add ar5212SetTsf64() which sets the 64 bit TSF appropriately.
|
219394 |
08-Mar-2011 |
adrian |
Break out the ath regulatory domain structures into a separate header file.
|
219393 |
08-Mar-2011 |
adrian |
Implement open-loop TX power control (OLC) for Merlin (AR9280) and generally tidy up the TX power programming code.
Enforce that the TX power offset for Merlin is -5 dBm, rather than any other value programmable in the EEPROM. This requires some further code to be ported over from ath9k, so until that is done and tested, fail to attach NICs whose TX power offset isn't -5 dBm.
This improves both legacy and HT transmission on my merlin board. It allows for stable MCS TX up to MCS15.
Specifics:
* Refactor out a bunch of the TX power calibration code - setting/obtaining the power detector / gain boundaries, programming the PDADC * Take the -5 dBm TX power offset into account on Merlin - "0" in the per-rate TX power register means -5 dBm, not 0 dBm * When doing OLC * Enforce min (0) and max (AR5416_MAX_RATE_POWER) when fiddling with the TX power, to avoid the TX power values from wrapping when low. * Implement the 1 dBm cck power offset when doing OLC * Implement temperature compensation for 2.4ghz mode when doing OLC * Implement an AR9280 specific TX power calibration routine which includes the OLC twiddles, leaving the earlier chipset path (AR5416, AR9160) alone
Whilst here, use these refactored routines for the AR9285 TX power calibration/programming code and enforce correct overflow/underflow handling when fiddling with TX power values.
Obtained from: linux ath9k
|
219318 |
06-Mar-2011 |
adrian |
Add an EEPROM op that extracts out the power table offset. It defaults to -5 dBm for eeproms earlier than v21.
This apparently only applies to Merlin (AR9280) or later, earlier 11n chipsets have a power table offset of 0. All the code in ath9k which checks the power table offset and takes it into account first ensures the chip is Merlin or later.
|
219315 |
05-Mar-2011 |
adrian |
Change HALDEBUG() to be a macro that conditionally calls the debug output routine.
The earlier way of doing debugging would evaluate the function parameters before calling the HALDEBUG. In the case of detailed register debugging would mean a -lot- of unneeded register IO and other stuff was going on.
This method evaluates the ath_hal_debug variable before the function parameters are evaluated, drastically reducing the amount of overhead enabling HAL debugging during compilation.
|
219252 |
03-Mar-2011 |
adrian |
The sample rate module currently does the slightly wrong thing when determining whether to use MRR or not.
It uses the 11g protection mode when calculating 11n related stuff, rather than checking the 11n protection mode.
Furthermore, the 11n chipsets can quite happily handle multi-rate retry w/ protection; the TX path and rate control modules need to be taught about that.
|
219218 |
03-Mar-2011 |
adrian |
Port over ar5416OverrideIni() from ath9k ar5008_hw_override_ini().
* change the BB gating logic to explicitly define which chips are covered; the ath9k method isn't as clear. * don't disable the BB gating for now, the ar5416 initvals have it, and the ar9160 initval sets it to 0x0. Figure out why before re-enabling this. * migrate the Merlin (ar9280) applicable WAR from the Kite (ar9285) code (which won't get called for Merlin!) and stuff it in here.
|
219217 |
03-Mar-2011 |
adrian |
* fix the ar5416 check macros to be slightly more correct; * add some stubs for chipsets that we haven't yet obtained support for.
|
219216 |
03-Mar-2011 |
adrian |
Modify the sample rate module output to be (slightly) easier to understand.
* add dot11rate_label() which returns Mb or MCS based on legacy or HT * use it everywhere dot11rate() is used * in the "current selection" part at the top of the debugging output, otuput what the rate itself is rather than the rix. The rate index (rix) has very little meaning to normal humans who don't know how to find the PHY settings for each of the chipsets; pointing out the rix rate and type is likely more useful.
|
219214 |
03-Mar-2011 |
adrian |
Disable trying to do HT/40 and short-GI TX.
These flags are just plain wrong - they're the node flags from negotiation, not the configured flags. I'll jump in later on and figure out exactly what should be done to properly set these two flags when in both STA mode (ie, what the AP says is possible and what's configured) and AP mode (ie, where the AP has a configuration, but then negotiates what's possible with each node, so per-node configuration can and will differ.)
This allows the 11n 2.4ghz/ht20 mode to associate (but perform poorly still) and exchange MCS rates with atheros reference APs and a Cisco/Linksys E3000 AP.
|
219185 |
02-Mar-2011 |
adrian |
Break the keycache management functions out into if_ath_keycache.c .
|
219180 |
02-Mar-2011 |
adrian |
Migrate the sysctl related routines (statistics, debugging, etc) out of if_ath.c and into if_ath_sysctl.c .
|
218935 |
22-Feb-2011 |
adrian |
Don't set the RTS/CTS enable bit per-scenario if the global RTS/CTS flags aren't set.
|
218932 |
22-Feb-2011 |
adrian |
Shuffle around the RTS/CTS rate/duration logic.
* Turn ath_tx_calc_ctsduration() into a function that returns the ctsduration, or -1 for HT rates; * add a printf() to ath_tx_calc_ctsduration() which will be very loud if somehow that function is called with an MCS rate; * Add ath_tx_get_rtscts_rate() which returns the RTS/CTS rate to use for the given data rate, incl. the short preamble flag; * Only call ath_tx_calc_ctsduration() for non-11n chipsets; 11n chipsets don't require the rtscts duration to be calculated.
|
218931 |
22-Feb-2011 |
adrian |
* Don't setup the scenario if the try count is 0 * Comment what else is going on during rate scenario setup
|
218925 |
21-Feb-2011 |
adrian |
Fix formatting of new stat sysctls; add descriptions
|
218924 |
21-Feb-2011 |
adrian |
Add a new counter which tracks frames TX'ed with HT protection.
|
218923 |
21-Feb-2011 |
adrian |
Add a vocal warning to ath_hal_computetxtime() function is used for non-11n rates.
It's used to calculate:
* the initial per-rate entries for short/long preamble ACK durations; * packet durations for TDMA slot decisions; * RTS/CTS protection durations; * updating the duration field in the 802.11 frame header
This way invalid durations will generate a warning, prompting for it to be fixed.
|
218908 |
21-Feb-2011 |
adrian |
Modify the AR5416 11na rate table to use 24mb OFDM 11a for control traffic, rather than MCS 0.
Using MCS0 for protecting 11a rates seems a bit silly.
|
218907 |
21-Feb-2011 |
adrian |
Implement setting the short preamble bit if it's needed for the current node.
Short preamble rates are only for legacy rates; MCS rate codes don't have a short preamble code like this.
|
218779 |
17-Feb-2011 |
adrian |
Just be double-sure short-gi isn't being enabled in 20mhz mode.
|
218778 |
17-Feb-2011 |
adrian |
Disable short-GI in 20mhz mode - the hardware doesn't support this.
|
218764 |
17-Feb-2011 |
adrian |
Add in ANI parameters for the AR9280. These aren't enabled by default as they're likely not entirely correct, but they give people something to toy with to compare behaviour/performance.
Disable the anti-noise part, as this apparently interferes with RIFS. I haven't verified this.
|
218763 |
17-Feb-2011 |
adrian |
Add a new parameter to selectively enable/disable the ANI operations.
This was inspired by ath9k, which disables ANI anti-noise immunity parameter tweaking (but leaves the rest of the ANI operations alone.)
|
218762 |
17-Feb-2011 |
adrian |
Call the right function.
|
218761 |
17-Feb-2011 |
adrian |
Properly propagate whether the channel is HT40 or not when calculating packet duration for the ath_rate_sample module.
This doesn't affect the packet TX at all; only how much time the sample rate module attributes to a completed TX.
|
218708 |
15-Feb-2011 |
adrian |
Disable flipping antennas for AR9280.
Flipping antennas when doing 11n would cause all kinds of strange issues. Just don't do it for now and when it comes time to do it, don't do it here.
|
218690 |
14-Feb-2011 |
adrian |
bring this in line with what ath9k does.
|
218689 |
14-Feb-2011 |
adrian |
Some statistics additions - prepare for error codes > 32 (since the AR5416 error mask is > 5 bits) and add some extra CRC/HT40/ShortGI counters to help debug 802.11n issues.
|
218642 |
13-Feb-2011 |
adrian |
This should be TX stream, not RX stream.
|
218593 |
12-Feb-2011 |
adrian |
The current code used the fields in ath_set11nratescenario() . Use them correctly:
* pass in whether to allow the hardware to override the duration field in the main data frame (durupdate_en) - PS_POLL frames in particular don't have the duration bit overriden; * there's no rts/cts duration here; that's done elsehwere
|
218566 |
11-Feb-2011 |
adrian |
.. how'd this compile before I commit it and then not now?
Fixed.
|
218556 |
11-Feb-2011 |
adrian |
The last parameter to ath_computedur_ht() is short-GI, not short-preamble.
|
218490 |
09-Feb-2011 |
adrian |
Expose the 4k transaction workaround hooks to the driver, but don't (yet) fix the descriptor allocation.
|
218488 |
09-Feb-2011 |
adrian |
Add in the (very!) optional glue to flip the 11n bits for if_ath.
There's still a lot of random issues to sort out with the radio side of things and AMPDU RX handling (and completely missing AMPDU TX handling!) but if people wish to give this a go and assist in debugging the issues, they can define ATH_DO_11N to enable it.
I'm just re-iterating - this is here to allow people to assist in further 11n development; it is not any indication that the 11n support is complete and functional.
Important notes:
* This doesn't support 1-stream cards yet - (eg AR9285) - the various bits that negotiate TX/RX MCS don't know not to try >1 stream TX or negotiate 1-stream RX; so don't enable 11n unless you've first taught the rate control module and the net80211 stack to negotiate 1-stream stuff;
* The only rate control module minimally 11n aware is ath_rate_sample;
* ath_rate_sample doesn't know about HT/40; so airtime will be incorrectly calculated;
* The AR9160 and AR9280 radio code is unreliable at the higher MCS rates for some reason; this will definitely impact 11n performance;
* AMPDU-TX isn't yet implemented;
* AMPDU-RX may be a bit buggy still and will definitely suffer from the radio unreliability mentioned above (ie, don't expect 150/300mbit RX just yet.)
|
218483 |
09-Feb-2011 |
adrian |
Fix the keycache behaviour for multicast keycache search.
The correct bit to set is 0x1 in the high MAC address byte, not 0x80. The hardware isn't programmed with that bit (which is the multicast adress bit.)
The linux ath9k keycache code uses that bit in the MAC as a "this is a multicast key!" and doesn't set the AR_KEYTABLE_VALID bit. This tells the hardware the MAC isn't to be used for unicast destination matching but it can be used for multicast bssid traffic.
This fixes some encryption problems in station mode.
PR: kern/154598
|
218453 |
08-Feb-2011 |
adrian |
net80211 really doesn't want A_MPDU to appear on non-11n station node mbufs. Revert back to the previous method of doing it for where a node can be identified and it's an 11n node.
I'll have to do some further research into exactly what is being messed up with the sequence number matching and I'll then revisit this.
|
218448 |
08-Feb-2011 |
adrian |
Commit some missing bits to the sample rate module to (more) correctly calculate 802.11n packet duration.
This doesn't yet take into account HT40 packet durations as the node info (needed to know if it's a HT20 or HT40 node) isn't available everywhere it needs to be.
|
218441 |
08-Feb-2011 |
adrian |
I missed this commit - enable 4k transaction support for the ar5416+ar9160.
|
218436 |
08-Feb-2011 |
adrian |
There's apparently a bug with Merlin (AR9280) and later chipsets where putting descriptors (not buffers) across a 4k page boundary can cause issues. I've not seen it in production myself but it apparently can cause problems.
So, in preparation for addressing this workaround, (re)-expose the particular HAL capability bit which marks whether the chipset has support for cross-4k- boundary transactions or not.
A subsequent commit will modify the descriptor allocation to avoid allocating descriptor entries that straddle a 4k page boundary.
|
218420 |
07-Feb-2011 |
adrian |
Add in some AR9280 specific board configuration options.
* The existing radio config code was for the AR5416/AR9160 and missed out on some of the AR9280 specific stuff. Include said stuff from ath9k.
* Refactor out the gain control settings into a new function, again pilfered from ath9k.
* Use the analog register RMW macro when touching analog registers.
Obtained from: Linux ath9k
|
218419 |
07-Feb-2011 |
adrian |
Bring over some AR9280-specific v14 additions that exist in ath9k.
Obtained from: Linux ath9k
|
218416 |
07-Feb-2011 |
adrian |
Use analog delay macro for modifying an analog register.
|
218415 |
07-Feb-2011 |
adrian |
Add a new RMW macro for analog register writes which implements the needed wait period between operations.
|
218409 |
07-Feb-2011 |
adrian |
Fix typo in SIFS setup
|
218402 |
07-Feb-2011 |
adrian |
Add in a per phy error sysctl.
|
218379 |
06-Feb-2011 |
adrian |
Just tag all RX packets as needing reorder processing for now.
This fixes two problems -
* All packets need to be processed here, not just aggregate ones - as any received frames (AMPDU or otherwise) in the given TID (traffic class id) will update the sequence number and, implied with that, update the window; * It seems there's situations where packets aren't matching a current node but somehow need to be tracked. Thus just tag them all for now; I'll figure out the why later.
Whilst I'm here, bump the stats counters whilst I'm at it.
This fixes AMPDU RX in my tests; the main problems now stem from what look like PHY level error/retransmits which are impeding general throughput, incl. AMPDU.
|
218378 |
06-Feb-2011 |
adrian |
Only tag packets with the A-MPDU bit if they were part of an A-MPDU RX.
Whilst I'm here, add a counter to count said packets.
|
218354 |
05-Feb-2011 |
adrian |
Add a temporary workaround so the 11n rate scenario setup code sets a useful TX chainmask.
since the upper layers don't (yet) know about the active TX/RX chainmasks, it can't tell the rate scenario functions what to use. I'll eventually sort this out; this restores functionality in the meantime.
|
218243 |
04-Feb-2011 |
adrian |
Oops, fix newbie mistake that breaks the normal build.
|
218240 |
03-Feb-2011 |
adrian |
Modify the TX path to set and use the 11n rate scenario bits.
This isn't strictly required to TX (at least non-agg and non-HT40, non-short-GI) frames; but as it needs to be done anyway, just get it done.
Linux ath9k uses the rate scenario style path for -all- packets, legacy or otherwise. This code does much the same.
Beacon TX still uses the legacy, non-rate-scenario TX descriptor setup. Ath9k also does this.
This 11n rate scenario path is only called for chips in the AR5416 HAL; legacy chips use the previous interface for TX'ing.
|
218238 |
03-Feb-2011 |
adrian |
Disable the code I previously added from Rui's 802.11n branch.
A-MPDU RX interferes with packet retransmission/reordering. In local testing, I was seeing A-MPDU being negotiated and then not used by the AP sending frames to the STA; the STA would then treat non A-MPDU frames that are retransmits as out of the window and get plain confused.
The hardware RX status descriptor has a "I'm part of an aggregate" bit; so this should eventually be tested and then punted to the A-MPDU reorder handling only if it has this bit set.
|
218183 |
02-Feb-2011 |
adrian |
Call the correct ANI Attach routine.
|
218170 |
01-Feb-2011 |
adrian |
Just to be sure, make sure the MCS rates are allowed for TX.
Approved by: rpaulo@
|
218160 |
01-Feb-2011 |
adrian |
Add a new method to the rate control modules which extract out the three other rates and try counts.
The 11n rate scenario path wants to take a list of rate and tries, rather than calling setupxtxdesc().
|
218159 |
01-Feb-2011 |
adrian |
Include some preliminary TX HT rate scenario setup code.
The AR5416 and later TX descriptors have new fields for supporting 11n bits (eg 20/40mhz mode, short/long GI) and enabling/disabling RTS/CTS protection per rate.
These functions will be responsible for initialising the TX descriptors for the AR5416 and later chips for both HT and legacy frames.
Beacon frames will remain using the non-11n TX descriptor setup for now; Linux ath9k does much the same.
Note that these functions aren't yet used anywhere; a few more framework changes are needed before all of the right rate information is available for TX.
|
218157 |
01-Feb-2011 |
adrian |
Refator the common code which calculates the 802.11g protection duration.
|
218154 |
01-Feb-2011 |
adrian |
* Add a rather hacky "does this speak the 11n TX descriptor format" function; which will be later used by the TX path to determine whether to use the extended features or not.
* Break out the descriptor chaining logic into a separate function; again so it can be switched out later on for the 11n version when needed.
* Refactor out the encryption-swizzling code that's common in the raw and normal TX path.
|
218151 |
01-Feb-2011 |
adrian |
Add TX/RX chainmask info to if_ath - this is needed for the 11n TX rate series.
|
218150 |
01-Feb-2011 |
adrian |
Add a new capability which reports the number of spatial streams a device supports.
The higher levels (net80211, if_ath, ath_rate) need this to make correct choices about what MCS capabilities to advertise and what MCS rates are able to be TXed.
In summary:
* AR5416 - 2/3 antennas, 2x2 streams * AR9160 - 2/3 antennas, 2x2 streams * AR9220 - 2 antennas, 2x2 sstraems * AR9280 - 2 antennas, 2x2 streams * AR9285 - 2 antennas but with antenna diversity, 1x1 stream
|
218146 |
31-Jan-2011 |
adrian |
Remove the now unneeded XXX.
|
218145 |
31-Jan-2011 |
adrian |
Enable AMPDU reorder processing and receiving BAR frames when doing 802.11n.
Obtained from: rpaulo@
|
218131 |
31-Jan-2011 |
adrian |
Don't incorrectly set the burst duration setting in the TX descriptor.
After inspecting the ath9k source, it seems the AR5416 and later MACs don't take an explicit RTS/CTS duration. A per-scenario (ie, what multi- rate retry became) rts/cts control flag and packet duration is provided; the hardware then apparently fills in whatever details are required. The per-rate sp/lpack duration calculation just isn't used anywhere in the ath9k TX packet length calculations.
The burst duration register controls something different; it seems to be involved with RTS/CTS protection of 11n aggregate frames and is set via a call to ar5416Set11nBurstDuration().
I've done some light testing with rts/cts protected frames and nothing seems to break; but this may break said RTS/CTS and CTS-to-self protection.
|
218069 |
29-Jan-2011 |
adrian |
Avoid writing CCA threshold values for the EXT radios for non-HT40 channels.
|
218068 |
29-Jan-2011 |
adrian |
Bring over some NF calibration changes from ath9k.
Each different radio chipset has a different "good" range of CCA (clear channel access) parameters where, if you write something out of range, it's possible the radio will go deaf.
Also, since apparently occasionally reading the NF calibration returns "wrong" values, so enforce those limits on what is being written into the CCA register.
Write a default value if there's no history available.
This isn't the case right now but it may be later on when "off-channel" scanning occurs without init'ing or changing the NF history buffer. (As each channel may have a different noise floor; so scanning or other off-channel activity shouldn't affect the NF history of the current channel.)
|
218067 |
29-Jan-2011 |
adrian |
Fix some errors introduced w/ the last commit; fix setting RTS/CTS in the 11n rate scenario.
* I messed up a couple of things in if_athvar.h; so fix that. * Undo some guesswork done in ar5416Set11nRateScenario() and introduce a flags parameter which lets the caller set a few things. To begin with, this includes whether to do RTS or CTS protection. * If both RTS and CTS is set, only do RTS. Both RTS and CTS shouldn't be set on a frame.
|
218066 |
29-Jan-2011 |
adrian |
Link in the 11n specific TX methods into the HAL.
|
218065 |
29-Jan-2011 |
adrian |
Migrate the TX path code out of if_ath and into a separate source file.
There's two reasons for this:
* the raw and non-raw TX path shares a lot of duplicate code which should be refactored; * the 11n-ready chip TX path needs a little reworking.
|
218061 |
29-Jan-2011 |
adrian |
Add a check for the AR9285E; I have no idea what this is.
The only other changes in ath9k for the AR9285E revolve around sleep modes which are not fully implemented here yet.
|
218058 |
29-Jan-2011 |
adrian |
Break out the debug macros from if_ath.c into if_ath_debug.[ch] .
This is prep work for breaking out the TX path into a separate set of source files.
|
218013 |
28-Jan-2011 |
adrian |
(Mostly) teach ath_rate_sample about MCS rates.
This is just the bare minimum needed to teach ath_rate_sample to try and handle MCS rates. It doesn't at all attempt to find the best rate by any means - it doesn't know anything about the MCS rate relations, TX aggregation or any of the much sexier 11n stuff that's out there.
It's just enough to transmit 11n frames and handle TX completion.
It shouldn't affect legacy (11abg) behaviour.
Obtained from: rpaulo@
|
218012 |
28-Jan-2011 |
adrian |
Make space for the extended 802.11n MCS rate tables.
|
218011 |
28-Jan-2011 |
adrian |
Bring in some 802.11n packet duration calculation functions from a mix of Sam/Rui and linux ath9k .
This will eventually be used by rate control modules and by the TX code for calculating packet duration when handling rts/cts protection.
Obtained from: sam@, rpaulo@, linux ath9k
|
217930 |
27-Jan-2011 |
adrian |
Initialise the chainmask from the EEPROM rather than the hard-coded defaults.
The defaults enabled three chains on the AR5416 even if the card has two chains. This restores that and ensures that only the correct TX/RX chainmasks are used.
When HT modes are enabled, all TX chains will be correctly enabled.
This should now enable analog chain swapping with 2-chain cards. I'm not sure if this is needed for just the AR5416 or whether it also applies to AR9160, AR9280 and AR9287 (later on); I'll have to get clarification.
|
217925 |
27-Jan-2011 |
adrian |
Add missing getCapability call for AR5416.
|
217923 |
27-Jan-2011 |
adrian |
Make a note to re-check whether that particular check is needed.
|
217921 |
27-Jan-2011 |
adrian |
Writing to the analog registers on the AR9220 (Merlin PCI) seems to require a delay.
This, along with an initval change which will appear in a subsequent commit, fixes bus panics that I have been seing with the AR9220 on a Routerstation Pro (AR7161 MIPS board.)
Obtained from: Linux ath9k PR: kern/154220
|
217882 |
26-Jan-2011 |
adrian |
Add ar5416RestoreChainMask() which will undo any AR5416 specific chainmask overriding after calibration.
This will get set for other two chain radios, such as AR9280 and later on, AR9287. It should however be a nul operation.
|
217881 |
26-Jan-2011 |
adrian |
Add an AR5416 workaround - force a different bias based on 2.4ghz channel frequency.
Obtained from: Linux ath9k
|
217879 |
26-Jan-2011 |
adrian |
Break out the chainmask init code into a new function - ar5416InitChainMasks() .
ath9k does a few different things here during config - if it's an early AR5416 with two chains, it enables all three chains for calibration and then restores the chainmask to the original values after initial calibration has completed.
The reason behind this commit is to begin breaking out the chainmask configuration for this specific reason; follow-up commits will add the chainmask restore in the ar5416Reset() routine.
|
217878 |
26-Jan-2011 |
adrian |
* fix HAL_DEBUG_INTERRUPT to be a separate bit, it was overlapping with something else * add HAL_DEBUG_GPIO, for some GPIO related debugging I'm tinkering with at the moment.
|
217814 |
25-Jan-2011 |
adrian |
* Re-format the v4k header to be consistent * Re-do the structure size/component math to make sure the struct matches the expected size * Just to be clear that we care about bitmask ordering, revert my previous change and instead define that macro if we're on big-endian.
|
217813 |
25-Jan-2011 |
adrian |
Bring over a fix from ath9k - zero some of the TX descriptors for Kite/AR9285.
Kite doesn't have per-chain control (it has one chain) or antenna control; so don't try to set those descriptor entries.
|
217812 |
25-Jan-2011 |
adrian |
Rename this linux-ism __BIG_ENDIAN_BITFIELD macro to something suitable for FreeBSD.
Warner has pointed out that FreeBSD's bit orders follow byte orders.
|
217811 |
25-Jan-2011 |
adrian |
Commit updated AR9285 (Kite) v2 initvals from ath9k.
|
217809 |
25-Jan-2011 |
adrian |
Fix the Atheros V4K EEPROM definitions to match those in ath9k.
It turns out that the V4K eeprom definitions (used by the AR9285 and its derivatives) is wrong. These values are at least causing issues on my AR2427.
With this fix (and initvals in a subsequent commit), the AR2427 behaves a lot better.
Note - there's still significant drift between the ath9k v4k eeprom init code (again, used by AR9285 and derivatives) and what's in this tree. That needs to be investigated and resolved.
|
217790 |
24-Jan-2011 |
adrian |
Remove an invalid register setup; this is likely a holdover from the AR5212 code. It doesn't exist in ath9k and I've been told it doesn't exist in the Atheros internal driver.
|
217752 |
23-Jan-2011 |
adrian |
Enable the 11n PHY by default whether or not 11n is configured.
The linux ath9k driver and (from what I've been told) the atheros reference driver does this; it then leaves discarding 11n frames to the 802.11 layer.
Whilst I'm here, merge in a fix from ath9k which maintains a turbo register setting when enabling the 11n register; and remove an un-needed (duplicate) flag setting.
|
217751 |
23-Jan-2011 |
adrian |
Update the AR9280v2 inivals to match what is in Linux ath9k.
This repairs the behaviour of my AR9280 - both radio chains now seem to correctly be receiving.
|
217687 |
21-Jan-2011 |
adrian |
Fix some typos.
|
217686 |
21-Jan-2011 |
adrian |
Add missing getCapability call for AR5416.
|
217685 |
21-Jan-2011 |
adrian |
Modify the v14/v4k eeprom diag interface to return the whole eeprom.
The v1 and v3 interfaces returned the whole EEPROM but the v14/v4k interfaces just returned the base header. There's extra information outside of that which would also be nice to get access to.
|
217684 |
21-Jan-2011 |
adrian |
ANI changes #1 - split out the ANI polling from the RxMonitor hook.
The rxmonitor hook is called on each received packet. This can get very, very busy as the tx/rx/chanbusy registers are thus read each time a packet is received.
Instead, shuffle out the true per-packet processing which is needed and move the rest of the ANI processing into a periodic event which runs every 100ms by default.
|
217641 |
20-Jan-2011 |
adrian |
ar9280SetAntennaSwitch() was using the AR5416 chainmasks (3 chains) rather than the AR9280 chainmasks (2 chains)
|
217634 |
20-Jan-2011 |
adrian |
Only enable 11n modes if the chipset suports 11n.
Since the AR2427 doesn't allow 802.11n, it shouldn't have them configured.
|
217632 |
20-Jan-2011 |
adrian |
Include the device ids for the AR2427.
This is apparently an AR9285 with the 802.11n specific bits disabled.
This code is completely untested; I'm doing this in response to users who wish to test the functionality out. It's likely as buggy as the AR9285 support is in FreeBSD at the moment.
|
217631 |
20-Jan-2011 |
adrian |
Push the non-AR5416 related stuff into chipset specific directories.
sys/dev/ath/ath_hal/ar5416/ is getting very crowded and further commits will make it even more crowded. Now is a good time to shuffle these files out before any more extensive work is done on them.
Create an ar9003 directory whilst I'm here; ar9003 specific chipset code will eventually live there.
|
217629 |
20-Jan-2011 |
adrian |
Add a comment from my local HAL about what is actually going on here with these ADC DC Gain/Offset calibrations.
The whole idea is to calibrate a pair of ADCs to compensate for any differences between them.
The AR5416 returns lots of garbage, so there's no need to do the calibration there.
The AR9160 returns 0 for secondary ADCs when calibrating 2.4ghz 20mhz modes. It returns valid data for the secondary ADCs when calibrating 2.4ghz HT/40 and any 5ghz mode.
|
217628 |
20-Jan-2011 |
adrian |
Migrate the sample rate module to the new ath_hal_gettxcompletionrates() API.
This removes the chipset-dependent TX DMA completion descriptor groveling. It should now be (more) portable to other, later atheros chipsets when the time comes.
|
217627 |
20-Jan-2011 |
adrian |
Add in the public method to access the tx completion rates.
|
217624 |
20-Jan-2011 |
adrian |
Include the initial support for external EEPROMs.
The AR9100 at least doesn't have an external serial EEPROM attached to the MAC; it instead stores the calibration data in the normal system flash.
I believe earlier parts can do something similar but I haven't experienced it first-hand.
This commit introduces an eepromdata pointer into the API but doesn't at all commit to using it. A future commit will include the glue needed to allow the AR9100 support code to use this data pointer as the EEPROM.
|
217623 |
20-Jan-2011 |
adrian |
Port over another EEPROM option from ath9k - AR_EEP_DAC_HPWR_5G
This will be used by the temperature compensation calibration code which will shortly make an appearance.
|
217622 |
20-Jan-2011 |
adrian |
Add another HAL function which waits for a register for a configurable amount.
This will be used by some future code.
|
217621 |
20-Jan-2011 |
adrian |
Add a new HAL method to retrieve the completion schedule. It sets the completion schedule from the hardware and returns AH_TRUE if the hardware supports multi-rate retries (AR5212 and above); and returns AH_FALSE if the hardware doesn't support multi-rate retries.
The sample rate module directly reads the TX completion descriptor and extracts the TX schedule information from that. It will be updated in a future commit to instead use this method to determine the completion schedule.
|
217619 |
20-Jan-2011 |
adrian |
Use the now-exposed diag code, rather than a hard-coded magic number.
|
217618 |
20-Jan-2011 |
adrian |
Break out the diagnostic codes from ah_internal.h and place them in ah_diagcodes.h.
Since we now have the source code, there's no reason to hide the diag codes from other areas.
They live in the HAL as they form part of the HAL API and should still be treate as "potentially flexible; don't publish as a public API." But since they're already used as a public API (see follow-up commit), we may as well use them in place of magic constants.
|
217368 |
13-Jan-2011 |
mdf |
Fix up a few more sysctl(9) mis-typing found in various LINT builds.
|
217323 |
12-Jan-2011 |
mdf |
sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly.
Commit the rest of the devices.
|
211330 |
15-Aug-2010 |
adrian |
Fix indenting/whitespace issues introduced by me.
|
211328 |
15-Aug-2010 |
adrian |
The comment is misleading - that register setting seems to kick off the initial chip NF cal.
|
211309 |
14-Aug-2010 |
adrian |
A local addition, not imported from ath9k.
AR_PHY_CALMODE is explicitly reset on interface reset for other chipsets; this commit also sets it for the AR9160.
|
211308 |
14-Aug-2010 |
adrian |
* Merge in AR9160 initval updates from Linux-2.6.34. * Grab the AR_PHY_CCA and AR_PHY_EXT_CCA initvals from Linux wireless-testing.
Obtained from: Linux-2.6.34
|
211307 |
14-Aug-2010 |
adrian |
Merge in a fix for the power/(gain?) calculation. Apply it to both the 5416/9160 and 9285 code paths.
Obtained from: OpenWRT r22123, 522-ath9k_pwrcal_fix.patch
|
211306 |
14-Aug-2010 |
adrian |
Fix the calibration logic to correctly clamp the calculated coefficient.
Obtained from: OpenWRT r22123, 521-ath9k_iqcal_fix.patch
|
211303 |
14-Aug-2010 |
adrian |
Export ath stats via snmp, rather than requiring a debugging interface and "athstats".
|
211299 |
14-Aug-2010 |
adrian |
Add a global counter of missed beacons.
The existing missed beacon count is reset once a beacon isn't missed.
|
211214 |
12-Aug-2010 |
adrian |
* Fix indentation * Restore comment erroneously deleted from the previous commit
|
211211 |
12-Aug-2010 |
adrian |
Loading the NF CCA values may take longer than expected to occur. If it does, don't then try reprogramming the NF "cap" values (ie what values are the "maximum" value the NF can be) - instead, just leave the current CCA value as the NF cap.
This was inspired by some similar work from ath9k. It isn't a 100% complete solution (as there may be some reason where a high NF CCA/cap is written, causing the baseband to stop thinking it is able to transmit, leading to stuck beacon and interface reset) which I'll investigate and look at fixing in a later commit.
Obtained from: Linux
|
211210 |
12-Aug-2010 |
adrian |
Use ar5212IsNFCalInProgress() to check for NF calibration progress.
|
211209 |
12-Aug-2010 |
adrian |
Fix indentation.
|
211208 |
12-Aug-2010 |
adrian |
Ensure that the correct rxchainmask is used when doing calibration in the AR5416 and later chipsets.
ath_hal_calibrateN() calls the HAL calibrateN function with rxchainmask=0x1. This is not necessarily the case for AR5416 and later chipsets.
|
211207 |
12-Aug-2010 |
adrian |
Internal NF calibration should not occur in parallel with any other calibration. Ensure that the NF calibration completes before continuing with the rest of the calibration setup process.
|
211206 |
12-Aug-2010 |
adrian |
Add a couple of functions to check NF calibration progress / completion.
|
211136 |
10-Aug-2010 |
adrian |
Don't delay updating the longcal timer - instead, update the longcal flag immediately so it's only set once per longcal interval.
Without this, the current AR5416 code will continuously spam NF calibrations during a periodic calibration if the longcal flag is set. The longcal flag wouldn't be cleared until the calibration method indicates that calibrations are "complete".
This drops the rate of NF calibration updates down from "once every shortcal" (ie, every 100ms) during a periodic calibration, to only once per "longcal" interval. Spamming NF calibrations every 100ms caused some potentially horrific issues in noisy environments as NF calibrations can take longer than 100ms and this spamming can cause invalid NF calibration results to be read back - leading to missed beacons, and thus leading to a stuck beacon situation.
Stuck beacons cause interface resets, which restart calibrations. This means that the longcal calibration runs every 100ms (shortcal) until all initial calibrations are completed. This spamming can then cause the above issues which leads to stuck beacons, leading to interface resets, etc, etc. Quite annoying.
|
211135 |
10-Aug-2010 |
adrian |
Bring over ar5416 inivals from Linux-2.6.34.
Reviewed by: rpaulo@ Obtained from: Linux
|
211134 |
10-Aug-2010 |
adrian |
Re-format the ar5416 inivals to be consistent with what Linux ath9k uses.
|
209799 |
08-Jul-2010 |
adrian |
Extend the ath debugging a little to log the interface name.
Some devices have >1 atheros card and the current debug prints make it impossible to tell which interface is being unhappy.
|
209548 |
27-Jun-2010 |
rpaulo |
Fix typo introduced in previous revision.
|
209541 |
26-Jun-2010 |
rpaulo |
Fix the AR_SREV_MERLIN_20_OR_LATER() check.
Submitted by: Alex Kozlov <spam at rm-rf.kiev.ua> MFC after: 2 weeks
|
209156 |
14-Jun-2010 |
bschmidt |
sc_lastrs is also used in case the sending station is not known, for example in a split IBSS scenario. Therefore always assign sc_lastrs. This removes a hack I committed in r206457.
Approved by: rpaulo (mentor)
|
208712 |
01-Jun-2010 |
rpaulo |
Rewrite ar9285SetBoardValues() to match what ath9k does and fix out of bounds reads.
MFC after: 3 days
|
208711 |
01-Jun-2010 |
rpaulo |
Bring in a couple of fixes from the Linux ath9k related to chip hangs. While there, try to make the register write pattern look like what's done by ath9k.
MFC after: 3 days
|
208703 |
01-Jun-2010 |
rpaulo |
Fix an off by one in ar9285SetPowerCalTable().
Found with: Coverity Prevent(tm) CID: 3979 MFC after: 3 days
|
208644 |
29-May-2010 |
rpaulo |
Due to the way HALDEBUG() is defined, we need to add curly brackets when using it as a sole if clause instruction. While there, fix 'const static' typo.
Submitted by: Arnaud Lacombe <alc@FreeBSD.org> MFC after: 1 week
|
208643 |
29-May-2010 |
rpaulo |
Due to the way HALDEBUG() is defined, we need to add curly brackets when using it as a sole if clause instruction.
Submitted by: Arnaud Lacombe <alc@FreeBSD.org> MFC after: 1 week
|
208642 |
29-May-2010 |
rpaulo |
Don't shadow the global variable 'version'.
Submitted by: Arnaud Lacombe <alc@NetBSD.org> MFC after: 1 week
|
207554 |
03-May-2010 |
sobomax |
Add new tunable 'net.link.ifqmaxlen' to set default send interface queue length. The default value for this parameter is 50, which is quite low for many of today's uses and the only way to modify this parameter right now is to edit if_var.h file. Also add read-only sysctl with the same name, so that it's possible to retrieve the current value.
MFC after: 1 month
|
207472 |
01-May-2010 |
imp |
The Atheros AR71xx CPUs, when paired with the AR5212 parts, has a bug that generates a fatal bus trap. Normally, the chips are setup to do 128 byte DMA bursts, but when on this CPU, they can only safely due 4-byte DMA bursts due to this bug. Details of the exact nature of the bug are sketchy, but some can be found at https://forum.openwrt.org/viewtopic.php?pid=70060 on pages 4, 5 and 6. There's a small performance penalty associated with this workaround, so it is only enabled when needed on the Atheros AR71xx platforms.
Unfortunately, this condition is impossible to detect at runtime without MIPS specific ifdefs. Rather than cast an overly-broad net like Linux/OpenWRT dues (which enables this workaround all the time on MIPS32 platforms), we put this option in the kernel for just the affected machines. Sam didn't like this aspect of the patch when he reviewed it, and I'd love to hear sane proposals on how to fix it :)
Reviewed by: sam@
|
206496 |
12-Apr-2010 |
rpaulo |
Remove svn:executable prop.
|
206457 |
10-Apr-2010 |
bschmidt |
Add WPA-None support: * WPA-None requires ap_scan=2: The major difference between ap_scan=1 (default) and 2 is, that no IEEE80211_IOC_SCAN* ioctls/functions are called, though, there is a dependency on those. For example the call to wpa_driver_bsd_scan() sets the interface UP, this never happens, therefore the interface must be marked up in wpa_driver_bsd_associate(). IEEE80211_IOC_SSID also is not called, which means that the SSID has not been set prior to the IEEE80211_MLME_ASSOC call. * WPA-None has no support for sequence number updates, it doesn't make sense to check for replay violations.. * I had some crashes right after the switch to RUN state, issue is that sc->sc_lastrs was not yet defined.
Approved by: rpaulo (mentor) MFC after: 3 weeks
|
206420 |
09-Apr-2010 |
rpaulo |
Setup the correct RX/TX chainmask when we play with the antenna settings.
MFC after: 1 week Sponsored by: iXsystems, inc
|
204645 |
03-Mar-2010 |
rpaulo |
Introduce ath_hal_setInterrupts(), a macro for ah_setInterrupts().
Pointed out by: sam
|
204644 |
03-Mar-2010 |
rpaulo |
Replace Id keyword with FreeBSD keyword and set the svn props correctly. No functional change.
|
204579 |
02-Mar-2010 |
rpaulo |
Couple of suggestions from Sam regarding latest commit: o rename the new variables to comply with the naming scheme o move the new variables to an AR5212 specific struct o use ahp when available o revert to previous ts_flags check
|
204521 |
01-Mar-2010 |
rpaulo |
Properly setup the TX FIFO threshold for AR5416 based chipsets, including the AR9285. This seems to fix some users's problems.
Submitted by: Jorge Boncompte [DTI2] <jorge at dti2.net>
|
204100 |
19-Feb-2010 |
deischen |
Correct spelling of reseting (found while researching the "bb hang detected" messages that are plaguing me). While I'm here, delete trailing whitespace.
|
203959 |
16-Feb-2010 |
rpaulo |
Fix Kite and Merlin version check.
|
203933 |
15-Feb-2010 |
rpaulo |
Fix KITE version check.
Obtained from: //depot/user/rpaulo/80211n/...
|
203930 |
15-Feb-2010 |
rpaulo |
Bring back AR9285 support. This fixes most of the issues and should be pretty usable.
MFC after: 1 month
|
203882 |
14-Feb-2010 |
rpaulo |
Revert part of the 9285 support because it breaks the 9280 support. I'll try to do the 9285 support without interfering with any other chipset revisions support.
|
203751 |
10-Feb-2010 |
rpaulo |
Fix typo in comment.
Pointed out by: danfe
|
203750 |
10-Feb-2010 |
rpaulo |
't' stands for Turbo and is a valid mode, so fix previous commit.
Pointed out by: sam
|
203695 |
09-Feb-2010 |
avatar |
Fixing compilation bustage by removing a stray comment fragment.
|
203683 |
08-Feb-2010 |
rpaulo |
Add multicast key search support. This fixes corrupted mcast packets when we have more than one hostap vap.
Submitted by: Russell Yount <russell.yount at gmail.com> MFC after: 2 weeks
|
203682 |
08-Feb-2010 |
rpaulo |
Fix TX power problems with AR9285.
|
203680 |
08-Feb-2010 |
rpaulo |
Fix typo in comment.
|
203159 |
29-Jan-2010 |
rpaulo |
Add support for the AR9285 chipset, which is found on many netbooks available today.
This card is a low power 802.11bgn that only does 11n rates up to MCS 7 (that's 65 Mbps in 20Mhz mode and 135 in 40Mhz mode). 802.11n is not yet supported, but will be in the future.
The driver still has a problem regarding to the setting of txpower on the card, so don't expect good performance yet. After fixing this problem, an MFC is possible.
Special thanks to iXsystems and S Smirnov <tonve at yandex.ru> for help with the purchase of a netbook with this card.
Sponsored by: iXsystems, Inc.
|
203158 |
29-Jan-2010 |
rpaulo |
Replace Id keyword with the FreeBSD keyword.
|
203156 |
29-Jan-2010 |
rpaulo |
Replace Id keyword with the FreeBSD keyword.
|
202161 |
12-Jan-2010 |
gavin |
Spell "Hz" correctly wherever it is user-visible.
PR: bin/142566 Submitted by: N.J. Mann njm njm.me.uk Approved by: ed (mentor) MFC after: 2 weeks
|
201758 |
07-Jan-2010 |
mbr |
Remove extraneous semicolons, no functional changes.
Submitted by: Marc Balmer <marc@msys.ch> MFC after: 1 week
|
201453 |
03-Jan-2010 |
imp |
cardbus -> CardBus
|
199491 |
18-Nov-2009 |
rpaulo |
Add WorldB SKU.
Reviewed by: sam MFC after: 1 week
|
198988 |
06-Nov-2009 |
jhb |
Take a step towards removing if_watchdog/if_timer. Don't explicitly set if_watchdog/if_timer to NULL/0 when initializing an ifnet. if_alloc() sets those members to NULL/0 already.
|
197948 |
10-Oct-2009 |
rpaulo |
Atheros EEPROM version 4K. This version is mostly based on version 1.4. This is needed by the upcoming AR9285 support. Information on the layout gathered from Linux ath9k.
Not yet connected to the build.
Tested by: Eugeny Dzhurinsky
|
196970 |
08-Sep-2009 |
phk |
Revert previous commit and add myself to the list of people who should know better than to commit with a cat in the area.
|
196969 |
08-Sep-2009 |
phk |
Add necessary include.
|
196935 |
07-Sep-2009 |
sam |
remove extranous return
Submitted by: phk MFC after: 1 week
|
196934 |
07-Sep-2009 |
sam |
fix extraneous return that can cause a memory leak
Submitted by: phk MFC after: 1 week
|
196933 |
07-Sep-2009 |
sam |
correct typo that was a noop on 32-bit machines but a bug on 64-bit machines
Submitted by: phk
|
196717 |
31-Aug-2009 |
sam |
On resume in sta mode program the beacon timers so when roaming (and the previous ap is no longer in range) the device will deliver bmiss interrupts and trigger the state machine. Also arrange to sync the beacon timers on the next received beacon frame so that when we don't roam we re-synchronize with the ap.
Tested by: trasz MFC after: 1 week
|
196603 |
27-Aug-2009 |
sam |
change default regdomain for thailand
Obtained from: linux-wireless@kernel.org
|
195809 |
21-Jul-2009 |
sam |
Fix handling of AR_RX_FILTER_BSSID: write the shadow value for AR_MISC_MODE so other register writes preserve the setting of AR_MISC_MODE_BSSID_MATCH_FORCE.
Reviewed by: rpaulo Approved by: re (kib)
|
195807 |
21-Jul-2009 |
sam |
track whether any mesh vaps are present to correctly setup the rx filter when, for example, an ap vap is created first
Reviewed by: rpaulo Approved by: re (kib)
|
195620 |
11-Jul-2009 |
rpaulo |
Fix something bogus deletion that got it during mesh commit.
Approved by: re (implicit)
|
195618 |
11-Jul-2009 |
rpaulo |
Implementation of the upcoming Wireless Mesh standard, 802.11s, on the net80211 wireless stack. This work is based on the March 2009 D3.0 draft standard. This standard is expected to become final next year. This includes two main net80211 modules, ieee80211_mesh.c which deals with peer link management, link metric calculation, routing table control and mesh configuration and ieee80211_hwmp.c which deals with the actually routing process on the mesh network. HWMP is the mandatory routing protocol on by the mesh standard, but others, such as RA-OLSR, can be implemented.
Authentication and encryption are not implemented.
There are several scripts under tools/tools/net80211/scripts that can be used to test different mesh network topologies and they also teach you how to setup a mesh vap (for the impatient: ifconfig wlan0 create wlandev ... wlanmode mesh).
A new build option is available: IEEE80211_SUPPORT_MESH and it's enabled by default on GENERIC kernels for i386, amd64, sparc64 and pc98.
Drivers that support mesh networks right now are: ath, ral and mwl.
More information at: http://wiki.freebsd.org/WifiMesh
Please note that this work is experimental. Also, please note that bridging a mesh vap with another network interface is not yet supported.
Many thanks to the FreeBSD Foundation for sponsoring this project and to Sam Leffler for his support. Also, I would like to thank Gateworks Corporation for sending me a Cambria board which was used during the development of this project.
Reviewed by: sam Approved by: re (kensmith) Obtained from: projects/mesh11s
|
195426 |
07-Jul-2009 |
sam |
Fix ar5416 and later parts on big-endian platforms: setup the h/w byte swizzler using the same technique used everywhere else.
Approved by: re (kib)
|
195418 |
06-Jul-2009 |
sam |
Fix AR5416 and later parts when building with AH_DEBUG or similar defined: always define OS_REG_UNSWAPPED and use it in ath_hal_reg_{read,write}.
Approved by: re (kib)
|
195135 |
28-Jun-2009 |
phk |
Revert a local change that should not have been in the last commit.
Approved by: re (kib)
|
195134 |
28-Jun-2009 |
phk |
There are a number of ways an application can check if there are inbound data waiting on a filedescriptor, such as a pipe or a socket, for instance by using select(2), poll(2), kqueue(2), ioctl(FIONREAD) etc.
But we have no way of finding out if written data have yet to be disposed of, for instance, transmitted (and ack'ed!) to some remote host, or read by the applicantion at the far end of the pipe.
The closest we get, is calling shutdown(2) on a TCP socket in non-blocking mode, but this has the undesirable sideeffect of preventing future communication.
Add a complement to FIONREAD, called FIONWRITE, which returns the number of bytes not yet properly disposed of. Implement it for all sockets.
Background:
A HTTP server will want to time out connections, if no new request arrives within a certain period after the last transmitted response has actually been sent (and ack'ed).
For a busy HTTP server, this timeout can be subsecond duration.
In order to signal to a load-balancer that the connection is truly dead, TCP_RST will be the preferred method, as this avoids the need for a RTT delay for FIN handshaking, with a client which, surprisingly often, no longer at the remote IP number.
If a slow, distant client is being served a response which is big enough to fill the window, but small enough to fit in the socket buffer, the write(2) call will return immediately.
If the session timeout is armed at that time, all bytes in the response may not have been transmitted by the time it fires.
FIONWRITE allows the timeout to check that no data is outstanding on the connection, before it TCP_RST's it.
Input & Idea from: rwatson Approved by: re (kib)
|
195114 |
27-Jun-2009 |
sam |
Add HAL_RX_FILTER_BSSID support (to disable bssid match): o add HAL_CAP_BSSIDMATCH to identify parts that have the support for disabling bssid match o honor capability for set/get rx filter o use HAL_CAP_BSSIDMATCH in driver to decide whether to use the bssid match disable or fall back to promisc mode
Reviewed by: rpaulo Approved by: re (rwatson)
|
195049 |
26-Jun-2009 |
rwatson |
Use if_maddr_rlock()/if_maddr_runlock() rather than IF_ADDR_LOCK()/ IF_ADDR_UNLOCK() across network device drivers when accessing the per-interface multicast address list, if_multiaddrs. This will allow us to change the locking strategy without affecting our driver programming interface or binary interface.
For two wireless drivers, remove unnecessary locking, since they don't actually access the multicast address list.
Approved by: re (kib) MFC after: 6 weeks
|
194135 |
13-Jun-2009 |
sam |
purge HAL_TXSTAT_ALTRATE; you can figure this out by checking ts_finaltsi and it cannot be used with MCS rate codes
|
193389 |
03-Jun-2009 |
sam |
treat IEEE80211_S_CSA as a "running state"; this fixes ap mode 11h channel switch announcements
|
193352 |
02-Jun-2009 |
sam |
improve raw xmit failure handling
|
193351 |
02-Jun-2009 |
sam |
count frag tx failures as an ifnet error
|
193350 |
02-Jun-2009 |
sam |
fix comment
|
193349 |
02-Jun-2009 |
sam |
restart tdma beacons after vap destroy
|
192468 |
20-May-2009 |
sam |
Overhaul monitor mode handling: o replace DLT_IEEE802_11 support in net80211 with DLT_IEEE802_11_RADIO and remove explicit bpf support from wireless drivers; drivers now use ieee80211_radiotap_attach to setup shared data structures that hold the radiotap header for each packet tx/rx o remove rx timestamp from the rx path; it was used only by the tdma support for debugging and was mostly useless due to it being 32-bits and mostly unavailable o track DLT_IEEE80211_RADIO bpf attachments and maintain per-vap and per-com state when there are active taps o track the number of monitor mode vaps o use bpf tap and monitor mode vap state to decide when to collect radiotap state and dispatch frames; drivers no longer explicitly directly check bpf state or use bpf calls to tap frames o handle radiotap state updates on channel change in net80211; drivers should not do this (unless they bypass net80211 which is almost always a mistake) o update various drivers to be more consistent/correct in handling radiotap o update ral to include TSF in radiotap'd frames o add promisc mode callback to wi
Reviewed by: cbzimmer, rpaulo, thompsa
|
192401 |
19-May-2009 |
sam |
correct HAL_INT_BNR comment, this bit is mapped directly the h/w now
|
192400 |
19-May-2009 |
sam |
add TBTT interrupt support; this was added in Griffin so consumers should check HAL_CAP_INTRMASK before using it
NB: didn't test 11n parts yet so supported only for 5212-class parts
|
192399 |
19-May-2009 |
sam |
minor cleanup
|
192397 |
19-May-2009 |
sam |
remove special handling for BNR; it is direct mapped to the harwdare so can be added to HAL_INT_COMMON except on the 5210 where it doesn't exist
|
192396 |
19-May-2009 |
sam |
add HAL_CAP_INTRMASK to return the set of interrupts supported by the device
|
192147 |
15-May-2009 |
imp |
The module name convention is foo, not if_foo.
|
191909 |
08-May-2009 |
sam |
kill more portability functions that are no longer useful
|
191908 |
08-May-2009 |
sam |
kill unused OS_GETUPTIME
|
191866 |
07-May-2009 |
sam |
optimize ath_tx_findrix: there's no need to walk the rates table as sc_rixmap is an inverse map
NB: could eliminate the check for an invalid rate by filling in 0 for invalid entries but the rate control modules use it to identify bogus rates so leave it for now
|
191865 |
07-May-2009 |
sam |
o cleanup checks for which vap combinations are permitted and what to use for ic_opmode o fixes the case where creating ahdemo+wds vaps caused ic_opmode to be set to hostap
|
191864 |
06-May-2009 |
sam |
add support for the Beacon Not Ready (BNR) interrupt (available on 5211 and later)
|
191753 |
02-May-2009 |
sam |
make superg/fast-frames state dynamically-allocated (and indirect off the com structure instead of embedded); this reduces the overhead when not configured and reduces visibility of the contents
|
191022 |
13-Apr-2009 |
sam |
o eliminate a << in calculating the tx time for turbo mode by pre-multiplying data in the phy tables o correct the ctrl rate indices in the 5212 turbog phy table
|
191021 |
13-Apr-2009 |
sam |
don't use caddr_t to match ieee80211_dump_pkt type; supplying the correct one costs nothing
|
191020 |
13-Apr-2009 |
sam |
o fix dynamic slave-side tdma slot length updating: we need to re-setup the burst length in the tx q's o remove re-config of the beaconq on update; it's not needed
|
191019 |
13-Apr-2009 |
sam |
add a debug msg for when a fixed transmit rate is not applied because it's not found in the sta's negotiated rate set
|
190986 |
13-Apr-2009 |
sam |
remove reference to sc_tdmabintcnt; it was removed in r190848
|
190867 |
09-Apr-2009 |
sam |
check the method pointer before invoking ah_eepromDetach as it can be null if attach work fails before hooking up the eeprom support
Obtained from: madwifi
|
190848 |
08-Apr-2009 |
sam |
remove unused struct member
|
190579 |
30-Mar-2009 |
sam |
Hoist 802.11 encapsulation up into net80211: o call ieee80211_encap in ieee80211_start so frames passed down to drivers are already encapsulated o remove ieee80211_encap calls in drivers o fixup wi so it recreates the 802.3 head it requires from the 802.11 header contents o move fast-frame aggregation from ath to net80211 (conditional on IEEE80211_SUPPORT_SUPERG): - aggregation is now done in ieee80211_start; it is enabled when the packets/sec exceeds ieee80211_ffppsmin (net.wlan.ffppsmin) and frames are held on a staging queue according to ieee80211_ffagemax (net.wlan.ffagemax) to wait for a frame to combine with - drivers must call back to age/flush the staging queue (ath does this on tx done, at swba, and on rx according to the state of the tx queues and/or the contents of the staging queue) - remove fast-frame-related data structures from ath - add ieee80211_ff_node_init and ieee80211_ff_node_cleanup to handle per-node fast-frames state (we reuse 11n tx ampdu state) o change ieee80211_encap calling convention to include an explicit vap so frames coming through a WDS vap are recognized w/o setting M_WDS
With these changes any device able to tx/rx 3Kbyte+ frames can use fast-frames.
Reviewed by: thompsa, rpaulo, avatar, imp, sephe
|
190571 |
30-Mar-2009 |
sam |
Remove ATH_SUPPORT_TDMA and use IEEE80211_SUPPORT_TDMA instead. It doesn't make much sense to configure driver support w/o net80211. Note this means ath now depends on opt_wlan.h.
|
190526 |
29-Mar-2009 |
sam |
Eliminate ic_myaddr so changing the mac address of a device works correctly: o remove ic_myaddr from ieee80211com o change ieee80211_ifattach to take the mac address of the physical device and use that to setup the lladdr. o replace all references to ic_myaddr in drivers by IF_LLADDR o related cleanups (e.g. kill dead code)
PR: kern/133178 Reviewed by: thompsa, rpaulo
|
190347 |
24-Mar-2009 |
sam |
fix build w/ AH_DEBUG
|
190096 |
19-Mar-2009 |
sam |
purge hal abi support; now that the hal is merged w/ the driver we cannot be out of sync
MFC after: 1 week
|
189980 |
18-Mar-2009 |
sam |
Minor cleanups of tdma protocol handling: o break out version-related code to simplify rev'ing the protocol o add parameter validation macros so checks that appear multiple places are consistent (and easy to change) o add protocol version check when looking for a scan candidate o improve scan debug output format o rewrite beacon update handling to calculate a bitmask of changed values and pass that down through the driver callback so drivers can optimize work o do slot bounds check before use when parsing received beacons
|
189747 |
12-Mar-2009 |
sam |
preliminary ar9280 support: o add 9280 attach that sets up ini, cal, etc. o new rf backend for 9280 and later parts o split ini setup and spur mitigation support out to methods and provide 9280-specific support o minor fixups to shared code to handle 9280-specific work
Obtained from: Atheros (ini values and some code)
|
189713 |
12-Mar-2009 |
sam |
add asserts
|
189605 |
09-Mar-2009 |
sam |
replace if_watchdog w/ private callout; probably can merge this with the calibration work sometime in the future
|
189604 |
09-Mar-2009 |
sam |
remove ar9160Detach; it does nothing
|
189575 |
09-Mar-2009 |
imp |
remove now-redunant cardbus attachment.
|
189380 |
05-Mar-2009 |
sam |
add a sysctl to ena/dis frobbing cca
|
188993 |
24-Feb-2009 |
sam |
fix typo's
|
188980 |
24-Feb-2009 |
sam |
move attach debug msg to the rf backend
|
188979 |
24-Feb-2009 |
sam |
Add PCIE power control api: o add ah_configPCIE and ah_disablePCIE for drivers to configure PCIE power save operation (modeled after ath9k, may need changes) o add private state flag to indicate if device is PCIE (replaces private hack in 5212 code) o add serdes programming ini bits for 5416 and later parts and setup for each part (5416 and 9160 logic hand-crafted from existing routines); 5212 remains open-coded but is now hooked in via ah_configPCIE o add PCIE workaround gunk o add ar5416AttachPCIE for iodomatic code used by 5416 and later parts
|
188976 |
24-Feb-2009 |
sam |
Fill in gpio support for 5416 and later parts: o add output mux support o gpio pin count is chip-dependent o 9280 and 9285 do input handling different o hookup gpio interrupts o no need to save/restore soft led state around reset
|
188975 |
24-Feb-2009 |
sam |
misc fixups, mostly for code not compiled yet
|
188974 |
24-Feb-2009 |
sam |
5416 and later parts mux the gpio outputs; extend the api to include a signal type that's used to select the appropriate mux
|
188973 |
24-Feb-2009 |
sam |
move eeprom attach above first reset as the reset code checks the eeprom contents for 9280 and later parts
|
188972 |
24-Feb-2009 |
sam |
attach methods don't need to be public, make 'em static
|
188971 |
23-Feb-2009 |
sam |
5416 and later parts get the radio rev differently; add ar5416GetRadioRev to do it the right way
|
188970 |
23-Feb-2009 |
sam |
remove private copies of gpio methods that were needed when the hal was an independent entity
|
188968 |
23-Feb-2009 |
sam |
print mac+rf part names; drop the printing 2ghz rf stuff (might come back)
|
188866 |
20-Feb-2009 |
sam |
correct SIFS setting; there is a 2usec adjustment between the calculated value and what the hardware requires (based on inspection of INI values)
Submitted by: Jiri Fojtasek <jiri.fojtasek@hlohovec.net>
|
188865 |
20-Feb-2009 |
sam |
don't adjust core clk conversions for 1/2 and 1/4 rate channels; the mac runs at full speed so doing this breaks conversion for ifs parameters
Submitted by: Felix Fietkau <nbd@openwrt.org>
|
188783 |
19-Feb-2009 |
sam |
remove private support for IEEE80211_MODE_HALF and IEEE80211_MODE_QUARTER now that net80211 has them
|
188773 |
19-Feb-2009 |
sam |
Cleanup ath_hal_computetxtime's handling of 1/2 and 1/4-width channels: o mark phy type to indicate 1/2 or 1/4-rate operation o use phy type instead of channel attributes to identify 1/2 and 1/4-rate operation o general cleanup of code including move phy constants to ah_internal.h
Eventually this code should go away and we should use the net0211 equivalents.
|
188771 |
19-Feb-2009 |
sam |
add HAL_DIAG_SETREGS to write registers via the diag api
|
188770 |
19-Feb-2009 |
sam |
whitespace
|
188557 |
13-Feb-2009 |
sam |
add SIOCZATHSTATS ioctl to zero driver statistics
|
188555 |
13-Feb-2009 |
sam |
add driver stat to count tx drops due to insufficient frag buffers
|
188549 |
13-Feb-2009 |
sam |
Recognize AR5212_AR2317_REV2 in ar5312Probe()
Submitted by: Pavel Roskin <proski@gnu.org>
|
188504 |
11-Feb-2009 |
sam |
fix both instances of name
Pointy hat: sam
|
188500 |
11-Feb-2009 |
sam |
fix typo in AH_CHIP definition
Submitted by: Pavel Roskin <proski@gnu.org>
|
188499 |
11-Feb-2009 |
sam |
gcc 4.3.2 examines getLowerUpperIndex() and concludes that it's not guaranteed to initialize its two last arguments. Therefore, there is a warning in the subsequent caller ar5416FillVpdTable(), which doesn't initialize those arguments.
Change getLowerUpperIndex() to assign values to indexL and indexR even in the case of assertion failure.
Submitted by: Pavel Roskin <proski@gnu.org>
|
188465 |
11-Feb-2009 |
sam |
don't do phantom beacon miss checking for s/w beacon miss handling, this can mistakenly drop events that cause the s/w bmiss timer to never get re-armed
|
188447 |
10-Feb-2009 |
sam |
mark the CLR key installed for open auth stations such that it is reclaimed when net80211 tears down station state; without this we leak keycache slots
|
188446 |
10-Feb-2009 |
sam |
add hw.ath.bstuck to control the stuck beacon threshold
|
188445 |
10-Feb-2009 |
sam |
on resume ah_curchan may be NULL if no channel change has been done; workaround this by passing net80211's channel as we know it'll never be null
Submitted by: trasz
|
188444 |
10-Feb-2009 |
sam |
consolidate conditional code
|
188269 |
07-Feb-2009 |
sam |
count stuck beacon events
|
188264 |
07-Feb-2009 |
sam |
fix 11n channel construction
|
188263 |
07-Feb-2009 |
sam |
add macro for future regulatory mods
|
188213 |
06-Feb-2009 |
sam |
add PSB channels to the calibration list
|
188197 |
05-Feb-2009 |
sam |
eliminate gainFCorrection; just have ar5212GetGainFCorrection return the calculated value as it's only used in one place
|
188195 |
05-Feb-2009 |
sam |
Minor packet drop improvements: o change tdma packet drop msg when ack required to ATH_DEBUG_TDMA (ATH_DEBUG_XMIT is too noisy) o add a debug msg for raw packet drop due to interface down/invalid o add stats for these two cases o explain how another drop case is handled
|
188194 |
05-Feb-2009 |
sam |
improve IQ cal debug msgs; in particular don't scare people by screaming "MISGATED IQ CAL!" when it's not
|
188193 |
05-Feb-2009 |
sam |
fill in ar5212ResetCalValid; reset the IQ valid flag on the channel so IQ calibration will be started on the next periodic cal
|
188192 |
05-Feb-2009 |
sam |
style
|
188191 |
05-Feb-2009 |
sam |
replace r/w idiom with OS_REG_SET_BIT (to match other code)
|
188084 |
03-Feb-2009 |
sam |
fix compilation w/ AH_DEBUG
|
188012 |
02-Feb-2009 |
sam |
o make SAVE_CCK slightly less error prone by always writing the _flag value used later by RESTORE_CCK o swap arg order in RESTORE_CCK to slightly reduce cost
|
188011 |
02-Feb-2009 |
sam |
restore variable initialization removed in r187831; this broke the horrible SAVE/RESTORE_CCK macros used by swan/nala cards to implement 11b using 11g
|
187831 |
28-Jan-2009 |
sam |
Overhaul regulatory support: o remove HAL_CHANNEL; convert the hal to use net80211 channels; this mostly involves mechanical changes to variable names and channel attribute macros o gut HAL_CHANNEL_PRIVATE as most of the contents are now redundant with the net80211 channel available o change api for ath_hal_init_channels: no more reglass id's, no more outdoor indication (was a noop), anM contents o add ath_hal_getchannels to have the hal construct a channel list without altering runtime state; this is used to retrieve the calibration list for the device in ath_getradiocaps o add ath_hal_set_channels to take a channel list and regulatory data from above and construct internal state to match (maps frequencies for 900MHz cards, setup for CTL lookups, etc) o compact the private channel table: we keep one private channel per frequency instead of one per HAL_CHANNEL; this gives a big space savings and potentially improves ani and calibration by sharing state (to be seen; didn't see anything in testing); a new config option AH_MAXCHAN controls the table size (default to 96 which was chosen to be ~3x the largest expected size) o shrink ani state and change to mirror private channel table (one entry per frequency indexed by ic_devdata) o move ani state flags to private channel state o remove country codes; use net80211 definitions instead o remove GSM regulatory support; it's no longer needed now that we pass in channel lists from above o consolidate ADHOC_NO_11A attribute with DISALLOW_ADHOC_11A o simplify initial channel list construction based on the EEPROM contents; we preserve country code support for now but may want to just fallback to a WWR sku and dispatch the discovered country code up to user space so the channel list can be constructed using the master regdomain tables o defer to net80211 for max antenna gain o eliminate sorting of internal channel table; now that we use ic_devdata as an index, table lookups are O(1) o remove internal copy of the country code; the public one is sufficient o remove AH_SUPPORT_11D conditional compilation; we always support 11d o remove ath_hal_ispublicsafetysku; not needed any more o remove ath_hal_isgsmsku; no more GSM stuff o move Conformance Test Limit (CTL) state from private channel to a lookup using per-band pointers cached in the private state block o remove regulatory class id support; was unused and belongs in net80211 o fix channel list construction to set IEEE80211_CHAN_NOADHOC, IEEE80211_CHAN_NOHOSTAP, and IEEE80211_CHAN_4MSXMIT o remove private channel flags CHANNEL_DFS and CHANNEL_4MS_LIMIT; these are now set in the constructed net80211 channel o store CHANNEL_NFCREQUIRED (Noise Floor Required) channel attribute in one of the driver-private flag bits of the net80211 channel o move 900MHz frequency mapping into the hal; the mapped frequency is stored in the private channel and used throughout the hal (no more mapping in the driver and/or net80211) o remove ath_hal_mhz2ieee; it's no longer needed as net80211 does the calculation and available in the net80211 channel o change noise floor calibration logic to work with compacted private channel table setup; this may require revisiting as we no longer can distinguish channel attributes (e.g. 11b vs 11g vs turbo) but since the data is used only to calculate status data we can live with it for now o change ah_getChipPowerLimits internal method to operate on a single channel instead of all channels in the private channel table o add ath_hal_gethwchannel to map a net80211 channel to a h/w frequency (always the same except for 900MHz channels) o add HAL_EEBADREG and HAL_EEBADCC status codes to better identify regulatory problems o remove CTRY_DEBUG and CTRY_DEFAULT enum's; these come from net80211 now o change ath_hal_getwirelessmodes to really return wireless modes supported by the hardware (was previously applying regulatory constraints) o return channel interference status with IEEE80211_CHANSTATE_CWINT (should change to a callback so hal api's can take const pointers) o remove some #define's no longer needed with the inclusion of <net80211/_ieee80211.h>
Sponsored by: Carlson Wireless
|
187800 |
27-Jan-2009 |
sam |
change ic_getradiocaps driver callback to include the max # channels so callers know the size of the array passed down
|
187611 |
23-Jan-2009 |
sam |
fix return status handling by ar5XXXReset; this is the reason the driver sometimes reports reset failed w/ status 0
|
187608 |
23-Jan-2009 |
sam |
don't run the calibration code if scanning, we won't be on the home channel
|
187510 |
21-Jan-2009 |
sam |
correct typo that left programmed sifs time in the slot time (to be applied on subsequent resets)
Submitted by: Jiri Fojtasek <jiri.fojtasek@hlohovec.net>
|
187345 |
16-Jan-2009 |
sam |
export PSB frequencies
|
187129 |
13-Jan-2009 |
sam |
On some platforms touching the bb registers when the phy is powered down will cause a fault. Check the phy power state before possibly reading from the bb, this can happen as ar5212Reset intentionally calls ar5212GetRfgain before bringing the bb out of reset (but we do it here and not in the caller to guard against other possible uses).
|
186904 |
08-Jan-2009 |
sam |
TDMA support for long distance point-to-point links using ath devices: o add net80211 support for a tdma vap that is built on top of the existing adhoc-demo support o add tdma scheduling of frame transmission to the ath driver; it's conceivable other devices might be capable of this too in which case they can make use of the 802.11 protocol additions etc. o add minor bits to user tools that need to know: ifconfig to setup and configure, new statistics in athstats, and new debug mask bits
While the architecture can support >2 slots in a TDMA BSS the current design is intended (and tested) for only 2 slots.
Sponsored by: Intel
|
186879 |
07-Jan-2009 |
sam |
correct fixed rate handling; the rixmap was changed a while back to be indexed by the ieee rate code
|
186806 |
06-Jan-2009 |
sam |
remove the ath_rate module dependency; it's all bundled
|
186804 |
06-Jan-2009 |
sam |
remove module glue, it's not used any more
|
186333 |
19-Dec-2008 |
sam |
add FreeBSD property
|
186332 |
19-Dec-2008 |
sam |
Correct 5212 ani support so that max noise immunity, spur immunity, and step levels are used.
Noticed by: Jiri Fojtasek <jiri.fojtasek@hlohovec.net> Reviewed by: rpaulo
|
186098 |
15-Dec-2008 |
sam |
fix ini setup
Submitted by: Jiri Fojtasek <jiri.fojtasek@hlohovec.net>
|
186020 |
13-Dec-2008 |
sam |
o remove dead code o fix AH_RF macro expansion to be as intended (worked before unintentionally)
Obtained from: netbsd
|
186019 |
13-Dec-2008 |
sam |
remove dead code
Obtained from: netbsd
|
186018 |
13-Dec-2008 |
sam |
add const
Obtained from: netbsd
|
186017 |
13-Dec-2008 |
sam |
fix static const order
Obtained from: netbsd
|
186016 |
13-Dec-2008 |
sam |
fix static const order
Obtained from: netbsd
|
186015 |
13-Dec-2008 |
sam |
remove duplicate case
Obtained from: netbsd
|
186014 |
13-Dec-2008 |
sam |
remove conflicting decl
Obtained from: netbsd
|
185907 |
11-Dec-2008 |
sam |
add missing break
Coverity ID: 4159
|
185906 |
11-Dec-2008 |
sam |
add missing break
Coverity ID: 4151
|
185745 |
07-Dec-2008 |
sam |
honor IEEE80211_BPF_CRYPTO for raw xmit; fixes shared key auth in sta mode
PR: kern/129022
|
185744 |
07-Dec-2008 |
sam |
New periodic calibration scheme needed for 11n parts that have multiple algorithms and potentially collect multiple samples. Instead of a single calibration interval we now have short and long intervals; the long interval roughly corresponds to the previous single interval. The short interval is used to speedup collection of samples and happens much quicker. We make calls using the short interval until we're told the calibration work is complete at which point we fallback to the long interval. In addition there is a much longer reset interval used to flush all calibration state and cause everthing to start anew.
With these changes you can also disable calibration entirely by setting the long interval to zero.
|
185522 |
01-Dec-2008 |
sam |
Switch to ath hal source code. Note this removes the ath_hal module; the ath module now brings in the hal support. Kernel config files are almost backwards compatible; supplying
device ath_hal
gives you the same chip support that the binary hal did but you must also include
options AH_SUPPORT_AR5416
to enable the extended format descriptors used by 11n parts. It is now possible to control the chip support included in a build by specifying exactly which chips are to be supported in the config file; consult ath_hal(4) for information.
|
185521 |
01-Dec-2008 |
sam |
import ath hal
|
185490 |
30-Nov-2008 |
sam |
cover up sun4v namespace pollution
|
185482 |
30-Nov-2008 |
sam |
Major overhaul: o eliminate private state indexed by 802.11 rate codes; use the hal's rate tables directly to get the same info o calculate a mask of operational rates to optimize lookups and checks (instead of using for loops and similar) o optimize size bin operations o ignore rates marked as "do not use" in the hal phy tables o fix bug that caused upshifting to break in 11g once the rate dropped below 11Mb/s o add more intelligent multi-rate tx schedules o add support for 1/2 and 1/4 width channels o add dev.ath.X.sample_stats sysctl to dump runtime statistics to the console (needs to go up to a user app) o export more tuning knobs via sysctls (still a couple of magic constants)
|
185481 |
30-Nov-2008 |
sam |
sync w/ p4 branch
|
185480 |
30-Nov-2008 |
sam |
some of the 11n parts can hang under certain conditions without necessary workarounds, add code to detect these hangs and distinguish them from other events; note this code is only invoked for anomalous conditions and (at the moment) is a noop because the hang detection code is in a new hal that's coming shortly
|
185479 |
30-Nov-2008 |
sam |
add frequency mapping for the Zcomax GZ-901
|
185243 |
24-Nov-2008 |
sam |
print the extended tx/rx descriptor for 5416 and later parts
|
185242 |
24-Nov-2008 |
sam |
nuke special handling of RXORN interrupt; the hal marks the FATAL bit in the interrupt status when RXORN is hit and the chip requires a reset so our special handling was causing useless resets
|
184480 |
30-Oct-2008 |
sam |
Fix checks for fast frames negotiation. ni_ath_flags holds the capabilities reported by the ap. These need to be cross-checked against the local configuration in the vap. Previously we were only checking the ap capabilities which meant that if an ap reported it was ff-capable but we were not setup to use them we'd try to do ff aggregation and drop the frame.
There are a number of problems to be fixed here but applying this fix immediately as the problem causes all traffic to stop (and has not workaround).
Reported by: Ashish Shukla
|
184369 |
27-Oct-2008 |
sam |
prepare for a new hal
|
184368 |
27-Oct-2008 |
sam |
o With the addition of HT rates the set of h/w codes has a much wider range making the use of sc_hwmap to do direct mapping impractical. Switch to indexing by the rate index instead of the rate code and adjust associated state and logic appropriately. This has several benefits including simplification of the led code. o fix radiotap capture of HT rates o fix conditional compilation of HT radiotap support to be based on the hal having 5416 support; not the ABI version as hal builds may or may not include 5416 support
|
184366 |
27-Oct-2008 |
sam |
prefer #define to naked constant
|
184365 |
27-Oct-2008 |
sam |
fix handling of HT rates; these overlap legacy rates and need to be marked as MCS in the inverse mapping table
|
184364 |
27-Oct-2008 |
sam |
add hack to deal with Ubiquiti XR9 cards, they have a different mapping between 900MHz and 2.4GHz frequencies than SR9 cards; they are distinguished by different country codes
|
184361 |
27-Oct-2008 |
sam |
install bssid for ahdemo mode too
|
184360 |
27-Oct-2008 |
sam |
fix comment
|
184359 |
27-Oct-2008 |
sam |
correct callback status parameter; only indicate success when an ACK was received
|
184358 |
27-Oct-2008 |
sam |
Fixup statistics: o update tx rssi data only when an ACK was received o return tx rssi from sampled data instead of the last frame o track noise floor o return rx rssi and noise floor (was broken)
|
184357 |
27-Oct-2008 |
sam |
update the sta inactivity timer only if we actually received an ACK
|
184356 |
27-Oct-2008 |
sam |
Regdomain fixups: o pass country code, outdoor indication, and ecm mode into the hal when requesting a channel list o add a console msg when regulatory setup fails o add placeholder code to map between Atheros sku's and 802.11 sku's that handles only the debug country code used to unlock the full channel list (to be used only for debugging) o fix multiple instances of mismapping the 802.11 location to the outdoor indication (anywhere may be outdoor also)
|
184355 |
27-Oct-2008 |
sam |
add regdomain debug msgs
|
184354 |
27-Oct-2008 |
sam |
add sys.dev.ath.X.intmit knob to enable/disable ANI (the intmit name is historical)
|
184353 |
27-Oct-2008 |
sam |
shuffle debug setup to simplify debugging events during attach
|
184351 |
27-Oct-2008 |
sam |
rename bf_flags to bf_txflags in preparation for the addition of flags separate from the tx descriptor flags currently recorded
|
184350 |
27-Oct-2008 |
sam |
use the ic's opmode instead of our hal equivalent to check for adhoc mode; they are always the same
|
184349 |
27-Oct-2008 |
sam |
intercept IEEE80211_IOC_TXPOWER and service tx power changes immediately
|
184348 |
27-Oct-2008 |
sam |
move complaints about bad rate codes up a level so we can print the h/w rate code and other useful info
|
184347 |
27-Oct-2008 |
sam |
remove driver-private equivalent of ni_txparms; it's now superfluous
|
184346 |
27-Oct-2008 |
sam |
now that the new association callback is used when joining a bss we can eliminate the ath_rate_newassoc callback and associated code
|
184345 |
27-Oct-2008 |
sam |
o use the new association callback to notify the driver when joining a bss in sta and adhoc modes; this should've been done forever ago as most all drivers use this hook to set per-station transmit parameters such as for tx rate control o adjust drivers to remove explicit calls to the driver newassoc method
|
184063 |
19-Oct-2008 |
sam |
fix static key wep; r183248 caused drivers to be called for keys to be assigned to slots in the global key table but ath_key_alloc was not updated to handle that
|
183248 |
21-Sep-2008 |
sam |
Crypto api changes: o don't use the key index to identify when the driver has been asked to allocate a key slot, use an explicit flag; allows drivers to force s/w fallback for entries in the global table o change callback api to allocate driver resources for a crypto key: - de-const the key parameter so drivers can muck with the flags - on callback failure don't automatically try to setup s/w crypto; instead the driver must now mark the key entry for s/w crypto and the caller will re-attach the cipher module
NB: api change permits drivers more control over fallback to s/w crypto (e.g. based on a limited number of h/w key slots)
|
183222 |
21-Sep-2008 |
sam |
fix compilation on 64-bit platform w/ ATH_DEBUG
|
183221 |
21-Sep-2008 |
sam |
fix memory smash on lp64 platforms; mostly noticeable in user mode as being unable to associate
|
182893 |
09-Sep-2008 |
rpaulo |
Update for new HAL.
Reviewed by: sam
|
179643 |
07-Jun-2008 |
sam |
Change the calling convention for ic_node_alloc to deal with some longstanding issues: o pass the vap since it's now the "coin of the realm" and required to do things like set initial tx parameters in private node state for use prior to association o pass the mac address as cards that maintain outboard station tables require this to create an entry (e.g. in ibss mode) o remove the node table reference, we only have one node table and it's unlikely this will change so this is not needed to find the com structure
|
179467 |
31-May-2008 |
sam |
5416 and similar chips grew another region in the pci clock domain where register accesses do not pass through the byte-lane hardware; extend the register op macros to deal with this
MFC after: 1 week
|
179402 |
29-May-2008 |
sam |
correct rx radiotap channel flags construction for 11n frames
|
179401 |
29-May-2008 |
sam |
Cleanup power handling and fix suspend/resume: o do not put the chip into full sleep in ath_stop as it gains nothing and causes many parts to hang in ath_detach because we may touch the chip during vap teardown; this may also fix issues with unloading the module o add a note in ath_detach to explain ath_hal_detach puts the chip in low power mode; this is useful to know as it means unloading the module will place a pci device in the lowest possible power state o leave an #ifdef notyet marker for powering down the chip when a device is marked down; we can't do that until we handle all the ways the driver may be entered and touch the chip o fix resume by reloading the h/w key cache as it's been clobbered (for pci) by the socket being powered off; for station mode we directly stop+init the chip and then simulate a beacon miss to get the upper layers sync'd up; for other configs we must brute force stop+start the vaps so they go through the state machine
|
179400 |
28-May-2008 |
sam |
close a race on detach by reordering bpfdetach and taskqueue_free
|
179399 |
28-May-2008 |
sam |
send EAPOL frames at the same rate used for mgt frames
|
178957 |
12-May-2008 |
sam |
Minor cleanup of vap create work: o add IEEE80211_C_STA capability to indicate sta mode is supported (was previously assumed) and mark drivers as capable o add ieee80211_opcap array to map an opmode to the equivalent capability bit o move IEEE80211_C_OPMODE definition to where capabilities are defined so it's clear it should be kept in sync (on future additions) o check device capabilities in clone create before trying to create a vap; this makes driver checks unneeded o make error codes return on failed clone request unique o temporarily add console printfs on clone request failures to aid in debugging; these will move under DIAGNOSTIC or similar before release
|
178752 |
03-May-2008 |
sam |
o unbreak handling of TKIP tx-only keys for splitmic chips o yank compat support for hal's older than 0.9.20.3; leave a CTASSERT in place just in case
|
178751 |
03-May-2008 |
sam |
add back sysctl's to display the regdomain and country code from eeprom; useful for debugging
|
178704 |
01-May-2008 |
thompsa |
Unify all the wifi *_ioctl routines - Limit grabbing the lock to SIOCSIFFLAGS. - Move ieee80211_start_all() to SIOCSIFFLAGS. - Remove SIOCSIFMEDIA as it is not useful. - Limit ether_ioctl to only SIOCGIFADDR. SIOCSIFADDR and SIOCSIFMTU have no affect as there is no input/output path in the vap parent. The vap code will handle the reinit of the mac address changes. - Split off ndis_ioctl_80211 as it was getting too different to wired devices.
This fixes a copyout while locked and a lock recursion.
Reviewed by: sam
|
178696 |
30-Apr-2008 |
sam |
remove old code to handle mcast address changes; this is all done through net80211 and pushed into the driver through non-ioctl callbacks
|
178627 |
27-Apr-2008 |
sam |
restore the hal's channel list when doing getradiocaps so it's in sync with the 802.11 layer's list
|
178354 |
20-Apr-2008 |
sam |
Multi-bss (aka vap) support for 802.11 devices.
Note this includes changes to all drivers and moves some device firmware loading to use firmware(9) and a separate module (e.g. ral). Also there no longer are separate wlan_scan* modules; this functionality is now bundled into the wlan module.
Supported by: Hobnob and Marvell Reviewed by: many Obtained from: Atheros (some bits)
|
177502 |
22-Mar-2008 |
sam |
(finally) add the hal status to the diagnostic generated after a failed ath_hal_reset call
MFC after: 3 days
|
175414 |
17-Jan-2008 |
sam |
promote ath_defrag to m_collapse (and retire private+unused m_collapse from cxgb)
Reviewed by: pyun, jhb, kmacy MFC after: 2 weeks
|
172900 |
23-Oct-2007 |
kevlo |
- Use pci_enable_busmaster() to turn on busmaster. - Don't test memory/port status and emit an error message; the PCI bus will do this.
Reviewed by: sam
|
172620 |
13-Oct-2007 |
sam |
revert 1.18: the negotiated rate set may not match the hal rate tables, so using the hal's rateCodeToIndex array will produce wrong indices for the negotiated rate set
MFC after: 3 days
|
172211 |
17-Sep-2007 |
sam |
Update beacon handling to sync w/ vap code base: o add driver callback to handle notification of beacon changes; this is required for devices that manage beacon frames themselves (devices must override the default handler which does nothing) o move beacon update-related flags from ieee80211com to the beacon offsets storage (or handle however a driver wants) o expand beacon offsets structure with members needed for 11h/dfs and appie's o change calling convention for ieee80211_beacon_alloc and ieee80211_beacon_update o add overlapping bss support for 11g; requires driver to pass beacon frames from overlapping bss up to net80211 which is not presently done by any driver o move HT beacon contents update to a routine in the HT code area
Reviewed by: avatar, thompsa, sephe Approved by: re (blanket wireless)
|
172209 |
17-Sep-2007 |
sam |
convert hardware rate codes to IEEE rate codes with a lookup table instead of a linear search
Reviewed by: sephe, avatar Approved by: re (blanket wireless) MFC after: 2 weeks
|
172206 |
17-Sep-2007 |
sam |
bandaid Dynamic Turbo A operation with old hal's: HAL_MODE_108A does not have a rate table in older hal's so if we scan such a channel the driver will hit an assertion or crash; for old hal's fallback to using the static turbo rate table for this mode (not correct but good enough for now given none of the rate control algorithms understand how to switch between base+boost)
Approved by: re (blanket wireless)
|
172205 |
17-Sep-2007 |
sam |
fix led blinking in RUN state: the addition of the CAC state moved IEEE80211_S_RUN and broke the array lookup used to find the LED flags
Approved by: re (blanket wireless)
|
172060 |
05-Sep-2007 |
sam |
Add missing bits that made bg scanning lame: o update ic_lastdata to reflect time of last outbound frame o outbound traffic must preempt/cancel bg scanning to avoid delays
This stuff was somehow missed in the initial import.
Reviewed by: thompsa, avatar, sephe (earlier version) Approved by: re (blanket wireless)
|
171744 |
06-Aug-2007 |
rwatson |
Remove the now-unused NET_{LOCK,UNLOCK,ASSERT}_GIANT() macros, which previously conditionally acquired Giant based on debug.mpsafenet. As that has now been removed, they are no longer required. Removing them significantly simplifies error-handling in the socket layer, eliminated quite a bit of unwinding of locking in error cases.
While here clean up the now unneeded opt_net.h, which previously was used for the NET_WITH_GIANT kernel option. Clean up some related gotos for consistency.
Reviewed by: bz, csjp Tested by: kris Approved by: re (kensmith)
|
171613 |
27-Jul-2007 |
rwatson |
First in a series of changes to remove the now-unused Giant compatibility framework for non-MPSAFE network protocols:
- Remove debug_mpsafenet variable, sysctl, and tunable. - Remove NET_NEEDS_GIANT() and associate SYSINITSs used by it to force debug.mpsafenet=0 if non-MPSAFE protocols are compiled into the kernel. - Remove logic to automatically flag interrupt handlers as non-MPSAFE if debug.mpsafenet is set for an INTR_TYPE_NET handler. - Remove logic to automatically flag netisr handlers as non-MPSAFE if debug.mpsafenet is set. - Remove references in a few subsystems, including NFS and Cronyx drivers, which keyed off debug_mpsafenet to determine various aspects of their own locking behavior. - Convert NET_LOCK_GIANT(), NET_UNLOCK_GIANT(), and NET_ASSERT_GIANT into no-op's, as their entire behavior was determined by the value in debug_mpsafenet. - Alias NET_CALLOUT_MPSAFE to CALLOUT_MPSAFE.
Many remaining references to NET_.*_GIANT() and NET_CALLOUT_MPSAFE are still present in subsystems, and will be removed in followup commits.
Reviewed by: bz, jhb Approved by: re (kensmith)
|
171015 |
24-Jun-2007 |
sam |
Process tx callbacks when draining the tx q; this fixes a problem where a device timeout that occurs with a mgt frame on the tx q will leave the net80211 layer w/o any way to make progress.
Reviewed by: thompsa, sephe Approved by: re (hrs)
|
170530 |
11-Jun-2007 |
sam |
Update 802.11 wireless support: o major overhaul of the way channels are handled: channels are now fully enumerated and uniquely identify the operating characteristics; these changes are visible to user applications which require changes o make scanning support independent of the state machine to enable background scanning and roaming o move scanning support into loadable modules based on the operating mode to enable different policies and reduce the memory footprint on systems w/ constrained resources o add background scanning in station mode (no support for adhoc/ibss mode yet) o significantly speedup sta mode scanning with a variety of techniques o add roaming support when background scanning is supported; for now we use a simple algorithm to trigger a roam: we threshold the rssi and tx rate, if either drops too low we try to roam to a new ap o add tx fragmentation support o add first cut at 802.11n support: this code works with forthcoming drivers but is incomplete; it's included now to establish a baseline for other drivers to be developed and for user applications o adjust max_linkhdr et. al. to reflect 802.11 requirements; this eliminates prepending mbufs for traffic generated locally o add support for Atheros protocol extensions; mainly the fast frames encapsulation (note this can be used with any card that can tx+rx large frames correctly) o add sta support for ap's that beacon both WPA1+2 support o change all data types from bsd-style to posix-style o propagate noise floor data from drivers to net80211 and on to user apps o correct various issues in the sta mode state machine related to handling authentication and association failures o enable the addition of sta mode power save support for drivers that need net80211 support (not in this commit) o remove old WI compatibility ioctls (wicontrol is officially dead) o change the data structures returned for get sta info and get scan results so future additions will not break user apps o fixed tx rate is now maintained internally as an ieee rate and not an index into the rate set; this needs to be extended to deal with multi-mode operation o add extended channel specifications to radiotap to enable 11n sniffing
Drivers: o ath: add support for bg scanning, tx fragmentation, fast frames, dynamic turbo (lightly tested), 11n (sniffing only and needs new hal) o awi: compile tested only o ndis: lightly tested o ipw: lightly tested o iwi: add support for bg scanning (well tested but may have some rough edges) o ral, ural, rum: add suppoort for bg scanning, calibrate rssi data o wi: lightly tested
This work is based on contributions by Atheros, kmacy, sephe, thompsa, mlaier, kevlo, and others. Much of the scanning work was supported by Atheros. The 11n work was supported by Marvell.
|
170375 |
06-Jun-2007 |
sam |
update copyrights to 2007 and convert to be 2-clause bsd-only
|
170229 |
03-Jun-2007 |
sam |
disable taskqueue_drain calls on transition to INIT state; we need to find another way to do this as we cannot hold the softc mtx across these calls
|
170104 |
29-May-2007 |
sam |
Drain task q items when transitioning to INIT state; this closes a race seen on smp laptops when suspending where the rx task can be entered after the interface is detach'd.
NB: use of taskqueue_drain while holding the softc mutex is problematic
Submitted by: ambrisko MFC after: 1 month
|
170011 |
27-May-2007 |
sam |
silence some compiler complaints
|
168967 |
23-Apr-2007 |
sam |
make dev.ath.N.ledpin have an immediate effect
PR: kern/111810 Submitted by: Henrik Brix Andersen <henrik@brixandersen.dk> MFC after: 1 week
|
168860 |
19-Apr-2007 |
sephe |
- Fix mbuf/node leakage in drivers' raw_xmit(). - For ural(4): o Fix node leakage in ural_start(), if ural_tx_mgt() fails. o Fix mbuf leakage in ural_tx_{mgt,data}(), if usbd_transfer() fails. o In ural_tx_{mgt,data}(), set ural_tx_data.{m,ni} to NULL, if usbd_transfer() fails, so they will not be freed again in ural_stop().
Approved by: sam (mentor)
|
168589 |
10-Apr-2007 |
rwatson |
Remove unnecessary suser() check in the sysctl to set up ath_hal logging: the sysctl framework will already have checked for privilege if a sysctl value is being set.
Discussed a long time ago with: sam
|
167252 |
05-Mar-2007 |
sam |
Change mtx's to use the formulated name as type so witness does not complain on nested tx q lock acquisitions when processing the cab q.
MFC after: 2 weeks
|
167251 |
05-Mar-2007 |
sam |
Kick tx after processing rx'd frames; this fixes latency issues for processing frames from the power save queue when operating in ap mode. This is especially noticeable for realtime data going to devices like voip phones.
Submitted by: "J.R. Oldroyd" <jr@opal.com> MFC after: 2 weeks
|
166955 |
24-Feb-2007 |
sam |
don't call ath_reset when processing sysctl's before the device is marked running; we don't have all the needed state in place
Noticed by: Hugo Silva <hugo@barafranca.com> MFC after: 1 week
|
166954 |
24-Feb-2007 |
sam |
set the antenna switch when fixing the tx antenna using the dev.ath.X.txantenna sysctl; this is typically what folks want but beware this has the side effect of disabling rx diversity
MFC after: 2 weeks
|
166901 |
23-Feb-2007 |
piso |
o break newbus api: add a new argument of type driver_filter_t to bus_setup_intr()
o add an int return code to all fast handlers
o retire INTR_FAST/IH_FAST
For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current
Reviewed by: many Approved by: re@
|
166165 |
21-Jan-2007 |
marius |
Change the remainder of the drivers for DMA'ing devices enabled in the sparc64 GENERIC and the sound device drivers known working on sparc64 to use bus_get_dma_tag() to obtain the parent DMA tag so we can get rid of the sparc64_root_dma_tag kludge eventually. Except for ath(4), sk(4), stge(4) and ti(4) these changes are runtime tested (unless I booted up the wrong kernels again...).
|
166016 |
15-Jan-2007 |
sam |
add compat shim for ath_hal_isgsmsku until the new hal gets committed
|
166014 |
15-Jan-2007 |
sam |
save changes for handling 5416/5418 parts
|
166013 |
15-Jan-2007 |
sam |
Add initial support for 900MHz cards like the Ubiquiti SR9: o eliminate assumptions that half/quarter rate channels on exist in 11a o handle frequency mapping between hal and net80211; hal gives us freq's in the range 2422..2437 that we remap
MFC after: 1 month
|
165571 |
27-Dec-2006 |
sam |
Add half/quarter rate 11a channel support: o change handling of regdomain-related mib knobs so they can be set post-attach: regdomain, countrycode, outdoor, and xchanmode; the hal will not permit changing the regdomain but we expose it for now o on regdomain/countrycode change recalculate the channel list and push it to the net80211 layer (NB: looks to need more tweaking) o setup rate tables for half/quarter rate channels o honor half/quarter rate channel configs when changing channels o honor half/quarter rate channel configs when setting the slot time o use hack/nonstandard channel numbering scheme for the public safety band to avoid overlapping 2.4G channels on dual-band cards o remove setup of ic_sup_rates; the net80211 layer can do this for us and it simplifies handling of half/quarter rate channels
Tested only in Public Safety Band with cards that have RF5112.
|
165185 |
13-Dec-2006 |
sam |
Track v0.9.20.3 hal:
o no more ds_vdata in tx/rx descriptors o split h/w tx/rx descriptor from s/w status o as part of the descriptor split change the rate control module api so the ath_buf is passed in to the module so it can fetch both descriptor and status information as needed o add some const poisoning
Also for sample rate control algorithm:
o split debug msgs (node, rate, any) o uniformly bounds check rate indices (and in some cases correct checks) o move array index ops to after bounds checking o use final tsi from the status block instead of the h/w descriptor o replace h/w descriptor struct's with proper mask+shift defs (this doesn't belong here; everything is known by the driver and should just be sent down so there's no h/w-specific knowledge)
MFC after: 1 month
|
164794 |
01-Dec-2006 |
sam |
clarify shortcut return
Submitted by: cognet, kevlo MFC after: 1 week
|
164598 |
24-Nov-2006 |
sam |
mark tx/rx descriptors COHERENT; we do not sync changes so on architectures like arm this is necessary
MFC after: 1 month
|
163187 |
09-Oct-2006 |
sam |
correct diag request to fetch isr state on fatal interrupts
MFC after: 1 week
|
162413 |
18-Sep-2006 |
sam |
o move ath hal os glue code from the hal to the driver: this code was part of the hal distribution early on when the hal was built for each os but it's been portable for a long time so move the os-specific code out (and off the vendor branch) o correct the copyright on ah_osdep.?; it was mistakenly given a restricted license and not a dual-bsd/gpl license o remove the module api definition as it was never used o fixup include paths for move of ah_osdep.h
MFC after: 2 weeks
|
162410 |
18-Sep-2006 |
sam |
Add support for newer parts that do not require separate keycache entries for tx+rx mic keys. This requires a newer hal, but works fine with the current hal in cvs.
MFC after: 2 weeks
|
162409 |
18-Sep-2006 |
sam |
remove stub radar support; it's never been used and future hal's will not include the calls (due to redesign)
MFC after: 1 week
|
161425 |
17-Aug-2006 |
imp |
while (0); -> while (0) in multi-line macros
|
161187 |
10-Aug-2006 |
sam |
o add noise floor to stats o include current tx rate in stats so athstats gets a consistent snapshot and doesn't have to make an extra ioctl o record tx rate for raw frames
MFC after: 3 weeks
|
161102 |
08-Aug-2006 |
sam |
check return value of ath_tx_dmasetup
Noticed by: yongari
|
160992 |
05-Aug-2006 |
sam |
raw 802.11 packet transmit support
Joint work with: Andrea Bittau <a.bittau@cs.ucl.ac.uk>
|
160693 |
26-Jul-2006 |
sam |
add missing \n's
Submitted by: avatar@ MFC after: 1 week
|
160692 |
26-Jul-2006 |
sam |
check tim is present in the beacon before defer'ing the mcast buffer bit; insures we don't do this when operating in adhoc mode
Submitted by: avatar@ MFC after: 1 week
|
159940 |
26-Jun-2006 |
sam |
enable rx of control frames when in monitor mode
Submitted by: Andrea Bittau <a.bittau@cs.ucl.ac.uk> MFC after: 1 week
|
159938 |
26-Jun-2006 |
sam |
Close race in handling mcast traffic when operating as an ap with stations in power save: add a new q where mcast frames are stashed and on beacon update (at DTIM) move frames from the mcast q to the cabq and start it. This ensures the cabq is only manipulated in one place.
Sponsored by: Hobnob MFC after: 2 weeks
|
159894 |
23-Jun-2006 |
sam |
new stats
MFC after: 1 month
|
159383 |
07-Jun-2006 |
sam |
bandaid type coercion for ia64
Submitted by: marcel
|
159290 |
05-Jun-2006 |
sam |
move hal bus+tag externalization to the bus glue code where it belongs; this is a noop on all current freebsd architectures
MFC after: 1 month
|
159183 |
02-Jun-2006 |
sam |
add missed calls to bpf_peers_present
|
159180 |
02-Jun-2006 |
csjp |
Fix the following bpf(4) race condition which can result in a panic:
(1) bpf peer attaches to interface netif0 (2) Packet is received by netif0 (3) ifp->if_bpf pointer is checked and handed off to bpf (4) bpf peer detaches from netif0 resulting in ifp->if_bpf being initialized to NULL. (5) ifp->if_bpf is dereferenced by bpf machinery (6) Kaboom
This race condition likely explains the various different kernel panics reported around sending SIGINT to tcpdump or dhclient processes. But really this race can result in kernel panics anywhere you have frequent bpf attach and detach operations with high packet per second load.
Summary of changes:
- Remove the bpf interface's "driverp" member - When we attach bpf interfaces, we now set the ifp->if_bpf member to the bpf interface structure. Once this is done, ifp->if_bpf should never be NULL. [1] - Introduce bpf_peers_present function, an inline operation which will do a lockless read bpf peer list associated with the interface. It should be noted that the bpf code will pickup the bpf_interface lock before adding or removing bpf peers. This should serialize the access to the bpf descriptor list, removing the race. - Expose the bpf_if structure in bpf.h so that the bpf_peers_present function can use it. This also removes the struct bpf_if; hack that was there. - Adjust all consumers of the raw if_bpf structure to use bpf_peers_present
Now what happens is:
(1) Packet is received by netif0 (2) Check to see if bpf descriptor list is empty (3) Pickup the bpf interface lock (4) Hand packet off to process
From the attach/detach side:
(1) Pickup the bpf interface lock (2) Add/remove from bpf descriptor list
Now that we are storing the bpf interface structure with the ifnet, there is is no need to walk the bpf interface list to locate the correct bpf interface. We now simply look up the interface, and initialize the pointer. This has a nice side effect of changing a bpf interface attach operation from O(N) (where N is the number of bpf interfaces), to O(1).
[1] From now on, we can no longer check ifp->if_bpf to tell us whether or not we have any bpf peers that might be interested in receiving packets.
In collaboration with: sam@ MFC after: 1 month
|
158366 |
08-May-2006 |
sam |
quiet tindexbox complaints about passing BUS_SPACE_MAXADDR as a bus_size_t to bus_dma_tag_create; when PAE is enabled this does not work
Cluebat by: scottl MFC after: 2 weeks
|
158341 |
06-May-2006 |
sam |
force type coercion for bus tag+handle when calling ath_hal_attach to ensure we match the type signature; we cannot assume HAL_BUS_TAG and HAL_BUS_HANDLE correspond to bus_space_tag_t and bus_space_handle_t (should probably do this for HAL_SOFTC too but leave that for now)
MFC after: 1 month
|
158298 |
05-May-2006 |
sam |
correct type
MFC after: 2 weeks
|
158045 |
26-Apr-2006 |
sam |
intercept public safety channels and do explicit mapping of freq->ieee channel number since we're not ready at the net80211 layer to deal with them; note this mapping has to match what's done in ieee80211_mhz2ieee
MFC after: 3 days
|
158035 |
25-Apr-2006 |
sam |
honor fixed tx antenna when sending beacon frames
Submitted by: Michael Stevens (from netbsd) MFC after: 1 week
|
157798 |
16-Apr-2006 |
sam |
Improve ath_draintxq debug info: dump the packet as well as the descriptor and handle the beacon q like other q's
MFC after: 1 month
|
157797 |
16-Apr-2006 |
sam |
Unbreak cabq handling: check the s/w q, not the h/w q as the frames have not been passed to the h/w yet. This remedies watchdog timeout of buffered multicast frames in hostap mode.
While here eliminate an extraneous check; ieee80211_beacon_update sets the tim bit based on ncabq != 0 so there's no reason to check it too.
Noticed by: Christophe Prevotaux
|
157438 |
03-Apr-2006 |
sam |
o add opt_ath.h enable tweaking various config parameters for the driver without modifying the source code o default debug msgs and diag support to off
MFC after: 3 days
|
156463 |
09-Mar-2006 |
sam |
correct ni_txrate when using a fixed rate; fixes current rate reporting
MFC after: 3 days
|
156073 |
27-Feb-2006 |
sam |
backout 1.136 until we can resolve report that it causes output to stall
|
155991 |
24-Feb-2006 |
sam |
fix a race whereby a tx descriptor might get reused before the hardware is finished with it; this may only occur when the tx queue is setup as dba-gated but since the fix is cheap apply it to all queues
while here make the queue depth signed for use in assertions
Reviewed by: apatti MFC after: 2 weeks
|
155736 |
15-Feb-2006 |
sam |
drop softc lock around copyin/copyout
MFC after: 2 weeks
|
155735 |
15-Feb-2006 |
sam |
fix build w/o AR_DEBUG
MFC after: 2 weeks
|
155734 |
15-Feb-2006 |
sam |
improve tx/rx buf printing routines
MFC after: 2 weeks
|
155733 |
15-Feb-2006 |
sam |
add missing bit from 1.130
|
155732 |
15-Feb-2006 |
sam |
o handle fatal errors directly instead of via the task queue o temporarily dump some h/w state for diagnosis; this will be removed once some issues are resolved
MFC after: 2 weeks
|
155731 |
15-Feb-2006 |
sam |
use ath_hal_gettxintrtxqs so we only process h/w tx queues that have an interrupt pending
MFC after: 2 weeks
|
155730 |
15-Feb-2006 |
sam |
fixup comments
|
155729 |
15-Feb-2006 |
sam |
close race between ath_tx_start and ath_tx_processq
Reviewed by: apatti MFC after: 1 week
|
155609 |
13-Feb-2006 |
sam |
fix comment and whitespace
|
155608 |
13-Feb-2006 |
sam |
fix merge botch (duplicate processing of cabq for old cards)
|
155515 |
10-Feb-2006 |
sam |
Update for rev 0.9.16.16 hal: o add dfs+radar hooks; DFS is presently disabled in the hal o channel and mode handling changes o various api changes o be more aggressive about iq calibration settling so ap mode operation is better immediately after startup o rfkill/rfsilent sysctl support o tpc ack/cts sysctl support
MFC after: 2 weeks
|
155499 |
09-Feb-2006 |
sam |
pad for future statistics
MFC after: 2 weeks
|
155498 |
09-Feb-2006 |
sam |
Minor tx path cleanups: o assume all data frames have been classified so there's no need to check if QoS is being used, just fetch the wme priority from the mbuf o fix double counting of noack frames o fix nearby comment
MFC after: 2 weeks
|
155497 |
09-Feb-2006 |
sam |
correct handling of mbuf allocation failure when replenishing the rx list (leave a printf for the moment, need to make a debug msg)
Obtained from: atheros MFC after: 2 weeks
|
155496 |
09-Feb-2006 |
sam |
Beacon timer setup fixes: o pull nexttbtt forward in adhoc mode too o resync beacon timers on joining a bss or ibss as the tstamp we collected while scanning is almost certainly out of date
Note we may need to refine the ibss mode check in ath_recv_mgmt.
Reviewed by: avatar, dyoung Obtained from: atheros MFC after: 2 weeks
|
155495 |
09-Feb-2006 |
sam |
only start the cab queue if there are frames to send
MFC after: 2 weeks
|
155494 |
09-Feb-2006 |
sam |
debug fixups: reduce noise msgs, report channel flags on reset failure, mark data+link fields in descriptor dumps
MFC after: 2 weeks
|
155492 |
09-Feb-2006 |
sam |
Phantom beacon miss workaround: track the tsf of the last received frame and if we get a beacon miss interrupt ignore it if we've received a frame within the beacon miss interval. This should never trigger and the handling at the net80211 layer should likewise deal with this but it doesn't hurt and can suppress extranous probe request frames. Note that we can legtimately get a bmiss when under heavy load.
MFC after: 2 weeks
|
155491 |
09-Feb-2006 |
sam |
use a private task queue thread
MFC after: 2 weeks
|
155490 |
09-Feb-2006 |
sam |
add adhoc demo mode support
MFC after: 2 weeks
|
155489 |
09-Feb-2006 |
sam |
make regdomain sysctl r/w in case it's possible to do this in the future
MFC after: 2 weeks
|
155488 |
09-Feb-2006 |
sam |
cleanup rate setup
MFC after: 2 weeks
|
155486 |
09-Feb-2006 |
sam |
add tx99 hooks
MFC after: 2 weeks
|
155485 |
09-Feb-2006 |
sam |
move hal statistics to softc; the per-node stats are overkill, they're only used when operating in station mode
MFC after: 2 weeks
|
155484 |
09-Feb-2006 |
sam |
lookup the protection tx rate index in the rate tables instead of using a known value
MFC after: 2 weeks
|
155483 |
09-Feb-2006 |
sam |
honor net80211 mcast tx rate
MFC after: 2 weeks
|
155482 |
09-Feb-2006 |
sam |
craft unique names for tx q + buffer mtx's to help with interpreting ktr data
MFC after: 2 weeks
|
155481 |
09-Feb-2006 |
sam |
allow the size of tx+rx buffer pools to be tuned
MFC after: 2 weeks
|
155480 |
09-Feb-2006 |
sam |
lower try count on mgt (and ctl) frames to avoid clogging the tx queue and loading the bss when operating in ap mode under load; adjust recognition of multi-rate retry to match
MFC after: 2 weeks
|
155477 |
09-Feb-2006 |
sam |
move mgt frame tx rate responsibility from the rate control modules to the driver; this avoids redundant logic and will be necessary for future additions
MFC after: 2 weeks
|
155476 |
09-Feb-2006 |
sam |
sync with latest code in madwifi
Obtained from: madwifi MFC after: 2 weeks
|
154735 |
23-Jan-2006 |
sam |
track bmiss threshold change from time to frame count
|
154140 |
09-Jan-2006 |
sam |
Update monitoring support: o record tsf in tx+rx frames o switch from raw rssi to dbm for signal data and record both signal and noise floor data (hacked for now to assume a fixed noise floor; is correct with new hal) o add monpass sysctl to control which rx'd frames are passed up with errors; especially useful to see frames with CRC errors o mark 'd packets w/ a CRC error with radiotap's BADFCS flag
Also add placeholder code for calibrating the noise floor when using newer hals.
Reviewed by: avatar MFC after: 1 week
|
152448 |
15-Nov-2005 |
sam |
nuke special handling to extend cts when bursting; it was race prone
MFC after: 7 days
|
152447 |
15-Nov-2005 |
sam |
bandaid inconsistent state handling: the rate index map may be stale when called to reset rate control state causing us to pickup an invalid index, check for this and skip 'em (things will eventually get fixed up so this is not harmful)
|
152315 |
11-Nov-2005 |
ru |
- Store pointer to the link-level address right in "struct ifnet" rather than in ifindex_table[]; all (except one) accesses are through ifp anyway. IF_LLADDR() works faster, and all (except one) ifaddr_byindex() users were converted to use ifp->if_addr.
- Stop storing a (pointer to) Ethernet address in "struct arpcom", and drop the IFP2ENADDR() macro; all users have been converted to use IF_LLADDR() instead.
|
150212 |
16-Sep-2005 |
ru |
Fix "struct ifnet" leak on detach.
|
149006 |
12-Aug-2005 |
sam |
correct CTS duration calculation; SIFS+ACK should use the xmit rate not the rate for CTS
MFC after: 3 days Obtained from: Atheros
|
148936 |
10-Aug-2005 |
sam |
Clarify/fix handling of the current channel: o add ic_curchan and use it uniformly for specifying the current channel instead of overloading ic->ic_bss->ni_chan (or in some drivers ic_ibss_chan) o add ieee80211_scanparams structure to encapsulate scanning-related state captured for rx frames o move rx beacon+probe response frame handling into separate routines o change beacon+probe response handling to treat the scan table more like a scan cache--look for an existing entry before adding a new one; this combined with ic_curchan use corrects handling of stations that were previously found at a different channel o move adhoc neighbor discovery by beacon+probe response frames to a new ieee80211_add_neighbor routine
Reviewed by: avatar Tested by: avatar, Michal Mertl MFC after: 2 weeks
|
148887 |
09-Aug-2005 |
rwatson |
Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and IFF_DRV_RUNNING, as well as the move from ifnet.if_flags to ifnet.if_drv_flags. Device drivers are now responsible for synchronizing access to these flags, as they are in if_drv_flags. This helps prevent races between the network stack and device driver in maintaining the interface flags field.
Many __FreeBSD__ and __FreeBSD_version checks maintained and continued; some less so.
Reviewed by: pjd, bz MFC after: 7 days
|
148863 |
08-Aug-2005 |
sam |
Split crypto tx+rx key indices and add a key index -> node mapping table:
Crypto changes: o change driver/net80211 key_alloc api to return tx+rx key indices; a driver can leave the rx key index set to IEEE80211_KEYIX_NONE or set it to be the same as the tx key index (the former disables use of the key index in building the keyix->node mapping table and is the default setup for naive drivers by null_key_alloc) o add cs_max_keyid to crypto state to specify the max h/w key index a driver will return; this is used to allocate the key index mapping table and to bounds check table loookups o while here introduce ieee80211_keyix (finally) for the type of a h/w key index o change crypto notifiers for rx failures to pass the rx key index up as appropriate (michael failure, replay, etc.)
Node table changes: o optionally allocate a h/w key index to node mapping table for the station table using the max key index setting supplied by drivers (note the scan table does not get a map) o defer node table allocation to lateattach so the driver has a chance to set the max key id to size the key index map o while here also defer the aid bitmap allocation o add new ieee80211_find_rxnode_withkey api to find a sta/node entry on frame receive with an optional h/w key index to use in checking mapping table; also updates the map if it does a hash lookup and the found node has a rx key index set in the unicast key; note this work is separated from the old ieee80211_find_rxnode call so drivers do not need to be aware of the new mechanism o move some node table manipulation under the node table lock to close a race on node delete o add ieee80211_node_delucastkey to do the dirty work of deleting unicast key state for a node (deletes any key and handles key map references)
Ath driver: o nuke private sc_keyixmap mechansim in favor of net80211 support o update key alloc api
These changes close several race conditions for the ath driver operating in ap mode. Other drivers should see no change. Station mode operation for ath no longer uses the key index map but performance tests show no noticeable change and this will be fixed when the scan table is eliminated with the new scanning support.
Tested by: Michal Mertl, avatar, others Reviewed by: avatar, others MFC after: 2 weeks
|
148654 |
03-Aug-2005 |
rwatson |
Modify device drivers supporting multicast addresses to lock if_addr_mtx over iteration of their multicast address lists when synchronizing the hardware address filter with the network stack-maintained list.
Problem reported by: Ed Maste (emaste at phaedrus dot sandvine dot ca> MFC after: 1 week
|
148362 |
24-Jul-2005 |
sam |
o fix setup of sc_diversity; the hal does not give us reliable status after attach, only after a reset o when setting diversity via the sysctl don't update sc_diversity until we know the hal requested worked o while here eliminate sc_hasdiversity and sc_hastpc; just query the hal each time since these are the only places we need to know
MFC after: 3 days
|
148326 |
23-Jul-2005 |
sam |
o move ath_sysctlattach down so variables it depends on are setup o use any fixed tx antenna for beacons transmitted in adhoc mode
Submitted by: David Young MFC after: 3 days
|
148307 |
22-Jul-2005 |
sam |
simplify ic_newassoc callback
MFC after: 3 days
|
148306 |
22-Jul-2005 |
sam |
simplify ieee80211_ibss_merge api
MFC after: 3 days
|
148290 |
22-Jul-2005 |
sam |
diff reduction against p4: define IEEE80211_FIXED_RATE_NONE and use it instead of -1
|
147803 |
07-Jul-2005 |
sam |
only invoke ath_rate_tx_complete to update rate control state when the frame being sent is to be ack'd and hasn't been filtered by the h/w; this insures we don't pass in tx descriptors that have no meaningful state (e.g. mcast/bcast frames are not acked and so have no tx retry counts)
Approved by: re (scottl) Obtained from: Atheros
|
147256 |
10-Jun-2005 |
brooks |
Stop embedding struct ifnet at the top of driver softcs. Instead the struct ifnet or the layer 2 common structure it was embedded in have been replaced with a struct ifnet pointer to be filled by a call to the new function, if_alloc(). The layer 2 common structure is also allocated via if_alloc() based on the interface type. It is hung off the new struct ifnet member, if_l2com.
This change removes the size of these structures from the kernel ABI and will allow us to better manage them as interfaces come and go.
Other changes of note: - Struct arpcom is no longer referenced in normal interface code. Instead the Ethernet address is accessed via the IFP2ENADDR() macro. To enforce this ac_enaddr has been renamed to _ac_enaddr. - The second argument to ether_ifattach is now always the mac address from driver private storage rather than sometimes being ac_enaddr.
Reviewed by: sobomax, sam
|
147153 |
09-Jun-2005 |
sam |
Change station mode beacon timer setup to insure the calculated nextTbtt is always ahead of the h/w TSF.
Reviewed by: avatar
|
147067 |
07-Jun-2005 |
sam |
Set the correct IFS parameters for the beacon tx queue when operating in ap and adhoc modes.
|
147057 |
06-Jun-2005 |
sam |
Misc keycache changes: o purge ath_initkeytable; it's not needed o add multicast key search support for supporting multiple group keys (disabled for now; requires updated hal) o create keycache entry for stations using open auth so they get h/w antenna management support o add keycache -> node mapping table; eliminates mac-based lookup in the net80211 layer
|
146885 |
02-Jun-2005 |
sam |
restore led state on resume
Submitted by: markus
|
144961 |
12-Apr-2005 |
sam |
honor new IEEE80211_KEY_GROUP key flag
Reviewed by: Tai-hwa Liang
|
144617 |
04-Apr-2005 |
sam |
use frame type returned by ieee80211_input to drive softled code instead of monitoring the input packet count
|
144547 |
02-Apr-2005 |
sam |
fix size_to_bin
Obtained from: madwifi
|
144546 |
02-Apr-2005 |
sam |
nuke unintentional use of HAL_BOOL type
|
144403 |
31-Mar-2005 |
sam |
reclaim mbufs in failure cases
Submitted by: Tai-hwa Liang
|
144351 |
30-Mar-2005 |
sam |
close unlikely race
Submitted by: Michael Wong
|
144350 |
30-Mar-2005 |
sam |
correct comment
|
144348 |
30-Mar-2005 |
sam |
o fix bug where rate wouldn't lift off lowest setting when operating as an ap in 11g with protection enabled o correct rate selection when operating in 11g with protection when no packets have been sent yet (from John Bicket) o track api change to get first descriptor and use it to collect the frame length for calculating the state bin o add more debugging and shuffle some existing debugging to give more info o bump version to distinguish bug fixes
|
144347 |
30-Mar-2005 |
sam |
rev rate control api to pass the both the first+last tx descriptors to the rate control module for tx complete processing; this enables rate control algorithms to extract the packet length for xmits that require multiple descriptors
|
144346 |
30-Mar-2005 |
sam |
o extend cts to cover packet burst when operating in 11g w/ protection o check current channel parameters, not shadow state, for acm policy on data frames
|
144315 |
30-Mar-2005 |
avatar |
Fixing kernel build on amd64 machines.
Reviewed by: sam (mentor)
|
144309 |
29-Mar-2005 |
sam |
extend the timestamp from the rx descriptor to calculate the tsf to use when checking for an ibss merge
|
144308 |
29-Mar-2005 |
sam |
forgot to merge this bit from p4
|
144307 |
29-Mar-2005 |
sam |
sync rates for any associated stations or neighbors on state transition
|
144306 |
29-Mar-2005 |
sam |
simplify callback
|
144305 |
29-Mar-2005 |
sam |
replace m_defrag with something more suitable
|
143863 |
20-Mar-2005 |
sam |
fix braino introduced when converting from madwifi
|
143862 |
20-Mar-2005 |
sam |
eliminate mid-block variable decls
|
143853 |
19-Mar-2005 |
sam |
version 1.1 (with cleanups)
Submitted by: John Bicket
|
143419 |
11-Mar-2005 |
avatar |
Adding missing module dependency. This should fix the undefined symbol error(ath_hal_computetxtime) during module loading.
Reviewed by: sam (mentor)
|
143392 |
11-Mar-2005 |
sam |
SampleRate rate control algorithm for the ath driver
Submitted by: John Bicket
|
143299 |
08-Mar-2005 |
sam |
reclaim mbuf chain when ieee80211_crypto_encap fails
Noticed by: David Young
|
143163 |
05-Mar-2005 |
imp |
Use BUS_PROBE_DEFAULT for pci probe return value
|
140761 |
24-Jan-2005 |
sam |
Fixup radiotap handling of FCS and QoS frames per discussion with David Young: o mark rx frames including FCS in the payload with the IEEE80211_RADIOTAP_F_FCS flag o remove hack to copy 802.11 headers with padding out of line; instead mark the frames with IEEE80211_RADIOTAP_F_DATAPAD and require applications to do the work o split precalculated radiotap flags into tx+rx now that they can be different
Note the full usefulness of these changes depends on updates to applications that process radiotap data.
|
140759 |
24-Jan-2005 |
sam |
beacon handling fixups for adhoc mode: o don't reclaim any previous beacon state in ath_beacon_alloc; do it explicitly in ath_newstate o reference count the node held in the beacon frame state block o process ibss merge more intelligently; let the state machine do the right thing instead of explicitly setting the new bssi id o explicitly stop tx dma before doing beacon setup to handle the ibss merge case
|
140756 |
24-Jan-2005 |
sam |
switch to use bus_dmamap_load_mbuf_sg
|
140755 |
24-Jan-2005 |
sam |
o correct beacon interval calculation; the internal setting is in TU's not ms o replace the private macro to convert MS->TU with the common one
|
140753 |
24-Jan-2005 |
sam |
statically allocate the station/neighbor node table; the deferred allocation scheme introduced a race condition during device state transitions
|
140438 |
18-Jan-2005 |
sam |
adjust tx buffer allocation based on empirical testing: o increase the max per-frame tx descriptor count and the number of tx buffers for forthcoming fast frame support o correct the max scatter/gather count; it cannot be larger than the max(tx,rx,beacon) descriptor counts
|
140437 |
18-Jan-2005 |
sam |
add missing statistic
|
140436 |
18-Jan-2005 |
sam |
disable interrupts when transitioning to INIT state so we don't rx frames
|
140435 |
18-Jan-2005 |
sam |
replace hand-rolled code to compact an mbuf chain with m_defrag; this is suboptimal but needed for fast frames which won't fit in a single cluster
|
140433 |
18-Jan-2005 |
sam |
setup the beacon xmit queue to not interrupt; we don't use them and they make the led's flash unnecessarily in adhoc mode
|
140432 |
18-Jan-2005 |
sam |
better led blinking
|
140428 |
18-Jan-2005 |
sam |
add paren's so we can supply a|b as a debug mask
|
140427 |
18-Jan-2005 |
sam |
o disable pci retry timeout to avoid problems when operating in C3 state (fix imported from madwifi by Takanori Watanabe) o eliminate save/restore of pci registers handled by the system o eliminate duplicate zero of the softc (noted by njl) o consolidate common code
MFC after: 1 week
|
139530 |
31-Dec-2004 |
sam |
bump copyright for 2005
|
139501 |
31-Dec-2004 |
sam |
correct some typos
Submitted by: Tai-hwa Liang
|
139500 |
31-Dec-2004 |
sam |
Radiotap fixups: o catch one place where we were not using ath_chan_change to switch channels; this fixes a problem where the channel settings were not being correctly reported in captured packets o return unique channel identification in the channel flags; ethereal gets confused if you return merged flags (e.g. ofdm, cck, and 2Ghz) (this is workaround and should be removed if we can ever cleanup radiotap consumers) o correct short/long preamble flag state for rx and treat tx the same--use a new hwflags array that gives us the data based on the h/w rate index/cookie o add gross hack to handle radiotap capture of frames that come in with hardware padding; should be replaced by a flag in the radiotap header and more smarts in the apps that decode radiotap data
|
139499 |
31-Dec-2004 |
sam |
for parts that require split keycache entries report the the index of the first entry on a mic error so we're consistent with parts that don't have split keycache
|
139498 |
31-Dec-2004 |
sam |
Correct beacon timer setup logic: o lintval is in ms; must convert to TU's for passing to the hal o roundup to calculate nexttbtt (should look at current tsf and pull the calculated nextbtt forward but this'll do for now) o don't or- in HAL_BEACON_RESET_TSF when doing station timer setup; this is not needed and messes up the sleep timer calcs, though it's unclear if it mattered as the hal masks these values before use
Submitted by: Thorsten von Eicken
|
139497 |
31-Dec-2004 |
sam |
no need to sweep the tx q's for node references in ath_node_free; we know there are none since we're only called when the ref count goes to zero
|
139496 |
31-Dec-2004 |
sam |
cleanup some assertions
|
138879 |
15-Dec-2004 |
peter |
Like on the ath_rate_onoe component, make this compile on amd64. Convert pointers to an integer via uintptr_t.
Fix an apparent bug that caused a compile failure. ieee80211_iterate_nodes() takes ic->ic_sta as its first argument on the onoe module. It had just 'ic' here in the same context, which was a mismatched argument.
|
138878 |
15-Dec-2004 |
peter |
Make this amd64-clean. sizeof is long on amd64, so things that do a printf of a sizeof, need to use %z to get the correct type on all our platforms. Also, convert integers<->pointers via uintptr_t.
(I think Sam's instructions were for me to commit this. If I misunderstood, then I apologize in advance.)
|
138570 |
08-Dec-2004 |
sam |
Update with last year of work.
|
138569 |
08-Dec-2004 |
sam |
Transmit rate control modules for the ath driver.
|
133330 |
08-Aug-2004 |
sam |
Add missing bit of last if_start workaround: mark scan callout MPSAFE only debug_mpsafenet is 1 so callbacks to send management frames hold Giant; this is another bandaid on the path to removing Giant.
|
133240 |
07-Aug-2004 |
sam |
Pickup Giant in ath_rx_proc and when handling a beacon miss in order to satisfy the assertion in if_start.
|
132986 |
01-Aug-2004 |
mlaier |
Second part of ALTQ driver modifications, covering: an(4), ath(4), hme(4), ndis(4), vr(4) and wi(4)
Please help testing: http://people.freebsd.org/~mlaier/ALTQ_driver/
Tested by: Vaidas Damosevicius (an, ath, wi) Roman Divacky (vr) Submitted by: yongari (hme)
|
127878 |
05-Apr-2004 |
sam |
use correct malloc type to allocate struct ieee80211_node's
Noticed by: phk
|
127784 |
03-Apr-2004 |
sam |
do proper subclassing of node free+copy; the previous hack falls apart when the 802.11 layer does useful work
Obtained from: madwifi
|
127782 |
03-Apr-2004 |
sam |
do proper subclassing of node free+copy; the previous hack falls apart when the 802.11 layer does useful work
Obtained from: madwifi
|
127781 |
03-Apr-2004 |
sam |
transmit beacon frames directly instead of defering them to a swi; there was too much delay
Obtained from: madwifi
|
127780 |
02-Apr-2004 |
sam |
update copyright notice for 2004
|
127779 |
02-Apr-2004 |
sam |
add new statistics
Obtained from: madwifi
|
127778 |
02-Apr-2004 |
sam |
check more quickly (and directly) if an interrupt is pending; this reduces work done in ath_intr when the irq is shared
Obtained from: madwifi
|
127777 |
02-Apr-2004 |
sam |
cleanup descriptor allocation if attach fails
Obtained from: madwifi
|
127776 |
02-Apr-2004 |
sam |
remove use IEEE80211_C_RCVMGT
|
127698 |
01-Apr-2004 |
sam |
radiotap updates:
o force little-endian byte order for header o pad header to 32-bit boundary to guard against applications that assume packet data alignment
|
127237 |
20-Mar-2004 |
mdodd |
Don't announce MAC addresses twice. (ieee80211_ifattach() calls ether_ifattach().)
|
127135 |
17-Mar-2004 |
njl |
Convert callers to the new bus_alloc_resource_any(9) API.
Submitted by: Mark Santcroos <marks@ripe.net> Reviewed by: imp, dfr, bde
|
125510 |
06-Feb-2004 |
peter |
Make this compile on amd64.
"I'll cope" by: sam
|
124225 |
07-Jan-2004 |
sam |
When draining the tx queue reclaim any node references held in packets. This fixes a problem when operating as an AP where clients would get stuck in the node table because the reference count never went to zero.
|
124224 |
07-Jan-2004 |
sam |
When ath_hal_stoptxdma returns an error dma is still likely stopped so don't just stop trying to send a beacon frame or we'll be more likely to lose sync. This only seems to happen on some older chips.
|
124223 |
07-Jan-2004 |
sam |
use ath_reset instead of ath_init when recovering from a watchdog timeout: resetting the hardware is sufficient, no need to reset the 802.11 fsm
|
124222 |
07-Jan-2004 |
sam |
make hw.ath.debug a tunable
|
124221 |
07-Jan-2004 |
sam |
make hw.ath.outdoor and hw.ath.countrycode tunables
|
124220 |
07-Jan-2004 |
sam |
split debugging messages up into classes; ah_debug is now treated as a bit vector
|
123928 |
28-Dec-2003 |
sam |
update radiotap support to reflect recent changes:
o move tx taps from ath_start to ath_tx_start so lots more state is available to tap o add tx flags o add tx rate o add tx power (constant for the moment) o add tx antenna state
|
123922 |
28-Dec-2003 |
sam |
o eliminate widespread on-stack mbuf use for bpf by introducing a new bpf_mtap2 routine that does the right thing for an mbuf and a variable-length chunk of data that should be prepended. o while we're sweeping the drivers, use u_int32_t uniformly when when prepending the address family (several places were assuming sizeof(int) was 4) o return M_ASSERTVALID to BPF_MTAP* now that all stack-allocated mbufs have been eliminated; this may better be moved to the bpf routines
Reviewed by: arch@ and several others
|
123044 |
29-Nov-2003 |
sam |
o track API change for HAL v0.9.6.1 o fix race condition when processing rx descriptors: because we use a self-linked descriptor at the end of the rx descriptor list to avoid rx overruns (which can easily happen for 5212 parts that enable PHY errors) we must carefully check that a descriptor is "done" by looking ahead to the next descriptor before believing the done bit in the current descriptor (this is all handled in the HAL since the rx descriptor format is chip-specific so we need to pass in two additional parameters--the physical address of the current descriptor and the virtual address of the next descriptor in the list) o check copyout return status for SIOCGATHSTATS ioctl
Approved by: re (scottl)
|
123019 |
28-Nov-2003 |
imp |
Sometimes cardbus attachments don't attach, so while we track down this problem put these lines back in. While they should be unnecessary, they appear to be sometimes necessary.
Reviewed in concept: dfr Approved by: re (scottl@)
|
122866 |
17-Nov-2003 |
sam |
move rate control change messages under ath_debug
|
122863 |
17-Nov-2003 |
sam |
o fix WEP use in hostap mode; need to reset the pointer to the 802.11 packet header after stripping the WEP header on input
|
122862 |
17-Nov-2003 |
sam |
on a beacon miss try to reassociate before starting a scan
Submitted by: Henry Qian
|
122602 |
13-Nov-2003 |
sam |
Don't count PHY errors as input errors. This is important for 5212-based devices because PHY errors are used to collect data on environmental noise that and doesn't truly reflect the state of the communications media. The result is confused users. Folks that want to watch PHY errors can still get the statistics through the device ioctl (used by athstats).
|
121939 |
03-Nov-2003 |
dfr |
Remove explicit cardbus attachments from drivers where this is identical to the pci attachment. Cardbus is a derived class of pci so all pci drivers are automatically available for matching against cardbus devices.
Reviewed by: imp
|
121840 |
01-Nov-2003 |
sam |
o check hal ABI version to catch driver-HAL mismatches o print MAC, PHY, and radio h/w revisions at attach
|
121816 |
31-Oct-2003 |
brooks |
Replace the if_name and if_unit members of struct ifnet with new members if_xname, if_dname, and if_dunit. if_xname is the name of the interface and if_dname/unit are the driver name and instance.
This change paves the way for interface renaming and enhanced pseudo device creation and configuration symantics.
Approved By: re (in principle) Reviewed By: njl, imp Tested On: i386, amd64, sparc64 Obtained From: NetBSD (if_xname)
|
121322 |
22-Oct-2003 |
sam |
terminate the rx descriptor list with a self-linked entry so high phy error rates on a 5212 don't cause rx overruns
|
121177 |
17-Oct-2003 |
sam |
o consolidate rx filter calculations in one place o enable beacon reception when operating in adhoc mode so the 802.11 layer can use them to create nodes for peers
|
121175 |
17-Oct-2003 |
sam |
indicate device receives all management frames
|
121138 |
16-Oct-2003 |
sam |
o correct handling of a frame that has too many segments to fit in the tx descriptor array o while here fix a whitespace nit
Obtained from: NetBSD
|
121100 |
14-Oct-2003 |
sam |
o convert mutex calls to #defines for portability, etc. o destroy mutex's on detach (was missing)
|
121063 |
13-Oct-2003 |
sam |
remove dangling mtx_unlock orphaned by rev 1.21 change
|
121059 |
13-Oct-2003 |
sam |
Reduce per-packet overhead when using WEP by using an advancing IV seeded with arc4random rather than calling arc4random for each packet. Note this is the same algorithm used to select the IV when doing WEP on the host.
|
121058 |
13-Oct-2003 |
sam |
Must reset the pointer to the 802.11 header after prepending for WEP in case the prepend addes a new mbuf. This fixes WEP.
|
121057 |
13-Oct-2003 |
sam |
MFp4:
o don't grab the mutex at the top of ath_detach; it does nothing useful o deal with entry to ath_ioctl during detach to disable promiscuous mode as a result of calling bpfdetach2: cannot call ath_init when the device is marked invalid as the code isn't prepared to deal with it (in particular by that time the hal reference may have been yanked)
|
121056 |
13-Oct-2003 |
sam |
MFp4:
change ath_rate_ctl_reset to handle transition from station mode to adhoc mode; was not resetting the initial xmit rate causing outbound frames to be dicarded
|
120826 |
06-Oct-2003 |
sam |
include the DS element in beacons
|
120105 |
15-Sep-2003 |
sam |
Maintain a history of data associated with received frames and use this to calculate smoothed signal quality data for each node.
o add a 16-deep history buffer to each driver-private node storage that holds rssi and antenna info for received frames o override the default per-node "get rssi" method to return an average rssi value based on samples collected over the last second o enable beacon reception so even idle systems maintain a running history of signal quality
This data may also be useful for improving the rate control algorithm. Based on work by Tom Marshall <tommy@home.tig-grr.com> for MADWIFI.
|
120100 |
15-Sep-2003 |
sam |
o do not filter received frames based on type or length; pass 'em all up to the 802.11 layer if they are at least IEEE80211_MIN_LEN o mask off interrupt status bits that we don't care about so we don't do the wrong thing; this fixes a problem where the beacon miss interrupt status bit is delivered together with other status bits when operating in monitor mode (we would post a beacon miss swi and then do the wrong thing)
|
120075 |
14-Sep-2003 |
sam |
must also check for 5Ghz channels when marking short preamble capability in the beacon frames
Reminded by: Stephane Laroche <stephane.laroche@colubris.com>
|
120071 |
14-Sep-2003 |
sam |
o mark the device capable of short preamble (meaningless for the 5210 but safe since the 802.11 layer does the right thing for 11a operation) o select short preamble operation based on the negotiated capabilities; not just the local state/capability o fillin the duration field in the 802.11 header as appropriate o remove detection of 11g support; no longer needed
Obtained from: MADWIFI (with modifications)
|
119783 |
05-Sep-2003 |
sam |
Add support for the experimental radiotap capture format. With this we no longer need the debugging code to dump packets.
|
119629 |
01-Sep-2003 |
sam |
Explicitly enable probe request frame reception when not in station mode; this is needed for the 5212 which a separate filter bit for these frames.
Submitted by: Stephane Laroche <stephane.laroche@colubris.com>
|
119150 |
19-Aug-2003 |
sam |
MFp4 changes to fix locking issues and correct reference count handling of station entries in hostap mode:
Input path:
o driver is now expected to find the node associated with the sender of a received frame; use ic_bss if none is located o driver passes the (referenced) node into ieee80211_input for use within the wlan module and is responsible for cleaning up on return o the antenna state is no longer passed up with each frame; this is now considered driver-private state and drivers are responsible for keeping it in the driver-private part of a node
Output path:
Revamp output path for management frames to eliminate redundant locking that causes problems and to correct reference counting bogosity that occurs when stations are timed out due to inactivity (in AP mode). On output the refcnt'd node is stashed in the pkthdr's recvif field (yech) and retrieved by the driver. This eliminates an unref/ref scenario and related node table unlock/lock due to the driver looking up the node. This is particularly important when stations are timed out as this causes a lock order reversal that can result in a deadlock. As a byproduct we also reduce the overhead for sending management frames (minimal). Additional fallout from this is a change to ieee80211_encap to return a refcn't node for tieing to the outbound frame. Node refcnts are not reclaimed until after a frame is completely processed (e.g. in the tx interrupt handler). This is especially important for timed out stations as this deref will be the final one causing the node entry to be reclaimed.
Additional semi-related changes: o replace m_copym use with m_copypacket (optimization) o add assert to verify ic_bss is never free'd during normal operation o add comments explaining calling conventions by drivers for frames going in each direction o remove extraneous code that "cannot be executed" (e.g. because pointers may never be null)
|
119147 |
19-Aug-2003 |
sam |
o pass control frames up the stack when in monitor mode (the 802.11 layer will quietly discard them; this just permits them to be collected with bpf) o add a counter for the number of rate control frames discarded when not in monitor mode o move the rx "too short" statistic in the stat structure so non-error rx stats are together (NB: ABI change to apps that collect stats via driver ioctl)
|
119145 |
19-Aug-2003 |
sam |
o correct beacon frame length calculation and add an assert to catch any future mistakes (this mistake was not an issue because the length is only used to decide whether or not to allocate a cluster) o while here, move a beacon length comment to the "right place"
|
119144 |
19-Aug-2003 |
sam |
maintain a table for mapping hardware rate codes to 802.11 rates for calculating the rate for each rx'd frame
|
119143 |
19-Aug-2003 |
sam |
mark the scan and calibrate callouts MPSAFE
|
119142 |
19-Aug-2003 |
sam |
remove unneeded include files
|
118884 |
13-Aug-2003 |
sam |
Close a race where ath_intr is installed and may be called before the HAL is setup: use sc_invalid to discard such entries into ath_intr. This can easily happen if the device is assigned a shared IRQ.
|
118342 |
02-Aug-2003 |
sam |
o remove bmisshack no longer needed with the BSSID fix in v0.9.5.2 of the hal o add monitor mode support o fix short preamble handling in beacon setup (noop) o correct resume handling
|
117812 |
20-Jul-2003 |
sam |
track changes to 802.11 code:
o override new_state method per new model o use ieee80211_state_name instead of private copy
|
117516 |
13-Jul-2003 |
sam |
o add read-only sysctls to view regulatory domain, country code, and outdoor use controls o use sysctl-visible values in setting up channel list
|
117126 |
01-Jul-2003 |
scottl |
Mega busdma API commit.
Add two new arguments to bus_dma_tag_create(): lockfunc and lockfuncarg. Lockfunc allows a driver to provide a function for managing its locking semantics while using busdma. At the moment, this is used for the asynchronous busdma_swi and callback mechanism. Two lockfunc implementations are provided: busdma_lock_mutex() performs standard mutex operations on the mutex that is specified from lockfuncarg. dftl_lock() is a panic implementation and is defaulted to when NULL, NULL are passed to bus_dma_tag_create(). The only time that NULL, NULL should ever be used is when the driver ensures that bus_dmamap_load() will not be deferred. Drivers that do not provide their own locking can pass busdma_lock_mutex,&Giant args in order to preserve the former behaviour.
sparc64 and powerpc do not provide real busdma_swi functions, so this is largely a noop on those platforms. The busdma_swi on is64 is not properly locked yet, so warnings will be emitted on this platform when busdma callback deferrals happen.
If anyone gets panics or warnings from dflt_lock() being called, please let me know right away.
Reviewed by: tmm, gibbs
|
117055 |
30-Jun-2003 |
sam |
acknowledge the contribution of Atsushi Onoe
|
116743 |
23-Jun-2003 |
sam |
Atheros 802.11 driver. Requires Atheros Hardware Access Lay (HAL).
Supported by: Atheros Comunications
|