This peripheral driver supports ICSSG Ethernet peripheral found in Jacinto 7 processor family.
Data Structures | |
struct | Icssg_TxTsEvtCbInfo |
Icssg TX timestamp event callback info structure. This is passed to application when TX timestamp is retrieved by ICSSG driver. More... | |
struct | IcssgMacPort_SetQueueCtPremptModeInArgs |
Input arguments for ICSSG_MACPORT_IOCTL_SET_QUEUE_CUT_THROUGH_PREEMPT_SELECT command. More... | |
struct | IcssgMacPort_ConfigSpecialFramePrioInArgs |
Input arguments for ICSSG_MACPORT_IOCTL_CONFIG_SPL_FRAME_PRIO command. More... | |
struct | IcssgMacPort_SetPortStateInArgs |
Input args for ICSSG_MACPORT_IOCTL_SET_PORT_STATE command. More... | |
struct | Icssg_SetAcceptFrameCheckInArgs |
Input args for ICSSG_MACPORT_IOCTL_SET_ACCEPT_FRAME_CHECK command. More... | |
struct | Icssg_MacAddr |
MAC address. More... | |
struct | IcssgMacPort_SetMacAddressInArgs |
Input args for ICSSG_MACPORT_IOCTL_SET_MACADDR command. More... | |
struct | Icssg_VlanFidParams |
VLAN FID entry parameters. More... | |
struct | Icssg_VlanFidEntry |
VLAN FID table entry. More... | |
struct | Icssg_FdbEntry |
FDB entry configuration. More... | |
struct | Icssg_HwFdbEntry |
HW FDB table entry. More... | |
struct | Icssg_FdbEntry_ReadSlotInArgs |
Input arguments for ICSSG_FDB_IOCTL_READ_SLOT_ENTRIES command. More... | |
struct | Icssg_FdbEntry_GetSlotOutArgs |
Output arguments for ICSSG_FDB_IOCTL_GET_SLOT_ENTRIES command. More... | |
struct | Icssg_DfltVlanCfg |
Default VLAN configuration. More... | |
struct | Icssg_MacPortDfltVlanCfgInArgs |
Input arguments for ICSSG_PER_IOCTL_VLAN_SET_MACPORT_DFLT_VID command. More... | |
struct | Icssg_IngressRateLim |
Input arguments for ICSSG_MACPORT_IOCTL_SET_INGRESS_RATE_LIM command. More... | |
struct | Icssg_custom_Fw |
ICSSG custom firmware. More... | |
struct | Icssg_FwPoolMem |
ICSSG buffer pool memories. More... | |
struct | Icssg_MdioLinkStateChangeInfo |
PHY link status change event information. More... | |
struct | Icssg_mdioLinkIntCfg |
struct | Icssg_Cfg |
ICSSG peripheral configuration parameters. More... | |
struct | IcssgMacPort_Cfg |
ICSSG mac port configuration parameters. More... | |
Functions | |
const Icssg_FwPoolMem * | EnetCb_GetFwPoolMem (Enet_Type enetType, uint32_t instId) |
ICSSG memory pool callback function. More... | |
void | IcssgMacPort_initCfg (IcssgMacPort_Cfg *macPortCfg) |
Initialises Mac Port COnfiguration. More... | |
uint32_t | Icssg_getSliceNum (Enet_Type enetType, uint32_t instId, Enet_MacPort macPort) |
ICSSG memory pool callback function. More... | |
Typedefs | |
typedef void(* | Icssg_MdioLinkStateChangeCb) (Icssg_MdioLinkStateChangeInfo *info, void *appArg) |
Icssg PHY link state change callback function. More... | |
ICSSG FDB entry fields. | |
#define | ICSSG_FDB_ENTRY_P0_MEMBERSHIP (ENET_BIT(0U)) |
Host port membership. More... | |
#define | ICSSG_FDB_ENTRY_P1_MEMBERSHIP (ENET_BIT(1U)) |
Physical port 1 membership. More... | |
#define | ICSSG_FDB_ENTRY_P2_MEMBERSHIP (ENET_BIT(2U)) |
Physical port 2 membership. More... | |
#define | ICSSG_FDB_ENTRY_AGEABLE (ENET_BIT(3U)) |
Ageable bit. More... | |
#define | ICSSG_FDB_ENTRY_BLOCK (ENET_BIT(4U)) |
Block bit. More... | |
#define | ICSSG_FDB_ENTRY_SECURE (ENET_BIT(5U)) |
Secure bit. More... | |
#define | ICSSG_FDB_ENTRY_TOUCHED (ENET_BIT(6U)) |
Touched bit. More... | |
#define | ICSSG_FDB_ENTRY_VALID (ENET_BIT(7U)) |
Valid bit. More... | |
#define ICSSG_PUBLIC_IOCTL | ( | x | ) |
Helper macro to create IOCTL commands for ICSSG per.
#define ICSSG_PORT_NUM (3U) |
Number of supported ports (host port, physical ports 1 and 2).
#define ICSSG_MAC_PORT_MAX (ICSSG_PORT_NUM - 1U) |
Maximum number of MAC ports per ICSSG instance.
#define ICSSG_PER_DUALMAC_PORT_MAX (1U) |
Maximum number of MAC ports in a ICSSG peripheral in Dual-MAC mode. Note that each port in Dual-MAC is handled as a separate Enet peripheral.
#define ICSSG_PER_SWITCH_PORT_MAX (ICSSG_MAC_PORT_MAX) |
Maximum number of MAC ports in a ICSSG peripheral in Switch mode.
#define ICSSG_INSTANCE_NUM (2U) |
Number of supported icssg instances.
#define ICSSG_MAX_NUM_BUFFER_POOLS (24U) |
Max number of buffer pools.
#define ICSSG_DUALMAC_TX_CH_NUM (ENET_CFG_RM_TX_CH_MAX) |
Number of TX channels per slice in Dual-MAC mode.
#define ICSSG_DUALMAC_RX_FLOW_NUM (ENET_CFG_RM_RX_CH_MAX / 2) |
Number of RX flows per slice in Dual-MAC mode.
#define ICSSG_SWITCH_TX_CH_NUM (ENET_CFG_RM_TX_CH_MAX) |
Number of TX channels in Switch mode.
#define ICSSG_SWITCH_RX_FLOW_NUM (ENET_CFG_RM_RX_CH_MAX) |
Number of RX flows in Switch mode.
#define ICSSG_DUALMAC_PORT_BUFFER_POOL_NUM (0U) |
Number of port buffer pools required for Dual-MAC.
#define ICSSG_DUALMAC_HOST_EGRESS_QUEUE_NUM (2U) |
Number of host egress queues required for Dual-MAC.
#define ICSSG_SWITCH_PORT_BUFFER_POOL_NUM (8U) |
Number of port buffer pools required for Dual-MAC. This value can be modified if required from 1 to 8.
#define ICSSG_SWITCH_PORT_BUFFER_POOL_NUM_MAX (8U) |
Maximum number of port buffer pools. This offset used for Host pool init config.
#define ICSSG_SWITCH_HOST_EGRESS_QUEUE_NUM (2U) |
Number of host egress queues required for Dual-MAC.
#define ICSSG_HOST_EGRESS_BUFFER_PADDING (2048U) |
Host egress queue padding size.
#define ICSSG_SCRATCH_BUFFER_SIZE (ENET_UTILS_ALIGN((2048U), ICSSG_CACHELINE_ALIGNMENT)) |
Size of the scratch buffer used for error frames and large frames.
#define ICSSG_FDB_ENTRY_P0_MEMBERSHIP (ENET_BIT(0U)) |
Host port membership.
Indicates host port membership.
#define ICSSG_FDB_ENTRY_P1_MEMBERSHIP (ENET_BIT(1U)) |
Physical port 1 membership.
Indicates that MAC ID is connected to physical port 1.
#define ICSSG_FDB_ENTRY_P2_MEMBERSHIP (ENET_BIT(2U)) |
Physical port 2 membership.
Indicates that MAC ID is connected to physical port 2.
#define ICSSG_FDB_ENTRY_AGEABLE (ENET_BIT(3U)) |
Ageable bit.
Ageable bit is set for learned entries and cleared for static entries.
#define ICSSG_FDB_ENTRY_BLOCK (ENET_BIT(4U)) |
Block bit.
If set for SA then packet is dropped (can be used to implement a blacklist). If set for DA then packet is determined to be a special packet.
#define ICSSG_FDB_ENTRY_SECURE (ENET_BIT(5U)) |
Secure bit.
If set for DA then the SA from the packet is not learned.
#define ICSSG_FDB_ENTRY_TOUCHED (ENET_BIT(6U)) |
Touched bit.
If set, it means packet has been seen recently with source address + FID matching MAC address/FID of entry.
#define ICSSG_FDB_ENTRY_VALID (ENET_BIT(7U)) |
Valid bit.
Set if entry is valid.
#define ICSSG_RATE_SRC_SEL_FT1_MATCH0 (0U) |
#define ICSSG_RATE_SRC_SEL_FT1_MATCH1 (1U) |
#define ICSSG_RATE_SRC_SEL_FT1_MATCH2 (2U) |
#define ICSSG_RATE_SRC_SEL_FT1_MATCH3 (3U) |
#define ICSSG_RATE_SRC_SEL_FT1_MATCH4 (4U) |
#define ICSSG_RATE_SRC_SEL_FT1_MATCH5 (5U) |
#define ICSSG_RATE_SRC_SEL_FT1_MATCH6 (6U) |
#define ICSSG_RATE_SRC_SEL_FT1_MATCH7 (7U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH0 (8U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH1 (9U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH2 (10U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH3 (11U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH4 (12U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH5 (13U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH6 (14U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH7 (15U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH8 (16U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH9 (17U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH10 (18U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH11 (19U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH12 (20U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH13 (21U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH14 (22U) |
#define ICSSG_RATE_SRC_SEL_FT3_MATCH15 (23U) |
#define ICSSG_RATE_SRC_SEL_FT_RX_UC (24U) |
#define ICSSG_RATE_SRC_SEL_FT_RX_MC (25U) |
#define ICSSG_RATE_SRC_SEL_FT_RX_BC (26U) |
#define ICSSG_RATE_SRC_SEL_FT_RX_SAV (27U) |
#define ICSSG_RATE_SRC_SEL_FT_RX_FWD (28U) |
#define ICSSG_RATE_SRC_SEL_FT_RX_RCV (29U) |
#define ICSSG_RATE_SRC_SEL_FT_RX_VLAN (30U) |
#define ICSSG_RATE_SRC_SEL_FT_RX_DA_P (31U) |
#define ICSSG_RATE_SRC_SEL_FT_RX_DA_I (32U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW0 (33U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW1 (34U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW2 (35U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW3 (36U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW4 (37U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW5 (38U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW6 (39U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW7 (40U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW8 (41U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW9 (42U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW10 (43U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW11 (44U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW12 (45U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW13 (46U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW14 (47U) |
#define ICSSG_RATE_SRC_SEL_RX_CLASS_RAW15 (48U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH0 (0U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH1 (1U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH2 (2U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH3 (3U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH4 (4U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH5 (5U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH6 (6U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH7 (7U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH8 (8U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH9 (9U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH10 (10U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH11 (11U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH12 (12U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH13 (13U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH14 (14U) |
#define ICCSG_RX_CLASS_DATA_FT3_MATCH15 (15U) |
#define ICCSG_RX_CLASS_DATA_FT1_MATCH0 (16U) |
#define ICCSG_RX_CLASS_DATA_FT1_MATCH1 (17U) |
#define ICCSG_RX_CLASS_DATA_FT1_MATCH2 (18U) |
#define ICCSG_RX_CLASS_DATA_FT1_MATCH3 (19U) |
#define ICCSG_RX_CLASS_DATA_FT1_MATCH4 (20U) |
#define ICCSG_RX_CLASS_DATA_FT1_MATCH5 (21U) |
#define ICCSG_RX_CLASS_DATA_FT1_MATCH6 (22U) |
#define ICCSG_RX_CLASS_DATA_FT1_MATCH7 (23U) |
#define ICCSG_RX_CLASS_DATA_FT_RX_DA_I (24U) |
#define ICCSG_RX_CLASS_DATA_FT_RX_DA_P (25U) |
#define ICCSG_RX_CLASS_DATA_FT_RX_VLAN (26U) |
#define ICCSG_RX_CLASS_DATA_FT_RX_RCV (27U) |
#define ICCSG_RX_CLASS_DATA_FT_RX_FWD (28U) |
#define ICCSG_RX_CLASS_DATA_FT_RX_BC (29U) |
#define ICCSG_RX_CLASS_DATA_FT_RX_MC (30U) |
#define ICCSG_RX_CLASS_DATA_FT_RX_SAV (31U) |
#define ICSSG_TAS_MIN_CYCLE_TIME_NS (1000000) |
Minimum cycle time supported by implementation (in ns).
#define ICSSG_TAS_MIN_WINDOW_DURATION_NS (10000) |
Minimum TAS window duration supported by implementation (in ns).
typedef void(* Icssg_MdioLinkStateChangeCb) (Icssg_MdioLinkStateChangeInfo *info, void *appArg) |
Icssg PHY link state change callback function.
Callback for PHY link state change interrupt (MDIO_LINKINT). This callback is invoked from interrupt context.
enum Icssg_Instance_Num |
enum Icssg_Ioctl |
ICSSG IOCTL commands.
Enumerator | |
---|---|
ICSSG_MACPORT_IOCTL_ENABLE_PROMISC_MODE | Enable promiscuous mode. IOCTL params:
Type: Synchronous. |
ICSSG_MACPORT_IOCTL_DISABLE_PROMISC_MODE | Disable promiscuous mode. IOCTL params:
Type: Synchronous. |
ICSSG_PER_IOCTL_VLAN_RESET_TABLE | Populate VLAN table with default VLAN entry configuration. IOCTL params:
Type: Synchronous. |
ICSSG_PER_IOCTL_VLAN_SET_ENTRY | Update a VLAN table entry. IOCTL params:
Type: Synchronous. |
ICSSG_PER_IOCTL_VLAN_GET_ENTRY | Get VLAN entry for VLAN table for requested VLAN id. IOCTL params:
Type: Synchronous. |
ICSSG_PER_IOCTL_SET_PORT_STATE | Set port state. Sets the port state in one of the following states (refer to Icssg_PortState):
IOCTL params:
Type: Asynchronous. |
ICSSG_FDB_IOCTL_ADD_ENTRY | Add FDB entry. IOCTL params:
Type: Asynchronous. |
ICSSG_FDB_IOCTL_REMOVE_ENTRY | Delete FDB entry. IOCTL params:
Type: Asynchronous. |
ICSSG_FDB_IOCTL_REMOVE_ALL_ENTRIES | Delete all FDB entries. IOCTL params:
Type: Asynchronous |
ICSSG_FDB_IOCTL_REMOVE_AGEABLE_ENTRIES | Remove all ageable entries. IOCTL params:
Type: Asynchronous. |
ICSSG_FDB_IOCTL_READ_SLOT_ENTRIES | Read the four entries of one FDB slot. IOCTL params:
Type: Asynchronous. |
ICSSG_FDB_IOCTL_GET_SLOT_ENTRIES | Get the four entries of one FDB slot. IOCTL params:
Type: Asynchronous. |
ICSSG_MACPORT_IOCTL_SET_MACADDR | Add MAC address of the interface. IOCTL params:
Type: Synchronous. |
ICSSG_HOSTPORT_IOCTL_SET_MACADDR | Add MAC address of the host port interface. IOCTL params:
Type: Synchronous. |
ICSSG_PER_IOCTL_TAS_TRIGGER | |
ICSSG_PER_IOCTL_TAS_ENABLE | |
ICSSG_PER_IOCTL_TAS_DISABLE | |
ICSSG_PER_IOCTL_TAS_RESET | |
ICSSG_PER_IOCTL_VLAN_SET_HOSTPORT_DFLT_VID | Set the default VLAN ID and PCP bits for host port. Sets the default VLAN ID and PCP bits for host port. Only the VID and PCP fields from the passed VLAN configuration are valid, the CFI bit is ignored. IOCTL params:
Type: Synchronous. |
ICSSG_PER_IOCTL_VLAN_SET_MACPORT_DFLT_VID | Set the default VLAN ID and PCP bits for specified MAC port. IOCTL params:
Type: Synchronous. |
ICSSG_FDB_IOCTL_SET_AGING_PERIOD | Set the aging period of the FDB. Sets the FDB aging period in nanoseconds. IOCTL params:
Type: Synchronous. |
ICSSG_MACPORT_IOCTL_ENABLE_UCAST_FLOOD | Enable flooding of unicast packets to host port. IOCTL params:
Type: Asynchronous. |
ICSSG_MACPORT_IOCTL_DISABLE_UCAST_FLOOD | Disable flooding of unicast packets to host port. IOCTL params:
Type: Asynchronous. |
ICSSG_MACPORT_IOCTL_ENABLE_MCAST_FLOOD | Enable flooding of multicast packets to host port. IOCTL params:
Type: Asynchronous. |
ICSSG_MACPORT_IOCTL_DISABLE_MCAST_FLOOD | Disable flooding of multicast packets to host port. IOCTL params:
Type: Asynchronous. |
ICSSG_MACPORT_IOCTL_SET_ACCEPT_FRAME_CHECK | Set the criteria for accepting VLAN tagged/untagged packets. Sets the accept criteria to:
IOCTL params:
Type: Synchronous. |
ICSSG_MACPORT_IOCTL_SET_INGRESS_RATE_LIM | Configure ingress rate limiting. IOCTL params:
Type: Synchronous. |
ICSSG_MACPORT_IOCTL_SET_QUEUE_CUT_THROUGH_PREEMPT_SELECT | cut through or prempt select configuration. IOCTL params:
Type: Synchronous. |
ICSSG_MACPORT_IOCTL_CONFIG_SPL_FRAME_PRIO | special frame priority configuration. IOCTL params:
Type: Synchronous. |
ICSSG_ENABLE_PROTOCOL_SPECIFIC_TAG_IOCTL | Enable HSR Tag Removal Offload. IOCTL params:
Type: Asynchronous. |
ICSSG_DISABLE_PROTOCOL_SPECIFIC_TAG_IOCTL | Disable HSR Tag Removal Offload. IOCTL params:
Type: Asynchronous. |
ICSSG_INTERNAL_IOCTL_REGISTER_HANDLER | Register Handler for the IOCTL CMD. IOCTL params:
Type: Synchronous. |
enum Icssg_PortState |
Port states.
const Icssg_FwPoolMem* EnetCb_GetFwPoolMem | ( | Enet_Type | enetType, |
uint32_t | instId | ||
) |
ICSSG memory pool callback function.
Initializes the ICSSG memory pool callback function.
enetType | Enet Peripheral type |
instId | Instance Number |
void IcssgMacPort_initCfg | ( | IcssgMacPort_Cfg * | macPortCfg | ) |
Initialises Mac Port COnfiguration.
Gets Application configuration related to ICSSG.
macPortCfg | Pointer to ICSSG mac port configuration structure |
uint32_t Icssg_getSliceNum | ( | Enet_Type | enetType, |
uint32_t | instId, | ||
Enet_MacPort | macPort | ||
) |
ICSSG memory pool callback function.
Initializes the ICSSG memory pool callback function.
enetType | Enet Peripheral type |
instId | Instance Number |
macPort | Enet Mac Port |