summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Commit a missing fix - the AR_SREV_KIWI_10_OR_LATER() check.adrian2011-11-091-4/+8
|
* Remove trailing whitespace.ed2011-11-091-2/+2
|
* Even though the HAL doesn't currently support Kiwi 1.0/1.1,adrian2011-11-091-1/+1
| | | | | | be "more correct" about the Kiwi setup. Obtained from: Atheros
* Add definition of some USB 3.0 descriptors to libusb 1.0 and libusb 2.0.hselasky2011-11-096-3/+332
| | | | | | | Some header file parts of this patch were taken from a patch submitted by Maya Erez <merez@codeaurora.org> to the LibUSB developers list. MFC after: 1 week
* Move building of clang's tblgen tools (and required libraries) from thedim2011-11-091-10/+6
| | | | | | | | | | | | | | | bootstrap-tools stage to the cross-tools stage. These tools are only needed for generating llvm/clang include files, and are not necessary for bootstrapping the build itself. This shaves off some build time, because the required libraries are now just built twice (during the cross-tools and world stages), instead of three times. Also, if you build world using WITHOUT_CLANG= in src.conf(5), no llvm or clang code will be compiled at all anymore. MFC after: 1 week
* Fix size of USB 3.0 descriptor field.hselasky2011-11-092-2/+2
| | | | MFC after: 3 days
* Attempt to improve formatting and content of several comments forkib2011-11-096-30/+27
| | | | | | | amd64 and i386 MD code. Based on suggestions by: bde MFC after: 1 week
* If software retransmit occurs with an ath_buf marked ATH_BUF_BUSY,adrian2011-11-091-3/+58
| | | | | | | | | | | | | | | | | it's cloned and that clone is retransmitted. This means that the ath_buf pointer squirreled away on the baw window array is suddenly wrong and was causing all kinds of console output. This updates the pointer in that particular BAW slot to the new ath_buf after ensuring that: * the new and old buffers have the same seqno; * the current slot pointer matches the old buffer pointer. This quietens the debugging output (again), restoring said debugging to only signify when a broken condition has occured. Sponsored by: Hobnob, Inc.
* Fix size of USB 3.0 descriptor field.hselasky2011-11-092-2/+3
| | | | MFC after: 3 days
* Flip on processing interrupt profile events for mips24k.adrian2011-11-091-1/+61
| | | | | | | | | | | This is a bit hackish and should be made more generic (ie, support more than two hard-coded performance counter+config register pairs) so it can be used for mips74k and other chips. All this does is process the initial interrupt event. It doesn't (yet) handle callgraph events, so even if you route the exception/interrupt to this routine and flip the bit on, it will hang and crash pmc unless you disable callgraph support when you enable a sample based PMC.
* Stopped process may legitimately have some threads sleeping and notkib2011-11-092-2/+4
| | | | | | | suspended, if the sleep is uninterruptible. Reported and tested by: pho MFC after: 1 week
* Lock the thread lock around block that retrieves td_wmesg. Otherwise,kib2011-11-091-0/+2
| | | | | | | procfs could see a thread with assigned td_wchan but still NULL td_wmesg. Reported and tested by: pho MFC after: 1 week
* Assert that _PRELE() is done for the held process.kib2011-11-091-0/+1
| | | | | Tested by: pho MFC after: 1 week
* Import gcc fix for -fstack-protector that produces segfaultingfabient2011-11-091-2/+4
| | | | | | | | | | binaries on arm/armel. Related gcc bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35965 PR: 161128 MFC after: 1 week
* Add myself.jpaetzel2011-11-091-0/+2
| | | | Approved by: kib (mentor)
* Revert some debugging printfs that crept into 223695.jhb2011-11-091-5/+1
|
* * Force the MAC to wakeup before we try resetting it, to ensureadrian2011-11-091-1/+17
| | | | | | | it actually _gets_ reset properly. * Add some more comments describing why things are done. Obtained from: Atheros
* Tidy up the AR9287 HAL a tiny bit - fix up AR9280 references.adrian2011-11-091-9/+2
|
* Fix a bug where the pmap_cpu_bootstrap() ap argument could be clobbered.nwhitehorn2011-11-092-2/+4
| | | | | | | | Luckily, it mostly wasn't important, so this didn't cause major problems. Also improve register reuse when setting up trap frames very slightly. Submitted by: Justin Hibbits <chmeeedalf at gmail dot com> MFC after: 5 days
* Restore the comment that I removed by accident.ed2011-11-091-0/+1
| | | | The comment still applies to this block of code.
* Simplify the code emitted by makeobjops.awk slightly.ed2011-11-093-8/+3
| | | | | | Just place the default kobj_method inside the kobjop_desc structure. There's no need to give these kobj_methods their own symbol. This shaves off 10 KB of a GENERIC kernel binary.
* Some minor corrections to a modem driver.hselasky2011-11-091-9/+6
| | | | | PR: usb/162307 MFC after: 3 days
* Use implementation independent inoNN_t scalars for on-disk UFS structuresgleb2011-11-092-11/+11
| | | | Approved by: mdf (mentor)
* Migrate the AR5416 ANI code to use the previously introduced methodadrian2011-11-091-12/+19
| | | | | | | | | to fetch the current channel busy statistics, rather than duplicating it here. This forms the (very crude) basis for doing basic channel surveying. Sponsored by: Hobnob, Inc.
* Disable OFDM weak signal detection by default. Leave this to beadrian2011-11-091-1/+1
| | | | | | | | | | | | | enabled if required by STA operation. This quietens a lot of OFDM errors seen in hostap mode, where there are no beacon RSSI levels to tune the dynamic range of the baseband. This may reduce reception range at the fringes, but does increase stability. Sponsored by: Hobnob, Inc.
* Use a restricted set of parameters when operating in hostap mode.adrian2011-11-091-0/+10
| | | | | | | | | | | The 5ghz hostap mode (where DFS is being done) requires ANI to be disabled or the radar detection parameters don't work as advertised (as they're based on signal strength level, and tweaking ANI affects the signal strangth, dynamic range and power increase the baseband is looking for in order to detect it as a "signal".) Obtained from: Linux, Atheros Sponsored by: Hobnob, Inc.
* Add logic to ANI to tweak the firstep parameter when in hostap mode.adrian2011-11-091-0/+25
| | | | | | | | This is normally done based on the beacon RSSI but this isn't available in hostap mode. Obtained from: Atheros Sponsored by: Hobnob, Inc.
* .. and add some ANI fixes missing from the last ANI commit.adrian2011-11-091-10/+8
| | | | | Obtained from: Atheros Sponsored by: Hobnob, Inc.
* Include some ANI fixes for the AR5416.adrian2011-11-091-27/+27
| | | | | | | | | | | | * If we fall through from an ANI command (eg because it's out of range, or it's disabled) then fall through to the next ANI command rather then being stuck there. * Fix some off-by-one comparisons, meaning the final level in some parameters were never tweaked. Obtained from: Atheros Sponsored by: Hobnob, Inc.
* Add a new HAL parameter which forces a full reset rather than warm reset.adrian2011-11-093-2/+13
| | | | | | | | This forces a full reset of the baseband/radio and seems needed to clear some issues (with Merlin at least) when the baseband gets confused in a very noisy environment. Sponsored by: Hobnob, Inc.
* Port over a new routine which grabs the percentage of time spent in TX ↵adrian2011-11-093-1/+60
| | | | | | | | | | | | frame, RX frame, RX clear, RX extension clear. This is useful for estimating channel business. The same routines should be written for AR5210->AR5212 where appopriate. Obtained from: Atheros
* Add in some more PCI/PCIe differentiation.adrian2011-11-092-6/+12
|
* Try to make it more obvious when users are using the PCI or PCIe versions ofadrian2011-11-092-5/+12
| | | | the 11n chips.
* Fix the compile to work when IEEE80211_DEBUG isn't defined.adrian2011-11-091-0/+2
| | | | Sponsored by: Hobnob, Inc.
* Tidy up command line processing:grog2011-11-094-42/+58
| | | | | | | | | | | | | | - Add ? option to optstring. - Sort options alphabetically. - Vertical space. Tidy up usage() function. Bring man page in sync with source. Ensure that debug code is only executed with the -d option. Submitted by: Christiane Yeardley
* sh: Remove undefined behaviour due to overflow in +/-/* in arithmetic.jilles2011-11-081-3/+3
| | | | With i386 base gcc and i386 base clang, arith_yacc.o remains unchanged.
* Welcome the initial patches for OSX bootcamp support!!!jpaetzel2011-11-083-5/+80
| | | | | | | | This should let you select the ada0p3 hybrid MBR/GPT partition, and do an installation to it. Approved by: kib (mentor) Obtained from: kris@pcbsd.org MFC after: 3 days
* Comment out TI_JUMBO_HDRSPLIT. TI_JUMBO_HDRSPLIT requires TI_SF_BUF_JUMBO.yongari2011-11-081-1/+1
|
* rc.d: Eliminate some unnecessary non-POSIX constructs:jilles2011-11-083-2/+3
| | | | | | * set - ... * empty braces * ^ in character class
* Fix the KTR option to compile by default - it was referencingadrian2011-11-083-0/+21
| | | | | | | | | | | | | | | | some unmerged interrupt status debugging code from my branch. * Add ah_intrstate[8] which will have the record of the last call to ath_hal_getintr(). * Wrap the KTR code behind ATH_KTR_INTR_DEBUG. * Add the HAL interrupt debugging behind AH_INTERRUPT_DEBUGGING. This is only done for the AR5416 and later NICs but it will be trivial to add to the earlier NICs if required. Neither are enabled by default, although to minimise HAL binary API differences, the ah_intrstate[] array is always compiled into the ath_hal struct.
* Introduce TX aggregation and software TX queue managementadrian2011-11-0811-355/+4114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for Atheros AR5416 and later wireless devices. This is a very large commit - the complete history can be found in the user/adrian/if_ath_tx branch. Legacy (ie, pre-AR5416) devices also use the per-software TXQ support and (in theory) can support non-aggregation ADDBA sessions. However, the net80211 stack doesn't currently support this. In summary: TX path: * queued frames normally go onto a per-TID, per-node queue * some special frames (eg ADDBA control frames) are thrown directly onto the relevant hardware queue so they can go out before any software queued frames are queued. * Add methods to create, suspend, resume and tear down an aggregation session. * Add in software retransmission of both normal and aggregate frames. * Add in completion handling of aggregate frames, including parsing the block ack bitmap provided by the hardware. * Write an aggregation function which can assemble frames into an aggregate based on the selected rate control and channel configuration. * The per-TID queues are locked based on their target hardware TX queue. This matches what ath9k/atheros does, and thus simplified porting over some of the aggregation logic. * When doing TX aggregation, stick the sequence number allocation in the TX path rather than net80211 TX path, and protect it by the TXQ lock. Rate control: * Delay rate control selection until the frame is about to be queued to the hardware, so retried frames can have their rate control choices changed. Frames with a static rate control selection have that applied before each TX, just to simplify the TX path (ie, not have "static" and "dynamic" rate control special cased.) * Teach ath_rate_sample about aggregates - both completion and errors. * Add an EWMA for tracking what the current "good" MCS rate is based on failure rates. Misc: * Introduce a bunch of dirty hacks and workarounds so TID mapping and net80211 frame inspection can be kept out of the net80211 layer. Because of the way this code works (and it's from Atheros and Linux ath9k), there is a consistent, 1:1 mapping between TID and AC. So we need to ensure that frames going to a specific TID will _always_ end up on the right AC, and vice versa, or the completion/locking will simply get very confused. I plan on addressing this mess in the future. Known issues: * There is no BAR frame transmission just yet. A whole lot of tidying up needs to occur before BAR frame TX can occur in the "correct" place - ie, once the TID TX queue has been drained. * Interface reset/purge/etc results in frames in the TX and RX queues being removed. This creates holes in the sequence numbers being assigned and the TX/RX AMPDU code (on either side) just hangs. * There's no filtered frame support at the present moment, so stations going into power saving mode will simply have a number of frames dropped - likely resulting in a traffic "hang". * Raw frame TX is going to just not function with 11n aggregation. Likely this needs to be modified to always override the sequence number if the frame is going into an aggregation session. However, general raw frame injection currently doesn't work in general in net80211, so let's just ignore this for now until this is sorted out. * HT protection is just not implemented and won't be until the above is sorted out. In addition, the AR5416 has issues RTS protecting large aggregates (anything >8k), so the work around needs to be ported and tested. Thus, this will be put on hold until the above work is complete. * The rate control module 'sample' is the only currently supported module; onoe/amrr haven't been tested and have likely bit rotted a little. I'll follow up with some commits to make them work again for non-11n rates, but they won't be updated to handle 11n and aggregation. If someone wishes to do so then they're welcome to send along patches. * .. and "sample" doesn't really do a good job of 11n TX. Specifically, the metrics used (packet TX time and failure/success rates) isn't as useful for 11n. It's likely that it should be extended to take into account the aggregate throughput possible and then choose a rate which maximises that. Ie, it may be acceptable for a higher MCS rate with a higher failure to be used if it gives a more acceptable throughput/latency then a lower MCS rate @ a lower error rate. Again, patches will be gratefully accepted. Because of this, ATH_ENABLE_11N is still not enabled by default. Sponsored by: Hobnob, Inc. Obtained from: Linux, Atheros
* Add support to the TX descriptor printing code to follow ath_bufadrian2011-11-081-19/+30
| | | | | | chains. This allows for debugging of aggregate frames. Sponsored by: Hobnob, Inc.
* Make sure TXEOL is set on default queues. Otherwise we don't get anadrian2011-11-081-0/+1
| | | | | | | interrupt on the completion of a TX queue and this can cause TX hangs / timeout. Sponsored by: Hobnob, Inc.
* Refactor out the TX buffer management and completion code inadrian2011-11-082-102/+236
| | | | | | | | | | | | | | | | | | preparation for TX aggregation. * Add in logic which calls ath_buf bf->bf_comp if it's set. This allows for AMPDU (and RIFS, and FF, if someone desires) code to handle completion - which includes freeing subframes, retransmitting subframes, etc. * Break out the buffer free, buffer busy/unbusy default completion handler code into separate functions. This allows bf_comp methods to free and unbusy each subframe ath_buf as required. * Break out the statistics update code into a separate function, just to clean up the TX completion path a little. Sponsored by: Hobnob, Inc.
* Change the descriptor logic to use bf_lastds to point to the lastadrian2011-11-082-8/+25
| | | | | | | | | | descriptor, rather than using the maths involving bf_desc[bf_nseg - 1]. When doing TX aggregation, the status will be updated in the -final- descriptor of the -final- subframe in an aggregate. Thus bf_lastds may point to the last descriptor in a completely different ath_buf. Sponsored by: Hobnob, Inc.
* Change ath_buf allocation to:adrian2011-11-082-0/+73
| | | | | | | | | | * Immediately return NULL if a buffer isn't available; * Track the "buffers not available" count; * Clear some fields used for tx aggregation; * Add ath_buf_clone() which clones the majority of buffer state. This is needed when retransmission of a "busy" buffer is required. Sponsored by: Hobnob, Inc.
* Break out the TX DMA stop code into a separate function.adrian2011-11-081-6/+23
| | | | Sponsored by: Hobnob, Inc.
* Add a 'vap' to ath_keyset().adrian2011-11-083-6/+23
| | | | | | | | | | Add some code (which is currently disabled) which modifies the group multicast key cache behaviour. I haven't yet figured out what the exact/correct behaviour is so I'm leaving it disabled. It's worth investigating and "correcting", especially for future work with mesh/ibss and encryption. Sponsored by: Hobnob, Inc.
* Some more various fixes, etc from my 11n branch.adrian2011-11-081-1/+36
| | | | | | | | | | | | | | | | | | | | | | | | | * When doing software TX queue handling and flush, it's possible that the deletion of a VAP (eg a STA shutdown) will queue a "STA Disassociate" frame whilst the interface is being deleted. The VAP is then deleted, and the frame ends up being queued to a node that is freed before it can be TX'ed. Things go awry at this point. There's no way at the present to avoid freeing the underlying node when the vap is being deleted. It's too late in the game. I suspect the real fix is to make sure the frame is software queued with no completion information somehow, so it doesn't link back to a node whose underlying VAP has been freed. For now, we'll just have to do this. * Add some comments showing what's going on. * Move an instance of the ATH_LOCK() around to protect the interrupt set. I'll worry about changing that to a PCU lock later on once the 11n code is in the tree. Sponsored by: Hobnob, Inc.
* Bumb date after r227317.trociny2011-11-081-1/+1
| | | | Reminded by: pluknet
OpenPOWER on IntegriCloud