History log of /drivers/net/wireless/iwlwifi/pcie/trans.c
Revision Date Author Comments
87dd634ae72bb8f6d0dd12f1cbbc67c7da6dba3b 10-Nov-2014 Liad Kaufman <liad.kaufman@intel.com> iwlwifi: pcie: fix prph dump length

The length counting previously done had an error in it, causing
the length down the data dumping function to be shorter than it
should be, causing the end of the data to get truncated off and
lost.

Cc: <stable@vger.kernel.org> [3.17+]
Fixes: 67c65f2cf710 ("iwlwifi: dump periphery registers to fw-error-dump")
Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
31b8b343e019e0a0c57ca9c13520a87f9cab884b 02-Nov-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: fix RFkill while calibrating

If the RFkill interrupt fires while we calibrate, it would
make the firmware fail and the driver wasn't able to recover.
Change the flow so that the driver will kill the firmware
in that case.

Since we have now two flows that are calling
trans_stop_device (the RFkill interrupt and the
op_mode_mvm_start function) - we need to better sync this.
Use the STATUS_DEVICE_ENABLED in the pcie transport in an
atomic way to achieve this.

This fixes: https://bugzilla.kernel.org/show_bug.cgi?id=86231

CC: <stable@vger.kernel.org> [3.10+]
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Luciano Coelho <luciano.coelho@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
7f2ac8fb31896c9fb70dbd2a2e6642b79996fc13 23-Oct-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: fix polling in various places

iwl_poll_bit may return a strictly positive value when the
poll doesn't match on the first try.
This was caught when WoWLAN started failing upon resume
even if the poll_bit actually succeeded.

Also change a wrong print. If we reach the end of
iwl_pcie_prepare_card_hw, it means that we couldn't
get the devices.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Luciano Coelho <luciano.coelho@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
9180ac50716a097a407c6d7e7e4589754a922260 23-Sep-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: configure the LTR

The LTR is the handshake between the device and the root
complex about the latency allowed when the bus exits power
save. This configuration was missing and this led to high
latency in the link power up. The end user could experience
high latency in the network because of this.

Cc: <stable@vger.kernel.org> [3.10+]
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
1fc0e22138406ac0e8451f7203dfbfd74fa5cfba 17-Sep-2014 Liad Kaufman <liad.kaufman@intel.com> iwlwifi: pcie: fix HW_REV saving for 8000 series

Align the trans->hw_rev variable format with previous series
format.

Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
c2a2b28bb7fbcb8e0e11b84714992750bba7b699 07-Sep-2014 Liad Kaufman <liad.kaufman@intel.com> iwlwifi: make hw rev checking more readable

Rather than ANDing with a mask - use existing macros, which
are more readable.

Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
3a736bcb18f797996064cf18f4eecc4b3e46d39a 10-Sep-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: trans: don't configure the set_active in SCD for dvm

This configuration is not needed for dvm, and it actually
broke it.

Reported-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
8b4139dc9f2171f313fc703c08269f6f8a6f6fc4 24-Jul-2014 Johannes Berg <johannes.berg@intel.com> iwlwifi: add Intel Mobile Communications copyright

Our legal structure changed at some point (see wikipedia), but
we forgot to immediately switch over to the new copyright
notice.

For files that we have modified in the time since the change,
add the proper copyright notice now.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
473ad712a49f8a7d9d2c5924a964a81a7ebf2e06 08-Jul-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: dump CSRs to fw-error-dump

Add the Control Status Registers to the firmware error dump
infrastructure.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
67c65f2cf7105f139909bad79c048e8aec0dc140 26-Jun-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: dump periphery registers to fw-error-dump

Use the fw-error-dump infrastructure to dump the periphery
registers. Only certain ranges are readable, so dump only
these.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
48eb7b34ff027392985fae213c4d1d0fcc425b9c 08-Jul-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: split fw-error-dump between transport and mvm

The mvm op_mode won't allocate the buffer for the transport
any more. The transport allocates its own buffer and mvm
is in charge of splicing the buffers in the debugfs hook.

This makes the repartition easier to handle.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
c544e9c4c32acb222782aeff2f24e55e7497e4bc 26-Jun-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: rename iwl_fw_error_fw_mon to iwl_fw_error_dump_fw_mon

This is matches the convention of the other structures.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
b513ee7fd6dd5ca6498eee99fa46c0d6c0f21c9d 01-Jun-2014 Liad Kaufman <liad.kaufman@intel.com> iwlwifi: update trans->hw_rev 8000 hw family format

The format of the CSR_HW_REV register has changed in 8000
HW family. To keep backwards compatibility, we store the
value of this register as usual in trans->hw_rev, only we
store it in the old format in this variable.

Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
f40faf623712153a64f39d2bddad2fc5a4f5e12d 07-Jun-2014 Andy Lutomirski <luto@amacapital.net> iwlwifi: pcie: improve debugfs queue info

This adds need_update and write_actual to rx_queue and need_update
and an HCMD indicator to tx_queue.

On my card, rx_queue now looks like:

read: 181
write: 180
write_actual: 176
need_update: 0
free_count: 40
closed_rb_num: 181

tx_queue now looks like:

hwq 00: read=29 write=30 use=1 stop=0 need_update=0
hwq 01: read=0 write=0 use=1 stop=0 need_update=0
hwq 02: read=128 write=128 use=1 stop=0 need_update=0
hwq 03: read=0 write=0 use=1 stop=0 need_update=0
hwq 04: read=94 write=94 use=1 stop=0 need_update=0 HCMD
hwq 05: read=0 write=0 use=0 stop=0 need_update=0
hwq 06: read=0 write=0 use=0 stop=0 need_update=0
hwq 07: read=0 write=0 use=0 stop=0 need_update=0
hwq 08: read=0 write=0 use=0 stop=0 need_update=0
hwq 09: read=0 write=0 use=0 stop=0 need_update=0
hwq 10: read=0 write=0 use=0 stop=0 need_update=0
hwq 11: read=0 write=0 use=0 stop=0 need_update=0
hwq 12: read=0 write=0 use=0 stop=0 need_update=0
hwq 13: read=0 write=0 use=0 stop=0 need_update=0
hwq 14: read=0 write=0 use=0 stop=0 need_update=0
hwq 15: read=0 write=0 use=0 stop=0 need_update=0
hwq 16: read=0 write=0 use=0 stop=0 need_update=0
hwq 17: read=0 write=0 use=0 stop=0 need_update=0
hwq 18: read=0 write=0 use=0 stop=0 need_update=0
hwq 19: read=0 write=0 use=0 stop=0 need_update=0

This may help with debugging queue stalls.

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
c2d202017da18ebd6567862bd9a50392970f048f 01-Jun-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: add firmware monitor capabilities

This allows to use the firmware monitor. This capability
uses a lot of contiguous memory (up to 64MB), so make its
usage module parameter dependent.

The driver will try to allocate as much contiguous memory
as possible downgrading its requirements until the
allocation succeeds.

Dump this data into the fw-error dump file when an error
happens.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
501fd9895c1d7d8161ed56698ae2fccb10ef14f5 07-May-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: try to get ownership several times

Some races with the hardware can happen when we take
ownership of the device. Don't give up after the first try.

Cc: <stable@vger.kernel.org>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
83f7a85f1134c6e914453f5747435415a23d516b 13-Apr-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: disable interrupts upon PCIe alloc

In case RFKILL is in KILL position, the NIC will issue an
interrupt straight away. This interrupt won't be sent
because it is masked in the hardware.
But if our interrupt service routine is called for another
reason (SHARED_IRQ), then we'll look at the interrupt cause
and service it. This can cause bad things if we are not
ready yet.
Explicitly clean the interrupt cause register to make sure
we won't service anything before we are ready to.

Cc: <stable@vger.kernel.org> [3.14]
Reported-and-tested-by: Alexander Monakov <amonakov@gmail.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
4d075007d60f871a1d8842809f92b0d23487173a 24-Apr-2014 Johannes Berg <johannes.berg@intel.com> iwlwifi: mvm/pcie: capture last commands on firmware error

When a firmware error occurs, capture the last 32 commands
(which are still in memory) in the error dump debugfs file.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
83f32a4b4aa73f36ecc799e22174fe78ed5cb2af 24-Apr-2014 Johannes Berg <johannes.berg@intel.com> iwlwifi: pcie: get rid of q->n_bd

This variable always tracks a constant value (256) so there's
no need to have it. Removing it simplifies code generation,
reducing the .text size (by about 240 bytes on x86-64.)

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
748fa67cb76608457d03f3932874b9baddb4d8bf 27-Mar-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: mvm: replace BUG_ON by WARN_ON in scan.c

While the scan_cmd should really be allocated in init (and
we do fail init in case the allocation failed), it doesn't
mean we should lock up the machine if something really bad
happened.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
fa1a91fd76a1fda3ff59b84ed5ab7bf7fd72b2c4 24-Mar-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: WARN upon traffic while flushing TX queues

This must not happen - otherwise we might keep flushing
forever.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
3cafdbe6ad6ff0af74cf7953737475732d34ca66 24-Mar-2014 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: allow to wait for a subset of the queues

This will be used later to flush / wait for queues that are
related to a specific vif.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
69e921317b2489210e77f3cc99323446c6a0d85b 25-Mar-2014 Eran Harary <eran.harary@intel.com> iwlwifi: move CPU1_CPU2_SEPARATOR_SECTION to iwl-fw.h

This define is related to the firmware packaging and is
needed by more than one transport.

Signed-off-by: Eran Harary <eran.harary@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
f14d6b39c0b3519f8148e1371d2149c148893b61 21-Mar-2014 Johannes Berg <johannes.berg@intel.com> iwlwifi: pcie: implement GRO without NAPI

Use the new NAPI infrastructure added to mac80211 to get
GRO. We don't really implement NAPI since we don't have
a real poll function and we never schedule a NAPI poll.
Instead of this, we collect all the packets we got from a
single interrupt and then call napi_gro_flush().

This allows us to benefit from GRO. In half duplex medium
like WiFi, its main advantage is that it reduces the number
of TCP Acks, hence improving the TCP Rx performance.

Since we call the Rx path with a spinlock held, remove
the might_sleep mention from the op_mode's API.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Ido Yariv <ido@wizery.com>
[Squash different patches and rewrite the commit message]
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
14cfca7152ae5d10b15baf01c7fd60f0f0871062 25-Feb-2014 Johannes Berg <johannes.berg@intel.com> iwlwifi: return whether to stop from rfkill method

When indicating RF-kill toggle to the higher layer, that
may in turn call back to the transport (for MVM at least)
to turn off the device quickly. Instead of that, allow it
to return whether or not the device should be turned off,
this gets rid of the call indirection and will help make
the API more consistent when we go back to non-threaded
interrupts again for PCIe.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
a812cba9bb141225ce28a48b60038e115620bccd 18-Feb-2014 Alexander Bondar <alexander.bondar@intel.com> iwlwifi: pcie: enable LP XTAL to reduce power consumption

1. Enable LP XTAL to avoid HW bug where device may consume much
power if FW is not loaded after device reset. LP XTAL is
disabled by default after device HW reset. Configure device's
"persistence" mode to avoid resetting XTAL again when SHRD_HW_RST
occurs in S3.

2. Add methods to access SHR (shared block memory space) directly from PCI
bus w/o need to power up MAC HW.

Shared internal registers (e.g. SHR_APMG_GP1, SHR_APMG_XTAL_CFG)can be
accessed directly from PCI bus through SHR arbiter even when MAC HW is
powered down. This is possible due to indirect read/write via
HEEP_CTRL_WRD_PCIEX_CTRL (0xEC) and HEEP_CTRL_WRD_PCIEX_DATA (0xF4)
registers.

Use iwl_write32()/iwl_read32() family to access these registers. The MAC HW
need not be powered up so no "grab inc access" is required.

For example, to read from SHR_APMG_GP1 register (0x1DC),
first, write to the control register:
HEEP_CTRL_WRD_PCIEX_CTRL[15:0] = 0x1DC (offset of the SHR_APMG_GP1 register)
HEEP_CTRL_WRD_PCIEX_CTRL[29:28] = 2 (read access)
second, read from the data register HEEP_CTRL_WRD_PCIEX_DATA[31:0].

To write the register, first, write to the data register
HEEP_CTRL_WRD_PCIEX_DATA[31:0] and then:
HEEP_CTRL_WRD_PCIEX_CTRL[15:0] = 0x1DC (offset of the SHR_APMG_GP1 register)
HEEP_CTRL_WRD_PCIEX_CTRL[29:28] = 3 (write access)

Signed-off-by: Alexander Bondar <alexander.bondar@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
034846cfd23e00a70b48363d70dccc3f8d537053 29-Jan-2014 Eran Harary <eran.harary@intel.com> iwlwifi: mvm: support multiple firmware sections

Newer devices have two embedded CPUs, and the firwmare for
both of them is include in the .ucode file requested upon
enumeration.
An empty section with address=0xFFFFCCCC separates between
the sections intended for cpu1 and the sections intended
for cpu2.
Update the driver to parse the .ucode file with this format
and act accordingly.

Signed-off-by: Eran Harary <eran.harary@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
56c2477f23c3bb3aa33516301b3eab0efe05bbe1 21-Jan-2014 Johannes Berg <johannes.berg@intel.com> iwlwifi: pcie: make FH debugfs file code easier to understand

The code seems fine, as buf won't be assigned when an error
is returned, but checking for the error first is easier to
understand.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
189fa2faac49bce07c6c6d83eca21cbe5bf47411 23-Jan-2014 Eran Harary <eran.harary@intel.com> iwlwifi: pcie: fix secure section / dual cpu firmware loading

Also handle the bypass mode in which the second CPU doesn't
interfere.

Signed-off-by: Eran Harary <eran.harary@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
e4a9f8cea50406a57c8dc5429d9aca6429d82436 22-Dec-2013 Eran Harary <eran.harary@intel.com> iwlwifi: pcie: Disable L0S exit timer for 8000 HW family

This configuration is invalid for this family.

Signed-off-by: Eran Harary <eran.harary@intel.com>
Reviewed-by: Dor Shaish <dor.shaish@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
e12ba844acc0cc212adef6c2d5f9251ea787c822 01-Dec-2013 Eran Harary <eran.harary@intel.com> iwlwifi: pcie: change CSR reset in family 8000

This register is not present in 8000 family devices.
There is prph register instead.

Signed-off-by: Eran Harary <eran.harary@intel.com>
Reviewed-by: Dor Shaish <dor.shaish@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
3073d8c0c51c0b766d35ae3beb6b29948be2ee00 29-Dec-2013 Eran Harary <eran.harary@intel.com> iwlwifi: pcie: disable APMG configurations for family 8000

APMG HW block was removed in this NIC, hence, no need to
configure it.

Signed-off-by: Eran Harary <eran.harary@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2d93aee152b1758a94a18fe15d72153ba73b5679 24-Dec-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: enable oscillator for L1 exit

Enabling the oscillator consumes slightly more power (100uA)
but allows to make sure that we exit from L1 on time.

Not doing so might lead to a PCIe specification violation
since we might wake up from L1 at the wrong time.
This issue has been identified on 3160 and 7260 only.
On older NICs L1 off is not enabled, on newer NICs (7265),
the issue is fixed.

When the bug occurs the user sees that the NIC has
disappeared from the PCI bridge, any access to the device
returns 0xff.

This fixes:
https://bugzilla.kernel.org/show_bug.cgi?id=64541

and has been extensively discussed here:
http://markmail.org/thread/mfmpzqt3r333n4bo

Cc: stable@vger.kernel.org [3.10+]
Fixes: 99cd47142399 ("iwlwifi: add 7000 series device configuration")
Reported-and-tested-by: wzyboy <wzyboy@wzyboy.org>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
51368bf792c79eb917694a4155d62f04359e3734 30-Dec-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: Update Copyright to 2014

Happy new year!

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
ce836c76da42d8e54042f6d759663e7ad79769ba 11-Dec-2013 Eran Harary <eran.harary@intel.com> iwlwifi: pcie: Fix CSR_RESET operation access type

The access to the CSR_RESET reg should be done as a complete
DWORD and not by setting a bit. This is the right way to reset
the device.

Signed-off-by: Eran Harary <eran.harary@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
3dc3374fcebe30fefebf1fdce660d33b3e2bd0f9 22-Dec-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: don't update the op_mode if rfkill hasn't changed

This is useless and introduces a dependency between rfkill
and stop_device - the op_mode can't call stop_device from
the rfkill notification since it would lead to an endless
recursion.
Next patches will need to do so.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
b9439491055a18ee075614139abadfd74c1b887f 22-Dec-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: keep the NIC awake when commands are in flight

Under very specific circumstances, the firmware might
ignore a host command. This was debugged and we ended up
seeing that the power management hardware was faulty.
In order to workaround this issue, we keep the NIC awake
as long as we have host commands in flight. This will avoid
to put the hardware into buggy condition.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
7b70bd63c61d17a05a03bfc2f4eb83c1200a2509 11-Dec-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: use don't disable interrupt when irq_lock is taken

Since we don't take this lock in the primary interrupt
handler, there is no pointin disabling the interrupt
in the critical section protected by trans_pcie->irq_lock.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
85bf9da1936bb0a0d81afab05b67beed2f253343 09-Dec-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: re-organize the PCIe ISR code

Separate the code that simply disables interrupt in the
hardware and the code that checks what interrupt fired.
This will be useful to move the second part in the threaded
handler which will be done in a future patch.

Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
efbf6e3ba2ad2e0f7965ff78779ea4eea7b871e8 04-Dec-2013 Arik Nemtsov <arik@wizery.com> iwlwifi: trans: clear FW_ERROR status in common code

Clear the FW_ERROR status before the common start_fw transport code.
Remove the transport specific clears.

After these patches the FW_ERROR flag is only set and cleared by common
transport code.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
eb7ff77edd391f215deee3ee5d957c857121cd72 30-Nov-2013 Arik Nemtsov <arik@wizery.com> iwlwifi: trans: use a unified transport status

The same bits are employed in all transport layers. Put the status
field in the common transport layer. This allows us to employ them
in common transport code.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
a4082843674000ffc5db76c2d0e66455ca5af490 24-Nov-2013 Arik Nemtsov <arik@wizery.com> iwlwifi: trans: divide stop_hw into stop_device/op_mode_leave

The stop_hw trans callback is not well defined. It is missing in many
cleanup flows and the division of labor between stop_device/stop_hw
is cumbersome. Remove stop_hw and use stop_device to perform both.
Implement this for all current transports.

PCIE needs some extra configuration the op-mode is leaving to configure
RF kill. Expose this explicitly as a new op_mode_leave trans callback.
Take the call to stop_device outside iwl_run_mvm_init_ucode, this
makes more sense and WARN when we want to run the INIT firmware while
it has run already.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
6960a059b2c618f32fe549f13287b3d2278c09e9 11-Nov-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: fix interrupt coalescing for 7260 / 3160

We changed the timeout for the interrupt coealescing for
calibration, but that wasn't effective since we changed
that value back before loading the firmware. Since
calibrations are notification from firmware and not Rx
packets, this doesn't change anyway - the firmware will
fire an interrupt straight away regardless of the interrupt
coalescing value.
Also, a HW issue has been discovered in 7000 devices series.
The work around is to disable the new interrupt coalescing
timeout feature - do this by setting bit 31 in
CSR_INT_COALESCING.
This has been fixed in 7265 which means that we can't rely
on the device family and must have a hint in the iwl_cfg
structure.

Cc: stable@vger.kernel.org [3.10+]
Fixes: 99cd47142399 ("iwlwifi: add 7000 series device configuration")
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
e2d6f4e71dc76c815434234cb58c410871888e53 02-Oct-2013 Eran Harary <eran.harary@intel.com> iwlwifi: support Signed firmware image and Dual CPUs

Support Signed firmware based on code signing system (CSS)
protocol and dual CPUs download,
the code recognize if there are more than one CPU and
if we need to operate the signed protocol according to
the ucode binary image

Signed-off-by: Eran Harary <eran.harary@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
d107babca27f3c08e399616483e4c5f010bd24d3 30-Sep-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: pcie: fix merge damage

The merge b35c8097 seems to have lost commit eabc4ac5d,
put the code back.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
889b169650c5b2cfeac8bcf34137af84a85b1cb8 25-Jul-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: clean RFKILL interrupt in AMPG

Newer firmware don't clean the RFKILL interrupt in APMG, do
it in driver instead.
If we forget to do so, we can't send HCMD to firmware while
the NIC is in RFKILL state.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
d819c6cf1c064e74c50e38c3ff36a781bb49959c 30-Sep-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: pcie: fix merge damage

The merge b35c8097 seems to have lost commit eabc4ac5d,
put the code back.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
6965a3540a4b45ee5b6fa91276a8134e25e17b63 10-Aug-2013 Luciano Coelho <luciano.coelho@intel.com> iwlwifi: pcie: don't swallow error codes in iwl_trans_pcie_alloc()

The iwl_trans_pcie_alloc() function doesn't pass up error codes
returned from functions it calls, swallowing them and returning NULL
in all failure cases. The caller checks if the return value is NULL
and returns -ENOMEM. This is not correct, because in certain cases
the failure was not due to an OOM situation.

To fix this, modify the iwl_trans_pcie_alloc() function to use
ERR_PTR() to return error codes and clean up the error handling code
a bit.

Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
5fdda0476c28ff2097ae37f43f40557b91eb0160 02-Aug-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: remove transport suspend/resume indirection

There's no reason for the transport to call itself through
indirect function pointers, inline the (little) code there
is and remove the indirection completely.

Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
eeb89ab1f081a62bee1695d82442996b99a5b2b3 30-Jul-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: pcie: fix resume when no opmode is present

If no opmode is present during suspend/resume (i.e. if
the iwldvm or iwlmvm isn't loaded) the driver crashes
during resume, trying to call the rfkill notification.
Avoid that, and also don't enable the rfkill interrupt
in this case (to avoid crashing trying to handle the
interrupt later.)

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
eabc4ac5d7606a57ee2b7308cb7323ea8f60183b 29-Jul-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: disable L1 Active after pci_enable_device

As Arjan pointed out, we mustn't do anything related to PCI
configuration until the device is properly enabled with
pci_enable_device().

Cc: stable@vger.kernel.org
Reported-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2997494fa66a1c94717d69c3cfae0a94462093c6 24-Jul-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: reset the NIC before the bring up

This allows to clean all kinds of bad state it might be in.
This solves situation where HW RFkill was switched while
the NIC was offline.
Until now, we relied on the firmware to do clean the
interrupt, but new firmwares don't do that any more.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
f2532b04b2ecde7c71ff30d0b26bd6d6166c4bf6 02-Jul-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: don't disable L1 for newest NICs

In newest NICs (7000 family and up), L1 is supported, so
avoid to disable it.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
2be01fa8f5cd6feffb6c50dae20d846dad8b37ba 26-Jun-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: remove forward debugfs function declarations

There's no need to have 'forward' debugfs function declarations
as part of the macros because the macros are always used after
the static functions are defined already, so remove them.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
313b0a294f8cc92be4387186e8c9eef59c1c198a 24-Jun-2013 Inbal Hacohen <Inbal.Hacohen@intel.com> iwlwifi: move dump_fh into common code

This means it can be shared for different transport
layers in the future.

Signed-off-by: Inbal Hacohen <Inbal.Hacohen@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
cfb4e624314b657ea5831505a380d932f3313a7a 20-Jun-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: always use 'trans_pcie' name

A few places use 'pcie_trans' which is a bit non-standard,
use 'trans_pcie' there as well.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
debff6184c32149bd08cfecfafbebb96201be37d 14-May-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: mvm: implement D3 testing

For testing the D3 (WoWLAN) firmware, it is useful to be able
to run the firmware with instrumentation while the host isn't
sleeping and can poke at the firmware debug logging etc.

Implement this by a debugfs file. When the file is opened the
D3 firmware is loaded and all regular commands are blocked.
While the file is being read, poll the firmware's PME status
flag and report EOF once it changes to non-zero. When it is
closed, do (most of) the resume processing. This lets a user
just "cat" the file. Pressing Ctrl-C to kill the cat process
will resume the firwmare as though the platform resumed for
non-wireless reason and when the firmware wants to wake up
reading from the file automatically completes.

Unlike in real suspend, only disable interrupts and don't
reset the TX/RX hardware while in the test mode. This is a
workaround for some interrupt problems that happen only when
the PCIe link isn't fully reset (presumably by changing the
PCI config space registers which the core PCI code does.)

Note that while regular operations are blocked from sending
commands to the firmware, they could still be made and cause
strange mac80211 issues. Therefore, while using this testing
feature you need to be careful to not try to disconnect, roam
or similar, and will see warnings for such attempts.

Als note that this requires an upcoming firmware change to
tell the driver the location of the PME status flag in SRAM.
D3 test will fail if the firmware doesn't report the pointer.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8ade62857ef77bdf639185410fbcd811aa700cb2 17-May-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: move D3_CFG_COMPLETE handling into DVM

The MVM firmware doesn't communicate this way, it instead
assumes D3 configuration is complete after a specific host
command (which must be last) has been sent. Handling this
bit thus belongs into the firmware API code, i.e. DVM.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
bf0fd5da8afdea8e1b1a2b42b8e9db068fbac96b 13-May-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: constify the source buffer of iwl_trans_write_mem

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
c571573a027bb65ac415141f919df3c0fa0fedb4 30-Apr-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: pcie: prefer to load the firmware in one shot

Users complained about allocation failures, so we loaded
the firmware in small chunks (PAGE_SIZE). This makes the
firmware restart considerably slower.
So, always prefer to load it in one shot allocating a big
chunk of coherent, and use smaller chunks as a fallback
solution.

On my laptop, this reduces the fw loading time from 120ms
to 20ms.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Moshe Island <moshe.island@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
4620020b5d7ca34d1c03fa98b0ca457320cb7d71 13-Mar-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: set rfkill in internal state of the transport

We didn't update the internal of the PCIe transport when
we read the RFkill state directly. Fix that.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
f9477c17c2ce59f64462635c3e5d43c98c0ad67f 27-Feb-2013 Amnon Paz <amnonX.paz@intel.com> iwlwifi: fix indirect write bug

Fix a bug in writing to indirect (periphery) registers; although
writes seem successful the data is not written to the desired
address). Also fix address mask for HBUS_TARG_PRPH_RADDR and
HBUS_TARG_PRPH_WADDR registers.

Signed-off-by: Amnon Paz <amnonX.paz@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
490953ac344725f56746d16ef8480842f4087fc4 04-Mar-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: move firmware restart debugfs hook to op_mode

This allows to test fw restart flow. The hook in transport
layer doesn't really make the fw assert. Moving this hook
to the op_mode allows to use the fw API to actually send a
host command that will make the fw assert.

Change the restart_fw module parameter to be a boolean on
the way.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
410dc5aa5906ed49e2733b451a5287884e8a16dc 18-Feb-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: a few fixes in license

7000.c was released as GPL only by mistake: it should be
dual licensed - GPL / BSD.
The file that contains the license in the kernel is COPYING
and not LICENSE.GPL.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2bfb50924c7e92362ac937aef2ab56bc7bd3ca52 27-Dec-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: use threaded interrupt handler

With new transports coming up, move to threaded
interrupt handling now. This has the advantage
that we can use the same locking scheme with all
different transports we may need to implement.

Note that the TX path obviously still runs in a
tasklet, so some spin_lock() calls need to change
to spin_lock_bh() calls to properly lock out the
TX path.

In my test on a Calpella platform this has no
impact on throughput or latency.

Also add lockdep annotations to avoid lockups due
to catch sending synchronous commands or using
locks that connect with them from the irq thread.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
e56b04efc1f795da42cf1d9651b52a4a5bebd730 16-Jan-2013 Lilach Edelstein <lilach.edelstein@intel.com> iwlwifi: move register access lock into transport

Move the reg_lock that protects HW register access
into the transport implementation. Locking is no
longer exposed, but handled internally in grab and
release NIC access. This simplifies the users.

Signed-off-by: Lilach Edelstein <lilach.edelstein@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
e139dc4aebf52a9c88552963b9794fd1dff036f1 13-Jan-2013 Lilach Edelstein <lilach.edelstein@intel.com> iwlwifi: add iwl_set_bits_mask to transport API

Express iwl_set_bit() and iwl_clear_bit() through iwl_set_bits_mask()
and add the latter to the transport's API in order to allow different
implementation for different transport types in the future.

Signed-off-by: Lilach Edelstein <lilach.edelstein@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
128e63ef077ef7ccd9c5779bbdce566641714666 21-Jan-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: update copyright

Update Copyright notices to 2013.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
1c3fea82d6ebf33edadefed2d9ce3efa1a654338 01-Jan-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: improve the reports in TX path

Also when things go wrong (queues don't get emtpy), try to
get some data from the HW.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
ddaf5a5b300b8f9d3591b509fd8bedab1c9887be 08-Jan-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: enable communication with WoWLAN firmware

On resuming, the opmode may have to be able to talk
to the WoWLAN/D3 firmware in order to query it about
its status and wakeup reasons. To do that, the opmode
has to call the new d3_resume() transport API which
will set up the device for command communcation.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
01387ffd19f37b4026fd0e4c32260bc25f6469d4 09-Jan-2013 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: allow to zero SRAM

Sending a NULL pointer to iwl_trans_write_mem allows now
to zero SRAM.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
b1cf1bc160a94f2d56863522982160c9373b8860 08-Jan-2013 Johannes Berg <johannes.berg@intel.com> iwlwifi: don't enable all interrupts on resuming

Enabling the RF-kill interrupt is sufficient for getting
RF-kill notifications, and no other interrupt is needed
as the device isn't functional when suspended and will be
restarted/reconfigured when mac80211 resumes it later.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
abae2386d55aff1d395cdb665f03684c227a6a69 31-Dec-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: always check that grab_nic_access succeeds

This allows to let sparse check that the NIC access is
always released.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
0aa86df673d2122fcffc43ed0266279e1b8d8204 27-Dec-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: move some PCIe calls to better places

Synchronizing the IRQ is pointless when we will
then enable the RF-Kill interrupt again, but is
needed before we free it and the data needed to
handle IRQs; move it to the free function.

Simiarly, cancelling the replenish work struct
can move to the function that frees the RX data
structures.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
a8b691e6104e6bd27070b6ed6622d0b640707fa8 27-Dec-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: request IRQ only once

There's no need to request the IRQ every time the
device is started, we can request it just once.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
4fd442db98dadf33ecce6d489bbbc95f6e8d3b31 24-Dec-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: virtualize SRAM access

Different transports implement the access to the SRAM in
different ways. Virtualize it.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
7a65d17053c758109477f420e813ba2d826b0eae 24-Dec-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: virtualize iwl_{grab,release}_nic_access

Since different transports have different ways to wake the
up the NIC, we need to virtualize it.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
6ae02f3ef7f20af0237e21a979f66b13198921da 24-Dec-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: let the op_mode run a FW while in RFKILL

In some cases, the fw should run even if the NIC is in
RFKILL. Make the API more flexible to allow that.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
046db346386661906dffa33f5ed3dfcdccfddc0b 05-Dec-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: make the BC table layout configurable

This is needed for newer NICs.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
438a0f0a1faa3dd00c0460e8232cd712215a6d46 05-Dec-2012 Bjorn Helgaas <bhelgaas@google.com> iwlwifi: Use standard #defines for PCIe Capability ASPM fields

Use the standard #defines rather than creating local definitions for
PCIe Capability ASPM fields.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Johannes Berg <johannes.berg@intel.com>
b9d146e30a2d855229f0944152f84aef1a21553b 05-Dec-2012 Bjorn Helgaas <bhelgaas@google.com> iwlwifi: collapse wrapper for pcie_capability_read_word()

iwl_pciexp_link_ctrl() has only one call site and no longer provides any
useful abstraction, so collapse it into the caller.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Johannes Berg <johannes.berg@intel.com>
8d96bb61fcfa11fb0c0da0d4f1331b7ca231bec1 04-Dec-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: reset_ict in stop_hw

Since the device is taken down in stop_hw, call reset_ict
from there too.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
6a06b6c131d529f2913513355dd9e7c4e05e8e42 02-Dec-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: move prph handling into the transport

New transports may handle it internally for better performance.
Also move the tracing inside PRPH access which will make the
output more readable:

iwlwifi_dev_ioread_prph32: Read 0x0 from SCD_AGGR_SEL (32-bit)

instead of the corresponding accesses to HBUS_TARG_PRPH_*.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
49bd072d4ebab59217dadeb779a0a3dd2d0397ec 18-Nov-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: more cleanup in pcie/rx.c

Really trivial clean up.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
f02831be962c7be68c72110fa779e916ab1a8cdd 14-Nov-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: continue clean up - pcie/tx.c

Rename static functions. Function moved from trans.c to
tx.c. A few could be made static, others had to be exported.

Functions that implement the transport API are prefixed by
iwl_trans_pcie_, the others by iwl_pcie_.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
7afe3705cd4e2a5490140cc15a15b3ea7a10b889 14-Nov-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: continue clean up - pcie/trans.c

Functions that implement the transport API are prefixed by
iwl_trans_pcie_, the others by iwl_pcie_.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
9805c4460ae37aa9328a470c7aebea32f0667e24 14-Nov-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: continue clean up - pcie/rx.c

Rename static functions. Function moved from trans.c to
rx.c. A few could be made static, others had to be exported.
Also, don't use rxb or rxbuf, but rb which stands for receive
buffer.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
c61259858d685caf865e9819e3d3062a0865d93c 14-Nov-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: init the replenish work in rx_init

This is its natural place

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
990aa6d7b28d26bf22171410b49f191e8e9b09fc 13-Nov-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: rename functions in transport layer

1) s/tx_queue/txq
for the sake of consistency.

2) s/rx_queue/rxq
for the sake of consistency.

3) Make all functions begin with iwl_pcie_
iwl_queue_init and iwl_queue_space are an exception
since they are not PCIE specific although they are in
pcie subdir.

4) s/trans_pcie_get_cmd_string/get_cmd_string
it is much shorter and used in debug prints which
are long lines.

5) s/iwl_bg_rx_replenish/iwl_pcie_rx_replenish_work
this better emphasizes that it is a work

6) remove invalid kernelDOC markers

pcie/tx.c and pcie/trans.c still needs to be cleaned up.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
6a4b09f807afab788b58b529c4a9d6dc27cc6933 28-Oct-2012 Joe Perches <joe@perches.com> wireless: Convert dev_printk(KERN_<LEVEL> to dev_<level>(

dev_<level> calls take less code than dev_printk(KERN_<LEVEL>
and reducing object size is good.
Coalesce formats for easier grep.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
9f904b382ff61b8ec1f81f8afe76f12a5ac8b4cf 13-Nov-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: don't enable interrupt as a W/A when MSI is enabled

This is not needed, the comment there was wrong, it
is only needed when MSI was *not* enabled.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
dbeca583f9b8e35aa08279b81d5340dac3a60aff 13-Nov-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: don't warn if transport's allocation failed

The allocation failure will already be very verbose.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
d18aa87fbfe80f33076942d11f19c9d813e835b1 06-Nov-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: return commands with error on FW error

When a firmware error occurs, don't just abort synchronous
commands but also return an error (-EIO) and block any new
commands as well. Currently, an error is only returned if
WANT_SKB was set which is confusing and can lead to issues.

Blocking is done until a new firmware image is loaded.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
6b450fcbff6a6d9e4f7ebe47e579ab4c43a6b745 05-Nov-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: remove useless messages

There's no need to print the PCI resource
length and base address, nor the hardware
revision ID (which can be found in lspci)

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
adca1235cccacee91beb640a044e51b1c457b1ea 25-Oct-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: check the SCD conf from ALIVE response

The ALIVE response of new fw inclues the base address of
the SCD in SRAM. Until we read it from a prph register,
which was set by the fw. Since the fw might well stop
updating the prph register, add a WARN when there is an
inconsitency between the ALIVE response and the register
to catch any change in the behavior.

Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
f946b529502399d09471c5d13845fefbfe8555a6 25-Oct-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: handle RFKILL logic in the transport layer

No HCMD can be sent while RFKILL is asserted. If a SYNC
command is running while RFKILL is asserted the fw will
silently discard it. This means that the driver needs to
wake the process that sleeps on the CMD_SYNC.

Since the RFKILL interrupt is handled in the transport layer
and the code that sleeps in CMD_SYNC is also in the transport
layer, all this logic can be handled there.
This simplifies the work of the op_mode.

So the transport layer will now return -ERFKILL when a CMD
is sent and RFKILL is asserted. This will be the case even
when the CMD is SYNC. The transport layer will return
-ERFKILL straight away.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
f4feb8ac6e666d2ca37cf722166bbfadf2c6adf8 19-Oct-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: support host command with copied data

In addition to the NOCOPY flag, add a DUP flag that
tells the transport to kmemdup() the buffer and free
it after the command completes.

Currently this is only supported for a single buffer
in a given command, but that could be extended if it
should be needed.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
6c3fd3f00c67105b49d57525614fcfa6816d604d 18-Oct-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: don't leak Tx skb when a queue is disabled

Since the queue might not be empty, we need to free the
pending Tx packets.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
0adb52dee209ee816ba86da51d01977fdb173b22 10-Oct-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: use the new macro for the SCD Q STTS bits

Instead of hardcoding the expression, use the macro
provided in the previous patch.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
26c7af7cad587455f5335af02eb94af772992ace 01-Oct-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: remove unused variables

Remove a number of variables that are assigned, but not used.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
f042c2eb96779944629fee99817718ede40d4970 05-Sep-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: make data frame tracing optional

When tracing in iwlwifi, we get all data. Most of
the time, we don't need it, and it just takes up
a lot of extra space in the trace.

Make this optional by recording the data into two
separate trace events if it is needed. Without it,
record only the content of non-data and EAPOL TX
frames.

As a result, tracing without the data tracepoints
will record meta information including the 802.11
headers for all frames but will not record the
contents of data frames to reduce trace overhead.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
a7be50b7e30f9d77cb059a7ffdb781bb0fb92eba 18-Sep-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: don't double free the interrupt in failure path

When the driver can't get the HW ready, we would release
the interrupt twice which made the kernel complain loudly.

Cc: stable@vger.kernel.org
Reported-by: Brian Cockrell <brian.cockrell@intel.com>
Tested-by: Brian Cockrell <brian.cockrell@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
83f84d7bd49f9e4deea0a77a76c9882673ee1f3c 10-Sep-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: load firmware in chunks

Instead of allocating one big chunk of DMA-coherent
memory for the firmware and keeping it around, only
vmalloc() the firmware and copy it into a single
page of DMA-coherent memory for the upload.

The advantage is that we don't need DMA memory for
the firmware image that is stored while the driver
is operating, we only need it while uploading.

This will make it easier for the driver to work if
the system has fragmented memory.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
358a46d47eefadd5be67495682426bd743ce455c 09-Sep-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: some clean up in transport layer

Remove outdated iwlagn prefix to a few functions and fix comments
that were not accurate.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2d1c0044ddc708885146af1d6790436a613cac5b 09-Sep-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: fix indentation in iwl_load_given_ucode

There's a block of code that's indented too
far, move it out to where it should be.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
ee7d737c45440062320c16bc7ad7bb5c9fe8888e 12-Aug-2012 David Spinadel <david.spinadel@intel.com> iwlwifi: stop interrupts before stopping device

If an RX interrupt is signalled after or during apm_stop
we may try to access the peripherals which are already
down. Prevent this by disabling interrupts first.

Signed-off-by: David Spinadel <david.spinadel@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
8b61fa242ce56838ce1c41db3692b64b4c344776 08-Aug-2012 David Spinadel <david.spinadel@intel.com> iwlwifi: don't reset interupts after disabling

iwl_disable_interupts() already resets the register, no
need to do it again.

Signed-off-by: David Spinadel <david.spinadel@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
6379103e896a5e5aa707ea818588604ddd80064d 06-Sep-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: remove unused IDI code stubs

These stubs are from internal experimental code
and aren't needed in the driver in the kernel
so just remove them.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
a7238b37ce794d75b822865a389429ed007ca983 20-Aug-2012 Jiang Liu <jiang.liu@huawei.com> iwlwifi: Use PCI Express Capability accessors

Use PCI Express Capability access functions to simplify iwlwifi driver.

[bhelgaas: split iwlegacy, iwlwifi, rtlwifi into separate patches]
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
94543a8d4fb302817014981489f15cb3b92ec3c2 21-Aug-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: fix flow handler debug code

iwl_dbgfs_fh_reg_read() can cause crashes and/or
BUG_ON in slub because the ifdefs are wrong, the
code in iwl_dump_fh() should use DEBUGFS, not
DEBUG to protect the buffer writing code.

Also, while at it, clean up the arguments to the
function, some code and make it generally safer.

Cc: stable@vger.kernel.org
Reported-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
289e5501c3141191dd830957f1d764d3dc14a54f 05-Aug-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: fix the preparation of the card

There is no need to check if the ownership has been
relinquished but we should rather try to get it in a
loop.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
9679142291f51515bd1bf492535e8a12515558e9 24-Jul-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: get the correct HCMD in the response handler

Until now, the response handler of a Host Command got the
exact same pointer that was also given to the DMA engine.
We almost never need to the Host Command that was sent while
handling its response, but when we do need it, we see that
the command has been modified.

This mystery has been elucidated. The FH (our DMA engine)
writes its meta data on the buffer in the DRAM. Of course it
copies the buffer to the NIC first. This was known to happen
for Tx command, but as a matter of fact, it happens to all
TFD brought by the FH which doesn't care much about what it
brings from DRAM to internal SRAM.

So copy the Host Command to yet another buffer so that we
can properly pass the buffer that was sent originally to the
fw. Do that only if it was request by the user since very
few flows need to get the HCMD sent in the response handler.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
9da987ac2b88b40c327ce08735b0d46057d180d7 17-Jul-2012 Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> iwlwifi: rework the iwlwifi debugfs structure

The generic part of the driver now creates all debugfs
directories. It creates a root directory directly in
the the root of the debugfs filesystem and within that
directories for each device, named after the device ID
of the devices iwlwifi is attached to.

In the cfg80211/mac80211 directory there's now a link
to the toplevel iwlwifi debugfs directory to make it
easier to find the debugfs files.

Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
3ec4588231914344834805a6828551cd5c65afd8 12-Jul-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: don't use stack memory for kmem cache name

Since the kmem cache API doesn't internally allocate
the name but just points to the name that was passed
in we can't use stack memory for it. Move the name
into the transport struct.

Reported-by: Stanislaw Gruszka <sgruszka@redhat.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
d6f1c316346c95b0a280954d5afca29459921a24 28-Jun-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: add trailing newline to some messages

Some messages were missing a trailing newline, add it.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
b04db9ac4f7641332e0133b2fd8f82e6e4553947 21-Jun-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: configure the queues from the op_mode

Since the op_mode defines the queue mapping, let it do it
completely through the API functions.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
ae8baec22878be1f8d14b5bb00ac83f7954a9832 13-Jun-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: don't disable interrupt while starting tx

This is really not needed, we already have a lock inside
the accesses to the prph.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
24172f39b02e5fcd35a4f721bde5bc9b61534736 17-Jun-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: disable BH before the call to iwl_op_mode_nic_error

This is required by the op_mode API.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
e9d364de1aed8f7e81b3e67fdf3015533bfc76b1 13-Jun-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: print the scratch of all the buffers stuck in a queue

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
7bc057ffb5078d3e7f391ef2357f4ab01b9694e0 10-Jun-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: warn if TFD index and WiFi Seq don't match

For AGG queues, we must match between the WiFi sequence
number and the TFD number. This is a HW (SCD) requirement.

This is a take two of my

iwlwifi: add debug in Tx path in AGG flow

This will allow us to catch bad cases in which the packets aren't in
the right place on the ring.

which disappeared during code move.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
49a4fc20df7fced31ffe4038b32b86a0438d1c27 10-Jun-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: don't modify the timer if we don't Tx

In fragmentation we don't update the write pointer of the
HW immediately. So we shouldn't modify the timer in that
case.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
12af0468734dcef5d123d774f98e284deedd361c 11-Jun-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: print even more info when a queue is stuck

Since the queue gets stuck from time to time, we are trying
to get as much information as we can when this occurs.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
5bf9a89d9a2eaa136a23d872db4195ca8cada4c8 07-Jun-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: remove lock around txq_enable

This locking isn't needed. The only locking we need is when
we access prph registers but there is already a separate
lock for that.
Since we haven't returned from the mac80211's
IEEE80211_AMPDU_TX_OPERATIONAL ampdu_action, we cannot
receive any Tx frame for that sta / tid while enabling the
queue.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
f22d33289ae61c79aa27170f7b9e4b2b2e95281d 10-Jun-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: print more info when a queue is stuck

Print some more info from the SCD's SRAM and dump the TRB
from the FH.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
59c647b6266506cbbceadfabfd01168148f026c5 24-May-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: allocate Tx cmd pool per device

Different transports will have different needs: New tranports
need headroom for their own use before the Tx cmd. So allocate
the Tx cmd pool in the transport and give it a unique name
based on dev_name.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
4beaf6c2f8af52902bcd55b51f9ff8c8f547d485 29-May-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: s/txq_setup/txq_enable

We need to be able to enable / disable Tx queues in HW
dynamically. So this function is no longer related to AGG
only. It can do the job for any queue, even AC ones. Change
the name to better reflect its role.

Also use the new function to configure the AC / CMD queues
in tx_start.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
d0624be65ade709ef1a4220451a474be1ad01af9 29-May-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: s/txq_agg_disable/txq_disable

We need to be able to enable / disable Tx queues in HW
dynamically. So this function is no longer related to AGG
only. It can do the job for any queue, even AC ones. Change
the name to better reflect its role.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
559b1a257ddeac637b8bb3a2c2469aaa2bde5383 28-May-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: use iwl_trans_set_wr_ptrs to init the queues

This functions does the job so use it instead of duplicating
the code.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
fc248615314c41abc2d6957e095c418ea9b12412 28-May-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: first config the SCD queues, then activate them

The DMA channels of the FH should be activated after the
configuration of the SCD queues too.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
588d932044169979bf028eab2155f9acd1d0418d 28-May-2012 Emmanuel Grumbach <emmanuel.grumbach@intel.com> iwlwifi: SCD_INT_MSK is obsolete - don't update it

The scheduler can issue an interrupt when moving the read
pointer. To get this interrupt, the driver needs to
configure what queue can issue an interrupt when its read
pointer moves in the scheduler: this is the SCD_INT_MSK.
The driver also needs to enable the interrupt in
CSR_INT_MASK (bit CSR_INT_BIT_SCD).

Since we don't enable the scheduler interrupt in
CSR_INT_MASK, there is no point in requesting an interrupt
from the scheduler: it will be masked anyway. So don't
configure the scheduler to issue interrupts at all.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
1023fdc4858b6b8cb88ff28cafd425b77555be9f 15-May-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: move DVM code into subdirectory

Since we're working on another mode/driver
inside iwlwifi, move the current one into a
subdirectory to more cleanly separate the
code. While at it, rename all the files.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
6468a01a7181f3572a3e686910016f89ee71ff45 16-May-2012 Johannes Berg <johannes.berg@intel.com> iwlwifi: move PCIe into subdirectory

Structure the code a bit more and move all PCIe code
including the hardware configuration files into a
PCIe specific subdirectory.

Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>