-
Notifications
You must be signed in to change notification settings - Fork 572
GSoC warm up task #236
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
base: 4.14
Are you sure you want to change the base?
GSoC warm up task #236
Conversation
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>
https://github.com/beagleboard/BeagleBoard-DeviceTrees/tree/v4.14.x-ti beagleboard/BeagleBoard-DeviceTrees@d7cdfa9 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Reference: v5.3.18 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>
Reference: v5.0.21 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Reference: v4.14.77 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
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>
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>
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>
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>
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>
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>
Saverestore register settings for 43012. Signed-off-by: Praveen Babu Chandran <pucn@cypress.com>
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>
…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>
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>
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>
…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>
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>
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>
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>
Don't print ulp_sdioctrl get error as errors are expected for non ulp cases. Signed-off-by: Naveen Gupta <nagu@cypress.com>
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>
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>
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>
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>
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>
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Signed-off-by: Jason Kridner <jdk@ti.com>
Hacked driver that has audio support. Use this temporarily until audio support can be added to the upstream adv7511 driver. Signed-off-by: Jason Kridner <jdk@ti.com> [Remove slave hacks and use adv75xx compatible strings] Signed-off-by: Matt Porter <mporter@konsulko.com>
Convert the driver over the the device model component framework, making use of the drm encoder/connector helpers. This allows adihdmi to be dynamically selected as an external encoder for drm drivers like tilcdc that support the DT graph binding which defines ports and remote-endpoints to attach external encoders. Also, this driver was modified by another developer to support audio and tweak some settings. Along the way it seems to have been reformatted to 4 space tabs which is hard to work with alongside the standard 8 space tabs in the kernel coding standard. As such, this is reformatted to standard 8 space tabs so it's a bit more readable. The component and audio support should be merged into the upstream driver so this adihdmi driver can be removed. Signed-off-by: Matt Porter <mporter@konsulko.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>
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
This crashes the kernel when an runtime overlay is applied.
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
We have errata i688 workaround produce warnings on SoCs other than omap4 and omap5: omap4_sram_init:Unable to allocate sram needed to handle errata I688 omap4_sram_init:Unable to get sram pool needed to handle errata I688 This is happening because there is no ti,omap4-mpu node, or no SRAM to configure for the other SoCs, so let's remove the warning based on the SoC revision checks. As nobody has complained it seems that the other SoC variants do not need this workaround. Signed-off-by: Tony Lindgren <tony@atomide.com>
already default on BBB/X15, just calcuated everybootup Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Reference: v5.2.21 Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
4.14.108-ti-r135 bb.org_defconfig AUFS: sfjro/aufs4-standalone@df5c09a BBDTBS: beagleboard/BeagleBoard-DeviceTrees@d7cdfa9 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>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi. I just wanted to say good luck with your GSoC project and share a few things I have learned myself from contributing tot he Linux kernel.
drivers/char/gsochar.c
Outdated
* @param inodep A pointer to an inode object (defined in linux/fs.h) | ||
* @param filep A pointer to a file object (defined in linux/fs.h) | ||
*/ | ||
static int dev_open(struct inode *inodep, struct file *filep){ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the Linux kernel even private/static functions and global variables still usually have a namespace prefix, e.g. gsochar_dev_open()
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks, will change this :)
*/ | ||
static int dev_open(struct inode *inodep, struct file *filep){ | ||
numberOpens++; | ||
printk(KERN_INFO "gsochar: Device has been opened %d time(s)\n", numberOpens); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pr_info()
is a shortcut for this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am very new to kernel programming and I thought instead of using pr_info() it would be a good idea to use the longer version just to learn about different kernel log message levels.
* @version 0.1 | ||
* @brief Warmp up task for GSoC2020. | ||
* @see https://github.com/lorforlinux/gsoc-simple-char | ||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a very nice header and documentation.
But... if you were submitting it to the mainline kernel, it would not be accepted. You can read more about kernel coding style at https://www.kernel.org/doc/html/latest/process/coding-style.html.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very helpful piece of information, thank you so much :)
I will leave this one as it is and follow the Linux kernel coding style for future pull requests, Is that okay?
static ssize_t dev_read(struct file *filep, char *buffer, size_t len, loff_t *offset){ | ||
|
||
int bytesRead; | ||
int bytesToRead = BUFFER_SIZE - *offset; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't bytesToRead
also depend on len
?
int bytesToRead = BUFFER_SIZE - *offset; | ||
|
||
// If we are at the end of the file, STOP READING! | ||
if (bytesToRead == 0){ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be <= 0?
cf8aa20
to
6ab314d
Compare
bf0870f
to
36b21ce
Compare
[ Upstream commit f95d186255b319c48a365d47b69bd997fecb674e ] [BUG] When trying read-only scrub on a btrfs with rescue=idatacsums mount option, it will crash with the following call trace: BUG: kernel NULL pointer dereference, address: 0000000000000208 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page CPU: 1 UID: 0 PID: 835 Comm: btrfs Tainted: G O 6.15.0-rc3-custom+ #236 PREEMPT(full) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS unknown 02/02/2022 RIP: 0010:btrfs_lookup_csums_bitmap+0x49/0x480 [btrfs] Call Trace: <TASK> scrub_find_fill_first_stripe+0x35b/0x3d0 [btrfs] scrub_simple_mirror+0x175/0x290 [btrfs] scrub_stripe+0x5f7/0x6f0 [btrfs] scrub_chunk+0x9a/0x150 [btrfs] scrub_enumerate_chunks+0x333/0x660 [btrfs] btrfs_scrub_dev+0x23e/0x600 [btrfs] btrfs_ioctl+0x1dcf/0x2f80 [btrfs] __x64_sys_ioctl+0x97/0xc0 do_syscall_64+0x4f/0x120 entry_SYSCALL_64_after_hwframe+0x76/0x7e [CAUSE] Mount option "rescue=idatacsums" will completely skip loading the csum tree, so that any data read will not find any data csum thus we will ignore data checksum verification. Normally call sites utilizing csum tree will check the fs state flag NO_DATA_CSUMS bit, but unfortunately scrub does not check that bit at all. This results in scrub to call btrfs_search_slot() on a NULL pointer and triggered above crash. [FIX] Check both extent and csum tree root before doing any tree search. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
@jadonk GSoC2020 warm-up task.