#
95ee2897 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: two-line .h pattern Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/
|
#
9966c0f9 |
|
01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
ath: clean up empty lines in .c and .h files
|
#
1bae1560 |
|
28-May-2019 |
Adrian Chadd <adrian@FreeBSD.org> |
[ath_hal] Fix queue bits a bit Found by PVS Studio: duplicate assignment; add assignment of tqi_compBuf. Submitted by: <mizhka@gmail.com> Differential Revision: https://reviews.freebsd.org/D20431
|
#
6e778a7e |
|
08-Dec-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
SPDX: license IDs for some ISC-related files.
|
#
71083394 |
|
29-May-2017 |
Wojciech Macek <wma@FreeBSD.org> |
Increase timeout in Atheros HAL It turned out, that some models of the Atheros PCIe adapters (e.g. AR983x family) may fail to attach due to insufficient timeout value. Submitted by: Bartosz Szczepanek <bsz@semihalf.com> Obtained from: Semihalf Sponsored by: Stormshield Reviewed by: adrian Differential revision: https://reviews.freebsd.org/D10903
|
#
f46839b9 |
|
24-May-2017 |
Adrian Chadd <adrian@FreeBSD.org> |
[ath] [ath_hal] retire AH_SUPPORT_AR5416 changing anything. Yes, the memory bloat is large, but it's 2017 and I'll fix it later by making it runtime configurable / per-chip configurable if I ever need to.
|
#
41059135 |
|
24-May-2017 |
Adrian Chadd <adrian@FreeBSD.org> |
[ath] [ath_hal] (etc, etc) - begin the task of re-modularising the HAL. In the deep past, when this code compiled as a binary module, ath_hal built as a module. This allowed custom, smaller HAL modules to be built. This was especially beneficial for small embedded platforms where you didn't require /everything/ just to run. However, sometime around the HAL opening fanfare, the HAL landed here as one big driver+HAL thing, and a lot of the (dirty) infrastructure (ie, #ifdef AH_SUPPORT_XXX) to build specific subsets of the HAL went away. This was retained in sys/conf/files as "ath_hal_XXX" but it wasn't really floated up to the modules themselves. I'm now in a position where for the reaaaaaly embedded boards (both the really old and the last couple generation of QCA MIPS boards) having a cut down HAL module and driver loaded at runtime is /actually/ beneficial. This reduces the kernel size down by quite a bit. The MIPS modules look like this: adrian@gertrude:~/work/freebsd/head-embedded/src % ls -l ../root/mips_ap/boot/kernel.CARAMBOLA2/ath*ko -r-xr-xr-x 1 adrian adrian 5076 May 23 23:45 ../root/mips_ap/boot/kernel.CARAMBOLA2/ath_dfs.ko -r-xr-xr-x 1 adrian adrian 100588 May 23 23:45 ../root/mips_ap/boot/kernel.CARAMBOLA2/ath_hal.ko -r-xr-xr-x 1 adrian adrian 627324 May 23 23:45 ../root/mips_ap/boot/kernel.CARAMBOLA2/ath_hal_ar9300.ko -r-xr-xr-x 1 adrian adrian 314588 May 23 23:45 ../root/mips_ap/boot/kernel.CARAMBOLA2/ath_main.ko -r-xr-xr-x 1 adrian adrian 23472 May 23 23:45 ../root/mips_ap/boot/kernel.CARAMBOLA2/ath_rate.ko And the x86 versions, like this: root@gertrude:/home/adrian # ls -l /boot/kernel/ath*ko -r-xr-xr-x 1 root wheel 36632 May 24 18:32 /boot/kernel/ath_dfs.ko -r-xr-xr-x 1 root wheel 134440 May 24 18:32 /boot/kernel/ath_hal.ko -r-xr-xr-x 1 root wheel 82320 May 24 18:32 /boot/kernel/ath_hal_ar5210.ko -r-xr-xr-x 1 root wheel 104976 May 24 18:32 /boot/kernel/ath_hal_ar5211.ko -r-xr-xr-x 1 root wheel 236144 May 24 18:32 /boot/kernel/ath_hal_ar5212.ko -r-xr-xr-x 1 root wheel 336104 May 24 18:32 /boot/kernel/ath_hal_ar5416.ko -r-xr-xr-x 1 root wheel 598336 May 24 18:32 /boot/kernel/ath_hal_ar9300.ko -r-xr-xr-x 1 root wheel 406144 May 24 18:32 /boot/kernel/ath_main.ko -r-xr-xr-x 1 root wheel 55352 May 24 18:32 /boot/kernel/ath_rate.ko .. so you can see, not building the whole HAL can save quite a bit. For example, if you don't need AR9300 support, you can actually avoid wasting half a megabyte of RAM. On embedded routers this is quite a big deal. The AR9300 HAL can be later further shrunk because, hilariously, it indeed supports AH_SUPPORT_<xxx> for optionally adding chipset support. (I'll chase that down later as it's quite a big savings if you're only building for a single embedded target.) So: * Create a very hackish way to load/unload HAL modules * Create module metadata for each HAL subtype - ah_osdep_arXXXX.c * Create module metadata for ath_rate and ath_dfs (bluetooth is currently just built as part of it) * .. yes, this means we could actually build multiple rate control modules and pick one at load time, but I'd rather just glue this into net80211's rate control code. Oh well, baby steps. * Main driver is now "ath_main" * Create an "if_ath" module that does what the ye olde one did - load PCI glue, main driver, HAL and all child modules. In this way, if you have "if_ath_load=YES" in /boot/modules.conf it will load everything the old way and stuff should still work. * For module autoloading purposes, I actually /did/ fix up the name of the modules in if_ath_pci and if_ath_ahb. If you want to selectively load things (eg on ye cheape ARM/MIPS platforms where RAM is at a premium) you should: * load ath_hal * load the chip modules in question * load ath_rate, ath_dfs * load ath_main * load if_ath_pci and/or if_ath_ahb depending upon your particular bus bind type - this is where probe/attach is done. TODO: * AR5312 module and associated pieces - yes, we have the SoC side support now so the wifi support would be good to "round things out"; * Just nuke AH_SUPPORT_AR5416 for now and always bloat the packet structures; this'll simplify other things. * Should add a simple refcnt thing to the HAL RF/chip modules so you can't unload them whilst you're using them. * Manpage updates, UPDATING if appropriate, etc.
|
#
2bc158cf |
|
02-Feb-2017 |
Adrian Chadd <adrian@FreeBSD.org> |
[ath_hal] prepare for CAC quiet time. To support DFS, the NIC needs to be very quiet during this time. No transmissions including ACKs are allowed. This is just the initial HAL glue.
|
#
3557b26a |
|
24-Jan-2017 |
Adrian Chadd <adrian@FreeBSD.org> |
[ath_hal] note that the CCA configuration setting may be chip-dependent. I bet it isn't, but who knows - this is making assumptions about the layout of AR_DIAG.
|
#
90d3a30a |
|
08-Sep-2016 |
Adrian Chadd <adrian@FreeBSD.org> |
[ath_hal] fixes for finer grain timestamping, some 11n macros * change the HT_RC_2_MCS to do MCS0..23 * Use it when looking up the ht20/ht40 array for bits-per-symbol * add a clk_to_psec (picoseconds) routine, so we can get sub-microsecond accuracy for the math * .. and make that + clk_to_usec public, so higher layer code that is returning clocks (eg the ANI diag routines, some upcoming locationing experiments) can be converted to microseconds. Whilst here, add a comment in ar5416 so i or someone else can revisit the latency values.
|
#
7ff1939d |
|
15-Jul-2016 |
Adrian Chadd <adrian@FreeBSD.org> |
[ath] [ath_hal] break out the duration calculation to optionally include SIFS. The pre-11n calculations include SIFS, but the 11n ones don't. The reason is that (mostly) the 11n hardware is doing the SIFS calculation for us but the pre-11n hardware isn't. This means that we're over-shooting the times in the duration field for non-11n frames on 11n hardware, which is OK, if not a little inefficient. Now, this is all fine for what the hardware needs for doing duration math for ACK, RTS/CTS, frame length, etc, but it isn't useful for doing PHY duration calculations. Ie, given a frame to TX and its timestamp, what would the end of the actual transmission time be; and similar for an RX timestamp and figuring out its original length. So, this adds a new field to the duration routines which requests SIFS or no SIFS to be included. All the callers currently will call it requesting SIFS, so this /should/ be a glorious no-op. I'm however planning some future work around airtime fairness and positioning which requires these routines to have SIFS be optional. Notably though, the 11n version doesn't do any SIFS addition at the moment. I'll go and tweak and verify all of the packet durations before I go and flip that part on. Tested: * AR9330, STA mode * AR9330, AP mode * AR9380, STA mode
|
#
51558243 |
|
08-Jul-2016 |
Adrian Chadd <adrian@FreeBSD.org> |
[ath_hal] retire a "long RX desc" flag, store/use the TX/RX timestamp length. * the code already stored the length of the RX desc, which I never used. So, use that and retire the new flag I introduced a while ago. * Introduce a TX timestamp length field and capability.
|
#
f6b6084b |
|
02-May-2016 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
dev/ath: minor spelling fixes in comments. No functional change. Reviewed by: adrian
|
#
b2585567 |
|
28-Feb-2016 |
Adrian Chadd <adrian@FreeBSD.org> |
Fix up the ath(4) device names for QCA chipsets. Submitted by: Tobias Kortkamp <t@tobik.me>
|
#
ff066b54 |
|
29-Nov-2015 |
Adrian Chadd <adrian@FreeBSD.org> |
fix ht/40 configuration for ar9331 (hornet). The synth programming here requires the real centre frequency, which for HT20 channels is the normal channel, but HT40 is /not/ the primary channel. Everything else was using 'freq', which is the correct centre frequency, but the hornet config was using 'ichan' to do the lookup which was also the primary channel. So, modify the HAL call that does the mapping to take a frequency in MHz and return the channel number. Tested: * Carambola 2, AR9331, tested both HT/20 and HT/40 operation.
|
#
2c9b30a9 |
|
27-Nov-2015 |
Adrian Chadd <adrian@FreeBSD.org> |
[ath_hal] use the correct revision information for QCA953x. This probe/attaches correctly in my local branch and now displays a useful message: ath0: <Qualcomm Atheros QCA953x> at mem 0x18100000-0x1811ffff irq 0 on nexus0 ... ath0: AR9530 mac 1280.0 RF5110 phy 0.0
|
#
70aca315 |
|
27-Nov-2015 |
Adrian Chadd <adrian@FreeBSD.org> |
* Add device string for QCA955x (scorpion); * Add device ID and device string for QCA953x (honeybee).
|
#
b0602bec |
|
29-Mar-2015 |
Adrian Chadd <adrian@FreeBSD.org> |
Move the HAL channel survey support out to be in the top-level HAL, rathe than private in each HAL module. Whilst here, modify ath_hal_private to always have the per-channel noisefloor stats, rather than conditionally. This just makes life easier in general (no strange ABI differences between different HAL compile options.) Add a couple of methods (clear/reset, add) rather than using hand-rolled versions of things.
|
#
9389d5a9 |
|
29-Sep-2014 |
Adrian Chadd <adrian@FreeBSD.org> |
Add initial support for the AR9485 CUS198 / CUS230 variants. These variants have a few differences from the default AR9485 NIC, namely: * a non-default antenna switch config; * slightly different RX gain table setup; * an external XLNA hooked up to a GPIO pin; * (and not yet done) RSSI threshold differences when doing slow diversity. To make this possible: * Add the PCI device list from Linux ath9k, complete with vendor and sub-vendor IDs for various things to be enabled; * .. and until FreeBSD learns about a PCI device list like this, write a search function inspired by the USB device enumeration code; * add HAL_OPS_CONFIG to the HAL attach methods; the HAL can use this to initialise its local driver parameters upon attach; * copy these parameters over in the AR9300 HAL; * don't default to override the antenna switch - only do it for the chips that require it; * I brought over ar9300_attenuation_apply() from ath9k which is cleaner and easier to read for this particular NIC. This is a work in progress. I'm worried that there's some post-AR9380 NIC out there which doesn't work without the antenna override set as I currently haven't implemented bluetooth coexistence for the AR9380 and later HAL. But I'd rather have this code in the tree and fix it up before 11.0-RELEASE happens versus having a set of newer NICs in laptops be effectively RX deaf. Tested: * AR9380 (STA) * AR9485 CUS198 (STA) Obtained from: Qualcomm Atheros, Linux ath9k
|
#
fad86101 |
|
09-Aug-2014 |
Adrian Chadd <adrian@FreeBSD.org> |
Bump the HAL_REGRANGE fields from 16 bit to 32 bit. The AR9380 and later chips have a 128KiB register window, so the register read diag api needs changing. The tools are about to be updated as well. No, they're not backwards compatible.
|
#
dd7b232e |
|
27-Apr-2014 |
Adrian Chadd <adrian@FreeBSD.org> |
* Add a new capability which returns whether the hardware supports the MYBEACON RX filter (only receive beacons which match the BSSID) or all beacons on the current channel. * Add the relevant RX filter entry for MYBEACON. Tested: * AR5416, STA * AR9285, STA TODO: * once the code is in -HEAD, just make sure that the code which uses it correctly sets BEACON for pre-AR5416 chips. Obtained from: QCA, Linux ath9k
|
#
03f26656 |
|
25-Jun-2013 |
Adrian Chadd <adrian@FreeBSD.org> |
Add a HAL local routine to map the 2GHz channel frequency to an IEEE channel. There's some HAL code in the AR9300 HAL that requires a back-mapping and using the net80211 code isn't appropriate here.
|
#
d98a3d69 |
|
04-Jun-2013 |
Adrian Chadd <adrian@FreeBSD.org> |
Add a new capability flag to announce that the chip implements LNA mixing for the RX path. This is different to the div comb HAL flag, that says it actually can use this for RX diversity (the "slow" diversity path implemented but disabled in the AR9285 HAL code.) Tested: * AR9285, STA operation
|
#
bc1af557 |
|
03-Jun-2013 |
Adrian Chadd <adrian@FreeBSD.org> |
Add the combined (mixed) diversity support capability bit for the AR9285/AR9485.
|
#
5b66d8a5 |
|
20-May-2013 |
Adrian Chadd <adrian@FreeBSD.org> |
Make the HT rate duration calculation work for MCS rates > 15.
|
#
2f544eed |
|
01-May-2013 |
Adrian Chadd <adrian@FreeBSD.org> |
Add device identification and probe/attach support for the QCA9565. The QCA9565 is a 1x1 2.4GHz 11n chip with integrated on-chip bluetooth. The AR9300 HAL already has support for this chip; it just wasn't included in the probe/attach path. Tested: * This commit brought to you over a QCA9565 wifi connection from FreeBSD. * .. ie, basic STA, pings, no iperf or antenna diversity checking just yet.
|
#
6606ba81 |
|
26-Feb-2013 |
Adrian Chadd <adrian@FreeBSD.org> |
Add in the STBC TX/RX capability support into the HAL and driver. The HAL already included the STBC fields; it just needed to be exposed to the driver and net80211 stack. This should allow single-stream STBC TX and RX to be negotiated; however the driver and rate control code currently don't do anything with it.
|
#
29dbc483 |
|
29-Dec-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Add the initial HAL glue for the spectral analysis support. * Finish adding the HAL capability to announce whether a NIC supports spectral scan or not; * Add spectral scan methods to the HAL structure; * Add HAL_SPECTRAL_PARAM for configuration of the spectral scan logic. The capability ID and HAL_SPECTRAL_PARAM struct are from Qualcomm Atheros.
|
#
d94f2d7f |
|
17-Sep-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Rename AH_MIMO_MAX_CHAINS to AH_MAX_CHAINS, for compatibility with internal atheros HAL code.
|
#
1690edb3 |
|
13-Sep-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Compensate for half/quarter rate differences in MAC clock speed. This fixes the incorrect slot (and likely ACK/RTS timeout) values which I see when enabling half/quarter rate support on the AR9280. The resulting math matches the expected calculated default values.
|
#
85ca341a |
|
23-Aug-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Add ath_hal_get_curmode() - this is used by the Osprey HAL. Obtained from: Qualcomm Atheros
|
#
b042e6a3 |
|
23-Aug-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Add the MFP capability to ath_hal_getcapability(). Obtained from: Qualcomm Atheros
|
#
a3611b59 |
|
22-Aug-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Add AR9380 devid HAL definitions and probe/attach strings. Obtained from: Device IDs are from Qualcomm Atheros
|
#
168c1a30 |
|
22-Aug-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Add chipset names.
|
#
5000c38d |
|
15-Aug-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Remove this comment, it's no longer relevant.
|
#
6c03eb4c |
|
15-Aug-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Extend the duration calculations to work with three and four stream rates.
|
#
ee3e4df9 |
|
28-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Flesh out the multi-rate retry capability. The existing method for testing for MRR is to call the "SetupXTXDesc" HAL method and see if it returns AH_TRUE or AH_FALSE. This capability explicitly lists what number of multi-rate attempts are possible. "1" means "one rate attempt supported".
|
#
f8649041 |
|
09-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Reorder these so they match the capability enum order.
|
#
0a6b6951 |
|
09-Jul-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Introduce the EDMA related HAL capabilities. Whilst here, fix a typo in a previous commit. Obtained from: Qualcomm Atheros
|
#
a86e181b |
|
15-Jan-2012 |
Adrian Chadd <adrian@FreeBSD.org> |
Break out the "memory" EEPROM data read method from being AR9130 specific to being more generic. Other embedded SoCs also throw the configuration/PCI register info into flash. For now I'm just hard-coding the AR9280 option (for on-board AR9220's on AP94 and commercial designs (eg D-Link DIR-825.)) TODO: * Figure out how to support it for all 11n SoC NICs by doing it in ar5416InitState(); * Don't hard-code the EEPROM size - add another field which is set by the relevant chip initialisation code. * 'owl_eep_start_loc' may need to be overridden in some cases to 0x0. I need to do some further digging.
|
#
ddbe3036 |
|
09-Nov-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Introduce a work-around for issues with the AR5416 based MAC on SMP devices. The AR5416 MAC (which shows up in the AR5008, AR9001, AR9002 devices) has issues with PCI transactions on SMP machines. This work-around enforces that register access is serialised through a (global for now) spinlock. This should stop the hangs people have seen with the AR5416 PCI devices on SMP hosts. Obtained by: Linux, Atheros
|
#
5b77f8e9 |
|
08-Nov-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Try to make it more obvious when users are using the PCI or PCIe versions of the 11n chips.
|
#
46614948 |
|
17-Oct-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Implement the first part of the BB read workaround. The AR5008/AR9001 series NICs have a bug where BB register reads will occasionally be corrupted. This could cause issues with things such as ANI, which adjust operational parameters based on the BB radio register reads. This was introduced in the AR5008 chip and fixed with the first released AR9002 series NIC (AR9280v2.) A followup commit will implement the acutal WAR when reading BB registers. I'm still not sure how I'll implement it - whether it should be done in the osdep layer, or whether it should just live in the AR5416 HAL. Either way, they can use this capability bit to determine whether to implement the WAR or not. Thankyou to various sources inside Atheros who have helped me track down what this particular issue is. Obtained from: Atheros
|
#
fc4de9b7 |
|
07-Sep-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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)
|
#
8db87e40 |
|
08-Aug-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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)
|
#
2cb5233b |
|
01-Jun-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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
|
#
90759dbe |
|
26-May-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Add the AR9287 chip identification string.
|
#
cd50bf42 |
|
21-May-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
The Merlin analog register bank is from 0x7800 -> 0x78fc; fix the code to reflect this.
|
#
26e8415d |
|
07-May-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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.
|
#
9f25ad52 |
|
27-Apr-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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.
|
#
041df708 |
|
25-Apr-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Wrap the MIMO stuff in #ifdef AH_SUPPORT_AR5416, as the channel state doesn't have MIMO stuff in it by default.
|
#
7ab2ab91 |
|
08-Apr-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Fix the completely wrong types I used in the previous commit.
|
#
82c30dc4 |
|
08-Apr-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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.
|
#
8a2a6bee |
|
04-Apr-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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.
|
#
97efbf40 |
|
03-Apr-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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.
|
#
a0e10360 |
|
26-Mar-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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.
|
#
fecc2a5e |
|
21-Mar-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Remove the merlin delay workaround here, it isn't appropriate for the analog bank writes as Merlin never does them.
|
#
6ff1b2bd |
|
12-Mar-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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.
|
#
4a02016d |
|
21-Feb-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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.
|
#
191470d3 |
|
09-Feb-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Expose the 4k transaction workaround hooks to the driver, but don't (yet) fix the descriptor allocation.
|
#
94d748d2 |
|
31-Jan-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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
|
#
d054f3a8 |
|
28-Jan-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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
|
#
51fcc835 |
|
27-Jan-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Make a note to re-check whether that particular check is needed.
|
#
6ef699a0 |
|
26-Jan-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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
|
#
88117a53 |
|
20-Jan-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
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.
|
#
7fbdd9a0 |
|
20-Jan-2011 |
Adrian Chadd <adrian@FreeBSD.org> |
Add another HAL function which waits for a register for a configurable amount. This will be used by some future code.
|
#
a7d5f7eb |
|
19-Oct-2010 |
Jamie Gritton <jamie@FreeBSD.org> |
A new jail(8) with a configuration file, to replace the work currently done by /etc/rc.d/jail.
|
#
67784314 |
|
08-Sep-2009 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Revert previous commit and add myself to the list of people who should know better than to commit with a cat in the area.
|
#
b34421bf |
|
08-Sep-2009 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add necessary include.
|
#
3c3e9d33 |
|
27-Jun-2009 |
Sam Leffler <sam@FreeBSD.org> |
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)
|
#
683f3134 |
|
19-May-2009 |
Sam Leffler <sam@FreeBSD.org> |
add HAL_CAP_INTRMASK to return the set of interrupts supported by the device
|
#
19ea87c4 |
|
13-Apr-2009 |
Sam Leffler <sam@FreeBSD.org> |
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
|
#
d9bde686 |
|
11-Mar-2009 |
Sam Leffler <sam@FreeBSD.org> |
add asserts
|
#
498657cf |
|
23-Feb-2009 |
Sam Leffler <sam@FreeBSD.org> |
print mac+rf part names; drop the printing 2ghz rf stuff (might come back)
|
#
9731c399 |
|
20-Feb-2009 |
Sam Leffler <sam@FreeBSD.org> |
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>
|
#
17e45e19 |
|
18-Feb-2009 |
Sam Leffler <sam@FreeBSD.org> |
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.
|
#
1a15e29a |
|
18-Feb-2009 |
Sam Leffler <sam@FreeBSD.org> |
add HAL_DIAG_SETREGS to write registers via the diag api
|
#
59efa8b5 |
|
28-Jan-2009 |
Sam Leffler <sam@FreeBSD.org> |
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
|
#
aed75e9d |
|
12-Dec-2008 |
Sam Leffler <sam@FreeBSD.org> |
add const Obtained from: netbsd
|