984 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * This file function prototypes, data structure4 * and definitions for all the host/station commands5 */6 7#ifndef _LBS_HOST_H_8#define _LBS_HOST_H_9 10#include "types.h"11#include "defs.h"12 13#define DEFAULT_AD_HOC_CHANNEL 614 15#define CMD_OPTION_WAITFORRSP 0x000216 17/* Host command IDs */18 19/*20 * Return command are almost always the same as the host command, but with21 * bit 15 set high. There are a few exceptions, though...22 */23#define CMD_RET(cmd) (0x8000 | cmd)24 25/* Return command convention exceptions: */26#define CMD_RET_802_11_ASSOCIATE 0x801227 28/* Command codes */29#define CMD_GET_HW_SPEC 0x000330#define CMD_EEPROM_UPDATE 0x000431#define CMD_802_11_RESET 0x000532#define CMD_802_11_SCAN 0x000633#define CMD_802_11_GET_LOG 0x000b34#define CMD_MAC_MULTICAST_ADR 0x001035#define CMD_802_11_AUTHENTICATE 0x001136#define CMD_802_11_EEPROM_ACCESS 0x005937#define CMD_802_11_ASSOCIATE 0x005038#define CMD_802_11_SET_WEP 0x001339#define CMD_802_11_GET_STAT 0x001440#define CMD_802_3_GET_STAT 0x001541#define CMD_802_11_SNMP_MIB 0x001642#define CMD_MAC_REG_MAP 0x001743#define CMD_BBP_REG_MAP 0x001844#define CMD_MAC_REG_ACCESS 0x001945#define CMD_BBP_REG_ACCESS 0x001a46#define CMD_RF_REG_ACCESS 0x001b47#define CMD_802_11_RADIO_CONTROL 0x001c48#define CMD_802_11_RF_CHANNEL 0x001d49#define CMD_802_11_RF_TX_POWER 0x001e50#define CMD_802_11_RSSI 0x001f51#define CMD_802_11_RF_ANTENNA 0x002052#define CMD_802_11_PS_MODE 0x002153#define CMD_802_11_DATA_RATE 0x002254#define CMD_RF_REG_MAP 0x002355#define CMD_802_11_DEAUTHENTICATE 0x002456#define CMD_802_11_REASSOCIATE 0x002557#define CMD_MAC_CONTROL 0x002858#define CMD_802_11_AD_HOC_START 0x002b59#define CMD_802_11_AD_HOC_JOIN 0x002c60#define CMD_802_11_QUERY_TKIP_REPLY_CNTRS 0x002e61#define CMD_802_11_ENABLE_RSN 0x002f62#define CMD_802_11_SET_AFC 0x003c63#define CMD_802_11_GET_AFC 0x003d64#define CMD_802_11_DEEP_SLEEP 0x003e65#define CMD_802_11_AD_HOC_STOP 0x004066#define CMD_802_11_HOST_SLEEP_CFG 0x004367#define CMD_802_11_WAKEUP_CONFIRM 0x004468#define CMD_802_11_HOST_SLEEP_ACTIVATE 0x004569#define CMD_802_11_BEACON_STOP 0x004970#define CMD_802_11_MAC_ADDRESS 0x004d71#define CMD_802_11_LED_GPIO_CTRL 0x004e72#define CMD_802_11_BAND_CONFIG 0x005873#define CMD_GSPI_BUS_CONFIG 0x005a74#define CMD_802_11D_DOMAIN_INFO 0x005b75#define CMD_802_11_KEY_MATERIAL 0x005e76#define CMD_802_11_SLEEP_PARAMS 0x006677#define CMD_802_11_INACTIVITY_TIMEOUT 0x006778#define CMD_802_11_SLEEP_PERIOD 0x006879#define CMD_802_11_TPC_CFG 0x007280#define CMD_802_11_PA_CFG 0x007381#define CMD_802_11_FW_WAKE_METHOD 0x007482#define CMD_802_11_SUBSCRIBE_EVENT 0x007583#define CMD_802_11_RATE_ADAPT_RATESET 0x007684#define CMD_802_11_TX_RATE_QUERY 0x007f85#define CMD_GET_TSF 0x008086#define CMD_BT_ACCESS 0x008787#define CMD_FWT_ACCESS 0x009588#define CMD_802_11_MONITOR_MODE 0x009889#define CMD_MESH_ACCESS 0x009b90#define CMD_MESH_CONFIG_OLD 0x00a391#define CMD_MESH_CONFIG 0x00ac92#define CMD_SET_BOOT2_VER 0x00a593#define CMD_FUNC_INIT 0x00a994#define CMD_FUNC_SHUTDOWN 0x00aa95#define CMD_802_11_BEACON_CTRL 0x00b096 97/* For the IEEE Power Save */98#define PS_MODE_ACTION_ENTER_PS 0x003099#define PS_MODE_ACTION_EXIT_PS 0x0031100#define PS_MODE_ACTION_SLEEP_CONFIRMED 0x0034101 102#define CMD_ENABLE_RSN 0x0001103#define CMD_DISABLE_RSN 0x0000104 105#define CMD_ACT_GET 0x0000106#define CMD_ACT_SET 0x0001107 108/* Define action or option for CMD_802_11_SET_WEP */109#define CMD_ACT_ADD 0x0002110#define CMD_ACT_REMOVE 0x0004111 112#define CMD_TYPE_WEP_40_BIT 0x01113#define CMD_TYPE_WEP_104_BIT 0x02114 115#define CMD_NUM_OF_WEP_KEYS 4116 117#define CMD_WEP_KEY_INDEX_MASK 0x3fff118 119/* Define action or option for CMD_802_11_SCAN */120#define CMD_BSS_TYPE_BSS 0x0001121#define CMD_BSS_TYPE_IBSS 0x0002122#define CMD_BSS_TYPE_ANY 0x0003123 124/* Define action or option for CMD_802_11_SCAN */125#define CMD_SCAN_TYPE_ACTIVE 0x0000126#define CMD_SCAN_TYPE_PASSIVE 0x0001127 128#define CMD_SCAN_RADIO_TYPE_BG 0129 130#define CMD_SCAN_PROBE_DELAY_TIME 0131 132/* Define action or option for CMD_MAC_CONTROL */133#define CMD_ACT_MAC_RX_ON 0x0001134#define CMD_ACT_MAC_TX_ON 0x0002135#define CMD_ACT_MAC_LOOPBACK_ON 0x0004136#define CMD_ACT_MAC_WEP_ENABLE 0x0008137#define CMD_ACT_MAC_INT_ENABLE 0x0010138#define CMD_ACT_MAC_MULTICAST_ENABLE 0x0020139#define CMD_ACT_MAC_BROADCAST_ENABLE 0x0040140#define CMD_ACT_MAC_PROMISCUOUS_ENABLE 0x0080141#define CMD_ACT_MAC_ALL_MULTICAST_ENABLE 0x0100142#define CMD_ACT_MAC_STRICT_PROTECTION_ENABLE 0x0400143 144/* Event flags for CMD_802_11_SUBSCRIBE_EVENT */145#define CMD_SUBSCRIBE_RSSI_LOW 0x0001146#define CMD_SUBSCRIBE_SNR_LOW 0x0002147#define CMD_SUBSCRIBE_FAILCOUNT 0x0004148#define CMD_SUBSCRIBE_BCNMISS 0x0008149#define CMD_SUBSCRIBE_RSSI_HIGH 0x0010150#define CMD_SUBSCRIBE_SNR_HIGH 0x0020151 152#define RADIO_PREAMBLE_LONG 0x00153#define RADIO_PREAMBLE_SHORT 0x02154#define RADIO_PREAMBLE_AUTO 0x04155 156/* Define action or option for CMD_802_11_RF_CHANNEL */157#define CMD_OPT_802_11_RF_CHANNEL_GET 0x00158#define CMD_OPT_802_11_RF_CHANNEL_SET 0x01159 160/* Define action or option for CMD_802_11_DATA_RATE */161#define CMD_ACT_SET_TX_AUTO 0x0000162#define CMD_ACT_SET_TX_FIX_RATE 0x0001163#define CMD_ACT_GET_TX_RATE 0x0002164 165/* Options for CMD_802_11_FW_WAKE_METHOD */166#define CMD_WAKE_METHOD_UNCHANGED 0x0000167#define CMD_WAKE_METHOD_COMMAND_INT 0x0001168#define CMD_WAKE_METHOD_GPIO 0x0002169 170/* Object IDs for CMD_802_11_SNMP_MIB */171#define SNMP_MIB_OID_BSS_TYPE 0x0000172#define SNMP_MIB_OID_OP_RATE_SET 0x0001173#define SNMP_MIB_OID_BEACON_PERIOD 0x0002 /* Reserved on v9+ */174#define SNMP_MIB_OID_DTIM_PERIOD 0x0003 /* Reserved on v9+ */175#define SNMP_MIB_OID_ASSOC_TIMEOUT 0x0004 /* Reserved on v9+ */176#define SNMP_MIB_OID_RTS_THRESHOLD 0x0005177#define SNMP_MIB_OID_SHORT_RETRY_LIMIT 0x0006178#define SNMP_MIB_OID_LONG_RETRY_LIMIT 0x0007179#define SNMP_MIB_OID_FRAG_THRESHOLD 0x0008180#define SNMP_MIB_OID_11D_ENABLE 0x0009181#define SNMP_MIB_OID_11H_ENABLE 0x000A182 183/* Define action or option for CMD_BT_ACCESS */184enum cmd_bt_access_opts {185 /* The bt commands start at 5 instead of 1 because the old dft commands186 * are mapped to 1-4. These old commands are no longer maintained and187 * should not be called.188 */189 CMD_ACT_BT_ACCESS_ADD = 5,190 CMD_ACT_BT_ACCESS_DEL,191 CMD_ACT_BT_ACCESS_LIST,192 CMD_ACT_BT_ACCESS_RESET,193 CMD_ACT_BT_ACCESS_SET_INVERT,194 CMD_ACT_BT_ACCESS_GET_INVERT195};196 197/* Define action or option for CMD_FWT_ACCESS */198enum cmd_fwt_access_opts {199 CMD_ACT_FWT_ACCESS_ADD = 1,200 CMD_ACT_FWT_ACCESS_DEL,201 CMD_ACT_FWT_ACCESS_LOOKUP,202 CMD_ACT_FWT_ACCESS_LIST,203 CMD_ACT_FWT_ACCESS_LIST_ROUTE,204 CMD_ACT_FWT_ACCESS_LIST_NEIGHBOR,205 CMD_ACT_FWT_ACCESS_RESET,206 CMD_ACT_FWT_ACCESS_CLEANUP,207 CMD_ACT_FWT_ACCESS_TIME,208};209 210/* Define action or option for CMD_802_11_HOST_SLEEP_CFG */211enum cmd_wol_cfg_opts {212 CMD_ACT_ACTION_NONE = 0,213 CMD_ACT_SET_WOL_RULE,214 CMD_ACT_GET_WOL_RULE,215 CMD_ACT_RESET_WOL_RULE,216};217 218/* Define action or option for CMD_MESH_ACCESS */219enum cmd_mesh_access_opts {220 CMD_ACT_MESH_GET_TTL = 1,221 CMD_ACT_MESH_SET_TTL,222 CMD_ACT_MESH_GET_STATS,223 CMD_ACT_MESH_GET_ANYCAST,224 CMD_ACT_MESH_SET_ANYCAST,225 CMD_ACT_MESH_SET_LINK_COSTS,226 CMD_ACT_MESH_GET_LINK_COSTS,227 CMD_ACT_MESH_SET_BCAST_RATE,228 CMD_ACT_MESH_GET_BCAST_RATE,229 CMD_ACT_MESH_SET_RREQ_DELAY,230 CMD_ACT_MESH_GET_RREQ_DELAY,231 CMD_ACT_MESH_SET_ROUTE_EXP,232 CMD_ACT_MESH_GET_ROUTE_EXP,233 CMD_ACT_MESH_SET_AUTOSTART_ENABLED,234 CMD_ACT_MESH_GET_AUTOSTART_ENABLED,235 CMD_ACT_MESH_SET_GET_PRB_RSP_LIMIT = 17,236};237 238/* Define actions and types for CMD_MESH_CONFIG */239enum cmd_mesh_config_actions {240 CMD_ACT_MESH_CONFIG_STOP = 0,241 CMD_ACT_MESH_CONFIG_START,242 CMD_ACT_MESH_CONFIG_SET,243 CMD_ACT_MESH_CONFIG_GET,244};245 246enum cmd_mesh_config_types {247 CMD_TYPE_MESH_SET_BOOTFLAG = 1,248 CMD_TYPE_MESH_SET_BOOTTIME,249 CMD_TYPE_MESH_SET_DEF_CHANNEL,250 CMD_TYPE_MESH_SET_MESH_IE,251 CMD_TYPE_MESH_GET_DEFAULTS,252 CMD_TYPE_MESH_GET_MESH_IE, /* GET_DEFAULTS is superset of GET_MESHIE */253};254 255/* Card Event definition */256#define MACREG_INT_CODE_TX_PPA_FREE 0257#define MACREG_INT_CODE_TX_DMA_DONE 1258#define MACREG_INT_CODE_LINK_LOST_W_SCAN 2259#define MACREG_INT_CODE_LINK_LOST_NO_SCAN 3260#define MACREG_INT_CODE_LINK_SENSED 4261#define MACREG_INT_CODE_CMD_FINISHED 5262#define MACREG_INT_CODE_MIB_CHANGED 6263#define MACREG_INT_CODE_INIT_DONE 7264#define MACREG_INT_CODE_DEAUTHENTICATED 8265#define MACREG_INT_CODE_DISASSOCIATED 9266#define MACREG_INT_CODE_PS_AWAKE 10267#define MACREG_INT_CODE_PS_SLEEP 11268#define MACREG_INT_CODE_MIC_ERR_MULTICAST 13269#define MACREG_INT_CODE_MIC_ERR_UNICAST 14270#define MACREG_INT_CODE_WM_AWAKE 15271#define MACREG_INT_CODE_DEEP_SLEEP_AWAKE 16272#define MACREG_INT_CODE_ADHOC_BCN_LOST 17273#define MACREG_INT_CODE_HOST_AWAKE 18274#define MACREG_INT_CODE_STOP_TX 19275#define MACREG_INT_CODE_START_TX 20276#define MACREG_INT_CODE_CHANNEL_SWITCH 21277#define MACREG_INT_CODE_MEASUREMENT_RDY 22278#define MACREG_INT_CODE_WMM_CHANGE 23279#define MACREG_INT_CODE_BG_SCAN_REPORT 24280#define MACREG_INT_CODE_RSSI_LOW 25281#define MACREG_INT_CODE_SNR_LOW 26282#define MACREG_INT_CODE_MAX_FAIL 27283#define MACREG_INT_CODE_RSSI_HIGH 28284#define MACREG_INT_CODE_SNR_HIGH 29285#define MACREG_INT_CODE_MESH_AUTO_STARTED 35286#define MACREG_INT_CODE_FIRMWARE_READY 48287 288 289/* 802.11-related definitions */290 291/* TxPD descriptor */292struct txpd {293 /* union to cope up with later FW revisions */294 union {295 /* Current Tx packet status */296 __le32 tx_status;297 struct {298 /* BSS type: client, AP, etc. */299 u8 bss_type;300 /* BSS number */301 u8 bss_num;302 /* Reserved */303 __le16 reserved;304 } bss;305 } u;306 /* Tx control */307 __le32 tx_control;308 __le32 tx_packet_location;309 /* Tx packet length */310 __le16 tx_packet_length;311 struct_group_attr(tx_dest_addr, __packed,312 /* First 2 byte of destination MAC address */313 u8 tx_dest_addr_high[2];314 /* Last 4 byte of destination MAC address */315 u8 tx_dest_addr_low[4];316 );317 /* Pkt Priority */318 u8 priority;319 /* Pkt Trasnit Power control */320 u8 powermgmt;321 /* Amount of time the packet has been queued (units = 2ms) */322 u8 pktdelay_2ms;323 /* reserved */324 u8 reserved1;325} __packed;326 327/* RxPD Descriptor */328struct rxpd {329 /* union to cope up with later FW revisions */330 union {331 /* Current Rx packet status */332 __le16 status;333 struct {334 /* BSS type: client, AP, etc. */335 u8 bss_type;336 /* BSS number */337 u8 bss_num;338 } __packed bss;339 } __packed u;340 341 /* SNR */342 u8 snr;343 344 /* Tx control */345 u8 rx_control;346 347 /* Pkt length */348 __le16 pkt_len;349 350 /* Noise Floor */351 u8 nf;352 353 /* Rx Packet Rate */354 u8 rx_rate;355 356 /* Pkt addr */357 __le32 pkt_ptr;358 359 /* Next Rx RxPD addr */360 __le32 next_rxpd_ptr;361 362 /* Pkt Priority */363 u8 priority;364 u8 reserved[3];365} __packed;366 367struct cmd_header {368 __le16 command;369 __le16 size;370 __le16 seqnum;371 __le16 result;372} __packed;373 374/* Generic structure to hold all key types. */375struct enc_key {376 u16 len;377 u16 flags; /* KEY_INFO_* from defs.h */378 u16 type; /* KEY_TYPE_* from defs.h */379 u8 key[32];380};381 382/* lbs_offset_value */383struct lbs_offset_value {384 u32 offset;385 u32 value;386} __packed;387 388#define MAX_11D_TRIPLETS 83389 390struct mrvl_ie_domain_param_set {391 struct mrvl_ie_header header;392 393 u8 country_code[IEEE80211_COUNTRY_STRING_LEN];394 struct ieee80211_country_ie_triplet triplet[MAX_11D_TRIPLETS];395} __packed;396 397struct cmd_ds_802_11d_domain_info {398 struct cmd_header hdr;399 400 __le16 action;401 struct mrvl_ie_domain_param_set domain;402} __packed;403 404/*405 * Define data structure for CMD_GET_HW_SPEC406 * This structure defines the response for the GET_HW_SPEC command407 */408struct cmd_ds_get_hw_spec {409 struct cmd_header hdr;410 411 /* HW Interface version number */412 __le16 hwifversion;413 /* HW version number */414 __le16 version;415 /* Max number of TxPD FW can handle */416 __le16 nr_txpd;417 /* Max no of Multicast address */418 __le16 nr_mcast_adr;419 /* MAC address */420 u8 permanentaddr[6];421 422 /* region Code */423 __le16 regioncode;424 425 /* Number of antenna used */426 __le16 nr_antenna;427 428 /* FW release number, example 0x01030304 = 2.3.4p1 */429 __le32 fwrelease;430 431 /* Base Address of TxPD queue */432 __le32 wcb_base;433 /* Read Pointer of RxPd queue */434 __le32 rxpd_rdptr;435 436 /* Write Pointer of RxPd queue */437 __le32 rxpd_wrptr;438 439 /*FW/HW capability */440 __le32 fwcapinfo;441} __packed;442 443struct cmd_ds_802_11_subscribe_event {444 struct cmd_header hdr;445 446 __le16 action;447 __le16 events;448 449 /* A TLV to the CMD_802_11_SUBSCRIBE_EVENT command can contain a450 * number of TLVs. From the v5.1 manual, those TLVs would add up to451 * 40 bytes. However, future firmware might add additional TLVs, so I452 * bump this up a bit.453 */454 uint8_t tlv[128];455} __packed;456 457/*458 * This scan handle Country Information IE(802.11d compliant)459 * Define data structure for CMD_802_11_SCAN460 */461struct cmd_ds_802_11_scan {462 struct cmd_header hdr;463 464 uint8_t bsstype;465 uint8_t bssid[ETH_ALEN];466 uint8_t tlvbuffer[];467} __packed;468 469struct cmd_ds_802_11_scan_rsp {470 struct cmd_header hdr;471 472 __le16 bssdescriptsize;473 uint8_t nr_sets;474 uint8_t bssdesc_and_tlvbuffer[];475} __packed;476 477struct cmd_ds_802_11_get_log {478 struct cmd_header hdr;479 480 __le32 mcasttxframe;481 __le32 failed;482 __le32 retry;483 __le32 multiretry;484 __le32 framedup;485 __le32 rtssuccess;486 __le32 rtsfailure;487 __le32 ackfailure;488 __le32 rxfrag;489 __le32 mcastrxframe;490 __le32 fcserror;491 __le32 txframe;492 __le32 wepundecryptable;493} __packed;494 495struct cmd_ds_mac_control {496 struct cmd_header hdr;497 __le16 action;498 u16 reserved;499} __packed;500 501struct cmd_ds_mac_multicast_adr {502 struct cmd_header hdr;503 __le16 action;504 __le16 nr_of_adrs;505 u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE];506} __packed;507 508struct cmd_ds_802_11_authenticate {509 struct cmd_header hdr;510 511 u8 bssid[ETH_ALEN];512 u8 authtype;513 u8 reserved[10];514} __packed;515 516struct cmd_ds_802_11_deauthenticate {517 struct cmd_header hdr;518 519 u8 macaddr[ETH_ALEN];520 __le16 reasoncode;521} __packed;522 523struct cmd_ds_802_11_associate {524 struct cmd_header hdr;525 526 u8 bssid[6];527 __le16 capability;528 __le16 listeninterval;529 __le16 bcnperiod;530 u8 dtimperiod;531 /* 512 permitted - enough for required and most optional IEs */532 u8 iebuf[];533} __packed;534 535struct cmd_ds_802_11_associate_response {536 struct cmd_header hdr;537 538 __le16 capability;539 __le16 statuscode;540 __le16 aid;541 /* max 512 */542 u8 iebuf[];543} __packed;544 545struct cmd_ds_802_11_set_wep {546 struct cmd_header hdr;547 548 /* ACT_ADD, ACT_REMOVE or ACT_ENABLE */549 __le16 action;550 551 /* key Index selected for Tx */552 __le16 keyindex;553 554 /* 40, 128bit or TXWEP */555 uint8_t keytype[4];556 uint8_t keymaterial[4][16];557} __packed;558 559struct cmd_ds_802_11_snmp_mib {560 struct cmd_header hdr;561 562 __le16 action;563 __le16 oid;564 __le16 bufsize;565 u8 value[128];566} __packed;567 568struct cmd_ds_reg_access {569 struct cmd_header hdr;570 571 __le16 action;572 __le16 offset;573 union {574 u8 bbp_rf; /* for BBP and RF registers */575 __le32 mac; /* for MAC registers */576 } value;577} __packed;578 579struct cmd_ds_802_11_radio_control {580 struct cmd_header hdr;581 582 __le16 action;583 __le16 control;584} __packed;585 586struct cmd_ds_802_11_beacon_control {587 struct cmd_header hdr;588 589 __le16 action;590 __le16 beacon_enable;591 __le16 beacon_period;592} __packed;593 594struct cmd_ds_802_11_sleep_params {595 struct cmd_header hdr;596 597 /* ACT_GET/ACT_SET */598 __le16 action;599 600 /* Sleep clock error in ppm */601 __le16 error;602 603 /* Wakeup offset in usec */604 __le16 offset;605 606 /* Clock stabilization time in usec */607 __le16 stabletime;608 609 /* control periodic calibration */610 uint8_t calcontrol;611 612 /* control the use of external sleep clock */613 uint8_t externalsleepclk;614 615 /* reserved field, should be set to zero */616 __le16 reserved;617} __packed;618 619struct cmd_ds_802_11_rf_channel {620 struct cmd_header hdr;621 622 __le16 action;623 __le16 channel;624 __le16 rftype; /* unused */625 __le16 reserved; /* unused */626 u8 channellist[32]; /* unused */627} __packed;628 629struct cmd_ds_802_11_rssi {630 struct cmd_header hdr;631 632 /*633 * request: number of beacons (N) to average the SNR and NF over634 * response: SNR of most recent beacon635 */636 __le16 n_or_snr;637 638 /*639 * The following fields are only set in the response.640 * In the request these are reserved and should be set to 0.641 */642 __le16 nf; /* most recent beacon noise floor */643 __le16 avg_snr; /* average SNR weighted by N from request */644 __le16 avg_nf; /* average noise floor weighted by N from request */645} __packed;646 647struct cmd_ds_802_11_mac_address {648 struct cmd_header hdr;649 650 __le16 action;651 u8 macadd[ETH_ALEN];652} __packed;653 654struct cmd_ds_802_11_rf_tx_power {655 struct cmd_header hdr;656 657 __le16 action;658 __le16 curlevel;659 s8 maxlevel;660 s8 minlevel;661} __packed;662 663/* MONITOR_MODE only exists in OLPC v5 firmware */664struct cmd_ds_802_11_monitor_mode {665 struct cmd_header hdr;666 667 __le16 action;668 __le16 mode;669} __packed;670 671struct cmd_ds_set_boot2_ver {672 struct cmd_header hdr;673 674 __le16 action;675 __le16 version;676} __packed;677 678struct cmd_ds_802_11_fw_wake_method {679 struct cmd_header hdr;680 681 __le16 action;682 __le16 method;683} __packed;684 685struct cmd_ds_802_11_ps_mode {686 struct cmd_header hdr;687 688 __le16 action;689 690 /*691 * Interval for keepalive in PS mode:692 * 0x0000 = don't change693 * 0x001E = firmware default694 * 0xFFFF = disable695 */696 __le16 nullpktinterval;697 698 /*699 * Number of DTIM intervals to wake up for:700 * 0 = don't change701 * 1 = firmware default702 * 5 = max703 */704 __le16 multipledtim;705 706 __le16 reserved;707 __le16 locallisteninterval;708 709 /*710 * AdHoc awake period (FW v9+ only):711 * 0 = don't change712 * 1 = always awake (IEEE standard behavior)713 * 2 - 31 = sleep for (n - 1) periods and awake for 1 period714 * 32 - 254 = invalid715 * 255 = sleep at each ATIM716 */717 __le16 adhoc_awake_period;718} __packed;719 720struct cmd_confirm_sleep {721 struct cmd_header hdr;722 723 __le16 action;724 __le16 nullpktinterval;725 __le16 multipledtim;726 __le16 reserved;727 __le16 locallisteninterval;728} __packed;729 730struct cmd_ds_802_11_data_rate {731 struct cmd_header hdr;732 733 __le16 action;734 __le16 reserved;735 u8 rates[MAX_RATES];736} __packed;737 738struct cmd_ds_802_11_rate_adapt_rateset {739 struct cmd_header hdr;740 __le16 action;741 __le16 enablehwauto;742 __le16 bitmap;743} __packed;744 745struct cmd_ds_802_11_ad_hoc_start {746 struct cmd_header hdr;747 748 u8 ssid[IEEE80211_MAX_SSID_LEN];749 u8 bsstype;750 __le16 beaconperiod;751 u8 dtimperiod; /* Reserved on v9 and later */752 struct ieee_ie_ibss_param_set ibss;753 u8 reserved1[4];754 struct ieee_ie_ds_param_set ds;755 u8 reserved2[4];756 __le16 probedelay; /* Reserved on v9 and later */757 __le16 capability;758 u8 rates[MAX_RATES];759 u8 tlv_memory_size_pad[100];760} __packed;761 762struct cmd_ds_802_11_ad_hoc_result {763 struct cmd_header hdr;764 765 u8 pad[3];766 u8 bssid[ETH_ALEN];767} __packed;768 769struct adhoc_bssdesc {770 u8 bssid[ETH_ALEN];771 u8 ssid[IEEE80211_MAX_SSID_LEN];772 u8 type;773 __le16 beaconperiod;774 u8 dtimperiod;775 __le64 timestamp;776 __le64 localtime;777 struct ieee_ie_ds_param_set ds;778 u8 reserved1[4];779 struct ieee_ie_ibss_param_set ibss;780 u8 reserved2[4];781 __le16 capability;782 u8 rates[MAX_RATES];783 784 /*785 * DO NOT ADD ANY FIELDS TO THIS STRUCTURE. It is used below in the786 * Adhoc join command and will cause a binary layout mismatch with787 * the firmware788 */789} __packed;790 791struct cmd_ds_802_11_ad_hoc_join {792 struct cmd_header hdr;793 794 struct adhoc_bssdesc bss;795 __le16 failtimeout; /* Reserved on v9 and later */796 __le16 probedelay; /* Reserved on v9 and later */797} __packed;798 799struct cmd_ds_802_11_ad_hoc_stop {800 struct cmd_header hdr;801} __packed;802 803struct cmd_ds_802_11_enable_rsn {804 struct cmd_header hdr;805 806 __le16 action;807 __le16 enable;808} __packed;809 810struct MrvlIEtype_keyParamSet {811 /* type ID */812 __le16 type;813 814 /* length of Payload */815 __le16 length;816 817 /* type of key: WEP=0, TKIP=1, AES=2 */818 __le16 keytypeid;819 820 /* key control Info specific to a keytypeid */821 __le16 keyinfo;822 823 /* length of key */824 __le16 keylen;825 826 /* key material of size keylen */827 u8 key[32];828} __packed;829 830#define MAX_WOL_RULES 16831 832struct host_wol_rule {833 uint8_t rule_no;834 uint8_t rule_ops;835 __le16 sig_offset;836 __le16 sig_length;837 __le16 reserve;838 __be32 sig_mask;839 __be32 signature;840} __packed;841 842struct wol_config {843 uint8_t action;844 uint8_t pattern;845 uint8_t no_rules_in_cmd;846 uint8_t result;847 struct host_wol_rule rule[MAX_WOL_RULES];848} __packed;849 850struct cmd_ds_host_sleep {851 struct cmd_header hdr;852 __le32 criteria;853 uint8_t gpio;854 uint16_t gap;855 struct wol_config wol_conf;856} __packed;857 858 859 860struct cmd_ds_802_11_key_material {861 struct cmd_header hdr;862 863 __le16 action;864 struct MrvlIEtype_keyParamSet keyParamSet[2];865} __packed;866 867struct cmd_ds_802_11_eeprom_access {868 struct cmd_header hdr;869 __le16 action;870 __le16 offset;871 __le16 len;872 /* firmware says it returns a maximum of 20 bytes */873#define LBS_EEPROM_READ_LEN 20874 u8 value[LBS_EEPROM_READ_LEN];875} __packed;876 877struct cmd_ds_802_11_tpc_cfg {878 struct cmd_header hdr;879 880 __le16 action;881 uint8_t enable;882 int8_t P0;883 int8_t P1;884 int8_t P2;885 uint8_t usesnr;886} __packed;887 888 889struct cmd_ds_802_11_pa_cfg {890 struct cmd_header hdr;891 892 __le16 action;893 uint8_t enable;894 int8_t P0;895 int8_t P1;896 int8_t P2;897} __packed;898 899 900struct cmd_ds_802_11_led_ctrl {901 struct cmd_header hdr;902 903 __le16 action;904 __le16 numled;905 u8 data[256];906} __packed;907 908/* Automatic Frequency Control */909struct cmd_ds_802_11_afc {910 struct cmd_header hdr;911 912 __le16 afc_auto;913 union {914 struct {915 __le16 threshold;916 __le16 period;917 };918 struct {919 __le16 timing_offset; /* signed */920 __le16 carrier_offset; /* signed */921 };922 };923} __packed;924 925struct cmd_tx_rate_query {926 __le16 txrate;927} __packed;928 929struct cmd_ds_get_tsf {930 __le64 tsfvalue;931} __packed;932 933struct cmd_ds_bt_access {934 struct cmd_header hdr;935 936 __le16 action;937 __le32 id;938 u8 addr1[ETH_ALEN];939 u8 addr2[ETH_ALEN];940} __packed;941 942struct cmd_ds_fwt_access {943 struct cmd_header hdr;944 945 __le16 action;946 __le32 id;947 u8 valid;948 u8 da[ETH_ALEN];949 u8 dir;950 u8 ra[ETH_ALEN];951 __le32 ssn;952 __le32 dsn;953 __le32 metric;954 u8 rate;955 u8 hopcount;956 u8 ttl;957 __le32 expiration;958 u8 sleepmode;959 __le32 snr;960 __le32 references;961 u8 prec[ETH_ALEN];962} __packed;963 964struct cmd_ds_mesh_config {965 struct cmd_header hdr;966 967 __le16 action;968 __le16 channel;969 __le16 type;970 __le16 length;971 u8 data[128]; /* last position reserved */972} __packed;973 974struct cmd_ds_mesh_access {975 struct cmd_header hdr;976 977 __le16 action;978 __le32 data[32]; /* last position reserved */979} __packed;980 981/* Number of stats counters returned by the firmware */982#define MESH_STATS_NUM 8983#endif984