/* SPDX-License-Identifier: (GPL-2.0 OR MPL-1.1) */
/* --------------------------------------------------------------------
 *
 * Copyright (C) 1999 AbsoluteValue Systems, Inc.  All Rights Reserved.
 * --------------------------------------------------------------------
 *
 * linux-wlan
 *
 *   The contents of this file are subject to the Mozilla Public
 *   License Version 1.1 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.mozilla.org/MPL/
 *
 *   Software distributed under the License is distributed on an "AS
 *   IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 *   implied. See the License for the specific language governing
 *   rights and limitations under the License.
 *
 *   Alternatively, the contents of this file may be used under the
 *   terms of the GNU Public License version 2 (the "GPL"), in which
 *   case the provisions of the GPL are applicable instead of the
 *   above.  If you wish to allow the use of your version of this file
 *   only under the terms of the GPL and not to allow others to use
 *   your version of this file under the MPL, indicate your decision
 *   by deleting the provisions above and replace them with the notice
 *   and other provisions required by the GPL.  If you do not delete
 *   the provisions above, a recipient may use your version of this
 *   file under either the MPL or the GPL.
 *
 * --------------------------------------------------------------------
 *
 * Inquiries regarding the linux-wlan Open Source project can be
 * made directly to:
 *
 * AbsoluteValue Systems Inc.
 * info@linux-wlan.com
 * http://www.linux-wlan.com
 *
 * --------------------------------------------------------------------
 *
 * Portions of the development of this software were funded by
 * Intersil Corporation as part of PRISM(R) chipset product development.
 *
 * --------------------------------------------------------------------
 */

#ifndef _P80211MKMETASTRUCT_H
#define _P80211MKMETASTRUCT_H

struct p80211msg_dot11req_mibget {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_unk392 mibattribute;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_dot11req_mibset {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_unk392 mibattribute;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_dot11req_scan {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 bsstype;
	struct p80211item_pstr6 bssid;
	u8 pad_0C[1];
	struct p80211item_pstr32 ssid;
	u8 pad_1D[3];
	struct p80211item_uint32 scantype;
	struct p80211item_uint32 probedelay;
	struct p80211item_pstr14 channellist;
	u8 pad_2C[1];
	struct p80211item_uint32 minchanneltime;
	struct p80211item_uint32 maxchanneltime;
	struct p80211item_uint32 resultcode;
	struct p80211item_uint32 numbss;
	struct p80211item_uint32 append;
} __packed;

struct p80211msg_dot11req_scan_results {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 bssindex;
	struct p80211item_uint32 resultcode;
	struct p80211item_uint32 signal;
	struct p80211item_uint32 noise;
	struct p80211item_pstr6 bssid;
	u8 pad_3C[1];
	struct p80211item_pstr32 ssid;
	u8 pad_4D[3];
	struct p80211item_uint32 bsstype;
	struct p80211item_uint32 beaconperiod;
	struct p80211item_uint32 dtimperiod;
	struct p80211item_uint32 timestamp;
	struct p80211item_uint32 localtime;
	struct p80211item_uint32 fhdwelltime;
	struct p80211item_uint32 fhhopset;
	struct p80211item_uint32 fhhoppattern;
	struct p80211item_uint32 fhhopindex;
	struct p80211item_uint32 dschannel;
	struct p80211item_uint32 cfpcount;
	struct p80211item_uint32 cfpperiod;
	struct p80211item_uint32 cfpmaxduration;
	struct p80211item_uint32 cfpdurremaining;
	struct p80211item_uint32 ibssatimwindow;
	struct p80211item_uint32 cfpollable;
	struct p80211item_uint32 cfpollreq;
	struct p80211item_uint32 privacy;
	struct p80211item_uint32 capinfo;
	struct p80211item_uint32 basicrate1;
	struct p80211item_uint32 basicrate2;
	struct p80211item_uint32 basicrate3;
	struct p80211item_uint32 basicrate4;
	struct p80211item_uint32 basicrate5;
	struct p80211item_uint32 basicrate6;
	struct p80211item_uint32 basicrate7;
	struct p80211item_uint32 basicrate8;
	struct p80211item_uint32 supprate1;
	struct p80211item_uint32 supprate2;
	struct p80211item_uint32 supprate3;
	struct p80211item_uint32 supprate4;
	struct p80211item_uint32 supprate5;
	struct p80211item_uint32 supprate6;
	struct p80211item_uint32 supprate7;
	struct p80211item_uint32 supprate8;
} __packed;

struct p80211msg_dot11req_start {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_pstr32 ssid;
	u8 pad_12D[3];
	struct p80211item_uint32 bsstype;
	struct p80211item_uint32 beaconperiod;
	struct p80211item_uint32 dtimperiod;
	struct p80211item_uint32 cfpperiod;
	struct p80211item_uint32 cfpmaxduration;
	struct p80211item_uint32 fhdwelltime;
	struct p80211item_uint32 fhhopset;
	struct p80211item_uint32 fhhoppattern;
	struct p80211item_uint32 dschannel;
	struct p80211item_uint32 ibssatimwindow;
	struct p80211item_uint32 probedelay;
	struct p80211item_uint32 cfpollable;
	struct p80211item_uint32 cfpollreq;
	struct p80211item_uint32 basicrate1;
	struct p80211item_uint32 basicrate2;
	struct p80211item_uint32 basicrate3;
	struct p80211item_uint32 basicrate4;
	struct p80211item_uint32 basicrate5;
	struct p80211item_uint32 basicrate6;
	struct p80211item_uint32 basicrate7;
	struct p80211item_uint32 basicrate8;
	struct p80211item_uint32 operationalrate1;
	struct p80211item_uint32 operationalrate2;
	struct p80211item_uint32 operationalrate3;
	struct p80211item_uint32 operationalrate4;
	struct p80211item_uint32 operationalrate5;
	struct p80211item_uint32 operationalrate6;
	struct p80211item_uint32 operationalrate7;
	struct p80211item_uint32 operationalrate8;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_lnxreq_ifstate {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 ifstate;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_lnxreq_wlansniff {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 enable;
	struct p80211item_uint32 channel;
	struct p80211item_uint32 prismheader;
	struct p80211item_uint32 wlanheader;
	struct p80211item_uint32 keepwepflags;
	struct p80211item_uint32 stripfcs;
	struct p80211item_uint32 packet_trunc;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_lnxreq_hostwep {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 resultcode;
	struct p80211item_uint32 decrypt;
	struct p80211item_uint32 encrypt;
} __packed;

struct p80211msg_lnxreq_commsquality {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 resultcode;
	struct p80211item_uint32 dbm;
	struct p80211item_uint32 link;
	struct p80211item_uint32 level;
	struct p80211item_uint32 noise;
	struct p80211item_uint32 txrate;
} __packed;

struct p80211msg_lnxreq_autojoin {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_pstr32 ssid;
	u8 pad_19D[3];
	struct p80211item_uint32 authtype;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_p2req_readpda {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_unk1024 pda;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_p2req_ramdl_state {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 enable;
	struct p80211item_uint32 exeaddr;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_p2req_ramdl_write {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 addr;
	struct p80211item_uint32 len;
	struct p80211item_unk4096 data;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_p2req_flashdl_state {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 enable;
	struct p80211item_uint32 resultcode;
} __packed;

struct p80211msg_p2req_flashdl_write {
	u32 msgcode;
	u32 msglen;
	u8 devname[WLAN_DEVNAMELEN_MAX];
	struct p80211item_uint32 addr;
	struct p80211item_uint32 len;
	struct p80211item_unk4096 data;
	struct p80211item_uint32 resultcode;
} __packed;

#endif
