#
50e5ac34 |
| 17-Dec-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: take advantage of IS_ERR_OR_NULL()
Obviously, current code can be replaced by IS_ERR_OR_NULL().
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.o
staging: wfx: take advantage of IS_ERR_OR_NULL()
Obviously, current code can be replaced by IS_ERR_OR_NULL().
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20191217161318.31402-16-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
eee5e4c9 |
| 17-Dec-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: firmware does not support more than 32 total retries
The sum of all retries for a Tx frame cannot be superior to 32.
There are 4 rates at most. So this patch limits number of retries
staging: wfx: firmware does not support more than 32 total retries
The sum of all retries for a Tx frame cannot be superior to 32.
There are 4 rates at most. So this patch limits number of retries per rate to 8.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20191217161318.31402-6-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
Revision tags: v5.5-rc2, v5.5-rc1, v5.4, v5.4-rc8 |
|
#
8c7128c4 |
| 13-Nov-2019 |
Jules Irenge <jbi.octave@gmail.com> |
staging: align to fix warnings of line over 80 characters
Align to fix multiple warnings of line over 80 characters. Issue detected by checkpatch tool.
Signed-off-by: Jules Irenge <jbi.octave@gmail
staging: align to fix warnings of line over 80 characters
Align to fix multiple warnings of line over 80 characters. Issue detected by checkpatch tool.
Signed-off-by: Jules Irenge <jbi.octave@gmail.com> Link: https://lore.kernel.org/r/20191113110052.14855-1-jbi.octave@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
Revision tags: v5.4-rc7, v5.4-rc6, v5.4-rc5, v5.4-rc4 |
|
#
20ed2d16 |
| 17-Oct-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: fix setting MAC address from DT
MAC address read from chip is unconditionally used even if a MAC address is configured in device tree.
Reported-by: Marc Dorval <marc.dorval@silabs.com
staging: wfx: fix setting MAC address from DT
MAC address read from chip is unconditionally used even if a MAC address is configured in device tree.
Reported-by: Marc Dorval <marc.dorval@silabs.com> Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20191017093954.657-5-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
4e4f5e6f |
| 17-Oct-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: fix Oops when CONFIG_OF_NET is not set
In most case, of_get_mac_address() return NULL in case of error. However, if CONFIG_OF_NET is not set, it return -ENODEV.
Signed-off-by: Jérôme
staging: wfx: fix Oops when CONFIG_OF_NET is not set
In most case, of_get_mac_address() return NULL in case of error. However, if CONFIG_OF_NET is not set, it return -ENODEV.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20191017093954.657-4-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
a374ba3d |
| 17-Oct-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: relocate wfx_fill_sl_key() in secure_link.h
"Secure link" feature is not available in in-tree driver (because it depends on mbedtls). Thus, secure_link.h only empty functions.
Module
staging: wfx: relocate wfx_fill_sl_key() in secure_link.h
"Secure link" feature is not available in in-tree driver (because it depends on mbedtls). Thus, secure_link.h only empty functions.
Module parameter "slk_key" and associated function wfx_fill_sl_key() had an unjustifiable place in main.c. This patch relocate them to secure_link.h.
BTW, content of wfx_fill_sl_key() is now useless. Just keep a warning if user try to use "slk_key" attribute (unsupported by this driver).
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20191017093954.657-2-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
27a6fe3b |
| 17-Oct-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: drop module version
wfx_version.h says that this code is same same than driver 2.3.1 hosted on github:
https://github.com/siliconlabs/wfx-linux-driver/tree/2.3.1-public
However,
staging: wfx: drop module version
wfx_version.h says that this code is same same than driver 2.3.1 hosted on github:
https://github.com/siliconlabs/wfx-linux-driver/tree/2.3.1-public
However, it is inaccurate, driver in-tree contains multiple small patches ahead 2.3.1.
I prefer to drop this confusing information.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20191017093954.657-1-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
Revision tags: v5.4-rc3 |
|
#
81aa3775 |
| 08-Oct-2019 |
Colin Ian King <colin.king@canonical.com> |
staging: wfx: fix spelling mistake "hexdecimal" -> "hexadecimal"
There is a spelling mistake in the documentation and a module parameter description. Fix these.
Signed-off-by: Colin Ian King <colin
staging: wfx: fix spelling mistake "hexdecimal" -> "hexadecimal"
There is a spelling mistake in the documentation and a module parameter description. Fix these.
Signed-off-by: Colin Ian King <colin.king@canonical.com> Link: https://lore.kernel.org/r/20191008082205.19740-1-colin.king@canonical.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
Revision tags: v5.4-rc2, v5.4-rc1 |
|
#
40115bbc |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: implement the rest of mac80211 API
Finish to fill struct ieee80211_ops with necessary callbacks. Driver is now ready to be registered to mac80211.
Signed-off-by: Jérôme Pouiller <jero
staging: wfx: implement the rest of mac80211 API
Finish to fill struct ieee80211_ops with necessary callbacks. Driver is now ready to be registered to mac80211.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-21-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
fb2490f6 |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: implement 802.11 key handling
wfx_set_key() mostly copy bytes on correct offsets. A big piece of code for a simple work. Unfortunately, I did not found any way to factorize it.
Signed
staging: wfx: implement 802.11 key handling
wfx_set_key() mostly copy bytes on correct offsets. A big piece of code for a simple work. Unfortunately, I did not found any way to factorize it.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-20-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
1a61af0f |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: allow to scan networks
Chip can make foreground scan or background, but both can't be mixed in same request. So, we need to split each mac80211 requests into multiple HIF requests.
Si
staging: wfx: allow to scan networks
Chip can make foreground scan or background, but both can't be mixed in same request. So, we need to split each mac80211 requests into multiple HIF requests.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-19-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
9bca45f3 |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: allow to send 802.11 frames
Three things make this task more complex than it should: - Chip necessitate to associate a link-id to each station. It is same thing than association
staging: wfx: allow to send 802.11 frames
Three things make this task more complex than it should: - Chip necessitate to associate a link-id to each station. It is same thing than association ID but, using 8 bits only. - Rate policy is sent separately from Tx frames - Driver try to handle itself power saving of stations and multicast data
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-17-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
f4a71ba8 |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: add debug files and trace debug events
Add traces when debug events happen and allow to ask internal information to chip.
These features work independently from mac80211.
Signed-off-
staging: wfx: add debug files and trace debug events
Add traces when debug events happen and allow to ask internal information to chip.
These features work independently from mac80211.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-16-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
c7ff39dd |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: setup initial chip configuration
A few tasks remain to be done in order to finish chip initial configuration: - configure chip to use multi-tx confirmation (speed up data trans
staging: wfx: setup initial chip configuration
A few tasks remain to be done in order to finish chip initial configuration: - configure chip to use multi-tx confirmation (speed up data transfer) - configure chip to use wake-up feature (save power consumption during runtime) - set hardware configuration (clocks, RF, pinout, etc...) using a Platform Data Set (PDS) file
On release, driver completely shutdown the chip to save power consumption.
Documentation about PDS and PDS data for sample boards are available here[1]. One day, PDS data may find a place in device tree but, currently, PDS is too much linked with firmware to allowing that.
This patch also add "send_pds" file in debugfs to be able to dynamically change PDS (only for debug, of course).
[1]: https://github.com/SiliconLabs/wfx-firmware/tree/master/PDS
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-15-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
846239f6 |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: introduce "secure link"
Chip support encryption of the link between host and chip. This feature is called "secure link". Driver code on github[1] support it. However, it relies on mbed
staging: wfx: introduce "secure link"
Chip support encryption of the link between host and chip. This feature is called "secure link". Driver code on github[1] support it. However, it relies on mbedtls for cryptographic functions. So, I decided to not import this feature in current patch. However, in order to keep code synchronized between github and kernel, I imported all code related to this feature, even if most of it is just no-op.
[1]: https://github.com/SiliconLabs/wfx-linux-driver/
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-14-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
4f8b7fab |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: allow to send commands to chip
Chip has multiple input buffers and can handle multiple 802.11 frames in parallel. However, other HIF command must be sent sequentially. wsm_send_cmd() h
staging: wfx: allow to send commands to chip
Chip has multiple input buffers and can handle multiple 802.11 frames in parallel. However, other HIF command must be sent sequentially. wsm_send_cmd() handles these requests.
This commit also add send_hif_cmd in debugfs. This file allows to send arbitrary commands to chip. It can be used for debug and testing.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-12-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
e16e7f07 |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: instantiate mac80211 data
Allocate a struct ieee80211_hw but do not yet register it.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/201909
staging: wfx: instantiate mac80211 data
Allocate a struct ieee80211_hw but do not yet register it.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-11-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
185c106f |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: add support for start-up indication
Once firmware is loaded, it send a first indication to host. This indication signalize that host can start to communicate with firmware. In add, it
staging: wfx: add support for start-up indication
Once firmware is loaded, it send a first indication to host. This indication signalize that host can start to communicate with firmware. In add, it contains information about chip and firmware (MAC addresses, firmware version, etc...).
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-10-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
b0998f0c |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: add IRQ handling
bh_work() is in charge to schedule all HIF message from/to chip.
On normal operation, when an IRQ is received, driver can get size of next message in control register
staging: wfx: add IRQ handling
bh_work() is in charge to schedule all HIF message from/to chip.
On normal operation, when an IRQ is received, driver can get size of next message in control register. In order to save control register access, when chip send a message, it also appends a copy of control register after the message (this register is not accounted in message length declared in message header, but must accounted in bus request). This copy of control register is called "piggyback".
It also handles a power saving mechanism specific to WFxxx series. This mechanism is based on a GPIO called "wakeup" GPIO. Obviously, this gpio is not part of SPI/SDIO standard buses and must be declared independently (this is the main reason for why SDIO mode try to get parameters from DT).
When wakeup is enabled, host can communicate with chip only if it is awake. To wake up chip, there are two cases: - host receive an IRQ from chip (chip initiate communication): host just have to set wakeup GPIO before reading data - host want to send data to chip: host set wakeup GPIO, then wait for an IRQ (in fact, wait for an empty message) and finally send data
bh_work() is also in charge to track usage of chip buffers. Normally each request expect a confirmation. However, you can notice that special "multi tx" confirmation can acknowledge multiple requests at time.
Finally, note that wfx_bh_request_rx() is not atomic (because of control_reg_read()). So, in SPI mode, hard-irq handler only postpone all processing to wfx_spi_request_rx().
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-8-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
652b4afb |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: load firmware
A firmware is necessary to run the chip. wfx_init_device() is in charge of loading firmware on chip and doing low level initialization.
Firmwares for WF200 are available
staging: wfx: load firmware
A firmware is necessary to run the chip. wfx_init_device() is in charge of loading firmware on chip and doing low level initialization.
Firmwares for WF200 are available here:
https://github.com/SiliconLabs/wfx-firmware/
Note that firmware are encrypted. Driver checks that key used to encrypt firmware match with key burned into chip.
Currently, "C0" key is used for production chips.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-6-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
0096214a |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: add support for I/O access
Introduce bus level communication layer. At this level, 7 registers can be addressed.
Notice that SPI driver is able to manage chip reset. SDIO mode relies
staging: wfx: add support for I/O access
Introduce bus level communication layer. At this level, 7 registers can be addressed.
Notice that SPI driver is able to manage chip reset. SDIO mode relies on an external driver (`mmc-pwrseq`) to reset chip.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-3-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|
#
a7a91ca5 |
| 19-Sep-2019 |
Jérôme Pouiller <jerome.pouiller@silabs.com> |
staging: wfx: add infrastructure for new driver
Instantiate build infrastructure WFx driver. This driver provides support for Wifi chipset Silicon Labs WF200 and further:
https://www.silabs.com/
staging: wfx: add infrastructure for new driver
Instantiate build infrastructure WFx driver. This driver provides support for Wifi chipset Silicon Labs WF200 and further:
https://www.silabs.com/documents/public/data-sheets/wf200-datasheet.pdf
This chip support SPI and SDIO bus.
SDIO interface has two particularities: 1. Some parameters may be useful for end user (I will talk about gpio_wakeup later). 2. The SDIO VID and PID of WF200 are 0000:0001 which are too much generic to rely on.
So, current code checks VID/PID and looks for a node in DT (since WF200 targets embedded platforms, I don't think it is a problem to rely on DT). DT can also be used to define to parameters for driver. Currently, if no node is found, a warning is emitted, but it could be changed in error.
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20190919142527.31797-2-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
show more ...
|