AM263Px MCU+ SDK: icss_emac.h Source File

| AM263Px MCU+ SDK 26.00.00 |

icss_emac.h
Go to the documentation of this file.
1 /*
2 * Copyright (C) 2021 Texas Instruments Incorporated
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
33 #ifndef ICSS_EMAC_H_
34 #define ICSS_EMAC_H_
35
47 /* ========================================================================== */
48 /* Include Files */
49 /* ========================================================================== */
50
51 #include <stdint.h>
52 #include <kernel/dpl/SystemP.h>
53 #include <drivers/pruicss.h>
54 #include <board/ethphy.h>
55 #include <drivers/hw_include/csl_types.h>
56
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60
61 /* ========================================================================== */
62 /* Macros & Typedefs */
63 /* ========================================================================== */
64
66 #define ICSS_EMAC_MAX_PORTS_PER_INSTANCE (2)
67 #ifdef BUILD_HSR_PRP_MII
68
69 #define ICSS_EMAC_FW_LEARNING_EN (2U)
70
71 #define ICSS_EMAC_LOW_PRIORITY (1U)
72
73 #define ICSS_EMAC_HIGH_PRIORITY (2U)
74 #endif
75
83 #define ICSS_EMAC_MODE_MAC1 (1U)
84
85 #define ICSS_EMAC_MODE_MAC2 (2U)
86
87 #define ICSS_EMAC_MODE_SWITCH (3U)
88
89 #define ICSS_EMAC_MODE_DUALMAC (4U)
90
99 #define ICSS_EMAC_MII_MODE (0U)
100
101 #define ICSS_EMAC_RGMII_MODE (1U)
102
111 #define ICSS_EMAC_LEARNING_DISABLE (0U)
112
113 #define ICSS_EMAC_LEARNING_ENABLE (1U)
114
123 #define ICSS_EMAC_ENABLE_PACING (0)
124
125 #define ICSS_EMAC_DISABLE_PACING (1)
126
135 #define ICSS_EMAC_INTR_PACING_MODE1 (0)
136
145 #define ICSS_EMAC_QUEUE1 ((uint32_t)0U)
146
147 #define ICSS_EMAC_QUEUE2 ((uint32_t)1U)
148
149 #define ICSS_EMAC_QUEUE3 ((uint32_t)2U)
150
151 #define ICSS_EMAC_QUEUE4 ((uint32_t)3U)
152
153 #define ICSS_EMAC_QUEUE5 ((uint32_t)4U)
154
155 #define ICSS_EMAC_QUEUE6 ((uint32_t)5U)
156
157 #define ICSS_EMAC_QUEUE7 ((uint32_t)6U)
158
159 #define ICSS_EMAC_QUEUE8 ((uint32_t)7U)
160
161 #define ICSS_EMAC_QUEUE9 ((uint32_t)8U)
162
163 #define ICSS_EMAC_QUEUE10 ((uint32_t)9U)
164
165 #define ICSS_EMAC_QUEUE11 ((uint32_t)10U)
166
167 #define ICSS_EMAC_QUEUE12 ((uint32_t)11U)
168
169 #define ICSS_EMAC_QUEUE13 ((uint32_t)12U)
170
171 #define ICSS_EMAC_QUEUE14 ((uint32_t)13U)
172
173 #define ICSS_EMAC_QUEUE15 ((uint32_t)14U)
174
175 #define ICSS_EMAC_QUEUE16 ((uint32_t)15U)
176
177 #define ICSS_EMAC_COLQUEUE ((uint32_t)16U)
178
180 #ifdef BUILD_HSR_PRP_MII
181
182 #define ICSS_EMAC_SET_TX_OCCUPIED (1U)
183
184 #define ICSS_EMAC_CLR_TX_OCCUPIED (0U)
185
186 #define ICSS_EMAC_SCAN_PORT1_HIGH_FIRST (0U)
187
188 #define ICSS_EMAC_SCAN_PORT2_HIGH_FIRST (1U)
189 #endif
190
191 #define ICSS_EMAC_NUMQUEUES ((uint32_t)17U)
192
200 #define ICSS_EMAC_SWITCH_ERROR_BASE ((uint32_t)0x21Fu)
201
202 #define ICSS_EMAC_SWITCH_ERROR_CODE (ICSS_EMAC_SWITCH_ERROR_BASE)
203
204 #define ICSS_EMAC_SWITCH_ERROR_INFO (ICSS_EMAC_SWITCH_ERROR_CODE)
205
206 #define ICSS_EMAC_SWITCH_ERROR_WARNING (ICSS_EMAC_SWITCH_ERROR_CODE | 0x1000u)
207
208 #define ICSS_EMAC_SWITCH_ERROR_MINOR (ICSS_EMAC_SWITCH_ERROR_CODE | 0x2000u)
209
210 #define ICSS_EMAC_SWITCH_ERROR_MAJOR (ICSS_EMAC_SWITCH_ERROR_CODE | 0x3000u)
211
212 #define ICSS_EMAC_SWITCH_ERROR_CRITICAL (ICSS_EMAC_SWITCH_ERROR_CODE | 0x4000u)
213
215 #define ICSS_EMAC_SWITCH_SUCCESS (0u)
216
217 #define ICSS_EMAC_PORT1_TX_ERROR_MASK (0xFFFFu)
218
219 #define ICSS_EMAC_PORT2_TX_ERROR_MASK (0xFFFF0000u)
220
223 #define ICSS_EMAC_ERR_DEV_NOT_INSTANTIATED (ICSS_EMAC_SWITCH_ERROR_MAJOR + 1u)
224
225 #define ICSS_EMAC_ERR_SWITCH_INVALID_PARAM (ICSS_EMAC_SWITCH_ERROR_MAJOR + 2u)
226
227 #define ICSS_EMAC_ERR_CH_INVALID (ICSS_EMAC_SWITCH_ERROR_CRITICAL + 3u)
228
229 #define ICSS_EMAC_ERR_CH_ALREADY_INIT (ICSS_EMAC_SWITCH_ERROR_MAJOR + 4u)
230
231 #define ICSS_EMAC_ERR_TX_CH_ALREADY_CLOSED (ICSS_EMAC_SWITCH_ERROR_MAJOR + 5u)
232
233 #define ICSS_EMAC_ERR_TX_CH_NOT_OPEN (ICSS_EMAC_SWITCH_ERROR_MAJOR + 6u)
234
235 #define ICSS_EMAC_ERR_TX_NO_LINK (ICSS_EMAC_SWITCH_ERROR_MAJOR + 7u)
236
237 #define ICSS_EMAC_ERR_TX_OUT_OF_BD (ICSS_EMAC_SWITCH_ERROR_MAJOR + 8u)
238
239 #define ICSS_EMAC_ERR_RX_CH_INVALID (ICSS_EMAC_SWITCH_ERROR_CRITICAL + 9u)
240
241 #define ICSS_EMAC_ERR_RX_CH_ALREADY_INIT (ICSS_EMAC_SWITCH_ERROR_MAJOR + 10u)
242
243 #define ICSS_EMAC_ERR_RX_CH_ALREADY_CLOSED (ICSS_EMAC_SWITCH_ERROR_MAJOR + 11u)
244
245 #define ICSS_EMAC_ERR_RX_CH_NOT_OPEN (ICSS_EMAC_SWITCH_ERROR_MAJOR + 12u)
246
247 #define ICSS_EMAC_ERR_DEV_ALREADY_CREATED (ICSS_EMAC_SWITCH_ERROR_MAJOR + 13u)
248
249 #define ICSS_EMAC_ERR_DEV_NOT_OPEN (ICSS_EMAC_SWITCH_ERROR_MAJOR + 14u)
250
251 #define ICSS_EMAC_ERR_DEV_ALREADY_CLOSED (ICSS_EMAC_SWITCH_ERROR_MAJOR + 15u)
252
253 #define ICSS_EMAC_ERR_DEV_ALREADY_OPEN (ICSS_EMAC_SWITCH_ERROR_MAJOR + 16u)
254
255 #define ICSS_EMAC_ERR_RX_BUFFER_ALLOC_FAIL (ICSS_EMAC_SWITCH_ERROR_CRITICAL + 17u)
256
257 #define ICSS_EMAC_SWITCH_INTERNAL_FAILURE (ICSS_EMAC_SWITCH_ERROR_MAJOR + 18u)
258
259 #define ICSS_EMAC_SWITCH_VLAN_UNAWARE_MODE (ICSS_EMAC_SWITCH_ERROR_MAJOR + 19u)
260
261 #define ICSS_EMAC_SWITCH_ALE_TABLE_FULL (ICSS_EMAC_SWITCH_ERROR_MAJOR + 20u)
262
263 #define ICSS_EMAC_SWITCH_ADDR_NOTFOUND (ICSS_EMAC_SWITCH_ERROR_MAJOR + 21u)
264
265 #define ICSS_EMAC_SWITCH_INVALID_VLANID (ICSS_EMAC_SWITCH_ERROR_MAJOR + 22u)
266
267 #define ICSS_EMAC_SWITCH_INVALID_PORT (ICSS_EMAC_SWITCH_ERROR_MAJOR + 23u)
268
269 #define ICSS_EMAC_SWITCH_BD_ALLOC_FAIL (ICSS_EMAC_SWITCH_ERROR_MAJOR + 24u)
270
271 #define ICSS_EMAC_ERR_BADPACKET (ICSS_EMAC_SWITCH_ERROR_MAJOR + 25u)
272
273 #define ICSS_EMAC_ERR_COLLISION_FAIL (ICSS_EMAC_SWITCH_ERROR_MAJOR + 26u)
274
275 #define ICSS_EMAC_ERR_MACFATAL (ICSS_EMAC_SWITCH_ERROR_CRITICAL + 26u)
276
279 #define ICSS_EMAC_MAXMTU (1518U)
280
281 #define ICSS_EMAC_MINMTU (14U)
282
286 #define ICSS_EMAC_PORT_0 (0)
287
291 #define ICSS_EMAC_PORT_1 (1U)
292
296 #define ICSS_EMAC_PORT_2 (2U)
297
301 #define ICSS_EMAC_IOCTL_PORT_CTRL_DISABLE (0u)
302
304 #define ICSS_EMAC_IOCTL_PORT_CTRL_ENABLE (1u)
305
313 #define ICSS_EMAC_STORM_PREV_CTRL_ENABLE (0u)
314
315 #define ICSS_EMAC_STORM_PREV_CTRL_DISABLE (1u)
316
317 #define ICSS_EMAC_STORM_PREV_CTRL_SET_CREDITS (2u)
318
319 #define ICSS_EMAC_STORM_PREV_CTRL_INIT (3u)
320
321 #define ICSS_EMAC_STORM_PREV_CTRL_RESET (4u)
322
323 #define ICSS_EMAC_STORM_PREV_CTRL_ENABLE_BC (5u)
324
325 #define ICSS_EMAC_STORM_PREV_CTRL_DISABLE_BC (6u)
326
327 #define ICSS_EMAC_STORM_PREV_CTRL_SET_CREDITS_BC (7u)
328
329 #define ICSS_EMAC_STORM_PREV_CTRL_INIT_BC (8u)
330
331 #define ICSS_EMAC_STORM_PREV_CTRL_RESET_BC (9u)
332
333 #define ICSS_EMAC_STORM_PREV_CTRL_ENABLE_MC (10u)
334
335 #define ICSS_EMAC_STORM_PREV_CTRL_DISABLE_MC (11u)
336
337 #define ICSS_EMAC_STORM_PREV_CTRL_SET_CREDITS_MC (12u)
338
339 #define ICSS_EMAC_STORM_PREV_CTRL_INIT_MC (13u)
340
341 #define ICSS_EMAC_STORM_PREV_CTRL_RESET_MC (14u)
342
343 #define ICSS_EMAC_STORM_PREV_CTRL_ENABLE_UC (15u)
344
345 #define ICSS_EMAC_STORM_PREV_CTRL_DISABLE_UC (16u)
346
347 #define ICSS_EMAC_STORM_PREV_CTRL_SET_CREDITS_UC (17u)
348
349 #define ICSS_EMAC_STORM_PREV_CTRL_INIT_UC (18u)
350
351 #define ICSS_EMAC_STORM_PREV_CTRL_RESET_UC (19u)
352
361 #define ICSS_EMAC_LEARN_CTRL_UPDATE_TABLE (0u)
362
363 #define ICSS_EMAC_LEARN_CTRL_CLR_TABLE (1u)
364
365 #define ICSS_EMAC_LEARN_CTRL_AGEING (2u)
366
367 #define ICSS_EMAC_LEARN_CTRL_FIND_MAC (3u)
368
369 #define ICSS_EMAC_LEARN_CTRL_REMOVE_MAC (4u)
370
371 #define ICSS_EMAC_LEARN_CTRL_INC_COUNTER (5u)
372
373 #define ICSS_EMAC_LEARN_CTRL_INIT_TABLE (6u)
374
375 #define ICSS_EMAC_LEARN_CTRL_SET_PORTSTATE (7u)
376
385 #define ICSS_EMAC_IOCTL_STAT_CTRL_GET (0u)
386
387 #define ICSS_EMAC_IOCTL_STAT_CTRL_CLEAR (1u)
388
397 #define ICSS_EMAC_IOCTL_PORT_CTRL (0u)
398
399 #define ICSS_EMAC_IOCTL_LEARNING_CTRL (1u)
400
401 #define ICSS_EMAC_IOCTL_STORM_PREV_CTRL (2u)
402
403 #define ICSS_EMAC_IOCTL_STATS_CTRL (3u)
404
405 #define ICSS_EMAC_IOCTL_PROMISCUOUS_CTRL (4u)
406
407 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL (5u)
408
409 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL (6u)
410
411 #define ICSS_EMAC_IOCTL_PORT_FLUSH_CTRL (7u)
412
413 #define ICSS_EMAC_IOCTL_SPECIAL_UNICAST_MAC_CTRL (8u)
414
415 #define ICSS_EMAC_IOCTL_PORT_FWD_CTRL (9u)
416
425 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_ENABLE (0u)
426
427 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_DISABLE (1u)
428
429 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_OVERRIDE_HASHMASK (2u)
430
431 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_ADD_MACID (3u)
432
433 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_REMOVE_MACID (4u)
434
435 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_GET_DROPPED (5u)
436
445 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_ENABLE_CMD (0u)
446
447 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_DISABLE_CMD (1u)
448
449 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_UNTAG_HOST_RCV_ALL_CMD (2u)
450
451 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_UNTAG_HOST_RCV_NAL_CMD (3u)
452
453 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_PRIOTAG_HOST_RCV_ALL_CMD (4u)
454
455 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_PRIOTAG_HOST_RCV_NAL_CMD (5u)
456
457 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_ADD_VID_CMD (6u)
458
459 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_REMOVE_VID_CMD (7u)
460
469 #define ICSS_EMAC_IOCTL_SPECIAL_UNICAST_MAC_CTRL_DISABLE_CMD (0u)
470
471 #define ICSS_EMAC_IOCTL_SPECIAL_UNICAST_MAC_CTRL_ENABLE_CMD (1u)
472
482 #define ICSS_EMAC_IOCTL_PORT_FWD_CTRL_ENABLE_CMD (0u)
483
484 #define ICSS_EMAC_IOCTL_PORT_FWD_CTRL_DISABLE_CMD (1u)
485
492 #define ICSS_EMAC_LEARNING_PORT_STATE_LEARNING (0U)
493 #define ICSS_EMAC_LEARNING_PORT_STATE_NOT_LEARNING (1U)
494 #define ICSS_EMAC_LEARNING_PORT_STATE_LOCKED (2U)
495
496 #define ICSS_EMAC_OBJECT_SIZE_IN_BYTES (42000)
497
498 #ifdef BUILD_HSR_PRP_MII
499
500 #define ICSS_EMAC_BD_FDB_LOOKUP_SUCCESS_MASK ((uint32_t)0x00000040U)
501
503 #define ICSS_EMAC_BD_FDB_LOOKUP_SUCCESS_SHIFT ((uint32_t)6U)
504
506 #define ICSS_EMAC_BD_FW_FLOOD_MASK ((uint32_t)0x00000080U)
507
509 #define ICSS_EMAC_BD_FW_FLOOD_SHIFT ((uint32_t)7U)
510 #endif
511
514 typedef struct ICSS_EMAC_Config_s *ICSS_EMAC_Handle;
515
522 typedef int32_t (*ICSS_EMAC_CallBack)(void *arg0, void *arg1, void *arg2);
523
524 /* ========================================================================== */
525 /* Structure Declarations */
526 /* ========================================================================== */
527
532 typedef struct ICSS_EMAC_FwStaticMmap_s
533 {
534 uint32_t versionOffset;
535 uint32_t version2Offset;
536 uint32_t featureOffset;
537 uint32_t futureFeatureOffset;
538 uint32_t statisticsOffset;
539 uint32_t statisticsSize;
540 uint32_t stormPreventionOffsetBC;
541 uint32_t phySpeedOffset;
542 uint32_t portStatusOffset;
543 uint32_t portControlAddr;
544 uint32_t portMacAddr;
545 uint32_t rxInterruptStatusOffset;
546 uint32_t stormPreventionOffsetMC;
547 uint32_t stormPreventionOffsetUC;
548 uint32_t p0QueueDescOffset;
549 uint32_t p0ColQueueDescOffset;
550 uint32_t emacTtsConfigBaseOffset;
551 uint32_t interfaceMacAddrOffset;
552 uint32_t colStatusAddr;
553 uint32_t promiscuousModeOffset;
554 uint32_t specialUnicastMACAddrOffset;
555 uint32_t specialUnicastMACAddressFeatureEnableOffset;
556 uint32_t portForwardStatusOffset;
557 } ICSS_EMAC_FwStaticMmap;
558
562 typedef struct ICSS_EMAC_FwDynamicMmap_s
563 {
564 uint32_t queueSizeOffset;
565 uint32_t queueOffset;
566 uint32_t queueDescriptorOffset;
567 uint32_t txQueueSize[ICSS_EMAC_NUMQUEUES-1U];
568 uint32_t rxHostQueueSize[ICSS_EMAC_NUMQUEUES - 1U];
569 uint32_t collisionQueueSize;
570 uint32_t p0Q1BufferDescOffset;
571 uint32_t p0ColBufferDescOffset;
572 uint32_t p0Q1BufferOffset;
573 uint32_t transmitQueuesBufferOffset;
574 uint32_t p0ColBufferOffset;
575 uint32_t hostQ1RxContextOffset;
576 uint32_t p1Q1SwitchTxContextOffset;
577 uint32_t portQueueDescOffset;
578 uint32_t q1EmacTxContextOffset;
579 uint32_t numQueues;
580 } ICSS_EMAC_FwDynamicMmap;
581
585 typedef struct ICSS_EMAC_FwVlanFilterParams_s
586 {
587 uint32_t ctrlBitmapOffset;
588 uint32_t ctrlEnableBit;
589 uint32_t ctrlUntagHostRcvAllowBit;
590 uint32_t ctrlPriotagHostRcvAllowBit;
591 uint32_t filterTableBaseAddress;
592 uint32_t vidMaxValue;
593 } ICSS_EMAC_FwVlanFilterParams;
594
598 typedef struct ICSS_EMAC_FwMulticastFilterParams_s
599 {
600 uint32_t ctrlOffset;
601 uint32_t maskSizeBytes;
602 uint32_t maskInitVal;
603 uint32_t maskOffset;
604 uint32_t overrideStatusOffset;
605 uint32_t tableOffset;
606 uint32_t ctrlEnabledValue;
607 uint32_t ctrlDisabledValue;
608 uint32_t maskOverrideSetValue;
609 uint32_t maskOverrideNotSetValue;
610 uint32_t hostRcvAllowedValue;
611 uint32_t hostRcvNotAllowedValue;
612 } ICSS_EMAC_FwMulticastFilterParams;
613
614 /*
615 * \brief ICSS EMAC Init Configuration Structure
616 */
617 typedef struct ICSS_EMAC_Attrs_s
618 {
619 uint8_t emacMode;
621 uint32_t phyAddr[ICSS_EMAC_MAX_PORTS_PER_INSTANCE];
626 uint8_t phyToMacInterfaceMode;
630 uint8_t halfDuplexEnable;
635 uint8_t enableIntrPacing;
639 uint8_t intrPacingMode;
643 uint16_t pacingThreshold;
645 uint8_t ethPrioQueue;
650 uint8_t learningEnable;
654 uint8_t portMask;
659 uint8_t txInterruptEnable;
666 uint32_t linkIntNum;
667 /* Link interrupt number on R5F*/
668 uint32_t rxIntNum;
669 /* Receive Packet interrupt number on R5F*/
670 uint32_t txIntNum;
671 /* Transmit completion interrupt number on R5F.
672 Valid only if txInterruptEnable is set to 1 */
673 uint32_t l3OcmcBaseAddr;
675 uint32_t l3OcmcSize;
677 uint32_t linkTaskPriority;
679 uint32_t rxTaskPriority;
681 uint32_t txTaskPriority;
683 uint32_t splitQueue;
685 uint8_t hostQueueIsolationMode;
687 uint8_t portPrioritySelection;
689 #ifdef BUILD_HSR_PRP_MII
690 uint8_t pktPriority;
693 int8_t txOccupied;
695 uint8_t pingPong;
696 #endif
697 } ICSS_EMAC_Attrs;
698
702 typedef struct ICSS_EMAC_InternalObject_t
703 {
704 uint32_t reserved[ICSS_EMAC_OBJECT_SIZE_IN_BYTES/sizeof(uint32_t)];
706 } ICSS_EMAC_InternalObject;
707
712 typedef struct ICSS_EMAC_Config_s
713 {
714 void *object;
716 const ICSS_EMAC_Attrs *attrs;
718 } ICSS_EMAC_Config;
719
727 typedef struct ICSS_EMAC_CallBackConfig_s
728 {
729 ICSS_EMAC_CallBack callBack;
731 void *userArg;
733 } ICSS_EMAC_CallBackConfig;
734
742 typedef struct ICSS_EMAC_CallBackObject_s
743 {
744 ICSS_EMAC_CallBackConfig port0LinkCallBack;
746 ICSS_EMAC_CallBackConfig port1LinkCallBack;
748 ICSS_EMAC_CallBackConfig rxNRTCallBack;
752 ICSS_EMAC_CallBackConfig rxRTCallBack;
756 ICSS_EMAC_CallBackConfig txCallBack;
758 ICSS_EMAC_CallBackConfig learningExCallBack;
760 ICSS_EMAC_CallBackConfig customTxCallBack;
764 ICSS_EMAC_CallBackConfig customRxCallBack;
768 } ICSS_EMAC_CallBackObject;
769
780 typedef struct ICSS_EMAC_Params_s
781 {
782 PRUICSS_Handle pruicssHandle;
784 const PRUICSS_IntcInitData *pruicssIntcInitData;
786 ICSS_EMAC_FwStaticMmap *fwStaticMMap;
788 ICSS_EMAC_FwDynamicMmap *fwDynamicMMap;
790 ICSS_EMAC_FwVlanFilterParams *fwVlanFilterParams;
792 ICSS_EMAC_FwMulticastFilterParams *fwMulticastFilterParams;
794 ICSS_EMAC_CallBackObject callBackObject;
796 ETHPHY_Handle ethphyHandle[ICSS_EMAC_MAX_PORTS_PER_INSTANCE];
801 uint8_t macId[6];
803 uint8_t enableHostQueueIsolation;
805 } ICSS_EMAC_Params;
806
811 typedef struct ICSS_EMAC_RxArgument_s
812 {
813 ICSS_EMAC_Handle icssEmacHandle;
815 uint32_t destAddress;
817 uint8_t queueNumber;
819 uint8_t port;
821 uint32_t more;
823 #ifdef BUILD_HSR_PRP_MII
824 uint32_t host_recv_flag;
825 /*Returns the packet flag whether it is valid for host or not */
826 #endif
827 } ICSS_EMAC_RxArgument;
828
833 typedef struct ICSS_EMAC_TxArgument_s
834 {
835 ICSS_EMAC_Handle icssEmacHandle;
837 const uint8_t *srcAddress;
839 uint8_t portNumber;
841 uint8_t queuePriority;
843 uint16_t lengthOfPacket;
845 } ICSS_EMAC_TxArgument;
846
850 typedef struct ICSS_EMAC_IoctlCmd_s
851 {
852 uint8_t command;
853 void *ioctlVal;
854 } ICSS_EMAC_IoctlCmd;
855
860 typedef struct ICSS_EMAC_PruStatistics_s
861 {
862 /* The fields here are aligned here so that it's consistent
863 with the memory layout in PRU DRAM, this is to facilitate easy
864 memcpy or DMA transfer. Don't change the order of fields without
865 modifying the order of fields in PRU DRAM. For details refer to guide
866 */
867 volatile uint32_t txBcast;
868 volatile uint32_t txMcast;
869 volatile uint32_t txUcast;
870 volatile uint32_t txOctets;
872 volatile uint32_t rxBcast;
873 volatile uint32_t rxMcast;
874 volatile uint32_t rxUcast;
875 volatile uint32_t rxOctets;
877 volatile uint32_t tx64byte;
878 volatile uint32_t tx65_127byte;
879 volatile uint32_t tx128_255byte;
880 volatile uint32_t tx256_511byte;
881 volatile uint32_t tx512_1023byte;
882 volatile uint32_t tx1024byte;
884 volatile uint32_t rx64byte;
885 volatile uint32_t rx65_127byte;
886 volatile uint32_t rx128_255byte;
887 volatile uint32_t rx256_511byte;
888 volatile uint32_t rx512_1023byte;
889 volatile uint32_t rx1024byte;
891 volatile uint32_t lateColl;
892 volatile uint32_t singleColl;
893 volatile uint32_t multiColl;
894 volatile uint32_t excessColl;
896 volatile uint32_t rxMisAlignmentFrames;
897 volatile uint32_t stormPrevCounter;
898 volatile uint32_t stormPrevCounterMC;
899 volatile uint32_t stormPrevCounterUC;
900 volatile uint32_t macRxError;
902 volatile uint32_t SFDError;
903 volatile uint32_t defTx;
904 volatile uint32_t macTxError;
905 volatile uint32_t rxOverSizedFrames;
906 volatile uint32_t rxUnderSizedFrames;
907 volatile uint32_t rxCRCFrames;
909 volatile uint32_t droppedPackets;
910 /* Debug variables, these are not part of standard MIB. Useful for debugging */
911 /* Reserved for future Use */
912 volatile uint32_t txOverFlow;
913 volatile uint32_t txUnderFlow;
914 volatile uint32_t sqeTestError;
915 volatile uint32_t TXqueueLevel;
916 volatile uint32_t CSError;
917 } ICSS_EMAC_PruStatistics;
918 /* ========================================================================== */
919 /* Function Declarations */
920 /* ========================================================================== */
921
925 void ICSS_EMAC_init(void);
926
930 void ICSS_EMAC_deinit(void);
931
937 void ICSS_EMAC_Params_init(ICSS_EMAC_Params *params);
938
947 ICSS_EMAC_Handle ICSS_EMAC_open(uint32_t idx, const ICSS_EMAC_Params *params);
948
955 void ICSS_EMAC_close(ICSS_EMAC_Handle icssEmacHandle);
956
984 int32_t ICSS_EMAC_ioctl(ICSS_EMAC_Handle icssEmacHandle,
985 uint32_t ioctlCommand,
986 uint8_t portNo,
987 void *ioctlParams);
988
1002 int32_t ICSS_EMAC_rxPktGet(ICSS_EMAC_RxArgument *rxArg, void *userArg);
1003
1016 int32_t ICSS_EMAC_rxPktInfo(ICSS_EMAC_Handle icssEmacHandle,
1017 int32_t *portNumber,
1018 int32_t *queueNumber);
1019
1041 int32_t ICSS_EMAC_txPacket(const ICSS_EMAC_TxArgument *txArg, void *userArg);
1042
1043 /* ========================================================================== */
1044 /* Global Variables */
1045 /* ========================================================================== */
1046
1047 #ifdef __cplusplus
1048 }
1049 #endif
1050
1053 #endif /* #ifndef ICSS_EMAC_H_ */
ICSS_EMAC_PruStatistics::tx128_255byte
volatile uint32_t tx128_255byte
Definition: icss_emac.h:879
ICSS_EMAC_Attrs::portMask
uint8_t portMask
Definition: icss_emac.h:654
ICSS_EMAC_Attrs::hostQueueIsolationMode
uint8_t hostQueueIsolationMode
Definition: icss_emac.h:685
ICSS_EMAC_FwDynamicMmap::p0ColBufferOffset
uint32_t p0ColBufferOffset
Definition: icss_emac.h:574
ICSS_EMAC_Attrs::intrPacingMode
uint8_t intrPacingMode
Definition: icss_emac.h:639
ICSS_EMAC_FwStaticMmap::p0ColQueueDescOffset
uint32_t p0ColQueueDescOffset
Definition: icss_emac.h:549
ICSS_EMAC_Attrs::rxTaskPriority
uint32_t rxTaskPriority
Definition: icss_emac.h:679
ICSS_EMAC_TxArgument
Tx packet processing information block that needs to passed into call to ICSS_EMAC_txPacket.
Definition: icss_emac.h:834
ICSS_EMAC_CallBackObject::rxNRTCallBack
ICSS_EMAC_CallBackConfig rxNRTCallBack
Definition: icss_emac.h:748
ICSS_EMAC_Handle
struct ICSS_EMAC_Config_s * ICSS_EMAC_Handle
Alias for ICSS EMAC Handle containing base addresses and modules.
Definition: icss_emac.h:514
ICSS_EMAC_FwStaticMmap::portMacAddr
uint32_t portMacAddr
Definition: icss_emac.h:544
ICSS_EMAC_PruStatistics::rxBcast
volatile uint32_t rxBcast
Definition: icss_emac.h:872
ICSS_EMAC_PruStatistics::defTx
volatile uint32_t defTx
Definition: icss_emac.h:903
ICSS_EMAC_Attrs::learningEnable
uint8_t learningEnable
Definition: icss_emac.h:650
ICSS_EMAC_RxArgument
Rx packet processing information block that needs to passed into call to ICSS_EMAC_RxPktGet.
Definition: icss_emac.h:812
ICSS_EMAC_PruStatistics::rxUcast
volatile uint32_t rxUcast
Definition: icss_emac.h:874
ICSS_EMAC_PruStatistics::TXqueueLevel
volatile uint32_t TXqueueLevel
Definition: icss_emac.h:915
ICSS_EMAC_FwStaticMmap::portStatusOffset
uint32_t portStatusOffset
Definition: icss_emac.h:542
ICSS_EMAC_PruStatistics::droppedPackets
volatile uint32_t droppedPackets
Definition: icss_emac.h:909
ICSS_EMAC_FwDynamicMmap::p1Q1SwitchTxContextOffset
uint32_t p1Q1SwitchTxContextOffset
Definition: icss_emac.h:576
ICSS_EMAC_RxArgument::queueNumber
uint8_t queueNumber
Definition: icss_emac.h:817
ICSS_EMAC_FwStaticMmap::p0QueueDescOffset
uint32_t p0QueueDescOffset
Definition: icss_emac.h:548
ICSS_EMAC_txPacket
int32_t ICSS_EMAC_txPacket(const ICSS_EMAC_TxArgument *txArg, void *userArg)
API to queue a frame which has to be transmitted on the specified port queue.
ICSS_EMAC_RxArgument::port
uint8_t port
Definition: icss_emac.h:819
SystemP.h
ICSS_EMAC_Attrs::l3OcmcBaseAddr
uint32_t l3OcmcBaseAddr
Definition: icss_emac.h:673
ICSS_EMAC_FwDynamicMmap::p0ColBufferDescOffset
uint32_t p0ColBufferDescOffset
Definition: icss_emac.h:571
ICSS_EMAC_Params_init
void ICSS_EMAC_Params_init(ICSS_EMAC_Params *params)
Initialize the parmeters data structure with defaults.
ICSS_EMAC_FwVlanFilterParams::ctrlUntagHostRcvAllowBit
uint32_t ctrlUntagHostRcvAllowBit
Definition: icss_emac.h:589
ICSS_EMAC_NUMQUEUES
#define ICSS_EMAC_NUMQUEUES
Total Queues available.
Definition: icss_emac.h:191
ICSS_EMAC_FwMulticastFilterParams::overrideStatusOffset
uint32_t overrideStatusOffset
Definition: icss_emac.h:604
ICSS_EMAC_FwStaticMmap::stormPreventionOffsetBC
uint32_t stormPreventionOffsetBC
Definition: icss_emac.h:540
ICSS_EMAC_PruStatistics::rxUnderSizedFrames
volatile uint32_t rxUnderSizedFrames
Definition: icss_emac.h:906
ICSS_EMAC_ioctl
int32_t ICSS_EMAC_ioctl(ICSS_EMAC_Handle icssEmacHandle, uint32_t ioctlCommand, uint8_t portNo, void *ioctlParams)
IOCTL Function for ICSS EMAC.
ICSS_EMAC_PruStatistics::tx64byte
volatile uint32_t tx64byte
Definition: icss_emac.h:877
ICSS_EMAC_Attrs::l3OcmcSize
uint32_t l3OcmcSize
Definition: icss_emac.h:675
ICSS_EMAC_FwDynamicMmap::collisionQueueSize
uint32_t collisionQueueSize
Definition: icss_emac.h:569
ICSS_EMAC_FwDynamicMmap::hostQ1RxContextOffset
uint32_t hostQ1RxContextOffset
Definition: icss_emac.h:575
ICSS_EMAC_Attrs::txInterruptEnable
uint8_t txInterruptEnable
Definition: icss_emac.h:659
pruicss.h
ICSS_EMAC_RxArgument::more
uint32_t more
Definition: icss_emac.h:821
ICSS_EMAC_Attrs::txIntNum
uint32_t txIntNum
Definition: icss_emac.h:670
ICSS_EMAC_OBJECT_SIZE_IN_BYTES
#define ICSS_EMAC_OBJECT_SIZE_IN_BYTES
Definition: icss_emac.h:496
ICSS_EMAC_CallBackObject::learningExCallBack
ICSS_EMAC_CallBackConfig learningExCallBack
Definition: icss_emac.h:758
ICSS_EMAC_FwDynamicMmap::transmitQueuesBufferOffset
uint32_t transmitQueuesBufferOffset
Definition: icss_emac.h:573
ICSS_EMAC_Attrs::pacingThreshold
uint16_t pacingThreshold
Definition: icss_emac.h:643
ICSS_EMAC_PruStatistics::rxOctets
volatile uint32_t rxOctets
Definition: icss_emac.h:875
ICSS_EMAC_TxArgument::lengthOfPacket
uint16_t lengthOfPacket
Definition: icss_emac.h:843
ICSS_EMAC_TxArgument::portNumber
uint8_t portNumber
Definition: icss_emac.h:839
ICSS_EMAC_FwMulticastFilterParams::maskInitVal
uint32_t maskInitVal
Definition: icss_emac.h:602
ICSS_EMAC_PruStatistics::rx512_1023byte
volatile uint32_t rx512_1023byte
Definition: icss_emac.h:888
ICSS_EMAC_FwStaticMmap::emacTtsConfigBaseOffset
uint32_t emacTtsConfigBaseOffset
Definition: icss_emac.h:550
ICSS_EMAC_PruStatistics::sqeTestError
volatile uint32_t sqeTestError
Definition: icss_emac.h:914
ICSS_EMAC_PruStatistics::singleColl
volatile uint32_t singleColl
Definition: icss_emac.h:892
ICSS_EMAC_PruStatistics::macRxError
volatile uint32_t macRxError
Definition: icss_emac.h:900
ICSS_EMAC_FwDynamicMmap::p0Q1BufferDescOffset
uint32_t p0Q1BufferDescOffset
Definition: icss_emac.h:570
ICSS_EMAC_init
void ICSS_EMAC_init(void)
This function initializes the ICSS_EMAC module.
ICSS_EMAC_FwMulticastFilterParams::ctrlOffset
uint32_t ctrlOffset
Definition: icss_emac.h:600
ICSS_EMAC_FwDynamicMmap
ICSS EMAC Dynamic Firmware Memory Map offsets.
Definition: icss_emac.h:563
ICSS_EMAC_IoctlCmd::command
uint8_t command
Definition: icss_emac.h:852
ICSS_EMAC_CallBackObject::port0LinkCallBack
ICSS_EMAC_CallBackConfig port0LinkCallBack
Definition: icss_emac.h:744
ICSS_EMAC_Config::object
void * object
Definition: icss_emac.h:714
ICSS_EMAC_CallBack
int32_t(* ICSS_EMAC_CallBack)(void *arg0, void *arg1, void *arg2)
Definition for a generic callback function used in ICSS-EMAC. While calling this,...
Definition: icss_emac.h:522
ICSS_EMAC_PruStatistics::tx65_127byte
volatile uint32_t tx65_127byte
Definition: icss_emac.h:878
ICSS_EMAC_PruStatistics::CSError
volatile uint32_t CSError
Definition: icss_emac.h:916
ICSS_EMAC_FwStaticMmap::specialUnicastMACAddressFeatureEnableOffset
uint32_t specialUnicastMACAddressFeatureEnableOffset
Definition: icss_emac.h:555
ICSS_EMAC_FwVlanFilterParams::ctrlEnableBit
uint32_t ctrlEnableBit
Definition: icss_emac.h:588
ICSS_EMAC_FwStaticMmap::statisticsOffset
uint32_t statisticsOffset
Definition: icss_emac.h:538
ICSS_EMAC_FwVlanFilterParams::filterTableBaseAddress
uint32_t filterTableBaseAddress
Definition: icss_emac.h:591
ICSS_EMAC_Params::pruicssIntcInitData
const PRUICSS_IntcInitData * pruicssIntcInitData
Definition: icss_emac.h:784
ICSS_EMAC_FwStaticMmap::phySpeedOffset
uint32_t phySpeedOffset
Definition: icss_emac.h:541
ICSS_EMAC_IoctlCmd::ioctlVal
void * ioctlVal
Definition: icss_emac.h:853
ICSS_EMAC_FwMulticastFilterParams::hostRcvAllowedValue
uint32_t hostRcvAllowedValue
Definition: icss_emac.h:610
ICSS_EMAC_FwDynamicMmap::p0Q1BufferOffset
uint32_t p0Q1BufferOffset
Definition: icss_emac.h:572
ICSS_EMAC_PruStatistics::lateColl
volatile uint32_t lateColl
Definition: icss_emac.h:891
ICSS_EMAC_CallBackConfig::userArg
void * userArg
Definition: icss_emac.h:731
ICSS_EMAC_FwStaticMmap::colStatusAddr
uint32_t colStatusAddr
Definition: icss_emac.h:552
ICSS_EMAC_FwMulticastFilterParams::maskOverrideSetValue
uint32_t maskOverrideSetValue
Definition: icss_emac.h:608
ICSS_EMAC_FwStaticMmap::portControlAddr
uint32_t portControlAddr
Definition: icss_emac.h:543
ICSS_EMAC_FwStaticMmap::rxInterruptStatusOffset
uint32_t rxInterruptStatusOffset
Definition: icss_emac.h:545
ICSS_EMAC_PruStatistics::rx65_127byte
volatile uint32_t rx65_127byte
Definition: icss_emac.h:885
ICSS_EMAC_FwStaticMmap::stormPreventionOffsetUC
uint32_t stormPreventionOffsetUC
Definition: icss_emac.h:547
ICSS_EMAC_rxPktGet
int32_t ICSS_EMAC_rxPktGet(ICSS_EMAC_RxArgument *rxArg, void *userArg)
Retrieves a frame from a host queue and copies it in the allocated stack buffer.
ICSS_EMAC_PruStatistics::rx64byte
volatile uint32_t rx64byte
Definition: icss_emac.h:884
ICSS_EMAC_FwMulticastFilterParams::maskOffset
uint32_t maskOffset
Definition: icss_emac.h:603
ICSS_EMAC_Attrs::emacMode
uint8_t emacMode
Definition: icss_emac.h:619
ICSS_EMAC_FwStaticMmap::futureFeatureOffset
uint32_t futureFeatureOffset
Definition: icss_emac.h:537
ICSS_EMAC_Attrs::portPrioritySelection
uint8_t portPrioritySelection
Definition: icss_emac.h:687
ICSS_EMAC_FwStaticMmap::versionOffset
uint32_t versionOffset
Definition: icss_emac.h:534
ICSS_EMAC_Params::fwDynamicMMap
ICSS_EMAC_FwDynamicMmap * fwDynamicMMap
Definition: icss_emac.h:788
ICSS_EMAC_PruStatistics::rxOverSizedFrames
volatile uint32_t rxOverSizedFrames
Definition: icss_emac.h:905
ICSS_EMAC_PruStatistics::multiColl
volatile uint32_t multiColl
Definition: icss_emac.h:893
ICSS_EMAC_FwVlanFilterParams::ctrlBitmapOffset
uint32_t ctrlBitmapOffset
Definition: icss_emac.h:587
ICSS_EMAC_Params::fwMulticastFilterParams
ICSS_EMAC_FwMulticastFilterParams * fwMulticastFilterParams
Definition: icss_emac.h:792
ICSS_EMAC_FwVlanFilterParams
ICSS EMAC VLAN Filtering Parameters.
Definition: icss_emac.h:586
ICSS_EMAC_PruStatistics::txOverFlow
volatile uint32_t txOverFlow
Definition: icss_emac.h:912
ICSS_EMAC_FwDynamicMmap::q1EmacTxContextOffset
uint32_t q1EmacTxContextOffset
Definition: icss_emac.h:578
ICSS_EMAC_open
ICSS_EMAC_Handle ICSS_EMAC_open(uint32_t idx, const ICSS_EMAC_Params *params)
API to initialize and configure ICSS in MAC/Switch Mode.
ICSS_EMAC_Attrs::txTaskPriority
uint32_t txTaskPriority
Definition: icss_emac.h:681
ICSS_EMAC_PruStatistics::txUcast
volatile uint32_t txUcast
Definition: icss_emac.h:869
ICSS_EMAC_PruStatistics
Statistics structure for capturing statistics on PRU.
Definition: icss_emac.h:861
ICSS_EMAC_PruStatistics::txUnderFlow
volatile uint32_t txUnderFlow
Definition: icss_emac.h:913
ICSS_EMAC_Attrs::ethPrioQueue
uint8_t ethPrioQueue
Definition: icss_emac.h:645
ICSS_EMAC_PruStatistics::rx1024byte
volatile uint32_t rx1024byte
Definition: icss_emac.h:889
ICSS_EMAC_PruStatistics::excessColl
volatile uint32_t excessColl
Definition: icss_emac.h:894
ICSS_EMAC_FwDynamicMmap::numQueues
uint32_t numQueues
Definition: icss_emac.h:579
ICSS_EMAC_FwStaticMmap::interfaceMacAddrOffset
uint32_t interfaceMacAddrOffset
Definition: icss_emac.h:551
ICSS_EMAC_CallBackObject::rxRTCallBack
ICSS_EMAC_CallBackConfig rxRTCallBack
Definition: icss_emac.h:752
ICSS_EMAC_CallBackObject::customRxCallBack
ICSS_EMAC_CallBackConfig customRxCallBack
Definition: icss_emac.h:764
ICSS_EMAC_FwMulticastFilterParams::tableOffset
uint32_t tableOffset
Definition: icss_emac.h:605
ICSS_EMAC_PruStatistics::rxCRCFrames
volatile uint32_t rxCRCFrames
Definition: icss_emac.h:907
ICSS_EMAC_TxArgument::srcAddress
const uint8_t * srcAddress
Definition: icss_emac.h:837
ICSS_EMAC_FwMulticastFilterParams::maskOverrideNotSetValue
uint32_t maskOverrideNotSetValue
Definition: icss_emac.h:609
ICSS_EMAC_PruStatistics::stormPrevCounter
volatile uint32_t stormPrevCounter
Definition: icss_emac.h:897
ICSS_EMAC_close
void ICSS_EMAC_close(ICSS_EMAC_Handle icssEmacHandle)
API to stop MAC/Switch Mode.
ICSS_EMAC_FwMulticastFilterParams::ctrlEnabledValue
uint32_t ctrlEnabledValue
Definition: icss_emac.h:606
ICSS_EMAC_CallBackObject::customTxCallBack
ICSS_EMAC_CallBackConfig customTxCallBack
Definition: icss_emac.h:760
ICSS_EMAC_Config::attrs
const ICSS_EMAC_Attrs * attrs
Definition: icss_emac.h:716
PRUICSS_IntcInitData
PRUICSS Interrupt controller initialisation data structure.
Definition: pruicss/m_v0/pruicss.h:265
ethphy.h
ICSS_EMAC_Attrs::linkIntNum
uint32_t linkIntNum
Definition: icss_emac.h:666
ICSS_EMAC_rxPktInfo
int32_t ICSS_EMAC_rxPktInfo(ICSS_EMAC_Handle icssEmacHandle, int32_t *portNumber, int32_t *queueNumber)
API to retrieve the information about the received frame which is then used to dequeue the frame from...
ICSS_EMAC_PruStatistics::txOctets
volatile uint32_t txOctets
Definition: icss_emac.h:870
ICSS_EMAC_deinit
void ICSS_EMAC_deinit(void)
This function de-initializes the ICSS_EMAC module.
ICSS_EMAC_Attrs::phyToMacInterfaceMode
uint8_t phyToMacInterfaceMode
Definition: icss_emac.h:626
ICSS_EMAC_RxArgument::destAddress
uint32_t destAddress
Definition: icss_emac.h:815
ICSS_EMAC_FwMulticastFilterParams::maskSizeBytes
uint32_t maskSizeBytes
Definition: icss_emac.h:601
ICSS_EMAC_PruStatistics::rx256_511byte
volatile uint32_t rx256_511byte
Definition: icss_emac.h:887
ICSS_EMAC_PruStatistics::macTxError
volatile uint32_t macTxError
Definition: icss_emac.h:904
ICSS_EMAC_Attrs::halfDuplexEnable
uint8_t halfDuplexEnable
Definition: icss_emac.h:630
ICSS_EMAC_PruStatistics::SFDError
volatile uint32_t SFDError
Definition: icss_emac.h:902
ICSS_EMAC_FwStaticMmap::featureOffset
uint32_t featureOffset
Definition: icss_emac.h:536
ICSS_EMAC_FwVlanFilterParams::vidMaxValue
uint32_t vidMaxValue
Definition: icss_emac.h:592
ICSS_EMAC_Attrs::splitQueue
uint32_t splitQueue
Definition: icss_emac.h:683
ICSS_EMAC_PruStatistics::stormPrevCounterMC
volatile uint32_t stormPrevCounterMC
Definition: icss_emac.h:898
ICSS_EMAC_Attrs::linkTaskPriority
uint32_t linkTaskPriority
Definition: icss_emac.h:677
ICSS_EMAC_CallBackObject
Different callbacks which can be registered. While calling the function set in ICSS_EMAC_CallBack,...
Definition: icss_emac.h:743
ICSS_EMAC_FwMulticastFilterParams::hostRcvNotAllowedValue
uint32_t hostRcvNotAllowedValue
Definition: icss_emac.h:611
ICSS_EMAC_FwDynamicMmap::queueSizeOffset
uint32_t queueSizeOffset
Definition: icss_emac.h:564
ICSS_EMAC_PruStatistics::rxMisAlignmentFrames
volatile uint32_t rxMisAlignmentFrames
Definition: icss_emac.h:896
ICSS_EMAC_FwVlanFilterParams::ctrlPriotagHostRcvAllowBit
uint32_t ctrlPriotagHostRcvAllowBit
Definition: icss_emac.h:590
ICSS_EMAC_PruStatistics::txBcast
volatile uint32_t txBcast
Definition: icss_emac.h:867
ICSS_EMAC_PruStatistics::txMcast
volatile uint32_t txMcast
Definition: icss_emac.h:868
ICSS_EMAC_Attrs::enableIntrPacing
uint8_t enableIntrPacing
Definition: icss_emac.h:635
ICSS_EMAC_FwStaticMmap
ICSS EMAC Static Firmware Memory Map offsets. These are offsets for PRU0 and PRU1 DRAM memory.
Definition: icss_emac.h:533
ICSS_EMAC_InternalObject
Opaque ICSS EMAC driver object.
Definition: icss_emac.h:703
ICSS_EMAC_CallBackObject::txCallBack
ICSS_EMAC_CallBackConfig txCallBack
Definition: icss_emac.h:756
ICSS_EMAC_FwMulticastFilterParams::ctrlDisabledValue
uint32_t ctrlDisabledValue
Definition: icss_emac.h:607
ICSS_EMAC_CallBackConfig::callBack
ICSS_EMAC_CallBack callBack
Definition: icss_emac.h:729
ICSS_EMAC_Attrs
Definition: icss_emac.h:618
ICSS_EMAC_PruStatistics::stormPrevCounterUC
volatile uint32_t stormPrevCounterUC
Definition: icss_emac.h:899
ICSS_EMAC_FwMulticastFilterParams
ICSS EMAC Multicast Filtering Parameters.
Definition: icss_emac.h:599
ICSS_EMAC_PruStatistics::tx256_511byte
volatile uint32_t tx256_511byte
Definition: icss_emac.h:880
ICSS_EMAC_Params
ICSS_EMAC Parameters.
Definition: icss_emac.h:781
ICSS_EMAC_PruStatistics::rx128_255byte
volatile uint32_t rx128_255byte
Definition: icss_emac.h:886
ICSS_EMAC_Attrs::rxIntNum
uint32_t rxIntNum
Definition: icss_emac.h:668
ICSS_EMAC_CallBackConfig
Generic callback configuration for protocol specific callbacks. ICSS_EMAC_CallBack is the function ...
Definition: icss_emac.h:728
ICSS_EMAC_FwStaticMmap::version2Offset
uint32_t version2Offset
Definition: icss_emac.h:535
ETHPHY_Handle
void * ETHPHY_Handle
Handle to the ETHPHY driver returned by ETHPHY_open()
Definition: ethphy.h:173
ICSS_EMAC_IoctlCmd
IOCTL command members for configuring switch/EMAC.
Definition: icss_emac.h:851
ICSS_EMAC_Params::enableHostQueueIsolation
uint8_t enableHostQueueIsolation
Definition: icss_emac.h:803
ICSS_EMAC_Params::callBackObject
ICSS_EMAC_CallBackObject callBackObject
Definition: icss_emac.h:794
ICSS_EMAC_FwStaticMmap::specialUnicastMACAddrOffset
uint32_t specialUnicastMACAddrOffset
Definition: icss_emac.h:554
ICSS_EMAC_PruStatistics::tx512_1023byte
volatile uint32_t tx512_1023byte
Definition: icss_emac.h:881
ICSS_EMAC_FwDynamicMmap::queueOffset
uint32_t queueOffset
Definition: icss_emac.h:565
ICSS_EMAC_FwStaticMmap::portForwardStatusOffset
uint32_t portForwardStatusOffset
Definition: icss_emac.h:556
ICSS_EMAC_Params::pruicssHandle
PRUICSS_Handle pruicssHandle
Definition: icss_emac.h:782
ICSS_EMAC_FwStaticMmap::stormPreventionOffsetMC
uint32_t stormPreventionOffsetMC
Definition: icss_emac.h:546
PRUICSS_Handle
struct PRUICSS_Config_s * PRUICSS_Handle
A handle that is returned from a PRUICSS_open() call. This handle is required for calling other APIs.
Definition: pruicss/m_v0/pruicss.h:226
ICSS_EMAC_CallBackObject::port1LinkCallBack
ICSS_EMAC_CallBackConfig port1LinkCallBack
Definition: icss_emac.h:746
ICSS_EMAC_FwStaticMmap::promiscuousModeOffset
uint32_t promiscuousModeOffset
Definition: icss_emac.h:553
ICSS_EMAC_TxArgument::icssEmacHandle
ICSS_EMAC_Handle icssEmacHandle
Definition: icss_emac.h:835
ICSS_EMAC_FwStaticMmap::statisticsSize
uint32_t statisticsSize
Definition: icss_emac.h:539
ICSS_EMAC_TxArgument::queuePriority
uint8_t queuePriority
Definition: icss_emac.h:841
ICSS_EMAC_PruStatistics::rxMcast
volatile uint32_t rxMcast
Definition: icss_emac.h:873
ICSS_EMAC_FwDynamicMmap::portQueueDescOffset
uint32_t portQueueDescOffset
Definition: icss_emac.h:577
ICSS_EMAC_PruStatistics::tx1024byte
volatile uint32_t tx1024byte
Definition: icss_emac.h:882
ICSS_EMAC_Params::fwStaticMMap
ICSS_EMAC_FwStaticMmap * fwStaticMMap
Definition: icss_emac.h:786
ICSS_EMAC_MAX_PORTS_PER_INSTANCE
#define ICSS_EMAC_MAX_PORTS_PER_INSTANCE
Maximum number of Ports in a single ICSS
Definition: icss_emac.h:66
ICSS_EMAC_Params::fwVlanFilterParams
ICSS_EMAC_FwVlanFilterParams * fwVlanFilterParams
Definition: icss_emac.h:790
ICSS_EMAC_FwDynamicMmap::queueDescriptorOffset
uint32_t queueDescriptorOffset
Definition: icss_emac.h:566
ICSS_EMAC_Config
Base EMAC handle containing pointers to all modules required for driver to work.
Definition: icss_emac.h:713
ICSS_EMAC_RxArgument::icssEmacHandle
ICSS_EMAC_Handle icssEmacHandle
Definition: icss_emac.h:813