iwlwifi: fix hardware queue programming
authorJohannes Berg <johannes.berg@intel.com>
Mon, 23 Apr 2012 21:17:50 +0000 (14:17 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 24 Apr 2012 18:14:55 +0000 (14:14 -0400)
commit5ef4acd58ab2abd0dd0c8e3cacd61a0dc5d73646
tree66f8630a6525dfec3fda774653b4dca98771b9e7
parent6ead629b27269c553c9092c47cd8f5ab0309ee3b
iwlwifi: fix hardware queue programming

Newer devices have 20 (5000 series) or 30 (6000 series)
hardware queues, rather than the 16 that 4965 had. This
was added to the driver a long time ago, but improperly:
the queue registers for the higher queues aren't just
continuations of the registers for the first 16 queues,
they are in other places. Therefore, the hardware would
lock up when trying to activate queue 16 or above and
the device would have to be restarted.

Thanks goes to Emmanuel who identified this and told me
how the queue programming should be done.

Note that we don't use queues 20 and higher today and
doing so needs more work than this.

Cc: stable@vger.kernel.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-fh.h
drivers/net/wireless/iwlwifi/iwl-prph.h