Skip to content
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

Drivers for BeagleConnect/Greybus air-quality-demo #257

Open
wants to merge 135 commits into
base: 5.4
Choose a base branch
from

Conversation

jadonk
Copy link
Member

@jadonk jadonk commented Jan 3, 2021

No description provided.

RobertCNelson and others added 30 commits December 29, 2020 15:27
Reference: v5.8.18
Signed-off-by: Robert Nelson <[email protected]>
Reference: v5.6.19
Signed-off-by: Robert Nelson <[email protected]>
Reference: v5.5.19
Signed-off-by: Robert Nelson <[email protected]>
Reference: v5.4.18
Signed-off-by: Robert Nelson <[email protected]>
Set F2 blocksize to 256 bytes for 4373. It fixes DMA error while having
UDP bi-directional traffic.

Signed-off-by: Wright Feng <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
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 <[email protected]>
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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
Host driver needs to provide a dummy wowlan filter for kernel and
provided the 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: Double Lo <[email protected]>
Signed-off-by: Double Lo <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
Set wowl configuration in disconnect state is redundant.
Remove it to fix no scan result issue after resume.

Signed-off-by: Double Lo <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
The firmware does not respond ARP request and causes ping failed with
following steps.

1. Bring up interface
   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 interface 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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
Send P2P Presence Response from the p2p interface address instead
of the p2p device address.

Signed-off-by: Madhan Mohan R <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
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 <[email protected]>
commit 	2bc50d8 upstream.

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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
commit 	837482e upstream.

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 <[email protected]>
Signed-off-by: Soeren Moch <[email protected]>
Reviewed-by: Chi-Hsien Lin <[email protected]>
commit 2635853 upstream.

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 <[email protected]>
Signed-off-by: Soeren Moch <[email protected]>
Reviewed-by: Chi-Hsien Lin <[email protected]>
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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
commit 6581154be4a2b0f77ff789b09fade7c14ec3078c upstream.

BCM4359 is a 2x2 802.11 abgn+ac Dual-Band HT80 combo chip and it
supports Real Simultaneous Dual Band feature.

Based on a similar patch by: Wright Feng <[email protected]>

Signed-off-by: Soeren Moch <[email protected]>
Acked-by: Chi-Hsien Lin <[email protected]>
Acked-by: Ulf Hansson <[email protected]>
commit be898fe upstream.

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.

Acked-by: Arend van Spriel <[email protected]>
Signed-off-by: Chung-Hsien Hsu <[email protected]>
Signed-off-by: Chi-Hsien Lin <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
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 <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
This patch fixes 4339 CRC error while running 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: Double Lo <[email protected]>
Signed-off-by: Chi-hsien Lin <[email protected]>
@RobertCNelson
Copy link
Member

i've got the first 3 patches merged...

@jadonk
Copy link
Member Author

jadonk commented Jan 5, 2021

whoops.

@RobertCNelson
Copy link
Member

and i need to drop #1 and #2..

 drivers/misc/mikrobus/mikrobus_manifest.c: In function ‘mikrobus_property_entry_get’:
drivers/misc/mikrobus/mikrobus_manifest.c:208:21: error: implicit declaration of function ‘PROPERTY_ENTRY_U8_ARRAY_LEN’; did you mean ‘PROPERTY_ENTRY_U8_ARRAY’? [-Werror=implicit-function-declaration]
     properties[i] = PROPERTY_ENTRY_U8_ARRAY_LEN(prop_name,
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
                     PROPERTY_ENTRY_U8_ARRAY
drivers/misc/mikrobus/mikrobus_manifest.c:208:19: error: incompatible types when assigning to type ‘struct property_entry’ from type ‘int’
     properties[i] = PROPERTY_ENTRY_U8_ARRAY_LEN(prop_name,
                   ^
drivers/misc/mikrobus/mikrobus_manifest.c:217:21: error: implicit declaration of function ‘PROPERTY_ENTRY_U16_ARRAY_LEN’; did you mean ‘PROPERTY_ENTRY_U16_ARRAY’? [-Werror=implicit-function-declaration]
     properties[i] = PROPERTY_ENTRY_U16_ARRAY_LEN(prop_name,
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     PROPERTY_ENTRY_U16_ARRAY
drivers/misc/mikrobus/mikrobus_manifest.c:217:19: error: incompatible types when assigning to type ‘struct property_entry’ from type ‘int’
     properties[i] = PROPERTY_ENTRY_U16_ARRAY_LEN(prop_name,
                   ^
drivers/misc/mikrobus/mikrobus_manifest.c:226:21: error: implicit declaration of function ‘PROPERTY_ENTRY_U32_ARRAY_LEN’; did you mean ‘PROPERTY_ENTRY_U32_ARRAY’? [-Werror=implicit-function-declaration]
     properties[i] = PROPERTY_ENTRY_U32_ARRAY_LEN(prop_name,
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     PROPERTY_ENTRY_U32_ARRAY
drivers/misc/mikrobus/mikrobus_manifest.c:226:19: error: incompatible types when assigning to type ‘struct property_entry’ from type ‘int’
     properties[i] = PROPERTY_ENTRY_U32_ARRAY_LEN(prop_name,
                   ^
drivers/misc/mikrobus/mikrobus_manifest.c:235:21: error: implicit declaration of function ‘PROPERTY_ENTRY_U64_ARRAY_LEN’; did you mean ‘PROPERTY_ENTRY_U64_ARRAY’? [-Werror=implicit-function-declaration]
     properties[i] = PROPERTY_ENTRY_U64_ARRAY_LEN(prop_name,
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     PROPERTY_ENTRY_U64_ARRAY
drivers/misc/mikrobus/mikrobus_manifest.c:235:19: error: incompatible types when assigning to type ‘struct property_entry’ from type ‘int’
     properties[i] = PROPERTY_ENTRY_U64_ARRAY_LEN(prop_name,
                   ^

@jadonk
Copy link
Member Author

jadonk commented Jan 12, 2021

Did I still miss wpanusb.c? Brain not really working well.

The hm3301 driver seems to be breaking iio_info, so @Pillar1989 is looking at it. Seeed-Studio/seeed-linux-dtoverlays#14

Eventually, I'll need scd30 as well. Anyway, this tells me that my out-of-tree build process wasn't the problem. The Balena guys did eventually build this tree. https://forums.balena.io/t/install-linux-headers-for-kernel-module-development/2590/28

@jadonk
Copy link
Member Author

jadonk commented Feb 12, 2021

For the HM3301 driver.... Seeed-Studio/seeed-linux-dtoverlays#14

@jadonk
Copy link
Member Author

jadonk commented Feb 12, 2021

Driver patches at https://github.com/jadonk/beagleconnect/tree/master/sw/linux have been updated quite a bit.

nmenon pushed a commit to nmenon/nm-beagle-linux that referenced this pull request May 22, 2023
[ Upstream commit 9c4557e ]

Fix the following lockdep warning

[ 1119.158984] ============================================
[ 1119.158988] WARNING: possible recursive locking detected
[ 1119.158996] 6.0.0-rc1+ beagleboard#257 Tainted: G            E    N
[ 1119.158999] --------------------------------------------
[ 1119.159001] bash/80100 is trying to acquire lock:
[ 1119.159007] ffff88803e79b4a0 (&ns->lock/1){+.+.}-{4:4}, at: destroy_ns.part.0+0x43/0x140
[ 1119.159028]
               but task is already holding lock:
[ 1119.159030] ffff8881009764a0 (&ns->lock/1){+.+.}-{4:4}, at: aa_remove_profiles+0x3f0/0x640
[ 1119.159040]
               other info that might help us debug this:
[ 1119.159042]  Possible unsafe locking scenario:

[ 1119.159043]        CPU0
[ 1119.159045]        ----
[ 1119.159047]   lock(&ns->lock/1);
[ 1119.159051]   lock(&ns->lock/1);
[ 1119.159055]
                *** DEADLOCK ***

Which is caused by an incorrect lockdep nesting notation

Fixes: feb3c76 ("apparmor: fix possible recursive lock warning in __aa_create_ns")
Signed-off-by: John Johansen <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.