iwlwifi: fix hardware queue programming
authorJohannes Berg <johannes.berg@intel.com>
Mon, 23 Apr 2012 21:17:50 +0000 (14:17 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 11 May 2012 12:14:56 +0000 (13:14 +0100)
commite4c7f8df58b0edfa1912cd54bded9d543693903e
tree63817168df1cc8740c31818d81b3582f98422b4d
parent77a23ae9ae9e552e885292b120d19434c25aad89
iwlwifi: fix hardware queue programming

commit 5ef4acd58ab2abd0dd0c8e3cacd61a0dc5d73646 upstream.

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.

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>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/net/wireless/iwlwifi/iwl-fh.h
drivers/net/wireless/iwlwifi/iwl-prph.h