blob: c52344b51f2f82104e69039bc175eb552ba166d4 [file] [log] [blame]
/*****************************************************************************
(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 <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_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__ */