new file mode 100644
@@ -0,0 +1,59 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) [2022-2025] Renesas Electronics Corporation and/or its affiliates.
+ */
+
+#ifndef RA6W_INDI_H
+#define RA6W_INDI_H
+
+#include <linux/kernel.h>
+#include <linux/completion.h>
+
+#include "q.h"
+
+#define RA6W_INDI_DATA_LEN 980
+#define RA6W_INDI_EXT_LEN (sizeof(struct ra6w_indi_ext_hdr))
+#define RA6W_INDI_BUF_Q_MAX 64
+
+enum ra6w_indi_disconnect_reason {
+ RA6W_INDI_DIS_RSN_MIN = 100,
+ RA6W_INDI_DIS_RSN_BEACON_MISS = RA6W_INDI_DIS_RSN_MIN,
+ RA6W_INDI_DIS_RSN_PS_TX_MAX_ERR,
+ RA6W_INDI_DIS_RSN_CHAN_SWITCH_FAIL,
+
+ RA6W_INDI_DIS_RSN_MAX,
+ RA6W_INDI_DIS_RSN_LAST = RA6W_INDI_DIS_RSN_MAX - 1,
+};
+
+struct ra6w_indi_ext_hdr {
+ u32 status : 32;
+};
+
+struct ra6w_indi_buf {
+ u8 cmd;
+ u8 ext_len;
+ __le16 data_len;
+ struct ra6w_indi_ext_hdr ext_hdr;
+ u8 data[RA6W_INDI_DATA_LEN];
+};
+
+enum ra6w_indi_data_event {
+ RA6W_INDI_EVENT,
+ RA6W_INDI_EVENT_RESET,
+
+ RA6W_INDI_EVENT_MAX,
+};
+
+#define RA6W_INDI_EVENT_MASK (BIT(RA6W_INDI_EVENT) | BIT(RA6W_INDI_EVENT_RESET))
+
+struct ra6w_indi {
+ struct task_struct *task;
+ struct ra6w_q_event event;
+ struct ra6w_q q;
+};
+
+int ra6w_indi_init(struct ra6w_indi *indi);
+void ra6w_indi_deinit(struct ra6w_indi *indi);
+int ra6w_indi_event_post(struct ra6w_indi *indi, struct sk_buff *skb);
+
+#endif /* RA6W_INDI_H */