From 62c82984916623e6e00053dcb148de71d24bdaf5 Mon Sep 17 00:00:00 2001
From: Gokul Sivakumar <gokulkumar.sivakumar@infineon.com>
Date: Mon, 11 Jul 2022 11:15:25 +0530
Subject: [PATCH 40/49] nl80211: Introduce a vendor header for vendor NL iface
 to DRV with OUI_IFX

So far, the proprietary configurations are done either through the private
IOCTL interface or through the vendor nl80211 CMD with OUI_BRCM. For easier
maintainance of the infineon's list of proprietary config interfaces across
DHD, FMAC, wpa_supplicant, hostapd, iw, etc, hereafter start using the new
vendor nl80211 CMD interface with OUI_IFX.

Infineon OUI - 00:03:19 (Ref https://standards-oui.ieee.org/)


Signed-off-by: Gokul Sivakumar <gokulkumar.sivakumar@infineon.com>
Signed-off-by: Ian Lin <ian.lin@infineon.com>
---
 src/common/ifx_vendor.h | 95 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 95 insertions(+)
 create mode 100644 src/common/ifx_vendor.h

diff --git a/src/common/ifx_vendor.h b/src/common/ifx_vendor.h
new file mode 100644
index 000000000..2ea9af0a7
--- /dev/null
+++ b/src/common/ifx_vendor.h
@@ -0,0 +1,95 @@
+/*
+ * Infineon: vendor OUI and specific assignments
+ *
+ * ©2022 Cypress Semiconductor Corporation (an Infineon company)
+ * or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
+ * This software, including source code, documentation and related materials
+ * ("Software") is owned by Cypress Semiconductor Corporation or one of its
+ * affiliates ("Cypress") and is protected by and subject to
+ * worldwide patent protection (United States and foreign),
+ * United States copyright laws and international treaty provisions.
+ * Therefore, you may use this Software only as provided in the license agreement
+ * accompanying the software package from which you obtained this Software ("EULA").
+ * If no EULA applies, Cypress hereby grants you a personal, non-exclusive,
+ * non-transferable license to copy, modify, and compile the Software source code
+ * solely for use in connection with Cypress's integrated circuit products.
+ * Any reproduction, modification, translation, compilation, or representation
+ * of this Software except as specified above is prohibited without
+ * the expresswritten permission of Cypress.
+ * Disclaimer: THIS SOFTWARE IS PROVIDED AS-IS, WITH NO WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT,
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ * Cypress reserves the right to make changes to the Software without notice.
+ * Cypress does not assume any liability arising out of the application or
+ * use of the Software or any product or circuit described in the Software.
+ * Cypress does not authorize its products for use in any products where a malfunction
+ * or failure of the Cypress product may reasonably be expected to result in
+ * significant property damage, injury or death ("High Risk Product").
+ * By including Cypress's product in a High Risk Product, the manufacturer
+ * of such system or application assumes all risk of such use and in doing so
+ * agrees to indemnify Cypress against all liability.
+ */
+
+#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_FRAMEBURST: Vendor command to enable/disable Frameburst
+ *
+ * @IFX_VENDOR_SCMD_MUEDCA_OPT_ENABLE: Vendor command to enable/disable HE MU-EDCA opt
+ *
+ * @IFX_VENDOR_SCMD_LDPC_CAP: Vendor command enable/disable LDPC Capability
+ *
+ * @IFX_VENDOR_SCMD_AMSDU: Vendor command to enable/disable AMSDU on all the TID queues
+ *
+ * @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 {
+	/*
+	 * TODO: IFX Vendor subcmd enum IDs between 1-10 are reserved
+	 * to be be filled later with BRCM Vendor subcmds that are
+	 * already used by IFX.
+	 */
+	IFX_VENDOR_SCMD_UNSPEC		= 0,
+	/* Reserved 1-5 */
+	IFX_VENDOR_SCMD_FRAMEBURST	= 6,
+	/* Reserved 7-10 */
+	IFX_VENDOR_SCMD_MUEDCA_OPT_ENABLE = 11,
+	IFX_VENDOR_SCMD_LDPC_CAP	= 12,
+	IFX_VENDOR_SCMD_AMSDU		= 13,
+	IFX_VENDOR_SCMD_MAX
+};
+
+/*
+ * enum ifx_vendor_attr - IFX nl80211 vendor attributes
+ *
+ * @IFX_VENDOR_ATTR_UNSPEC: Reserved value 0
+ *
+ * @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 {
+	/*
+	 * TODO: IFX Vendor attr enum IDs between 0-10 are reserved
+	 * to be filled later with BRCM Vendor attrs that are
+	 * already used by IFX.
+	 */
+	IFX_VENDOR_ATTR_UNSPEC		= 0,
+	/* Reserved 1-10 */
+	IFX_VENDOR_ATTR_MAX		= 11
+};
+
+#endif /* IFX_VENDOR_H */
-- 
2.17.1

