summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2011-08-09ath6kl: Release the memory allocated for the firmwareRaja Mani
Nowhere the firmware memory is freed, free it during the device destroy process. Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Fix crash during the connection processRaja Mani
Sometimes, the network manager is failing to connect to the AP due to the below kernel crash message. The reason behind this, after issuing the connect command to the chip, the chip is sending disconnect event and then immediately one connect event to the host in some random cases. The host driver resets all states (including cfg80211 state machine) when it receives disconnect event from the chip. But, still the host driver reports the next received connect event to cfg80211, at that time cfg80211 SME state would have been in IDLE state, which was causing the below kernel crash. Now, host driver's sme state machine is checked every time before delivering connect event to cfg80211 WARNING: at net/wireless/sme.c:517 cfg80211_connect_result+0x10d/0x120() [..] Call Trace: [<c0145732>] warn_slowpath_common+0x72/0xa0 [<c05d676d>] ? cfg80211_connect_result+0x10d/0x120 [<c05d676d>] ? cfg80211_connect_result+0x10d/0x120 [<c0145782>] warn_slowpath_null+0x22/0x30 [<c05d676d>] cfg80211_connect_result+0x10d/0x120 [<f83ff497>] ath6kl_cfg80211_connect_event+0x427/0x4f0 [ath6kl] [<c035d26a>] ? put_dec+0x2a/0xa0 [<c035d645>] ? number+0x365/0x380 [<c0154675>] ? mod_timer+0x135/0x260 [<c035e00e>] ? format_decode+0x2fe/0x370 [<c01263c8>] ? default_spin_lock_flags+0x8/0x10 [<c05fd91f>] ? _raw_spin_lock_irqsave+0x2f/0x50 [<c0146032>] ? console_unlock+0x172/0x1c0 [<f8402659>] ath6kl_connect_event+0x89/0x400 [ath6kl] [<f840826e>] ath6kl_wmi_control_rx+0x98e/0x1d60 [ath6kl] [<c01335b5>] ? __wake_up+0x45/0x60 [<f84053aa>] ath6kl_rx+0x56a/0x770 [ath6kl] [<c04d0242>] ? mmc_release_host+0x22/0x40 [<c04d9329>] ? sdio_release_host+0x19/0x30 [<f840a27a>] ? ath6kl_sdio_read_write_sync+0x7a/0xc0 [ath6kl] [<f83f82b1>] do_rx_completion+0x41/0x50 [ath6kl] [<f83faa6a>] htc_rxmsg_pending_handler+0x6ba/0xbd0 [ath6kl] [<f8404bb0>] ? ath6kl_tx_data_cleanup+0x30/0x30 [ath6kl] [<f840a1c0>] ? ath6kl_sdio_irq_handler+0x30/0x70 [ath6kl] [<f83f7cd5>] ath6kldev_intr_bh_handler+0x2a5/0x630 [ath6kl] [<f840a1c0>] ath6kl_sdio_irq_handler+0x30/0x70 [ath6kl] [<c04d97c7>] sdio_irq_thread+0xc7/0x2d0 [<c013aeb0>] ? default_wake_function+0x10/0x20 [<c012fc98>] ? __wake_up_common+0x48/0x70 [<c04d9700>] ? sdio_claim_irq+0x200/0x200 [<c0163854>] kthread+0x74/0x80 [<c01637e0>] ? kthread_worker_fn+0x160/0x160 [<c0604c06>] kernel_thread_helper+0x6/0x10 Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Cleanup void * in ath6kl_cfg80211_scan_node()Vasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Use ath6kl_cfg80211_scan_node() directly instead of function pointerVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Remove ath6kl_wmi_iterate_nodes()Vasanthakumar Thiagarajan
Use wlan_iterate_nodes() directly. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Pass only the needed scan_table to ath6kl_wmi_iterate_nodes()Vasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Move initialization/deinitialization of scan_table to appropriate ↵Vasanthakumar Thiagarajan
functions By having scan_table in struct ath6kl, it makes sense to move initialization to ath6kl_init() and deinitialization to ath6kl_destroy(). Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Cleanup parameters of wlan_node_table_init()Vasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Remove ath6kl_wmi_get_current_bssid()Vasanthakumar Thiagarajan
Use the bssid from ath6kl directly. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Remove bssid from struct wmiVasanthakumar Thiagarajan
This is nothing but bssid of struct ath6kl. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Cleanup parameters for wlan_refresh_inactive_nodes()Vasanthakumar Thiagarajan
And remove the reference to wmi in ath6kl_node_table. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Move scan table from wmi to ath6klVasanthakumar Thiagarajan
It does not need to be in wmi Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Cleanup void *parent_dev in struct wmiVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: change aggreation timeout message from an error to a debug messageKalle Valo
When I connect to my Linksys WT610N AP supporting 11n I see a lot of aggreation timeout errors: [ 408.885053] ath6kl: aggr timeout (st 3109 end 3140) [ 463.872108] ath6kl: aggr timeout (st 3671 end 3702) [ 495.010060] ath6kl: aggr timeout (st 3983 end 4014) [ 503.604047] ath6kl: aggr timeout (st 4065 end 0) [ 518.963047] ath6kl: aggr timeout (st 141 end 172) [ 525.014066] ath6kl: aggr timeout (st 205 end 236) [ 573.957051] ath6kl: aggr timeout (st 701 end 732) [ 585.019067] ath6kl: aggr timeout (st 816 end 847) But still the connection seems to work. To not clutter the logs change the error message to a debug message. But add a fixme comment so that this will be investigated. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: remove dependency to wireless extensionsKalle Valo
ath6kl Kconfig still had dependencies to wext, remove those as they are not needed anymore. Now ath6kl should not have any wext code left. Time to have a beer and celebrate this. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: fix crash when interface is closed but scan is ongoingKalle Valo
When ath6kl module was removed while a scan was ongoing the driver would crash in ath6kl_cfg80211_scan_complete_event(). Fix the function not to iterate nodes when the scan is aborted. The nodes are already freed when the module is being unloaded. This patch removes the null check entirely as the wmi structure is not accessed anymore during module unload. Also fix a bug where the status was checked as a bitfield with '&' operator. But it's not a bitfield, just a regular error code. This is a port of my patch from ath6kl staging with the same title. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: fix atomicity in ath6kl_cfg80211_scan_node()Kalle Valo
ath6kl_cfg80211_scan_node() was calling cfg80211_inform_bss_frame() with CFP_KERNEL but the function is executed with a spin lock taken. This is wrong and the function must use GFP_ATOMIC instead. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: don't force foreground scan when connectedKalle Valo
In my setup data transfer stalls when there's data transmission during scan. After some testing I found out that using background scan when connected to makes the problem go away. This is more like a workaround than a proper fix, but as the stall is so severe the workaround is justified. With a dual band card this increases scan time when connected from 1.9s to 4.4s. When not connected the scan time is not affected and is the same 1.9s. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Use bit field macros to maintain wlan enabled and disabled statusRaja Mani
Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Avoid two memset to clear src and desr mac addr variable memory in ↵Raja Mani
ath6kl_wmi_dot11_hdr_remove() Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Rearrange the variable and the value position in IF conditionRaja Mani
Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Print bad trailer data only when htc fails to parse trailer infoRaja Mani
Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Remove unused struct ath6kl_async_reg_io_bufferVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Move chk_irq_status_cnt from ath6kl_device to htc_targetVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Bypass reading irq status based on chk_irq_status_cntVasanthakumar Thiagarajan
This is a regression. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Move scatter information from ath6kl_device to htc_targetVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Move block_sz and block_mask from ath6kl_device to htc_targetVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Move bundle size from ath6kl_device to htc_targetVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Remove callback msg_pending() and used the function directlyVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Minor cleanup in ath6kldev_submit_scat_req()Vasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Remove ath6kldev_setup_msg_bndl()Vasanthakumar Thiagarajan
Use appropriate hif function directly. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Merge scatter rw request functions into oneVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Refactor ath6kl_sdio_read_write_sync()Vasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Moe virt_scat from hif_dev_scat_sup_info to hif_scatter_reqVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Merge scatter gather setup functions for two methodVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Move down scatter enable and cleanup functionsVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Cleanup ath6kl_sdio_cleanup_scatter()Vasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Cleanup ath6kl_sdio_enable_scatter()Vasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Refactor refactor ath6kl_sdio_setup_scat_resource()Vasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Remove endpoint reference from hif_scatter_reqVasanthakumar Thiagarajan
Endpoint id ffrom htc_packet can be used instead. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Remove useless flags in hif_scatter_reqVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Remove struct hif_scatter_req_privVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: Move ath6kl_sdio_async_rw_scatter() down to other hif_ops functionsVasanthakumar Thiagarajan
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09ath6kl: cleanup callbacks for different scatter gather methodVasanthakumar Thiagarajan
Define a hook in ath6kl_hif_ops for hif scatter gather mechanism. When virtual scatter gather is used, call the respective function directly. Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-09Add ath6kl cleaned up driverKalle Valo
Last May we started working on cleaning up ath6kl driver which is currently in staging. The work has happened in a separate ath6kl-cleanup tree: http://git.kernel.org/?p=linux/kernel/git/kvalo/ath6kl-cleanup.git;a=summary After over 1100 (!) patches we have now reached a state where I would like to start discussing about pushing the driver to the wireless trees and replacing the staging driver. The driver is now a lot smaller and looks like a proper Linux driver. The size of the driver (measured with simple wc -l) dropped from 49 kLOC to 18 kLOC and the number of the .c and .h files dropped from 107 to 22. Most importantly the number of subdirectories reduced from 26 to zero :) There are two remaining checkpatch warnings in the driver which we decided to omit for now: drivers/net/wireless/ath/ath6kl/debug.c:31: WARNING: printk() should include KERN_ facility level drivers/net/wireless/ath/ath6kl/sdio.c:527: WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt The driver has endian annotations for all the hardware specific structures and there are no sparse errors. Unfortunately I don't have any big endian hardware to test that right now. We have been testing the driver both on x86 and arm platforms. The code is also compiled with sparc and parisc cross compilers. Notable missing features compared to the current staging driver are: o HCI over SDIO support o nl80211 testmode o firmware logging o suspend support Testmode, firmware logging and suspend support will be added soon. HCI over SDIO support will be more difficult as the HCI driver needs to share code with the wifi driver. This is something we need to research more. Also I want to point out the changes I did for signed endian support. As I wasn't able to find any support for signed endian annotations I decided to follow what NTFS has done and added my own. Grep for sle16 and sle32, especially from wmi.h. Various people have been working on the cleanup, the hall of fame based on number of patches is: 543 Vasanthakumar Thiagarajan 403 Raja Mani 252 Kalle Valo 16 Vivek Natarajan 12 Suraj Sumangala 3 Joe Perches 2 Jouni Malinen Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> Signed-off-by: Raja Mani <rmani@qca.qualcomm.com> Signed-off-by: Vivek Natarajan <nataraja@qca.qualcomm.com> Signed-off-by: Suraj Sumangala <surajs@qca.qualcomm.com> Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2011-08-08ath9k: use the new channel noise value for signal strength and survey infoFelix Fietkau
Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-08-08ath9k_hw: calculate a much better approximation of channel noiseFelix Fietkau
Currently ath9k presents the internal calibrated noise floor as channel noise measurement, however this results in highly chip specific values that are only useful as relative measurements but do not resemble any real channel noise values. In order to give a much better approximation of the real channel noise, add the difference between the measured noise floor and the nominal chip specific noise floor to the default minimum channel noise value, which is currently used to calculate the signal strength from the RSSI value. This may not be 100% accurate, but it's much better than what's there before. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-08-08libertas_usb: program OLPC EC wakeup mask for wake-on-WLANDaniel Drake
OLPC power management code has recently gone upstream. This piece completes the puzzle for libertas_usb, which now programs the OLPC EC for wlan wakeups when they have been requested. Signed-off-by: Daniel Drake <dsd@laptop.org> Acked-by: Dan Williams <dcbw@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-08-08ath9k_hw: do not limit initial tx power to 20 dbmFelix Fietkau
When testing for tx power, bypass the default limits. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-08-08ath9k_hw: fix calculated runtime tx power limitFelix Fietkau
Use the previously calculated maximum of all rates instead of just the one from the lowest rate of the selected PHY mode. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>