#
e11b6fa3 |
| 03-Aug-2012 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge head r233826 through r239010.
|
#
af017101 |
| 01-Aug-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Allow 802.11n hardware to support multi-rate retry when RTS/CTS is enabled.
The legacy (pre-802.11n) hardware doesn't support this - although the AR5212 era hardware supports MRR, it doesn't have al
Allow 802.11n hardware to support multi-rate retry when RTS/CTS is enabled.
The legacy (pre-802.11n) hardware doesn't support this - although the AR5212 era hardware supports MRR, it doesn't have all the bits needed to support MRR + RTS/CTS. The AR5416 and later support a packet duration and RTS/CTS flags per rate scenario, so we should support it.
Tested:
* AR9280, STA
PR: kern/170302
show more ...
|
#
f8418db5 |
| 31-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Migrate some more TX side setup routines to be methods.
|
#
7ef7f613 |
| 29-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Fix breakage introduced in r238824 - correctly calculate the descriptor wrapping.
The previous code was only wrapping descriptor "block" boundaries rather than individual descriptors. It sounds equ
Fix breakage introduced in r238824 - correctly calculate the descriptor wrapping.
The previous code was only wrapping descriptor "block" boundaries rather than individual descriptors. It sounds equivalent but it isn't.
r238824 changed the descriptor allocation to enforce that an individual descriptor doesn't wrap a 4KiB boundary rather than the whole block of descriptors. Eg, for TX descriptors, they're allocated in blocks of 10 descriptors for each ath_buf (for scatter/gather DMA.)
show more ...
|
#
4bf404ea |
| 28-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Add a missing call to ath_txdma_teardown().
|
#
9ed9f02b |
| 27-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Modify ath_descdma_cleanup() to handle ath_descdma instances with no buffers.
ath_descdma is now being used for things other than the classical combination of ath_buf + ath_desc allocations. In thi
Modify ath_descdma_cleanup() to handle ath_descdma instances with no buffers.
ath_descdma is now being used for things other than the classical combination of ath_buf + ath_desc allocations. In this particular case, don't try to free and blank out the ath_buf list if it's not passed in.
show more ...
|
#
b39722d6 |
| 27-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Migrate the descriptor allocation function to not care about the number of buffers, only the number of descriptors.
This involves:
* Change the allocation function to not use nbuf at all; * When ca
Migrate the descriptor allocation function to not care about the number of buffers, only the number of descriptors.
This involves:
* Change the allocation function to not use nbuf at all; * When calling it, pass in "nbuf * ndesc" to correctly update how many descriptors are being allocated.
Whilst here, fix the descriptor allocation code to correctly allocate a larger buffer size if the Merlin 4KB WAR is required. It overallocates descriptors when allocating a block that doesn't ever have a 4KB boundary being crossed, but that can be fixed at a later stage.
show more ...
|
#
c9f78537 |
| 27-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Refactor out the descriptor allocation code from the buffer allocation code.
The TX EDMA completion path is going to need descriptors allocated but not any buffers. This code will form the basis fo
Refactor out the descriptor allocation code from the buffer allocation code.
The TX EDMA completion path is going to need descriptors allocated but not any buffers. This code will form the basis for that.
show more ...
|
#
1006fc0c |
| 24-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Modify ath_descdma_setup() to take a descriptor size parameter.
The AR9300 and later descriptors are 128 bytes, however I'd like to make sure that isn't used for earlier chips.
* Populate the TX de
Modify ath_descdma_setup() to take a descriptor size parameter.
The AR9300 and later descriptors are 128 bytes, however I'd like to make sure that isn't used for earlier chips.
* Populate the TX descriptor length field in the softc with sizeof(ath_desc)
* Use this field when allocating the TX descriptors
* Pre-AR93xx TX/RX descriptors will use the ath_desc size; newer ones will query the HAL for these sizes.
show more ...
|
#
3fdfc330 |
| 23-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Begin separating out the TX DMA setup in preparation for TX EDMA support.
* Introduce TX DMA setup/teardown methods, mirroring what's done in the RX path.
Although the TX DMA descriptor is setu
Begin separating out the TX DMA setup in preparation for TX EDMA support.
* Introduce TX DMA setup/teardown methods, mirroring what's done in the RX path.
Although the TX DMA descriptor is setup via ath_desc_alloc() / ath_desc_free(), there TX status descriptor ring will be allocated in this path.
* Remove some of the TX EDMA capability probing from the RX path and push it into the new TX EDMA path.
show more ...
|
#
3d9b1596 |
| 23-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Begin modifying the descriptor allocation functions to support a variable sized TX descriptor.
This is required for the AR93xx EDMA support which requires 128 byte TX descriptors (which is significa
Begin modifying the descriptor allocation functions to support a variable sized TX descriptor.
This is required for the AR93xx EDMA support which requires 128 byte TX descriptors (which is significantly larger than the earlier hardware.)
show more ...
|
#
b8f2a853 |
| 20-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Enable the basic node-based rate control statistics via an ioctl().
|
#
de720122 |
| 15-Jul-2012 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge head r236710 through r238467.
|
#
b5b60f35 |
| 14-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Ensure that error is set.
Noticed by: rui
|
#
8d467c41 |
| 14-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Don't free the descriptor allocation/map if it doesn't exist.
I missed this in my previous commit.
|
#
39abbd9b |
| 14-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Fix EDMA RX to actually work without panicing the machine.
I was setting up the RX EDMA buffer to be 4096 bytes rather than the RX data buffer portion. The hardware was likely getting very confused
Fix EDMA RX to actually work without panicing the machine.
I was setting up the RX EDMA buffer to be 4096 bytes rather than the RX data buffer portion. The hardware was likely getting very confused and DMAing descriptor portions into places it shouldn't, leading to memory corruption and occasional panics.
Whilst here, don't bother allocating descriptors for the RX EDMA case. We don't use those descriptors. Instead, just allocate ath_buf entries.
show more ...
|
#
6cf87ec8 |
| 13-Jul-2012 |
Xin LI <delphij@FreeBSD.org> |
IFC @238412.
|
#
b652778e |
| 11-Jul-2012 |
Peter Grehan <grehan@FreeBSD.org> |
IFC @ r238370
|
#
bcbb08ce |
| 10-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Flip on EDMA RX of both HP and LP queue frames.
Yes, this is in the legacy interrupt path. The NIC does support MSI but I haven't yet sat down and written that code.
|
#
2633dc93 |
| 10-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Migrate the ATH_KTR_* fields out to if_ath_debug.h .
|
#
3d184db2 |
| 09-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Further preparations for the RX EDMA support.
Break out the DMA descriptor setup/teardown code into a method. The EDMA RX code doesn't allocate descriptors, just ath_buf entries.
|
#
f8cc9b09 |
| 03-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Begin abstracting out the RX path in preparation for RX EDMA support.
The RX EDMA support requires a modified approach to the RX descriptor handling.
Specifically:
* There's now two RX queues - hi
Begin abstracting out the RX path in preparation for RX EDMA support.
The RX EDMA support requires a modified approach to the RX descriptor handling.
Specifically:
* There's now two RX queues - high and low priority; * The RX queues are implemented as FIFOs; they're now an array of pointers to buffers; * .. and the RX buffer and descriptor are in the same "buffer", rather than being separate.
So to that end, this commit abstracts out most of the RX related functions from the bulk of the driver. Notably, the RX DMA/buffer allocation isn't updated, primarily because I haven't yet fleshed out what it should look like.
Whilst I'm here, create a set of matching but mostly unimplemented EDMA stubs.
Tested:
* AR9280, station mode
TODO:
* Thorough AP and other mode testing for non-EDMA chips; * Figure out how to allocate RX buffers suitable for RX EDMA, including correctly setting the mbuf length to compensate for the RX descriptor and completion status area.
show more ...
|
#
f8aa9fd5 |
| 24-Jun-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Shuffle these initialisations to where they should be.
|
#
e1b5ab97 |
| 24-Jun-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Introduce an optional ath(4) radiotap vendor extension.
This includes a few new fields in each RXed frame:
* per chain RX RSSI (ctl and ext); * current RX chainmask; * EVM information; * PHY error
Introduce an optional ath(4) radiotap vendor extension.
This includes a few new fields in each RXed frame:
* per chain RX RSSI (ctl and ext); * current RX chainmask; * EVM information; * PHY error code; * basic RX status bits (CRC error, PHY error, etc).
This is primarily to allow me to do some userland PHY error processing for radar and spectral scan data. However since EVM and per-chain RSSI is provided, others may find it useful for a variety of tasks.
The default is to not compile in the radiotap vendor extensions, primarily because tcpdump doesn't seem to handle the particular vendor extension layout I'm using, and I'd rather not break existing code out there that may be (badly) parsing the radiotap data.
Instead, add the option 'ATH_ENABLE_RADIOTAP_VENDOR_EXT' to your kernel configuration file to enable these options.
show more ...
|
#
d1328898 |
| 17-Jun-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
After some discussion with bschmidt@, it's likely better to just go through ieee80211_suspend_all() and ieee80211_resume_all(). All the other wireless drivers are doing that particular dance.
PR: k
After some discussion with bschmidt@, it's likely better to just go through ieee80211_suspend_all() and ieee80211_resume_all(). All the other wireless drivers are doing that particular dance.
PR: kern/169084
show more ...
|