adrian f898f86360 First cut at attempting to buffer frames until we see a beacon.
The iwn(4) firmware forgets most of its channel state after an RXON
command.  This means that any beacons its seen on passive 5GHz channels
are forgotten upon an association/authorisation request.
This unfortuantely means that 5GHz association almost always fails -
the assoc and/or auth frames are dropped with a status of "passive
channel, haven't seen a beacon yet." (0x90.)

So:

* add an xmit queue, global, to buffer frames
* modify the xmit path to use the mbuf tag from net80211
  to specify raw frame details
* buffer xmit frames from both raw and non-raw paths
* if a beacon is seen in the RX path, schedule a taskqueue to
  send said frames and un-buffer things.
* flush frames during state change back to INIT, or NIC
  down/up/detach.

This isn't the final shape I'd like this to be in but it certainly
is better than 5GHz "not working at all".

Tested:

* Intel 5100, STA mode (before spilling coffee)
* Intel 5300, STA mode (after spilling coffee)

Story:

* This has been bugging me at work for months, which I just
  worked around by throwing an ath(4) into my Lenovo T400 cardbus
  slot.

* Our ops director discovered indeed FreeBSD runs well on the
  Lenovo T420p, except for that pesky 5GHz thing.  So now developers
  also can have a T420p running FreeBSD to do work with.
  Their #1 feedback to me - "boy it'd be nice if 5GHz wifi worked."

* .. then, I was at NANOG but stuck with 5GHz only wifi and no ath(4)
  NIC to put in a laptop - and I snapped.

Thus, the reason this is actually work related.

MFC after:	2 weeks
Sponsored by:	Norse Corp, Inc.
2015-06-19 01:44:17 +00:00
..
2015-01-23 15:14:30 +00:00
2015-01-30 01:13:07 +00:00
2015-02-24 01:00:46 +00:00
2015-03-08 19:55:46 +00:00
2015-01-23 15:14:30 +00:00
2015-06-02 22:45:28 +00:00
2014-09-28 07:40:26 +00:00
2015-04-29 20:08:03 +00:00
2014-10-10 14:17:42 +00:00
2014-10-11 19:36:59 +00:00
2015-03-23 19:47:52 +00:00
2015-04-22 14:38:58 +00:00
2014-12-03 00:47:05 +00:00
2015-06-12 13:54:25 +00:00
2014-11-18 21:58:57 +00:00
2014-09-19 03:55:19 +00:00
2015-03-23 19:47:52 +00:00
2014-11-21 21:34:19 +00:00
2015-06-18 10:33:04 +00:00
2014-11-20 20:09:18 +00:00