AM243x MCU+ SDK  09.02.00
enet_mod_tas.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Texas Instruments Incorporated 2021
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
47 #ifndef ENET_MOD_TAS_H_
48 #define ENET_MOD_TAS_H_
49 
50 /* ========================================================================== */
51 /* Include Files */
52 /* ========================================================================== */
53 
54 #include <stdint.h>
55 #include <include/core/enet_mod.h>
56 
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60 
61 /* ========================================================================== */
62 /* Macros */
63 /* ========================================================================== */
64 
66 #define ENET_TAS_PUBLIC_IOCTL(x) (ENET_IOCTL_TYPE_PUBLIC | \
67  ENET_IOCTL_TAS_BASE | \
68  ENET_IOCTL_MIN(x))
69 
71 #define ENET_TAS_GATE_MASK(tc7, tc6, tc5, tc4, tc3, tc2, tc1, tc0) \
72  (((((tc7) != 0U) ? 1U : 0U) << 7U) | \
73  ((((tc6) != 0U) ? 1U : 0U) << 6U) | \
74  ((((tc5) != 0U) ? 1U : 0U) << 5U) | \
75  ((((tc4) != 0U) ? 1U : 0U) << 4U) | \
76  ((((tc3) != 0U) ? 1U : 0U) << 3U) | \
77  ((((tc2) != 0U) ? 1U : 0U) << 2U) | \
78  ((((tc1) != 0U) ? 1U : 0U) << 1U) | \
79  ((((tc0) != 0U) ? 1U : 0U) << 0U))
80 
82 #define ENET_TAS_MAX_CMD_LISTS (16)
83 
85 #define ENET_TAS_MAX_NUM_QUEUES (8)
86 
87 /* ========================================================================== */
88 /* Structures and Enums */
89 /* ========================================================================== */
90 
94 typedef enum EnetTas_Ioctl_e
95 {
106 
117 
133 
144 
155 
166 
177 
188 } EnetTas_Ioctl;
189 
193 typedef struct EnetTas_GenericInArgs_s
194 {
198 
202 typedef enum EnetTas_OperStatus_s
203 {
206 
210 
214 typedef enum EnetTas_TasState_s
215 {
218 
221 
225 
229 typedef struct EnetTas_GateCmdEntry_s
230 {
232  uint32_t timeInterval;
233 
235  uint8_t gateStateMask;
237 
241 typedef struct EnetTas_MaxSDUTable_s
242 {
244  uint16_t maxSDU[ENET_TAS_MAX_NUM_QUEUES];
246 
250 typedef struct EnetTas_ControlList_s
251 {
255  uint64_t baseTime;
256 
259 
261  uint64_t cycleTime;
262 
264  uint8_t listLength;
265 
269 
273 typedef struct EnetTas_ConfigStatus_s
274 {
277 
281 
283  uint8_t configPending;
284 
287  uint8_t configChange;
289 
293 typedef struct EnetTas_SetAdminListInArgs_s
294 {
297 
301 
305 typedef struct EnetTas_SetStateInArgs_s
306 {
309 
313 
314 /* ========================================================================== */
315 /* Global Variables Declarations */
316 /* ========================================================================== */
317 
318 /* None */
319 
320 /* ========================================================================== */
321 /* Function Declarations */
322 /* ========================================================================== */
323 
324 /* None */
325 
326 /* ========================================================================== */
327 /* Deprecated Function Declarations */
328 /* ========================================================================== */
329 
330 /* None */
331 
332 /* ========================================================================== */
333 /* Static Function Definitions */
334 /* ========================================================================== */
335 
336 /* None */
337 
338 #ifdef __cplusplus
339 }
340 #endif
341 
342 #endif /* ENET_MOD_TAS_H_ */
343 
EnetTas_GateCmdEntry::timeInterval
uint32_t timeInterval
Definition: enet_mod_tas.h:232
EnetTas_ControlList::listLength
uint8_t listLength
Definition: enet_mod_tas.h:264
EnetTas_ConfigStatus
Config state machine variables. See IEEE Std 802.1Q-2018 8.6.8.4.
Definition: enet_mod_tas.h:274
EnetTas_GenericInArgs
Generic input args.
Definition: enet_mod_tas.h:194
ENET_TAS_MAX_CMD_LISTS
#define ENET_TAS_MAX_CMD_LISTS
Maximum number of gate command entries in each list.
Definition: enet_mod_tas.h:82
EnetTas_TasState
EnetTas_TasState
TAS state types.
Definition: enet_mod_tas.h:215
EnetTas_SetStateInArgs
Input args for ENET_TAS_IOCTL_SET_STATE commands.
Definition: enet_mod_tas.h:306
EnetTas_ControlList::cycleTime
uint64_t cycleTime
Definition: enet_mod_tas.h:261
EnetTas_ConfigStatus::configChangeTime
uint64_t configChangeTime
Definition: enet_mod_tas.h:276
EnetTas_ConfigStatus::configPending
uint8_t configPending
Definition: enet_mod_tas.h:283
ENET_TAS_IOCTL_GET_OPER_LIST_STATUS
@ ENET_TAS_IOCTL_GET_OPER_LIST_STATUS
Get the status of the operational list update.
Definition: enet_mod_tas.h:132
EnetTas_ConfigStatus::configChangeErrorCounter
uint32_t configChangeErrorCounter
Definition: enet_mod_tas.h:280
Enet_MacPort
Enet_MacPort
MAC port.
Definition: enet_types.h:409
ENET_TAS_IOCTL_GET_ADMIN_LIST
@ ENET_TAS_IOCTL_GET_ADMIN_LIST
Get the admin list parameters of the TAS module.
Definition: enet_mod_tas.h:165
EnetTas_SetAdminListInArgs::adminList
EnetTas_ControlList adminList
Definition: enet_mod_tas.h:299
EnetTas_MaxSDUTable
Max SDU table. See IEEE Std 802.1Q-2018 12.29.1.1.
Definition: enet_mod_tas.h:242
ENET_TAS_OPER_LIST_NOT_YET_UPDATED
@ ENET_TAS_OPER_LIST_NOT_YET_UPDATED
Definition: enet_mod_tas.h:205
EnetTas_SetAdminListInArgs
Input args for ENET_TAS_IOCTL_SET_ADMIN_LIST commands.
Definition: enet_mod_tas.h:294
EnetTas_ControlList
Gate control list. See IEEE Std 802.1Q-2018 8.6.9.4 D3-1.
Definition: enet_mod_tas.h:251
EnetTas_SetStateInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_tas.h:308
ENET_TAS_IOCTL_CONFIG_CHANGE_STATUS_PARAMS
@ ENET_TAS_IOCTL_CONFIG_CHANGE_STATUS_PARAMS
Get the TAS config change status parameters.
Definition: enet_mod_tas.h:187
EnetTas_Ioctl
EnetTas_Ioctl
TAS module IOCTL commands.
Definition: enet_mod_tas.h:95
ENET_TAS_IOCTL_GET_OPER_LIST
@ ENET_TAS_IOCTL_GET_OPER_LIST
Get the operational list parameters of the TAS module.
Definition: enet_mod_tas.h:176
EnetTas_ControlList::sduTable
EnetTas_MaxSDUTable sduTable
Definition: enet_mod_tas.h:267
EnetTas_OperStatus
EnetTas_OperStatus
TAS state types.
Definition: enet_mod_tas.h:203
ENET_TAS_MAX_NUM_QUEUES
#define ENET_TAS_MAX_NUM_QUEUES
Maximum number of transmit queues supported by implementation.
Definition: enet_mod_tas.h:85
ENET_TAS_OPER_LIST_UPDATED
@ ENET_TAS_OPER_LIST_UPDATED
Definition: enet_mod_tas.h:208
EnetTas_GenericInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_tas.h:196
ENET_TAS_PUBLIC_IOCTL
#define ENET_TAS_PUBLIC_IOCTL(x)
Helper macro to create IOCTL commands for TAS module.
Definition: enet_mod_tas.h:66
EnetTas_ConfigStatus::configChange
uint8_t configChange
Definition: enet_mod_tas.h:287
ENET_TAS_IOCTL_SET_STATE
@ ENET_TAS_IOCTL_SET_STATE
Set the state of the TAS module.
Definition: enet_mod_tas.h:143
EnetTas_SetAdminListInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_tas.h:296
EnetTas_SetStateInArgs::state
EnetTas_TasState state
Definition: enet_mod_tas.h:311
EnetTas_GateCmdEntry
Gate control list. See IEEE Std 802.1Q-2018 8.6.8.4.
Definition: enet_mod_tas.h:230
enet_mod.h
This file contains the type definitions and helper macros for the Enet Module interface.
EnetTas_GateCmdEntry::gateStateMask
uint8_t gateStateMask
Definition: enet_mod_tas.h:235
ENET_TAS_IOCTL_GET_VERSION
@ ENET_TAS_IOCTL_GET_VERSION
Get the hardware version of the TAS module.
Definition: enet_mod_tas.h:105
ENET_TAS_ENABLE
@ ENET_TAS_ENABLE
Definition: enet_mod_tas.h:220
ENET_TAS_IOCTL_GET_STATE
@ ENET_TAS_IOCTL_GET_STATE
Get the state of the TAS module.
Definition: enet_mod_tas.h:154
ENET_TAS_RESET
@ ENET_TAS_RESET
Definition: enet_mod_tas.h:223
EnetTas_ControlList::baseTime
uint64_t baseTime
Definition: enet_mod_tas.h:255
ENET_TAS_IOCTL_SET_ADMIN_LIST
@ ENET_TAS_IOCTL_SET_ADMIN_LIST
Set the admin list parameters of the TAS module.
Definition: enet_mod_tas.h:116
ENET_TAS_DISABLE
@ ENET_TAS_DISABLE
Definition: enet_mod_tas.h:217