AM263x MCU+ SDK  08.02.01
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 
88 #define ENET_TAS_MIN_CYCLE_TIME_NS (1000000)
89 
91 #define ENET_TAS_MIN_WINDOW_DURATION_NS (10000)
92 
93 /* ========================================================================== */
94 /* Structures and Enums */
95 /* ========================================================================== */
96 
100 typedef enum EnetTas_Ioctl_e
101 {
112 
123 
139 
150 
161 
172 
183 
194 } EnetTas_Ioctl;
195 
199 typedef struct EnetTas_GenericInArgs_s
200 {
204 
208 typedef enum EnetTas_OperStatus_s
209 {
212 
216 
220 typedef enum EnetTas_TasState_s
221 {
224 
227 
231 
235 typedef struct EnetTas_GateCmdEntry_s
236 {
238  uint32_t timeInterval;
239 
241  uint8_t gateStateMask;
243 
247 typedef struct EnetTas_MaxSDUTable_s
248 {
250  uint16_t maxSDU[ENET_TAS_MAX_NUM_QUEUES];
252 
256 typedef struct EnetTas_ControlList_s
257 {
261  uint64_t baseTime;
262 
265 
267  uint64_t cycleTime;
268 
270  uint8_t listLength;
271 
275 
279 typedef struct EnetTas_ConfigStatus_s
280 {
283 
287 
289  uint8_t configPending;
290 
293  uint8_t configChange;
295 
299 typedef struct EnetTas_SetAdminListInArgs_s
300 {
303 
307 
311 typedef struct EnetTas_SetStateInArgs_s
312 {
315 
319 
320 /* ========================================================================== */
321 /* Global Variables Declarations */
322 /* ========================================================================== */
323 
324 /* None */
325 
326 /* ========================================================================== */
327 /* Function Declarations */
328 /* ========================================================================== */
329 
330 /* None */
331 
332 /* ========================================================================== */
333 /* Deprecated Function Declarations */
334 /* ========================================================================== */
335 
336 /* None */
337 
338 /* ========================================================================== */
339 /* Static Function Definitions */
340 /* ========================================================================== */
341 
342 /* None */
343 
344 #ifdef __cplusplus
345 }
346 #endif
347 
348 #endif /* ENET_MOD_TAS_H_ */
349 
EnetTas_GateCmdEntry::timeInterval
uint32_t timeInterval
Definition: enet_mod_tas.h:238
EnetTas_ControlList::listLength
uint8_t listLength
Definition: enet_mod_tas.h:270
EnetTas_ConfigStatus
Config state machine variables. See IEEE Std 802.1Q-2018 8.6.8.4.
Definition: enet_mod_tas.h:280
EnetTas_GenericInArgs
Generic input args.
Definition: enet_mod_tas.h:200
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:221
EnetTas_SetStateInArgs
Input args for ENET_TAS_IOCTL_SET_STATE commands.
Definition: enet_mod_tas.h:312
EnetTas_ControlList::cycleTime
uint64_t cycleTime
Definition: enet_mod_tas.h:267
EnetTas_ConfigStatus::configChangeTime
uint64_t configChangeTime
Definition: enet_mod_tas.h:282
EnetTas_ConfigStatus::configPending
uint8_t configPending
Definition: enet_mod_tas.h:289
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:138
EnetTas_ConfigStatus::configChangeErrorCounter
uint32_t configChangeErrorCounter
Definition: enet_mod_tas.h:286
Enet_MacPort
Enet_MacPort
MAC port.
Definition: enet_types.h:406
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:171
EnetTas_SetAdminListInArgs::adminList
EnetTas_ControlList adminList
Definition: enet_mod_tas.h:305
EnetTas_MaxSDUTable
Max SDU table. See IEEE Std 802.1Q-2018 12.29.1.1.
Definition: enet_mod_tas.h:248
ENET_TAS_OPER_LIST_NOT_YET_UPDATED
@ ENET_TAS_OPER_LIST_NOT_YET_UPDATED
Definition: enet_mod_tas.h:211
EnetTas_SetAdminListInArgs
Input args for ENET_TAS_IOCTL_SET_ADMIN_LIST commands.
Definition: enet_mod_tas.h:300
EnetTas_ControlList
Gate control list. See IEEE Std 802.1Q-2018 8.6.9.4 D3-1.
Definition: enet_mod_tas.h:257
EnetTas_SetStateInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_tas.h:314
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:193
EnetTas_Ioctl
EnetTas_Ioctl
TAS module IOCTL commands.
Definition: enet_mod_tas.h:101
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:182
EnetTas_ControlList::sduTable
EnetTas_MaxSDUTable sduTable
Definition: enet_mod_tas.h:273
EnetTas_OperStatus
EnetTas_OperStatus
TAS state types.
Definition: enet_mod_tas.h:209
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:214
EnetTas_GenericInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_tas.h:202
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:293
ENET_TAS_IOCTL_SET_STATE
@ ENET_TAS_IOCTL_SET_STATE
Set the state of the TAS module.
Definition: enet_mod_tas.h:149
EnetTas_SetAdminListInArgs::macPort
Enet_MacPort macPort
Definition: enet_mod_tas.h:302
EnetTas_SetStateInArgs::state
EnetTas_TasState state
Definition: enet_mod_tas.h:317
EnetTas_GateCmdEntry
Gate control list. See IEEE Std 802.1Q-2018 8.6.8.4.
Definition: enet_mod_tas.h:236
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:241
ENET_TAS_IOCTL_GET_VERSION
@ ENET_TAS_IOCTL_GET_VERSION
Get the hardware version of the TAS module.
Definition: enet_mod_tas.h:111
ENET_TAS_ENABLE
@ ENET_TAS_ENABLE
Definition: enet_mod_tas.h:226
ENET_TAS_IOCTL_GET_STATE
@ ENET_TAS_IOCTL_GET_STATE
Get the state of the TAS module.
Definition: enet_mod_tas.h:160
ENET_TAS_RESET
@ ENET_TAS_RESET
Definition: enet_mod_tas.h:229
EnetTas_ControlList::baseTime
uint64_t baseTime
Definition: enet_mod_tas.h:261
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:122
ENET_TAS_DISABLE
@ ENET_TAS_DISABLE
Definition: enet_mod_tas.h:223