Summary
Overview
Work History
Education
Timeline
Generic

Feng Li

Shanghai City

Summary

Have strong development experience in linux embedded C language programming about 10+ years, covering the topic of the linux device driver, wifi 802.11 stack and networking, memory management.

Self-driven and in good communication with co-workers.


Please sync the below open source project to review my commits if have any interest.

https://git.codelinaro.org/clo/external-wlan/wlan-cnss-core/-/tree/caf_migration/connectivity_platform.1.0?ref_type=heads


https://git.codelinaro.org/clo/external-wlan/qcacld-3.0/-/tree/caf_migration/wlan-cld3.driver.lnx.2.0.10?ref_type=heads


https://git.codelinaro.org/clo/external-wlan/qca-wifi-host-cmn/-/tree/caf_migration/wlan-cmn.driver.lnx.2.0.10?ref_type=heads

Overview

12
12
years of professional experience

Work History

Staff Engineer

Qualcomm
12.2022 - 11.2023

Support qualcomm wifi7 pcie chip porting, covering memory optimization, debugging tool design, datapath refactor.


  • multicast to unicast conversion

The customer app drop the steaming content to some clients via multicast methodology, however the multicast throughput may not be ideal for some case, expect driver can convert the multicast to unicast for high rate.

In detail , once the driver self detect the SKB contains the multicast packet which can be regarded as two parts, the former is the DA address in the multicast packet, the latter is the remaining. Then build the msdu meta data which contains segment list, one segment indicate one client, and each segment consist of two fragment, the first fragment is the DA address referring to the client station, and the second refer to the latter part in the multicast packet. Then do map operation and enqueue into the HW for unicast transmission to each client.


  • dump collection

The driver will generate the devoredump instance for host/fw dumping in exception, generally there is one daemon app capture the uevent and retrieve the dump, anyhow the customer reject any app running in the background, so leverage the linux usermodehelper mechanism to invoke deployed user space script in the kernel driver self , and pass the some parameters to save the dumping for different type of dumping.

Senior Engineer

Qualcomm
12.2017 - 11.2022

Support qualcomm wifi5/6 chip port to third party platform for TV, STB, Camera product, and customized feature.


  • memory reduction

The customer complain the excessive memory consumption for wifi driver, then start from the below aspect.

Reduce the module size by eliminating the debug level logging, only error logs kept. Furthermore, the string in the error logs can be tokenized in the pre-compile stage with script tool which replace the raw string as some short size token string and save the mapping in the db.

Featurize the code and disable some feature. Replace the static memory pre-allocation with the dynamic memory allocation per the requirement. Reduce the CMA ring buffer for the data path by lowering the peak throughput as tradeoff.


  • multi wlan card

The customer expected to load multi wlan pcie card in one platform, however the driver don't support multi instance yet, the workaround is to compile out the multi module which corresponding to each card with different subsystem id. The qualcomm wifi driver consist of two part. One is the platform driver which enum the pcie card, setup the MHI channel, download the FW, capture the dump, export some symbol. Another is the main driver. So refactor the Makefile to specify the pcie ssid, rename the symbol api, assign the netlink protocol for wlan log sending to user space.


  • memory fragment

The customer observe some app failed to request large memory in CMA region, doubt the wifi diver allocate the thousand piece of CMA memory which may cause the memory fragment. Generally the memory in page size is managed by the buddy allocator, and it's useful to monitor the stats by the buddyinfo dumping, as the result it indicate there is free chuck for the large memory after wlan bringup.

Engineer

Qualcomm
07.2015 - 11.2017

Linux wifi driver bug fixes for MDM product., feature development for APQ8009/8096 drone product, and smart speaker.


  • channel switch manager

regarding to the drone product, the flying drone bring up the wifi card and play as SAP mode, then the remote controller connect to the drone as the STA mode. Considering the SAP working channel may be congested in the some environment, so develop one damon app written in linux c which communicate with the wifi driver periodically via cfg80211 to retrieve the channel parameters for congestion assessment, if the channel is consecutively worse in window time, and will pick one channel from the predefined channel pools in sequence and trigger the channel switch announcement proactively.

Android Driver Engineer

SIMCOM
10.2014 - 07.2015

Android diver tuning and bug fix including pmic, sensor on qualcomm platform, and extension development for the OEM.

Embedded Software Engineer

Startup
07.2011 - 03.2013

Embedded system development on STM ARM platform with RTOS, and relevant supporting tools implementation by Python language.

Education

Bachelor of Science - Electrical, Electronics And Communications Engineering

Yancheng Institute of Technology

Timeline

Staff Engineer

Qualcomm
12.2022 - 11.2023

Senior Engineer

Qualcomm
12.2017 - 11.2022

Engineer

Qualcomm
07.2015 - 11.2017

Android Driver Engineer

SIMCOM
10.2014 - 07.2015

Embedded Software Engineer

Startup
07.2011 - 03.2013

Bachelor of Science - Electrical, Electronics And Communications Engineering

Yancheng Institute of Technology
Feng Li