New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add hd3ss3220 #241
base: 4.19
Are you sure you want to change the base?
add hd3ss3220 #241
Commits on Jun 18, 2020
-
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
sfjro/aufs4-standalone@ccb1589 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
merge: can-isotp: https://github.com/hartkopp/can-isotp
hartkopp/can-isotp@ced84ca Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
CAN_ISOTP: wire up to kconfig/makefile
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
https://git.zx2c4.com/WireGuard/commit/edad0d6e99e5133b1e8e865d727a25fff6399cb4 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
Add AM335x CM3 Power Managment Firmware
http://git.ti.com/gitweb/?p=processor-firmware/ti-amx3-cm3-pm-firmware.git;a=commit;h=6a849767df85ce9399494f53fb5c753665396653 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
Add BeagleBoard.org DTBS: v4.19.x-ti
https://github.com/beagleboard/BeagleBoard-DeviceTrees/tree/v4.19.x-ti beagleboard/BeagleBoard-DeviceTrees@af07ef7 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
backports: stmpe: from: linux.git
Reference: v5.3.18 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
stmpe: wire up adc Kconfig/Makefile
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
backports: vl53l0x: from: linux.git
Reference: v5.0.21 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
backports: brcm80211: from: linux.git
Reference: v4.14.77 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
drivers: net: brcm80211: use setup_timer() helper.
Use setup_timer function instead of initializing timer with the function and data fields. Signed-off-by: Allen Pais <allen.lkml@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-
brcmfmac: use setup_timer() helper
Use setup_timer function instead of initializing timer with the function and data fields. Signed-off-by: Allen Pais <allen.lkml@gmail.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
treewide: setup_timer() -> timer_setup()
This converts all remaining cases of the old setup_timer() API into using timer_setup(), where the callback argument is the structure already holding the struct timer_list. These should have no behavioral changes, since they just change which pointer is passed into the callback with the same available pointers after conversion. It handles the following examples, in addition to some other variations. Casting from unsigned long: void my_callback(unsigned long data) { struct something *ptr = (struct something *)data; ... } ... setup_timer(&ptr->my_timer, my_callback, ptr); and forced object casts: void my_callback(struct something *ptr) { ... } ... setup_timer(&ptr->my_timer, my_callback, (unsigned long)ptr); become: void my_callback(struct timer_list *t) { struct something *ptr = from_timer(ptr, t, my_timer); ... } ... timer_setup(&ptr->my_timer, my_callback, 0); Direct function assignments: void my_callback(unsigned long data) { struct something *ptr = (struct something *)data; ... } ... ptr->my_timer.function = my_callback; have a temporary cast added, along with converting the args: void my_callback(struct timer_list *t) { struct something *ptr = from_timer(ptr, t, my_timer); ... } ... ptr->my_timer.function = (TIMER_FUNC_TYPE)my_callback; And finally, callbacks without a data assignment: void my_callback(unsigned long data) { ... } ... setup_timer(&ptr->my_timer, my_callback, 0); have their argument renamed to verify they're unused during conversion: void my_callback(struct timer_list *unused) { ... } ... timer_setup(&ptr->my_timer, my_callback, 0); The conversion is done with the following Coccinelle script: spatch --very-quiet --all-includes --include-headers \ -I ./arch/x86/include -I ./arch/x86/include/generated \ -I ./include -I ./arch/x86/include/uapi \ -I ./arch/x86/include/generated/uapi -I ./include/uapi \ -I ./include/generated/uapi --include ./include/linux/kconfig.h \ --dir . \ --cocci-file ~/src/data/timer_setup.cocci @fix_address_of@ expression e; @@ setup_timer( -&(e) +&e , ...) // Update any raw setup_timer() usages that have a NULL callback, but // would otherwise match change_timer_function_usage, since the latter // will update all function assignments done in the face of a NULL // function initialization in setup_timer(). @change_timer_function_usage_NULL@ expression _E; identifier _timer; type _cast_data; @@ ( -setup_timer(&_E->_timer, NULL, _E); +timer_setup(&_E->_timer, NULL, 0); | -setup_timer(&_E->_timer, NULL, (_cast_data)_E); +timer_setup(&_E->_timer, NULL, 0); | -setup_timer(&_E._timer, NULL, &_E); +timer_setup(&_E._timer, NULL, 0); | -setup_timer(&_E._timer, NULL, (_cast_data)&_E); +timer_setup(&_E._timer, NULL, 0); ) @change_timer_function_usage@ expression _E; identifier _timer; struct timer_list _stl; identifier _callback; type _cast_func, _cast_data; @@ ( -setup_timer(&_E->_timer, _callback, _E); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E->_timer, &_callback, _E); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E->_timer, _callback, (_cast_data)_E); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E->_timer, &_callback, (_cast_data)_E); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E->_timer, (_cast_func)_callback, _E); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E->_timer, (_cast_func)&_callback, _E); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E->_timer, (_cast_func)_callback, (_cast_data)_E); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E->_timer, (_cast_func)&_callback, (_cast_data)_E); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E._timer, _callback, (_cast_data)_E); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_E._timer, _callback, (_cast_data)&_E); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_E._timer, &_callback, (_cast_data)_E); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_E._timer, &_callback, (_cast_data)&_E); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_E._timer, (_cast_func)_callback, (_cast_data)_E); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_E._timer, (_cast_func)_callback, (_cast_data)&_E); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_E._timer, (_cast_func)&_callback, (_cast_data)_E); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_E._timer, (_cast_func)&_callback, (_cast_data)&_E); +timer_setup(&_E._timer, _callback, 0); | _E->_timer@_stl.function = _callback; | _E->_timer@_stl.function = &_callback; | _E->_timer@_stl.function = (_cast_func)_callback; | _E->_timer@_stl.function = (_cast_func)&_callback; | _E._timer@_stl.function = _callback; | _E._timer@_stl.function = &_callback; | _E._timer@_stl.function = (_cast_func)_callback; | _E._timer@_stl.function = (_cast_func)&_callback; ) // callback(unsigned long arg) @change_callback_handle_cast depends on change_timer_function_usage@ identifier change_timer_function_usage._callback; identifier change_timer_function_usage._timer; type _origtype; identifier _origarg; type _handletype; identifier _handle; @@ void _callback( -_origtype _origarg +struct timer_list *t ) { ( ... when != _origarg _handletype *_handle = -(_handletype *)_origarg; +from_timer(_handle, t, _timer); ... when != _origarg | ... when != _origarg _handletype *_handle = -(void *)_origarg; +from_timer(_handle, t, _timer); ... when != _origarg | ... when != _origarg _handletype *_handle; ... when != _handle _handle = -(_handletype *)_origarg; +from_timer(_handle, t, _timer); ... when != _origarg | ... when != _origarg _handletype *_handle; ... when != _handle _handle = -(void *)_origarg; +from_timer(_handle, t, _timer); ... when != _origarg ) } // callback(unsigned long arg) without existing variable @change_callback_handle_cast_no_arg depends on change_timer_function_usage && !change_callback_handle_cast@ identifier change_timer_function_usage._callback; identifier change_timer_function_usage._timer; type _origtype; identifier _origarg; type _handletype; @@ void _callback( -_origtype _origarg +struct timer_list *t ) { + _handletype *_origarg = from_timer(_origarg, t, _timer); + ... when != _origarg - (_handletype *)_origarg + _origarg ... when != _origarg } // Avoid already converted callbacks. @match_callback_converted depends on change_timer_function_usage && !change_callback_handle_cast && !change_callback_handle_cast_no_arg@ identifier change_timer_function_usage._callback; identifier t; @@ void _callback(struct timer_list *t) { ... } // callback(struct something *handle) @change_callback_handle_arg depends on change_timer_function_usage && !match_callback_converted && !change_callback_handle_cast && !change_callback_handle_cast_no_arg@ identifier change_timer_function_usage._callback; identifier change_timer_function_usage._timer; type _handletype; identifier _handle; @@ void _callback( -_handletype *_handle +struct timer_list *t ) { + _handletype *_handle = from_timer(_handle, t, _timer); ... } // If change_callback_handle_arg ran on an empty function, remove // the added handler. @unchange_callback_handle_arg depends on change_timer_function_usage && change_callback_handle_arg@ identifier change_timer_function_usage._callback; identifier change_timer_function_usage._timer; type _handletype; identifier _handle; identifier t; @@ void _callback(struct timer_list *t) { - _handletype *_handle = from_timer(_handle, t, _timer); } // We only want to refactor the setup_timer() data argument if we've found // the matching callback. This undoes changes in change_timer_function_usage. @unchange_timer_function_usage depends on change_timer_function_usage && !change_callback_handle_cast && !change_callback_handle_cast_no_arg && !change_callback_handle_arg@ expression change_timer_function_usage._E; identifier change_timer_function_usage._timer; identifier change_timer_function_usage._callback; type change_timer_function_usage._cast_data; @@ ( -timer_setup(&_E->_timer, _callback, 0); +setup_timer(&_E->_timer, _callback, (_cast_data)_E); | -timer_setup(&_E._timer, _callback, 0); +setup_timer(&_E._timer, _callback, (_cast_data)&_E); ) // If we fixed a callback from a .function assignment, fix the // assignment cast now. @change_timer_function_assignment depends on change_timer_function_usage && (change_callback_handle_cast || change_callback_handle_cast_no_arg || change_callback_handle_arg)@ expression change_timer_function_usage._E; identifier change_timer_function_usage._timer; identifier change_timer_function_usage._callback; type _cast_func; typedef TIMER_FUNC_TYPE; @@ ( _E->_timer.function = -_callback +(TIMER_FUNC_TYPE)_callback ; | _E->_timer.function = -&_callback +(TIMER_FUNC_TYPE)_callback ; | _E->_timer.function = -(_cast_func)_callback; +(TIMER_FUNC_TYPE)_callback ; | _E->_timer.function = -(_cast_func)&_callback +(TIMER_FUNC_TYPE)_callback ; | _E._timer.function = -_callback +(TIMER_FUNC_TYPE)_callback ; | _E._timer.function = -&_callback; +(TIMER_FUNC_TYPE)_callback ; | _E._timer.function = -(_cast_func)_callback +(TIMER_FUNC_TYPE)_callback ; | _E._timer.function = -(_cast_func)&_callback +(TIMER_FUNC_TYPE)_callback ; ) // Sometimes timer functions are called directly. Replace matched args. @change_timer_function_calls depends on change_timer_function_usage && (change_callback_handle_cast || change_callback_handle_cast_no_arg || change_callback_handle_arg)@ expression _E; identifier change_timer_function_usage._timer; identifier change_timer_function_usage._callback; type _cast_data; @@ _callback( ( -(_cast_data)_E +&_E->_timer | -(_cast_data)&_E +&_E._timer | -_E +&_E->_timer ) ) // If a timer has been configured without a data argument, it can be // converted without regard to the callback argument, since it is unused. @match_timer_function_unused_data@ expression _E; identifier _timer; identifier _callback; @@ ( -setup_timer(&_E->_timer, _callback, 0); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E->_timer, _callback, 0L); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E->_timer, _callback, 0UL); +timer_setup(&_E->_timer, _callback, 0); | -setup_timer(&_E._timer, _callback, 0); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_E._timer, _callback, 0L); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_E._timer, _callback, 0UL); +timer_setup(&_E._timer, _callback, 0); | -setup_timer(&_timer, _callback, 0); +timer_setup(&_timer, _callback, 0); | -setup_timer(&_timer, _callback, 0L); +timer_setup(&_timer, _callback, 0); | -setup_timer(&_timer, _callback, 0UL); +timer_setup(&_timer, _callback, 0); | -setup_timer(_timer, _callback, 0); +timer_setup(_timer, _callback, 0); | -setup_timer(_timer, _callback, 0L); +timer_setup(_timer, _callback, 0); | -setup_timer(_timer, _callback, 0UL); +timer_setup(_timer, _callback, 0); ) @change_callback_unused_data depends on match_timer_function_unused_data@ identifier match_timer_function_unused_data._callback; type _origtype; identifier _origarg; @@ void _callback( -_origtype _origarg +struct timer_list *unused ) { ... when != _origarg } Signed-off-by: Kees Cook <keescook@chromium.org>
-
Revert "compiler.h: Remove ACCESS_ONCE()"
This reverts commit b899a85.
-
brcmfmac: add CLM download support
The firmware for brcmfmac devices includes information regarding regulatory constraints. For certain devices this information is kept separately in a binary form that needs to be downloaded to the device. This patch adds support to download this so-called CLM blob file. It uses the same naming scheme as the other firmware files with extension of .clm_blob. The CLM blob file is optional. If the file does not exist, the download process will be bypassed. It will not affect the driver loading. Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
brcmfmac: Set F2 blksz and Watermark to 256 for 4373
We got SDIO_CRC_ERROR with 4373 on SDR104 when doing bi-directional throughput test. Setting F2 blocksize and enable watermark to 256 to guarantee the operation stability. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: Add sg parameters dts parsing
broken_sg_support, sd_head_align, and sd_sgentry_align are used in brcmfmac code but not configurable in dts file. Add the parsing logic. Now they can be configured like below in dts: brcm,broken_sg_support; brcm,sd_head_align = /bits/ 16 <4>; brcm,sd_sgentry_align = /bits/ 16 <4>; Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: return -EPERM when getting error in vendor command handler
Firmware returns proprietary error code when getting error in fil_cmd_data_set or fil_cmd_data_get. Sometimes the vendor tool or utilities which uses libnl may stuck in some commands when wl is down. For example, issue "scan" command after issuing "down" command, the "scan" command will be the blocking call and stuck as no response from firmware. It is caused by that firmware returns BCME_NOTUP(-4) when wl is down, but in Linux the -4 is -EINTR, so libnl catches the error and not pass to upper layer. Because of that, the driver should return Linux error code instead of the proprietary error code, and the tools or utilities need to get the real firmware error code by another command "bcmerrorstr" after receiving the error. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: Add support for CYW43012 SDIO chipset
CYW43012 is a 1x1 802.11a/b/g/n Dual-Band HT20, 256-QAM/Turbo QAM. It is an Ultra Low Power WLAN+BT combo chip. Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: set apsta to 0 when AP starts on primary interface
APSTA can work on two band concurrently with using VSDB(Virtual Simultaneous Dual-Band) or RSDB(Real Simultaneous Dual-Band) features. In this case, we have to keep apsta is 1 in firmware side. If we start wpa_supplicant on wlan0 and then start hostapd on wlan1, the apsta will be set to 0, and data will be stall on wlan0(station). Because that, we only set apsta to 0 when AP start on primary interface. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: Saverestore support changes for 43012
Saverestore register settings for 43012. Signed-off-by: Praveen Babu Chandran <pucn@cypress.com>
-
brcmfmac: Support 43455 save-restore (SR) feature if FW include -sr
This patch will add 43455 into the save-restore(SR) capable chip list, so the SR engine will be enabled with 43455 FW which built-in the -sr function. Signed-off-by: Lo-Hsiang Lo <double.lo@cypress.com>
-
brcmfmac: fix CLM load error for legacy chips when user helper is ena…
…bled For legacy chips w/o CLM blob files, kernel with user helper function enabled returns -EAGAIN when we request_firmware() for blob file: "request_firmware() -> _request_firmware() -> fw_load_from_user_helper() -> _request_firmware_load() -> retval=-EAGAIN" We should do retries and also continue brcmf_c_process_clm_blob if getting -EAGAIN from request_firmware function. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: enlarge buffer size of caps to 512 bytes
The buffer size of return of cap iovar is greater than 256 bytes in some firmares. For instance, the return size of cap iovar is 271 bytes in 4373 13.10.246.79 firmare. It makes caps buffer is default value and cause the feature capability parsing failed. Because of that, we enlarge caps buffer size to 512 bytes and add the error print for cap iovar error. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: calling skb_orphan before sending skb to SDIO bus
Linux 3.6 introduces TSQ which has a per socket threshold for TCP Tx packet to reduce latency. In fcmode 1/2, host driver enqueues skb in hanger and TCP doesn't push new skb frees until host frees the skb when receiving fwstatus event. So using skb_orphan before sending skb to bus will make the skb removing the ownership of socket. With this patch, we got better throughput in fcmode 1/2. Tested 43455 TCP throughput in 20 MHz bandwidth with/without this patch. fcmode 0: 59.5 / 59.6 (Mbps) fcmode 1: 59.3 / 23.4 (Mbps) fcmode 2: 59.6 / 21.5 (Mbps) Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: 43012 Update F2 Watermark to 0x60 to fix DMA Error during U…
…DP RX Traffic. The number of words that the read FIFO has to contain except the end of frame before sends data back to the host. Max watermark = (512B - 2* (BurstLength))/4 = (512 - 128)/4 = 384/4 = 0x60 so if burst length (i.e. BurstLength = 64) is increased, watermark has to be reduced. This is the optimal setting for this chip. Signed-off-by: Naveen Gupta <nagu@cypress.com>
-
brcmfmac: DS1 Exit should re download the firmware.
In Deep Sleep mode ARM is off and once Exit trigger comes than Mail Box Interrupt comes to Host and whole Re Initiation should be done in the ARM to start TX/RX. Signed-off-by: Naveen Gupta <nagu@cypress.com>
-
brcmfmac: add FT-based AKMs in brcmf_set_key_mgmt() for FT support
Add WLAN_AKM_SUITE_FT_8021X and WLAN_AKM_SUITE_FT_PSK in brcmf_set_key_mgmt() for FT support. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: support AP isolation
Hostap daemon has a parameter "ap_isolate which is used to prevent low-level bridging of frames between associated stations in the BSS. For driver side, we add cfg80211 ops method change_bss to support setting AP isolation from user space. Signed-off-by: Wright Feng <wright.feng@cypress.com> Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: do not print ulp_sdioctrl get error
Don't print ulp_sdioctrl get error as errors are expected for non ulp cases. Signed-off-by: Naveen Gupta <nagu@cypress.com>
-
brcmfmac: fix system warning message during wowl suspend
There is a system warning message, warn_slowpath-fmt, during suspend while using supplicant join AP and enable wowl feature by IW command. It's cuased by brcmf_pno_remove_request path can't find the reqid. This fix will not go to remove pno request function if there is no pno scan. Signed-off-by: Lo-Hsiang Lo <double.lo@cypress.com>
-
brcmfmac: add a module parameter to set scheduling priority of sdio_dpc
To enhance RX throughput, we add a module parameter "sdio_dpc_prio" to let user can set scheduling priority for sdio_dpc. It can improve RX throughput by reducing the receiving time in sdio_dpc. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: make firmware eap_restrict a module parameter
When eap_restrict is enabled, firmware will toss non-802.1x frames from tx/rx data path if station not yet authorized. Internal firmware eap_restrict is disabled by default. This patch makes it possible to enable firmware eap_restrict by specifying eap_restrict=1 as module parameter. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: Support wake on ping packet
FMAC driver need to provide a dummy wowlan filter for kernel and provided the well configured wowlan stack. So the system will keep driver in connected state in suspend mode and can be wake up by ping packet. Enable unicast packet filter before system suspend and disable it after resume. Signed-off-by: Lo-Hsiang Lo <double.lo@cypress.com>
-
brcmfmac: Remove WOWL configuration in disconnect state
Set wowl configuration in disconnect state is redundant. Remove it to fix no scan result issue after resume. Signed-off-by: Lo-Hsiang Lo <double.lo@cypress.com>
-
brcmfmac: add CYW89342 PCIE device
CYW89342 is a 2x2 MIMO,802.11a/b/g/n/ac,SDIO 3.0 and PCIe 3.0 for WLAN. It is an automotive wireless chip. Signed-off-by: Saint Chuang <saint.chuang@cypress.com>
-
brcmfmac: handle compressed tx status signal
Firmware inform the driver about tx status by normal tx status signal or compressed tx status signal. This patch adds support to handle the compressed tx status signal. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
revert: brcmfmac: add a module parameter to set scheduling priority o…
…f sdio_dpc will use WQ_HIGHPRI instead. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: make setting SDIO workqueue WQ_HIGHPRI a module parameter
With setting sdio_wq_highpri=1 in module parameters, tasks submitted to SDIO workqueue will put at the head of the queue and run immediately. This parameter is for getting higher TX/RX throughput with SDIO bus. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: add credit map updating support
The credit numbers are static and tunable per chip in firmware side. However the credit number may be changed that is based on packet pool length and will send BRCMF_E_FIFO_CREDIT_MAP event to ask host driver updating the credit numbers during interface up. The purpose of this patch is making host driver has ability of updating the credit numbers when receiving the BRCMF_E_FIFO_CREDIT_MAP event. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: add 4-way handshake offload detection for FT-802.1X
Add 4-way handshake offload detection for FT with EAP authentication. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: remove "arp_hostip_clear" from "brcmf_netdev_stop"
The firmware does not respond ARP request and causes ping failed with following steps. 1. Bring up inteface ifconfig wlan0 up or start wpa_supplicant 2. Set the IP address ifconfig wlan0 192.168.100.10 3. Bring down interface or ifconfig wlan0 down or kill wpa_supplicant 4. Bring up inteface again and set the same IP address 5. Connect to AP(192.168.100.1) and ping to AP will be failed. FMAC clears arp_hostip when bringing down the interface, but not set it back if setting the same IP address. We are able to see the IP address in interface info(inconfig wlan0) but the ping still cannot work because the firmware ARP offload does not respond the ARP request. Because of that, we remove "arp_hostip_clear" from function "brcmf_netdev_stop" Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: fix unused variable building warning message
The variable "wq_flags" is not used anymore. Remove it. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: disable command decode in sdio_aos for 4339/4345
Transaction between AOS and SDIOD is not protected, and if cmd 52 received in AOS and in the middle of response state changed from AOS to SDIOD, response is corrupted and it causes to SDIO Host controller to hang. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
Revert "brcmfmac: fix CLM load error for legacy chips when user helpe…
…r is enabled" This reverts commit b56e808f2e14c364ea907ce183be3ed7affb5b9c. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: fix CLM load error for legacy chips when user helper is ena…
…bled commit cc124d5 upstream. For legacy chips without CLM blob files, kernel with user helper function returns -EAGAIN when we request_firmware(), and then driver got failed when bringing up legacy chips. We expect the CLM blob file for legacy chip is not existence in firmware path, but the -ENOENT error is transferred to -EAGAIN in firmware_class.c with user helper. Because of that, we continue with CLM data currently present in firmware if getting error from doing request_firmware(). Cc: stable@vger.kernel.org # v4.15.y Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Wright Feng <wright.feng@cypress.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
brcmfmac: set WIPHY_FLAG_HAVE_AP_SME flag
brcmfmac is a FullMAC driver and it implements/uses cfg80211 interface for stations management. At the same time it doesn't receive or pass up management frames. This flag indicates that authenticator doesn't have to subscribe to or handle management frames. Some authenticators (e.g. hostapd) were working with brcmfmac thanks to some extra assumptions. This commit clears up the situation. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
brcmfmac: P2P CERT 6.1.9-Support GOUT handling P2P Presence Request
Send P2P Presence Response from the p2p interface address instead of the p2p device address. Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
-
brcmfmac: only generate random p2p address when needed
P2p spec mentioned that the p2p device address should be the globally administered address with locally administered bit set. Therefore, follow this guideline by default. When the primary interface is set to a locally administered address, the locally administered bit cannot be set again. Generate a random locally administered address for this case. Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: disable command decode in sdio_aos for 4354
Transaction between AOS and SDIOD is not protected, and if cmd 52 received in AOS and in the middle of response state changed from AOS to SDIOD, response is corrupted and it causes to SDIO Host controller to hang. Signed-off-by: Lo-Hsiang Lo <double.lo@cypress.com>
-
brcmfmac: increase max hanger slots from 1K to 3K in fws layer
Will enable FMAC to push more packets to bus tx queue and help improve throughput when fws queuing is enabled. This change is required to tune the throughput for passing WMM CERT tests. Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
-
brcmfmac: reduce timeout for action frame scan
Finding a common channel to send an action frame out is required for some action types. Since a loop with several scan retry is used to find the channel, a short wait time could be considered for each attempt. This patch reduces the wait time from 1500 to 450 msec for each action frame scan. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: fix full timeout waiting for action frame on-channel tx
The driver sends an action frame down and waits for a completion signal triggered by the received BRCMF_E_ACTION_FRAME_OFF_CHAN_COMPLETE event to continue the process. However, the action frame could be transmitted either on the current channel or on an off channel. For the on-channel case, only BRCMF_E_ACTION_FRAME_COMPLETE event will be received when the frame is transmitted, which make the driver always wait a full timeout duration. This patch has the completion signal be triggered by receiving the BRCMF_E_ACTION_FRAME_COMPLETE event for the on-channel case. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: 4373 save-restore support
Use sr_eng_en bit to check 4373 sr support. Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: map 802.1d priority to precedence level based on AP WMM params
In WLAN, priority among various access categories of traffic is always set by the AP using WMM parameters and this may not always follow the standard 802.1d priority. In this change, priority is adjusted based on the AP WMM params received as part of the Assoc Response and the same is later used to map the priority of all incoming traffic. This change should fix the following 802.11n certification tests: * 5.2.31 ACM Bit Conformance test * 5.2.32 AC Parameter Modification test Signed-off-by: Saravanan Shanmugham <saravanan.shanmugham@cypress.com>
-
brcmfmac: allow GCI core enumuration
GCI core is needed for ULP operation. Allow GCI core enumuration with below changes: - Allow GCI to be added to core list even when it doesn't have a wrapper. - Allow 8K address space size. - Don't overwrite the address value when an additional size descriptor is in place. Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: make firmware frameburst mode a module parameter
With setting frameburst=1 in module parameters, firmware frameburst mode will be enabled. The feature can enable per-packet framebursting in firmware side and gets higher TX throughput in High Throughput(HT) mode. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: set state of hanger slot to FREE when flushing PSQ
When USB or SDIO device got abnormal bus disconnection, host driver tried to clean up the SKBs in PSQ and TXQ. The SKBs pointer in hanger linked to PSQ and TSQ, so we should set the state of skb hanger slot to BRCMF_FWS_HANGER_ITEM_STATE_FREE before freeing skb. In brcmf_fws_bus_txq_cleanup it already set BRCMF_FWS_HANGER_ITEM_STATE_FREE before freeing SKB, therefore we add this in brcmf_fws_psq_flush to avoid following warning message. [ 1580.012880] ------------ [ cut here ]------------ [ 1580.017550] WARNING: CPU: 3 PID: 3065 at drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c:49 brcmu_pkt_buf_free_skb+0x21/0x30 [brcmutil] [ 1580.184017] Call Trace: [ 1580.186514] brcmf_fws_cleanup+0x14e/0x190 [brcmfmac] [ 1580.191594] brcmf_fws_del_interface+0x70/0x90 [brcmfmac] [ 1580.197029] brcmf_proto_bcdc_del_if+0xe/0x10 [brcmfmac] [ 1580.202418] brcmf_remove_interface+0x69/0x190 [brcmfmac] [ 1580.207888] brcmf_detach+0x90/0xe0 [brcmfmac] [ 1580.212385] brcmf_usb_disconnect+0x76/0xb0 [brcmfmac] [ 1580.217557] usb_unbind_interface+0x72/0x260 [ 1580.221857] device_release_driver_internal+0x141/0x200 [ 1580.227152] device_release_driver+0x12/0x20 [ 1580.231460] bus_remove_device+0xfd/0x170 [ 1580.235504] device_del+0x1d9/0x300 [ 1580.239041] usb_disable_device+0x9e/0x270 [ 1580.243160] usb_disconnect+0x94/0x270 [ 1580.246980] hub_event+0x76d/0x13b0 [ 1580.250499] process_one_work+0x144/0x360 [ 1580.254564] worker_thread+0x4d/0x3c0 [ 1580.258247] kthread+0x109/0x140 [ 1580.261515] ? rescuer_thread+0x340/0x340 [ 1580.265543] ? kthread_park+0x60/0x60 [ 1580.269237] ? SyS_exit_group+0x14/0x20 [ 1580.273118] ret_from_fork+0x25/0x30 [ 1580.300446] ------------ [ cut here ]------------ Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: add creating station interface support
With RSDB device, it is able to control two station interfaces concurrently. So we add creating station interface support and allow user to create it via cfg80211. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: add RSDB condition when setting interface combinations
With firmware RSDB feature 1. The maximum support interface is four. 2. The maximum difference channel is two. 3. The maximum interfaces of {station/p2p client/AP} are two. 4. The maximum interface of p2p device is one. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: not set mbss in vif if firmware does not support MBSS
With RSDB mode, FMAC and firmware are able to create 2 or more AP, so we should not set mbss in vif structure if firmware does not support MBSS feature. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: support the second p2p connection
With RSDB feature, firmware is able to support two P2P-AGO or two P2P-GC at the same time. So we add the second p2p connection type to maps to driver's second P2P connection bsscfg. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: Add support for BCM4359 SDIO chipset
BCM4359 is a 2x2 802.11 abgn+ac Dual-Band HT80 combo chip and it supports Real Simultaneous Dual Band feature. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
nl80211: add NL80211_ATTR_IFINDEX to port authorized event
Add NL80211_ATTR_IFINDEX attribute to port authorized event to indicate the operating interface of the device. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: send port authorized event for 802.1X 4-way handshake offload
With 4-way handshake offload for 802.1X authentication, a port authorized event should be sent to user space after the completion of 4-way handshake. It is used to indicate that a connection is authorized and 802.1X authentication is no longer required. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: send port authorized event for FT-802.1X
With FT-802.1X, driver should send a port authorized event right after sending a roamed event. It is used to indicate that a new AP is already authorized so 802.1X is not required. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: Support DS1 TX Exit in FMAC
List of issues fixed: 1. Sent Tx Control frame only after firmware redownload complete (check F2 Ready before sending Tx Control frame to Firmware) 2. intermittent High DS1 TX Exit latency time (almost 3sec) ==> This is fixed by skipping host Mailbox interrupt Multiple times (ulp state mechanism) 3. RX GlOM save/restore in Firmware 4. Add ULP event enable & event_msgs_ext iovar configuration in FMAC 5. Add ULP_EVENT_RECV state machine for sbwad support 6. Support 2 Byte Shared memory read for DS1 Exit HUDI implementation Signed-off-by: Praveen Babu Chandran <pucn@cypress.com>
-
brcmfmac: disable command decode in sdio_aos for 4373
By disabling command decode, sdiod_aos module supports the detection of sdio command line toggle only and generates a wakeup request to PMU and to sdiod core. It does not decode any sdio command and generates no response to any command. Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
-
brcmfmac: add vendor ie for association responses
Miracast Certification clause 6.1.2 may fail if there is no WFD IE in P2P assoc response. This change allows WFD IE to be added to P2P assoc response. Related WFA certification. 6.1.2 P-SnUT operating as a Group Owner accepts a WFD Session with a Reference Source Signed-off-by: Ryohei Kondo <ryohei.kondo@cypress.com>
-
brcmfmac: fix 43012 insmod-after-rmmod in DS1 failure.
After entering ULP, issuing rmmod does not put chip in sane state because of which next insmod fails. Fix includes writing into few LHL, PMU registers. Signed-off-by: Nitin Bhaskar <niti@cypress.com>
-
brcmfmac: Set SDIO F1 MesBusyCtrl for CYW4373
Along with F2 watermark (existing) configuration, F1 MesBusyCtrl should be enabled & configured to avoid overflow errors. Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
-
brcmfmac: add 4354 raw pcie device id
Signed-off-by: Winnie Chang <winnie.chang@cypress.com>
-
nl80211: add WPA3 definition for SAE authentication
Add definition of WPA version 3 for SAE authentication. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
cfg80211: add support for SAE authentication offload
Let drivers advertise support for station-mode SAE authentication offload with a new NL80211_EXT_FEATURE_SAE_OFFLOAD flag. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: add support for SAE authentication offload
The firmware may have SAE authentication code built-in. This is detected by the driver and indicated in the wiphy features flags. User-space can use this flag to determine whether or not to provide the password material for SAE authentication in the nl80211 CONNECT command. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: fix 4339 CRC error under SDIO 3.0 SDR104 mode
This patch fixes 4339 CRC error while runing Tput test with suspend/resume test script. The continuous failure messages before system crash: brcmfmac: brcmf_sdiod_sglist_rw: CMD53 sg block read failed -84 brcmfmac: brcmf_sdio_rxglom: glom read of 25600 bytes failed: -5 brcmfmac: brcmf_sdio_rxfail: abort command, terminate frame brcmfmac: brcmf_sdiod_sglist_rw: CMD53 sg block read failed -84 brcmfmac: brcmf_sdio_rxglom: glom read of 24576 bytes failed: -5 brcmfmac: brcmf_sdio_rxfail: abort command, terminate frame Signed-off-by: Lo-Hsiang Lo <double.lo@cypress.com>
-
brcmfmac: fix the incorrect return value in brcmf_inform_single_bss().
The function brcmf_inform_single_bss returns the value as success, even when the length exceeds the maximum value. The fix is to send appropriate code on this error. This issue is observed when SVT reported random fmac crashes when running their tests and the path was identified from the crash logs. With this fix the random failure issue in SVT was resolved. Signed-off-by: Raveendran Somu <raveendran.somu@cypress.com>
-
brcmfmac: Fix double freeing in the fmac usb data path
When the brcmf_fws_process_skb() fails to get hanger slot for queuing the skb, it tries to free the skb. But the caller brcmf_netdev_start_xmit() of that funciton frees the packet on error return value. This causes the double freeing and which caused the kernel crash. Signed-off-by: Raveendran Somu <raveendran.somu@cypress.com>
-
brcmfmac: Fix driver crash on USB control transfer timeout
When the control transfer gets timed out, the error status was returned without killing that urb, this leads to using the same urb. This issue causes the kernel crash as the same urb is sumbitted multiple times. The fix is to kill the urb for timeout tranfer before returning error Signed-off-by: Raveendran Somu <raveendran.somu@cypress.com>
-
brcmfmac: avoid network disconnection during suspend with linux-3.8 a…
…nd above kernel From linux-3.8 kernel, wowlan packet filter is mandated to avoid the disconnection of connected network before suspend in commit 8125696 ("cfg80211/mac80211: disconnect on suspend"). So as a dummy wowlan filter is configured for kernels linux-3.8 and above. Later all private command implementation of packet filters can be moved to wowlan based filters. Signed-off-by: Lo-Hsiang Lo <double.lo@cypress.com>
-
brcmfmac: Allow credit borrowing for all access categories
Current credit borrowing allows only the access category BE to borrow the credits. This change is to fix the credit borrowing logic, to make borrowing available for all access categories and also to borrow only from the lower categories. Signed-off-by: Raveendran Somu <raveendran.somu@cypress.com>
-
non-upstream: Changes to improve USB Tx throughput.
The inbound buffer been duplicated and returned to the upper layer to increase the througput. Below the improvement observed in different traffic UDP Rx UDP Tx TCP Rx TCP Tx 237 138 161 71 Without Tx improvement 238 155 162 137 With Tx improvement Signed-off-by: Raveendran Somu <raveendran.somu@cypress.com>
-
non-upstream: reset two D11 cores if chip has two D11 cores
There are two D11 cores in RSDB chips like 4359. We have to reset two D11 cores simutaneously before firmware download, or the firmware may not be initialized correctly and cause "fw initialized failed" error. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: reset PMU, backplane & all cores in CYW4373 during rmmod
To do a clean reset of the chip during rmmod brcmfmac, program the PmuWatchdogCounter register. When a watchdog reset occurs, the PMU, backplane and all of the cores in the chip are reset. Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
-
brcmfmac: introduce module parameter to configure default PM mode
Add module parameter max_pm to allow using PM_MAX as default power management mode. Default PM mode is set to PM_MAX when max_pm=1, and is set to PM_FAST when max_pm=0 or max_pm is not set. Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: configure wowl parameters in suspend function only if firmw…
…are support wowl This patch removes the redundant wowl configuration for none wowl FW. Signed-off-by: Lo-Hsiang Lo <double.lo@cypress.com>
-
brcmfmac: discard user-space RSNE for SAE authentication offload
When offloading SAE authentication to firmware, user space doesn't have PMK/PMKID of the current connection but firmware has them. Since PMKID is expected for some re-association cases, a firmware-generated RSNE should be used rather than the user-space one. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: keep SDIO watchdog running when console_interval is non-zero
brcmfmac host driver makes SDIO bus sleep and stops SDIO watchdog if no pending event or data. As a result, host driver does not poll firmware console buffer before buffer overflow, which leads to missing firmware logs. We should not stop SDIO watchdog if console_interval is non-zero in debug build. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: To fix kernel crash on out of boundary access
To trunkcate the addtional bytes, if extra bytes been received. Current code only have a warning and proceed without handling it. But in one of the crash reported by DVT, these causes the crash intermittently. So the processing is limit to the skb->len. Signed-off-by: Raveendran Somu <raveendran.somu@cypress.com>
-
brcmfmac: reduce maximum station interface from 2 to 1 in RSDB mode
The firmware state machines are not fully suitable for concurrent station interface support, it may hit unexpected error if we have 2 different SSIDs and the roaming scenarios concurrently. To avoid the bad user-experience if this is not fully validated, we dis-allow user to create two concurrent station interfaces. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
Revert "brcmfmac: add creating station interface support"
This reverts commit 36e7876df566b4996d45d234e798d996b3b2b509. Currently we don't need to support two concurrent station interfaces and the commit only supports version 1 interface creation, so we revert this commit until we need to support station interface creation. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: validate ifp pointer in brcmf_txfinalize
We got ifp null pointer kernel panic in brcmf_txfinalize after removing Wi-Fi USB dongle when data was transmitting, The root cause is that interface was removed before calling brcmf_txfinalize in brcmf_fws_dequeue_worker and finally caused kernel panic. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: clean up iface mac descriptor before de-initializing it
We saw following warning message after removing USB Wi-Fi dongle with data connection. The root cause is that some skb were queued in iface mac descriptor psq and occupied the hanger slots, and we didn't de-queue the skb before de-initializing iface mac descriptor. So it triggered WARN_ON when cleaning up hanger slot eventually. backports/drivers/net/wireless/broadcom/brcm80211/brcmutil/utils.c:49 brcmu_pkt_buf_free_skb+0x21/0x30 [brcmutil] [ 977.523200] Modules linked in: brcmfmac(OE) brcmutil(OE) cfg80211(OE) compat(OE) sdhci_pci(OE) sdhci(OE) mmc_core(OE) rfkill ip6table_filter ip6_tables ebtable_nat ebtables dns_resolver fscache e1000e mei_me mei tpm_tis tpm_tis_core tpm iTCO_wdt ppdev iTCO_vendor_support pcspkr lpc_ich i2c_i801 mfd_core ptp pps_core parport_pc parport wmi uinput tcp_bic i915 iosf_mbi i2c_algo_bit drm_kms_helper drm i2c_core video [last unloaded: brcmfmac] [ 977.523219] CPU: 1 PID: 1306 Comm: kworker/1:1 Tainted: G OE 4.12.0 beagleboard#1 [ 977.523220] Hardware name: /DH77EB, BIOS EBH7710H.86A.0100.2013.0312.1351 03/12/2013 [ 977.523223] Workqueue: usb_hub_wq hub_event [ 977.523224] task: ffff880118703600 task.stack: ffffc90000be4000 [ 977.523226] RIP: 0010:brcmu_pkt_buf_free_skb+0x21/0x30 [brcmutil] [ 977.523227] RSP: 0018:ffffc90000be7a98 EFLAGS: 00010086 [ 977.523228] RAX: 0000000000000045 RBX: ffffffffa03fa850 RCX: 0000000000000006 [ 977.523228] RDX: 0000000000000000 RSI: 0000000000000092 RDI: ffff8801106a3ce8 [ 977.523229] RBP: ffffc90000be7a98 R08: 0000000000000000 R09: 000000000000045b [ 977.523229] R10: 0000000000000001 R11: 0000000000aaaaaa R12: 0000000000000988 [ 977.523230] R13: ffff880110569938 R14: 0000000000000002 R15: ffff8801106a3ce8 [ 977.523231] FS: 0000000000000000(0000) GS:ffff88011f280000(0000) knlGS:0000000000000000 [ 977.523232] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 977.523232] CR2: 00007f7873490000 CR3: 0000000001c09000 CR4: 00000000001406e0 [ 977.523233] Call Trace: [ 977.523244] brcmf_fws_cleanup+0x1f2/0x230 [brcmfmac] [ 977.523251] brcmf_fws_del_interface+0x70/0x90 [brcmfmac] [ 977.523257] brcmf_proto_bcdc_del_if+0xe/0x10 [brcmfmac] [ 977.523262] brcmf_remove_interface+0x69/0x190 [brcmfmac] [ 977.523267] brcmf_detach+0x90/0xe0 [brcmfmac] [ 977.523273] brcmf_usb_disconnect+0x76/0xb0 [brcmfmac] [ 977.523275] usb_unbind_interface+0x72/0x260 [ 977.523279] device_release_driver_internal+0x141/0x200 [ 977.523280] device_release_driver+0x12/0x20 [ 977.523282] bus_remove_device+0xfd/0x170 [ 977.523283] device_del+0x1d9/0x300 [ 977.523284] usb_disable_device+0x9e/0x270 [ 977.523286] usb_disconnect+0x94/0x270 [ 977.523287] usb_disconnect+0x1f1/0x270 [ 977.523288] hub_event+0x76d/0x13b0 [ 977.523291] process_one_work+0x144/0x360 [ 977.523293] worker_thread+0x4d/0x3c0 [ 977.523294] kthread+0x112/0x150 [ 977.523295] ? rescuer_thread+0x340/0x340 [ 977.523296] ? kthread_park+0x60/0x60 [ 977.523298] ? SyS_exit_group+0x14/0x20 [ 977.523300] ret_from_fork+0x25/0x30 [ 977.523301] Code: 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 85 ff 74 15 48 83 3f 00 55 48 89 e5 75 0d be 01 00 00 00 e8 82 5a 3e e1 5d f3 c3 <0f> ff eb ef 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55 Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: To support printing USB console messages
This change is to add support for printing the firmware console messges of a USB interface chip to the host. To enable this feature, build option '-msgtrace' should be enabled in the firmware. And in the host, debug=0x100000 should be provided as a module parameter. Signed-off-by: Raveendran Somu <raveendran.somu@cypress.com>
-
brcmfmac: To fix Bss Info flag definition Bug
Bss info flag definition need to be fixed from 0x2 to 0x4 This flag is for rssi info received on channel. All Firmware branches defined as 0x4 and this is bug in brcmfmac. Signed-off-by: Prasanna Kerekoppa <prasanna.kerekoppa@cypress.com>
-
brcmfmac: disable command decode in sdio_aos for 4356
AOS is a part of the SDIOD core that becomes active when the rest of SDIOD is sleeping to keep SDIO bus alive responding to reduced set of commands. Transaction between AOS and SDIOD is not protected, and if cmd 52 is received in AOS and in the middle of response state changed from AOS to SDIOD, response is corrupted and it causes to SDIO Host controller to hang. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: increase default max WOWL patterns to 16
4373 has support of 16 WOWL patterns thus increasing the default value Signed-off-by: Ryohei Kondo <ryohei.kondo@cypress.com>
-
brcmfmac: Enable, Process, and forward PHY_TEMP event.
New code enables PHY_TEMP event in firmware, receives it, processes into cfg80211 vendor specific event, and forwards to waiting host. -1- Enable rx PHY_TEMP event from underlying hardware -2- Process PHY_TEMP event into vendor specific event -3- Forward vendor specific event to host layer Signed-off-by: Robert Trask <robert.trask@cypress.com>
-
brcmfmac: add USB autosuspend feature support
This patch is for adding auto suspend feature in FMAC USB bus. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
non-upstream: workaround for 4373 USB WMM 5.2.27 test failure
With the addition of skb_orphan in the datapath, though the throughput increases in TX path, it introduces an issue by removing the flowcontrol from upper layer and allowing more data to flow for different access category. This workaround is to disable using skb_orphan when running multi-stream data. This change will not be required in linux 4.15 and later versions. Signed-off-by: Raveendran Somu <raveendran.somu@cypress.com>
-
brcmfmac: Fix access point mode
commit 861cb5e ("brcmfmac: Fix access point mode") upstream. Since commit 1204aa1 ("brcmfmac: set WIPHY_FLAG_HAVE_AP_SME flag") the Raspberry Pi 3 A+ (BCM43455) isn't able to operate in AP mode with hostapd (device_ap_sme=1 use_monitor=0): brcmfmac: brcmf_cfg80211_stop_ap: setting AP mode failed -52 So add the missing mgmt_stypes for AP mode to fix this. Fixes: 1204aa1 ("brcmfmac: set WIPHY_FLAG_HAVE_AP_SME flag") Suggested-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
brcmfmac: make compatible with Fully Preemptile Kernel (RT)
Changed mutex locking to completions to make code compatible with Fully Preemptile Kernel (RT) configuration Signed-off-by: Brian Henriquez <brian.henriquez@cypress.com>
-
brcmfmac: remove the duplicate line of writing BRCMF_PCIE_REG_SBMBX
The code is duplicate so remove the line from pcie.c Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: 43012 reloading FAMC driver failure on BU machine after it …
…exiting DS1. Device is left in non-responding state when unloading FMAC driver in non-DS1 state if it ever enters DS1 at least once. It leaves that state only after a hard reset or power cycle 43012. SWWLAN-137253 Signed-off-by: David Weng <david.weng@cypress.com>
-
brcmfmac: handle FWHALT mailbox indication
commit 2fd3877 ("brcmfmac: handle FWHALT mailbox indication") upstream. The firmware uses a mailbox to communicate to the host what is going on. In the driver we validate the bit received. Various people seen the following message: brcmfmac: brcmf_sdio_hostmail: Unknown mailbox data content: 0x40012 Bit 4 is cause of this message, but this actually indicates the firmware has halted. Handle this bit by giving a more meaningful error message. Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com> Reviewed-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
brcmfmac: validate user provided data for memdump before copying
commit d2af9b5 ("brcmfmac: validate user provided data for memdump before copying") upstream. In patch "brcmfmac: add support for sysfs initiated coredump", a new scenario of brcmf_debug_create_memdump was added in which the user of the function might not necessarily provide prefix data. Hence the function should not assume the data is always valid and should perform a check before copying. Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
brcmfmac: Use FW priority definition to initialize WMM AC priority array
It was observed that TCP Tx/Rx and UDP Tx showed very low throughput when fcmode=2. This is caused by incorrect default FIFO priority. BK FIFO queue was used for default 802.1D BE priority traffic. Hostapd relies on the correct priority setting to deliver good throughput. Signed-off-by: Justin Li <justin.li@cypress.com>
-
brcmfmac: Fix P2P Group Formation failure via Go-neg method
P2P group formation fails since either peer is not able to send go-neg confirm or dut is not able to send go-neg response. To fix this, retry limit should be increased and dwell time check should be added. Signed-off-by: Saint Chuang <saint.chuang@cypress.com>
-
nl80211: add authorized flag back to ROAM event
Commit 503c1fb ("cfg80211/nl80211: add a port authorized event") added the NL80211_CMD_PORT_AUTHORIZED event to indicate that a connection is authorized. It replaced the PORT_AUTHORIZED attribute and the authorized flag added in commit f45cbe6 ("nl80211: add authorized flag to ROAM event"). However, for offload FT, using PORT_AUTHORIZED event mechanism induces wpa_supplicant to start a full EAP exchange after a successful roaming. This patch adds the flag mechanism back to the ROAM event for drivers to fix the offload FT roaming issue. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: set authorized flag in ROAM event for offload FT roaming
When using PORT_AUTHORIZED event mechanism for offload FT, wpa_supplicant started a full EAP exchange after a successful roaming. It was caused by setting portEnabled to FALSE to get EAP state machine out of the SUCCESS state and eapSuccess cleared when handling ROAM event in wap_supplicant. With this patch, the authorized flag in the ROAM event is used to indicate the connection is authorized. Wpa_supplicant sets portEnabled according to the flag and no full EAP exchange is performed after the roaming. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: allocate msgbuf pktid from 1 to size of pktids array
Some PCIE firmwares drop txstatus with pktid=0, that makes packet stays in host side and not release. If the packet is 8021x packet, the pend_8021x_cnt will be always larger than 0 and see "Timed out waiting for no pending 802.1x packets" error when sending key to dongle. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: Add P2P Action Frame retry delay to fix GAS Comeback Respon…
…se failure issue It was observed that P2P Cert. 5.1.19: DEVUT responds to Service Discovery request failed due to DUT did not send GAS Comeback Response after receiving request from test bed P2P peer. To fix this issue, we need to add P2P Action Frame retry delay to enhance P2P connection under VSDB and noisy environment, since the peer can be in other channels under VSDB. Signed-off-by: Justin Li <justin.li@cypress.com>
-
brcmfmac: Use default FW priority when EDCA params same for all ACs
In brcmfmac driver, all ACs were assgined a FW priority based on the EDCA parameters from AP. In a specific scenario where EDCA parameters are configured to be same for all ACs, we propose to use the default FW priority definition to avoid queuing packets of all ACs to the same priority queue. Also in case of fcmode=2, throughput of any AC would have depended on available credits of a single AC, without this fix. Fixes 11AC CERT 5.2.33 TXOP Limit test Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
-
brcmfmac: set authorized flag in ROAM event for PMK caching
With 4-way handshake offload for 802.1X authentication, the authorized flag in ROAM event should be set for a successful roaming with PMK caching. The roaming is identified by checking the existence of PMKID within the (Re)Association Request frame with this patch. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: fix continuous 802.1x tx pending timeout error
The race condition in brcmf_msgbuf_txflow and brcmf_msgbuf_delete_flowring makes tx_msghdr writing after brcmf_msgbuf_remove_flowring. Host driver should delete flowring after txflow complete and all txstatus back, or pend_8021x_cnt will never be zero and cause every connection 950 milliseconds(MAX_WAIT_FOR_8021X_TX) delay. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: add sleep in bus suspend and cfg80211 resume functions
With asynchronous suspend/resume feature, suspend and resume callbacks to be executed in parallel with each other. It makes bus changes the state to BRCMF_BUS_DOWN before all brcmf_cfg80211_suspend IOVAR executions. The same situation also happens in resume procedure and causes PM mode keeps in PM_MAX after resume. In order to fix the race condition, We add one second sleep in bus suspend and cfg80211 resume function. Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: fix 43455 CRC error under SDIO 3.0 SDR104 mode
This patch fixes 43455 CRC error while running throughput test with suspend/resume stress test. The continuous failure messages before system crash: brcmfmac: brcmf_sdiod_sglist_rw: CMD53 sg block read failed -84 brcmfmac: brcmf_sdio_rxglom: glom read of 25600 bytes failed: -5 brcmfmac: brcmf_sdio_rxfail: abort command, terminate frame brcmfmac: brcmf_sdiod_sglist_rw: CMD53 sg block read failed -84 brcmfmac: brcmf_sdio_rxglom: glom read of 24576 bytes failed: -5 brcmfmac: brcmf_sdio_rxfail: abort command, terminate frame Signed-off-by: Wright Feng <wright.feng@cypress.com>
-
brcmfmac: set F2 blocksize and watermark for 4359
Set F2 blocksize to 256 bytes and watermark to 0x40 for 4359. Also enable and configure F1 MesBusyCtrl. It fixes DMA error while having UDP bi-directional traffic. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: add subtype check for event handling in data path
commit a4176ec ("brcmfmac: add subtype check for event handling in data path") upstream. For USB there is no separate channel being used to pass events from firmware to the host driver and as such are passed over the data path. In order to detect mock event messages an additional check is needed on event subtype. This check is added conditionally using unlikely() keyword. Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com> Reviewed-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
brcmfmac: assure SSID length from firmware is limited
commit 1b5e242 ("brcmfmac: assure SSID length from firmware is limited") upstream. The SSID length as received from firmware should not exceed IEEE80211_MAX_SSID_LEN as that would result in heap overflow. Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com> Reviewed-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
nl80211: add authorized flag to CONNECT event
Add authorized flag to CONNECT event. It is used for 802.1X 4-way handshake offload with PMK caching. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: set authorized flag in CONNECT event for PMK caching
With 4-way handshake offload for 802.1X authentication, the authorized flag in CONNECT event should be set for a successful connection with PMK caching. The connection is identified by checking the existence of PMKID within the Association Request frame with this patch. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: add support for Opportunistic Key Caching
The firmware may have OKC management. This is detected by the driver and supported via providing the PMK. The authorized flag in ROAM event should be set for a successful roaming with OKC. Signed-off-by: Darren Li <hsin-hung.li@cypress.com> Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: reserve 2 credits for host tx control path
It is observed that sometimes when sdiod is low in tx credits in low rssi scenarios, the data path consumes all sdiod rx all credits and there is no sdiod rx credit available for control path causing host and card to go out of sync resulting in link loss between host and card. So in order to prevent it some credits are reserved for control path. Note that TXCTL_CREDITS can't be larger than the firmware default credit update threshold 2; otherwise there will be a deadlock for both side waiting for each other. Signed-off-by: Amar Shankar <amar.shankar@cypress.com> Signed-off-by: Jia-Shyr Chuang <saint.chuang@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: update tx status flags to sync with firmware
There is a mismatch of tx status flag values between host and firmware. It makes the host mistake the flags and have incorrect behavior of credit returns. So update the flags to sync with the firmware ones. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: fix credit reserve for each access category
Commit 1c99c7d6551f ("brcmfmac: Allow credit borrowing for all access categories") added a ratio to reserve the credits for each access category. However, calculating the number of reserved credits with the runtime one let an access category lend all its credits. Fix this by using the number of initial credits to determine the reserved one. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
-
brcmfmac: fix throughput zero stalls on PM 1 mode due to credit map
This patch move the credit map setting to right place to avoid brcmf_fws_return_credits() return without setting the credit map. It fix the thoughput zero stalls issue in softAP mode when STA using PM 1 mode. Signed-off-by: Double Lo <double.lo@cypress.com>
-
brcmfmac: 43012 Update MES Watermark
Set MES watermark size to 0x50 for 43012. It fixes SDIO bus hang issue when running at high throughput. Signed-off-by: Double Lo <double.lo@cypress.com>
-
brcmfmac: add support for CYW89359 SDIO chipset
Add support for CYW89359 SDIO chipset. CYW89359 is a 2x2 dual-band 11ac chipset with 20/40/80Mhz channel support. Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: add CYW43570 PCIE device
CYW43570 is a 3-antenna, 2x2 MIMO,802.11a/b/g/n/ac, PCIe 3.0 for WLAN. It is BT/WIFI combo. Signed-off-by: Soontak Lee <soontak.lee@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: Use seq/seq_len and set iv_initialize when plumbing of rxiv…
… in (GTK) keys When plumbing rxiv for (GTK) keys, current code does not use seq/seq_len when present nor set iv_initialized for iovar wsec_key. This could result in missing broadcast traffic after GTK rekey. The fix is setting iv_initialized and using seq/seq_len for iovar wsec_key. Signed-off-by: Soontak Lee <soontak.lee@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: use actframe_abort to cancel ongoing action frame
The driver sends an action frame down and waits for dwell time to be completed or aborted before sending out the next action frame. Driver issues "scan abort" to cancel the current time slot, but this doesn't have any effect because, we are not using scan engine for sending action frame. Fix is to use "actframe_abort" to cancels the current action frame. Signed-off-by: Ryohei Kondo <ryohei.kondo@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: fix scheduling while atomic issue when deleting flowring
We should not sleep while holding the spin lock. It makes 'scheduling while atomic' in brcmf_msgbuf_delete_flowring. And to avoid race condition between deleting flowring and txflow, we only hold spin lock when seting flowring status to RING_CLOSING. Signed-off-by: Wright Feng <wright.feng@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: Increase message buffer packet size
In wifi firmware, max length of IOCTL/IOVAR buffer size is 8192. Increase the message buffer max size same as wifi firmware. Signed-off-by: Soontak Lee <soontak.lee@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: coarse support for PCIe shared structure rev7
commit f56324b upstream Revision 7 of PCIe dongle interface increases the item size of tx and rx complete rings to accommodate extra payload for new feature. This patch simply bump up the size of these two rings without adding the support for utilizing the new space. This makes brcmfmac compatible with rev7 firmware. Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
Adds support of 89459 chip pcie device and save restore support. Signed-off-by: Joseph chuang <jiac@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: Fix for unable to return to visible SSID
Unable to change back to visiable SSID because there is no disable hidden ssid routine. Signed-off-by: Soontak Lee <soontak.lee@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: Fix for wrong disconnection event source information.
Add event source argument on link down handler. Signed-off-by: Soontak Lee <soontak.lee@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
Revert "brcmfmac: discard user-space RSNE for SAE authentication offl…
…oad" This reverts commit e82453a83c953dda6c8b9ddee0ffb98393a57af4. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
Revert "brcmfmac: add support for SAE authentication offload"
This reverts commit 364b349e598dbf3c7fcc23edb2d65ae0a238b0c9. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com> Conflicts: drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-
Revert "cfg80211: add support for SAE authentication offload"
This reverts commit 4d115f96cdc68ea7a44807c44a6e8180f629e411. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
non-upstream: update enum nl80211_attrs and nl80211_ext_feature_index
This patch updates enum nl80211_attrs and nl80211_ext_feature_index to sync with the ones in wireless-drivers-next.git include/uapi/linux/nl80211.h as of 2019-06-13. It is required for the following SAE offload patches. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
nl80211: add support for SAE authentication offload
commit 26f7044 upstream. Let drivers advertise support for station-mode SAE authentication offload with a new NL80211_EXT_FEATURE_SAE_OFFLOAD flag. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Conflicts: include/linux/ieee80211.h net/wireless/nl80211.c
-
brcmfmac: add support for SAE authentication offload
commit 3b1e0a7 upstream. The firmware may have SAE authentication code built-in. This is detected by the driver and indicated in the wiphy features flags. User-space can use this flag to determine whether or not to provide the password material for SAE authentication in the nl80211 CONNECT command. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
brcmfmac: Support multiple AP interfaces and fix STA disconnection issue
Support multiple AP interfaces for STA + AP + AP usecase. And fix STA disconnection when deactivating AP interface. Signed-off-by: Soontak Lee <soontak.lee@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: Support custom PCIE BAR window size.
Certain host processors cannot support 4MB PCIE BAR window size. For example, AMLogic A113D can support 2MB size only. This patch is for host processor which support lower than 4MB PCIE BAR window size. Signed-off-by: Soontak Lee <soontak.lee@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: set F2 blocksize and watermark for 4354
Set F2 blocksize to 256 bytes and watermark to 0x40 for 4354. Also enable and configure F1 MesBusyCtrl. It would resolve random driver crash issue. Signed-off-by: Frank Kao <frank.kao@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: support for virtual interface creation from firmware
Allow interface creation via IF_ADD event from firmware. Signed-off-by: Double Lo <double.lo@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com> SWLINUX-1291
-
nl80211: support 4-way handshake offloading for WPA/WPA2-PSK in AP mode
Let drivers advertise support for AP-mode WPA/WPA2-PSK 4-way handshake offloading with a new NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK flag. Extend use of NL80211_ATTR_PMK attribute indicating it might be passed as part of NL80211_CMD_START_AP command, and contain the PSK (which is the PMK, hence the name). The driver is assumed to handle the 4-way handshake by itself in this case, instead of relying on user space. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: support 4-way handshake offloading for WPA/WPA2-PSK in AP mode
Firmware may have authenticator code built-in. This is detected by the driver and indicated in the wiphy features flags. User space can use this flag to determine whether or not to provide the pre-shared key material in the nl80211 start AP command to offload the 4-way handshake in AP mode. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
nl80211: support SAE authentication offload in AP mode
Add support for SAE authentication offload in AP mode. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: support SAE authentication offload in AP mode
Firmware may have SAE authenticator code built-in. This is detected by the driver and indicated in the wiphy features flags. User space can use this flag to determine whether or not to provide the password material in the nl80211 start AP command to offload the SAE authentication in AP mode. Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: trigger memory dump upon firmware halt signal
commit 8a3ab2f upstream. PCIe dongle firmware signals a halt/trap through mailbox interrupt. Trigger a memory dump upon receiving such signal could help to provide useful information for issue debug. Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-
brcmfmac: add support for sysfs initiated coredump
commit 8e07216 upstream. The driver already supports device coredump initiated by firmware event. Since commit 3c47d19 ("drivers: base: add coredump driver ops") it is also possible to initiate it from user-space through sysfs. This patch adds support for SDIO and PCIe devices. Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com> Reviewed-by: Franky Lin <franky.lin@broadcom.com> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> [chi-hsien.lin@cypress.com: removed .coredump in bcmsdh.c and pcie.c] Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: support repeated brcmf_fw_alloc_request() calls
commit c969282 upstream. During a normal brcmfmac lifetime brcmf_fw_alloc_request() is called once only during the probe. It's safe to assume provided array is clear. Further brcmfmac improvements may require calling it multiple times though. This patch allows it by fixing invalid firmware paths like: brcm/brcmfmac4366c-pcie.binbrcm/brcmfmac4366c-pcie.bin Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> [chi-hsien.lin@cypress.com: use fw_names instead of fwnames] Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: add a function designated for handling firmware fails
commit a2ec87d upstream. This improves handling PCIe firmware halts by printing a clear error message and replaces a similar code in the SDIO bus support. It will also allow further improvements like trying to recover from a firmware crash. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> [chi-hsien.lin@cypress.com: replace bphy_err() with brcmf_err()] Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: reset PCIe bus on a firmware crash
commit 4684997 upstream. This includes bus reset & reloading a firmware. It should be sufficient for a user space to (setup and) use a wireless device again. Support for reset on USB & SDIO can be added later. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> [chi-hsien.lin@cypress.com: merge to 4.14 based CY branch] [chi-hsien.lin@cypress.com: remove brcmf_fw_request usage for 4.14] Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: add stub version of brcmf_debugfs_get_devdir()
commit cb34212 upstream. In case of compiling driver without DEBUG expose a stub function to make writing debug code much simpler (no extra conditions). This will allow e.g. using debugfs_create_file() without any magic if or #ifdef. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> [chi-hsien.lin@cypress.com: merge to Cypress 4.14 branch] Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: add "reset" debugfs entry for testing reset
commit 2f8c8e6 upstream. This is a trivial debugfs entry for triggering reset just like in case of firmware crash. It works by writing 1 to it: echo 1 > reset Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> [chi-hsien.lin@cypress.com: merge to 4.14 Cypress codebase] Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: reset SDIO bus on a firmware crash
commit 4684997 ("brcmfmac: reset PCIe bus on a firmware crash") adds a reset function to recover firmware trap for PCIe bus. This commit adds an implementation for SDIO bus. Upon SDIO firmware trap, do below: - Remove the device - Reset hardware - Probe the device again Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: set security after reiniting interface
FMAC parses and sets security params into FW passed by supplicant. This has to be done after reiniting interface in the firmware. Signed-off-by: Joseph Chuang <jiac@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: increase dcmd maximum buffer size
Increase dcmd maximum buffer size to match firmware configuration for new chips. Signed-off-by: Double Lo <double.lo@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com> SWLINUX-1273
-
brcmfmac: set F2 blocksize and watermark for 4356 SDIO
Set F2 blocksize to 256 bytes and watermark to 0x40 for 4356 SDIO. Also enable and configure F1 MesBusyCtrl. It would resolve random driver crash issue. Signed-off-by: Frank Kao <frank.kao@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: enable credit borrow all for WFA 11n certs 5.2.27
5.2.27 test fails due to lacking credit for VI. Allow VI to borrow more credits from BE and gain higher throughput Signed-off-by: Joseph Chuang <jiac@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
-
brcmfmac: set net carrier on via test tool for AP mode
Host parses ioctl cmd via test tool, then set itself iftype to ap mode and report netif_carrier_on to upper layer Signed-off-by: Kurt Lee <kurt.lee@cypress.com> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com> SWLINUX-1322
-
ar1021_i2c: add invert/swap options
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
ar1021_i2c.c: introduce offsets to manually re-calbrate screen
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
btrfs: backport CONFIG_RAID6_PQ_BENCHMARK
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
pwm: Create device class for pwm channels
#https://lkml.org/lkml/2016/6/14/967 Pwm channels don't send uevents when exported, this change adds the channels to a pwm class and set their device type to pwm_channel so uevents are sent. To do this properly, the device names need to change to uniquely identify a channel. This change is from pwmN to pwm-(chip->base):N Signed-off-by: David Hsu <davidhsu@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
sound: give us SND_SOC_PCM5102A
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
NFM: spi: spidev: allow use of spidev in DT
This reverts commit 956b200. Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
-
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
cpufreq: opp: dont fail _opp_add_static_v2, temp till overlays repo m…
…oves to v4.14.x base Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
wiznet: w5100-spi: hack dt support for w5500
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
-
I have encountered the same issue(s) on A6A boards. I couldn't find a patch, so I wrote this patch to update the device tree in the davinci_mdio driver in the 3.15.1 tree, it seems to correct it. I would welcome any input on a different approach. https://groups.google.com/d/msg/beagleboard/9mctrG26Mc8/SRlnumt0LoMJ v4.1-rcX: added hack around CONFIG_OF_OVERLAY v4.2-rc3+: added if (of_machine_is_compatible("ti,am335x-bone")) so we do not break dual ethernet am335x devices Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
ti: dra7: etnaviv: 2d acceleration
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
tieqep: forward port of Nathaniel Lewis eQEP driver
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
tieqep: fix unhandled fault on eQEP register access
Call pm_runtime_get_sync() at the beginning of any functions that will read or write to the memory mapped eQEP registers. This is to ensure that the eQEP peripheral is running and its clock is enabled. Before this patch, an attempt to read the position file via sysfs would results in a segmentation fault. The kernel log would be contain this error: [ 2591.653471] Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa304180 [ 2591.915165] [<bf005310>] (eqep_get_position [tieqep]) from [<c08930d0>] (dev_attr_show+0x2c/0x58) More details: https://gist.github.com/pdp7/fe07082d23f2bfbc362c733a7b0aea72 BeagleBoard mailing list thread: https://groups.google.com/d/msg/beagleboard/_TdTH7oPEXE/MNvU-mY6DgAJ
-
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
quiet: 8250_omap.c use pr_info over pr_err
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
------=_Part_422_1349561576.1515022447432 Content-Type: text/plain; charset="UTF-8" Hello all, The TI touch screen driver does not work _right_ with the libts-bin package in the jessie image. $ cat /etc/dogtag BeagleBoard.org Debian Image 2018-01-01 $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 8.10 (jessie) Release: 8.10 Codename: jessie $ dpkg -l | grep libts-bin ii libts-bin 1.14-1rcnee0~jessie+20171122 armhf touch screen library utilities $ sudo ts_calibrate ts_setup: No such file or directory It is possible to make it work by setting the TSLIB_TSDEVICE environment variable: $ sudo su # export TSLIB_TSDEVICE=/dev/input/event2 # ts_calibrate But, that's a bit of a pain since the environment variable always needs to be set in order to use the touchscreen. It appears that this version of the utilities uses the INPUT_PROP_DIRECT propbit to automatically detect which /dev/input/event device is the touchscreen. It looks like the following is the only change needed to make it work. Unfortunately, I don't have currently have a way to build a custom kernel for the BeagleBone in order to test it. If there is anyone that could I would appreciate it. Regards, Hartley
-
ti_am335x_tsc: correct formula code to calculate pressure; fix touchs…
…creen jitter problem
-
Authors: Pantelis Antoniou <panto@antoniou-consulting.com> Charles Steinkuehler <charles@steinkuehler.net> Jason Kridner <jdk@ti.com> Robert Nelson <robertcnelson@gmail.com> Tobias Müller <Tobias_Mueller@twam.info> Matthijs van Duin <matthijsvanduin@gmail.com> This patch was derived from 19 commits: https://github.com/RobertCNelson/linux-dev/tree/35e301ae8436e9f56f65bf1a7440021eda42f948/patches/drivers/ti/gpio Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
hack: gpiolib: yes we have drivers stomping on each other...
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
uio: add uio_pruss_shmem driver
Signed-off-by: Jason Kridner <jdk@ti.com>
-
-
-
Fix remoteproc to work with the PRU GNU Binutils port
PRU IRAM addresses need to be masked before being handled to remoteproc. This is due to PRU Binutils' lack of separate address spaces for IRAM and DRAM. Signed-off-by: Dimitar Dimitrov <dinuxbg@gmail.com>
-
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
bootup-hacks: xor select neon or arm4regs
already default on BBB/X15, just calcuated everybootup Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
backports: bindeb-pkg: from: linux.git
Reference: v5.2.21 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
builddeb: Install our dtbs under /boot/dtbs/$version
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
enable: Jenkins: http://gfnd.rcn-ee.org:8080
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
-
-
4.19.94-ti-r45 bb.org_defconfig AUFS: sfjro/aufs4-standalone@ccb1589 BBDTBS: beagleboard/BeagleBoard-DeviceTrees@af07ef7 CAN-ISOTP: hartkopp/can-isotp@ced84ca TI_AMX3_CM3: http://git.ti.com/gitweb/?p=processor-firmware/ti-amx3-cm3-pm-firmware.git;a=commit;h=6a849767df85ce9399494f53fb5c753665396653 WIREGUARD: https://git.zx2c4.com/WireGuard/commit/edad0d6e99e5133b1e8e865d727a25fff6399cb4 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Commits on Jul 21, 2020
-
usb: typec: driver for TI HD3SS3220 USB Type-C DRP port controller
Driver for TI HD3SS3220 USB Type-C DRP port controller. The driver currently registers the port and supports data role swapping. Signed-off-by: Biju Das <biju.das@bp.renesas.com> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://lore.kernel.org/r/1567584941-13690-3-git-send-email-biju.das@bp.renesas.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
usb: typec: hd3ss3220_irq() can be static
Fixes: 1c48c75 ("usb: typec: driver for TI HD3SS3220 USB Type-C DRP port controller") Signed-off-by: kbuild test robot <lkp@intel.com> Link: https://lore.kernel.org/r/20191005215727.qfypxoswkiyu45ak@332d0cec05f4 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
usb: typec: hd3ss3220: hd3ss3220_probe() warn: passing zero to 'PTR_ERR'
This patch fixes the warning passing zero to 'PTR_ERR' by changing the check from 'IS_ERR_OR_NULL' to 'IS_ERR'. Also improved the error handling on probe function. Fixes: 1c48c75 ("usb: typec: driver for TI HD3SS3220 USB Type-C DRP port controller") Reported-by: kbuild test robot <lkp@intel.com> Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Biju Das <biju.das@bp.renesas.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://lore.kernel.org/r/1570462729-25722-1-git-send-email-biju.das@bp.renesas.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
usb: typec: remove duplicated include from hd3ss3220.c
Remove duplicated include. Signed-off-by: YueHaibing <yuehaibing@huawei.com> Link: https://lore.kernel.org/r/20191009120449.44899-1-yuehaibing@huawei.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
YueHaibing authored and Jason Kridner committedJul 21, 2020 -
usb: typec: fix an IS_ERR() vs NULL bug in hd3ss3220_probe()
The device_get_named_child_node() function doesn't return error pointers, it returns NULL on error. Fixes: 1c48c75 ("usb: typec: driver for TI HD3SS3220 USB Type-C DRP port controller") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://lore.kernel.org/r/20191011185055.GA20972@mwanda Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Dan Carpenter authored and Jason Kridner committedJul 21, 2020 -
usb: typec: hd3ss3220: Start using struct typec_operations
Supplying the operation callbacks as part of a struct typec_operations instead of as part of struct typec_capability during port registration. After this there is not need to keep the capabilities stored anywhere in the driver. Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20191104142435.29960-8-heikki.krogerus@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Heikki Krogerus authored and Jason Kridner committedJul 21, 2020 -
usb: typec: hd3ss3220: Give the connector fwnode to the port device
The driver already finds the node in order to get reference to the USB role switch. Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Tested-by: Biju Das <biju.das@bp.renesas.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20191104142435.29960-11-heikki.krogerus@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Heikki Krogerus authored and Jason Kridner committedJul 21, 2020 -
usb: common: Small class for USB role switches
USB role switch is a device that can be used to choose the data role for USB connector. With dual-role capable USB controllers, the controller itself will be the switch, but on some platforms the USB host and device controllers are separate IPs and there is a mux between them and the connector. On those platforms the mux driver will need to register the switch. With USB Type-C connectors, the host-to-device relationship is negotiated over the Configuration Channel (CC). That means the USB Type-C drivers need to be in control of the role switch. The class provides a simple API for the USB Type-C drivers for the control. For other types of USB connectors (mainly microAB) the class provides user space control via sysfs attribute file that can be used to request role swapping from the switch. Reviewed-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Heikki Krogerus authored and Jason Kridner committedJul 21, 2020 -
usb: roles: Find the muxes by also matching against the device node
When the connections are defined in firmware, struct device_connection will have the fwnode member pointing to the device node (struct fwnode_handle) of the requested device, and the endpoint will not be used at all in that case. Acked-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Reviewed-by: Jun Li <jun.li@nxp.com> Tested-by: Jun Li <jun.li@nxp.com> Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Heikki Krogerus authored and Jason Kridner committedJul 21, 2020 -
usb: roles: Introduce stubs for the exiting functions in role.h
This patch adds stubs for the exiting functions while CONFIG_USB_ROLE_SWITCH does not enabled. Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com> Cc: Hans de Goede <hdegoede@redhat.com> Cc: Andy Shevchenko <andy.shevchenko@gmail.com> Cc: John Stultz <john.stultz@linaro.org> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Yu Chen <chenyu56@huawei.com> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> Link: https://lore.kernel.org/r/1567070558-29417-6-git-send-email-chunfeng.yun@mediatek.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
usb: roles: Add fwnode_usb_role_switch_get() function
The fwnode_usb_role_switch_get() function is exactly the same as usb_role_switch_get(), except that it takes struct fwnode_handle as parameter instead of struct device. Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> Tested-by: Biju Das <biju.das@bp.renesas.com> Link: https://lore.kernel.org/r/1567070558-29417-8-git-send-email-chunfeng.yun@mediatek.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Heikki Krogerus authored and Jason Kridner committedJul 21, 2020