new file mode 100644
@@ -0,0 +1,150 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) [2022-2025] Renesas Electronics Corporation and/or its affiliates.
+ */
+#ifndef RA6W_TESTMODE_H
+#define RA6W_TESTMODE_H
+
+#ifdef CONFIG_NL80211_TESTMODE
+
+enum ra6w_testmode_cmd {
+ RA6W_TESTMODE_CMD_READ_REG = 1,
+ RA6W_TESTMODE_CMD_WRITE_REG,
+ RA6W_TESTMODE_CMD_LOGMODEFILTER_SET,
+ RA6W_TESTMODE_CMD_DBGLEVELFILTER_SET,
+ RA6W_TESTMODE_CMD_TX,
+ RA6W_TESTMODE_CMD_CW,
+ RA6W_TESTMODE_CMD_CONT,
+ RA6W_TESTMODE_CMD_CHANNEL,
+ RA6W_TESTMODE_CMD_PER,
+ RA6W_TESTMODE_CMD_RESET_HW,
+ RA6W_TESTMODE_CMD_HOST_LOG_LEVEL,
+ RA6W_TESTMODE_CMD_DBGOUTDIR_SET,
+ RA6W_TESTMODE_CMD_TX_POWER,
+ RA6W_TESTMODE_CMD_STATS_START,
+ RA6W_TESTMODE_CMD_STATS_STOP,
+ RA6W_TESTMODE_CMD_STATS_TX,
+ RA6W_TESTMODE_CMD_STATS_RX,
+ RA6W_TESTMODE_CMD_STATS_RSSI,
+ RA6W_TESTMODE_CMD_MAX,
+};
+
+enum ra6w_testmode_attr {
+ RA6W_TESTMODE_ATTR_NOT_APPLICABLE = 0,
+ RA6W_TESTMODE_ATTR_CMD,
+ RA6W_TESTMODE_ATTR_REG_OFFSET,
+ RA6W_TESTMODE_ATTR_REG_VALUE32,
+ RA6W_TESTMODE_ATTR_REG_FILTER,
+ RA6W_TESTMODE_ATTR_START,
+ RA6W_TESTMODE_ATTR_CH,
+ RA6W_TESTMODE_ATTR_FRAMES_NUM,
+ RA6W_TESTMODE_ATTR_FRAMES_LEN,
+ RA6W_TESTMODE_ATTR_RATE,
+ RA6W_TESTMODE_ATTR_POWER,
+ RA6W_TESTMODE_ATTR_ADDR_DEST,
+ RA6W_TESTMODE_ATTR_BSSID,
+ RA6W_TESTMODE_ATTR_GI,
+ RA6W_TESTMODE_ATTR_GREEN,
+ RA6W_TESTMODE_ATTR_PREAMBLE,
+ RA6W_TESTMODE_ATTR_QOS,
+ RA6W_TESTMODE_ATTR_ACK,
+ RA6W_TESTMODE_ATTR_AIFSN,
+ RA6W_TESTMODE_ATTR_PER_PASS,
+ RA6W_TESTMODE_ATTR_PER_FCS,
+ RA6W_TESTMODE_ATTR_PER_PHY,
+ RA6W_TESTMODE_ATTR_PER_OVERFLOW,
+ RA6W_TESTMODE_ATTR_HOST_LOG_LEVEL,
+ RA6W_TESTMODE_ATTR_STATS_READY,
+ RA6W_TESTMODE_ATTR_STATS_RSSI,
+ RA6W_TESTMODE_ATTR_STATS_BSSID,
+ RA6W_TESTMODE_ATTR_STATS_STAIDX,
+ RA6W_TESTMODE_ATTR_STATS_OWN_MAC,
+ RA6W_TESTMODE_ATTR_STATS_FLAGS,
+ RA6W_TESTMODE_ATTR_STATS_RX_BW,
+ RA6W_TESTMODE_ATTR_STATS_RX_MCS,
+ RA6W_TESTMODE_ATTR_STATS_RX_GI,
+ RA6W_TESTMODE_ATTR_STATS_RX_NSS,
+ RA6W_TESTMODE_ATTR_STATS_RX_CCK,
+ RA6W_TESTMODE_ATTR_STATS_RX_OFDM,
+ RA6W_TESTMODE_ATTR_STATS_RX_HT,
+ RA6W_TESTMODE_ATTR_STATS_RX_VHT,
+ RA6W_TESTMODE_ATTR_STATS_RX_HE_SU,
+ RA6W_TESTMODE_ATTR_STATS_RX_HE_MU,
+ RA6W_TESTMODE_ATTR_STATS_RX_HE_EXT,
+ RA6W_TESTMODE_ATTR_STATS_RX_HE_TRIG,
+ RA6W_TESTMODE_ATTR_STATS_TX_CCK,
+ RA6W_TESTMODE_ATTR_STATS_TX_CCK_FAIL,
+ RA6W_TESTMODE_ATTR_STATS_TX_OFDM,
+ RA6W_TESTMODE_ATTR_STATS_TX_OFDM_FAIL,
+ RA6W_TESTMODE_ATTR_STATS_TX_HT,
+ RA6W_TESTMODE_ATTR_STATS_TX_HT_FAIL,
+ RA6W_TESTMODE_ATTR_STATS_TX_VHT,
+ RA6W_TESTMODE_ATTR_STATS_TX_VHT_FAIL,
+ RA6W_TESTMODE_ATTR_STATS_TX_HE,
+ RA6W_TESTMODE_ATTR_STATS_TX_HE_FAIL,
+ RA6W_TESTMODE_ATTR_STATS_TX_EPR,
+ RA6W_TESTMODE_ATTR_MAX,
+};
+
+enum {
+ RA6W_TESTMODE_VALUE_STOP = 0,
+ RA6W_TESTMODE_VALUE_START,
+};
+
+enum ra6w_testmode_value_per {
+ RA6W_TESTMODE_VALUE_PER_STOP = 0,
+ RA6W_TESTMODE_VALUE_PER_START,
+ RA6W_TESTMODE_VALUE_PER_GET,
+ RA6W_TESTMODE_VALUE_PER_RESET,
+};
+
+enum ra6w_testmode_rate {
+ RA6W_TESTMODE_RATE_B1 = 0,
+ RA6W_TESTMODE_RATE_B2,
+ RA6W_TESTMODE_RATE_B5_5,
+ RA6W_TESTMODE_RATE_B11,
+ RA6W_TESTMODE_RATE_G6,
+ RA6W_TESTMODE_RATE_G9,
+ RA6W_TESTMODE_RATE_G12,
+ RA6W_TESTMODE_RATE_G18,
+ RA6W_TESTMODE_RATE_G24,
+ RA6W_TESTMODE_RATE_G36,
+ RA6W_TESTMODE_RATE_G48,
+ RA6W_TESTMODE_RATE_G54,
+ RA6W_TESTMODE_RATE_N6_5,
+ RA6W_TESTMODE_RATE_N13,
+ RA6W_TESTMODE_RATE_N19_5,
+ RA6W_TESTMODE_RATE_N26,
+ RA6W_TESTMODE_RATE_N39,
+ RA6W_TESTMODE_RATE_N52,
+ RA6W_TESTMODE_RATE_N58_5,
+ RA6W_TESTMODE_RATE_N65,
+};
+
+enum {
+ RA6W_TESTMODE_VALUE_SHORT = 0,
+ RA6W_TESTMODE_VALUE_LONG,
+};
+
+enum {
+ RA6W_TESTMODE_VALUE_OFF = 0,
+ RA6W_TESTMODE_VALUE_ON,
+};
+
+enum {
+ RA6W_TESTMODE_VALUE_NO = 0,
+ RA6W_TESTMODE_VALUE_NORM,
+ RA6W_TESTMODE_VALUE_BA,
+ RA6W_TESTMODE_VALUE_CBA,
+};
+
+int ra6w_testmode_cmd(struct wiphy *wiphy, struct wireless_dev *wdev, void *data, int len);
+#else
+static inline int ra6w_testmode_cmd(struct wiphy *wiphy, struct wireless_dev *wdev,
+ void *data, int len)
+{
+ return 0;
+}
+#endif /* CONFIG_NL80211_TESTMODE */
+
+#endif // RA6W_TESTMODE_H