aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath6kl
Commit message (Collapse)AuthorAge
...
* | | ath6kl: Use mutex to protect dma buffer in sync read writeRaja Mani2011-11-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Firmware crashes while starting Soft AP in 32 bit x86 platform. The reason is that the single dma buffer (ar_sdio->dma_buffer) is used in ath6kl_sdio_read_write_sync() for unaligned buffer handling and this function is called in the multiple context at the same time. So, finally hits dma buffer corruption and firmware crash. Mutex is used to protect dma buffer to avoid data corruption. Spin lock can not used to fix this issue since mmc stack read/write calls may for sleep. Observed this issue with recently commited patch "ath6kl: Claim sdio function only at appropriate places" 861dd058f495973c7ad2a44b8f68f3cc05733eab kvalo: change name of mutex to more descriptive and add a comment about what it protects Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: unlock if ath6kl_cfg80211_connect() failsDan Carpenter2011-11-21
| | | | | | | | | | | | | | | | | | | | | There is an unlock missing on this error path. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Enable multiple vif supportVasanthakumar Thiagarajan2011-11-21
| | | | | | | | | | | | | | | | | | | | | The maximum number of supported virtual interfaces are 3. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Find ar->max_norm_iface in firmware IE parsingVasanthakumar Thiagarajan2011-11-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the max number of vifs which can be used for non-p2p mode is determined in ath6kl_core_alloc(). But the maximum supported vifs are parsed from firmware IE in ath6kl_fetch_fw_api2() which would happen after ath6kl_core_alloc(). Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Remove modparam multi_norm_if_supportVasanthakumar Thiagarajan2011-11-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This modparam was introduced to enable non-p2p mode operation on two virtual interfaces. It does not seem to be necessary to have a separate module parameter to do that. Instead, this option can be enabled when any one of the interfaces is not going to be used for p2p (ath6kl_p2p). Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: indicate probe-resp offload supportArik Nemtsov2011-11-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | The ath6kl responds to probe-requests in HW while operating as an AP. It supports offloading exclusions to support the WPS, WPS2, P2P and 802.11u protocols. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Fix AP mode operation after interface down/upVasanthakumar Thiagarajan2011-11-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When operating AP interface is brough down the mode is reset to STA. This STA will be reconfigured into AP mode when the interface is brought up again. This sequence will be successful only when change_virtual_intf() returns with no error, but there is a check in this callback which does the type change only when that interface is active. This callback does nothing more than saving the new interface type to vif and wdev, so the sanity check for interface state and wmi state is not necessary. This makes the AP interface functional again after interface down/up. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Clear WPS ctrl flag if zero length IE is received from cfg80211Raja Mani2011-11-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Connect control flag CONNECT_WPS_FLAG has to be cleared by default even if the driver receives zero length IE from cfg80211. Otherwise this flag would be always set after WPS exchange which would lead wpa_supplicant to fail to connect with the received WPS credentials. This issue is observed only in OPEN security. kvalo: use cfg80211 instead of CFG in the commit log Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: add firmware IE for maximum number of vifsKalle Valo2011-11-16
| | | | | | | | | | | | | | | | | | | | | Not all firmwares support multiple vifs and we need to read the limit from the firmware image. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: make maximum number of vifs runtime configurableKalle Valo2011-11-16
| | | | | | | | | | | | | | | | | | Needed when detecting how many vifs firmware supports. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: add firmware filename info to struct ath6kl_hwKalle Valo2011-11-16
| | | | | | | | | | | | Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: add ar6004 firmwares to sdio moduleKalle Valo2011-11-16
| | | | | | | | | | | | | | | | | | | | | When adding ar6004 SDIO support I forgot to add corresponding MODULE_FIRMWARE() definitions to sdio.c. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: use hardware version names consistentlyKalle Valo2011-11-16
| | | | | | | | | | | | | | | | | | | | | | | | Part of ath6kl uses "REV3" style of naming hardware versions and elsewhere "hw 2.1.1" is used instead for the same version. This is confusing, use the latter term everywhere. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: add name field to struct ath6kl_hwKalle Valo2011-11-16
| | | | | | | | | | | | | | | | | | | | | To make it easier to print name for each hardware type. Also move the hw info print to ath6kl_init_hw_start() which is more logical place for it. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: add firmware IE for board data addressKalle Valo2011-11-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | Board data address can change between firmwares so we need to read that from the firmware image. Also fix debug log for the patch address to print the address in hex. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: add board address to struct ath6kl_hwKalle Valo2011-11-16
| | | | | | | | | | | | | | | | | | | | | | | | This is to make it configurable by firmware IEs. Also determine if we need to write or read the board address to the chip by checking if board address is set or not. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: move hw version related to parameters to structKalle Valo2011-11-16
| | | | | | | | | | | | | | | | | | It's easier to handle the values when they are defined in a struct. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: remove hw version related parameter definesKalle Valo2011-11-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Having separate defines, in a different file, makes it difficult to read the actual values. As we are just setting named fields in a struct the defines don't make any sense anymore. There are no functional changes, only moving of constants. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Fix bug in setting dot11_auth_mode in AP modeVasanthakumar Thiagarajan2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OPEN_AUTH is passed as dot11_auth_mode by default, this would affect the AP mode when configured with shared authentication type. Assign appropriate auth type to fix this from driver. A patch in wpa_supplicant (wpa_supplicant: Set configured auth_algs) is also needed to fix this. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Fix bug in setting default key index for tx in AP modeVasanthakumar Thiagarajan2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vif->def_txkey_index is set to key_index in ath6kl_cfg80211_add_key(). If the interface is configured with multiple static wep keys, vif->def_txkey_index would be holding the index of the last key configured, not the default tx key index. Remove this unnecessary default key index setting in ath6kl_cfg80211_add_key() to configure the right key index in WEP thereby make it work when multiple wep keys are configured. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: enable USB supportKalle Valo2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | Now two modules are built, ath6kl_sdio.ko and ath6kl_usb.ko. But the USB module isn't fully functional yet as HTC layer is missing support and that's why it's marked as experimental for now. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: disable HTC for USB devicesKalle Valo2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | As HTC layer doesn't support USB devices return an error if that happens. USB support will be added to HTC in the future, this is just a temporary solution. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: add USB supportKalle Valo2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add USB support for ar6004. Currently only firmware can be booted, no commands can be sent to firmware yet as HTC layer doesn't work with USB yet. Based on patches by Kevin Fang. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: add hif_typeKalle Valo2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | In some rare cases core code needs to know what hif type is used. Add a field to struct ath6kl to denote that. Hopefully this is just a temporary solution. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: AR6004 SDIO supportNaveen Gangadharan2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for AR6004 SDIO. Tested scan, association (open mode) and ping. kvalo: change commit log a bit, drop board address changes Signed-off-by: Naveen Gangadharan <ngangadh@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: firmware boot fixes for ar6004Kalle Valo2011-11-13
| | | | | | | | | | | | | | | | | | These have changed a bit since last time ar6004 code was commited. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: update ar6004 definitionsKalle Valo2011-11-13
| | | | | | | | | | | | | | | | | | Add also hw 1.1. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: move diag commands to hif driverKalle Valo2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is preparation for USB support which will have different diag commands. Based on code by Kevin Fang. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: change bmi sizes being configurable by HIFKalle Valo2011-11-13
| | | | | | | | | | | | | | | | | | | | | SDIO and USB have different maximum sizes for BMI commands so make that configurable. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: move bmi calls to hif driverKalle Valo2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | In preparation for USB support which has it's own method for bmi. Based on code by Kevin Fang. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Fix target minimum length requirement for WMI_SEND_PROBE_RESPONSE_CMDIDAarthi Thiruvengadam2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The firmware expects the minimum length of WMI_SEND_PROBE_RESPONSE_CMDID to be 13. However, when the device is a P2P GO and it needs to send a probe response to a non-P2P client, there are no P2P IEs to be added, and therefore the length of the WMI command is 12. This command gets rejected by the firmware. To fix this, add an extra byte to satisfy the minimum length requirement. Signed-off-by: Aarthi Thiruvengadam <athiruve@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Fix cfg80211 warning while starting IBSS modeRaja Mani2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the connect event is received from the target in IBSS mode, cfg80211_ibss_joined() is called without informing BSS info to cfg80211 layer which internally hits the below WARN_ON message. WARNING: at net/wireless/ibss.c:33 __cfg80211_ibss_joined+0x153/0x180 [cfg80211]() [..] [ 4916.845878] Call Trace: [ 4916.845889] [<c10427d2>] warn_slowpath_common+0x72/0xa0 [ 4916.845905] [<f8bccc63>] ? __cfg80211_ibss_joined+0x153/0x180 [cfg80211] [ 4916.845918] [<f8bccc63>] ? __cfg80211_ibss_joined+0x153/0x180 [cfg80211] [ 4916.845923] [<c1042822>] warn_slowpath_null+0x22/0x30 [ 4916.845934] [<f8bccc63>] __cfg80211_ibss_joined+0x153/0x180 [cfg80211] [ 4916.845941] [<c1025108>] ? default_spin_lock_flags+0x8/0x10 [ 4916.845952] [<f8bb7fcd>] cfg80211_process_rdev_events+0x19d/0x220 [cfg80211] [ 4916.845962] [<f8bb669b>] cfg80211_event_work+0x2b/0x50 [cfg80211] [ 4916.845968] [<c105aae6>] process_one_work+0x116/0x3c0 [ 4916.845977] [<f8bb6670>] ? cfg80211_get_dev_from_info+0x40/0x40 [cfg80211] [ 4916.845982] [<c105cdf0>] worker_thread+0x140/0x3b0 [ 4916.845986] [<c105ccb0>] ? manage_workers+0x1f0/0x1f0 [ 4916.845991] [<c1060c64>] kthread+0x74/0x80 [ 4916.845995] [<c1060bf0>] ? kthread_worker_fn+0x160/0x160 [ 4916.846001] [<c14e7bbe>] kernel_thread_helper+0x6/0x10 [ 4916.846005] ---[ end trace 769254924e409367 ]--- This patch make sures that BSS info is delivered via cfg80211_inform_bss() to cfg80211 in advance before intimating IBSS status to cfg80211. In addition to this, one debug message is also added to know ad-hoc mode status (creator/joiner). kvalo: change subject Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Fix packet drop when ath6kl_cookie runs outVasanthakumar Thiagarajan2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "ath6kl: Maintain virtual interface in a list" mistakenly stops the netq only when the mode is ibss. This causes packet drops in sta mode when the available cookies (buffer abstraction in ath6kl and also used for tx throttling) runs out for the highest priority traffic. This patch just fixes this regression though the original code may still need fixes which can be addressed in separate patches. Reported-by: Kalle Valo <kvalo@qca.qualcomm.com> Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Fix accessing wrong skb->data in ath6kl_tx_complete()Vasanthakumar Thiagarajan2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When buffer alignmnet is applied, the data pointer of skb taken from cookie will no longer point to the first byte of the actual data. But the skb->data pointer is used in ath6kl_tx_complete() to get the index of the virtual interface which will not give the correct interface index and sometimes may give the following WARN_ON() message. Use packet->buf instead of skb->data to fix this. WARNING: at drivers/net/wireless/ath/ath6kl/wmi.c:88 ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl]() Hardware name: 2842K3U Modules linked in: ath6kl mmc_block cfg80211 binfmt_misc ppdev nfs nfsd lockd nfs_acl auth_rpcgss sunrpc exportfs snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_intel +snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy thinkpad_acpi snd_seq_oss snd_seq_midi snd_rawmidi joydev fbcon tileblit font bitblit softcursor +snd_seq_midi_event snd_seq snd_timer snd_seq_device i915 uvcvideo drm_kms_helper drm psmouse serio_raw snd i2c_algo_bit sdhci_pci videodev intel_agp soundcore intel_gtt jmb38x_ms +memstick sdhci snd_page_alloc nvram lp parport agpgart video ahci r8169 mii libahci [last unloaded: ath6kl] Pid: 15482, comm: kworker/u:1 Tainted: G W 3.1.0-rc10-wl+ #2 Call Trace: [<c0144d72>] warn_slowpath_common+0x72/0xa0 [<fb7c94fb>] ? ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl] [<fb7c94fb>] ? ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl] [<c0144dc2>] warn_slowpath_null+0x22/0x30 [<fb7c94fb>] ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl] [<fb7c7028>] ath6kl_tx_complete+0x128/0x4d0 [ath6kl] [<c04df920>] ? mmc_request_done+0x80/0x80 [<fb7b9e2e>] htc_tx_complete+0x5e/0x70 [ath6kl] [<c05e4cf6>] ? _raw_spin_unlock_bh+0x16/0x20 [<fb7ce588>] ? ath6kl_sdio_scatter_req_add+0x48/0x60 [ath6kl] [<fb7b9f42>] htc_async_tx_scat_complete+0xb2/0x120 [ath6kl] [<fb7ce9e7>] ath6kl_sdio_scat_rw+0x87/0x370 [ath6kl] [<c0101e12>] ? __switch_to+0xd2/0x190 [<c01397b5>] ? finish_task_switch+0x45/0xd0 [<c05e272e>] ? __schedule+0x3ae/0x8b0 [<fb7cf00a>] ath6kl_sdio_write_async_work+0x4a/0xf0 [ath6kl] [<c015d266>] process_one_work+0x116/0x3c0 [<fb7cefc0>] ? ath6kl_sdio_read_write_sync+0xb0/0xb0 [ath6kl] [<c015f5b0>] worker_thread+0x140/0x3b0 [<c015f470>] ? manage_workers+0x1f0/0x1f0 [<c0163424>] kthread+0x74/0x80 [<c01633b0>] ? kthread_worker_fn+0x160/0x160 [<c05ebdc6>] kernel_thread_helper+0x6/0x10 Reported-by: Aarthi Thiruvengadam <athiruve@qca.qualcomm.com> Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Indicate WAPI IE from (Re)Association Request frameDai Shuibing2011-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is needed to know whether the STA requests WAPI to be used and if so, with what AKM and cipher. Signed-off-by: Dai Shuibing <shuibing@qca.qualcomm.com> Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Allow SMS4 to be configured in AP modeDai Shuibing2011-11-13
| | | | | | | | | | | | | | | | | | Signed-off-by: Dai Shuibing <shuibing@qca.qualcomm.com> Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | | ath6kl: Add support for configuring SMS4 keysDai Shuibing2011-11-13
|/ / | | | | | | | | | | | | | | | | Indicate support for WPI-SMS4 cipher and allow SMS4 keys to be configured. Signed-off-by: Dai Shuibing <shuibing@qca.qualcomm.com> Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Fix error in writing create_qos debugfsVasanthakumar Thiagarajan2011-11-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 100 bytes are allocated to store the parameters which are needed to create a priority stream. These 100 bytes are not sufficiant and throws error when running the following command. echo "6 2 3 1 1 9999999 9999999 9999999 7777777 0 6 45000 200 56789000 56789000 5678900 0 0 9999999 20000 0" > create_qos 179 bytes are needed when the following vlaues are given so that a maximum possible value in that data type can be given in decimal. echo "255 255 255 255 255 4294967295 4294967295 4294967295 4294967295 4294967295 255 65535 65535 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295" > create_qos Following takes 187 bytes when given in hex echo "0xff 0xff 0xff 0xff 0xff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xff 0xffff 0xffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff" > create_qos Increase the size to 200 bytes so that it can hold upto the maximum value possible for that data type. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Fix tx packet drop in AP mode with bridgeVasanthakumar Thiagarajan2011-11-11
| | | | | | | | | | | | | | | | | | | | | | | | skb is dropped in ath6kl_data_tx() when the headroom in skb is insufficient. We hit this condition for every skb in AP mode which is used with bridge, so all tx packets are getting dropped when tried to send traffic to wireless client from bridge. Fix this by reallocating the headroom instead of dropping the skb when it has lesser headroom than needed. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Remove few unused WMI stuffRaja Mani2011-11-11
| | | | | | | | | | | | | | | | | | | | | | | | | | * Removed unused WOW_MAX_FILTER_LISTS macro. * Removed empty ath6kl_wmi_get_wow_list_event_rx() function. List of configured WOW patterns are maintained in CFG layer itself. No need to have this function in ath6kl to get configured WOW pattern list. It can added later if we need it for debugging. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Expose ath6kl's WOW capabilities to cfg80211Raja Mani2011-11-11
| | | | | | | | | | | | | | | | | | Set the list of ath6kl's WOW trigger options in wiphy->wowlan.flags variable during wiphy registration. So that, those options can be configured via iw. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Remove WARN_ON msg in Suspend pathRaja Mani2011-11-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In the current code, WOW resume is executed first from RX path and ar->state is moved to ATH6KL_STATE_ON. When platform calls ath6kl_sdio_resume() in CFG resume context, that time ar->state could have moved to ON state. Printing WARN_ON(1) is void in this context. Hence removing this. Once WOW resume is removed from RX path, This WARN_ON msg can be reverted. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Perform WOW resume in RX path in case of SDIO IRQ wake upRaja Mani2011-11-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The target triggers sdio data line to wake up the host when WOW pattern matches. This causes sdio irq handler is being executed in the host side which internally hits ath6kl's RX path. WOW resume should happen before start processing any data from the target. So it's required to perform WOW resume in RX path. This area needs bit rework to avoid WOW resume in RX path, As of now it's fine to have this model, rework will be done later. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Invoke WOW suspend/resume calls during PM operationRaja Mani2011-11-11
| | | | | | | | | | | | | | | | | | | | | | | | | | Link ath6kl's wow suspend/resume functions with the actual suspend/resume path. WOW mode is selected when the host sdio controller supports both MMC_PM_KEEP_POWER and MMC_PM_WAKE_SDIO_IRQ capabilities. kvalo: also adds a missing break in ath6kl_cfg80211_resume(), luckily it didn't have any effect on functionality. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Move ath6kl_cfg80211_stop() call specific to deep sleep and cut pwrRaja Mani2011-11-11
| | | | | | | | | | | | | | | | ath6kl_cfg80211_stop() call is not applicable for WOW mode. Hence moving this call to deep sleep and cut pwr specific cases. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Add new state for WOW modeRaja Mani2011-11-11
| | | | | | | | | | | | | | | | In addition to existing deep sleep and cut pwr mode, new state is added in ath6kl_cfg_suspend_mode as well as in ath6kl_state for WOW. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Include new parameter in suspend path for wowlanRaja Mani2011-11-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | cfg80211 layer provides user defined wow parameters like Filter options, Patterns, Pattern's mask, etc via "struct cfg80211_wowlan *wow" to suspend function. Right now, this wowlan parameter is not handled in __ath6kl_cfg80211_suspend func. This parameter has to be passed to HIF layer, So that it can be passed back to ath6kl's cfg interface layer when WOW mode is selected. In case of deep sleep and cut power mode, it's not handled. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Add WOW suspend/resume implementationRaja Mani2011-11-11
| | | | | | | | | | | | | | | | This is the core WOW suspend/resume functions will be called in PM suspend/resume path. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Add wmi functions to configure WOW mode and host sleep modeRaja Mani2011-11-11
| | | | | | | | | | | | | | | | It will be used in WOW suspend/resume functions to active/deactivate WOW suspend mode. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
* | ath6kl: Add wmi functions to add/delete WOW patternsRaja Mani2011-11-11
| | | | | | | | | | | | | | | | | | These commands will be used in WOW suspend/resume functions to configure WOW parameters like patterns to be matched and it's mask value, etc. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>