Commit Graph

112 Commits

Author SHA1 Message Date
bschmidt
0d22f0d915 The firmware of 4965 series adapters seems to die while trying to send
probe requests at 1Mbps while being associated on a 5GHz channel. Sending
those at 6Mbps does work, so use that instead during a background scan.
This workaround allows us to re-enable background scan support for the
4965 adapters.

Also, just enabling one antenna on 5GHz results in better reception of
beacons:
test            00:26:5a:c6:14:1a   40   54M -71:-95  200 E    WME HTCAP ATH
vs
test            00:26:5a:c6:14:1a   40   54M -92:-95  200 E    WME HTCAP ATH
Due to roam:rssi thresholds set to 7 by default it might have been
impossible to associate to that network. While here use
IEEE80211_IS_CHAN_5GHZ() to determine the band.
2011-06-04 11:43:09 +00:00
bschmidt
aafd4acbe2 Add module version to iwi/ipw/wpi and iwn.
The version is used to check if a module is already preset, not setting
it results in:

can't re-use a leaf (ipw)!
module_register: module pci/ipw already exists!
Module pci/ipw failed to register: 17

while trying to load the module due to an entry in loader.conf. With this
commit we get the expected:

module ipw already present!

Reported by:	Dru Lavigne, bz
Tested by:	bz
MFC after:	1 week
2011-05-31 19:08:25 +00:00
bschmidt
a58fc6f0fd Only update the scheduler's byte count table for aggregation queues.
The other queues, especially the command queue, uses the FIFO mode
which doesn't require the byte count table because queued entries are
processed in order.

Pointed out by:	Lucius Windschuh <lwindschuh at googlemail dot com>
2011-05-15 08:09:36 +00:00
bschmidt
fae1db6c96 Enable 11n (sans HT40) support. 2011-05-08 12:23:01 +00:00
bschmidt
03c359efa6 Notify firmware about various HT parameters once associated. 2011-05-08 12:11:20 +00:00
bschmidt
174adce103 Add support for TX packet aggregation. 2011-05-08 12:06:12 +00:00
bschmidt
0d4f015824 Add support for RX packet aggregation. 2011-05-08 11:58:23 +00:00
bschmidt
d5baa66cc1 Add support for transmitting frames at MCS rates. 2011-05-08 11:54:38 +00:00
bschmidt
8cc008f8dd Prepare for transmitting frames at MCS rates:
- instead of calling iwn_plcp_signal() for every frame, map the expected
  value directly within wn->ridx
- concat plcp, rflags and xrflags, there is no clean byte boundary within
  the flags, for example the antenna setting uses bit 6, 7 and 8
- there is still need for a custom rate to plcp mapping, as those expected
  by the hardware are not conform to the std
2011-05-08 11:49:50 +00:00
bschmidt
141d7e265f Read chainmask information before announcing it. 2011-05-08 11:05:03 +00:00
bschmidt
641edf4468 Add HT capabilities to probe requests. 2011-05-08 11:03:16 +00:00
bschmidt
e4f441b16c Disable background scan support for 4965 adapters.
On legacy channels every once in a while the firmware throws a SYSASSERT
on line 208. On HT channels though this does always happen and I'm not
aware of any workaround currently.
2011-05-08 11:01:53 +00:00
bschmidt
b442b21ba0 RX aggregation is slightly different then the legacy path, we will only
receive one RX_PHY for each aggregate and not one RX_PHY per frame.
2011-05-08 10:57:44 +00:00
bschmidt
84a991c0b4 Allocate all TX rings, those will be use for TX packet aggregation. 2011-05-08 10:54:50 +00:00
bschmidt
9332775363 Use the enhanced TX power information availabe on newer EEPROMs. 2011-05-08 10:35:16 +00:00
bschmidt
21e2e4c106 Hook HT channel setup. 2011-05-08 10:31:22 +00:00
bschmidt
8a48a077f7 The 6000 series adapters have a slightly different offset for band 6,
2GHz HT40 channels.
2011-05-08 10:21:42 +00:00
bschmidt
938615cca5 Re-add 2 device IDs which got lost.
Pointed out by:	benjsc
2011-05-08 10:19:29 +00:00
bschmidt
94b4783acd Now that all bits are in for 1030/6230 adapters enable those.
While here pull the adapter names from the Linux driver and sort
the list by ID.
2011-04-20 17:49:05 +00:00
bschmidt
51f1120c73 The 6000 series gen2 adapters have 2 firmware images, one with
advanced btcoex support and one without.
2011-04-20 17:43:20 +00:00
bschmidt
0ba66a6c39 Add basic support for advanced bluetooth coexistence required
for 6005 gen2b (1030/6030) adapters.
2011-04-20 16:59:27 +00:00
bschmidt
edb0bf8d55 Enable DC calibration for all 6000 series devices, except those
with an internal PA.
Override the chainmask also for the 6050.
2011-04-19 19:51:35 +00:00
bschmidt
6128b7ccd7 Pull some features out of the firmware:
- If a ENH_SENS TLV section exit the firmware is capable of doing
  enhanced sensitivity calibration.
- Newer devices/firmwares have more calibration commands therefore
  hardcoding the noise gain/reset commands no longer works. It is
  supposed to use the next index after the newest calibration type
  support. Read the command index of the TLV section if available.
2011-04-19 19:47:41 +00:00
bschmidt
d47945ce8b Add some new features:
- 6000 series devices need enhanced sensitivity calibration.
- 6000 series devices need a different setting for the shadow reg.
- set the IWN_FLAG_HAS_11N bit if the EEPROM says the device has 11n
  support.

Obtained from:	OpenBSD
2011-04-16 14:56:13 +00:00
bschmidt
5f1e6f7da3 Bring over the HAL/OPS changes, instead of two const structs it is now
slightly more dynamic.

Obtained from:	OpenBSD
2011-04-16 14:51:46 +00:00
bschmidt
13b495cd85 Read RX/TX chainmasks directly of the EEPROM. Some chips are known to
have the wrong/broken information stored, keep the hardcoded values for
those.

Obtained from:	OpenBSD
2011-04-16 14:49:29 +00:00
bschmidt
688aa54089 Just a whitespace sync, some more style(9) conform then others. 2011-04-16 14:40:42 +00:00
bschmidt
28acd24a60 Sync comments with OpenBSD. 2011-04-16 14:38:57 +00:00
bschmidt
0e01d92c6f Sync debug and error messages with OpenBSD. 2011-04-16 14:38:01 +00:00
bschmidt
414ffc4eda Shuffle code around a bit. Mostly to group functional connected things,
others to get the same order as the OpenBSD code.
2011-04-16 14:36:43 +00:00
bschmidt
e0b1e85870 Rename some stuff in favour of the OpenBSD names:
- prefer EDCA over WME
- qid for a TXQ ID
- reg for register values
2011-04-16 13:40:32 +00:00
bschmidt
20e8c16a03 Fix WME/QoS handling:
- move the TX queue selection into iwn_tx_data/iwn_tx_data_raw
- extract traffic identifier and use it
- do not expect ACKs for frames marked as such
2011-04-16 13:25:19 +00:00
bschmidt
52a6150689 Remove if_ierrors which do not necessarily indicate a RX error, also
do account send packets. While here use the IWN_TX_FAIL constant.
2011-04-16 13:12:12 +00:00
bschmidt
d10ef1ad6b Instead of hardcoding TX rates and using that to fill the retry table
use the neogotiated ni_rates instead.
2011-04-16 12:42:54 +00:00
bschmidt
322300a743 Replace RX/TX ring allocation error messages with something more sane
and remove those where the caller already prints one.
2011-04-16 11:14:42 +00:00
bschmidt
ad65a3b837 Prevent double-free, also use the same error codes as OpenBSD. 2011-04-16 11:11:22 +00:00
bschmidt
7100785646 Add missing bus_dmamap_sync calls as well as remove two duplicate ones.
Obtained from:	OpenBSD
2011-04-16 10:52:11 +00:00
bschmidt
5e7a436f9a Unify TX/RX ring allocation, finish the descriptior DMA stuff before
starting with data.
2011-04-16 10:38:27 +00:00
bschmidt
ebcc30282e Make sure to destroy all DMA tags and maps. 2011-04-16 10:35:02 +00:00
bschmidt
7c20ac5e15 Rewrite DMA segment handling to be more inline with the OpenBSD code.
Also change the m_len == 0 hack to have less code churn.
2011-04-16 10:32:46 +00:00
bschmidt
021ca1d5e8 scratch_paddr has the same address pre-assigned, use that instead. 2011-04-16 09:39:08 +00:00
bschmidt
aa270ec747 In case a new mbuf can't be loaded, reuse the old one. 2011-04-16 09:34:40 +00:00
bschmidt
a6840d80df OpenBSD uses IWN_RBUF_SIZE not MJUMPAGESIZE for the RX path, also replace
caddr_t with void * to be in sync.
2011-04-16 08:59:21 +00:00
bschmidt
d72bcb668e Remove the flags argument of iwn_dma_contig_alloc(), it is always set
as BUS_DMA_NOWAIT. While here also set BUS_DMA_COHERENT.
2011-04-16 08:57:17 +00:00
bschmidt
fb5d86e081 RSSI related syncs with the OpenBSD code:
- read RSSI only for the active chains
- cast RSSI/NF to int8_t before passing it up to radiotap
- remove the htole64() for the timestamp

Obtained from:	OpenBSD
2011-04-16 07:32:57 +00:00
bschmidt
faacd12d69 Pass errors that might happen during state transitions up to net80211. 2011-04-16 07:21:00 +00:00
bschmidt
20625a61f2 Obtain the channel number directly from the laster RXON command, also
chan is an uint8_t.
2011-04-16 07:17:03 +00:00
bschmidt
52481f8930 fix the order of the prototypes from the previosu commit 2011-04-15 20:40:49 +00:00
bschmidt
f3e88fddee The 6005 series devices need additional temperature offset calibration
as well as the IWN_GP_DRIVER_CALIB_VER6 bit set.

Obtained from:	OpenBSD
2011-04-15 20:35:15 +00:00
bschmidt
23c4ff42c1 Revert some of local calibration changes in favour of the OpenBSD
implementation. This includes the fix required for the 6050 series
devices.
2011-04-15 20:31:02 +00:00