root/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/fwil_types.h
// SPDX-License-Identifier: ISC
/*
 * Copyright (c) 2012 Broadcom Corporation
 */

#ifndef CYW_FWIL_TYPES_H_
#define CYW_FWIL_TYPES_H_

#include <fwil_types.h>

enum brcmf_event_msgs_ext_command {
        CYW_EVENTMSGS_NONE      = 0,
        CYW_EVENTMSGS_SET_BIT   = 1,
        CYW_EVENTMSGS_RESET_BIT = 2,
        CYW_EVENTMSGS_SET_MASK  = 3,
};

#define EVENTMSGS_VER 1
#define EVENTMSGS_EXT_STRUCT_SIZE       offsetof(struct eventmsgs_ext, mask[0])

/**
 * struct brcmf_eventmsgs_ext - structure used with "eventmsgs_ext" iovar.
 *
 * @ver: version.
 * @command: requested operation (see &enum event_msgs_ext_command).
 * @len: length of the @mask array.
 * @maxgetsize: indicates maximum mask size that may be returned by firmware
 *      upon iovar GET.
 * @mask: array where each bit represents firmware event.
 */
struct brcmf_eventmsgs_ext {
        u8      ver;
        u8      command;
        u8      len;
        u8      maxgetsize;
        u8      mask[] __counted_by(len);
};

#define BRCMF_EXTAUTH_START             1
#define BRCMF_EXTAUTH_ABORT             2
#define BRCMF_EXTAUTH_FAIL              3
#define BRCMF_EXTAUTH_SUCCESS           4

/**
 * struct brcmf_auth_req_status_le - external auth request and status update
 *
 * @flags: flags for external auth status
 * @peer_mac: peer MAC address
 * @ssid_len: length of ssid
 * @ssid: ssid characters
 * @pmkid: PMKSA identifier
 */
struct brcmf_auth_req_status_le {
        __le16 flags;
        u8 peer_mac[ETH_ALEN];
        __le32 ssid_len;
        u8 ssid[IEEE80211_MAX_SSID_LEN];
        u8 pmkid[WLAN_PMKID_LEN];
};

/**
 * struct brcmf_mf_params_le - management frame parameters for mgmt_frame iovar
 *
 * @version: version of the iovar
 * @dwell_time: dwell duration in ms
 * @len: length of frame data
 * @frame_control: frame control
 * @channel: channel
 * @da: peer MAC address
 * @bssid: BSS network identifier
 * @packet_id: packet identifier
 * @data: frame data
 */
struct brcmf_mf_params_le {
        __le32 version;
        __le32 dwell_time;
        __le16 len;
        __le16 frame_control;
        __le16 channel;
        u8 da[ETH_ALEN];
        u8 bssid[ETH_ALEN];
        __le32 packet_id;
        u8 data[] __counted_by_le(len);
};

#endif /* CYW_FWIL_TYPES_H_ */