AM64x MCU+ SDK  08.02.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 
75 #define ICSS_EMAC_MODE_MAC1 (1U)
76 
77 #define ICSS_EMAC_MODE_MAC2 (2U)
78 
79 #define ICSS_EMAC_MODE_SWITCH (3U)
80 
81 #define ICSS_EMAC_MODE_DUALMAC (4U)
82 
91 #define ICSS_EMAC_MII_MODE (0U)
92 
93 #define ICSS_EMAC_RGMII_MODE (1U)
94 
103 #define ICSS_EMAC_LEARNING_DISABLE (0U)
104 
105 #define ICSS_EMAC_LEARNING_ENABLE (1U)
106 
115 #define ICSS_EMAC_ENABLE_PACING (0)
116 
117 #define ICSS_EMAC_DISABLE_PACING (1)
118 
127 #define ICSS_EMAC_INTR_PACING_MODE1 (0)
128 
137 #define ICSS_EMAC_QUEUE1 ((uint32_t)0U)
138 
139 #define ICSS_EMAC_QUEUE2 ((uint32_t)1U)
140 
141 #define ICSS_EMAC_QUEUE3 ((uint32_t)2U)
142 
143 #define ICSS_EMAC_QUEUE4 ((uint32_t)3U)
144 
145 #define ICSS_EMAC_QUEUE5 ((uint32_t)4U)
146 
147 #define ICSS_EMAC_QUEUE6 ((uint32_t)5U)
148 
149 #define ICSS_EMAC_QUEUE7 ((uint32_t)6U)
150 
151 #define ICSS_EMAC_QUEUE8 ((uint32_t)7U)
152 
153 #define ICSS_EMAC_QUEUE9 ((uint32_t)8U)
154 
155 #define ICSS_EMAC_QUEUE10 ((uint32_t)9U)
156 
157 #define ICSS_EMAC_QUEUE11 ((uint32_t)10U)
158 
159 #define ICSS_EMAC_QUEUE12 ((uint32_t)11U)
160 
161 #define ICSS_EMAC_QUEUE13 ((uint32_t)12U)
162 
163 #define ICSS_EMAC_QUEUE14 ((uint32_t)13U)
164 
165 #define ICSS_EMAC_QUEUE15 ((uint32_t)14U)
166 
167 #define ICSS_EMAC_QUEUE16 ((uint32_t)15U)
168 
169 #define ICSS_EMAC_COLQUEUE ((uint32_t)16U)
170 
173 #define ICSS_EMAC_NUMQUEUES ((uint32_t)17U)
174 
176 #define ICSS_EMAC_MAXMTU (1518U)
177 
178 #define ICSS_EMAC_MINMTU (14U)
179 
183 #define ICSS_EMAC_PORT_0 (0)
184 
188 #define ICSS_EMAC_PORT_1 (1U)
189 
193 #define ICSS_EMAC_PORT_2 (2U)
194 
198 #define ICSS_EMAC_IOCTL_PORT_CTRL_DISABLE (0u)
199 
201 #define ICSS_EMAC_IOCTL_PORT_CTRL_ENABLE (1u)
202 
210 #define ICSS_EMAC_STORM_PREV_CTRL_ENABLE (0u)
211 
212 #define ICSS_EMAC_STORM_PREV_CTRL_DISABLE (1u)
213 
214 #define ICSS_EMAC_STORM_PREV_CTRL_SET_CREDITS (2u)
215 
216 #define ICSS_EMAC_STORM_PREV_CTRL_INIT (3u)
217 
218 #define ICSS_EMAC_STORM_PREV_CTRL_RESET (4u)
219 
220 #define ICSS_EMAC_STORM_PREV_CTRL_ENABLE_BC (5u)
221 
222 #define ICSS_EMAC_STORM_PREV_CTRL_DISABLE_BC (6u)
223 
224 #define ICSS_EMAC_STORM_PREV_CTRL_SET_CREDITS_BC (7u)
225 
226 #define ICSS_EMAC_STORM_PREV_CTRL_INIT_BC (8u)
227 
228 #define ICSS_EMAC_STORM_PREV_CTRL_RESET_BC (9u)
229 
230 #define ICSS_EMAC_STORM_PREV_CTRL_ENABLE_MC (10u)
231 
232 #define ICSS_EMAC_STORM_PREV_CTRL_DISABLE_MC (11u)
233 
234 #define ICSS_EMAC_STORM_PREV_CTRL_SET_CREDITS_MC (12u)
235 
236 #define ICSS_EMAC_STORM_PREV_CTRL_INIT_MC (13u)
237 
238 #define ICSS_EMAC_STORM_PREV_CTRL_RESET_MC (14u)
239 
240 #define ICSS_EMAC_STORM_PREV_CTRL_ENABLE_UC (15u)
241 
242 #define ICSS_EMAC_STORM_PREV_CTRL_DISABLE_UC (16u)
243 
244 #define ICSS_EMAC_STORM_PREV_CTRL_SET_CREDITS_UC (17u)
245 
246 #define ICSS_EMAC_STORM_PREV_CTRL_INIT_UC (18u)
247 
248 #define ICSS_EMAC_STORM_PREV_CTRL_RESET_UC (19u)
249 
258 #define ICSS_EMAC_LEARN_CTRL_UPDATE_TABLE (0u)
259 
260 #define ICSS_EMAC_LEARN_CTRL_CLR_TABLE (1u)
261 
262 #define ICSS_EMAC_LEARN_CTRL_AGEING (2u)
263 
264 #define ICSS_EMAC_LEARN_CTRL_FIND_MAC (3u)
265 
266 #define ICSS_EMAC_LEARN_CTRL_REMOVE_MAC (4u)
267 
268 #define ICSS_EMAC_LEARN_CTRL_INC_COUNTER (5u)
269 
270 #define ICSS_EMAC_LEARN_CTRL_INIT_TABLE (6u)
271 
272 #define ICSS_EMAC_LEARN_CTRL_SET_PORTSTATE (7u)
273 
282 #define ICSS_EMAC_IOCTL_STAT_CTRL_GET (0u)
283 
284 #define ICSS_EMAC_IOCTL_STAT_CTRL_CLEAR (1u)
285 
294 #define ICSS_EMAC_IOCTL_PORT_CTRL (0u)
295 
296 #define ICSS_EMAC_IOCTL_LEARNING_CTRL (1u)
297 
298 #define ICSS_EMAC_IOCTL_STORM_PREV_CTRL (2u)
299 
300 #define ICSS_EMAC_IOCTL_STATS_CTRL (3u)
301 
302 #define ICSS_EMAC_IOCTL_PROMISCUOUS_CTRL (4u)
303 
304 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL (5u)
305 
306 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL (6u)
307 
308 #define ICSS_EMAC_IOCTL_PORT_FLUSH_CTRL (7u)
309 
318 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_ENABLE (0u)
319 
320 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_DISABLE (1u)
321 
322 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_OVERRIDE_HASHMASK (2u)
323 
324 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_ADD_MACID (3u)
325 
326 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_REMOVE_MACID (4u)
327 
328 #define ICSS_EMAC_IOCTL_MULTICAST_FILTER_CTRL_GET_DROPPED (5u)
329 
338 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_ENABLE_CMD (0u)
339 
340 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_DISABLE_CMD (1u)
341 
342 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_UNTAG_HOST_RCV_ALL_CMD (2u)
343 
344 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_UNTAG_HOST_RCV_NAL_CMD (3u)
345 
346 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_PRIOTAG_HOST_RCV_ALL_CMD (4u)
347 
348 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_PRIOTAG_HOST_RCV_NAL_CMD (5u)
349 
350 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_ADD_VID_CMD (6u)
351 
352 #define ICSS_EMAC_IOCTL_VLAN_FILTER_CTRL_REMOVE_VID_CMD (7u)
353 
359 #define ICSS_EMAC_LEARNING_PORT_STATE_LEARNING (0U)
360 #define ICSS_EMAC_LEARNING_PORT_STATE_NOT_LEARNING (1U)
361 #define ICSS_EMAC_LEARNING_PORT_STATE_LOCKED (2U)
362 
363 #define ICSS_EMAC_OBJECT_SIZE_IN_BYTES (42000)
364 
368 typedef struct ICSS_EMAC_Config_s *ICSS_EMAC_Handle;
369 
376 typedef int32_t (*ICSS_EMAC_CallBack)(void *arg0, void *arg1, void *arg2);
377 
378 /* ========================================================================== */
379 /* Structure Declarations */
380 /* ========================================================================== */
381 
386 typedef struct ICSS_EMAC_FwStaticMmap_s
387 {
388  uint32_t versionOffset;
389  uint32_t version2Offset;
390  uint32_t featureOffset;
392  uint32_t statisticsOffset;
393  uint32_t statisticsSize;
395  uint32_t phySpeedOffset;
396  uint32_t portStatusOffset;
397  uint32_t portControlAddr;
398  uint32_t portMacAddr;
402  uint32_t p0QueueDescOffset;
406  uint32_t colStatusAddr;
409 
413 typedef struct ICSS_EMAC_FwDynamicMmap_s
414 {
415  uint32_t queueSizeOffset;
416  uint32_t queueOffset;
418  uint32_t txQueueSize[ICSS_EMAC_NUMQUEUES-1U];
419  uint32_t rxHostQueueSize[ICSS_EMAC_NUMQUEUES - 1U];
423  uint32_t p0Q1BufferOffset;
425  uint32_t p0ColBufferOffset;
430  uint32_t numQueues;
432 
436 typedef struct ICSS_EMAC_FwVlanFilterParams_s
437 {
439  uint32_t ctrlEnableBit;
443  uint32_t vidMaxValue;
445 
449 typedef struct ICSS_EMAC_FwMulticastFilterParams_s
450 {
451  uint32_t ctrlOffset;
452  uint32_t maskSizeBytes;
453  uint32_t maskInitVal;
454  uint32_t maskOffset;
456  uint32_t tableOffset;
464 
465 /*
466 * \brief ICSS EMAC Init Configuration Structure
467 */
468 typedef struct ICSS_EMAC_Attrs_s
469 {
470  uint8_t emacMode;
490  uint8_t intrPacingMode;
494  uint16_t pacingThreshold;
496  uint8_t ethPrioQueue;
501  uint8_t learningEnable;
505  uint8_t portMask;
517  uint32_t linkIntNum;
518  /* Link interrupt number on R5F*/
519  uint32_t rxIntNum;
520  /* Receive Packet interrupt number on R5F*/
521  uint32_t txIntNum;
522  /* Transmit completion interrupt number on R5F.
523  Valid only if txInterruptEnable is set to 1 */
524  uint32_t l3OcmcBaseAddr;
526  uint32_t l3OcmcSize;
530  uint32_t rxTaskPriority;
532  uint32_t txTaskPriority;
534  uint32_t splitQueue;
537 
541 typedef struct ICSS_EMAC_InternalObject_t
542 {
543  uint32_t reserved[ICSS_EMAC_OBJECT_SIZE_IN_BYTES/sizeof(uint32_t)];
546 
551 typedef struct ICSS_EMAC_Config_s
552 {
553  void *object;
558 
566 typedef struct ICSS_EMAC_CallBackConfig_s
567 {
570  void *userArg;
573 
581 typedef struct ICSS_EMAC_CallBackObject_s
582 {
608 
619 typedef struct ICSS_EMAC_Params_s
620 {
640  uint8_t macId[6];
643 
648 typedef struct ICSS_EMAC_RxArgument_s
649 {
652  uint32_t destAddress;
654  uint8_t queueNumber;
656  uint8_t port;
658  uint32_t more;
661 
666 typedef struct ICSS_EMAC_TxArgument_s
667 {
670  const uint8_t *srcAddress;
672  uint8_t portNumber;
674  uint8_t queuePriority;
676  uint16_t lengthOfPacket;
679 
683 typedef struct ICSS_EMAC_IoctlCmd_s
684 {
685  uint8_t command;
686  void *ioctlVal;
688 
693 typedef struct ICSS_EMAC_PruStatistics_s
694 {
695 /* The fields here are aligned here so that it's consistent
696  with the memory layout in PRU DRAM, this is to facilitate easy
697  memcpy or DMA transfer. Don't change the order of fields without
698  modifying the order of fields in PRU DRAM. For details refer to guide
699 */
700  volatile uint32_t txBcast;
701  volatile uint32_t txMcast;
702  volatile uint32_t txUcast;
703  volatile uint32_t txOctets;
705  volatile uint32_t rxBcast;
706  volatile uint32_t rxMcast;
707  volatile uint32_t rxUcast;
708  volatile uint32_t rxOctets;
710  volatile uint32_t tx64byte;
711  volatile uint32_t tx65_127byte;
712  volatile uint32_t tx128_255byte;
713  volatile uint32_t tx256_511byte;
714  volatile uint32_t tx512_1023byte;
715  volatile uint32_t tx1024byte;
717  volatile uint32_t rx64byte;
718  volatile uint32_t rx65_127byte;
719  volatile uint32_t rx128_255byte;
720  volatile uint32_t rx256_511byte;
721  volatile uint32_t rx512_1023byte;
722  volatile uint32_t rx1024byte;
724  volatile uint32_t lateColl;
725  volatile uint32_t singleColl;
726  volatile uint32_t multiColl;
727  volatile uint32_t excessColl;
729  volatile uint32_t rxMisAlignmentFrames;
730  volatile uint32_t stormPrevCounter;
731  volatile uint32_t stormPrevCounterMC;
732  volatile uint32_t stormPrevCounterUC;
733  volatile uint32_t macRxError;
735  volatile uint32_t SFDError;
736  volatile uint32_t defTx;
737  volatile uint32_t macTxError;
738  volatile uint32_t rxOverSizedFrames;
739  volatile uint32_t rxUnderSizedFrames;
740  volatile uint32_t rxCRCFrames;
742  volatile uint32_t droppedPackets;
743 /* Debug variables, these are not part of standard MIB. Useful for debugging */
744 /* Reserved for future Use */
745  volatile uint32_t txOverFlow;
746  volatile uint32_t txUnderFlow;
747  volatile uint32_t sqeTestError;
748  volatile uint32_t TXqueueLevel;
749  volatile uint32_t CSError;
751 /* ========================================================================== */
752 /* Function Declarations */
753 /* ========================================================================== */
754 
758 void ICSS_EMAC_init(void);
759 
763 void ICSS_EMAC_deinit(void);
764 
771 
780 ICSS_EMAC_Handle ICSS_EMAC_open(uint32_t idx, const ICSS_EMAC_Params *params);
781 
788 void ICSS_EMAC_close(ICSS_EMAC_Handle icssEmacHandle);
789 
814 int32_t ICSS_EMAC_ioctl(ICSS_EMAC_Handle icssEmacHandle,
815  uint32_t ioctlCommand,
816  uint8_t portNo,
817  void *ioctlParams);
818 
832 int32_t ICSS_EMAC_rxPktGet(ICSS_EMAC_RxArgument *rxArg, void *userArg);
833 
846 int32_t ICSS_EMAC_rxPktInfo(ICSS_EMAC_Handle icssEmacHandle,
847  int32_t *portNumber,
848  int32_t *queueNumber);
849 
862 int32_t ICSS_EMAC_txPacket(const ICSS_EMAC_TxArgument *txArg, void *userArg);
863 
864 /* ========================================================================== */
865 /* Global Variables */
866 /* ========================================================================== */
867 
868 #ifdef __cplusplus
869 }
870 #endif
871 
874 #endif /* #ifndef ICSS_EMAC_H_ */
ICSS_EMAC_PruStatistics::tx128_255byte
volatile uint32_t tx128_255byte
Definition: icss_emac.h:712
ICSS_EMAC_Attrs::portMask
uint8_t portMask
Definition: icss_emac.h:505
ICSS_EMAC_FwDynamicMmap::p0ColBufferOffset
uint32_t p0ColBufferOffset
Definition: icss_emac.h:425
ICSS_EMAC_Attrs::intrPacingMode
uint8_t intrPacingMode
Definition: icss_emac.h:490
ICSS_EMAC_FwStaticMmap::p0ColQueueDescOffset
uint32_t p0ColQueueDescOffset
Definition: icss_emac.h:403
ICSS_EMAC_Attrs::rxTaskPriority
uint32_t rxTaskPriority
Definition: icss_emac.h:530
ICSS_EMAC_TxArgument
Tx packet processing information block that needs to passed into call to ICSS_EMAC_TxPacket.
Definition: icss_emac.h:667
ICSS_EMAC_CallBackObject::rxNRTCallBack
ICSS_EMAC_CallBackConfig rxNRTCallBack
Definition: icss_emac.h:587
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:368
ICSS_EMAC_FwStaticMmap::portMacAddr
uint32_t portMacAddr
Definition: icss_emac.h:398
ICSS_EMAC_PruStatistics::rxBcast
volatile uint32_t rxBcast
Definition: icss_emac.h:705
ICSS_EMAC_PruStatistics::defTx
volatile uint32_t defTx
Definition: icss_emac.h:736
ICSS_EMAC_Attrs::learningEnable
uint8_t learningEnable
Definition: icss_emac.h:501
ICSS_EMAC_RxArgument
Rx packet processing information block that needs to passed into call to ICSS_EMAC_RxPktGet.
Definition: icss_emac.h:649
ICSS_EMAC_PruStatistics::rxUcast
volatile uint32_t rxUcast
Definition: icss_emac.h:707
ICSS_EMAC_PruStatistics::TXqueueLevel
volatile uint32_t TXqueueLevel
Definition: icss_emac.h:748
ICSS_EMAC_FwStaticMmap::portStatusOffset
uint32_t portStatusOffset
Definition: icss_emac.h:396
ICSS_EMAC_PruStatistics::droppedPackets
volatile uint32_t droppedPackets
Definition: icss_emac.h:742
ICSS_EMAC_FwDynamicMmap::p1Q1SwitchTxContextOffset
uint32_t p1Q1SwitchTxContextOffset
Definition: icss_emac.h:427
ICSS_EMAC_RxArgument::queueNumber
uint8_t queueNumber
Definition: icss_emac.h:654
ICSS_EMAC_FwStaticMmap::p0QueueDescOffset
uint32_t p0QueueDescOffset
Definition: icss_emac.h:402
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:656
SystemP.h
ICSS_EMAC_Attrs::l3OcmcBaseAddr
uint32_t l3OcmcBaseAddr
Definition: icss_emac.h:524
ICSS_EMAC_FwDynamicMmap::p0ColBufferDescOffset
uint32_t p0ColBufferDescOffset
Definition: icss_emac.h:422
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:440
ICSS_EMAC_NUMQUEUES
#define ICSS_EMAC_NUMQUEUES
Total Queues available.
Definition: icss_emac.h:173
ICSS_EMAC_FwMulticastFilterParams::overrideStatusOffset
uint32_t overrideStatusOffset
Definition: icss_emac.h:455
ICSS_EMAC_FwStaticMmap::stormPreventionOffsetBC
uint32_t stormPreventionOffsetBC
Definition: icss_emac.h:394
ICSS_EMAC_PruStatistics::rxUnderSizedFrames
volatile uint32_t rxUnderSizedFrames
Definition: icss_emac.h:739
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:710
ICSS_EMAC_Attrs::l3OcmcSize
uint32_t l3OcmcSize
Definition: icss_emac.h:526
ICSS_EMAC_FwDynamicMmap::collisionQueueSize
uint32_t collisionQueueSize
Definition: icss_emac.h:420
ICSS_EMAC_FwDynamicMmap::hostQ1RxContextOffset
uint32_t hostQ1RxContextOffset
Definition: icss_emac.h:426
ICSS_EMAC_Attrs::txInterruptEnable
uint8_t txInterruptEnable
Definition: icss_emac.h:510
pruicss.h
ICSS_EMAC_RxArgument::more
uint32_t more
Definition: icss_emac.h:658
ICSS_EMAC_Attrs::txIntNum
uint32_t txIntNum
Definition: icss_emac.h:521
ICSS_EMAC_OBJECT_SIZE_IN_BYTES
#define ICSS_EMAC_OBJECT_SIZE_IN_BYTES
Definition: icss_emac.h:363
ICSS_EMAC_CallBackObject::learningExCallBack
ICSS_EMAC_CallBackConfig learningExCallBack
Definition: icss_emac.h:597
ICSS_EMAC_FwDynamicMmap::transmitQueuesBufferOffset
uint32_t transmitQueuesBufferOffset
Definition: icss_emac.h:424
ICSS_EMAC_Attrs::pacingThreshold
uint16_t pacingThreshold
Definition: icss_emac.h:494
ICSS_EMAC_PruStatistics::rxOctets
volatile uint32_t rxOctets
Definition: icss_emac.h:708
ICSS_EMAC_TxArgument::lengthOfPacket
uint16_t lengthOfPacket
Definition: icss_emac.h:676
ICSS_EMAC_TxArgument::portNumber
uint8_t portNumber
Definition: icss_emac.h:672
ICSS_EMAC_FwMulticastFilterParams::maskInitVal
uint32_t maskInitVal
Definition: icss_emac.h:453
ICSS_EMAC_PruStatistics::rx512_1023byte
volatile uint32_t rx512_1023byte
Definition: icss_emac.h:721
ICSS_EMAC_FwStaticMmap::emacTtsConfigBaseOffset
uint32_t emacTtsConfigBaseOffset
Definition: icss_emac.h:404
ICSS_EMAC_PruStatistics::sqeTestError
volatile uint32_t sqeTestError
Definition: icss_emac.h:747
ICSS_EMAC_PruStatistics::singleColl
volatile uint32_t singleColl
Definition: icss_emac.h:725
ICSS_EMAC_PruStatistics::macRxError
volatile uint32_t macRxError
Definition: icss_emac.h:733
ICSS_EMAC_FwDynamicMmap::p0Q1BufferDescOffset
uint32_t p0Q1BufferDescOffset
Definition: icss_emac.h:421
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:451
ICSS_EMAC_FwDynamicMmap
ICSS EMAC Dynamic Firmware Memory Map offsets.
Definition: icss_emac.h:414
ICSS_EMAC_IoctlCmd::command
uint8_t command
Definition: icss_emac.h:685
ICSS_EMAC_CallBackObject::port0LinkCallBack
ICSS_EMAC_CallBackConfig port0LinkCallBack
Definition: icss_emac.h:583
ICSS_EMAC_Config::object
void * object
Definition: icss_emac.h:553
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:376
ICSS_EMAC_PruStatistics::tx65_127byte
volatile uint32_t tx65_127byte
Definition: icss_emac.h:711
ICSS_EMAC_PruStatistics::CSError
volatile uint32_t CSError
Definition: icss_emac.h:749
ICSS_EMAC_FwVlanFilterParams::ctrlEnableBit
uint32_t ctrlEnableBit
Definition: icss_emac.h:439
ICSS_EMAC_FwStaticMmap::statisticsOffset
uint32_t statisticsOffset
Definition: icss_emac.h:392
ICSS_EMAC_FwVlanFilterParams::filterTableBaseAddress
uint32_t filterTableBaseAddress
Definition: icss_emac.h:442
ICSS_EMAC_Params::pruicssIntcInitData
const PRUICSS_IntcInitData * pruicssIntcInitData
Definition: icss_emac.h:623
ICSS_EMAC_FwStaticMmap::phySpeedOffset
uint32_t phySpeedOffset
Definition: icss_emac.h:395
ICSS_EMAC_IoctlCmd::ioctlVal
void * ioctlVal
Definition: icss_emac.h:686
ICSS_EMAC_FwMulticastFilterParams::hostRcvAllowedValue
uint32_t hostRcvAllowedValue
Definition: icss_emac.h:461
ICSS_EMAC_FwDynamicMmap::p0Q1BufferOffset
uint32_t p0Q1BufferOffset
Definition: icss_emac.h:423
ICSS_EMAC_PruStatistics::lateColl
volatile uint32_t lateColl
Definition: icss_emac.h:724
ICSS_EMAC_CallBackConfig::userArg
void * userArg
Definition: icss_emac.h:570
ICSS_EMAC_FwStaticMmap::colStatusAddr
uint32_t colStatusAddr
Definition: icss_emac.h:406
ICSS_EMAC_FwMulticastFilterParams::maskOverrideSetValue
uint32_t maskOverrideSetValue
Definition: icss_emac.h:459
ICSS_EMAC_FwStaticMmap::portControlAddr
uint32_t portControlAddr
Definition: icss_emac.h:397
ICSS_EMAC_FwStaticMmap::rxInterruptStatusOffset
uint32_t rxInterruptStatusOffset
Definition: icss_emac.h:399
ICSS_EMAC_PruStatistics::rx65_127byte
volatile uint32_t rx65_127byte
Definition: icss_emac.h:718
ICSS_EMAC_FwStaticMmap::stormPreventionOffsetUC
uint32_t stormPreventionOffsetUC
Definition: icss_emac.h:401
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:717
ICSS_EMAC_FwMulticastFilterParams::maskOffset
uint32_t maskOffset
Definition: icss_emac.h:454
ICSS_EMAC_Attrs::emacMode
uint8_t emacMode
Definition: icss_emac.h:470
ICSS_EMAC_FwStaticMmap::futureFeatureOffset
uint32_t futureFeatureOffset
Definition: icss_emac.h:391
ICSS_EMAC_FwStaticMmap::versionOffset
uint32_t versionOffset
Definition: icss_emac.h:388
ICSS_EMAC_Params::fwDynamicMMap
ICSS_EMAC_FwDynamicMmap * fwDynamicMMap
Definition: icss_emac.h:627
ICSS_EMAC_PruStatistics::rxOverSizedFrames
volatile uint32_t rxOverSizedFrames
Definition: icss_emac.h:738
ICSS_EMAC_PruStatistics::multiColl
volatile uint32_t multiColl
Definition: icss_emac.h:726
ICSS_EMAC_FwVlanFilterParams::ctrlBitmapOffset
uint32_t ctrlBitmapOffset
Definition: icss_emac.h:438
ICSS_EMAC_Params::fwMulticastFilterParams
ICSS_EMAC_FwMulticastFilterParams * fwMulticastFilterParams
Definition: icss_emac.h:631
ICSS_EMAC_FwVlanFilterParams
ICSS EMAC VLAN Filtering Parameters.
Definition: icss_emac.h:437
ICSS_EMAC_PruStatistics::txOverFlow
volatile uint32_t txOverFlow
Definition: icss_emac.h:745
ICSS_EMAC_FwDynamicMmap::q1EmacTxContextOffset
uint32_t q1EmacTxContextOffset
Definition: icss_emac.h:429
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:532
ICSS_EMAC_PruStatistics::txUcast
volatile uint32_t txUcast
Definition: icss_emac.h:702
ICSS_EMAC_PruStatistics
Statistics structure for capturing statistics on PRU.
Definition: icss_emac.h:694
ICSS_EMAC_PruStatistics::txUnderFlow
volatile uint32_t txUnderFlow
Definition: icss_emac.h:746
ICSS_EMAC_Attrs::ethPrioQueue
uint8_t ethPrioQueue
Definition: icss_emac.h:496
ICSS_EMAC_PruStatistics::rx1024byte
volatile uint32_t rx1024byte
Definition: icss_emac.h:722
ICSS_EMAC_PruStatistics::excessColl
volatile uint32_t excessColl
Definition: icss_emac.h:727
ICSS_EMAC_FwDynamicMmap::numQueues
uint32_t numQueues
Definition: icss_emac.h:430
ICSS_EMAC_FwStaticMmap::interfaceMacAddrOffset
uint32_t interfaceMacAddrOffset
Definition: icss_emac.h:405
ICSS_EMAC_CallBackObject::rxRTCallBack
ICSS_EMAC_CallBackConfig rxRTCallBack
Definition: icss_emac.h:591
ICSS_EMAC_CallBackObject::customRxCallBack
ICSS_EMAC_CallBackConfig customRxCallBack
Definition: icss_emac.h:603
ICSS_EMAC_FwMulticastFilterParams::tableOffset
uint32_t tableOffset
Definition: icss_emac.h:456
ICSS_EMAC_PruStatistics::rxCRCFrames
volatile uint32_t rxCRCFrames
Definition: icss_emac.h:740
ICSS_EMAC_TxArgument::srcAddress
const uint8_t * srcAddress
Definition: icss_emac.h:670
reserved
uint16_t reserved
Definition: tisci_boardcfg_rm.h:2
ICSS_EMAC_FwMulticastFilterParams::maskOverrideNotSetValue
uint32_t maskOverrideNotSetValue
Definition: icss_emac.h:460
ICSS_EMAC_PruStatistics::stormPrevCounter
volatile uint32_t stormPrevCounter
Definition: icss_emac.h:730
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:457
ICSS_EMAC_CallBackObject::customTxCallBack
ICSS_EMAC_CallBackConfig customTxCallBack
Definition: icss_emac.h:599
ICSS_EMAC_Config::attrs
const ICSS_EMAC_Attrs * attrs
Definition: icss_emac.h:555
PRUICSS_IntcInitData
PRUICSS Interrupt controller initialisation data structure.
Definition: pruicss/g_v0/pruicss.h:273
ethphy.h
ICSS_EMAC_Attrs::linkIntNum
uint32_t linkIntNum
Definition: icss_emac.h:517
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:703
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:477
ICSS_EMAC_RxArgument::destAddress
uint32_t destAddress
Definition: icss_emac.h:652
ICSS_EMAC_FwMulticastFilterParams::maskSizeBytes
uint32_t maskSizeBytes
Definition: icss_emac.h:452
ICSS_EMAC_PruStatistics::rx256_511byte
volatile uint32_t rx256_511byte
Definition: icss_emac.h:720
ICSS_EMAC_PruStatistics::macTxError
volatile uint32_t macTxError
Definition: icss_emac.h:737
ICSS_EMAC_Attrs::halfDuplexEnable
uint8_t halfDuplexEnable
Definition: icss_emac.h:481
ICSS_EMAC_PruStatistics::SFDError
volatile uint32_t SFDError
Definition: icss_emac.h:735
ICSS_EMAC_FwStaticMmap::featureOffset
uint32_t featureOffset
Definition: icss_emac.h:390
ICSS_EMAC_FwVlanFilterParams::vidMaxValue
uint32_t vidMaxValue
Definition: icss_emac.h:443
ICSS_EMAC_Attrs::splitQueue
uint32_t splitQueue
Definition: icss_emac.h:534
ICSS_EMAC_PruStatistics::stormPrevCounterMC
volatile uint32_t stormPrevCounterMC
Definition: icss_emac.h:731
ICSS_EMAC_Attrs::linkTaskPriority
uint32_t linkTaskPriority
Definition: icss_emac.h:528
ICSS_EMAC_CallBackObject
Different callbacks which can be registered. While calling the function set in ICSS_EMAC_CallBack,...
Definition: icss_emac.h:582
ICSS_EMAC_FwMulticastFilterParams::hostRcvNotAllowedValue
uint32_t hostRcvNotAllowedValue
Definition: icss_emac.h:462
ICSS_EMAC_FwDynamicMmap::queueSizeOffset
uint32_t queueSizeOffset
Definition: icss_emac.h:415
ICSS_EMAC_PruStatistics::rxMisAlignmentFrames
volatile uint32_t rxMisAlignmentFrames
Definition: icss_emac.h:729
ICSS_EMAC_FwVlanFilterParams::ctrlPriotagHostRcvAllowBit
uint32_t ctrlPriotagHostRcvAllowBit
Definition: icss_emac.h:441
ICSS_EMAC_PruStatistics::txBcast
volatile uint32_t txBcast
Definition: icss_emac.h:700
ICSS_EMAC_PruStatistics::txMcast
volatile uint32_t txMcast
Definition: icss_emac.h:701
ICSS_EMAC_Attrs::enableIntrPacing
uint8_t enableIntrPacing
Definition: icss_emac.h:486
ICSS_EMAC_FwStaticMmap
ICSS EMAC Static Firmware Memory Map offsets. These are offsets for PRU0 and PRU1 DRAM memory.
Definition: icss_emac.h:387
ICSS_EMAC_InternalObject
Opaque ICSS EMAC driver object.
Definition: icss_emac.h:542
ICSS_EMAC_CallBackObject::txCallBack
ICSS_EMAC_CallBackConfig txCallBack
Definition: icss_emac.h:595
ICSS_EMAC_FwMulticastFilterParams::ctrlDisabledValue
uint32_t ctrlDisabledValue
Definition: icss_emac.h:458
ICSS_EMAC_CallBackConfig::callBack
ICSS_EMAC_CallBack callBack
Definition: icss_emac.h:568
ICSS_EMAC_Attrs
Definition: icss_emac.h:469
ICSS_EMAC_PruStatistics::stormPrevCounterUC
volatile uint32_t stormPrevCounterUC
Definition: icss_emac.h:732
ICSS_EMAC_FwMulticastFilterParams
ICSS EMAC Multicast Filtering Parameters.
Definition: icss_emac.h:450
ICSS_EMAC_PruStatistics::tx256_511byte
volatile uint32_t tx256_511byte
Definition: icss_emac.h:713
ICSS_EMAC_Params
ICSS_EMAC Parameters.
Definition: icss_emac.h:620
ICSS_EMAC_PruStatistics::rx128_255byte
volatile uint32_t rx128_255byte
Definition: icss_emac.h:719
ICSS_EMAC_Attrs::rxIntNum
uint32_t rxIntNum
Definition: icss_emac.h:519
ICSS_EMAC_CallBackConfig
Generic callback configuration for protocol specific callbacks. ICSS_EMAC_CallBack is the function ...
Definition: icss_emac.h:567
ICSS_EMAC_FwStaticMmap::version2Offset
uint32_t version2Offset
Definition: icss_emac.h:389
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:684
ICSS_EMAC_Params::callBackObject
ICSS_EMAC_CallBackObject callBackObject
Definition: icss_emac.h:633
ICSS_EMAC_PruStatistics::tx512_1023byte
volatile uint32_t tx512_1023byte
Definition: icss_emac.h:714
ICSS_EMAC_FwDynamicMmap::queueOffset
uint32_t queueOffset
Definition: icss_emac.h:416
ICSS_EMAC_Params::pruicssHandle
PRUICSS_Handle pruicssHandle
Definition: icss_emac.h:621
ICSS_EMAC_FwStaticMmap::stormPreventionOffsetMC
uint32_t stormPreventionOffsetMC
Definition: icss_emac.h:400
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/g_v0/pruicss.h:234
ICSS_EMAC_CallBackObject::port1LinkCallBack
ICSS_EMAC_CallBackConfig port1LinkCallBack
Definition: icss_emac.h:585
ICSS_EMAC_FwStaticMmap::promiscuousModeOffset
uint32_t promiscuousModeOffset
Definition: icss_emac.h:407
ICSS_EMAC_TxArgument::icssEmacHandle
ICSS_EMAC_Handle icssEmacHandle
Definition: icss_emac.h:668
ICSS_EMAC_FwStaticMmap::statisticsSize
uint32_t statisticsSize
Definition: icss_emac.h:393
ICSS_EMAC_TxArgument::queuePriority
uint8_t queuePriority
Definition: icss_emac.h:674
ICSS_EMAC_PruStatistics::rxMcast
volatile uint32_t rxMcast
Definition: icss_emac.h:706
ICSS_EMAC_FwDynamicMmap::portQueueDescOffset
uint32_t portQueueDescOffset
Definition: icss_emac.h:428
ICSS_EMAC_PruStatistics::tx1024byte
volatile uint32_t tx1024byte
Definition: icss_emac.h:715
ICSS_EMAC_Params::fwStaticMMap
ICSS_EMAC_FwStaticMmap * fwStaticMMap
Definition: icss_emac.h:625
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:629
ICSS_EMAC_FwDynamicMmap::queueDescriptorOffset
uint32_t queueDescriptorOffset
Definition: icss_emac.h:417
ICSS_EMAC_Config
Base EMAC handle containing pointers to all modules required for driver to work.
Definition: icss_emac.h:552
ICSS_EMAC_RxArgument::icssEmacHandle
ICSS_EMAC_Handle icssEmacHandle
Definition: icss_emac.h:650