55df5afb13718cda49128fa5985556df91d07765 |
|
03-Mar-2012 |
Arik Nemtsov <arik@wizery.com> |
wl12xx: implement SW Tx watchdog Track freed FW blocks during Tx. If no blocks were freed during a predefined timeout, initiate a HW recovery. This helps in situations when the FW watchdog fails. Don't trigger recovery during activities that can temporarily stop Tx. This includes: - scanning - buffering packets for sleeping stations (AP role) - ROC on any role Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
5ec8a448e0e978103bc5ca7136084b5e2b36989e |
|
01-Feb-2012 |
Eliad Peller <eliad@wizery.com> |
wl12xx: consider encryption and QoS in auto arp template When configuring the arp response template, and encryption is enabled, we should add some space and set the protected flag bit in the fc. In order to track the encryption type, set wlvif->encryption_type when setting an encryption key, and reconfigure the arp response. Clear this field on wl1271_join, as keys have to be re-configured anyway after a join command. Similarly, track whether QoS is configured. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
f4f57943f265d80fe5f0fedf6964f8056e753cf3 |
|
31-Jan-2012 |
Eliad Peller <eliad@wizery.com> |
wl12xx: add TX_HW_ATTR_HOST_ENCRYPT flag In WEP shared authentication, we encrypt the auth frame in the host, and we want the fw to pass it as-is. Use the TX_HW_ATTR_HOST_ENCRYPT flag in order to indicate it to the fw. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
9eb599e9c62dcfd4efece1936c385381b366b684 |
|
10-Oct-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: rearm rx streaming per vif Currently, the rx streaming doesn't support multi-vif (the actual wlvif is taken from wl->vif, and the management is global). Make the rx streaming timers/works per-vif, and pass the the actual vif as param. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
a32d0cdfcb7e5d41f210e13cbc78dc86a5a85a08 |
|
10-Oct-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: support multiple vifs in the tx path Pass the wlvif associated with each skb as param. Note that dummy packet doesn't belong to any particular vif, so we pass NULL in this case. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
d6a3cc2ef962ad4392a2401cae513a18a6d35099 |
|
10-Oct-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: unify STA and AP tx_queue mechanism Make sta use the global wl->links[hlid].tx_queue (by considering its links map) instead of wl->tx_queue, and then unify the tx and tx_reset flows for the various vifs. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
c7ffb902cca655e4d6bdda4156407008573bb214 |
|
05-Oct-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: move ap_hlid_map into wlvif.ap Add wlvif->links_map bitmap to represent all the links allocated for this vif. AP vif also has a sta_hlid_map bitmap, which represents the links stations connected to it (sta_hlid_bitmap is a subset of wlvif->links_map, which itself is a subset of the global wl->links_map) Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
a8ab39a4b588e8523be2fa75671bdc9612d3467a |
|
05-Oct-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: move ap_global_hlid and ap_bcast_hlid into wlvif move ap_global_hlid and ap_bcast_hlid into the per-interface data, rather than being global. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
536129c8ad35de87ff2f864f205a54ac32bfebcc |
|
05-Oct-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: move bss_type into wlvif move bss_type into the per-interface data, rather than being global. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
af7fbb28efff0c0d8fc0852ad6622e5437a7611e |
|
19-Sep-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: implement set_bitrate_mask callback Save the configured bitrate, and use the min allowed rate as the basic rate (e.g. when scanning). Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
f1acea9a9d48174f982e14a7a488b208d39d825f |
|
24-Aug-2011 |
Arik Nemtsov <arik@wizery.com> |
wl12xx: AP mode - clean BA and queue state in tx_reset Reset the BA state of all connected stations and explicitly clear the Tx queues. The latter is needed for clearing dummy packets from tx_queue_count. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
f8e0af6b8732b47c2531a280753d29a4ca2d114b |
|
24-Aug-2011 |
Arik Nemtsov <arik@wizery.com> |
wl12xx: don't indicate up PS-filtered dummy packets Dummy packets are currently only sent on the system_hlid link. The system_hlid link should never be filtered for PS (as it is not a STA link). Even so, for correctness, don't indicate dummy packets up. The skb does not belong to mac80211 and as such does not contain a correct skb->cb. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
e9eb8cbe77139470651c858b8b7a3d20d332cf47 |
|
16-Aug-2011 |
Guy Eilam <guy@wizery.com> |
wl12xx: use 2 spare TX blocks for GEM cipher Add tx_spare_blocks member to the wl1271 struct for more generic configuration of the amount of spare TX blocks that should be used. The default value is 1. In case GEM cipher is used by the STA, we need 2 spare TX blocks instead of just 1. Signed-off-by: Guy Eilam <guy@wizery.com> Acked-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
f4df1bd525e027aa1975e00f87a420aec7bef4e0 |
|
14-Aug-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: add system_hlid system_hlid is a const hlid (always 0), used by the fw and driver for packets which are not bound to specific role (e.g. dynamic memory packets). indicate it as always allocated. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
79b122dc51797b650201f21360481a0450e9b7e4 |
|
14-Aug-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: update rx/tx Update the rx/tx descriptors according to the new fw api (fw >= 6/7.3.0.0.75) Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
f1a46384ad568f72c11edbe2a3ec284bf32f2dbd |
|
07-Jul-2011 |
Arik Nemtsov <arik@wizery.com> |
wl12xx: start/stop queues according to global per-AC counters Split tx_queue_count to count per-AC skb's queued, instead of relying on the skb-queue len. The skb queues used were only valid in STA-mode, as AP-mode uses per-link queues. This fixes a major regression in AP-mode, caused by the patch "wl12xx: implement Tx watermarks per AC". With that patch applied, we effectively had no regulation of Tx queues in AP-mode. Therefore a sustained high rate of Tx could cause exhaustion of the skb memory pool. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
708bb3cf58a9bc90f3171ba64f30601f690e5aaa |
|
24-Jun-2011 |
Arik Nemtsov <arik@wizery.com> |
wl12xx: implement Tx watermarks per AC Each AC is stopped when its queue is filled up to the high watermark, and restarted when its queue it lower than the low watermark. This ensures congested ACs are not able to starve other ACs. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
b992c68228a3ccdf73ea4f57519e1663839a9cbe |
|
26-Jun-2011 |
Oz Krakowski <ozk@ti.com> |
wl12xx: fix Tx security sequence number handling Do not reset the security sequence number when issuing a join command or interface is removed. Instead, reset the counter only during the unjoin command. Added the notion of counter wrap-around to the LSB number in wl1271_tx_complete_packet. Added post recovery padding to adjust for potential security number progress during the recovery process by the firmware and avoid potential interop issues in encrypted networks. Signed-off-by: Oz Krakowski <ozk@ti.com> Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
7dece1c8e1044287287d44ac183a946333b55fc3 |
|
18-Apr-2011 |
Arik Nemtsov <arik@wizery.com> |
wl12xx: fix race condition during recovery in AP mode When operating as AP, the TX queues are not stopped when we start recovery. mac80211 is notified only after the fact. When there is pending TX, it will be queued even after the FW is down. This leads to situations where the TX queues are stopped (because of the TX-watermark mechanism), and are never woken up when we return from recovery. Fix this by explicitly stopping the TX queues when before initiating recovery. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
990f5de7384f9e5922e4c7c7572cbf4f29a9441e |
|
31-Mar-2011 |
Ido Yariv <ido@wizery.com> |
wl12xx: Clean up the dummy packet mechanism The current implementation allocates a skb each time one is requested by the firmware. Since dummy packets are handled differently than regular packets, the skb needs to be marked. Currently, this is done by setting the pkt_type member to 5. This might not be safe, as we cannot be sure that there won't be any other packets with this pkt_type value. Since the packet does not change from one request to another, we can simply allocate a dummy packet template and always send it. All changes to the skb done during packet preparation must be reverted, so the same skb can be reused. The dummy packets are not transmitted, therefore there's no need to set the BSSID or our own MAC address. In addition, the header portion of the packet was zeroed by mistake, so fix that as well. Signed-off-by: Ido Yariv <ido@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
0da13da767cd568c1fe2a7b5b936e86e521b5ae7 |
|
31-Mar-2011 |
Ido Yariv <ido@wizery.com> |
wl12xx: Clean up the block size alignment code Simplify and clean up the block size alignment code: 1. Set the block size according to the padding field type, as it cannot exceed the maximum value this field can hold. 2. Move the alignment code into a function instead of duplicating it in multiple places. 3. In the current implementation, the block_size member can be misleading because a zero value actually means that there's no need to align. Declare a block size alignment quirk instead. Signed-off-by: Ido Yariv <ido@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
e7ddf549f3f2da156f5c12921e6699024e80a3f4 |
|
10-Mar-2011 |
Luciano Coelho <coelho@ti.com> |
wl12xx: use 1 spare TX block instead of two All the new firmware versions (>=6.1.3.50.58 for STA and >=6.2.0.0.47 for AP) use 1 spare TX block. We still want to support older firmwares that require 2 spare blocks, so added a quirk to handle the difference. Also implemented a generic way of setting quirks that depend on the firmware revision. Signed-off-by: Luciano Coelho <coelho@ti.com>
|
ae47c45fd02fdf88d57adc370e78e7a01e2bfcbc |
|
06-Mar-2011 |
Shahar Levi <shahar_levi@ti.com> |
wl12xx: 1281/1283 support - Add dummy packet support Support sending dummy packet to wl128x FW as results of dummy packet event. That is part of dynamic TX mem blocks mechanism. Only send dummy packet when not in AP mode. [Even though the DUMMY_PACKET_EVENT_ID and the STA_REMOVE_COMPLETE_EVENT_ID events are defined to the same value, we need to treat them separately in the code. Keep the check and enable STA_REMOVE_COMPLETE_EVENT_ID for AP mode and DUMMY_PACKET_EVENT_ID for STA. Moved one warning to a cleaner place. Use WL1271_TID_MGMT for dummy packets -- Luca] Signed-off-by: Shahar Levi <shahar_levi@ti.com> Reviewed-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
48a61477bdc04896bd96d259388a0c42a7019943 |
|
06-Mar-2011 |
Shahar Levi <shahar_levi@ti.com> |
wl12xx: 1281/1283 support - Add acx commands New acx command that sets: Rx fifo enable reduced bus transactions in RX path. Tx bus transactions padding to SDIO block size that improve preference in Tx and essential for working with SDIO HS (48Mhz). The max SDIO block size is 256 when working with Tx bus transactions padding to SDIO block. Add new ops to SDIO & SPI that handles the win size change in case of transactions padding (relevant only for SDIO). [Fix endianess issues; simplify sdio-specific block_size handling; minor changes in comments; use "aligned_len" in one calculation instead of "pad" to avoid confusion -- Luca] Signed-off-by: Shahar Levi <shahar_levi@ti.com> Reviewed-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
a8c0ddb5ba2889e1e11a033ccbadfc600f236a91 |
|
22-Feb-2011 |
Arik Nemtsov <arik@wizery.com> |
wl12xx: AP-mode - TX queue per link in AC When operating in AP-mode we require a per link tx-queue. This allows us to implement HW assisted PS mode for links, as well as regulate per-link FW TX blocks consumption. Split each link into ACs to support future QoS for AP-mode. AC queues are emptied in priority and per-link queues are scheduled in a simple round-robin fashion. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
02ad2d9080266e6d999c00b78610ef6a45be45ea |
|
22-Feb-2011 |
Eliad Peller <eliad@wizery.com> |
wl12xx: use standard ALIGN() macro Use the standard ALIGN() macro instead of redefining similar macros. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
beb6c880720073c233633c45792a4bb5d5fedbd5 |
|
16-Oct-2010 |
Arik Nemtsov <arik@wizery.com> |
wl12xx: Add AP related definitions to HOST-FW interface Change structures in a non-destructive manner. This means no changes in size or location of existing members used by STA. Signed-off-by: Arik Nemtsov <arik@wizery.com> Reviewed-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
e0fe371b74326a85029fe8720506e021fe73905a |
|
16-Oct-2010 |
Arik Nemtsov <arik@wizery.com> |
wl12xx: AP mode - init sequence Split HW init sequence into AP/STA specific parts The AP specific init sequence includes configuration of templates, rate classes, power mode, etc. Also unmask AP specific events in the event mbox. Separate the differences between AP and STA init into mode specific functions called from wl1271_hw_init. The first is called after radio configuration and the second after memory configuration. Signed-off-by: Arik Nemtsov <arik@wizery.com> Reviewed-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
|
00d201001bd4e8a46e3d03c970abcb72256c368b |
|
08-Nov-2010 |
Shahar Levi <shahar_levi@ti.com> |
wl1271: Change wl12xx Files Names All files name prefix removed due to the fact that wl12xx driver supports wl1271 and wl1273. Also the definition in Kconfig and header files changed respectively. Signed-off-by: Shahar Levi <shahar_levi@ti.com> Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
|
9f2ad4fb52916e58a1b75e9a30f42638655932d3 |
|
12-Jun-2009 |
Juuso Oikarinen <juuso.oikarinen@nokia.com> |
wl12xx: Moved wl1251 TX path implementation into chip specific files Moved wl1251 TX path implementation into chip specific files to enable parallel implementation for the wl1271 TX path. Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com> Signed-off-by: Kalle Valo <kalle.valo@nokia.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
2f01a1f58889fbfeb68b1bc1b52e4197f3333490 |
|
29-Apr-2009 |
Kalle Valo <kalle.valo@nokia.com> |
wl12xx: add driver wl12xx is a driver for TI wl1251 802.11 chipset designed for embedded devices, supporting both SDIO and SPI busses. Currently the driver supports only SPI. Adding support 1253 (the 5 GHz version) should be relatively easy. More information here: http://focus.ti.com/general/docs/wtbu/wtbuproductcontent.tsp?contentId=4711&navigationId=12494&templateId=6123 (Collapsed original sequence of pre-merge patches into single commit for initial merge. -- JWL) Signed-off-by: Kalle Valo <kalle.valo@nokia.com> Signed-off-by: Bob Copeland <me@bobcopeland.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
|