/***************************************************************************** (c) Cambridge Silicon Radio Limited 2011 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_PRIM_H__ #define CSR_WIFI_ROUTER_PRIM_H__ #include #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_PRIM (0x0400) typedef CsrPrim CsrWifiRouterPrim; typedef void (*CsrWifiRouterFrameFreeFunction)(void *frame); /******************************************************************************* NAME CsrWifiRouterAppType DESCRIPTION VALUES CSR_WIFI_ROUTER_APP_TYPE_SME - CSR_WIFI_ROUTER_APP_TYPE_PAL - CSR_WIFI_ROUTER_APP_TYPE_NME - CSR_WIFI_ROUTER_APP_TYPE_OTHER - *******************************************************************************/ typedef u8 CsrWifiRouterAppType; #define CSR_WIFI_ROUTER_APP_TYPE_SME ((CsrWifiRouterAppType) 0x0) #define CSR_WIFI_ROUTER_APP_TYPE_PAL ((CsrWifiRouterAppType) 0x1) #define CSR_WIFI_ROUTER_APP_TYPE_NME ((CsrWifiRouterAppType) 0x2) #define CSR_WIFI_ROUTER_APP_TYPE_OTHER ((CsrWifiRouterAppType) 0x3) /******************************************************************************* NAME CsrWifiRouterEncapsulation DESCRIPTION Indicates the type of encapsulation used for the subscription VALUES CSR_WIFI_ROUTER_ENCAPSULATION_ETHERNET - Ethernet encapsulation CSR_WIFI_ROUTER_ENCAPSULATION_LLC_SNAP - LLC/SNAP encapsulation *******************************************************************************/ typedef u8 CsrWifiRouterEncapsulation; #define CSR_WIFI_ROUTER_ENCAPSULATION_ETHERNET ((CsrWifiRouterEncapsulation) 0x00) #define CSR_WIFI_ROUTER_ENCAPSULATION_LLC_SNAP ((CsrWifiRouterEncapsulation) 0x01) /******************************************************************************* NAME CsrWifiRouterOui DESCRIPTION VALUES CSR_WIFI_ROUTER_OUI_RFC_1042 - CSR_WIFI_ROUTER_OUI_BT - *******************************************************************************/ typedef u32 CsrWifiRouterOui; #define CSR_WIFI_ROUTER_OUI_RFC_1042 ((CsrWifiRouterOui) 0x000000) #define CSR_WIFI_ROUTER_OUI_BT ((CsrWifiRouterOui) 0x001958) /******************************************************************************* NAME CsrWifiRouterPriority DESCRIPTION As defined in the IEEE 802.11 standards VALUES CSR_WIFI_ROUTER_PRIORITY_QOS_UP0 - See IEEE 802.11 Standard CSR_WIFI_ROUTER_PRIORITY_QOS_UP1 - See IEEE 802.11 Standard CSR_WIFI_ROUTER_PRIORITY_QOS_UP2 - See IEEE 802.11 Standard CSR_WIFI_ROUTER_PRIORITY_QOS_UP3 - See IEEE 802.11 Standard CSR_WIFI_ROUTER_PRIORITY_QOS_UP4 - See IEEE 802.11 Standard CSR_WIFI_ROUTER_PRIORITY_QOS_UP5 - See IEEE 802.11 Standard CSR_WIFI_ROUTER_PRIORITY_QOS_UP6 - See IEEE 802.11 Standard CSR_WIFI_ROUTER_PRIORITY_QOS_UP7 - See IEEE 802.11 Standard CSR_WIFI_ROUTER_PRIORITY_CONTENTION - See IEEE 802.11 Standard CSR_WIFI_ROUTER_PRIORITY_MANAGEMENT - See IEEE 802.11 Standard *******************************************************************************/ typedef u16 CsrWifiRouterPriority; #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP0 ((CsrWifiRouterPriority) 0x0000) #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP1 ((CsrWifiRouterPriority) 0x0001) #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP2 ((CsrWifiRouterPriority) 0x0002) #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP3 ((CsrWifiRouterPriority) 0x0003) #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP4 ((CsrWifiRouterPriority) 0x0004) #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP5 ((CsrWifiRouterPriority) 0x0005) #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP6 ((CsrWifiRouterPriority) 0x0006) #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP7 ((CsrWifiRouterPriority) 0x0007) #define CSR_WIFI_ROUTER_PRIORITY_CONTENTION ((CsrWifiRouterPriority) 0x8000) #define CSR_WIFI_ROUTER_PRIORITY_MANAGEMENT ((CsrWifiRouterPriority) 0x8010) /* Downstream */ #define CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST (0x0000) #define CSR_WIFI_ROUTER_MA_PACKET_SUBSCRIBE_REQ ((CsrWifiRouterPrim) (0x0000 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) #define CSR_WIFI_ROUTER_MA_PACKET_UNSUBSCRIBE_REQ ((CsrWifiRouterPrim) (0x0001 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) #define CSR_WIFI_ROUTER_MA_PACKET_REQ ((CsrWifiRouterPrim) (0x0002 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) #define CSR_WIFI_ROUTER_MA_PACKET_RES ((CsrWifiRouterPrim) (0x0003 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) #define CSR_WIFI_ROUTER_MA_PACKET_CANCEL_REQ ((CsrWifiRouterPrim) (0x0004 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) #define CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_HIGHEST (0x0004 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST) /* Upstream */ #define CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST (0x0000 + CSR_PRIM_UPSTREAM) #define CSR_WIFI_ROUTER_MA_PACKET_SUBSCRIBE_CFM ((CsrWifiRouterPrim)(0x0000 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)) #define CSR_WIFI_ROUTER_MA_PACKET_UNSUBSCRIBE_CFM ((CsrWifiRouterPrim)(0x0001 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)) #define CSR_WIFI_ROUTER_MA_PACKET_CFM ((CsrWifiRouterPrim)(0x0002 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)) #define CSR_WIFI_ROUTER_MA_PACKET_IND ((CsrWifiRouterPrim)(0x0003 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)) #define CSR_WIFI_ROUTER_PRIM_UPSTREAM_HIGHEST (0x0003 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST) #define CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_COUNT (CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_HIGHEST + 1 - CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST) #define CSR_WIFI_ROUTER_PRIM_UPSTREAM_COUNT (CSR_WIFI_ROUTER_PRIM_UPSTREAM_HIGHEST + 1 - CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST) /******************************************************************************* NAME CsrWifiRouterMaPacketSubscribeReq DESCRIPTION A task can use this primitive to subscribe for a particular OUI/protocol and transmit and receive frames matching the subscription. NOTE: Multiple subscriptions for a given protocol and OUI will result in the first subscription receiving the data and not the subsequent subscriptions. MEMBERS common - Common header for use with the CsrWifiFsm Module interfaceTag - Interface Identifier; unique identifier of an interface encapsulation - Specifies the encapsulation type, which will be used for the subscription protocol - Together with the OUI, specifies the protocol, which a task wants to subscribe to oui - Specifies the OUI for the protocol, which a task wants to subscribe to *******************************************************************************/ typedef struct { CsrWifiFsmEvent common; u16 interfaceTag; CsrWifiRouterEncapsulation encapsulation; u16 protocol; u32 oui; } CsrWifiRouterMaPacketSubscribeReq; /******************************************************************************* NAME CsrWifiRouterMaPacketUnsubscribeReq DESCRIPTION A task sends this primitive to unsubscribe a subscription MEMBERS common - Common header for use with the CsrWifiFsm Module interfaceTag - Interface Identifier; unique identifier of an interface subscriptionHandle - The handle of the subscription *******************************************************************************/ typedef struct { CsrWifiFsmEvent common; u16 interfaceTag; u8 subscriptionHandle; } CsrWifiRouterMaPacketUnsubscribeReq; /******************************************************************************* NAME CsrWifiRouterMaPacketReq DESCRIPTION A task sends this primitive to transmit a frame. MEMBERS common - Common header for use with the CsrWifiFsm Module interfaceTag - Interface Identifier; unique identifier of an interface subscriptionHandle - The handle of the subscription frameLength - Length of the frame to be sent in bytes frame - Pointer to the frame to be sent freeFunction - Pointer to function to be used to free the frame priority - Priority of the frame, which should be sent hostTag - An application shall set the bits b31..b28 using one of the CSR_WIFI_ROUTER_APP_TYPE_* masks. Bits b0..b27 can be used by the requestor without any restrictions, but the hostTag shall be unique so the hostTag for CSR_WIFI_ROUTER_APP _TYPE_OTHER should be constructured in the following way [ CSR_WIFI_ROUTER_APP_TYPE_OTHER (4 bits) | SubscriptionHandle (8 bits) | Sequence no. (20 bits) ]. If the hostTag is not unique, the behaviour of the system is unpredicatable with respect to data/management frame transfer. cfmRequested - Indicates if the requestor needs a confirm for packet requests sent under this subscription. If set to TRUE, the router will send a confirm, else it will not send any confirm *******************************************************************************/ typedef struct { CsrWifiFsmEvent common; u16 interfaceTag; u8 subscriptionHandle; u16 frameLength; u8 *frame; CsrWifiRouterFrameFreeFunction freeFunction; CsrWifiRouterPriority priority; u32 hostTag; u8 cfmRequested; } CsrWifiRouterMaPacketReq; /******************************************************************************* NAME CsrWifiRouterMaPacketRes DESCRIPTION A task send this primitive to confirm the reception of the received frame. MEMBERS common - Common header for use with the CsrWifiFsm Module interfaceTag - Interface Identifier; unique identifier of an interface subscriptionHandle - The handle of the subscription result - Status of the operation *******************************************************************************/ typedef struct { CsrWifiFsmEvent common; u16 interfaceTag; u8 subscriptionHandle; CsrResult result; } CsrWifiRouterMaPacketRes; /******************************************************************************* NAME CsrWifiRouterMaPacketCancelReq DESCRIPTION This primitive is used to request cancellation of a previously send CsrWifiRouterMaPacketReq. The frame may already have been transmitted so there is no guarantees that the CsrWifiRouterMaPacketCancelReq actually cancels the transmission of the frame in question. If the cancellation fails, the Router will send, if required, CsrWifiRouterMaPacketCfm. If the cancellation succeeds, the Router will not send CsrWifiRouterMaPacketCfm. MEMBERS common - Common header for use with the CsrWifiFsm Module interfaceTag - Interface Identifier; unique identifier of an interface hostTag - The hostTag for the frame, which should be cancelled. priority - Priority of the frame, which should be cancelled peerMacAddress - Destination MAC address of the frame, which should be cancelled *******************************************************************************/ typedef struct { CsrWifiFsmEvent common; u16 interfaceTag; u32 hostTag; CsrWifiRouterPriority priority; CsrWifiMacAddress peerMacAddress; } CsrWifiRouterMaPacketCancelReq; /******************************************************************************* NAME CsrWifiRouterMaPacketSubscribeCfm DESCRIPTION The router sends this primitive to confirm the result of the subscription. MEMBERS common - Common header for use with the CsrWifiFsm Module interfaceTag - Interface Identifier; unique identifier of an interface subscriptionHandle - Handle to the subscription This handle must be used in all subsequent requests status - Status of the operation allocOffset - Size of the offset for the frames of the subscription *******************************************************************************/ typedef struct { CsrWifiFsmEvent common; u16 interfaceTag; u8 subscriptionHandle; CsrResult status; u16 allocOffset; } CsrWifiRouterMaPacketSubscribeCfm; /******************************************************************************* NAME CsrWifiRouterMaPacketUnsubscribeCfm DESCRIPTION The router sends this primitive to confirm the result of the unsubscription. MEMBERS common - Common header for use with the CsrWifiFsm Module interfaceTag - Interface Identifier; unique identifier of an interface status - Status of the operation *******************************************************************************/ typedef struct { CsrWifiFsmEvent common; u16 interfaceTag; CsrResult status; } CsrWifiRouterMaPacketUnsubscribeCfm; /******************************************************************************* NAME CsrWifiRouterMaPacketCfm DESCRIPTION The router sends the primitive to confirm the result of the transmission of the packet of the corresponding CSR_WIFI_ROUTER MA_PACKET_REQ request. MEMBERS common - Common header for use with the CsrWifiFsm Module interfaceTag - Interface Identifier; unique identifier of an interface result - Status of the operation hostTag - The hostTrag will match the hostTag sent in the request. rate - Transmission/Reception rate *******************************************************************************/ typedef struct { CsrWifiFsmEvent common; u16 interfaceTag; CsrResult result; u32 hostTag; u16 rate; } CsrWifiRouterMaPacketCfm; /******************************************************************************* NAME CsrWifiRouterMaPacketInd DESCRIPTION The router sends the primitive to a subscribed task when it receives a frame matching the subscription. MEMBERS common - Common header for use with the CsrWifiFsm Module interfaceTag - Interface Identifier; unique identifier of an interface subscriptionHandle - The handle of the subscription result - Status of the operation frameLength - Length of the received frame in bytes frame - Pointer to the received frame freeFunction - Pointer to function to be used to free the frame rssi - Received signal strength indication in dBm snr - Signal to Noise Ratio rate - Transmission/Reception rate *******************************************************************************/ typedef struct { CsrWifiFsmEvent common; u16 interfaceTag; u8 subscriptionHandle; CsrResult result; u16 frameLength; u8 *frame; CsrWifiRouterFrameFreeFunction freeFunction; s16 rssi; s16 snr; u16 rate; } CsrWifiRouterMaPacketInd; #endif /* CSR_WIFI_ROUTER_PRIM_H__ */