Use a new Vendor header file to maintain Infineon specific vendor subcmds, attributes and events. And the vendor subcmds and event NL80211 messages are nested under NL80211_CMD_VENDOR with IFX OUI. IFX OUI: 00:03:19 (Refer "Infineon AG" in https://standards-oui.ieee.org/) And introduce a new build flag CONFIG_DRIVER_NL80211_IFX for Infineon WiFi. Signed-off-by: Gokul Sivakumar <gokulkumar.sivakumar@xxxxxxxxxxxx> --- hostapd/defconfig | 3 + src/common/ifx_vendor.h | 118 +++++++++++++++++++++++++++++++++++++++ src/drivers/drivers.mak | 3 + src/drivers/drivers.mk | 3 + wpa_supplicant/defconfig | 3 + 5 files changed, 130 insertions(+) create mode 100644 src/common/ifx_vendor.h diff --git a/hostapd/defconfig b/hostapd/defconfig index a9eab4d9c..37499b4ee 100644 --- a/hostapd/defconfig +++ b/hostapd/defconfig @@ -21,6 +21,9 @@ CONFIG_DRIVER_NL80211=y # QCA vendor extensions to nl80211 #CONFIG_DRIVER_NL80211_QCA=y +# IFX vendor extensions to nl80211 +#CONFIG_DRIVER_NL80211_IFX=y + # driver_nl80211.c requires libnl. If you are compiling it yourself # you may need to point hostapd to your version of libnl. # diff --git a/src/common/ifx_vendor.h b/src/common/ifx_vendor.h new file mode 100644 index 000000000..729c01901 --- /dev/null +++ b/src/common/ifx_vendor.h @@ -0,0 +1,118 @@ +/* + * Infineon OUI and vendor specific assignments + * Copyright (c) 2023, Cypress Semiconductor Corporation (an Infineon company) + * + * This software may be distributed under the terms of the BSD license. + * See README for more details. + */ + +#ifndef IFX_VENDOR_H +#define IFX_VENDOR_H + +/* + * This file is a registry of identifier assignments from the Infineon + * OUI 00:03:19 for purposes other than MAC address assignment. New identifiers + * can be assigned through normal review process for changes to the upstream + * hostap.git repository. + */ +#define OUI_IFX 0x000319 + +/* + * enum ifx_nl80211_vendor_subcmds - IFX nl80211 vendor command identifiers + * + * @IFX_VENDOR_SCMD_UNSPEC: Reserved value 0 + * + * @IFX_VENDOR_SCMD_DCMD: Handle the Dongle commands triggered from the userspace utilities. + * These commands will be passed to the Dongle for processing. + * + * @IFX_VENDOR_SCMD_FRAMEBURST: Control the Frameburst feature. This feature allows more + * efficient use of the airtime between the transmitting and receiving WLAN devices. + * + * @IFX_VENDOR_SCMD_ACS: Configure the Automatic Channel Selection (ACS) feature. + * + * @IFX_VENDOR_SCMD_SET_MAC_P2P_DEV: Set MAC address for a P2P Discovery device. + * Uses Vendor attribute IFX_VENDOR_ATTR_MAC_ADDR to pass the MAC address. + * + * @IFX_VENDOR_SCMD_MUEDCA: Configure Multi User Enhanced Distrubuted Channel Access (MU-EDCA). + * + * @IFX_VENDOR_SCMD_LDPC: Enable support for handling Low Density Parity Check (LDPC) Coding + * in received payload. + * + * @IFX_VENDOR_SCMD_AMSDU: Control AMSDU aggregation for both TX & RX on all the TID queues. + * + * @IFX_VENDOR_SCMD_TWT: Configure Target Wake Time (TWT) Session with the needed parameters. + * + * @IFX_VENDOR_SCMD_OCE: Configure the Optimized Connectivity Experience (OCE) functionality + * related parameters. + * + * @IFX_VENDOR_SCMD_BSSCOLOR: Set BSS Color (1-63) for AP Mode operation in HE. + * + * @IFX_VENDOR_SCMD_RAND_MAC: Configure the Random MAC module. + * + * @IFX_VENDOR_SCMD_MBO: Configure Multi Band Operation (MBO) functionality related parameters. + * + * @IFX_VENDOR_SCMD_MPC: Control the Minimum Power Consumption (MPC) feature. + * This is a STA-only power saving feature and not related to 802.11 power save. + * + * @IFX_VENDOR_SCMD_GIANTRX: Allow handling RX MGMT Packts of size 1840 bytes. + * + * @IFX_VENDOR_SCMD_PFN_CONFIG: Send the Preferred Network (PFN) information to the Dongle + * + * @IFX_VENDOR_SCMD_PFN_STATUS: Fetch the Preferred Network (PFN) information from the Dongle + * through the driver. + * + * @IFX_VENDOR_SCMD_WNM: Configure the Wireless Network Management (WNM) 802.11v functionaltiy + * related parameters. + * + * @IFX_VENDOR_SCMD_MAX: This acts as a the tail of cmds list. + * Make sure it located at the end of the list. + */ +enum ifx_nl80211_vendor_subcmds { + IFX_VENDOR_SCMD_UNSPEC = 0, + IFX_VENDOR_SCMD_DCMD = 1, + /* Reserved 2-5 */ + IFX_VENDOR_SCMD_FRAMEBURST = 6, + /* Reserved 7-8 */ + IFX_VENDOR_SCMD_ACS = 9, + IFX_VENDOR_SCMD_SET_MAC_P2P_DEV = 10, + IFX_VENDOR_SCMD_MUEDCA = 11, + IFX_VENDOR_SCMD_LDPC = 12, + IFX_VENDOR_SCMD_AMSDU = 13, + IFX_VENDOR_SCMD_TWT = 14, + IFX_VENDOR_SCMD_OCE = 15, + IFX_VENDOR_SCMD_BSSCOLOR = 16, + IFX_VENDOR_SCMD_RAND_MAC = 17, + IFX_VENDOR_SCMD_MBO = 18, + IFX_VENDOR_SCMD_MPC = 19, + IFX_VENDOR_SCMD_GIANTRX = 20, + IFX_VENDOR_SCMD_PFN_CONFIG = 21, + IFX_VENDOR_SCMD_PFN_STATUS = 22, + /* Reserved 23-24 */ + IFX_VENDOR_SCMD_WNM = 25, + IFX_VENDOR_SCMD_MAX +}; + +/* + * enum ifx_vendor_attr - IFX nl80211 vendor attributes + * + * @IFX_VENDOR_ATTR_UNSPEC: Reserved value 0 + * + * @IFX_VENDOR_ATTR_LEN: Dongle Command Message Body Length. + * + * @IFX_VENDOR_ATTR_DATA: Dongle Commend Message Body. + * + * @IFX_VENDOR_ATTR_MAC_ADDR: Medium Access Control (MAC) address. + * + * @IFX_VENDOR_ATTR_MAX: This acts as a the tail of attrs list. + * Make sure it located at the end of the list. + */ +enum ifx_vendor_attr { + IFX_VENDOR_ATTR_UNSPEC = 0, + IFX_VENDOR_ATTR_LEN = 1, + IFX_VENDOR_ATTR_DATA = 2, + IFX_VENDOR_ATTR_MAC_ADDR = 3, + /* Reserved 4-10 */ + IFX_VENDOR_ATTR_MAX +}; + +#endif /* IFX_VENDOR_H */ diff --git a/src/drivers/drivers.mak b/src/drivers/drivers.mak index a03d4a034..fe2c5554f 100644 --- a/src/drivers/drivers.mak +++ b/src/drivers/drivers.mak @@ -50,6 +50,9 @@ DRV_OBJS += ../src/drivers/driver_nl80211_scan.o ifdef CONFIG_DRIVER_NL80211_QCA DRV_CFLAGS += -DCONFIG_DRIVER_NL80211_QCA endif +ifdef CONFIG_DRIVER_NL80211_IFX +DRV_CFLAGS += -DCONFIG_DRIVER_NL80211_IFX +endif NEED_SME=y NEED_AP_MLME=y NEED_NETLINK=y diff --git a/src/drivers/drivers.mk b/src/drivers/drivers.mk index 10eab6a92..03ec32da3 100644 --- a/src/drivers/drivers.mk +++ b/src/drivers/drivers.mk @@ -44,6 +44,9 @@ endif ifdef CONFIG_DRIVER_NL80211_BRCM DRV_CFLAGS += -DCONFIG_DRIVER_NL80211_BRCM endif +ifdef CONFIG_DRIVER_NL80211_IFX +DRV_CFLAGS += -DCONFIG_DRIVER_NL80211_IFX +endif NEED_SME=y NEED_AP_MLME=y NEED_NETLINK=y diff --git a/wpa_supplicant/defconfig b/wpa_supplicant/defconfig index a4f20d439..03dba3465 100644 --- a/wpa_supplicant/defconfig +++ b/wpa_supplicant/defconfig @@ -34,6 +34,9 @@ CONFIG_DRIVER_NL80211=y # QCA vendor extensions to nl80211 #CONFIG_DRIVER_NL80211_QCA=y +# IFX vendor extensions to nl80211 +#CONFIG_DRIVER_NL80211_IFX=y + # driver_nl80211.c requires libnl. If you are compiling it yourself # you may need to point hostapd to your version of libnl. # -- 2.25.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap