summaryrefslogtreecommitdiffstats
path: root/drivers/staging/csr/csr_wifi_vif_utils.h
blob: 523172d1ac9233239dac53060e87199b0b9bb13e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*****************************************************************************

            (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.

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

#ifndef CSR_WIFI_VIF_UTILS_H
#define CSR_WIFI_VIF_UTILS_H

#ifdef __cplusplus
extern "C" {
#endif

/* STANDARD INCLUDES ********************************************************/

/* PROJECT INCLUDES *********************************************************/
/* including this file for CsrWifiInterfaceMode*/
#include "csr_wifi_private_common.h"

/* MACROS *******************************************************************/

/* Common macros for NME and SME to be used temporarily until SoftMAC changes are made */
#define CSR_WIFI_NUM_INTERFACES        (u8)0x1
#define CSR_WIFI_INTERFACE_IN_USE      (u16)0x0

/* This is used at places where interface Id isn't available*/
#define CSR_WIFI_INTERFACE_ZERO        0
#define CSR_WIFI_INTERFACE_STA         0
#define CSR_WIFI_INTERFACE_AMP         0


#define CSR_WIFI_VIF_UTILS_UNDEFINED_TAG 0xFFFF

/* Extract the Interface Id from the event */
#define CsrWifiVifUtilsGetVifTagFromEvent(msg) \
    ((u16) * ((u16 *) ((u8 *) (msg) + sizeof(CsrWifiFsmEvent))))

/* The HPI Vif combines the type and the interface id */
#define CsrWifiVifUtilsGetVifTagFromHipEvent(msg) \
    ((msg)->virtualInterfaceIdentifier & 0x00FF)

#define CsrWifiVifUtilsPackHipEventVif(type, interfaceId) \
    ((u16)((interfaceId) | ((type) << 8)))


/* TYPES DEFINITIONS ********************************************************/

/* GLOBAL VARIABLE DECLARATIONS *********************************************/

/* PUBLIC FUNCTION PROTOTYPES ***********************************************/

/**
 * @brief
 *     First checks if the mode is supported capability bitmap of the interface.
 *     If this succeeds, then checks if running this mode on this interface is allowed.
 *
 * @param[in] u8 : interface capability bitmap
 * @param[in] u8* : pointer to the array of current interface modes
 * @param[in] u16 : interfaceTag
 * @param[in] CsrWifiInterfaceMode : mode
 *
 * @return
 *     u8 : returns true if the interface is allowed to operate in the mode otherwise false.
 */
extern u8 CsrWifiVifUtilsCheckCompatibility(u8             interfaceCapability,
                                                 u8            *currentInterfaceModes,
                                                 u16            interfaceTag,
                                                 CsrWifiInterfaceMode mode);

/**
 * @brief
 *     Checks if the specified interface is supported.
 *     NOTE: Only checks that the interface is supported, no checks are made to
 *     determine whether a supported interface may be made active.
 *
 * @param[in] u16 : interfaceTag
 *
 * @return
 *     u8 : returns true if the interface is supported, otherwise false.
 */
extern u8 CsrWifiVifUtilsIsSupported(u16 interfaceTag);

#ifdef CSR_LOG_ENABLE
/**
 * @brief
 *     Registers the virtual interface utils logging details.
 *     Should only be called once at initialisation.
 *
 * @param[in/out] None
 *
 * @return
 *     None
 */
void CsrWifiVifUtilsLogTextRegister(void);
#else
#define CsrWifiVifUtilsLogTextRegister()
#endif

#ifdef __cplusplus
}
#endif

#endif /* CSR_WIFI_VIF_UTILS_H */