/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */1/*2* Copyright (C) 2024-2025 Intel Corporation3*/4#ifndef __iwl_mld_rx_h__5#define __iwl_mld_rx_h__67#include "mld.h"89/**10* enum iwl_mld_internal_rxq_notif_type - RX queue sync notif types11*12* @IWL_MLD_RXQ_EMPTY: empty sync notification13* @IWL_MLD_RXQ_NOTIF_DEL_BA: notify RSS queues of delBA14*/15enum iwl_mld_internal_rxq_notif_type {16IWL_MLD_RXQ_EMPTY,17IWL_MLD_RXQ_NOTIF_DEL_BA,18};1920/**21* struct iwl_mld_internal_rxq_notif - @iwl_rxq_sync_cmd internal data.22* This data is echoed by the firmware to all RSS queues and should be DWORD23* aligned. FW is agnostic to the data, so there are no endianness requirements24*25* @type: one of &iwl_mld_internal_rxq_notif_type26* @cookie: unique internal cookie to identify old notifications27* @reserved: reserved for alignment28* @payload: data to send to RX queues based on the type (may be empty)29*/30struct iwl_mld_internal_rxq_notif {31u8 type;32u8 reserved[3];33u32 cookie;34u8 payload[];35} __packed;3637/**38* struct iwl_mld_rx_queues_sync - RX queues sync data39*40* @waitq: wait queue for RX queues sync completion41* @cookie: unique id to correlate sync requests with responses42* @state: bitmask representing the sync state of RX queues43* all RX queues bits are set before sending the command, and the44* corresponding queue bit cleared upon handling the notification45*/46struct iwl_mld_rx_queues_sync {47wait_queue_head_t waitq;48u32 cookie;49unsigned long state;50};5152void iwl_mld_rx_mpdu(struct iwl_mld *mld, struct napi_struct *napi,53struct iwl_rx_cmd_buffer *rxb, int queue);5455void iwl_mld_sync_rx_queues(struct iwl_mld *mld,56enum iwl_mld_internal_rxq_notif_type type,57const void *notif_payload, u32 notif_payload_size);5859void iwl_mld_handle_rx_queues_sync_notif(struct iwl_mld *mld,60struct napi_struct *napi,61struct iwl_rx_packet *pkt, int queue);6263void iwl_mld_pass_packet_to_mac80211(struct iwl_mld *mld,64struct napi_struct *napi,65struct sk_buff *skb, int queue,66struct ieee80211_sta *sta);6768void iwl_mld_rx_monitor_no_data(struct iwl_mld *mld, struct napi_struct *napi,69struct iwl_rx_packet *pkt, int queue);7071#endif /* __iwl_mld_agg_h__ */727374