aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
Commit message (Collapse)AuthorAge
* wl12xx: reconfigure rate policies on set_bitrate_maskEliad Peller2011-11-08
| | | | | | | | | | The rate policies are configured only after association, resulting in auth req being sent in wrong rates. Reconfigure rate policies on bitrate mask change. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: couple role_start_dev with rocEliad Peller2011-11-08
| | | | | | | | | | | | | Device role is always started along with ROC. Couple them together by introducing new wl12xx_start_dev and wl12xx_stop_dev functions. By using these functions, we solve a bug that occured during channel switch - we started the dev role on one channel, and ROCed on a different one. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: handle injected packetsEliad Peller2011-10-11
| | | | | | | | | | | | | | | Injected packets are sent with no vif, causing the wl12xx to NULL-dereference in multiple places. Furthermore, injected packets are currently not sent at all, as system_hlid doesn't belong to any specific role, so wl1271_skb_dequeue() never return its packets. Handle both these problems. Reported-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: use the same plat dev name for both SPI and SDIOLuciano Coelho2011-10-11
| | | | | | | | | | | | | | There's no need to have the bus name included in the platform device name that we create. The core driver doesn't need to know about the type of bus it uses. Any differences between the buses that need to be handled differently in the core, can be passed in the platform data (as the pwr_in_suspend boolean does). Use "wl12xx" for the device name in both bus drivers. Rename the platform driver name to "wl12xx_driver", just to differentiate from the platform device names. Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: remove warning message during IBSS TxShahar Lev2011-10-11
| | | | | | | | | | mac80211 sets the carrier on an IBSS interface even when no network is joined. Ignore garbage frames transmitted on a disconnected IBSS interface without printing warnings. Signed-off-by: Shahar Lev <shahar@wizery.com> [merged with wlvif changes] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: spi: use dev_err instead of wl1271_errorLuciano Coelho2011-10-11
| | | | | | | | | | | | To prevent a useless dependency between the spi module and the wl12xx module, we need to replace the wl1271_error macros with dev_err. At the same time, remove the SPI data hexdump, since this produces way too much data and is not particularly useful. There's no print_hex_dump() equivalent for dynamic debug, so it's hard to control when the dumps are printed out. Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: sdio: use dev_dbg instead of wl1271_debugLuciano Coelho2011-10-11
| | | | | | | | | | | | | To prevent a useless dependency between the sdio module and the wl12xx module, we need to replace the wl1271_debug macros (and friends) for dev_dbg and other equivalents. At the same time, remove the SDIO data hexdump, since this produces way too much data and is not particularly useful. There's not print_hex_dump() equivalent for dynamic debug, so it's hard to control when the dumps are printed out. Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: move debugging definitions to a separate fileLuciano Coelho2011-10-11
| | | | | | | | | | | Separate the debugging macros and other definitions to a new debug.h file. This is be needed because the sdio and spi modules don't need to depend on the wl12xx module anymore, but still need to include wl12xx.h. Currently they do depend on it, because of the debugging global that wl12xx exports. A future patch will remove this dependency. Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: drop unneeded plat_devFelipe Balbi2011-10-11
| | | | | | | | | now that useless plat_dev is unnecessary, we can remove it. Signed-off-by: Felipe Balbi <balbi@ti.com> [forward ported and fixed sysfs file creation] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: mark some symbols staticFelipe Balbi2011-10-11
| | | | | | | | | | after re-factoring a bunch of symbols are only used inside main.c which allows us to mark them as static. Signed-off-by: Felipe Balbi <balbi@ti.com> [forward-ported] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: move common init code from bus modules to mainFelipe Balbi2011-10-11
| | | | | | | | | | | Move all common parts from sdio.c and spi.c to main.c, since they now can be handled as part of the platform driver. Signed-off-by: Felipe Balbi <balbi@ti.com> [forward-ported, cleaned-up and rephrased commit message] [added a bunch of fixes and a new pdata element] [moved some new code into main.c as well] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: add platform driver to the core moduleFelipe Balbi2011-10-11
| | | | | | | | | | | | | Nnow that we have a platform_device on both glue layers, add a platform_driver to the core driver. It's currently an empty platform_driver but more functionality will be added on later patches. Signed-off-by: Felipe Balbi <balbi@ti.com> [forward-ported, cleaned-up and rephrased commit message] [added platform_driver.driver initialization] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: add a platform device to the spi moduleFelipe Balbi2011-10-11
| | | | | | | | | | | | The platform device will be used to match the platform driver that will be implemented by the core module. Signed-off-by: Felipe Balbi <balbi@ti.com> [forward-ported, cleaned-up and rephrased commit message] [call platform_device_add() instead of platform_device_register()] [store alloc'ed device platform directly in glue->core] [fixed the length of memset(res...)] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: add a platform device to the sdio moduleFelipe Balbi2011-10-11
| | | | | | | | | | | | The platform device will be used to match the platform driver that will be implemented by the core module. Signed-off-by: Felipe Balbi <balbi@ti.com> [forward-ported, cleaned-up and rephrased commit message] [call platform_device_add() instead of platform_device_register()] [store alloc'ed device platform directly in glue->core] [fixed the length of memset(res...)] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: add an spi glue struct to keep wl and device side-by-sideFelipe Balbi2011-10-11
| | | | | | | | | | | | In order to fully abstract the bus, we need to save the device structure *beside* wl1271, instead of inside it. This will help re-structuring the driver so that we avoid the duplicated code in the bus modules. Signed-off-by: Felipe Balbi <balbi@ti.com> [forward-ported and cleaned up and rephrased commit message] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: add an sdio glue struct to keep wl and device side-by-sideFelipe Balbi2011-10-11
| | | | | | | | | | | | In order to fully abstract the bus, we need to save the device structure *beside* wl1271, instead of inside it. This will help re-structuring the driver so that we avoid the duplicated code in the bus modules. Signed-off-by: Felipe Balbi <balbi@ti.com> [forward-ported and cleaned up and rephrased commit message] Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: remove sdio_test moduleLuciano Coelho2011-10-11
| | | | | | | | | | | | | | | This module has been causing more trouble than being useful. It only tests the SDIO speed by connecting to the wl12xx chip and does some throughput calculations. It is an ugly quick hack and, if we really want to have it as part of wl12xx we need to clean it up and implement it properly. A tarball of the code has been created and posted here, with some instructions: http://wireless.kernel.org/en/users/Drivers/wl12xx#SDIO_performance_test_module Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: use round-robin policy for txEliad Peller2011-10-11
| | | | | | | | | Currently, a single vif might starve all the other vifs. Save the last vif we dequeued a packet from, and continue with the following one using a round-robin policy. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: add elp wakeup/sleep calls to add_interfaceEliad Peller2011-10-11
| | | | | | | | add_interface might be called while the chip is in elp. add elp_wakeup/sleep calls to handle it. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: use dynamic rate policiesEliad Peller2011-10-11
| | | | | | | | allocate the rate policies dynamically, instead of using hardcoded indexes. this is needed for proper multi-role configuration. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: call stop() on recoveryEliad Peller2011-10-11
| | | | | | | | The recovery work should call stop() after it removed all the existing interfaces. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: replace all remaining wl->vif referencesEliad Peller2011-10-11
| | | | | | | | | | | | | wl->vif is appropriate only when a single vif is being used. Instead, pass wlvif as parameter or iterate through all the vifs (e.g. when a global configuration was changed) Leave wl->vif only to determine whether a vif was already added (this check will be removed as well after both the driver and fw will support multiple vifs) Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make op_config configure all vifsEliad Peller2011-10-11
| | | | | | | | When mac80211 changes a global (hw) config, iterate through all the relevant vifs and update them. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: add power_level field to wlvifEliad Peller2011-10-11
| | | | | | | | | | | | | | | move power_level into the per-interface data. mac80211 configures some values (e.g. band, channel) globally, while we configure them per-interface. In order to make it easier to keep track of the configured value for each value while keeping sync with mac80211, save these values both globally and per-vif. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: add channel field to wlvifEliad Peller2011-10-11
| | | | | | | | | | | | | | | add channel into the per-interface data. mac80211 configures some values (e.g. band, channel) globally, while we configure them per-interface. In order to make it easier to keep track of the configured value for each value while keeping sync with mac80211, save these values both globally and per-vif. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: add band field to wlvifEliad Peller2011-10-11
| | | | | | | | | | | | | | | add band field into the per-interface data. mac80211 configures some values (e.g. band, channel) globally, while we configure them per-interface. In order to make it easier to keep track of the configured value for each value while keeping sync with mac80211, save these values both globally and per-vif. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make WL1271_FLAG_CS_PROGRESS flag per-vifEliad Peller2011-10-11
| | | | | | | This flag should be set per-vif, rather than globally. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make WL1271_FLAG_PSPOLL_FAILURE flag per-vifEliad Peller2011-10-11
| | | | | | | This flag should be set per-vif, rather than globally. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make WL1271_FLAG_IF_INITIALIZED per-vifEliad Peller2011-10-11
| | | | | | | Make the initialization flag per-vif, and add some checks for it. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make WL1271_FLAG_RX_STREAMING_STARTED flag per-vifEliad Peller2011-10-11
| | | | | | | This flag should be set per-vif, rather than globally. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make WL1271_FLAG_STA_STATE_SENT flag per-vifEliad Peller2011-10-11
| | | | | | | This flag should be set per-vif, rather than globally. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make WL1271_FLAG_PSM flag per-vifEliad Peller2011-10-11
| | | | | | | | | move WL1271_FLAG_PSM and WL1271_FLAG_PSM_REQUESTED into per-vif flags. These flags should be set per-vif, rather than globally. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make WL1271_FLAG_AP_STARTED flag per-vifEliad Peller2011-10-11
| | | | | | | This flag should be set per-vif, rather than globally. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make WL1271_FLAG_IBSS_JOINED flag per-vifEliad Peller2011-10-11
| | | | | | | This flag should be set per-vif, rather than globally. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make WL1271_FLAG_STA_ASSOCIATED flag per-vifEliad Peller2011-10-11
| | | | | | | This flag should be set per-vif, rather than globally. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: rearm rx streaming per vifEliad Peller2011-10-11
| | | | | | | | | | | | 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>
* wl12xx: move tx_security_seq into wlvifEliad Peller2011-10-11
| | | | | | | | | The last security seq num has to be saved across reconfigs. Add a new "persistent" struct into wlvif, which won't get deleted on wl12xx_init_vif_data() Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: make event handling support multiroleEliad Peller2011-10-11
| | | | | | | | | | | | Some events don't indicate the role they are intended for. In these cases, iterate through all the relevant vifs, and pass the event to each one of them. This is only a workaround. future fw releases should indicate the relevant role_id for such events. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: configure sleep_policy according to active rolesEliad Peller2011-10-11
| | | | | | | | | | | | If there is an active AP role, stay always on. Otherwise, allow chip to enter elp. (Note that this is a global configuration, so if the device is already configured according to our policy, we don't have to configure it again) Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: support multiple vifs in the tx pathEliad Peller2011-10-11
| | | | | | | | | | 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>
* wl12xx: add vifs listEliad Peller2011-10-11
| | | | | | | | keep a list of all the vifs associated with our hw. it will be later used in order to iterate through vifs. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: move bitrate_masks into wlvifEliad Peller2011-10-11
| | | | | | | | move bitrate_masks 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>
* wl12xx: move some functions from remove_interface() to stop()Eliad Peller2011-10-11
| | | | | | | | Leave only vif-specific deinit stuff in remove_interface(). Move the global deinit (including power_off) to stop(). Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: unify STA and AP tx_queue mechanismEliad Peller2011-10-11
| | | | | | | | | | 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>
* wl12xx: move last_tx_hlid into wlvifEliad Peller2011-10-11
| | | | | | | | move last_tx_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>
* wl12xx: refactor fw init into a new functionEliad Peller2011-10-11
| | | | | | | | | | | | | | The fw boot and initialization currently happens inside the add_interface() callback. This is wrong, as add_interface is called for each new vif. However, we due to some fw limitation (we have to know the actual mac address on boot), we can't completely move it into the start() callback. Until the fw will be fixed, refactor the fw init into a new function, and call it from add_interface() Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
* wl12xx: move recorded_ap_keys into wlvifEliad Peller2011-10-07
| | | | | | | | move recorded_ap_keys 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>
* wl12xx: move ap_hlid_map into wlvif.apEliad Peller2011-10-07
| | | | | | | | | | | | | 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>
* wl12xx: move ba fields into wlvifEliad Peller2011-10-07
| | | | | | | | move ba_fields 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>
* wl12xx: move rssi_thold and last_rssi_event into wlvifEliad Peller2011-10-07
| | | | | | | | move rssi_thold and last_rssi_event 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>