1 /***************************************************************************** 2 3 (c) Cambridge Silicon Radio Limited 2011 4 All rights reserved and confidential information of CSR 5 6 Refer to LICENSE.txt included with this source for details 7 on the license terms. 8 9 *****************************************************************************/ 10 11 /* Note: this is an auto-generated file. */ 12 13 #ifndef CSR_WIFI_ROUTER_PRIM_H__ 14 #define CSR_WIFI_ROUTER_PRIM_H__ 15 16 #include <linux/types.h> 17 #include "csr_prim_defs.h" 18 #include "csr_sched.h" 19 #include "csr_wifi_common.h" 20 #include "csr_result.h" 21 #include "csr_wifi_fsm_event.h" 22 23 #define CSR_WIFI_ROUTER_PRIM (0x0400) 24 25 typedef CsrPrim CsrWifiRouterPrim; 26 27 typedef void (*CsrWifiRouterFrameFreeFunction)(void *frame); 28 29 /******************************************************************************* 30 31 NAME 32 CsrWifiRouterAppType 33 34 DESCRIPTION 35 36 VALUES 37 CSR_WIFI_ROUTER_APP_TYPE_SME - 38 CSR_WIFI_ROUTER_APP_TYPE_PAL - 39 CSR_WIFI_ROUTER_APP_TYPE_NME - 40 CSR_WIFI_ROUTER_APP_TYPE_OTHER - 41 42 *******************************************************************************/ 43 typedef u8 CsrWifiRouterAppType; 44 #define CSR_WIFI_ROUTER_APP_TYPE_SME ((CsrWifiRouterAppType) 0x0) 45 #define CSR_WIFI_ROUTER_APP_TYPE_PAL ((CsrWifiRouterAppType) 0x1) 46 #define CSR_WIFI_ROUTER_APP_TYPE_NME ((CsrWifiRouterAppType) 0x2) 47 #define CSR_WIFI_ROUTER_APP_TYPE_OTHER ((CsrWifiRouterAppType) 0x3) 48 49 /******************************************************************************* 50 51 NAME 52 CsrWifiRouterEncapsulation 53 54 DESCRIPTION 55 Indicates the type of encapsulation used for the subscription 56 57 VALUES 58 CSR_WIFI_ROUTER_ENCAPSULATION_ETHERNET 59 - Ethernet encapsulation 60 CSR_WIFI_ROUTER_ENCAPSULATION_LLC_SNAP 61 - LLC/SNAP encapsulation 62 63 *******************************************************************************/ 64 typedef u8 CsrWifiRouterEncapsulation; 65 #define CSR_WIFI_ROUTER_ENCAPSULATION_ETHERNET ((CsrWifiRouterEncapsulation) 0x00) 66 #define CSR_WIFI_ROUTER_ENCAPSULATION_LLC_SNAP ((CsrWifiRouterEncapsulation) 0x01) 67 68 /******************************************************************************* 69 70 NAME 71 CsrWifiRouterOui 72 73 DESCRIPTION 74 75 VALUES 76 CSR_WIFI_ROUTER_OUI_RFC_1042 - 77 CSR_WIFI_ROUTER_OUI_BT - 78 79 *******************************************************************************/ 80 typedef u32 CsrWifiRouterOui; 81 #define CSR_WIFI_ROUTER_OUI_RFC_1042 ((CsrWifiRouterOui) 0x000000) 82 #define CSR_WIFI_ROUTER_OUI_BT ((CsrWifiRouterOui) 0x001958) 83 84 /******************************************************************************* 85 86 NAME 87 CsrWifiRouterPriority 88 89 DESCRIPTION 90 As defined in the IEEE 802.11 standards 91 92 VALUES 93 CSR_WIFI_ROUTER_PRIORITY_QOS_UP0 94 - See IEEE 802.11 Standard 95 CSR_WIFI_ROUTER_PRIORITY_QOS_UP1 96 - See IEEE 802.11 Standard 97 CSR_WIFI_ROUTER_PRIORITY_QOS_UP2 98 - See IEEE 802.11 Standard 99 CSR_WIFI_ROUTER_PRIORITY_QOS_UP3 100 - See IEEE 802.11 Standard 101 CSR_WIFI_ROUTER_PRIORITY_QOS_UP4 102 - See IEEE 802.11 Standard 103 CSR_WIFI_ROUTER_PRIORITY_QOS_UP5 104 - See IEEE 802.11 Standard 105 CSR_WIFI_ROUTER_PRIORITY_QOS_UP6 106 - See IEEE 802.11 Standard 107 CSR_WIFI_ROUTER_PRIORITY_QOS_UP7 108 - See IEEE 802.11 Standard 109 CSR_WIFI_ROUTER_PRIORITY_CONTENTION 110 - See IEEE 802.11 Standard 111 CSR_WIFI_ROUTER_PRIORITY_MANAGEMENT 112 - See IEEE 802.11 Standard 113 114 *******************************************************************************/ 115 typedef u16 CsrWifiRouterPriority; 116 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP0 ((CsrWifiRouterPriority) 0x0000) 117 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP1 ((CsrWifiRouterPriority) 0x0001) 118 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP2 ((CsrWifiRouterPriority) 0x0002) 119 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP3 ((CsrWifiRouterPriority) 0x0003) 120 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP4 ((CsrWifiRouterPriority) 0x0004) 121 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP5 ((CsrWifiRouterPriority) 0x0005) 122 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP6 ((CsrWifiRouterPriority) 0x0006) 123 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP7 ((CsrWifiRouterPriority) 0x0007) 124 #define CSR_WIFI_ROUTER_PRIORITY_CONTENTION ((CsrWifiRouterPriority) 0x8000) 125 #define CSR_WIFI_ROUTER_PRIORITY_MANAGEMENT ((CsrWifiRouterPriority) 0x8010) 126 127 128 /* Downstream */ 129 #define CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST (0x0000) 130 131 #define CSR_WIFI_ROUTER_MA_PACKET_SUBSCRIBE_REQ ((CsrWifiRouterPrim) (0x0000 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) 132 #define CSR_WIFI_ROUTER_MA_PACKET_UNSUBSCRIBE_REQ ((CsrWifiRouterPrim) (0x0001 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) 133 #define CSR_WIFI_ROUTER_MA_PACKET_REQ ((CsrWifiRouterPrim) (0x0002 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) 134 #define CSR_WIFI_ROUTER_MA_PACKET_RES ((CsrWifiRouterPrim) (0x0003 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) 135 #define CSR_WIFI_ROUTER_MA_PACKET_CANCEL_REQ ((CsrWifiRouterPrim) (0x0004 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)) 136 137 138 #define CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_HIGHEST (0x0004 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST) 139 140 /* Upstream */ 141 #define CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST (0x0000 + CSR_PRIM_UPSTREAM) 142 143 #define CSR_WIFI_ROUTER_MA_PACKET_SUBSCRIBE_CFM ((CsrWifiRouterPrim)(0x0000 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)) 144 #define CSR_WIFI_ROUTER_MA_PACKET_UNSUBSCRIBE_CFM ((CsrWifiRouterPrim)(0x0001 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)) 145 #define CSR_WIFI_ROUTER_MA_PACKET_CFM ((CsrWifiRouterPrim)(0x0002 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)) 146 #define CSR_WIFI_ROUTER_MA_PACKET_IND ((CsrWifiRouterPrim)(0x0003 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)) 147 148 #define CSR_WIFI_ROUTER_PRIM_UPSTREAM_HIGHEST (0x0003 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST) 149 150 #define CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_COUNT (CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_HIGHEST + 1 - CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST) 151 #define CSR_WIFI_ROUTER_PRIM_UPSTREAM_COUNT (CSR_WIFI_ROUTER_PRIM_UPSTREAM_HIGHEST + 1 - CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST) 152 153 /******************************************************************************* 154 155 NAME 156 CsrWifiRouterMaPacketSubscribeReq 157 158 DESCRIPTION 159 A task can use this primitive to subscribe for a particular OUI/protocol 160 and transmit and receive frames matching the subscription. 161 NOTE: Multiple subscriptions for a given protocol and OUI will result in 162 the first subscription receiving the data and not the subsequent 163 subscriptions. 164 165 MEMBERS 166 common - Common header for use with the CsrWifiFsm Module 167 interfaceTag - Interface Identifier; unique identifier of an interface 168 encapsulation - Specifies the encapsulation type, which will be used for the 169 subscription 170 protocol - Together with the OUI, specifies the protocol, which a task 171 wants to subscribe to 172 oui - Specifies the OUI for the protocol, which a task wants to 173 subscribe to 174 175 *******************************************************************************/ 176 typedef struct 177 { 178 CsrWifiFsmEvent common; 179 u16 interfaceTag; 180 CsrWifiRouterEncapsulation encapsulation; 181 u16 protocol; 182 u32 oui; 183 } CsrWifiRouterMaPacketSubscribeReq; 184 185 /******************************************************************************* 186 187 NAME 188 CsrWifiRouterMaPacketUnsubscribeReq 189 190 DESCRIPTION 191 A task sends this primitive to unsubscribe a subscription 192 193 MEMBERS 194 common - Common header for use with the CsrWifiFsm Module 195 interfaceTag - Interface Identifier; unique identifier of an interface 196 subscriptionHandle - The handle of the subscription 197 198 *******************************************************************************/ 199 typedef struct 200 { 201 CsrWifiFsmEvent common; 202 u16 interfaceTag; 203 u8 subscriptionHandle; 204 } CsrWifiRouterMaPacketUnsubscribeReq; 205 206 /******************************************************************************* 207 208 NAME 209 CsrWifiRouterMaPacketReq 210 211 DESCRIPTION 212 A task sends this primitive to transmit a frame. 213 214 MEMBERS 215 common - Common header for use with the CsrWifiFsm Module 216 interfaceTag - Interface Identifier; unique identifier of an interface 217 subscriptionHandle - The handle of the subscription 218 frameLength - Length of the frame to be sent in bytes 219 frame - Pointer to the frame to be sent 220 freeFunction - Pointer to function to be used to free the frame 221 priority - Priority of the frame, which should be sent 222 hostTag - An application shall set the bits b31..b28 using one of 223 the CSR_WIFI_ROUTER_APP_TYPE_* masks. Bits b0..b27 can 224 be used by the requestor without any restrictions, but 225 the hostTag shall be unique so the hostTag for 226 CSR_WIFI_ROUTER_APP _TYPE_OTHER should be constructured 227 in the following way [ CSR_WIFI_ROUTER_APP_TYPE_OTHER 228 (4 bits) | SubscriptionHandle (8 bits) | Sequence no. 229 (20 bits) ]. If the hostTag is not unique, the 230 behaviour of the system is unpredicatable with respect 231 to data/management frame transfer. 232 cfmRequested - Indicates if the requestor needs a confirm for packet 233 requests sent under this subscription. If set to TRUE, 234 the router will send a confirm, else it will not send 235 any confirm 236 237 *******************************************************************************/ 238 typedef struct 239 { 240 CsrWifiFsmEvent common; 241 u16 interfaceTag; 242 u8 subscriptionHandle; 243 u16 frameLength; 244 u8 *frame; 245 CsrWifiRouterFrameFreeFunction freeFunction; 246 CsrWifiRouterPriority priority; 247 u32 hostTag; 248 u8 cfmRequested; 249 } CsrWifiRouterMaPacketReq; 250 251 /******************************************************************************* 252 253 NAME 254 CsrWifiRouterMaPacketRes 255 256 DESCRIPTION 257 A task send this primitive to confirm the reception of the received 258 frame. 259 260 MEMBERS 261 common - Common header for use with the CsrWifiFsm Module 262 interfaceTag - Interface Identifier; unique identifier of an interface 263 subscriptionHandle - The handle of the subscription 264 result - Status of the operation 265 266 *******************************************************************************/ 267 typedef struct 268 { 269 CsrWifiFsmEvent common; 270 u16 interfaceTag; 271 u8 subscriptionHandle; 272 CsrResult result; 273 } CsrWifiRouterMaPacketRes; 274 275 /******************************************************************************* 276 277 NAME 278 CsrWifiRouterMaPacketCancelReq 279 280 DESCRIPTION 281 This primitive is used to request cancellation of a previously send 282 CsrWifiRouterMaPacketReq. 283 The frame may already have been transmitted so there is no guarantees 284 that the CsrWifiRouterMaPacketCancelReq actually cancels the transmission 285 of the frame in question. 286 If the cancellation fails, the Router will send, if required, 287 CsrWifiRouterMaPacketCfm. 288 If the cancellation succeeds, the Router will not send 289 CsrWifiRouterMaPacketCfm. 290 291 MEMBERS 292 common - Common header for use with the CsrWifiFsm Module 293 interfaceTag - Interface Identifier; unique identifier of an interface 294 hostTag - The hostTag for the frame, which should be cancelled. 295 priority - Priority of the frame, which should be cancelled 296 peerMacAddress - Destination MAC address of the frame, which should be 297 cancelled 298 299 *******************************************************************************/ 300 typedef struct 301 { 302 CsrWifiFsmEvent common; 303 u16 interfaceTag; 304 u32 hostTag; 305 CsrWifiRouterPriority priority; 306 CsrWifiMacAddress peerMacAddress; 307 } CsrWifiRouterMaPacketCancelReq; 308 309 /******************************************************************************* 310 311 NAME 312 CsrWifiRouterMaPacketSubscribeCfm 313 314 DESCRIPTION 315 The router sends this primitive to confirm the result of the 316 subscription. 317 318 MEMBERS 319 common - Common header for use with the CsrWifiFsm Module 320 interfaceTag - Interface Identifier; unique identifier of an interface 321 subscriptionHandle - Handle to the subscription 322 This handle must be used in all subsequent requests 323 status - Status of the operation 324 allocOffset - Size of the offset for the frames of the subscription 325 326 *******************************************************************************/ 327 typedef struct 328 { 329 CsrWifiFsmEvent common; 330 u16 interfaceTag; 331 u8 subscriptionHandle; 332 CsrResult status; 333 u16 allocOffset; 334 } CsrWifiRouterMaPacketSubscribeCfm; 335 336 /******************************************************************************* 337 338 NAME 339 CsrWifiRouterMaPacketUnsubscribeCfm 340 341 DESCRIPTION 342 The router sends this primitive to confirm the result of the 343 unsubscription. 344 345 MEMBERS 346 common - Common header for use with the CsrWifiFsm Module 347 interfaceTag - Interface Identifier; unique identifier of an interface 348 status - Status of the operation 349 350 *******************************************************************************/ 351 typedef struct 352 { 353 CsrWifiFsmEvent common; 354 u16 interfaceTag; 355 CsrResult status; 356 } CsrWifiRouterMaPacketUnsubscribeCfm; 357 358 /******************************************************************************* 359 360 NAME 361 CsrWifiRouterMaPacketCfm 362 363 DESCRIPTION 364 The router sends the primitive to confirm the result of the transmission 365 of the packet of the corresponding CSR_WIFI_ROUTER MA_PACKET_REQ request. 366 367 MEMBERS 368 common - Common header for use with the CsrWifiFsm Module 369 interfaceTag - Interface Identifier; unique identifier of an interface 370 result - Status of the operation 371 hostTag - The hostTrag will match the hostTag sent in the request. 372 rate - Transmission/Reception rate 373 374 *******************************************************************************/ 375 typedef struct 376 { 377 CsrWifiFsmEvent common; 378 u16 interfaceTag; 379 CsrResult result; 380 u32 hostTag; 381 u16 rate; 382 } CsrWifiRouterMaPacketCfm; 383 384 /******************************************************************************* 385 386 NAME 387 CsrWifiRouterMaPacketInd 388 389 DESCRIPTION 390 The router sends the primitive to a subscribed task when it receives a 391 frame matching the subscription. 392 393 MEMBERS 394 common - Common header for use with the CsrWifiFsm Module 395 interfaceTag - Interface Identifier; unique identifier of an interface 396 subscriptionHandle - The handle of the subscription 397 result - Status of the operation 398 frameLength - Length of the received frame in bytes 399 frame - Pointer to the received frame 400 freeFunction - Pointer to function to be used to free the frame 401 rssi - Received signal strength indication in dBm 402 snr - Signal to Noise Ratio 403 rate - Transmission/Reception rate 404 405 *******************************************************************************/ 406 typedef struct 407 { 408 CsrWifiFsmEvent common; 409 u16 interfaceTag; 410 u8 subscriptionHandle; 411 CsrResult result; 412 u16 frameLength; 413 u8 *frame; 414 CsrWifiRouterFrameFreeFunction freeFunction; 415 s16 rssi; 416 s16 snr; 417 u16 rate; 418 } CsrWifiRouterMaPacketInd; 419 420 #endif /* CSR_WIFI_ROUTER_PRIM_H__ */ 421 422