iwmc3200wifi: handle coexistence radio notification
[safe/jmp/linux-2.6] / drivers / net / wireless / libertas / hostcmd.h
index 9256dab..c8a1998 100644 (file)
 
 /* TxPD descriptor */
 struct txpd {
-       /* Current Tx packet status */
-       __le32 tx_status;
+       /* union to cope up with later FW revisions */
+       union {
+               /* Current Tx packet status */
+               __le32 tx_status;
+               struct {
+                       /* BSS type: client, AP, etc. */
+                       u8 bss_type;
+                       /* BSS number */
+                       u8 bss_num;
+                       /* Reserved */
+                       __le16 reserved;
+               } bss;
+       } u;
        /* Tx control */
        __le32 tx_control;
        __le32 tx_packet_location;
@@ -32,12 +43,21 @@ struct txpd {
        u8 pktdelay_2ms;
        /* reserved */
        u8 reserved1;
-};
+} __attribute__ ((packed));
 
 /* RxPD Descriptor */
 struct rxpd {
-       /* Current Rx packet status */
-       __le16 status;
+       /* union to cope up with later FW revisions */
+       union {
+               /* Current Rx packet status */
+               __le16 status;
+               struct {
+                       /* BSS type: client, AP, etc. */
+                       u8 bss_type;
+                       /* BSS number */
+                       u8 bss_num;
+               } __attribute__ ((packed)) bss;
+       } __attribute__ ((packed)) u;
 
        /* SNR */
        u8 snr;
@@ -63,7 +83,7 @@ struct rxpd {
        /* Pkt Priority */
        u8 priority;
        u8 reserved[3];
-};
+} __attribute__ ((packed));
 
 struct cmd_header {
        __le16 command;
@@ -97,7 +117,7 @@ struct enc_key {
 struct lbs_offset_value {
        u32 offset;
        u32 value;
-};
+} __attribute__ ((packed));
 
 /* Define general data structure */
 /* cmd_DS_GEN */
@@ -107,7 +127,7 @@ struct cmd_ds_gen {
        __le16 seqnum;
        __le16 result;
        void *cmdresp[0];
-};
+} __attribute__ ((packed));
 
 #define S_DS_GEN sizeof(struct cmd_ds_gen)
 
@@ -151,10 +171,6 @@ struct cmd_ds_get_hw_spec {
        __le32 fwcapinfo;
 } __attribute__ ((packed));
 
-struct cmd_ds_802_11_reset {
-       __le16 action;
-};
-
 struct cmd_ds_802_11_subscribe_event {
        struct cmd_header hdr;
 
@@ -167,7 +183,7 @@ struct cmd_ds_802_11_subscribe_event {
         * bump this up a bit.
         */
        uint8_t tlv[128];
-};
+} __attribute__ ((packed));
 
 /*
  * This scan handle Country Information IE(802.11d compliant)
@@ -184,7 +200,7 @@ struct cmd_ds_802_11_scan {
        mrvlietypes_chanlistparamset_t ChanListParamSet;
        mrvlietypes_ratesparamset_t OpRateSet;
 #endif
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_scan_rsp {
        struct cmd_header hdr;
@@ -192,7 +208,7 @@ struct cmd_ds_802_11_scan_rsp {
        __le16 bssdescriptsize;
        uint8_t nr_sets;
        uint8_t bssdesc_and_tlvbuffer[0];
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_get_log {
        struct cmd_header hdr;
@@ -210,59 +226,63 @@ struct cmd_ds_802_11_get_log {
        __le32 fcserror;
        __le32 txframe;
        __le32 wepundecryptable;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_mac_control {
        struct cmd_header hdr;
        __le16 action;
        u16 reserved;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_mac_multicast_adr {
+       struct cmd_header hdr;
        __le16 action;
        __le16 nr_of_adrs;
        u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE];
-};
+} __attribute__ ((packed));
+
+struct cmd_ds_gspi_bus_config {
+       struct cmd_header hdr;
+       __le16 action;
+       __le16 bus_delay_mode;
+       __le16 host_time_delay_to_read_port;
+       __le16 host_time_delay_to_read_register;
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_authenticate {
-       u8 macaddr[ETH_ALEN];
+       struct cmd_header hdr;
+
+       u8 bssid[ETH_ALEN];
        u8 authtype;
        u8 reserved[10];
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_deauthenticate {
-       u8 macaddr[6];
+       struct cmd_header hdr;
+
+       u8 macaddr[ETH_ALEN];
        __le16 reasoncode;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_associate {
-       u8 peerstaaddr[6];
+       struct cmd_header hdr;
+
+       u8 bssid[6];
        __le16 capability;
        __le16 listeninterval;
        __le16 bcnperiod;
        u8 dtimperiod;
-
-#if 0
-       mrvlietypes_ssidparamset_t ssidParamSet;
-       mrvlietypes_phyparamset_t phyparamset;
-       mrvlietypes_ssparamset_t ssparamset;
-       mrvlietypes_ratesparamset_t ratesParamSet;
-#endif
+       u8 iebuf[512];    /* Enough for required and most optional IEs */
 } __attribute__ ((packed));
 
-struct cmd_ds_802_11_disassociate {
-       u8 destmacaddr[6];
-       __le16 reasoncode;
-};
-
-struct cmd_ds_802_11_associate_rsp {
-       struct ieeetypes_assocrsp assocRsp;
-};
+struct cmd_ds_802_11_associate_response {
+       struct cmd_header hdr;
 
-struct cmd_ds_802_11_ad_hoc_result {
-       u8 pad[3];
-       u8 bssid[ETH_ALEN];
-};
+       __le16 capability;
+       __le16 statuscode;
+       __le16 aid;
+       u8 iebuf[512];
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_set_wep {
        struct cmd_header hdr;
@@ -276,7 +296,7 @@ struct cmd_ds_802_11_set_wep {
        /* 40, 128bit or TXWEP */
        uint8_t keytype[4];
        uint8_t keymaterial[4][16];
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_3_get_stat {
        __le32 xmitok;
@@ -285,7 +305,7 @@ struct cmd_ds_802_3_get_stat {
        __le32 rcverror;
        __le32 rcvnobuffer;
        __le32 rcvcrcerror;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_get_stat {
        __le32 txfragmentcnt;
@@ -305,65 +325,67 @@ struct cmd_ds_802_11_get_stat {
        __le32 txbeacon;
        __le32 rxbeacon;
        __le32 wepundecryptable;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_snmp_mib {
-       __le16 querytype;
+       struct cmd_header hdr;
+
+       __le16 action;
        __le16 oid;
        __le16 bufsize;
        u8 value[128];
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_mac_reg_map {
        __le16 buffersize;
        u8 regmap[128];
        __le16 reserved;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_bbp_reg_map {
        __le16 buffersize;
        u8 regmap[128];
        __le16 reserved;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_rf_reg_map {
        __le16 buffersize;
        u8 regmap[64];
        __le16 reserved;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_mac_reg_access {
        __le16 action;
        __le16 offset;
        __le32 value;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_bbp_reg_access {
        __le16 action;
        __le16 offset;
        u8 value;
        u8 reserved[3];
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_rf_reg_access {
        __le16 action;
        __le16 offset;
        u8 value;
        u8 reserved[3];
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_radio_control {
        struct cmd_header hdr;
 
        __le16 action;
        __le16 control;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_beacon_control {
        __le16 action;
        __le16 beacon_enable;
        __le16 beacon_period;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_sleep_params {
        struct cmd_header hdr;
@@ -388,7 +410,7 @@ struct cmd_ds_802_11_sleep_params {
 
        /* reserved field, should be set to zero */
        __le16 reserved;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_inactivity_timeout {
        struct cmd_header hdr;
@@ -398,7 +420,7 @@ struct cmd_ds_802_11_inactivity_timeout {
 
        /* Inactivity timeout in msec */
        __le16 timeout;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_rf_channel {
        struct cmd_header hdr;
@@ -408,7 +430,7 @@ struct cmd_ds_802_11_rf_channel {
        __le16 rftype;      /* unused */
        __le16 reserved;    /* unused */
        u8 channellist[32]; /* unused */
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_rssi {
        /* weighting factor */
@@ -417,26 +439,30 @@ struct cmd_ds_802_11_rssi {
        __le16 reserved_0;
        __le16 reserved_1;
        __le16 reserved_2;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_rssi_rsp {
        __le16 SNR;
        __le16 noisefloor;
        __le16 avgSNR;
        __le16 avgnoisefloor;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_mac_address {
        struct cmd_header hdr;
 
        __le16 action;
        u8 macadd[ETH_ALEN];
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_rf_tx_power {
+       struct cmd_header hdr;
+
        __le16 action;
-       __le16 currentlevel;
-};
+       __le16 curlevel;
+       s8 maxlevel;
+       s8 minlevel;
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_rf_antenna {
        __le16 action;
@@ -444,33 +470,33 @@ struct cmd_ds_802_11_rf_antenna {
        /* Number of antennas or 0xffff(diversity) */
        __le16 antennamode;
 
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_monitor_mode {
        __le16 action;
        __le16 mode;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_set_boot2_ver {
        struct cmd_header hdr;
 
        __le16 action;
        __le16 version;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_fw_wake_method {
        struct cmd_header hdr;
 
        __le16 action;
        __le16 method;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_sleep_period {
        struct cmd_header hdr;
 
        __le16 action;
        __le16 period;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_ps_mode {
        __le16 action;
@@ -478,20 +504,17 @@ struct cmd_ds_802_11_ps_mode {
        __le16 multipledtim;
        __le16 reserved;
        __le16 locallisteninterval;
-};
+} __attribute__ ((packed));
 
-struct PS_CMD_ConfirmSleep {
-       __le16 command;
-       __le16 size;
-       __le16 seqnum;
-       __le16 result;
+struct cmd_confirm_sleep {
+       struct cmd_header hdr;
 
        __le16 action;
-       __le16 reserved1;
+       __le16 nullpktinterval;
        __le16 multipledtim;
        __le16 reserved;
        __le16 locallisteninterval;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_data_rate {
        struct cmd_header hdr;
@@ -499,37 +522,51 @@ struct cmd_ds_802_11_data_rate {
        __le16 action;
        __le16 reserved;
        u8 rates[MAX_RATES];
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_rate_adapt_rateset {
+       struct cmd_header hdr;
        __le16 action;
        __le16 enablehwauto;
        __le16 bitmap;
-};
+} __attribute__ ((packed));
 
 struct cmd_ds_802_11_ad_hoc_start {
+       struct cmd_header hdr;
+
        u8 ssid[IW_ESSID_MAX_SIZE];
        u8 bsstype;
        __le16 beaconperiod;
-       u8 dtimperiod;
-       union IEEEtypes_ssparamset ssparamset;
-       union ieeetypes_phyparamset phyparamset;
-       __le16 probedelay;
+       u8 dtimperiod;   /* Reserved on v9 and later */
+       struct ieee_ie_ibss_param_set ibss;
+       u8 reserved1[4];
+       struct ieee_ie_ds_param_set ds;
+       u8 reserved2[4];
+       __le16 probedelay;  /* Reserved on v9 and later */
        __le16 capability;
        u8 rates[MAX_RATES];
        u8 tlv_memory_size_pad[100];
 } __attribute__ ((packed));
 
+struct cmd_ds_802_11_ad_hoc_result {
+       struct cmd_header hdr;
+
+       u8 pad[3];
+       u8 bssid[ETH_ALEN];
+} __attribute__ ((packed));
+
 struct adhoc_bssdesc {
-       u8 bssid[6];
-       u8 ssid[32];
+       u8 bssid[ETH_ALEN];
+       u8 ssid[IW_ESSID_MAX_SIZE];
        u8 type;
        __le16 beaconperiod;
        u8 dtimperiod;
        __le64 timestamp;
        __le64 localtime;
-       union ieeetypes_phyparamset phyparamset;
-       union IEEEtypes_ssparamset ssparamset;
+       struct ieee_ie_ds_param_set ds;
+       u8 reserved1[4];
+       struct ieee_ie_ibss_param_set ibss;
+       u8 reserved2[4];
        __le16 capability;
        u8 rates[MAX_RATES];
 
@@ -540,10 +577,15 @@ struct adhoc_bssdesc {
 } __attribute__ ((packed));
 
 struct cmd_ds_802_11_ad_hoc_join {
+       struct cmd_header hdr;
+
        struct adhoc_bssdesc bss;
-       __le16 failtimeout;
-       __le16 probedelay;
+       __le16 failtimeout;   /* Reserved on v9 and later */
+       __le16 probedelay;    /* Reserved on v9 and later */
+} __attribute__ ((packed));
 
+struct cmd_ds_802_11_ad_hoc_stop {
+       struct cmd_header hdr;
 } __attribute__ ((packed));
 
 struct cmd_ds_802_11_enable_rsn {
@@ -571,15 +613,38 @@ struct MrvlIEtype_keyParamSet {
 
        /* key material of size keylen */
        u8 key[32];
-};
+} __attribute__ ((packed));
+
+#define MAX_WOL_RULES          16
+
+struct host_wol_rule {
+       uint8_t rule_no;
+       uint8_t rule_ops;
+       __le16 sig_offset;
+       __le16 sig_length;
+       __le16 reserve;
+       __be32 sig_mask;
+       __be32 signature;
+} __attribute__ ((packed));
+
+struct wol_config {
+       uint8_t action;
+       uint8_t pattern;
+       uint8_t no_rules_in_cmd;
+       uint8_t result;
+       struct host_wol_rule rule[MAX_WOL_RULES];
+} __attribute__ ((packed));
 
 struct cmd_ds_host_sleep {
        struct cmd_header hdr;
        __le32 criteria;
        uint8_t gpio;
-       uint8_t gap;
+       uint16_t gap;
+       struct wol_config wol_conf;
 } __attribute__ ((packed));
 
+
+
 struct cmd_ds_802_11_key_material {
        struct cmd_header hdr;
 
@@ -598,14 +663,28 @@ struct cmd_ds_802_11_eeprom_access {
 } __attribute__ ((packed));
 
 struct cmd_ds_802_11_tpc_cfg {
+       struct cmd_header hdr;
+
+       __le16 action;
+       uint8_t enable;
+       int8_t P0;
+       int8_t P1;
+       int8_t P2;
+       uint8_t usesnr;
+} __attribute__ ((packed));
+
+
+struct cmd_ds_802_11_pa_cfg {
+       struct cmd_header hdr;
+
        __le16 action;
-       u8 enable;
-       s8 P0;
-       s8 P1;
-       s8 P2;
-       u8 usesnr;
+       uint8_t enable;
+       int8_t P0;
+       int8_t P1;
+       int8_t P2;
 } __attribute__ ((packed));
 
+
 struct cmd_ds_802_11_led_ctrl {
        __le16 action;
        __le16 numled;
@@ -693,24 +772,12 @@ struct cmd_ds_command {
        /* command Body */
        union {
                struct cmd_ds_802_11_ps_mode psmode;
-               struct cmd_ds_802_11_associate associate;
-               struct cmd_ds_802_11_deauthenticate deauth;
-               struct cmd_ds_802_11_ad_hoc_start ads;
-               struct cmd_ds_802_11_reset reset;
-               struct cmd_ds_802_11_ad_hoc_result result;
-               struct cmd_ds_802_11_authenticate auth;
                struct cmd_ds_802_11_get_stat gstat;
                struct cmd_ds_802_3_get_stat gstat_8023;
-               struct cmd_ds_802_11_snmp_mib smib;
-               struct cmd_ds_802_11_rf_tx_power txp;
                struct cmd_ds_802_11_rf_antenna rant;
                struct cmd_ds_802_11_monitor_mode monitor;
-               struct cmd_ds_802_11_rate_adapt_rateset rateset;
-               struct cmd_ds_mac_multicast_adr madr;
-               struct cmd_ds_802_11_ad_hoc_join adj;
                struct cmd_ds_802_11_rssi rssi;
                struct cmd_ds_802_11_rssi_rsp rssirsp;
-               struct cmd_ds_802_11_disassociate dassociate;
                struct cmd_ds_mac_reg_access macreg;
                struct cmd_ds_bbp_reg_access bbpreg;
                struct cmd_ds_rf_reg_access rfreg;