#
d3762b40 |
| 01-Dec-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: configurable vring sizes
Allow to configure VRING size for both Rx and Tx via module parameters: rx_ring_order and tx_ring_order. Parameters are ring size orders, i.e. ring size calculated
wil6210: configurable vring sizes
Allow to configure VRING size for both Rx and Tx via module parameters: rx_ring_order and tx_ring_order. Parameters are ring size orders, i.e. ring size calculated as 1 << order. Defaults for both Tx and Rx are order 9, i.e. size 512
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
60abbb6e |
| 01-Dec-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: fix recovery after scan timeout
Scan timeout treated as indication for firmware error; and should be handled in the same way.
Recovery state machine does not perform as designed because it
wil6210: fix recovery after scan timeout
Scan timeout treated as indication for firmware error; and should be handled in the same way.
Recovery state machine does not perform as designed because its state is not updated in case of scan timeout.
Fix is to set recovery state machine into the proper state.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
4821e6d8 |
| 01-Dec-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: propagate disconnect reason
Propagate reason for the disconnect through the relevant call chains: - report to cfg80211 reason as reported by the firmware - provide to the firmware reason as
wil6210: propagate disconnect reason
Propagate reason for the disconnect through the relevant call chains: - report to cfg80211 reason as reported by the firmware - provide to the firmware reason as requested by cfg80211
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
Revision tags: v3.18-rc7, v3.18-rc6, v3.18-rc5, v3.18-rc4, v3.18-rc3 |
|
#
9a06bec9 |
| 28-Oct-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: Add support for large packets
It is possible to configure driver using mtu_max module parameter by setting it to value in range of 68..7920 inclusive. This is sub-optimal performance-wise i
wil6210: Add support for large packets
It is possible to configure driver using mtu_max module parameter by setting it to value in range of 68..7920 inclusive. This is sub-optimal performance-wise in case packet is larger than 1 page. mtu_max default value is 2228.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
e240537b |
| 28-Oct-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: improve dmesg for fw error handling
In case of FW error, make it clear (in dmesg) what branch is taken in the error recovery code.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qual
wil6210: improve dmesg for fw error handling
In case of FW error, make it clear (in dmesg) what branch is taken in the error recovery code.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
b516fcc5 |
| 28-Oct-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: prevent double disconnect command issuing
Disconnect flow may be invoked either from upper layer request, or from event reported by the firmware.
In case of firmware event, driver need to
wil6210: prevent double disconnect command issuing
Disconnect flow may be invoked either from upper layer request, or from event reported by the firmware.
In case of firmware event, driver need to release resources for the station but not send another disconnect WMI command.
In case of upper layer request, WMI_DISCONNECT_STA_CMDID command need to be issued for the firmware to perform disconnect on the MAC layer. Eventually, event is expected to confirm MAC disconnect, but it is better to not wait for firmware event and release station resources immediately. FW may fail to report disconnect for various reasons, so one could not rely on event always reported.
Introduce parameter to distinguish 2 cases above to prevent double WMI command issuing.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
48516298 |
| 28-Oct-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: reset flow updates
As communicated with the firmware & hardware teams
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver
wil6210: reset flow updates
As communicated with the firmware & hardware teams
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
cded9369 |
| 28-Oct-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: do not attempt FW recovery if interface is down
When interface is down, recovery flow should not be attempted. Next ndo_open() will trigger target reset, that is FW recovery.
Doing recover
wil6210: do not attempt FW recovery if interface is down
When interface is down, recovery flow should not be attempted. Next ndo_open() will trigger target reset, that is FW recovery.
Doing recovery while interface is down cause internal "up", leaving internal driver state in conflict with network stack. Then, when network stack will call ndo_open(), kernel oops will be triggered.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
Revision tags: v3.18-rc2, v3.18-rc1, v3.17 |
|
#
c33407a8 |
| 01-Oct-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: manual FW error recovery mode
Introduce manual FW recovery mode. It is activated if module parameter @no_fw_recovery set to true. May be changed at runtime.
Recovery information provided b
wil6210: manual FW error recovery mode
Introduce manual FW recovery mode. It is activated if module parameter @no_fw_recovery set to true. May be changed at runtime.
Recovery information provided by new "recovery" debugfs file. It prints:
mode = [auto|manual] state = [idle|pending|running]
In manual mode, after FW error, recovery won't start automatically. Instead, after notification to user space, recovery waits in "pending" state, as indicated by the "recovery" debugfs file. User space tools may perform data collection and allow to continue recovery by writing "run" to the "recovery" debugfs file. Alternatively, recovery pending may be canceled by stopping network interface i.e. 'ifconfig wlan0 down'
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
Revision tags: v3.17-rc7 |
|
#
b6b1b0ec |
| 22-Sep-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: ethtool ops
Provide ethtool support; with support for interrupt coalescing through get_coalesce/set_coalesce. Placeholders for begin/complete will be used by runtime PM to make sure target
wil6210: ethtool ops
Provide ethtool support; with support for interrupt coalescing through get_coalesce/set_coalesce. Placeholders for begin/complete will be used by runtime PM to make sure target is powered up while performing ethtool operations
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
Revision tags: v3.17-rc6, v3.17-rc5 |
|
#
73d839ae |
| 10-Sep-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: fix for oops while stopping interface
When interface stopped while running intensive Rx traffic, the following oops observed:
[89846.734683] Call trace: [89846.737117] [<ffffffc00083aa64>]
wil6210: fix for oops while stopping interface
When interface stopped while running intensive Rx traffic, the following oops observed:
[89846.734683] Call trace: [89846.737117] [<ffffffc00083aa64>] dev_gro_receive+0xac/0x358 [89846.742674] [<ffffffc00083ae94>] napi_gro_receive+0x24/0xa4 [89846.748251] [<ffffffbffc1c2f88>] $x+0xec/0x1f8 [wil6210] wil_netif_rx_any [89846.753547] [<ffffffbffc1c4830>] $x+0x34/0x54 [wil6210] wil_release_reorder_frame [89846.758755] [<ffffffbffc1c48ac>] wil_release_reorder_frames+0x5c/0x78 [wil6210] [89846.766044] [<ffffffbffc1c4bf8>] wil_tid_ampdu_rx_free+0x20/0x48 [wil6210] [89846.772901] [<ffffffbffc1bedc8>] $x+0x190/0x1e8 [wil6210] [89846.778285] [<ffffffbffc1c0ed4>] wmi_event_worker+0x230/0x2f8 [wil6210] [89846.784865] [<ffffffc0000b0bc8>] process_one_work+0x278/0x3fc [89846.790591] [<ffffffc0000b1218>] worker_thread+0x200/0x330 [89846.796060] [<ffffffc0000b6664>] kthread+0xac/0xb8 [89846.800836] Code: b940c661 f9406a62 8b010041 f9400026 (f8636882) [89846.807008] ---[ end trace d6fdc17cd27d18f6 ]---
Reason is the following: when removing Rx vring (wil_netdev_ops.ndo_stop -> wil_stop -> wil_down -> __wil_down -> wil_rx_fini), Rx interrupt occurs. It trigger Rx NAPI, calling wil_rx_handle() that reaps (already cleaned) buffer, causing skb referring to garbage memory being set into reorder buffer. Then, network stack trying to access this buffer and fails.
Prevent Rx NAPI from being scheduled if device going to stop. Bit wil_status_napi_en reflects NAPI enablement state, check it when triggering Rx NAPI.
Testing shows that check for wil_status_napi_en sometimes gets negative, and new error message get printed - in this case kernel oops would be observed. Original oops is no more reproducible.
This change requires also changes in the AP flows. Properly enable/disable NAPI for the AP. Make sure Rx VRING is disabled when resetting target.
For this, promote __wil_up() and __wil_down() to the module scope, and use it in the relevant flows.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
e4dbb093 |
| 10-Sep-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: rename [en|dis]able irq to [un]mask
To better reflect real action performed, rename: s/wil6210_disable_irq/wil_mask_irq/ s/wil6210_enable_irq/wil_unmask_irq/
Signed-off-by: Vladimir Kondra
wil6210: rename [en|dis]able irq to [un]mask
To better reflect real action performed, rename: s/wil6210_disable_irq/wil_mask_irq/ s/wil6210_enable_irq/wil_unmask_irq/
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
59502647 |
| 10-Sep-2014 |
Dedy Lansky <qca_dlansky@qca.qualcomm.com> |
wil6210: introduce separate completion for WMI
re-use of wmi_ready for both FW ready event and for wmi_call was causing false "FW not ready" indication in case wmi_call() was invoked while reset too
wil6210: introduce separate completion for WMI
re-use of wmi_ready for both FW ready event and for wmi_call was causing false "FW not ready" indication in case wmi_call() was invoked while reset took place. add wmi_call completion variable instead of re-using wmi_ready.
Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
ec81b5ad |
| 10-Sep-2014 |
Dedy Lansky <qca_dlansky@qca.qualcomm.com> |
wil6210: fix race condition between BACK event and Rx data
While handling Rx packet, BACK event arrives and frees tid_ampdu_rx array. This causes kernel panic while accessing already freed spinlock
wil6210: fix race condition between BACK event and Rx data
While handling Rx packet, BACK event arrives and frees tid_ampdu_rx array. This causes kernel panic while accessing already freed spinlock
The fix is to remove tid_ampdu_rx[]'s spinlock and instead use single sta's spinlock to guard the whole tid_ampdu_rx array.
Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
f172b563 |
| 10-Sep-2014 |
Dedy Lansky <qca_dlansky@qca.qualcomm.com> |
wil6210: fix for memory corruption upon rmmod
Driver disabled PCI master before making sure HW is idle. This caused memory corruption in case HW access system memory after PCI master got disabled. T
wil6210: fix for memory corruption upon rmmod
Driver disabled PCI master before making sure HW is idle. This caused memory corruption in case HW access system memory after PCI master got disabled. The fix is to change uninit sequence. Make sure FW/HW is idle before disabling PCI
Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
9cf10d62 |
| 10-Sep-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: add more debug printouts
added misc printouts in some init/uninit functions for better traceability
Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Vladimir Kondra
wil6210: add more debug printouts
added misc printouts in some init/uninit functions for better traceability
Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
f772ebfb |
| 10-Sep-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: platform specific module
New module (wil_platform) for handling platform specific tasks
Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Vladimir Kondratiev <qca_vk
wil6210: platform specific module
New module (wil_platform) for handling platform specific tasks
Signed-off-by: Dedy Lansky <qca_dlansky@qca.qualcomm.com> Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
8fe59627 |
| 10-Sep-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: coding style fixes
- parentheses, indentation, typos - seq_puts() instead of seq_printf() with single argument - sizeof(var) vs. sizeof(type)
Signed-off-by: Vladimir Kondratiev <qca_vkondr
wil6210: coding style fixes
- parentheses, indentation, typos - seq_puts() instead of seq_printf() with single argument - sizeof(var) vs. sizeof(type)
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
151a9706 |
| 10-Sep-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: firmware download
Firmware download implemented but is still experimental feature; flag controlling it added, no_fw_load. It is true by default, use no_fw_load=N to activate feature.
Reset
wil6210: firmware download
Firmware download implemented but is still experimental feature; flag controlling it added, no_fw_load. It is true by default, use no_fw_load=N to activate feature.
Reset flows also got some adjustment for the fw download to work
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
Revision tags: v3.17-rc4, v3.17-rc3, v3.17-rc2, v3.17-rc1 |
|
#
520d68e7 |
| 06-Aug-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: wait longer for hardware reset completion
Typical time for hardware reset, as measured, is about 200..250 msec. Adjust sleeping to use more relaxed msleep, increase sleep interval and incre
wil6210: wait longer for hardware reset completion
Typical time for hardware reset, as measured, is about 200..250 msec. Adjust sleeping to use more relaxed msleep, increase sleep interval and increase total sleep time to be about 1sec
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
bbb2adc7 |
| 06-Aug-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: check error in wil_target_reset()
When resetting target in wil_target_reset(), error may occur. Indicate error via error code. In case of error, don't attempt to further interact with card,
wil6210: check error in wil_target_reset()
When resetting target in wil_target_reset(), error may occur. Indicate error via error code. In case of error, don't attempt to further interact with card, specifically don't attempt firmware download or interrupts enabling.
Move wil_rx_fini() to be always executed to prevent memory leak.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
02525a79 |
| 06-Aug-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: update copyright year 2014
Fix Copyright headers in all files changed in 2014, to mention 2014
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Lin
wil6210: update copyright year 2014
Fix Copyright headers in all files changed in 2014, to mention 2014
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
#
cc9e4a2b |
| 06-Aug-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: fix race in reset
It is important to halt USER CPU first, then MAC CPU Otherwise, race happens in the firmware
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off
wil6210: fix race in reset
It is important to halt USER CPU first, then MAC CPU Otherwise, race happens in the firmware
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
Revision tags: v3.16, v3.16-rc7, v3.16-rc6 |
|
#
6508281b |
| 14-Jul-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: support for "sparrow" hardware
New hardware release appears; it require some changes to properly support it. Introduce struct wil_board and "board" attribute in wil6210_priv; keep hardware
wil6210: support for "sparrow" hardware
New hardware release appears; it require some changes to properly support it. Introduce struct wil_board and "board" attribute in wil6210_priv; keep hardware variant information in this structure. fill it on probe(). Used in the reset flow.
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|
Revision tags: v3.16-rc5, v3.16-rc4, v3.16-rc3, v3.16-rc2 |
|
#
55f8f680 |
| 16-Jun-2014 |
Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> |
wil6210: track Tx queue state
Provide both event (netif_tx_[stop|wake]) tracking via printk; and state via debugfs 'info'
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-o
wil6210: track Tx queue state
Provide both event (netif_tx_[stop|wake]) tracking via printk; and state via debugfs 'info'
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
show more ...
|