/*****************************************************************************

            (c) Cambridge Silicon Radio Limited 2012
            All rights reserved and confidential information of CSR

            Refer to LICENSE.txt included with this source for details
            on the license terms.

*****************************************************************************/

/* Note: this is an auto-generated file. */

#ifndef CSR_WIFI_ROUTER_CTRL_PRIM_H__
#define CSR_WIFI_ROUTER_CTRL_PRIM_H__

#include <linux/types.h>
#include "csr_prim_defs.h"
#include "csr_sched.h"
#include "csr_wifi_common.h"
#include "csr_result.h"
#include "csr_wifi_fsm_event.h"

#define CSR_WIFI_ROUTER_CTRL_PRIM                                       (0x0401)

typedef CsrPrim CsrWifiRouterCtrlPrim;

typedef CsrResult (*CsrWifiRouterCtrlRawSdioByteWrite)(u8 func, u32 address, u8 data);
typedef CsrResult (*CsrWifiRouterCtrlRawSdioByteRead)(u8 func, u32 address, u8 *pdata);
typedef CsrResult (*CsrWifiRouterCtrlRawSdioFirmwareDownload)(u32 length, const u8 *pdata);
typedef CsrResult (*CsrWifiRouterCtrlRawSdioReset)(void);
typedef CsrResult (*CsrWifiRouterCtrlRawSdioCoreDumpPrepare)(u8 suspendSme);
typedef CsrResult (*CsrWifiRouterCtrlRawSdioByteBlockRead)(u8 func, u32 address, u8 *pdata, u32 length);
typedef CsrResult (*CsrWifiRouterCtrlRawSdioGpRead16)(u8 func, u32 address, u16 *pdata);
typedef CsrResult (*CsrWifiRouterCtrlRawSdioGpWrite16)(u8 func, u32 address, u16 data);

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlBlockAckRole

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_BLOCK_ACK_ORIGINATOR
                   -
    CSR_WIFI_ROUTER_CTRL_BLOCK_ACK_RECIPIENT
                   -

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlBlockAckRole;
#define CSR_WIFI_ROUTER_CTRL_BLOCK_ACK_ORIGINATOR   ((CsrWifiRouterCtrlBlockAckRole) 0x00)
#define CSR_WIFI_ROUTER_CTRL_BLOCK_ACK_RECIPIENT    ((CsrWifiRouterCtrlBlockAckRole) 0x01)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlControlIndication

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_CONTROL_INDICATION_ERROR
                   -
    CSR_WIFI_ROUTER_CTRL_CONTROL_INDICATION_EXIT
                   -
    CSR_WIFI_ROUTER_CTRL_CONTROL_INDICATION_USER_REQUESTED
                   -

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlControlIndication;
#define CSR_WIFI_ROUTER_CTRL_CONTROL_INDICATION_ERROR            ((CsrWifiRouterCtrlControlIndication) 0x01)
#define CSR_WIFI_ROUTER_CTRL_CONTROL_INDICATION_EXIT             ((CsrWifiRouterCtrlControlIndication) 0x02)
#define CSR_WIFI_ROUTER_CTRL_CONTROL_INDICATION_USER_REQUESTED   ((CsrWifiRouterCtrlControlIndication) 0x03)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlListAction

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_LIST_ACTION_GET
                   -
    CSR_WIFI_ROUTER_CTRL_LIST_ACTION_ADD
                   -
    CSR_WIFI_ROUTER_CTRL_LIST_ACTION_REMOVE
                   -
    CSR_WIFI_ROUTER_CTRL_LIST_ACTION_FLUSH
                   -

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlListAction;
#define CSR_WIFI_ROUTER_CTRL_LIST_ACTION_GET      ((CsrWifiRouterCtrlListAction) 0x00)
#define CSR_WIFI_ROUTER_CTRL_LIST_ACTION_ADD      ((CsrWifiRouterCtrlListAction) 0x01)
#define CSR_WIFI_ROUTER_CTRL_LIST_ACTION_REMOVE   ((CsrWifiRouterCtrlListAction) 0x02)
#define CSR_WIFI_ROUTER_CTRL_LIST_ACTION_FLUSH    ((CsrWifiRouterCtrlListAction) 0x03)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlLowPowerMode

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_LOW_POWER_MODE_DISABLED
                   -
    CSR_WIFI_ROUTER_CTRL_LOW_POWER_MODE_ENABLED
                   -

*******************************************************************************/
typedef u16 CsrWifiRouterCtrlLowPowerMode;
#define CSR_WIFI_ROUTER_CTRL_LOW_POWER_MODE_DISABLED   ((CsrWifiRouterCtrlLowPowerMode) 0x0000)
#define CSR_WIFI_ROUTER_CTRL_LOW_POWER_MODE_ENABLED    ((CsrWifiRouterCtrlLowPowerMode) 0x0001)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlMediaStatus

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_MEDIA_STATUS_CONNECTED
                   -
    CSR_WIFI_ROUTER_CTRL_MEDIA_STATUS_DISCONNECTED
                   -

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlMediaStatus;
#define CSR_WIFI_ROUTER_CTRL_MEDIA_STATUS_CONNECTED      ((CsrWifiRouterCtrlMediaStatus) 0x00)
#define CSR_WIFI_ROUTER_CTRL_MEDIA_STATUS_DISCONNECTED   ((CsrWifiRouterCtrlMediaStatus) 0x01)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlMode

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_MODE_NONE    -
    CSR_WIFI_ROUTER_CTRL_MODE_IBSS    -
    CSR_WIFI_ROUTER_CTRL_MODE_STA     -
    CSR_WIFI_ROUTER_CTRL_MODE_AP      -
    CSR_WIFI_ROUTER_CTRL_MODE_MONITOR -
    CSR_WIFI_ROUTER_CTRL_MODE_AMP     -
    CSR_WIFI_ROUTER_CTRL_MODE_P2P     -
    CSR_WIFI_ROUTER_CTRL_MODE_P2PGO   -
    CSR_WIFI_ROUTER_CTRL_MODE_P2PCLI  -

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlMode;
#define CSR_WIFI_ROUTER_CTRL_MODE_NONE      ((CsrWifiRouterCtrlMode) 0x00)
#define CSR_WIFI_ROUTER_CTRL_MODE_IBSS      ((CsrWifiRouterCtrlMode) 0x01)
#define CSR_WIFI_ROUTER_CTRL_MODE_STA       ((CsrWifiRouterCtrlMode) 0x02)
#define CSR_WIFI_ROUTER_CTRL_MODE_AP        ((CsrWifiRouterCtrlMode) 0x03)
#define CSR_WIFI_ROUTER_CTRL_MODE_MONITOR   ((CsrWifiRouterCtrlMode) 0x04)
#define CSR_WIFI_ROUTER_CTRL_MODE_AMP       ((CsrWifiRouterCtrlMode) 0x05)
#define CSR_WIFI_ROUTER_CTRL_MODE_P2P       ((CsrWifiRouterCtrlMode) 0x06)
#define CSR_WIFI_ROUTER_CTRL_MODE_P2PGO     ((CsrWifiRouterCtrlMode) 0x07)
#define CSR_WIFI_ROUTER_CTRL_MODE_P2PCLI    ((CsrWifiRouterCtrlMode) 0x08)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPeerStatus

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_PEER_CONNECTED_ACTIVE
                   -
    CSR_WIFI_ROUTER_CTRL_PEER_CONNECTED_POWER_SAVE
                   -
    CSR_WIFI_ROUTER_CTRL_PEER_DISCONNECTED
                   -

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlPeerStatus;
#define CSR_WIFI_ROUTER_CTRL_PEER_CONNECTED_ACTIVE       ((CsrWifiRouterCtrlPeerStatus) 0x00)
#define CSR_WIFI_ROUTER_CTRL_PEER_CONNECTED_POWER_SAVE   ((CsrWifiRouterCtrlPeerStatus) 0x01)
#define CSR_WIFI_ROUTER_CTRL_PEER_DISCONNECTED           ((CsrWifiRouterCtrlPeerStatus) 0x02)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPortAction

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_PORT_ACTION_8021X_PORT_OPEN
                   -
    CSR_WIFI_ROUTER_CTRL_PORT_ACTION_8021X_PORT_CLOSED_DISCARD
                   -
    CSR_WIFI_ROUTER_CTRL_PORT_ACTION_8021X_PORT_CLOSED_BLOCK
                   -

*******************************************************************************/
typedef u16 CsrWifiRouterCtrlPortAction;
#define CSR_WIFI_ROUTER_CTRL_PORT_ACTION_8021X_PORT_OPEN             ((CsrWifiRouterCtrlPortAction) 0x0000)
#define CSR_WIFI_ROUTER_CTRL_PORT_ACTION_8021X_PORT_CLOSED_DISCARD   ((CsrWifiRouterCtrlPortAction) 0x0001)
#define CSR_WIFI_ROUTER_CTRL_PORT_ACTION_8021X_PORT_CLOSED_BLOCK     ((CsrWifiRouterCtrlPortAction) 0x0002)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPowersaveType

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_AC_BK_PS_INFO_PRESENT
                   - If set, AC BK PS info is present in b4 and b5
    CSR_WIFI_ROUTER_CTRL_AC_BE_PS_INFO_PRESENT
                   - If set, AC BE PS info is present in b6 and b7
    CSR_WIFI_ROUTER_CTRL_AC_VI_PS_INFO_PRESENT
                   - If set, AC VI PS info is present in b8 and b9
    CSR_WIFI_ROUTER_CTRL_AC_VO_PS_INFO_PRESENT
                   - If set, AC VO PS info is present in b10 and b11
    CSR_WIFI_ROUTER_CTRL_AC_BK_TRIGGER_ENABLED
                   -
    CSR_WIFI_ROUTER_CTRL_AC_BK_DELIVERY_ENABLED
                   -
    CSR_WIFI_ROUTER_CTRL_AC_BE_TRIGGER_ENABLED
                   -
    CSR_WIFI_ROUTER_CTRL_AC_BE_DELIVERY_ENABLED
                   -
    CSR_WIFI_ROUTER_CTRL_AC_VI_TRIGGER_ENABLED
                   -
    CSR_WIFI_ROUTER_CTRL_AC_VI_DELIVERY_ENABLED
                   -
    CSR_WIFI_ROUTER_CTRL_AC_VO_TRIGGER_ENABLED
                   -
    CSR_WIFI_ROUTER_CTRL_AC_VO_DELIVERY_ENABLED
                   -

*******************************************************************************/
typedef u16 CsrWifiRouterCtrlPowersaveType;
#define CSR_WIFI_ROUTER_CTRL_AC_BK_PS_INFO_PRESENT    ((CsrWifiRouterCtrlPowersaveType) 0x0001)
#define CSR_WIFI_ROUTER_CTRL_AC_BE_PS_INFO_PRESENT    ((CsrWifiRouterCtrlPowersaveType) 0x0002)
#define CSR_WIFI_ROUTER_CTRL_AC_VI_PS_INFO_PRESENT    ((CsrWifiRouterCtrlPowersaveType) 0x0004)
#define CSR_WIFI_ROUTER_CTRL_AC_VO_PS_INFO_PRESENT    ((CsrWifiRouterCtrlPowersaveType) 0x0008)
#define CSR_WIFI_ROUTER_CTRL_AC_BK_TRIGGER_ENABLED    ((CsrWifiRouterCtrlPowersaveType) 0x0010)
#define CSR_WIFI_ROUTER_CTRL_AC_BK_DELIVERY_ENABLED   ((CsrWifiRouterCtrlPowersaveType) 0x0020)
#define CSR_WIFI_ROUTER_CTRL_AC_BE_TRIGGER_ENABLED    ((CsrWifiRouterCtrlPowersaveType) 0x0040)
#define CSR_WIFI_ROUTER_CTRL_AC_BE_DELIVERY_ENABLED   ((CsrWifiRouterCtrlPowersaveType) 0x0080)
#define CSR_WIFI_ROUTER_CTRL_AC_VI_TRIGGER_ENABLED    ((CsrWifiRouterCtrlPowersaveType) 0x0100)
#define CSR_WIFI_ROUTER_CTRL_AC_VI_DELIVERY_ENABLED   ((CsrWifiRouterCtrlPowersaveType) 0x0200)
#define CSR_WIFI_ROUTER_CTRL_AC_VO_TRIGGER_ENABLED    ((CsrWifiRouterCtrlPowersaveType) 0x0400)
#define CSR_WIFI_ROUTER_CTRL_AC_VO_DELIVERY_ENABLED   ((CsrWifiRouterCtrlPowersaveType) 0x0800)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlProtocolDirection

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_PROTOCOL_DIRECTION_RX
                   -
    CSR_WIFI_ROUTER_CTRL_PROTOCOL_DIRECTION_TX
                   -

*******************************************************************************/
typedef u16 CsrWifiRouterCtrlProtocolDirection;
#define CSR_WIFI_ROUTER_CTRL_PROTOCOL_DIRECTION_RX   ((CsrWifiRouterCtrlProtocolDirection) 0x0000)
#define CSR_WIFI_ROUTER_CTRL_PROTOCOL_DIRECTION_TX   ((CsrWifiRouterCtrlProtocolDirection) 0x0001)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlQoSControl

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_QOS_CONTROL_OFF
                   -
    CSR_WIFI_ROUTER_CTRL_QOS_CONTROL_WMM_ON
                   -
    CSR_WIFI_ROUTER_CTRL_QOS_CONTROL_80211_ON
                   -

*******************************************************************************/
typedef u16 CsrWifiRouterCtrlQoSControl;
#define CSR_WIFI_ROUTER_CTRL_QOS_CONTROL_OFF        ((CsrWifiRouterCtrlQoSControl) 0x0000)
#define CSR_WIFI_ROUTER_CTRL_QOS_CONTROL_WMM_ON     ((CsrWifiRouterCtrlQoSControl) 0x0001)
#define CSR_WIFI_ROUTER_CTRL_QOS_CONTROL_80211_ON   ((CsrWifiRouterCtrlQoSControl) 0x0002)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlQueueConfig

  DESCRIPTION
    Defines which Queues are enabled for use.

 VALUES
    CSR_WIFI_ROUTER_CTRL_QUEUE_BE_ENABLE
                   -
    CSR_WIFI_ROUTER_CTRL_QUEUE_BK_ENABLE
                   -
    CSR_WIFI_ROUTER_CTRL_QUEUE_VI_ENABLE
                   -
    CSR_WIFI_ROUTER_CTRL_QUEUE_VO_ENABLE
                   -

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlQueueConfig;
#define CSR_WIFI_ROUTER_CTRL_QUEUE_BE_ENABLE   ((CsrWifiRouterCtrlQueueConfig) 0x01)
#define CSR_WIFI_ROUTER_CTRL_QUEUE_BK_ENABLE   ((CsrWifiRouterCtrlQueueConfig) 0x02)
#define CSR_WIFI_ROUTER_CTRL_QUEUE_VI_ENABLE   ((CsrWifiRouterCtrlQueueConfig) 0x04)
#define CSR_WIFI_ROUTER_CTRL_QUEUE_VO_ENABLE   ((CsrWifiRouterCtrlQueueConfig) 0x08)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficConfigType

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_CONFIG_TYPE_RESET
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_CONFIG_TYPE_FILTER
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_CONFIG_TYPE_CLS
                   -

*******************************************************************************/
typedef u16 CsrWifiRouterCtrlTrafficConfigType;
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_CONFIG_TYPE_RESET    ((CsrWifiRouterCtrlTrafficConfigType) 0x0000)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_CONFIG_TYPE_FILTER   ((CsrWifiRouterCtrlTrafficConfigType) 0x0001)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_CONFIG_TYPE_CLS      ((CsrWifiRouterCtrlTrafficConfigType) 0x0002)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficPacketType

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_NONE
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_EAPOL
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_DHCP
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_DHCP_ACK
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_ARP
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_AIRONET
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_CUSTOM
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_ALL
                   -

*******************************************************************************/
typedef u16 CsrWifiRouterCtrlTrafficPacketType;
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_NONE       ((CsrWifiRouterCtrlTrafficPacketType) 0x0000)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_EAPOL      ((CsrWifiRouterCtrlTrafficPacketType) 0x0001)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_DHCP       ((CsrWifiRouterCtrlTrafficPacketType) 0x0002)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_DHCP_ACK   ((CsrWifiRouterCtrlTrafficPacketType) 0x0004)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_ARP        ((CsrWifiRouterCtrlTrafficPacketType) 0x0008)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_AIRONET    ((CsrWifiRouterCtrlTrafficPacketType) 0x0010)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_CUSTOM     ((CsrWifiRouterCtrlTrafficPacketType) 0x0020)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_PACKET_TYPE_ALL        ((CsrWifiRouterCtrlTrafficPacketType) 0x00FF)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficType

  DESCRIPTION

 VALUES
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_TYPE_OCCASIONAL
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_TYPE_BURSTY
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_TYPE_PERIODIC
                   -
    CSR_WIFI_ROUTER_CTRL_TRAFFIC_TYPE_CONTINUOUS
                   -

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlTrafficType;
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_TYPE_OCCASIONAL   ((CsrWifiRouterCtrlTrafficType) 0x00)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_TYPE_BURSTY       ((CsrWifiRouterCtrlTrafficType) 0x01)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_TYPE_PERIODIC     ((CsrWifiRouterCtrlTrafficType) 0x02)
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_TYPE_CONTINUOUS   ((CsrWifiRouterCtrlTrafficType) 0x03)


/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPeerRecordHandle

  DESCRIPTION

*******************************************************************************/
typedef u32 CsrWifiRouterCtrlPeerRecordHandle;
/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPowersaveTypeMask

  DESCRIPTION
    Mask type for use with the values defined by
    CsrWifiRouterCtrlPowersaveType

*******************************************************************************/
typedef u16 CsrWifiRouterCtrlPowersaveTypeMask;
/*******************************************************************************

  NAME
    CsrWifiRouterCtrlQueueConfigMask

  DESCRIPTION
    Mask type for use with the values defined by CsrWifiRouterCtrlQueueConfig

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlQueueConfigMask;
/*******************************************************************************

  NAME
    CsrWifiRouterCtrlRequestorInfo

  DESCRIPTION

*******************************************************************************/
typedef u16 CsrWifiRouterCtrlRequestorInfo;
/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficStreamId

  DESCRIPTION

*******************************************************************************/
typedef u8 CsrWifiRouterCtrlTrafficStreamId;


/*******************************************************************************

  NAME
    CsrWifiRouterCtrlSmeVersions

  DESCRIPTION

  MEMBERS
    firmwarePatch -
    smeBuild      -
    smeHip        -

*******************************************************************************/
typedef struct
{
    u32      firmwarePatch;
    char *smeBuild;
    u32      smeHip;
} CsrWifiRouterCtrlSmeVersions;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlStaInfo

  DESCRIPTION

  MEMBERS
    wmmOrQosEnabled     -
    powersaveMode       -
    maxSpLength         -
    listenIntervalInTus -

*******************************************************************************/
typedef struct
{
    u8                            wmmOrQosEnabled;
    CsrWifiRouterCtrlPowersaveTypeMask powersaveMode;
    u8                           maxSpLength;
    u16                          listenIntervalInTus;
} CsrWifiRouterCtrlStaInfo;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficFilter

  DESCRIPTION

  MEMBERS
    etherType     -
    ipType        -
    udpSourcePort -
    udpDestPort   -

*******************************************************************************/
typedef struct
{
    u32 etherType;
    u8  ipType;
    u32 udpSourcePort;
    u32 udpDestPort;
} CsrWifiRouterCtrlTrafficFilter;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficStats

  DESCRIPTION

  MEMBERS
    rxMeanRate   - Mean rx data rate over the interval
    rxFramesNum  - Keep number of Rx frames per second, for CYCLE_3.
    txFramesNum  - Keep number of Tx frames per second, for CYCLE_3.
    rxBytesCount - Keep calculated Rx throughput per second, for CYCLE_2.
    txBytesCount - Keep calculated Tx throughput per second, for CYCLE_2.
    intervals    - array size 11 MUST match TA_INTERVALS_NUM

*******************************************************************************/
typedef struct
{
    u32 rxMeanRate;
    u32 rxFramesNum;
    u32 txFramesNum;
    u32 rxBytesCount;
    u32 txBytesCount;
    u8  intervals[11];
} CsrWifiRouterCtrlTrafficStats;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlVersions

  DESCRIPTION

  MEMBERS
    chipId        -
    chipVersion   -
    firmwareBuild -
    firmwareHip   -
    routerBuild   -
    routerHip     -

*******************************************************************************/
typedef struct
{
    u32      chipId;
    u32      chipVersion;
    u32      firmwareBuild;
    u32      firmwareHip;
    char *routerBuild;
    u32      routerHip;
} CsrWifiRouterCtrlVersions;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficConfig

  DESCRIPTION

  MEMBERS
    packetFilter -
    customFilter -

*******************************************************************************/
typedef struct
{
    u16                      packetFilter;
    CsrWifiRouterCtrlTrafficFilter customFilter;
} CsrWifiRouterCtrlTrafficConfig;


/* Downstream */
#define CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST            (0x0000)

#define CSR_WIFI_ROUTER_CTRL_CONFIGURE_POWER_MODE_REQ     ((CsrWifiRouterCtrlPrim) (0x0000 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_HIP_REQ                      ((CsrWifiRouterCtrlPrim) (0x0001 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_MEDIA_STATUS_REQ             ((CsrWifiRouterCtrlPrim) (0x0002 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_MULTICAST_ADDRESS_RES        ((CsrWifiRouterCtrlPrim) (0x0003 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_PORT_CONFIGURE_REQ           ((CsrWifiRouterCtrlPrim) (0x0004 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_QOS_CONTROL_REQ              ((CsrWifiRouterCtrlPrim) (0x0005 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_SUSPEND_RES                  ((CsrWifiRouterCtrlPrim) (0x0006 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_TCLAS_ADD_REQ                ((CsrWifiRouterCtrlPrim) (0x0007 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_RESUME_RES                   ((CsrWifiRouterCtrlPrim) (0x0008 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_RAW_SDIO_DEINITIALISE_REQ    ((CsrWifiRouterCtrlPrim) (0x0009 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_RAW_SDIO_INITIALISE_REQ      ((CsrWifiRouterCtrlPrim) (0x000A + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_TCLAS_DEL_REQ                ((CsrWifiRouterCtrlPrim) (0x000B + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_CLASSIFICATION_REQ   ((CsrWifiRouterCtrlPrim) (0x000C + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_CONFIG_REQ           ((CsrWifiRouterCtrlPrim) (0x000D + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WIFI_OFF_REQ                 ((CsrWifiRouterCtrlPrim) (0x000E + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WIFI_OFF_RES                 ((CsrWifiRouterCtrlPrim) (0x000F + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WIFI_ON_REQ                  ((CsrWifiRouterCtrlPrim) (0x0010 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WIFI_ON_RES                  ((CsrWifiRouterCtrlPrim) (0x0011 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_M4_TRANSMIT_REQ              ((CsrWifiRouterCtrlPrim) (0x0012 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_MODE_SET_REQ                 ((CsrWifiRouterCtrlPrim) (0x0013 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_PEER_ADD_REQ                 ((CsrWifiRouterCtrlPrim) (0x0014 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_PEER_DEL_REQ                 ((CsrWifiRouterCtrlPrim) (0x0015 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_PEER_UPDATE_REQ              ((CsrWifiRouterCtrlPrim) (0x0016 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_CAPABILITIES_REQ             ((CsrWifiRouterCtrlPrim) (0x0017 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_BLOCK_ACK_ENABLE_REQ         ((CsrWifiRouterCtrlPrim) (0x0018 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_BLOCK_ACK_DISABLE_REQ        ((CsrWifiRouterCtrlPrim) (0x0019 + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WAPI_RX_PKT_REQ              ((CsrWifiRouterCtrlPrim) (0x001A + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WAPI_MULTICAST_FILTER_REQ    ((CsrWifiRouterCtrlPrim) (0x001B + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WAPI_UNICAST_FILTER_REQ      ((CsrWifiRouterCtrlPrim) (0x001C + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WAPI_UNICAST_TX_PKT_REQ      ((CsrWifiRouterCtrlPrim) (0x001D + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WAPI_FILTER_REQ              ((CsrWifiRouterCtrlPrim) (0x001E + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST))


#define CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_HIGHEST           (0x001E + CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST)

/* Upstream */
#define CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST              (0x0000 + CSR_PRIM_UPSTREAM)

#define CSR_WIFI_ROUTER_CTRL_HIP_IND                      ((CsrWifiRouterCtrlPrim)(0x0000 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_MULTICAST_ADDRESS_IND        ((CsrWifiRouterCtrlPrim)(0x0001 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_PORT_CONFIGURE_CFM           ((CsrWifiRouterCtrlPrim)(0x0002 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_RESUME_IND                   ((CsrWifiRouterCtrlPrim)(0x0003 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_SUSPEND_IND                  ((CsrWifiRouterCtrlPrim)(0x0004 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_TCLAS_ADD_CFM                ((CsrWifiRouterCtrlPrim)(0x0005 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_RAW_SDIO_DEINITIALISE_CFM    ((CsrWifiRouterCtrlPrim)(0x0006 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_RAW_SDIO_INITIALISE_CFM      ((CsrWifiRouterCtrlPrim)(0x0007 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_TCLAS_DEL_CFM                ((CsrWifiRouterCtrlPrim)(0x0008 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_PROTOCOL_IND         ((CsrWifiRouterCtrlPrim)(0x0009 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_TRAFFIC_SAMPLE_IND           ((CsrWifiRouterCtrlPrim)(0x000A + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WIFI_OFF_IND                 ((CsrWifiRouterCtrlPrim)(0x000B + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WIFI_OFF_CFM                 ((CsrWifiRouterCtrlPrim)(0x000C + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WIFI_ON_IND                  ((CsrWifiRouterCtrlPrim)(0x000D + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WIFI_ON_CFM                  ((CsrWifiRouterCtrlPrim)(0x000E + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_M4_READY_TO_SEND_IND         ((CsrWifiRouterCtrlPrim)(0x000F + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_M4_TRANSMITTED_IND           ((CsrWifiRouterCtrlPrim)(0x0010 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_MIC_FAILURE_IND              ((CsrWifiRouterCtrlPrim)(0x0011 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_CONNECTED_IND                ((CsrWifiRouterCtrlPrim)(0x0012 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_PEER_ADD_CFM                 ((CsrWifiRouterCtrlPrim)(0x0013 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_PEER_DEL_CFM                 ((CsrWifiRouterCtrlPrim)(0x0014 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_UNEXPECTED_FRAME_IND         ((CsrWifiRouterCtrlPrim)(0x0015 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_PEER_UPDATE_CFM              ((CsrWifiRouterCtrlPrim)(0x0016 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_CAPABILITIES_CFM             ((CsrWifiRouterCtrlPrim)(0x0017 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_BLOCK_ACK_ENABLE_CFM         ((CsrWifiRouterCtrlPrim)(0x0018 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_BLOCK_ACK_DISABLE_CFM        ((CsrWifiRouterCtrlPrim)(0x0019 + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_BLOCK_ACK_ERROR_IND          ((CsrWifiRouterCtrlPrim)(0x001A + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_STA_INACTIVE_IND             ((CsrWifiRouterCtrlPrim)(0x001B + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WAPI_RX_MIC_CHECK_IND        ((CsrWifiRouterCtrlPrim)(0x001C + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_MODE_SET_CFM                 ((CsrWifiRouterCtrlPrim)(0x001D + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))
#define CSR_WIFI_ROUTER_CTRL_WAPI_UNICAST_TX_ENCRYPT_IND  ((CsrWifiRouterCtrlPrim)(0x001E + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST))

#define CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_HIGHEST             (0x001E + CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST)

#define CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_COUNT             (CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_HIGHEST + 1 - CSR_WIFI_ROUTER_CTRL_PRIM_DOWNSTREAM_LOWEST)
#define CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_COUNT               (CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_HIGHEST   + 1 - CSR_WIFI_ROUTER_CTRL_PRIM_UPSTREAM_LOWEST)

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlConfigurePowerModeReq

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -
    mode       -
    wakeHost   -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrWifiRouterCtrlLowPowerMode  mode;
    u8                        wakeHost;
} CsrWifiRouterCtrlConfigurePowerModeReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlHipReq

  DESCRIPTION
    This primitive is used for transferring MLME messages to the HIP.

  MEMBERS
    common            - Common header for use with the CsrWifiFsm Module
    mlmeCommandLength - Length of the MLME signal
    mlmeCommand       - Pointer to the MLME signal
    dataRef1Length    - Length of the dataRef1 bulk data
    dataRef1          - Pointer to the bulk data 1
    dataRef2Length    - Length of the dataRef2 bulk data
    dataRef2          - Pointer to the bulk data 2

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent common;
    u16       mlmeCommandLength;
    u8       *mlmeCommand;
    u16       dataRef1Length;
    u8       *dataRef1;
    u16       dataRef2Length;
    u8       *dataRef2;
} CsrWifiRouterCtrlHipReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlMediaStatusReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    clientData   -
    mediaStatus  -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    u16                      interfaceTag;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrWifiRouterCtrlMediaStatus   mediaStatus;
} CsrWifiRouterCtrlMediaStatusReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlMulticastAddressRes

  DESCRIPTION

  MEMBERS
    common            - Common header for use with the CsrWifiFsm Module
    interfaceTag      -
    clientData        -
    status            -
    action            -
    getAddressesCount -
    getAddresses      -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    u16                      interfaceTag;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrResult                      status;
    CsrWifiRouterCtrlListAction    action;
    u8                       getAddressesCount;
    CsrWifiMacAddress             *getAddresses;
} CsrWifiRouterCtrlMulticastAddressRes;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPortConfigureReq

  DESCRIPTION

  MEMBERS
    common                 - Common header for use with the CsrWifiFsm Module
    interfaceTag           -
    clientData             -
    uncontrolledPortAction -
    controlledPortAction   -
    macAddress             -
    setProtection          -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    u16                      interfaceTag;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrWifiRouterCtrlPortAction    uncontrolledPortAction;
    CsrWifiRouterCtrlPortAction    controlledPortAction;
    CsrWifiMacAddress              macAddress;
    u8                        setProtection;
} CsrWifiRouterCtrlPortConfigureReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlQosControlReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    clientData   -
    control      -
    queueConfig  -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                  common;
    u16                        interfaceTag;
    CsrWifiRouterCtrlRequestorInfo   clientData;
    CsrWifiRouterCtrlQoSControl      control;
    CsrWifiRouterCtrlQueueConfigMask queueConfig;
} CsrWifiRouterCtrlQosControlReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlSuspendRes

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -
    status     -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrResult                      status;
} CsrWifiRouterCtrlSuspendRes;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTclasAddReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    clientData   -
    tclasLength  -
    tclas        -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    u16                      interfaceTag;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      tclasLength;
    u8                      *tclas;
} CsrWifiRouterCtrlTclasAddReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlResumeRes

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -
    status     -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrResult                      status;
} CsrWifiRouterCtrlResumeRes;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlRawSdioDeinitialiseReq

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
} CsrWifiRouterCtrlRawSdioDeinitialiseReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlRawSdioInitialiseReq

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
} CsrWifiRouterCtrlRawSdioInitialiseReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTclasDelReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    clientData   -
    tclasLength  -
    tclas        -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    u16                      interfaceTag;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      tclasLength;
    u8                      *tclas;
} CsrWifiRouterCtrlTclasDelReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficClassificationReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    clientData   -
    trafficType  -
    period       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    u16                      interfaceTag;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrWifiRouterCtrlTrafficType   trafficType;
    u16                      period;
} CsrWifiRouterCtrlTrafficClassificationReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficConfigReq

  DESCRIPTION

  MEMBERS
    common            - Common header for use with the CsrWifiFsm Module
    interfaceTag      -
    clientData        -
    trafficConfigType -
    config            -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                    common;
    u16                          interfaceTag;
    CsrWifiRouterCtrlRequestorInfo     clientData;
    CsrWifiRouterCtrlTrafficConfigType trafficConfigType;
    CsrWifiRouterCtrlTrafficConfig     config;
} CsrWifiRouterCtrlTrafficConfigReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWifiOffReq

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
} CsrWifiRouterCtrlWifiOffReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWifiOffRes

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
} CsrWifiRouterCtrlWifiOffRes;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWifiOnReq

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -
    dataLength - Number of bytes in the buffer pointed to by 'data'
    data       - Pointer to the buffer containing 'dataLength' bytes

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u32                      dataLength;
    u8                      *data;
} CsrWifiRouterCtrlWifiOnReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWifiOnRes

  DESCRIPTION

  MEMBERS
    common              - Common header for use with the CsrWifiFsm Module
    clientData          -
    status              -
    numInterfaceAddress -
    stationMacAddress   - array size 1 MUST match CSR_WIFI_NUM_INTERFACES
    smeVersions         -
    scheduledInterrupt  -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrResult                      status;
    u16                      numInterfaceAddress;
    CsrWifiMacAddress              stationMacAddress[2];
    CsrWifiRouterCtrlSmeVersions   smeVersions;
    u8                        scheduledInterrupt;
} CsrWifiRouterCtrlWifiOnRes;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlM4TransmitReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    clientData   -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    u16                      interfaceTag;
    CsrWifiRouterCtrlRequestorInfo clientData;
} CsrWifiRouterCtrlM4TransmitReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlModeSetReq

  DESCRIPTION

  MEMBERS
    common              - Common header for use with the CsrWifiFsm Module
    interfaceTag        -
    clientData          -
    mode                -
    bssid               - BSSID of the network the device is going to be a part
                          of
    protection          - Set to TRUE if encryption is enabled for the
                          connection/broadcast frames
    intraBssDistEnabled - If set to TRUE, intra BSS destribution will be
                          enabled. If set to FALSE, any unicast PDU which does
                          not have the RA as the the local MAC address, shall be
                          ignored. This field is interpreted by the receive if
                          mode is set to CSR_WIFI_ROUTER_CTRL_MODE_P2PGO

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    u16                      interfaceTag;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrWifiRouterCtrlMode          mode;
    CsrWifiMacAddress              bssid;
    u8                        protection;
    u8                        intraBssDistEnabled;
} CsrWifiRouterCtrlModeSetReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPeerAddReq

  DESCRIPTION

  MEMBERS
    common         - Common header for use with the CsrWifiFsm Module
    interfaceTag   -
    clientData     -
    peerMacAddress -
    associationId  -
    staInfo        -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    u16                      interfaceTag;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrWifiMacAddress              peerMacAddress;
    u16                      associationId;
    CsrWifiRouterCtrlStaInfo       staInfo;
} CsrWifiRouterCtrlPeerAddReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPeerDelReq

  DESCRIPTION

  MEMBERS
    common           - Common header for use with the CsrWifiFsm Module
    interfaceTag     -
    clientData       -
    peerRecordHandle -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                   common;
    u16                         interfaceTag;
    CsrWifiRouterCtrlRequestorInfo    clientData;
    CsrWifiRouterCtrlPeerRecordHandle peerRecordHandle;
} CsrWifiRouterCtrlPeerDelReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPeerUpdateReq

  DESCRIPTION

  MEMBERS
    common           - Common header for use with the CsrWifiFsm Module
    interfaceTag     -
    clientData       -
    peerRecordHandle -
    powersaveMode    -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                    common;
    u16                          interfaceTag;
    CsrWifiRouterCtrlRequestorInfo     clientData;
    CsrWifiRouterCtrlPeerRecordHandle  peerRecordHandle;
    CsrWifiRouterCtrlPowersaveTypeMask powersaveMode;
} CsrWifiRouterCtrlPeerUpdateReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlCapabilitiesReq

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
} CsrWifiRouterCtrlCapabilitiesReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlBlockAckEnableReq

  DESCRIPTION

  MEMBERS
    common          - Common header for use with the CsrWifiFsm Module
    interfaceTag    -
    clientData      -
    macAddress      -
    trafficStreamID -
    role            -
    bufferSize      -
    timeout         -
    ssn             -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                  common;
    u16                        interfaceTag;
    CsrWifiRouterCtrlRequestorInfo   clientData;
    CsrWifiMacAddress                macAddress;
    CsrWifiRouterCtrlTrafficStreamId trafficStreamID;
    CsrWifiRouterCtrlBlockAckRole    role;
    u16                        bufferSize;
    u16                        timeout;
    u16                        ssn;
} CsrWifiRouterCtrlBlockAckEnableReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlBlockAckDisableReq

  DESCRIPTION

  MEMBERS
    common          - Common header for use with the CsrWifiFsm Module
    interfaceTag    -
    clientData      -
    macAddress      -
    trafficStreamID -
    role            -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                  common;
    u16                        interfaceTag;
    CsrWifiRouterCtrlRequestorInfo   clientData;
    CsrWifiMacAddress                macAddress;
    CsrWifiRouterCtrlTrafficStreamId trafficStreamID;
    CsrWifiRouterCtrlBlockAckRole    role;
} CsrWifiRouterCtrlBlockAckDisableReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWapiRxPktReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    signalLength -
    signal       -
    dataLength   -
    data         -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent common;
    u16       interfaceTag;
    u16       signalLength;
    u8       *signal;
    u16       dataLength;
    u8       *data;
} CsrWifiRouterCtrlWapiRxPktReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWapiMulticastFilterReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    status       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent common;
    u16       interfaceTag;
    u8        status;
} CsrWifiRouterCtrlWapiMulticastFilterReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWapiUnicastFilterReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    status       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent common;
    u16       interfaceTag;
    u8        status;
} CsrWifiRouterCtrlWapiUnicastFilterReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWapiUnicastTxPktReq

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    interfaceTag -
    dataLength   -
    data         -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent common;
    u16       interfaceTag;
    u16       dataLength;
    u8       *data;
} CsrWifiRouterCtrlWapiUnicastTxPktReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWapiFilterReq

  DESCRIPTION

  MEMBERS
    common          - Common header for use with the CsrWifiFsm Module
    interfaceTag    -
    isWapiConnected -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent common;
    u16       interfaceTag;
    u8         isWapiConnected;
} CsrWifiRouterCtrlWapiFilterReq;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlHipInd

  DESCRIPTION
    This primitive is used for transferring MLME messages from the HIP.

  MEMBERS
    common            - Common header for use with the CsrWifiFsm Module
    mlmeCommandLength - Length of the MLME signal
    mlmeCommand       - Pointer to the MLME signal
    dataRef1Length    - Length of the dataRef1 bulk data
    dataRef1          - Pointer to the bulk data 1
    dataRef2Length    - Length of the dataRef2 bulk data
    dataRef2          - Pointer to the bulk data 2

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent common;
    u16       mlmeCommandLength;
    u8       *mlmeCommand;
    u16       dataRef1Length;
    u8       *dataRef1;
    u16       dataRef2Length;
    u8       *dataRef2;
} CsrWifiRouterCtrlHipInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlMulticastAddressInd

  DESCRIPTION

  MEMBERS
    common            - Common header for use with the CsrWifiFsm Module
    clientData        -
    interfaceTag      -
    action            -
    setAddressesCount -
    setAddresses      -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrWifiRouterCtrlListAction    action;
    u8                       setAddressesCount;
    CsrWifiMacAddress             *setAddresses;
} CsrWifiRouterCtrlMulticastAddressInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPortConfigureCfm

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    status       -
    macAddress   -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrResult                      status;
    CsrWifiMacAddress              macAddress;
} CsrWifiRouterCtrlPortConfigureCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlResumeInd

  DESCRIPTION

  MEMBERS
    common          - Common header for use with the CsrWifiFsm Module
    clientData      -
    powerMaintained -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u8                        powerMaintained;
} CsrWifiRouterCtrlResumeInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlSuspendInd

  DESCRIPTION

  MEMBERS
    common      - Common header for use with the CsrWifiFsm Module
    clientData  -
    hardSuspend -
    d3Suspend   -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u8                        hardSuspend;
    u8                        d3Suspend;
} CsrWifiRouterCtrlSuspendInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTclasAddCfm

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    status       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrResult                      status;
} CsrWifiRouterCtrlTclasAddCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlRawSdioDeinitialiseCfm

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -
    result     -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrResult                      result;
} CsrWifiRouterCtrlRawSdioDeinitialiseCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlRawSdioInitialiseCfm

  DESCRIPTION

  MEMBERS
    common           - Common header for use with the CsrWifiFsm Module
    clientData       -
    result           -
    byteRead         -
    byteWrite        -
    firmwareDownload -
    reset            -
    coreDumpPrepare  -
    byteBlockRead    -
    gpRead16         -
    gpWrite16        -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                          common;
    CsrWifiRouterCtrlRequestorInfo           clientData;
    CsrResult                                result;
    CsrWifiRouterCtrlRawSdioByteRead         byteRead;
    CsrWifiRouterCtrlRawSdioByteWrite        byteWrite;
    CsrWifiRouterCtrlRawSdioFirmwareDownload firmwareDownload;
    CsrWifiRouterCtrlRawSdioReset            reset;
    CsrWifiRouterCtrlRawSdioCoreDumpPrepare  coreDumpPrepare;
    CsrWifiRouterCtrlRawSdioByteBlockRead    byteBlockRead;
    CsrWifiRouterCtrlRawSdioGpRead16         gpRead16;
    CsrWifiRouterCtrlRawSdioGpWrite16        gpWrite16;
} CsrWifiRouterCtrlRawSdioInitialiseCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTclasDelCfm

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    status       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrResult                      status;
} CsrWifiRouterCtrlTclasDelCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficProtocolInd

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    packetType   -
    direction    -
    srcAddress   -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                    common;
    CsrWifiRouterCtrlRequestorInfo     clientData;
    u16                          interfaceTag;
    CsrWifiRouterCtrlTrafficPacketType packetType;
    CsrWifiRouterCtrlProtocolDirection direction;
    CsrWifiMacAddress                  srcAddress;
} CsrWifiRouterCtrlTrafficProtocolInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlTrafficSampleInd

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    stats        -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrWifiRouterCtrlTrafficStats  stats;
} CsrWifiRouterCtrlTrafficSampleInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWifiOffInd

  DESCRIPTION

  MEMBERS
    common            - Common header for use with the CsrWifiFsm Module
    clientData        -
    controlIndication -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                    common;
    CsrWifiRouterCtrlRequestorInfo     clientData;
    CsrWifiRouterCtrlControlIndication controlIndication;
} CsrWifiRouterCtrlWifiOffInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWifiOffCfm

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
} CsrWifiRouterCtrlWifiOffCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWifiOnInd

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -
    status     -
    versions   -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrResult                      status;
    CsrWifiRouterCtrlVersions      versions;
} CsrWifiRouterCtrlWifiOnInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWifiOnCfm

  DESCRIPTION

  MEMBERS
    common     - Common header for use with the CsrWifiFsm Module
    clientData -
    status     -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    CsrResult                      status;
} CsrWifiRouterCtrlWifiOnCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlM4ReadyToSendInd

  DESCRIPTION

  MEMBERS
    common         - Common header for use with the CsrWifiFsm Module
    clientData     -
    interfaceTag   -
    peerMacAddress -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrWifiMacAddress              peerMacAddress;
} CsrWifiRouterCtrlM4ReadyToSendInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlM4TransmittedInd

  DESCRIPTION

  MEMBERS
    common         - Common header for use with the CsrWifiFsm Module
    clientData     -
    interfaceTag   -
    peerMacAddress -
    status         -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrWifiMacAddress              peerMacAddress;
    CsrResult                      status;
} CsrWifiRouterCtrlM4TransmittedInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlMicFailureInd

  DESCRIPTION

  MEMBERS
    common         - Common header for use with the CsrWifiFsm Module
    clientData     -
    interfaceTag   -
    peerMacAddress -
    unicastPdu     -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrWifiMacAddress              peerMacAddress;
    u8                        unicastPdu;
} CsrWifiRouterCtrlMicFailureInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlConnectedInd

  DESCRIPTION

  MEMBERS
    common         - Common header for use with the CsrWifiFsm Module
    clientData     -
    interfaceTag   -
    peerMacAddress -
    peerStatus     -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrWifiMacAddress              peerMacAddress;
    CsrWifiRouterCtrlPeerStatus    peerStatus;
} CsrWifiRouterCtrlConnectedInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPeerAddCfm

  DESCRIPTION

  MEMBERS
    common           - Common header for use with the CsrWifiFsm Module
    clientData       -
    interfaceTag     -
    peerMacAddress   -
    peerRecordHandle -
    status           -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                   common;
    CsrWifiRouterCtrlRequestorInfo    clientData;
    u16                         interfaceTag;
    CsrWifiMacAddress                 peerMacAddress;
    CsrWifiRouterCtrlPeerRecordHandle peerRecordHandle;
    CsrResult                         status;
} CsrWifiRouterCtrlPeerAddCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPeerDelCfm

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    status       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrResult                      status;
} CsrWifiRouterCtrlPeerDelCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlUnexpectedFrameInd

  DESCRIPTION

  MEMBERS
    common         - Common header for use with the CsrWifiFsm Module
    clientData     -
    interfaceTag   -
    peerMacAddress -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrWifiMacAddress              peerMacAddress;
} CsrWifiRouterCtrlUnexpectedFrameInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlPeerUpdateCfm

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    status       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrResult                      status;
} CsrWifiRouterCtrlPeerUpdateCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlCapabilitiesCfm

  DESCRIPTION
    The router sends this primitive to confirm the size of the queues of the
    HIP.

  MEMBERS
    common           - Common header for use with the CsrWifiFsm Module
    clientData       -
    commandQueueSize - Size of command queue
    trafficQueueSize - Size of traffic queue (per AC)

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      commandQueueSize;
    u16                      trafficQueueSize;
} CsrWifiRouterCtrlCapabilitiesCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlBlockAckEnableCfm

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    status       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrResult                      status;
} CsrWifiRouterCtrlBlockAckEnableCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlBlockAckDisableCfm

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    status       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrResult                      status;
} CsrWifiRouterCtrlBlockAckDisableCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlBlockAckErrorInd

  DESCRIPTION

  MEMBERS
    common          - Common header for use with the CsrWifiFsm Module
    clientData      -
    interfaceTag    -
    trafficStreamID -
    peerMacAddress  -
    status          -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                  common;
    CsrWifiRouterCtrlRequestorInfo   clientData;
    u16                        interfaceTag;
    CsrWifiRouterCtrlTrafficStreamId trafficStreamID;
    CsrWifiMacAddress                peerMacAddress;
    CsrResult                        status;
} CsrWifiRouterCtrlBlockAckErrorInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlStaInactiveInd

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    staAddress   -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrWifiMacAddress              staAddress;
} CsrWifiRouterCtrlStaInactiveInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWapiRxMicCheckInd

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    signalLength -
    signal       -
    dataLength   -
    data         -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    u16                      signalLength;
    u8                      *signal;
    u16                      dataLength;
    u8                      *data;
} CsrWifiRouterCtrlWapiRxMicCheckInd;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlModeSetCfm

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    mode         -
    status       -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    CsrWifiRouterCtrlMode          mode;
    CsrResult                      status;
} CsrWifiRouterCtrlModeSetCfm;

/*******************************************************************************

  NAME
    CsrWifiRouterCtrlWapiUnicastTxEncryptInd

  DESCRIPTION

  MEMBERS
    common       - Common header for use with the CsrWifiFsm Module
    clientData   -
    interfaceTag -
    dataLength   -
    data         -

*******************************************************************************/
typedef struct
{
    CsrWifiFsmEvent                common;
    CsrWifiRouterCtrlRequestorInfo clientData;
    u16                      interfaceTag;
    u16                      dataLength;
    u8                      *data;
} CsrWifiRouterCtrlWapiUnicastTxEncryptInd;

#endif /* CSR_WIFI_ROUTER_CTRL_PRIM_H__ */

