History log of /drivers/net/wireless/iwlwifi/iwl-agn.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
974205153be8944539890084a170e3ad407164bc 07-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: don't delete AP station directly

With the mac80211 deauth sequence changes, the
station is deleted before the device is set
unassociated. This can cause the device to get
confused as it expects the station to be there
while the associated bit is set.

To fix this, do not delete the AP station from
the device when mac80211 asks for deletion,
instead just mark it as unused and rely on the
unassociated RXON to drop it from the station
database in the device.

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-agn.h
e6dd5838acf312516fcc4eb34516de5bc45e2980 07-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: make iwl_init_context static

It's not needed anywhere but during init.

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-agn.h
83626404a70da74c67f32f119e53c0ba032ba2d8 07-Mar-2012 Don Fry <donald.h.fry@intel.com> iwlwifi: more status bit factoring

Continue splitting the status bits between transport and op_mode.
All but a few are separated.

Signed-off-by: Don Fry <donald.h.fry@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-agn.h
9a716863ae4a2f039bc4d0b2b2bb4b24a1dc7a91 07-Mar-2012 Don Fry <donald.h.fry@intel.com> iwlwifi: separate status to priv and trans

The shared status bits are a mixture of transport and op mode bits.
Some are used just by one or the other, some are shared. Begin the
de-tangling of these bits.

Signed-off-by: Don Fry <donald.h.fry@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-agn.h
51dc51d12bd609644bbe9877825a1a25a6016639 07-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: make EEPROM enhanced TX power a bool

There's no need to carry around the function
pointer when a boolean indicating that the
EEPROM stores enhanced TX power information
is sufficient.

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-agn.h
e755f882b7e72c48da820acc24196532977cfd07 07-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: redesign PASSIVE_NO_RX workaround

The PASSIVE_NO_RX workaround currently crosses
through the op_mode and transport layers, which
is a bit odd. This also isn't necessary, if the
transport simply reports when queues are full
(or no longer full) the op_mode can keep track
of this state, and report to mac80211 only what
*it* thinks is appropriate. What is appropriate
can then be based on whether queues should be
stopped to wait for RX or not.

This significantly simplifies the transport API,
it no longer needs to expose anything to stop a
queue, nor to wake "any" queue, this can all be
handled in the upper layer completely.

Also simplify the handling to not be dependent
on the context, that makes little sense as the
queues are shared and both contexts have to be
on the same channel anyway.

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-agn.h
ea886a6014024d027fa207b8765e46d746cd2a18 07-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: remove unused argument from iwlagn_suspend

There's not much point in passing priv and
hw pointers since they can be derived from
each other, and the function doesn't use
the hw pointer anyway. Remove it.

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-agn.h
955570fc662194c6a1128028a579d7e9014c30aa 07-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: move iwl_sta_id_or_broadcast to user

There's only one user, so the function
can be moved into the correct file. It
also loses an argument along the way.

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-agn.h
0e781842cb25ed3a9d0a91bdf05c0717150c9343 06-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: virtualize command queue full behaviour

When the command queue is full, the transport
will return -ENOSPC, but the reaction to that
depends on the op_mode. Virtualize that, the
DVM op_mode checks for CT-kill and restarts
the hardware otherwise.

We may be able to get rid of this callback by
putting the behaviour check into the wrapper
but that needs more careful evaluation.

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-agn.h
84abd2cc066fc077c424d0faf7618be348a7efb2 06-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: move status check functions out of shared

They are only used in the DVM op_mode.
Also move the rfkill debug macros that
depend on them.

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-agn.h
e10a0533a9172471b52bd9512838d766420a3baf 06-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: add wrappers for command sending

Add wrappers to send commands from the DVM
op-mode (which essentially consists of the
current driver). This will allow us to move
specific sanity checks there.

Also, this removes iwl_trans_send_cmd_pdu()
since that can now be taken care of in the
DVM-specific wrapper.

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-agn.h
0692fe41b36159be5d8c7d4eef0699e79c383c85 06-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: split out firmware store

Through the driver, struct iwl_fw will
store the firmware. Split this out into
a separate file, iwl-fw.h, and make all
other code use it. To do this, also move
the log pointers into it, and remove the
knowledge of "nic" from everything.

Now the op_mode has a fw pointer, and
(unfortunately) for now the shared data
also needs to keep one for the transport
to access dump the error log -- I think
that will move later.

Since I wanted to constify the firmware
pointers, some more changes were needed.

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-agn.h
e19918855dc4822a24787a6d0048205b011e5ecb 06-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: move ucode loading to op_mode

uCode loading belongs to the op_mode, as it
is dependent on various things there and the
commands sent during it are specific to it.
Move the prototypes to iwl-agn.h to indicate
this. To make this possible, also move all
the calibration handling (which is op_mode
dependent after all).

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-agn.h
ab0bd5b32a9c7ea2e7cc69d56c82a96be340c269 05-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: fix station HT parameters

My patch "iwlwifi: simplify auth/assoc flow"
caused a serious throughput degradation due
to me forgetting that there are HT settings
in the station table. To restore throughput,
set these parameters correctly when the sta
moves to assoc state.

This patch should probably be merged with
the auth/assoc redesign patch for upstream.
In that case, this paragraph should be added
to the commit log as the third paragraph
(before talking about RXON):

However, as we only get the station HT data
when the station moves into assoc state, we
also need to program this into the device
(and copy it into our database) then.

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-agn.h
48a2d66f58d2bf1818acf5ff7ed9897a9977a96e 05-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: don't pass iwl_rx_mem_buffer to upper layers

struct iwl_rx_mem_buffer implementation details
(DMA address, list pointers) that the upper
layers don't need. Introduce iwl_rx_cmd_buffer
that is passed upstream and only contains the
needed data (the page). Additionally, access
this data only via accessor functions, allowing
us to change the implementation in the future.
These accessors are rxb_addr() (as before) and
rxb_steal_page() to take ownership of the data.

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-agn.h
fb5fe5b9da167f25fd44818327338eeec20c2a5a 05-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: simplify auth/assoc flow

With mac80211 now giving us station information
(via the sta_state callback) before auth/assoc
we can get rid of tx_sync by adding the station
early for the case of managed interfaces. Keep
AP mode actions the same for now.

As we now get the BSSID early, we can also get
rid of iwl_reprogram_ap_sta().

We can still optimise the number of RXONs we
send to the device, but that can be done later.

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-agn.h
d316383dfdb51d46fb9681a68b395a5735f3f4b3 05-Mar-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: move iwl_clear_driver_stations to user

There's only one place using this function, so
move it where it's needed.

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-agn.h
3e6895c50af9a9574a8bb97268d99be049fe46f0 14-Feb-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: remove iwl_print_rx_config_cmd from shared

It is op_mode related

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
bcb9321c8db86150004d615e03551911be84685e 09-Feb-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: virtualize op_mode's fw_error

Export it as "nic_error" notification, the error handling will be in
the op_mode.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
7120d9894c363ee31fd529e5dd962452b639ab8e 09-Feb-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: virtualize op_mode's set_hw_rf_kill

Export it as "hw_rf_kill" notification.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
02e3835884f352ac707dcf14d8bf455c0c0acbc5 09-Feb-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: virtualize op_mode's stop/start queue

Export them as "queue_full" and "queue_not_full" notification.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
db70f290e1a88f11815e50acd8ac1c36f89b0da2 09-Feb-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: virtualize op_mode's rx

This is the op_mode's Rx handler.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
ed277c9361e423df2bc19312c60b9d06cac31ee6 09-Feb-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: virtualize op_mode's free skb

This handler allows the transport layer to free an skb from the
op_mode. This can happen when the driver is stopped while Tx
packets are pending in the transport layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
4a986777a53d5fe8fd92ef30e0e8eedd0ff800b1 07-Feb-2012 Don Fry <donald.h.fry@intel.com> iwlwifi: save ucode capabilities in iwl_fw

The capabilities parsed from the ucode file are never saved. Save
them in the iwl_fw structure.

Signed-off-by: Don Fry <donald.h.fry@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
78e5a464320338a90b0367ab9cc58029393a9824 17-Feb-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: kill iwl_down and s/__iwl_down/iwl_down

iwl_down was just a wrapper around __iwl_down which was called from
one place only. Replace it to direct call to iwl_down. Add lockdep
warning in iwl_down to ensure it was called with the mutex held.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
edf38334061cb87c68cfc7fdc192c850b7e02320 26-Jan-2012 Don Fry <donald.h.fry@intel.com> iwlwifi: move all ucode routines to iwl-ucode.c

The routines dealing with the ucode are spread through several files.
Move them all to the same file and create a iwl-ucode.h file with the
ucode file definitions.

Signed-off-by: Don Fry <donald.h.fry@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
ed6a3803408f18da387463d569b4edc5078fd9aa 02-Jan-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: add fw_alive to transport layer API, kill tx_start

Define a new handler in the transport layer API: fw_alive.
Move iwl_reset_ict to this new handler, and move the content
of tx_start to this handler.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
4e3182626a914443a5e0fbe014813f03e51a75df 27-Dec-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: update Copyright

Update Copyright to 2012

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
69a679b0dc79edaca521eba5b06edc5593455b76 07-Dec-2011 Don Fry <donald.h.fry@intel.com> iwlwifi: remove most of the iwl_priv references from iwl-ucode.c

Remove all but the last few references to iwl_priv from the lower
level iwl-ucode.c, with resulting code changes.

Signed-off-by: Don Fry <donald.h.fry@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
09af14030d77d5f43229adabdd3c84c63f3499aa 09-Dec-2011 Don Fry <donald.h.fry@intel.com> iwlwifi: create iwl_mac80211 unregister routine

The mac80211 setup_register operations are collected in one routine,
but the cleanup routines are not. Create a routine for this.

Signed-off-by: Don Fry <donald.h.fry@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
822e8b2a2d708f99daf1ae4cd9b9e4c9d84069c6 21-Nov-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: tid_data logic move to upper layer - tx AGG setup

The tid_data is not related to the transport layer, so move
the logic that depends on it to the upper layer.
This patch deals with tx AGG setup.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
ab36eab24e7847d6d92872c55b46554c8ac4c4b3 01-Dec-2011 Don Fry <donald.h.fry@intel.com> iwlwifi: move eeprom pointer from iwl_priv to iwl_shared

The eeprom image is a device level component, move from iwl_priv
to iwl_shared, with associated code changes.

Signed-off-by: Don Fry <donald.h.fry@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
5ef15ccc648638a2cf00b3a13caa770559aa4e91 30-Nov-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: rename CONFIG_IWLWIFI_DEVICE_SVTOOL to CONFIG_IWLWIFI_DEVICE_TESTMODE

Change the name to match the works

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
dd5fe1046cb07d2a6665b6dbbfc6989b39ae063b 29-Nov-2011 Don Fry <donald.h.fry@intel.com> iwlwifi: move ucode notification from iwl_priv to iwl_shared

Move the notification structures for ucode operations from the
iwl_priv structure to the iwl_shared structure, with associated
code changes.

Signed-off-by: Don Fry <donald.h.fry@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
66128b144b5107132966fabfc3843f8bdac68d2b 28-Nov-2011 Don Fry <donald.h.fry@intel.com> iwlwifi: replace iwl_priv reference with iwl_trans for ucode.

Replace the references to the iwl_priv structure with the iwl_trans
structure as the priv structure is never referenced other than to
access the trans structure. Rename from iwlagn to iwl.

Signed-off-by: Don Fry <donald.h.fry@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
137ce797e24855b738ef98411acbf88c6d918f27 23-Nov-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: do not re-configure HT40 after associated

The ht40 setting should not change after association unless channel switch

This fix a problem we are seeing which cause uCode assert because driver
sending invalid information and make uCode confuse

Here is the firmware assert message:
kernel: iwlagn 0000:03:00.0: Microcode SW error detected. Restarting 0x82000000.
kernel: iwlagn 0000:03:00.0: Loaded firmware version: 17.168.5.3 build 42301
kernel: iwlagn 0000:03:00.0: Start IWL Error Log Dump:
kernel: iwlagn 0000:03:00.0: Status: 0x000512E4, count: 6
kernel: iwlagn 0000:03:00.0: 0x00002078 | ADVANCED_SYSASSERT
kernel: iwlagn 0000:03:00.0: 0x00009514 | uPc
kernel: iwlagn 0000:03:00.0: 0x00009496 | branchlink1
kernel: iwlagn 0000:03:00.0: 0x00009496 | branchlink2
kernel: iwlagn 0000:03:00.0: 0x0000D1F2 | interruptlink1
kernel: iwlagn 0000:03:00.0: 0x00000000 | interruptlink2
kernel: iwlagn 0000:03:00.0: 0x01008035 | data1
kernel: iwlagn 0000:03:00.0: 0x0000C90F | data2
kernel: iwlagn 0000:03:00.0: 0x000005A7 | line
kernel: iwlagn 0000:03:00.0: 0x5080B520 | beacon time
kernel: iwlagn 0000:03:00.0: 0xCC515AE0 | tsf low
kernel: iwlagn 0000:03:00.0: 0x00000003 | tsf hi
kernel: iwlagn 0000:03:00.0: 0x00000000 | time gp1
kernel: iwlagn 0000:03:00.0: 0x29703BF0 | time gp2
kernel: iwlagn 0000:03:00.0: 0x00000000 | time gp3
kernel: iwlagn 0000:03:00.0: 0x000111A8 | uCode version
kernel: iwlagn 0000:03:00.0: 0x000000B0 | hw version
kernel: iwlagn 0000:03:00.0: 0x00480303 | board version
kernel: iwlagn 0000:03:00.0: 0x09E8004E | hcmd
kernel: iwlagn 0000:03:00.0: CSR values:
kernel: iwlagn 0000:03:00.0: (2nd byte of CSR_INT_COALESCING is CSR_INT_PERIODIC_REG)
kernel: iwlagn 0000:03:00.0: CSR_HW_IF_CONFIG_REG: 0X00480303
kernel: iwlagn 0000:03:00.0: CSR_INT_COALESCING: 0X0000ff40
kernel: iwlagn 0000:03:00.0: CSR_INT: 0X00000000
kernel: iwlagn 0000:03:00.0: CSR_INT_MASK: 0X00000000
kernel: iwlagn 0000:03:00.0: CSR_FH_INT_STATUS: 0X00000000
kernel: iwlagn 0000:03:00.0: CSR_GPIO_IN: 0X00000030
kernel: iwlagn 0000:03:00.0: CSR_RESET: 0X00000000
kernel: iwlagn 0000:03:00.0: CSR_GP_CNTRL: 0X080403c5
kernel: iwlagn 0000:03:00.0: CSR_HW_REV: 0X000000b0
kernel: iwlagn 0000:03:00.0: CSR_EEPROM_REG: 0X07d60ffd
kernel: iwlagn 0000:03:00.0: CSR_EEPROM_GP: 0X90000001
kernel: iwlagn 0000:03:00.0: CSR_OTP_GP_REG: 0X00030001
kernel: iwlagn 0000:03:00.0: CSR_GIO_REG: 0X00080044
kernel: iwlagn 0000:03:00.0: CSR_GP_UCODE_REG: 0X000093bb
kernel: iwlagn 0000:03:00.0: CSR_GP_DRIVER_REG: 0X00000000
kernel: iwlagn 0000:03:00.0: CSR_UCODE_DRV_GP1: 0X00000000
kernel: iwlagn 0000:03:00.0: CSR_UCODE_DRV_GP2: 0X00000000
kernel: iwlagn 0000:03:00.0: CSR_LED_REG: 0X00000078
kernel: iwlagn 0000:03:00.0: CSR_DRAM_INT_TBL_REG: 0X88214dd2
kernel: iwlagn 0000:03:00.0: CSR_GIO_CHICKEN_BITS: 0X27800200
kernel: iwlagn 0000:03:00.0: CSR_ANA_PLL_CFG: 0X00000000
kernel: iwlagn 0000:03:00.0: CSR_HW_REV_WA_REG: 0X0001001a
kernel: iwlagn 0000:03:00.0: CSR_DBG_HPET_MEM_REG: 0Xffff0010
kernel: iwlagn 0000:03:00.0: FH register values:
kernel: iwlagn 0000:03:00.0: FH_RSCSR_CHNL0_STTS_WPTR_REG: 0X21316d00
kernel: iwlagn 0000:03:00.0: FH_RSCSR_CHNL0_RBDCB_BASE_REG: 0X021479c0
kernel: iwlagn 0000:03:00.0: FH_RSCSR_CHNL0_WPTR: 0X00000060
kernel: iwlagn 0000:03:00.0: FH_MEM_RCSR_CHNL0_CONFIG_REG: 0X80819104
kernel: iwlagn 0000:03:00.0: FH_MEM_RSSR_SHARED_CTRL_REG: 0X000000fc
kernel: iwlagn 0000:03:00.0: FH_MEM_RSSR_RX_STATUS_REG: 0X07030000
kernel: iwlagn 0000:03:00.0: FH_MEM_RSSR_RX_ENABLE_ERR_IRQ2DRV: 0X00000000
kernel: iwlagn 0000:03:00.0: FH_TSSR_TX_STATUS_REG: 0X07ff0001
kernel: iwlagn 0000:03:00.0: FH_TSSR_TX_ERROR_REG: 0X00000000
kernel: iwlagn 0000:03:00.0: Start IWL Event Log Dump: display last 20 entries
kernel: ------------[ cut here ]------------
WARNING: at net/mac80211/util.c:1208 ieee80211_reconfig+0x1f1/0x407()
kernel: Hardware name: 4290W4H
kernel: Pid: 1896, comm: kworker/0:0 Not tainted 3.1.0 #2
kernel: Call Trace:
kernel: [<ffffffff81036558>] ? warn_slowpath_common+0x73/0x87
kernel: [<ffffffff813b8966>] ? ieee80211_reconfig+0x1f1/0x407
kernel: [<ffffffff8139e8dc>] ? ieee80211_recalc_smps_work+0x32/0x32
kernel: [<ffffffff8139e95a>] ? ieee80211_restart_work+0x7e/0x87
kernel: [<ffffffff810472fa>] ? process_one_work+0x1c8/0x2e3
kernel: [<ffffffff810480c9>] ? worker_thread+0x17a/0x23a
kernel: [<ffffffff81047f4f>] ? manage_workers.clone.18+0x15b/0x15b
kernel: [<ffffffff81047f4f>] ? manage_workers.clone.18+0x15b/0x15b
kernel: [<ffffffff8104ba97>] ? kthread+0x7a/0x82
kernel: [<ffffffff813d21b4>] ? kernel_thread_helper+0x4/0x10
kernel: [<ffffffff8104ba1d>] ? kthread_flush_work_fn+0x11/0x11
kernel: [<ffffffff813d21b0>] ? gs_change+0xb/0xb

Cc: <stable@kernel.org> 3.1+
Reported-by: Udo Steinberg <udo@hypervisor.org>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
023ca58f1d025d9c210f8003ca47d6b96cdac167 10-Nov-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: Move the core suspend function to iwl-agn-lib

The core suspend function is part of agn, iwl_mac80211 should only
handle mac80211 I/F operations.

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-agn.h
76b2933111afe5a04e342040436a90c31c7661d4 10-Nov-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move station functions to mac80211

The station related mac80211 callback functions should belong to _mac80211

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-agn.h
7335613ae27ae148fde720caccbfbbd9afa7465d 10-Nov-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move all mac80211 related functions to one place

There are many mac80211 callback functions in the driver, as current
implementation, those functions are scatter everywhere which is very difficult
to find and maintain, move all the mac80211 callback functions into single
file. There should be no functional changes

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-agn.h
de7f5f92dbda0652dcb850fd02762e628556f645 10-Nov-2011 Don Fry <donald.h.fry@intel.com> iwlagn: move ucode files out of the iwl_priv structure

Relocate the ucode files and update relevant code.
More code refactoring.

Signed-off-by: Don Fry <donald.h.fry@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-agn.h
8929c24bf2ef4fb983ff86478116092080f8773f 10-Nov-2011 Don Fry <donald.h.fry@intel.com> iwlagn: remove knowledge of ucode image location from upper layers

The upper layers of the driver do not need to know where the ucode is
stored. It already passes in an enum of which ucode to load. Let the
lower layer routines select the ucode to load.

Signed-off-by: Don Fry <donald.h.fry@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-agn.h
c745f55baf63d08d6e9bb20682102fb8bae8f67a 10-Oct-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: merge station management functions

After driver split, no need to separate station management functions
in two files, merge it

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-agn.h
ade4c649a0e9e862751fe1c98f43fbee86554c8a 10-Oct-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: rename all the mac80211 callback functions

Use the same calling style for all the mac80211 callback functions

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-agn.h
247c61d625154e18a105d663281c52376a882762 21-Sep-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: remove the callback in host commands

Before this patch, the upper layer could register a callback for each
host command. This mechanism allowed the upper layer to have
different callbacks for the same command ID. In fact, it wasn't used
and the rx_handlers is enough: same callback for all the command with
a specific command ID.

The iwl_send_add_station needs the access the command that was sent
while handling the response (regardless if the command was sent in
SYNC or ASYNC mode). So now, all the handlers receive the host
command that was sent. This implies a change in the handler signature.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
6e809a16d98efa8b1483a25ab8886dd2aa200d0f 21-Sep-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: move scan code to scan file

Since the driver split there's no longer a need
to have the scan code scattered across multiple
files, so move it all back to iwl-scan.c

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
522376d206da66cecc90929134ad70c0446e874b 06-Sep-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: clean up of transport layer

Move a few declarations needed by the transport layer to iwl-shared.h
Move iwl_cmd_meta, iwl_tx_queue and friends to the internal transport
header file.
Move iwl_device_cmd iwl_host_cmd and friends to iwl-trans.h since
these structs are used in the API to the transport layer.
Move get_cmd_string to the upper layer with a declaration in
iwl-shared.h.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
5f178cd2ebe8ac196b245428c574f1def1964b14 26-Aug-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move wait_for_tx_queue_empty to transport layer

This one is really transport related.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
332a4bad975616f33c2d1bf94c4ace2ea4113835 26-Aug-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: iwl-pci doesn't include iwl-dev any more

Move all the iwlXXX_abgn_cfg forward declaration to a separate file
so that iwl-pci.c doesn't need to include iwl-agn.h that includes
all iwl-dev.h
This allows to provide real encapsulation. Dereferencing iwl_priv
in the bus layer will now lead to a compilation error.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
6bb7884758965ad0afd67801f0f41cefd53d0b0c 26-Aug-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: remove references to priv from the transport layer

Continue to the clean up of the priv dereferencing from the transport layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
04e1cabe4294fdf744489deb1e91edb1ec02e9a4 26-Aug-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move reclaim related functions

Now that the reclaim flow has been moved to the transport layer, a lot of
functions can be made static or don't need to be exported outside the transport
layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
a0eaad713f6fc1f63fe293ad6ce63cb01e05c03c 26-Aug-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: reclaim the packets in transport layer

The reclaim flow is really transport related. Define a simple API to allow the
upper layer to request from the transport layer to reclaim packets until an
index written in the Tx response / BA notification.
The transport layer prepares a list of the packets that are being freed and
passes this list to the upper layer.
Between the two layers, the CB of the skb is used to pass a pointer to the
context (BSS / PAN) in which the skb was sent.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
6a9ae0dc1d4ed6a2007aea14e41d9ba0ae1e3fd4 26-Aug-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: support small form factor SKU of 6205

Different subsystem ID

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-agn.h
48f20d354e729afcfb29ff41aca7583ebb94613d 26-Aug-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: introduce iwl-shared.h

It will hold declaration of functions and forward declaration of struct that
are used by several layers.
This will allow modules not to include iwl_priv. iwl_bus and iwl_trans are
still visible to all.

All the layers share the module parameters, move the struct to iwl-shared.h.
Also add all module parameters to iwl_mod_params instead of having them as
global static. This includes

* debug_level
* ant_coupling
* bt_ch_announce
* wanted_ucode_alternative

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
b39488a9bd00c520e46682bf75ba484aadc82af7 26-Aug-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: Rename iwlcore prefix

There are number of functions with "iwlcore_" prefix which not feels right,
rename those to "iwl_".

No functional changes by making the renames.

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-agn.h
c6baf7fb40cb141c4b510372f7dac829621ccf3f 23-Jul-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: support new P2P implementation

The previous P2P implementation turned out to
not work well and new uCode capabilities were
added to support P2P. Modify the driver to
take advantage of those, and also discover P2P
support automatically based on a uCode flag
instead of having a Kconfig symbol for P2P.

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-agn.h
5a3d9882b84edf5fa8e8ca33a5d6df25e2e727a5 15-Jul-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: rewrite HW crypto

As I just discovered while doing WoWLAN, HW crypto
is done wrong for GTKs: they should be programmed
for the AP station ID (in the managed mode case)
and the HW can actually deal with multiple group
keys per station as well (which is useful in IBSS
RSN but that I've chosen not to use this).

To fix all this, modify the way keys are sent to
the device and key offsets are allocated. After
these changes, key offsets are stored into the
hw_key_idx which we can then track for the key
lifetime, not relying on our sta_cmd array. WEP
default keys get special treatment, of course.

Additionally, since I had the API for it, we can
now pre-fill TKIP phase 1 keys for RX now that we
can obtain the P1K from mac80211, a capability I
had added for WoWLAN initially.

Finally, some keys simply don't need to be added
into the device's key cache -- a key that won't
be used for RX is only needed in the TX header,
so "pretend" to have accepted any key without
adding it into the device -- no need to use up
key space there for it.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
c1c81401de30448baf35ec2f689ad21faffb0536 11-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: iwl_bus holds drv_data as void * instead of iwl_priv

The price to pay is the access to the log system. Therefore logs from bus layer
are sent by dev_printk instead of IWL_XXXX.

Rename bus->priv to bus->drv_data to make the separation even clearer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
d593411084a56124aa9d80aafa15db8463b2d8f7 11-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: simplify the bus architecture

Call iwl_probe with a ready iwl_bus struct. This means that the bus layer
assigns the irq, dev and iwl_bus_ops pointers to iwl_bus before giving it to
iwl_probe.

The device specific struct is allocated together with the common iwl_bus struct
by the bus specific layer. The pointer to the aggregate struct is passed to the
upper layer that holds a pointer to iwl_bus instead of an embedded iw_bus.
The private data given to the PCI subsystem is now iwl_bus and not iwl_priv.

Provide bus_* inliners on the way in order to simplify the syntax.

Rename iwl-pci.h -> iwl-bus.h since it is bus agnostic and represent the
external of the bus layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
0286cee0d2b6357e8e30d817bbce8ff166f358b5 10-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move iwl_prepare_card_hw to the transport layer

This function is really related to the transport layer - move it.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
392f8b789a4c96b39d527ff8ea5ceba20cd79d56 10-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move more functions from the start flow to the transport layer

Basically all the nic_init flow should be in the transport layer.
iwl_prepare_card_hw will move to the transport too in a separate patch.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
48d42c426947d8ffba0caa3cf9c58be6903302e0 10-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: SCD configuration for AMPDU moves to transport layer

All the configurations of the HW for AMPDU are now in the transport layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
6bd4dba3d2b8a90d27dfd32b306fa965650599b4 03-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: kill iwlagn_setup_deferred_work

Since iwlagn_setup_deferred_work is always called, fold it into
iwl_setup_deferred_work. BT related works are setup by the new
bt_setup_deferred_work lib_ops.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
8d30119346d52516f289016e1c57f853a835cb4a 03-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: kill iwlagn_rx_handler_setup

Since iwlagn_rx_handler_setup is always called, fold it into
iwl_rx_handler_setup. BT related handlers are setup by the new
bt_rx_handler_setup lib_ops.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
b3c2ce131c7cd8c53b72b0cc04241cde17ce0c1d 07-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: add tx start API to transport layer

tx start will start the tx queues: basically configure the SCD
Remove the IWLAGN prefix to SCD defines on the way.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
1a361cd838173879672cb0f0ebe1e7654d7edff6 11-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move all the ICT related functions to iwl-trans-rx-pcie.c

Since the ICT is transport related, move all its functions to the transport
layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
ab6cf8e816bad473a1496f2006bea3a3849c2519 07-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move iwlagn_stop_device to transport layer

Since iwlagn_stop_device was the only caller to the rx_stop / tx_stop,
these two don't need to be API any more.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
253a634ccd1b291282cd0cade219bd90eb0371eb 11-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move tx transport functions to iwl-trans-tx-pcie.c

There are still a few functions here and there that should be
put in the transport layer. Mainly the functions that are related to the reclaim flow.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
ab697a9f1e73ba817955e15bd899a8a0627f9fd6 11-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move rx transport functions to iwl-trans-rx-pcie.c

Also create a new file: iwl-trans-int-pcie.h which will include
the non static functions that are shared among the current pcie transport layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
e505c433d35900d98870a2e266759166a03030dc 07-Jul-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: remove un-necessary file

Most of the functions in iwl-agn-hcmd are move to other files, no point to
keep the file anymore.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
1ab9f6c11b003d086ae4890ea202cc3c66f5a17a 07-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move the Rx dispatching to the upper layer

The upper layer receives a pointer to an iwl_rx_mem_buffer. I would prefer the
upper layer to receive a pointer to an iwl_rx_packet, but this is impossible
since the Rx path needs to add the address of the page to the skb.
I may find a solution later.

All the pre_rx_handler and notification code has been moved to the upper layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
a27367d25da06c24e0379ad4489542016ff11dbb 04-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move sync_irq to transport layer

Since all the irq / tasklet is now handled in the transport layer, it should
give an API to ensure that all the irq / tasklet have finished running. This
will allow the upper layer to release all its resources.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
34c1b7ba127d1815b3dd1cb81cc4338ce0e712b7 04-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move the tasklet / irq to the transport layer

PCIe doesn't provide any ISR registration API, whereas other buses do.
Hence, we need to move the tasklet and irq to the transport layer to allow this
flexibility.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
47c1b496015e41e1068878814596af9a45d4fa84 03-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move Tx datapath to transport layer

Split the Tx datapath in two parts:
* the first deals with the Tx cmd composition
* the second attaches the skb + Tx cmd to the queues

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
5c3d29fc0d083e674c09407f1bc78e9dbf4ae8a5 08-Jul-2011 Don Fry <donald.h.fry@intel.com> iwlagn: remove iwlagn_hcmd_utils structure and call directly

Not needed since the driver split. Move single use routines to
calling location and keep static where possible.

Signed-off-by: Don Fry <donald.h.fry@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-agn.h
207ecc5eab908843449c167f7264a35d7d5d5e0b 08-Jul-2011 Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> iwlagn: Enable/disable PS poll based on RSSI and BT coex traffic state

WiFi throughput drops drastically when BT is turned on, BT and WiFi
are simultaneously transmitting/receiving traffic. This is particularly true
when BT has higher priority over WiFi, and hence the device defers TX frames.
The AP assumes that the channel is bad and reduces the data rate, implying
longer airtime, which exacerbates the problem further, resulting ultimately
in what is popularly called the "death-spiral" phenomenon. The use of PS-poll
in such scenarios guarantees a low but consistent throughput.

Since the death-spiral phenomenon is observed only when the RSSI is low, use
PS-poll only when RSSI is low and disable when high, with a known hysterisis.

This feature specifies the high and low thresholds and implements the
callbacks registered with mac80211, which will be called when threshold events
occur.

iwlwifi: dynamic pspoll: optimize rssi monitor code

Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@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-agn.h
70e3e8a6e831bf58a7eb98187c186221f01d5b64 08-Jul-2011 Fry, Donald H <donald.h.fry@intel.com> iwlagn: remove indirection for eeprom_query_addr

Not needed since the driver split. Eliminate redundant routine.

Signed-off-by: Don Fry <donald.h.fry@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-agn.h
c170b867cc119fb9f6e9cac3a8245a3347bc718c 08-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: add an API for TX stop

Tx stop moves to transport layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
c2c52e8bed1a186d060166ec57228e2a123cab2e 08-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: add an API for RX stop

Rx stop moves to transport layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
1359ca4f305a1680ea6a1347a43bea76c352097c 08-Jul-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: add an API to free the TX context

Tx free functions move to the transport layer. Unify the functions that deal with tx queues and cmd queue.

Since the CMD queue is not fully allocated, but uses the q->n_bd / q->window trick, the release flow of TX queue and CMD queue was different.
iwlagn_txq_free_tfd receives now the index of the TFD to be freed, which allows to unify the release flow for all the queues.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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-agn.h
e3f10cea039b235c1de12648ea87b752990c11bf 01-Jul-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: remove hcmd ops

All "agn" devices use the same hcmd functions, no need to call indirectly.
remove hcmd_ops

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
02aca585f58a331288026cf78fd4f4ca404cbe12 28-Jun-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: move the tx allocation funcs to the transport layer

These functions allocate all the Tx context. Only the simple tx_init is exported as API.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
a0f6b0a211fbdfbae603ffa434f0d9e691e55ab9 21-Jun-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: add rx_free to transport layer

The transport layer ness to release all rx ressources. This function is an API for it.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
c85eb6196958ae54eba3ff0660d2b5af3d58521a 14-Jun-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: introduce transport layer and implement rx_init

The transport layer is responsible for all the queues, DMA rings etc...
This is the beginning of the separation of all the code that is tighly
related to HW design to the aforementioned transport layer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
f775aa06d2de583bd291d4bf5814784c9ff7b9cc 22-Jun-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: don't use CCK rates for P2P interfaces

P2P interfaces must not use CCK rates, only OFDM
rates are allowed. To set this up, we need to set
up the broadcast station to start with 6M instead
of starting with 1M.

Since the interface type can change, also reset
the broadcast station when RXON changes.

This will affect beacons as well.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
705cd4513a2fc561d8a2d5853cffb102bf183d70 18-Jun-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: store the irq number to iwl_bus just like dev

Since the irq number is just an unsigned int, store it inside iwl_bus
instead of calling the get_irq ops every time it is needed.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
08321c062f77e379c4a539f1522220b83ab1e84e 10-Jun-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: add a get_irq method to iwl_bus_ops and use it

In order to remove a few more dereference to priv->pdev that will be killed
[Asoon, there is now a method to get the IRQ number.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
a48709c5d076aa3a3f9b6426f462abe6bf432b11 31-May-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: introduce iwl_bus and iwl_bus_ops

iwl_bus will represent a bus, and iwl_bus_ops all the operations that can be
done on this bus.
For the moment only set_prv_data is implemented. More to come...

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
48d1a2110ad9cb86e5cb0d790729824fa3cca83b 24-May-2011 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlagn: add a iwl_pci.[ch] files that will contain all PCI specific code

Move some PCI functionality to the new iwl_pci.[ch] files:
* the PCI_DEVICE_TABLE
* the pci_driver struct definition
* the PCI probe / remove functions
* the PCI suspend / resume functions

All these functions are now split: the trigger comes from the PCI layer which
calls to the bus generic code located in the other files.

This is the beginning only. There are still a lot of PCI related code needs
to be gathered.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
1f8bf0396ae7e63648b210fd197b1a5ab0db51bf 06-Jun-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: merge duplicated code into single place

Multiple places have similar code to construct calib header. Merge into
single inline function.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
872907bb17fe2d8d01d0e9723f72f91cb4ea103f 06-Jun-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: don't check ucode subtype

The ucode subtypes keep changing, and there's no
particular reason to be checking them (other than
a paranoid sanity check). Since the numbers are
also in conflict between different ucode images
now, simply don't check them any more and rely on
the images being built correctly.

Also, to indicate that, rename the constants and
the enum, moving it to a different file.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
eb64dca0c9d73e191026ed37d1075f22e48b3f1c 31-May-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: add dumpit support for testmode trace function

For testmode trace function, huge amout of data need to pass to userspace.
Use the build-in nl80211 dumpt it function

Require nl80211 testmode dumpit support patch.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
1144181c1bc054dc5e001a6f10b4820167e6c883 30-May-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: fix incorrect PCI subsystem id for 6150 devices

For 6150 devices, modify the supported PCI subsystem ID.

Cc: stable@kernel.org
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-agn.h
7a4e5281d1b3335a3dc90841415390473cccebf3 06-May-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: add testmode trace command

Adding testmode trace/debug capability

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
4c42db0f04e55d48f0ea9f424144a5211b7a155c 04-May-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: remove unused pad argument

The pad argument to iwlagn_txq_free_tfd
isn't used, remove it.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
214d14d4d323aab5d455b409e279f9e1e6631123 04-May-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: clean up TXQ indirection

All of these functions no longer need to be
accessed indirectly since they're shared in
all AGN devices.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
94b00658ffc719427c9c09d7920957bc35915c6f 28-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: remove bytecount indirection

All AGN devices need the bytecount table, so
remove the indirection and make the functions
static again.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
4613e72dbdc9a44bfc4625d835511264121c4244 06-May-2011 Cindy H. Kao <cindy.h.kao@intel.com> iwlwifi: support the svtool messages interactions through nl80211 test mode

This patch adds the feature to support the test mode operation through
the generic netlink channel NL80211_CMD_TESTMODE between intel
wireless device iwlwifi and the user space application svtool.

The main purpose is to create a transportation layer between the iwlwifi
device and the user space application so that the interaction between the
user space application svtool and the iwlwifi device in the kernel space is
in a way of generic netlink messaging.

The detail specific functions are:

1. The function iwl_testmode_cmd() is added to digest the svtool test command
from the user space application. The svtool test commands are categorized to
three types : commands to be processed by the device ucode, commands to access
the registers, and commands to be processed at the driver level(such as reload
the ucode). iwl_testmode_cmd() dispatches the commands the corresponding handlers
and reply to user space regarding the command execution status. Extra data is
returned to the user space application if there's any.

2. The function iwl_testmode_ucode_rx_pkt() is added to multicast all the spontaneous
messages from the iwlwifi device to the user space. Regardless the message types,
whenever there is a valid spontaneous message received by the iwlwifi ISR,
iwl_testmode_ucode_rx_pkt() is invoked to multicast the message content to user
space. The message content is not attacked and the message parsing is left to
the user space application.

Implementation guidelines:

1. The generic netlink messaging for iwliwif test mode is through NL80211_CMD_TESTMODE
channel, therefore, the codes need to follow the regulations set by cfg80211.ko
to get the actual device instance ieee80211_ops via cfg80211.ko, so that the iwlwifi
device is indicated with ieee80211_ops and can be actually accessed.

Therefore, a callback iwl_testmode_cmd() is added to the structure
iwlagn_hw_ops in iwl-agn.c.

2. It intends to utilize those low level device access APIs from iwlwifi device driver
(ie. iwlagn.ko) rather than creating it's own set of device access functions.
For example, iwl_send_cmd(), iwl_read32(), iwl_write8(), and iwl_write32() are reused.

3. The main functions are maintained in new files instead of spreading all over the
existing iwlwifi driver files.

The new files added are :

drivers/net/wireless/iwlwifi/iwl-sv-open.c
- to handle the user space test mode application command
and reply the respective command status to the user space application.
- to multicast the spontaneous messages from device to user space.

drivers/net/wireless/iwlwifi/iwl-testmode.h
- the commonly referenced definitions for the TLVs used in
the generic netlink messages

Signed-off-by: Cindy H. Kao <cindy.h.kao@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
16b80b714f8ef86d47680e4afa0eeb8cc61daef4 21-Apr-2011 Don Fry <donald.h.fry@intel.com> iwlagn: semaphore and calib cleanup

All agn devices use the same eeprom semaphore and calib version routines.
Delete the indirection and move the semaphore routines to where they are
used and make static.

Signed-off-by: Don Fry <donald.h.fry@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
b4ed221daba1b129c3efff8a7352d9791d034330 30-Apr-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: new 105 series device

Correction for new 105 series devices

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
c3f6e9cff950c312d409e5767365aeb2475b2ab7 20-Apr-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: make rxon_assoc static function

Move rxon_assoc to static function from ops

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
dbf28e21ca391110e90ccad05dda79d2e2f60e0e 16-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: combine firmware code/data

On new hardware, ucode images always come in
pairs: code and data. Therefore, combine the
variables into an appropriate struct and use
that when both code and data are needed.

Also, combine allocation and copying so that
we have less code in total.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
ca7966c88e44233fac113579071a6f55e00ef5ac 22-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: implement synchronous firmware load

The current firmware loading mechanism in
iwlwifi is very hard to follow, and thus
hard to maintain. To make it easier, make
the firmware loading synchronous.

For now, as a side effect, this removes a
number of retry possibilities we had. It
isn't typical for this to fail, but if it
does happen we restart from scratch which
this also makes easier to do should it be
necessary.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
a8674a1efca60d863d4caa47e102cc4d70d5ff9b 13-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: make iwlagn_wait_notification return error code

We're unlikely to care about the actual time spent
waiting, so make the function return an error code
which is less error prone in coding new uses.

Also, while at it, mark __must_check.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
09f18afe766ea3f2c749e3af195bf65fde71b62e 13-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: extend notification wait function

A notification wait function is called with the
command, but currently has no way of passing
data back to the caller -- fix that by adding a
void pointer to the function that can be used
between the caller and the function.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
3e14c1fd75d909bfcc6caab79c544921fd02bf73 13-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: refactor up path

Starting the device consists of many things,
refactor out enabling the hardware and also
return -ERFKILL when the rfkill signal is
found to be asserted (which makes more sense
anyway, but is also required now to make the
__iwl_up function return right away.)

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
bc4f8adac6b30ee5f03dad267896add7e58db729 13-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: refactor down path

The iwl_down path really consists of multiple things,
refactor out the hardware resetting (including, of
course, related software state like irqs).

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
68b993118f715cc631b62b6a50574e4701fe9ace 30-Mar-2011 Garen Tamrazian <garenx.tamrazian@intel.com> iwlagn: fix radar frame rejection

The microcode may sometimes reject TX frames when
on a radar channel even after we associated as it
clears information during association and needs to
receive a new beacon before allowing that channel
again. This manifests itself as a TX status value
of TX_STATUS_FAIL_PASSIVE_NO_RX. So in this case,
stop the corresponding queue and give the frame
back to mac80211 for retransmission. We start the
queue again when a beacon from the AP is received
which will make the regulatory enforcement in the
device allow transmitting again.

Signed-off-by: Garen Tamrazian <garenx.tamrazian@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
3ecccbcd3c67374aeee447c08fcb9e39a99f7ee5 30-Mar-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: remove un-necessary function pointer

After driver split, no need to use function pointer for those event and
register dump function.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
901069c71415a76d731857ccda814e18ded062f7 05-Apr-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: change Copyright to 2011

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-agn.h
35b1d92dfb361d24664381a0e4ae8ed47c771a66 05-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: verify specific ucode

When we loaded a ucode, there's no point in
checking any one that is present, we know
which one is supposed to be present so also
verify that it is exactly the right one.

That also simplifies the code and makes it
faster since it doesn't have to check all.

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-agn.h
2dedbf58b2edbe940d370845dbf4210f1ddd2b31 05-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: make mac80211 handlers static

Now that these handlers are no longer shared
between 4965 and agn, they can be static.

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-agn.h
3240cab3ddfb2637cfca3a078078cdeda44d0a99 05-Apr-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: clean up some 3945/4965 remnants

When the driver was split, a bunch of definitions
for the 3945 and 4965 devices stayed around, but
they're now useless so remove (some of) them.

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-agn.h
2520546aecc969372080448a2422b39eedb2a528 19-Mar-2011 Daniel Halperin <dhalperi@cs.washington.edu> iwlwifi: add RATE_MCS_RATE_MSK

Throughout the code we use rate_n_flags & 0xff to extract the lower byte
of the rate_n_flags u32 that contains the information about the rate.
Add a #define and remove the use of the magic number.

Signed-off-by: Daniel Halperin <dhalperi@cs.washington.edu>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
c8823ec1337017e23b99fb0814e2f3d62537f811 15-Mar-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: fix aggregation queue scheduler setup

iwlagn's hardware scheduler needs to be set up
with the right aggregation frame limit and
buffer sizes. To achieve this, we need to move
the hardware queue setup to when the session
becomes operational.

Tested-by: Daniel Halperin <dhalperi@cs.washington.edu>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
7ffef13d7a24654292c4641450f2794224b9eb5d 15-Mar-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: clean up TX aggregation code

Since the driver split, there's no need for
function pointers any more for aggregation
queue setup and teardown as all devices now
share the same code. Simplify this.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
466a19a003f3b45a755bc85f967c21da947f9a00 04-Mar-2011 Stanislaw Gruszka <sgruszka@redhat.com> iwlwifi: move rx handlers code to iwl-rx.c

Put generic rx_handlers (except iwlagn_rx_reply_compressed_ba) to
iwl-rx.c . Make functions static and change prefix from iwlagn_ to
iwl_ . Beautify iwl_setup_rx_handlers and do some other minor coding
style changes.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
ad6e82a5348e494c0023d77fa55933f23b55711c 28-Feb-2011 Stanislaw Gruszka <sgruszka@redhat.com> iwlwifi: move check health code into iwl-rx.c

Remove check_plcp_health and check_ack_health ops methods, they are
unneeded after iwlegacy driver split. Merge check health code into to
iwl-rx.c and make functions static.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
7bb4568372856688bc070917265bce0b88bb7d4d 24-Feb-2011 Johannes Berg <johannes.berg@intel.com> mac80211: make tx() operation return void

The return value of the tx operation is commonly
misused by drivers, leading to errors. All drivers
will drop frames if they fail to TX the frame, and
they must also properly manage the queues (if they
didn't, mac80211 would already warn).

Removing the ability for drivers to return a BUSY
value also allows significant cleanups of the TX
TX handling code in mac80211.

Note that this also fixes a bug in ath9k_htc, the
old "return -1" there was wrong.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Tested-by: Sedat Dilek <sedat.dilek@googlemail.com> [ath5k]
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com> [rt2x00]
Acked-by: Larry Finger <Larry.Finger@lwfinger.net> [b43, rtl8187, rtlwifi]
Acked-by: Luciano Coelho <coelho@ti.com> [wl12xx]
Signed-off-by: John W. Linville <linville@tuxdriver.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
c5a5e1853a6d87eb9f58bf8930e267d619dd24f6 22-Jan-2011 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: 2000 series devices support

Adding 2000 series devices supports, the 2000 series devices has
many different SKUs which includes 1x1 and 2x2 devices,also with
and without BT combo.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
7194207ceea7a54c846e0865d2459f4887fe1e0d 05-Jan-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: add support for waiting for notifications

In order to implement waiting for notifications,
add a structure that captures the information,
and a list of such structures that will be
traversed when a command is received from the
ucode.

Use sparse checking to make sure calls to the
prepare/wait/cancel functions are always nested
correctly.

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-agn.h
f945f1087f1fe20f9c626daa175b677736fc614d 05-Jan-2011 Johannes Berg <johannes.berg@intel.com> iwlagn: make iwl_rx_handle static

It's not used or likely to be needed from other
files, so it can be static.

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-agn.h
0b01f030d38e00650e2db42da083d8647aad40a5 18-Jan-2011 Johannes Berg <johannes.berg@intel.com> mac80211: track receiver's aggregation reorder buffer size

The aggregation code currently doesn't implement the
buffer size negotiation. It will always request a max
buffer size (which is fine, if a little pointless, as
the mac80211 code doesn't know and might just use 0
instead), but if the peer requests a smaller size it
isn't possible to honour this request.

In order to fix this, look at the buffer size in the
addBA response frame, keep track of it and pass it to
the driver in the ampdu_action callback when called
with the IEEE80211_AMPDU_TX_OPERATIONAL action. That
way the driver can limit the number of subframes in
aggregates appropriately.

Note that this doesn't fix any drivers apart from the
addition of the new argument -- they all need to be
updated separately to use this variable!

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
8b3ee29626031155c7844988ebe4321c151c03a2 18-Nov-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: remove structure name reference to gen2

Give the corresponding name for .cfg data structure

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
ae79d23d0b2c16998e60f49a16dae53521c76a45 10-Nov-2010 Johannes Berg <johannes.berg@intel.com> iwlagn: fix non-5000+ build

When building 4965 without 5000+ there were a
lot of build errors due to functions being used
that weren't even compiled in. To fix this move
some code around and only compile the HCMD code
for 5000+ series as it's not used for 4965.

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-agn.h
2295c66b68ae160dde2e6e2dc4f3061105153bfc 23-Oct-2010 Johannes Berg <johannes.berg@intel.com> iwlagn: new RXON processing for modern devices

In order to simplify the flow, and make new
enhancements easier, separate out the RXON
processing for modern AGN (5000 and newer)
from RXON processing for the older 3945 and
4965 devices. Avoid changing these old ones
to avoid regressions and move their code to
a new file (iwl-legacy.c). 4965 gets the
commit_rxon that used to be common for all
AGN devices, but with removed PAN support.

The new RXON processing is more central and
does more work in committing, so that it is
easier to follow.

To make it more evident what is split out
for legacy, split the necessary operations
for that into a new struct iwl_legacy_ops.
Those parts that still exist in the new AGN
code don't need to be parametrized.

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-agn.h
dc21b5453249e7e9b8878fab356fd60b731cf04d 23-Oct-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: make mac80211 ops a device config

In the future, 4965 and modern AGN devices will
need to have different mac80211 callbacks since
they have different capabilities. Prepare for
that by making the mac80211 operations a device
config.

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-agn.h
3be63ff0ae196b371728ba8fc8aca12eafcae218 09-Oct-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move agn only eeprom functions to separate file

Some of the functions in iwl-eeprom.c file are for agn devices only,
Those functions do not have to be part of iwlcore.ko, so move those
to iwl-agn-eeprom.c file.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
0de76736552cff02cc6ee4bae41e5502d7673f8e 22-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: clean up declarations

A number of declarations in iwl-core.h should
be in agn specific files, and also rename the
iwl-calib.h file to iwl-agn-calib.h to better
reflect that it belongs to agn.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
84fac3d9604147db37bd8c68897f79442d7ed714 22-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: move iwl_dump_fh to agn

The iwl_dump_fh function is only used
by the agn module, so it can be there
instead of being exported by the core.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
fed732920bf9d96a95804a499ca586ff745540cd 22-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: move iwl_dump_csr to agn

The iwl_dump_csr function is only used
within the agn module, so it can be
moved there instead of being exported
by the core.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
facd982e8246ed25a049d270a71513fb11b901ec 22-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: move iwl_toggle_rx_ant to agn

The iwl_toggle_tx_ant function is only used
by agn code, so it can be moved into the
agn module instead of being exported from
the core.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
69fdb710b29d096bc50123f7c97891e31ffe45f9 22-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: move tx fail code to agn

The code to print out TX failure reasons is
AGN specific, so it can be in the AGN module.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
a30e3112a8bcb5bc1caa48547e597de3992e1b21 22-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: move agn specific station code there

By duplicating a little bit of code between 3945
and agn, we can move a lot of code into an agn
specific station management file and thus reduce
the amount of code in core that is dead to 3945.

before:
text data bss dec hex filename
212886 3872 96 216854 34f16 iwlcore.ko
620542 10448 304 631294 9a1fe iwlagn.ko
314013 3264 196 317473 4d821 iwl3945.ko

after:
text data bss dec hex filename
202857 3872 92 206821 327e5 iwlcore.ko
629102 10448 308 639858 9c372 iwlagn.ko
314240 3264 196 317700 4d904 iwl3945.ko

delta:
-10029 iwlcore.ko
8560 iwlagn.ko
227 iwl3945.ko

so it's a net win even if you have both loaded,
likely because a lot of EXPORT_SYMBOLs go away.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
5de33068a2f841536ca8632534e3e193d5b2607f 22-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: move chain settings to agn

The core module doesn't need to carry around
the code for chain settings that is used for
HT drivers (agn) only.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
a77029ee3fc03a37238b73892e55b789273991aa 22-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: introduce post_scan hook

The different drivers need to do different things
after a scan, so create a post_scan hook to allow
them to do this.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
7314c2b377afaf367f2966bd9ea67bf83350e29b 22-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlagn: rename iwl_commit_rxon

iwl_commit_rxon really should be named
iwlagn_commit_rxon, so rename it.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
58a39090a13cf296afc17ed8fd793a55340b63db 06-Oct-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: define 130 series of WiFi/BT combo devices

add new structures and defines need to identify 130 devices.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
1de19eccb3fe634e939cb40f30fdfda93a67fe93 15-Sep-2010 Jay Sternberg <jay.e.sternberg@intel.com> iwlwifi: define 100 devices

add new structures and defines need to identify 100 devices.

Signed-off-by: Jay Sternberg <jay.e.sternberg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
95b49ed013c9a8856ce768d8d4a62acfc410f73d 05-Sep-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: adding aggregated frame failure status to debugfs

Addition to standard tx frame failure report, adding aggregated
frame failure report to debugfs

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
3eecce527c7434dfd16517ce08b49632c8a26717 13-Sep-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: unify scan start checks

Rather than duplicating all the checks and even
in case of errors accepting the scan request
from mac80211, we can push the checks to the
caller and in all error cases reject the scan
request right away (rather than accepting and
then saying it was aborted).

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi W Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
f7322f8f05f5755252e96d772fdcf9ca4304dc69 24-Aug-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: open/close envlope to force move BT state machine

In uCode, BT state machine need to receive open envlope
command before perform calibration; followed by close envlope
command to move to next stage.

Since Linux has two separated uCode, one for init and the second
one for runtime; we use open envlope commands for init uCode to
indicate we are ready to perform calibration operation.
But for runtime uCode, we are not doing any init calibration,
so we issue open/close envlope commands to force uCode move to
"BT COEX ON" state.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
246ed355221076884d225f9d8a4c30a048be8162 23-Aug-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: initial contextification

In order to support multiple interfaces, we must move
a lot of data into per-context structures so we can
use the contexts the device offers. To start with,
this makes a lot of code context-aware, more changes
will move more things into the context structure.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
b6e116e8bf7d749b0743c167bd47930c22c77a82 23-Aug-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlagn: generic bt coex functions

Move bt coex functions to iwl-agn-lib.c, so those functions
can be shared by multiple wifi/bt combo devices

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-agn.h
0326433995ad43b64ebabdd2390a5d11f33f025b 30-Jun-2010 Shanyu Zhao <shanyu.zhao@intel.com> iwlwifi: enable 6050 series Gen2 devices

To enable 6050 series Gen 2 devices:
1) new PCI_IDs are added;
2) new EEPROM version and calibration version numbers defined;
3) new hardware REV number defined;

Signed-off-by: Shanyu Zhao <shanyu.zhao@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
6555063666fea1fc81a14396aca53ab021ccb4f2 24-Jun-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: add support for device tx flush request

"Flush" request can come from two different sources, it can either from
mac80211, or from device when the operation is needed. Here
adding the support for device issue "flush" request.

When receive tx complete with status is TX_STATUS_FAIL_RFKILL_FLUSH,
issue REPLY_TXFIFO_FLUSH command to uCode to flush out all the tx frames
in queues.

In this condition, since mac80211 has no knowledge of "flush" operation,
driver need to stop all the tx queues and wait for the operation
completed before wake up the queues for frames transmission.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
716c74b00717ad9caedb4a46059fb64a3da99808 24-Jun-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: add mac80211 flush callback support

Adding flush callback support in the driver. Two type of flush can be
issued by mac80211:
1. drop = true: frame drop is ok, issue REPLY_TXFIFO_FLUSH host command
to uCode to drop all the frames in tx fifo queues; then return the
control back to mac80211
2. drop = false: wait for either all the frames in tx fifo queues been
transmitted, or timeout; then return the control back to mac80211

If the flush request coming from mac80211, mac80211 will make sure there
are no additional frames push down to driver before flush operation is
completed.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
278fc73c0c6014bc2f55bce898bdeaa322bf4aba 15-Jun-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move agn specific rx related code to iwl-agn-rx.c

To avoid having unnecessary functions in iwlcore.ko, those that
are not shared by agn and 3945, move agn specific rx related code
to iwl-agn-rx.c.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
9f6e1bafac4f3c58c8a670496adcc4d313d3c7f7 12-May-2010 Shanyu Zhao <shanyu.zhao@intel.com> iwlwifi: add new PCI IDs for 6000g2 devices

Add new PCI IDs for 6000 Series Gen2 devices
and also defines a new sku of device: 6000g2b 2x2 bgn.

Signed-off-by: Shanyu Zhao <shanyu.zhao@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
db41dd27a079ec498fab9dc788094375ea0d1761 10-May-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move ucode related function to iwl-agn-ucode.c

Cleanup the code and move all the uCode related functions specific to _agn
devices to iwl-agn-ucode.c

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
bd93cbedfc4b280a0eeb6665ad310c3cc96cd669 06-May-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: code cleanup for _agn devices

Move configuration structure for _agn devices from iwl-dev.h to
iwl-agn.h. Those data structures are for _agn devices and should be keep
for _agn devices only.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
1808972f16adba592ceb10a47dee42ef8ee39cee 06-May-2010 Shanyu Zhao <shanyu.zhao@intel.com> iwlwifi: enable remaining 6000 Gen2 devices

This patch enables all remaining 6000 series Gen2 devices.
To work-around a firmware crash problem, we disable sending
bt coex command for 6000g2b series devices.

Signed-off-by: Jay Sternberg <jay.e.sternberg@intel.com>
Signed-off-by: Shanyu Zhao <shanyu.zhao@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
1ff504e07c0fb64a1ceca17d60cb2d82dc134f05 03-May-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: move iwl_free_tfds_in_queue to iwlagn

This function is only used by the agn drivers,
so doesn't have to be in core and exported.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
619753ff57a2e15b58546b856536928d1a3daef9 30-Apr-2010 Johannes Berg <johannes.berg@intel.com> iwlagn: use iwl_sta_id() for aggregation

With the station ID being stored in the
station struct, which mac80211 gives us
for aggregation callbacks, we can also
remove the use of iwl_find_station() in
those code paths.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
832f47e333c7d0db632b57e9f07956ae40dd481d 29-Apr-2010 Johannes Berg <johannes.berg@intel.com> iwlagn: use virtual interface in TX aggregation handling

Most of the TX aggregation handling can be passed
the virtual interface directly instead of having
to rely on priv->vif.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
1dda6d28377bec52f96767e8d4a59aa95102b9dd 29-Apr-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: push virtual interface through

Rather than keeping every bit of information
around in priv and the virtual interface, add
a virtual interface to many functions and use
the information directly from it.

This removes beacon_int, assoc_capability and
assoc_id from struct iwl_priv.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
22adba2a6995dc24663251ffb954f8856968f26e 28-Apr-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: remove ucode virtual functions

AGN devices all use the same ucode operations,
except for 4965, because 4965 uses only v1 file
headers.

Therefore, we can remove all the indirection
we have here and just code the API distinction
in place, with a small special case for 4965.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
1fa61b2e793dad51271c7ce39377daade51261d7 28-Apr-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: manage IBSS station properly

Currently iwlwifi will eventually exhaust the station
table when adding the BSSID station for IBSS mode,
unless the interface is set down.

The new mac80211 ibss joined/left notification allows
us to fix that easily by moving the code to add the
IBSS station to the notification, and also adding
code to remove it again when we leave the IBSS.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
b6e4c55aaee4fd40526a6816e60c68dd62e565c4 06-Apr-2010 Johannes Berg <johannes.berg@intel.com> iwlwifi: trigger scan synchronously

Scan requesting doesn't need to be asynchronous
since all code paths leading up to it can sleep.
Make the scan request a new util operation that
is hw-specific (to account for 3945 vs. agn)
and call it right in place.

This patch moves a lot of code into iwlagn as
it need not be in iwlcore.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
470058e0ad82fcfaaffd57307d8bf8c094e8e9d7 02-Apr-2010 Zhu Yi <yi.zhu@intel.com> iwlwifi: avoid Tx queue memory allocation in interface down

We used to free all the Tx queues memory when interface is brought
down and reallocate them again in interface up. This requires
order-4 allocation for txq->cmd[]. In situations like s2ram, this
usually leads to allocation failure in the memory subsystem. The
patch fixed this problem by allocating the Tx queues memory only at
the first time. Later iwl_down/iwl_up only initialize but don't
free and reallocate them. The memory is freed at the device removal
time. BTW, we have already done this for the Rx queue.

This fixed bug https://bugzilla.kernel.org/show_bug.cgi?id=15551

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Acked-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
04569cbe7653fe0057acc46afc07f2c2fd2508b3 01-Apr-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: update tx command response status

Update to include additional tx command response status for "_agn"
devices.

The following status indicate the transmission was postponed:
TX_STATUS_POSTPONE_DELAY
TX_STATUS_POSTPONE_FEW_BYTES
TX_STATUS_POSTPONE_BT_PRIO
TX_STATUS_POSTPONE_QUIET_PERIOD
TX_STATUS_POSTPONE_CALC_TTAK

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
8d801080dd8d28bf7d85cacba131f18b7653ee49 17-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: more clean up to move agn only rx functions from iwlcore to iwlagn

Move more functions only used by agn driver from iwlcore to iwlagn.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
54b81550dd674466fe7d01629d2aab015c545a1e 17-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move agn only rx functions from iwlcore to iwlagn

Identify the rx functions only used by agn driver and move those from
iwlcore to iwlagn.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
74bcdb33e99f49ef5202dd2f8109945b4570edc2 17-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move agn only tx functions from iwlcore to iwlagn

Identify the tx functions only used by agn driver and move those from
iwlcore to iwlagn.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
348ee7cd57831c47373dd157f138c558daaf129d 16-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move agn module parameter structure to common place

agn module parameter data structure shared by all agn devices, move it
iwl-agn-lib.c file.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
e04ed0a5bb62520345c73587d7ebf51e426642ee 17-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move agn common code to iwlagn library file

Multiple iwlagn based devices share the same common functions.
Move those functions from iwl-5000.c to iwl-agn-lib.c file.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
741a626627e42812afd957f875c34c89be8a103e 16-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move ucode alive related code to separate file

uCode alive for iwlagn based devices share the same functions.
Move those functions from iwl-5000.c to iwl-agn-ucode.c.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
b305a08058f794c8a99c5ee87827b92d6b8c24ae 17-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move tx queue related code to separate file

Multiple iwlagn based devices shared the same tansmit queue functions.
Move tx queue related code from iwl-5000.c to iwl-agn-tx.c file.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
7dc77dba6a8bde512996824643da5669d73cbcdc 16-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move hcmd related code to separate file

Multiple iwlagn based devices shared the same hcmd related functions.
Move from iwl-5000.c to iwl-agn-hcmd.c file.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
81b8176eb8edac7d2135db2af03ab5fe0cb3b6f7 16-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: code cleanup for "load ucode" function

Loading uCode functions are shared across multiple agn devices.
Move those functions to iwl-agn-ucode.c file with other uCode
related functions.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
792bc3cbe06cddabd865acc3122ee0415f854a11 16-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: move ucode loading related code to separated file

Multiple iwlagn based devices shared the same ucode loading procedure.
Move loading related code from iwl-5000.c to iwl-agn-ucode.c file.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
872c8ddcbec06995c1c7caa3e41c921290a8b6df 16-Mar-2010 Wey-Yi Guy <wey-yi.w.guy@intel.com> iwlwifi: iwl_good_ack_health() only apply to AGN device

iwl_good_ack_health() check for expected and actual ack count which only
apply to aggregation mode. Move the function to iwlagn module.

Reported-by: Chantry Xavier <chantry.xavier@gmail.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h
a1175124f34a4b859b5064efb84a197e4f6794a6 21-Jan-2010 Johannes Berg <johannes.berg@intel.com> iwlagn: move ICT code into separate file

All the ICT ISR code is iwlagn specific, and doesn't
need to be in iwlcore. So create a new iwl-agn.h
header file that will hold agn specific function
declarations etc., and move the ICT code into a new
iwl-agn-ict.c file that is linked into iwlagn. This
also gets rid of exporting those symbols.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
/drivers/net/wireless/iwlwifi/iwl-agn.h