[PATCH v2 4/7] nl80211: Introduce new Vendor header file for driver interface with IFX OUI
Gokul Sivakumar
gokulkumar.sivakumar at infineon.com
Wed Apr 26 03:45:59 PDT 2023
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 at infineon.com>
---
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
More information about the Hostap
mailing list