summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/wl12xx
Commit message (Collapse)AuthorAgeFilesLines
* wl12xx: fix wl12xx_scan_sched_scan_ssid_list() check that all given ssids ↵Eyal Shapira2011-11-081-1/+1
| | | | | | | | | | | are in filters A minor fix for the check that verifies that all given SSIDs (in req) exist in the filters (the match sets) Signed-off-by: Eyal Shapira <eyal@wizery.com> Acked-by: Luciano Coelho <coelho@ti.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* wl12xx: disable AP-mode-specific quirksEliad Peller2011-10-074-22/+0
| | | | | | | | | | | The current wl12xx fw (7.3.0.0.77) supports both STA and AP mode, and we no longer use AP-mode-specific quirks. WL12XX_QUIRK_END_OF_TRANSACTION is still used for certain HWs, while WL12XX_QUIRK_LPD_MODE is not used anymore. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: Add support for HW channel switchShahar Levi2011-10-076-1/+133
| | | | | | | | | | | The wl12xx FW supports HW channel switch. If we don't use it, sometimes the firmware gets confused when recalibrating to the new channel, causing RX problems. This commit adds HW channel switch support by implementing the channell_switch op. Signed-off-by: Shahar Levi <shahar_levi@ti.com> [added one comment, remove the tx_flush and rephrased the commit message] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: set max_sched_scan_ie_len correctlyLuciano Coelho2011-10-071-0/+3
| | | | | | | | | | The wiphy max_sched_scan_ie_len attribute was not set correctly and remained as 0, so when IEs were being passed in a scheduled scan, we were returning -EINVAL. Fix this by setting the attribute properly. Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: configure rate policy for p2p operationsEliad Peller2011-10-073-1/+22
| | | | | | | | | | | | | | | p2p packets should go out only with OFDM rates. Configure a new rate policy that will (later) be used during p2p_find (when the p2p_cli / p2p_go interfaces are in use, we won't have to use this policy, as the configured rates should already be OFDM-only). Additionally, update CONF_TX_MAX_RATE_CLASSES to reflect the current value from the fw api. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* mac80211: pass vif param to conf_tx() callbackEliad Peller2011-10-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | tx params should be configured per interface. add ieee80211_vif param to the conf_tx callback, and change all the drivers that use this callback. The following spatch was used: @rule1@ struct ieee80211_ops ops; identifier conf_tx_op; @@ ops.conf_tx = conf_tx_op; @rule2@ identifier rule1.conf_tx_op; identifier hw, queue, params; @@ conf_tx_op ( - struct ieee80211_hw *hw, + struct ieee80211_hw *hw, struct ieee80211_vif *vif, u16 queue, const struct ieee80211_tx_queue_params *params) {...} Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* mac80211: add ieee80211_vif param to tsf functionsEliad Peller2011-09-271-1/+2
| | | | | | | | | | | TSF can be kept per vif. Add ieee80211_vif param to set/get/reset_tsf, and move the debugfs entries to the per-vif directory. Update all the drivers that implement these callbacks. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* wl12xx: report the stop_ba event to all STAs in AP-modeArik Nemtsov2011-09-231-1/+1
| | | | | | | | | Use the AP_MAX_LINKS as the upper boundary for traversing the links array, thereby guaranteeing BA sessions with all connected STAs are stopped when the stop_ba event is received. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: correct fw_status structure for 8 sta support in AP-modeArik Nemtsov2011-09-232-2/+4
| | | | | | | | Fix an erroneous labeling of array boundaries in the fw_status structure. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: implement set_bitrate_mask callbackEliad Peller2011-09-237-65/+102
| | | | | | | | 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>
* wl12xx: AP mode - support hidden SSIDArik Nemtsov2011-09-232-17/+82
| | | | | | | | | | | If a hidden SSID is requested, generate a probe response template containing the real SSID. Depends on the patch "mac80211: add ssid config to bss information in AP-mode". Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: Use dev_hlid for auth and assoc reqEliad Peller2011-09-231-6/+9
| | | | | | | | | | | | On roaming, the auth and assoc req are sent with the sta hlid. This is wrong, as the sta hlid is configured according to the old ap. Use the dev_hlid instead. Move the wl1271_tx_update_filters() call into wl1271_tx_get_hlid(), so wl->dev_hlid will be valid. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: send all pending packets on channel changeEliad Peller2011-09-231-0/+2
| | | | | | | | | There is a race condition between wl1271_tx_work() and the channel switch, so make sure all the pending packets are being sent before switching channel. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: remove P2P ie from probe responseEliad Peller2011-09-231-0/+28
| | | | | | | | | | | | | | | | wl12xx uses a single probe response template, regardless of the probe request. However, the P2P spec forbids including the p2p ie in some cases (e.g. the probe request didn't include the p2p ie). The fw responds only to probe requests that don't include the p2p ie, and passes up probe requests that include them (the supplicant will answer them). Thus, strip the p2p ie from the probe response template. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: remove TIM ie from probe responseEliad Peller2011-09-231-0/+17
| | | | | | | | | | | | wl12xx uses the beacon as the probe response template. However, the beacon includes a TIM ie, which shouldn't exist in the probe response. Delete it from the skb before configuring the probe response template. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: Include OFDM rates in IBSS modeShahar Levi2011-09-232-5/+3
| | | | | | | | | | We were including only 11b rates in IBSS mode. This patch adds OFDM rates. [Rephrased commit log and removed one unnecessary comment. -- Luca] Signed-off-by: Shahar Levi <shahar_levi@ti.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: fix sdio_test module functionalityShahar Levi2011-09-232-6/+15
| | | | | | | | | | | | | | Due to some changes in PM in recent kernels, the sdio_test module has been broken for a while. This patch fixes the code that powers the card on and off. Also made some small indentation fixes in the Makefile. [Rephrased commit log and removed the change in the FW name, since it's done in another patch. -- Luca] Signed-off-by: Shahar Levi <shahar_levi@ti.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: fix forced passive scansLuciano Coelho2011-09-221-6/+13
| | | | | | | | | | | | We were using incorrect max and min dwell times during forced passive scans because we were still using the active scan states to scan (passively) the channels that were not marked as passive. Instead of doing passive scans in active states, we now skip active states and scan for all channels in passive states. Cc: <stable@kernel.org> # 2.6.36+ Signed-off-by: Luciano Coelho <coelho@ti.com>
* Merge branch 'master' of git://git.infradead.org/users/linville/wirelessJohn W. Linville2011-09-203-52/+6
|\ | | | | | | | | | | | | | | Conflicts: drivers/net/wireless/iwlwifi/iwl-pci.c drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c drivers/net/wireless/rt2x00/rt2800usb.c drivers/net/wireless/wl12xx/main.c
| * wl12xx: add max_sched_scan_ssids value to the hw descriptionLuciano Coelho2011-08-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | After commit 5a865ba, we require a separate value to indicate the number of supported SSIDs in scheduled scans. This patch adds a proper value to the wl12xx driver. This fixes a regression in 3.1-rc3 where scheduled scans were not working properly with the wl12xx driver. Signed-off-by: Luciano Coelho <coelho@ti.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
| * wl12xx: Fix validation of pm_runtime_get_sync return valueIdo Yariv2011-08-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | wl1271_sdio_power_on checks if the return value of pm_runtime_get_sync is non-zero, and if so bails out. However, pm_runtime_get_sync can return a positive number which does not suggest an error has occurred. This is problematic for two reasons: 1. The function will needlessly bail out without decrementing back the runtime PM reference counter. 2. wl1271_power_on only checks if wl1271_power_on return value is negative. This means that wl1271_power_on will continue even if wl1271_sdio_power_on bailed out. As a result, sdio transactions will be initiated without properly enabling the sdio function and claiming the host. This could even lead to a kernel panic. Fix this by only checking that the return value of pm_runtime_get_sync is non-negative. Signed-off-by: Ido Yariv <ido@wizery.com> Acked-by: Luciano Coelho <coelho@ti.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
| * wl12xx: Remove obsolete testmode NVS push commandIdo Yariv2011-08-231-45/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The testmode NVS push command is no longer in use. In addition, it has several implementation issues that prevent it from working correctly: 1. wl1271_tm_cmd_configure relies on wl->chip.id being set. However, since the device was not necessarily booted by the time the function is called, wl->chip.id will be initialized to 0. 2. The NVS file is fetched by calling request_firmware() before it is possible to push an NVS file. 3. The maximum allowed size of nl binary payloads is not sufficient for pushing NVS files. 4. Pushing 128x NVS files will always fail due to a bug in the validation code. 5. In case the pushed NVS file is found invalid, the mutex will be kept locked and the nvs member will become a dangling pointer. Since this feature is not being used, remove it completely instead of fixing it. Signed-off-by: Ido Yariv <ido@wizery.com> Acked-by: Luciano Coelho <coelho@ti.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
| * drivers/net/wireless/wl12xx: add missing kfreeJulia Lawall2011-08-122-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In each case, the freed data should be freed in the error handling code as well. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @exists@ local idexpression x; statement S,S1; expression E; identifier fl; expression *ptr != NULL; @@ x = \(kmalloc\|kzalloc\|kcalloc\)(...); ... if (x == NULL) S <... when != x when != if (...) { <+...kfree(x)...+> } when any when != true x == NULL x->fl ...> ( if (x == NULL) S1 | if (...) { ... when != x when forall ( return \(0\|<+...x...+>\|ptr\); | * return ...; ) } ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Acked-by: Luciano Coelho <coelho@ti.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
* | wl12xx: support p2p interfacesEliad Peller2011-09-142-5/+20
| | | | | | | | | | | | | | | | | | | | Declare support for p2p interfaces, and create p2p_cli/p2p_go roles when being asked for. Indicate we are using a p2p interface by setting the wl->p2p flag. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: set mac80211 flags for A-MPDU aggregation supportArik Nemtsov2011-09-141-1/+3
| | | | | | | | | | | | | | | | | | | | | | We set the mac80211 flag for A-MPDU support and also indicate that Tx-agg session setup is performed in HW. This patch depends on "mac80211: add flag to indicate HW only Tx-agg setup support" Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: AP mode - clean BA and queue state in tx_resetArik Nemtsov2011-09-143-3/+14
| | | | | | | | | | | | | | | | | | 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>
* | wl12xx: AP mode - enable the BA constraint event from the FWArik Nemtsov2011-09-141-14/+23
| | | | | | | | | | | | | | | | | | | | | | Unblock the RX BA constraint event from firmware in AP mode as well. This allows us to stop RX BA sessions when the FW requests it. In addition refactor the handler for this event to make the flow clearer. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: don't regulate links when a single STA is connectedArik Nemtsov2011-09-143-5/+20
| | | | | | | | | | | | | | | | | | | | | | When operating as AP track the number of connected stations. When a single STA is connected don't regulate the PS status of the link. Since this is the only STA connected, there's no point holding space in FW for other links. This will speed up communications with a single connected STA in PSM. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: support up to 8 stations in AP-modeArik Nemtsov2011-09-141-2/+2
| | | | | | | | | | | | | | Change the max number of AP stations to 8, up from 5. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: AP mode - don't regulate FW blocks for non-active STAsArik Nemtsov2011-09-141-0/+4
| | | | | | | | | | | | | | | | | | | | Check a STA is associated before regulating its PS-status in mac80211. Should never happen, so warn as a precaution. [Small cosmetic change wrt Kalle Valo's comment. -- Luca] Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: don't indicate up PS-filtered dummy packetsArik Nemtsov2011-09-143-3/+8
| | | | | | | | | | | | | | | | | | | | | | 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>
* | wl12xx: ignore sched scan match sets without SSIDLuciano Coelho2011-09-141-3/+12
| | | | | | | | | | | | | | | | | | | | For now, cfg80211 only support match sets with SSIDs, but in the future more parameters will be added. This patch ignores eventual matches that do not contain SSIDs in preparation for the future. This change also affects the case where broadcast SSIDs are used. Matching a broadcast SSID will match everything, so they can be ignored. Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: increase number of allowed SSIDs in sched_scanLuciano Coelho2011-09-141-3/+4
| | | | | | | | | | | | | | | | | | The latest firmware supports up to 16 SSIDs in the scheduled scan lists. Increase the number we report to cfg80211 and increase the min/max dwell time to 30 and 60 TUs respectively, because otherwise we don't have the time to send the probes for all SSIDs. Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: add support for sched_scan filtersLuciano Coelho2011-09-141-35/+72
| | | | | | | | | | | | | | | | | | | | | | Implement support for filtering in scheduled scans. With this commit we now use the match sets passed by cfg80211 to filter on SSIDs. Due to the nature of the wl12xx firmware API, we don't allow SSIDs to be sent in the probe requests if they are not going to match any of the filters. Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: declare support for WIPHY_FLAG_AP_UAPSDEliad Peller2011-09-143-5/+19
| | | | | | | | | | | | | | | | Declare support for uapsd when working as AP, and set psd_type and sp_len whan a station is being added. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: use kstrtoul_from_userEliad Peller2011-09-141-41/+5
| | | | | | | | | | | | | | | | simplify code by calling kstrtoul_from_user() (instead of copy_from_user() + kstrtoul()) Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: remove deprecated CONFIG_WL12XX_HT flagLuciano Coelho2011-09-144-20/+0
| | | | | | | | | | | | | | | | The driver now support HT properly, so we can always have HT enabled. Remove the WL12XX_HT configuration. Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: don't queue a new dummy packet if one is already pendingArik Nemtsov2011-09-141-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | The firmware only asks for one dummy packet at a time, but sometimes we are unable to provide it before a FW timer expires. When this happens, the FW will re-request the dummy packet. If a packet is still queued in the driver queues, do nothing in this case. This prevents spurious dummy packets from clogging up the VO AC. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: add config_hangover commandEliad Peller2011-09-145-9/+91
| | | | | | | | | | | | | | | | | | Add wl12xx_acx_config_hangover() and respective conf values. This command configures how long the chip will stay awake after it was configured to enter psm. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: check for ROC on scan_completeEliad Peller2011-09-141-2/+3
| | | | | | | | | | | | | | | | | | When scan completes, and we are not associated, we should start the dev role and ROC. however, we might already be in this situation (e.g. if we got disconnected during scan). check for it. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: don't use WL1271_SCAN_OPT_PRIORITY_HIGH flagEliad Peller2011-09-141-3/+0
| | | | | | | | | | | | | | | | | | When setting the WL1271_SCAN_OPT_PRIORITY_HIGH flag, the driver requests a scan *now*, and the fw doesn't enter psm before scanning, which in turn might cause packets loss. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: don't disconnect on recoveryEliad Peller2011-09-141-3/+0
| | | | | | | | | | | | | | | | allow full connection recovery by dropping the beacon_loss notification. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: add beacon_filtering debugfs fileEliad Peller2011-09-141-0/+42
| | | | | | | | | | | | | | | | | | | | Allow enabling/disabling beacon_filtering by debugfs, in order to reduce the log size while debugging (beacon filtering is disabled by default in AP mode, as beacons are needed for ERP configuration). Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: add module_param to trigger BUG() on recoveryEliad Peller2011-09-141-0/+6
| | | | | | | | | | | | | | | | | | Crashing on recovery is useful for debugging, as a JTAG can be connected in order to investigate the current fw state. (otherwise, a reconfiguration will occur) Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: print the seq_num of rx packetEliad Peller2011-09-141-2/+5
| | | | | | | | | | | | | | | | Make it easier to match the driver log against a sniffer log. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | wl12xx: print acx idEliad Peller2011-09-141-1/+1
| | | | | | | | | | | | | | Add id param to the acx debug print (on wl1271_cmd_configure) Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* | Merge branch 'wl12xx-next' into for-linvilleLuciano Coelho2011-09-146-29/+103
|\ \
| * | wl12xx: use SCAN_SSID_TYPE_PUBLIC when using the wildcard in sched_scanLuciano Coelho2011-08-251-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | When we are scanning for the wildcard SSID in a scheduled scan, we should use SCAN_SSID_TYPE_PUBLIC so that we don't filter out the scan results. Signed-off-by: Luciano Coelho <coelho@ti.com>
| * | wl12xx: add support for multiple SSIDs in sched_scanLuciano Coelho2011-08-252-7/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The wl12xx firmwares support multiple SSIDs in a single sched_scan run. This patch implements support for it. We use three different types os sched_scan: FILTER_ANY (ie. not filtering, only wildcard SSID in the probe_reqs); FILTER_LIST (ie. send out probe_reqs with the specified SSIDs and only report if they are found); and FILTER_DISABLED (ie. send out probe_reqs with the specified SSIDs, but report anything found). Since we still don't have proper filter support in nl80211/cfg80211 yet, we cannot use filters when the wildcard SSID is used. Thus, we will not filter anything if the wildcard SSID is specified. Signed-off-by: Luciano Coelho <coelho@ti.com>
| * | wl12xx: enter psm only after station role was startedEliad Peller2011-08-251-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The station didn't get into psm after recovery, because psm was configured before sta role was started. Move wl1271_ps_set_mode() to be executed only after the role was started. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
OpenPOWER on IntegriCloud