linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christian Lamparter <chunkeey@googlemail.com>
To: "linux-wireless" <linux-wireless@vger.kernel.org>
Subject: [RFT 0/6] carl9170usb: replacement driver for ar9170usb
Date: Mon, 30 Aug 2010 22:41:07 +0200	[thread overview]
Message-ID: <201008302241.08030.chunkeey@googlemail.com> (raw)

Atheros merged support for their USB AR9170 2-stream 802.11n chipsets
into the Linux kernel on the v2.6.29 release through a staging driver
called Otus. The shortcomings for this driver was it required its own
custom supplicant and obviously the code quality was sub-par. Shortly
after that Johannes Berg put a lot of effort into rewriting the driver
for proper upstream inclusion. I simply had to take what was already
there, add a few finishing touches to address upstream considerations
and we got it merged on the 2.6.30 release under the ar9170usb name.
During this time a lot of good work went into stabilizing the driver
to replace the staging Otus driver from Atheros. The project had
ambitious hopes to completely supersede the original Atheros staging
driver: Otus.

But to achieve this all functionality, performance, stability and
quality must have been equally matched. In the end this proved quite
challenging even though Atheros was kind enough to provide detailed
documentations, hardware specifications and most importantly, they
actually released the firmware source code under GPLv2!

It took months to dig through all the code and during this time the
ar9170usb driver project lost most of its momentum and changes to
the driver where limited to simple USB IDs updates, API fix-ups and
serious crash fixes. Towards the beginning of 2010 a new shiny driver:
carl9170usb started brewing with the main goal of replacing the
existing driver and making use of only open firmware.

It has been 1 year, 5 months, 9 days since this merge of ar9170usb
upstream and I am very pleased to announce and submit the carl9170
driver upstream which actually ends up not only replacing but
superseding the staging Otus driver.

The carl9170 driver comes with:

	* Supports High Throughput/802.11n up to PHY speeds
	  of 300Mbits (~ RL performance of max. 100Mbit/s tcp,
	  udp goes to 130 and beyond)

	* Access-Point mode for legacy stations and a
	  few improvements for IBSS.

	* multi-rate retry support. In order to improve throughput
	  and better link stability.

	* fully-automatic recovery from a number of
	  previously fatal events.

	* an input-device for the WPS push button, which
	  is present on some devices on the market.

	* pseudo virtual interfaces
	  (useful for universal repeater mode, or multiple APs)

	* facilities for debugging, testing and data dumping
	  within the driver (DebugFS), or in an isolated
	  userspace environment (carlu).

	* AES Offload in single AP and single Station mode.

	* and a few small bits:
		* firmware images are protected against:
			- the use with the wrong driver and vice versa
			- random/non-malicious corruptions

		* configurable firmware build, thanks to Kconfig
		  and cmake.

Upstream wireless-testing.git patch:
http://www.kernel.org/pub/linux/kernel/people/chr/carl9170/drv/1.8.8.1/carl9170-driver-1.8.8.1.diff

Firmware GPLv2 binary:
http://www.kernel.org/pub/linux/kernel/people/chr/carl9170/fw/1.8.8.1/carl9170-1.fw

Firmware source code:

http://git.kernel.org/?p=linux/kernel/git/chr/carl9170fw.git

The firmware source code comes with support for building the
toolchain. Requirements for building everything:

  * make 2.8+
  * bison
  * flex
  * gperf
  * libUSB 1.0+
  * libSDL 1.2+

For more details please see:

http://wireless.kernel.org/en/users/Drivers/carl9170 
(in the coming days, it's too dark to start now :-/ )

Christian Lamparter (6):
  carl9170usb: mac80211 glue and command interface
  carl9170usb: Hardware register, descriptors and eeprom definitions
  carl9170usb: PHY/RF and MAC routines
  carl9170usb: 802.11 rx/tx processing and usb back-end
  carl9170usb: firmware parser and debugfs code
  carl9170usb: Makefile, Kconfig files and MAINTAINERS

 MAINTAINERS                                  |    1 +
 drivers/net/wireless/ath/Kconfig             |    1 +
 drivers/net/wireless/ath/Makefile            |    1 +
 drivers/net/wireless/ath/carl9170/Kconfig    |   37 +
 drivers/net/wireless/ath/carl9170/Makefile   |    4 +
 drivers/net/wireless/ath/carl9170/carl9170.h |  597 ++++++++
 drivers/net/wireless/ath/carl9170/cmd.c      |  208 +++
 drivers/net/wireless/ath/carl9170/cmd.h      |  157 +++
 drivers/net/wireless/ath/carl9170/debug.c    |  908 +++++++++++++
 drivers/net/wireless/ath/carl9170/debug.h    |  135 ++
 drivers/net/wireless/ath/carl9170/eeprom.h   |  216 +++
 drivers/net/wireless/ath/carl9170/fw.c       |  397 ++++++
 drivers/net/wireless/ath/carl9170/fwcmd.h    |  268 ++++
 drivers/net/wireless/ath/carl9170/fwdesc.h   |  235 ++++
 drivers/net/wireless/ath/carl9170/hw.h       |  736 ++++++++++
 drivers/net/wireless/ath/carl9170/led.c      |  190 +++
 drivers/net/wireless/ath/carl9170/mac.c      |  611 +++++++++
 drivers/net/wireless/ath/carl9170/main.c     | 1873 ++++++++++++++++++++++++++
 drivers/net/wireless/ath/carl9170/phy.c      | 1802 +++++++++++++++++++++++++
 drivers/net/wireless/ath/carl9170/phy.h      |  575 ++++++++
 drivers/net/wireless/ath/carl9170/rx.c       |  910 +++++++++++++
 drivers/net/wireless/ath/carl9170/tx.c       | 1370 +++++++++++++++++++
 drivers/net/wireless/ath/carl9170/usb.c      | 1143 ++++++++++++++++
 drivers/net/wireless/ath/carl9170/version.h  |    7 +
 drivers/net/wireless/ath/carl9170/wlan.h     |  412 ++++++
 25 files changed, 12794 insertions(+), 0 deletions(-)
 create mode 100644 drivers/net/wireless/ath/carl9170/Kconfig
 create mode 100644 drivers/net/wireless/ath/carl9170/Makefile
 create mode 100644 drivers/net/wireless/ath/carl9170/carl9170.h
 create mode 100644 drivers/net/wireless/ath/carl9170/cmd.c
 create mode 100644 drivers/net/wireless/ath/carl9170/cmd.h
 create mode 100644 drivers/net/wireless/ath/carl9170/debug.c
 create mode 100644 drivers/net/wireless/ath/carl9170/debug.h
 create mode 100644 drivers/net/wireless/ath/carl9170/eeprom.h
 create mode 100644 drivers/net/wireless/ath/carl9170/fw.c
 create mode 100644 drivers/net/wireless/ath/carl9170/fwcmd.h
 create mode 100644 drivers/net/wireless/ath/carl9170/fwdesc.h
 create mode 100644 drivers/net/wireless/ath/carl9170/hw.h
 create mode 100644 drivers/net/wireless/ath/carl9170/led.c
 create mode 100644 drivers/net/wireless/ath/carl9170/mac.c
 create mode 100644 drivers/net/wireless/ath/carl9170/main.c
 create mode 100644 drivers/net/wireless/ath/carl9170/phy.c
 create mode 100644 drivers/net/wireless/ath/carl9170/phy.h
 create mode 100644 drivers/net/wireless/ath/carl9170/rx.c
 create mode 100644 drivers/net/wireless/ath/carl9170/tx.c
 create mode 100644 drivers/net/wireless/ath/carl9170/usb.c
 create mode 100644 drivers/net/wireless/ath/carl9170/version.h
 create mode 100644 drivers/net/wireless/ath/carl9170/wlan.h

(Text adapted from Luis)

Regards,
	Chr

                 reply	other threads:[~2010-08-30 20:43 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201008302241.08030.chunkeey@googlemail.com \
    --to=chunkeey@googlemail.com \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).