Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Dec 2016 17:32:48 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        "freebsd-wireless@freebsd.org" <freebsd-wireless@freebsd.org>
Subject:   alpha testing - ath10k driver
Message-ID:  <CAJ-Vmoni9DRhZNg8PsR-=aMuNxchFSW9wHMvXFygoyxuHhYCjA@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
hiya,

I'm finally at the point where I'm happy to share my driver progress
with people.

I've been working on an ath10k port since october last year. there's
.. a lot of stuff to port, and quite a bit of the ath10k functionality
required net80211 changes. It's been a long trip but I'm happy to say
that it's actually mostly working for me.

There are a lot of sharp edges - there's no firmware restart support
yet, there are lots of busdma things that need fixing, and the TX
performance isn't completely up to scratch - but if you have the
hardware and you're interested in trying it out, you're more than
welcome to.

The driver is at https://github.com/erikarn/athp/ .

There are no instructions yet on including it in a tree and building
it - I suggest reading the build_module script to point it at the
right subdirectories so you can run build_modules. It's up to you to
then install the modules in /boot/modules/.

What does work:

* QCA9880 (peregrine) v2 support
* STA and hostap mode
* open, CCMP, TKIP, WPA, WPA2
* monitor mode (RX)
* 11abgn mode

What half works:

* WEP half works in STA mode. You have to re-plumb the keys once the
VAP is up as I haven't yet added the net80211 support to do what's
required to make things fully work
* TX path isn't optimal - lots of stupid locking abound and limits throughput
* There are lock ordering and busdma locking issues that will log
complains in -HEAD. I'll eventually fix those.
* hostap mode frames need buffering before the node creation completes
- so the first association attempt from a station always fails.

What doesn't work (yet):

* the driver notionally supports QCA99x0 (beeliner) and QCA6174
(rome), but I haven't yet fixed things up to support these
* (I have hardware, so I will likely fix things up for these two NICs.
Importantly beeliner is the first 4x4 NIC freebsd will support)
* IBSS
* 11s mesh
* monitor mode injection
* firmware restart / suspend/resume - important for when the firmware crashes
* more than one VAP - no multi-BSS support just yet
* regulatory support defaults to "obey net80211"; I haven't yet
populated a map of EEPROM codes to net80211 country codes.

What requires net80211 support (and is the reason I'm porting this driver):

* No 11ac support yet - that's coming
* No p2p support - that's coming
* No TDLS support - that's coming

Known firmware issues:

* If you run an 11abg STA (no 11n) then the firmware may/will panic.
It's a bug in the peregrine v2 firmware. The 10.1 firmware from Ben
Greear works fine (that's installed as firmware-2.bin.)
* 11n (2g / 5g) STA works fine for the above

If you're interested in playing with it then please give it a go and
report back on the list. I'll post some more updates as I get further
through the TODO list.

Also note - the driver was forked from October 2015. New NICs have
shown up since then. There are some later chipsets that I'd like to
support, however at some point this year they changed the way the TX
side works and that will require quite a bit of net80211 surgery. I'll
likely apply patches up until this branch point just to minimise (as
far as I can) upstream delta, and then I'll stop until net80211 gets
updated.




-adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmoni9DRhZNg8PsR-=aMuNxchFSW9wHMvXFygoyxuHhYCjA>