MCUXpresso SDK API Reference Manual  Rev 2.16.000
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Hardware Station Interface(SI)

Overview

Group for Station Interface(SI) API and data structure. data structures are prefixed with netc_si. APIs are prefixed with NETC_SI.

Data Structures

struct  netc_hw_enetc_si_config_t
 Station Interface configuration. More...
 
struct  netc_si_l2mf_config_t
 L2 Mac Filter Configuration for SI. More...
 
struct  netc_si_l2vf_config_t
 L2 VLAN Filter Configuration for SI. More...
 
struct  netc_si_discard_statistic_t
 SI frame drop statistic struct. More...
 
struct  netc_si_traffic_statistic_t
 SI traffic statistic struct. More...
 
struct  netc_si_config_t
 SI Configuration. More...
 
union  netc_tx_bd_t
 Transmit Buffer Descriptor format. More...
 
union  netc_rx_bd_t
 Receive Buffer Descriptor format. More...
 
struct  netc_tx_bdr_config_t
 Configuration for the SI Tx Buffer Descriptor Ring Configuration. More...
 
struct  netc_tx_bdr_t
 Transmit BD ring handler data structure. More...
 
struct  netc_rx_bdr_config_t
 Configuration for the SI Rx Buffer Descriptor Ring Configuration. More...
 
struct  netc_rx_bdr_t
 Receive BD ring handler data structure. More...
 
struct  netc_bdr_config_t
 Configuration for the buffer descriptors ring. More...
 
struct  netc_psi_rx_msg_t
 PSI receive message information. More...
 
struct  netc_vsi_msg_tx_status_t
 VSI message transmit status. More...
 

Macros

#define NETC_VLAN_PCP_DEI_VALUE(pcp, dei)   (((uint8_t)((pcp)&0x7U) << 1U) | ((dei)&0x1U))
 Macro to cover VLAN PCP, DEI value to internal used pcpDei value. More...
 

Enumerations

enum  netc_hw_enetc_si_vlan_type {
  kNETC_ENETC_StanCVlan = 0x1U,
  kNETC_ENETC_StanSVlan = 0x2U,
  kNETC_ENETC_CustomVlan1 = 0x4U,
  kNETC_ENETC_CustomVlan2 = 0x8U
}
 VLAN Ethertypes. More...
 
enum  netc_hw_enetc_si_rxr_group {
  kNETC_SiBDRGroupOne = 0U,
  kNETC_SiBDRGroupTwo
}
 SI receive BD ring group index. More...
 
enum  netc_tx_bdr_flags_t
 Status/Interrupts flags for the TX BDR. More...
 
enum  netc_rx_bdr_flags_t
 Status/Interrupts flags for the RX BDR. More...
 
enum  netc_psi_msg_flags_t {
  kNETC_PsiRxMsgFromVsi1Flag = 0x2,
  kNETC_PsiRxMsgFromVsi2Flag = 0x4,
  kNETC_PsiFLRFromVsi1Flag = 0x20000
}
 PSI message interrupt type. More...
 
enum  netc_vsi_msg_flags_t {
  kNETC_VsiMsgTxFlag = 0x1,
  kNETC_VsiMsgRxFlag = 0x1 << 1U
}
 VSI message interrupt flags. More...
 
enum  netc_vsi_number_t
 VSI number bit map, VSI1 starts from bit1.
 

Data Structure Documentation

struct netc_hw_enetc_si_config_t

Data Fields

uint32_t bandWeight: 4
 Station interface traffic class bandwidth weight.
 
uint32_t vlanCtrl: 4
 VLAN Ethertypes can be inserted by the SI driver, set with OR of netc_hw_enetc_si_vlan_type. More...
 
uint32_t antiSpoofEnable: 1
 Anti-spoofing enable.
 
uint32_t vlanInsertEnable: 1
 Software SI-based VLAN Insertion enable, avtive when enSIBaseVlan is true.
 
uint32_t vlanExtractEnable: 1
 SI-based VLAN removed from frame enable, avtive when enSIBaseVlan is true.
 
uint32_t sourcePruneEnable: 1
 Source pruning enable.
 
uint32_t rxRingUse: 7
 
Number of Rx Rings to be used, when enable Rx ring group, this equal to the sum of all

Rx group rings. More...

 
uint32_t txRingUse: 7
 
Number of Tx Rings to be used, note that when SI is Switch management ENETC SI, the

number not include Tx ring 0. More...

 
uint32_t valnToIpvEnable: 1
 Enable the VLAN PCP/DEI value (use NETC_VLAN_PCP_DEI_VALUE marco) to internal priority value mapping. More...
 
uint32_t rxBdrGroupNum: 2
 Rx BD ring group number, range in 0 ~ 2. More...
 
uint32_t ringPerBdrGroup: 3
 The ring number in every Rx BD ring group, range in 1 ~ 8, active when rxBdrGroupNum not equal zero. More...
 
netc_hw_enetc_si_rxr_group defaultRxBdrGroup
 The selected Rx BD ring group, active when rxBdrGroupNum not equal zero. More...
 
uint8_t vlanToIpvMap [16]
 Frame VLAN pcp|dei to IPV mapping, active when valnToIpvEnable is true. More...
 
uint8_t ipvToRingMap [8]
 BD ring used within the default Rx BD ring group for IPV n, active when rxBdrGroupNum not equal zero. More...
 
uint8_t vsiTcToTC [8]
 Maps the VSI traffic class to transmit traffic class, done after the ENETC txPrio to TC mapping, only available for VSI. More...
 
bool enSIBaseVlan
 Enable use SI-based VLAN information. More...
 
netc_enetc_vlan_tag_t siBaseVlan
 SI-based VLAN information, active when enSIBaseVlan is true. More...
 

Field Documentation

uint32_t netc_hw_enetc_si_config_t::vlanCtrl
uint32_t netc_hw_enetc_si_config_t::rxRingUse
uint32_t netc_hw_enetc_si_config_t::txRingUse
uint32_t netc_hw_enetc_si_config_t::valnToIpvEnable
uint32_t netc_hw_enetc_si_config_t::rxBdrGroupNum
uint32_t netc_hw_enetc_si_config_t::ringPerBdrGroup
netc_hw_enetc_si_rxr_group netc_hw_enetc_si_config_t::defaultRxBdrGroup
uint8_t netc_hw_enetc_si_config_t::vlanToIpvMap[16]
uint8_t netc_hw_enetc_si_config_t::ipvToRingMap[8]
uint8_t netc_hw_enetc_si_config_t::vsiTcToTC[8]
bool netc_hw_enetc_si_config_t::enSIBaseVlan
netc_enetc_vlan_tag_t netc_hw_enetc_si_config_t::siBaseVlan
struct netc_si_l2mf_config_t

Data Fields

bool macUCPromis
 Enable/Disable MAC unicast promiscuous. More...
 
bool macMCPromis
 Enable/Disable MAC multicast promiscuous. More...
 
bool rejectUC
 Reject Unicast. More...
 
bool rejectMC
 Reject Multicast. More...
 
bool rejectBC
 Reject Broadcast. More...
 

Field Documentation

bool netc_si_l2mf_config_t::macUCPromis
bool netc_si_l2mf_config_t::macMCPromis
bool netc_si_l2mf_config_t::rejectUC
bool netc_si_l2mf_config_t::rejectMC
bool netc_si_l2mf_config_t::rejectBC
struct netc_si_l2vf_config_t

Data Fields

bool acceptUntagged
 Accept/Reject untagged frame. More...
 
bool enPromis
 Enable/Disable VLAN promiscuous. More...
 
bool useOuterVlanTag
 Use outer/inner VLAN tag for filtering. More...
 

Field Documentation

bool netc_si_l2vf_config_t::acceptUntagged
bool netc_si_l2vf_config_t::enPromis
bool netc_si_l2vf_config_t::useOuterVlanTag
struct netc_si_discard_statistic_t

Data Fields

uint32_t programError
 Due to programming error ( non-existing BD ring or non-existing group, or SI disabled or BD ring disabled). More...
 
uint32_t busError
 Due to system bus error. More...
 
uint32_t lackBD [14]
 Due to lack of Rx BDs available. More...
 

Field Documentation

uint32_t netc_si_discard_statistic_t::programError
uint32_t netc_si_discard_statistic_t::busError
uint32_t netc_si_discard_statistic_t::lackBD[14]
struct netc_si_traffic_statistic_t
struct netc_si_config_t

Data Fields

uint32_t tcBWWeight
 SI traffic class bandwidth weight. More...
 

Field Documentation

uint32_t netc_si_config_t::tcBWWeight
union netc_tx_bd_t

A union type cover the BD used as Standard/Extended/WriteBack format.

Field Documentation

uint64_t netc_tx_bd_t::addr

Little Endian.

uint16_t netc_tx_bd_t::bufLen
uint16_t netc_tx_bd_t::frameLen
uint32_t netc_tx_bd_t::flags
uint32_t netc_tx_bd_t::enableInterrupt
uint32_t netc_tx_bd_t::isExtended
uint32_t netc_tx_bd_t::isFinal
uint32_t netc_tx_bd_t::timestamp

Timestamp write back.

uint32_t netc_tx_bd_t::__pad0__

/ Transmit timestamp identifier, only active on Switch management ENETC.

uint16_t netc_tx_bd_t::tpid
uint16_t netc_tx_bd_t::vid
uint16_t netc_tx_bd_t::dei
uint16_t netc_tx_bd_t::pcp
uint8_t netc_tx_bd_t::eFlags
uint8_t netc_tx_bd_t::isFinal
uint32_t netc_tx_bd_t::status
uint32_t netc_tx_bd_t::written
union netc_rx_bd_t

Field Documentation

uint64_t netc_rx_bd_t::addr
uint16_t netc_rx_bd_t::internetChecksum
uint16_t netc_rx_bd_t::parserSummary
uint32_t netc_rx_bd_t::srcPort
uint32_t netc_rx_bd_t::rssHash
uint32_t netc_rx_bd_t::rssHashSwt
uint16_t netc_rx_bd_t::bufLen
uint16_t netc_rx_bd_t::vid
uint16_t netc_rx_bd_t::dei
uint16_t netc_rx_bd_t::pcp
uint8_t netc_rx_bd_t::tpid
uint8_t netc_rx_bd_t::hr
uint8_t netc_rx_bd_t::flags
uint8_t netc_rx_bd_t::error
uint8_t netc_rx_bd_t::isReady
uint8_t netc_rx_bd_t::isFinal
uint32_t netc_rx_bd_t::timestamp

Switch response timestamp.

uint16_t netc_rx_bd_t::txtsid
uint32_t netc_rx_bd_t::hr
uint32_t netc_rx_bd_t::isReady
uint32_t netc_rx_bd_t::isFinal
struct netc_tx_bdr_config_t

Data Fields

uint32_t len
 Size of BD ring which shall be multiple of 8 BD. More...
 
netc_tx_bd_tbdArray
 BDR base address which shall be 128 bytes aligned. More...
 
netc_tx_frame_info_tdirtyArray
 Tx cleanup ring. More...
 
bool enIntr
 Enable/Disable completion interrupt. More...
 
bool enThresIntr
 Enable/Disable threshold interrupt. More...
 
bool enCoalIntr
 Enable/Disable interrupt coalescing. More...
 
uint32_t intrThreshold
 Interrupt coalescing packet threshold. More...
 
uint32_t intrTimerThres
 Interrupt coalescing timer threshold, specified in NETC clock cycles. More...
 
uint8_t msixEntryIdx
 MSIX entry index of Tx ring interrupt. More...
 
bool isVlanInsert
 Enable/Disable VLAN insert offload. More...
 
bool isUserCRC
 Enable/Disable user provided the CRC32 - FCS at end of frame. More...
 
uint8_t wrrWeight
 Weight used for arbitration when rings have same priority. More...
 
uint8_t priority
 Priority of the Tx BDR. More...
 

Field Documentation

uint32_t netc_tx_bdr_config_t::len
netc_tx_bd_t* netc_tx_bdr_config_t::bdArray
netc_tx_frame_info_t* netc_tx_bdr_config_t::dirtyArray
bool netc_tx_bdr_config_t::enIntr
bool netc_tx_bdr_config_t::enThresIntr
bool netc_tx_bdr_config_t::enCoalIntr
uint32_t netc_tx_bdr_config_t::intrThreshold
uint32_t netc_tx_bdr_config_t::intrTimerThres
uint8_t netc_tx_bdr_config_t::msixEntryIdx
bool netc_tx_bdr_config_t::isVlanInsert
bool netc_tx_bdr_config_t::isUserCRC
uint8_t netc_tx_bdr_config_t::wrrWeight
uint8_t netc_tx_bdr_config_t::priority
struct netc_tx_bdr_t

Data Fields

netc_tx_bd_tbdBase
 Tx BDR base address. More...
 
netc_tx_frame_info_tdirtyBase
 Tx cleanup ring base address. More...
 
uint16_t producerIndex
 Current index for transmit. More...
 
uint16_t cleanIndex
 Current index for tx cleaning. More...
 
uint32_t len
 Length of this BD ring. More...
 

Field Documentation

netc_tx_bd_t* netc_tx_bdr_t::bdBase
netc_tx_frame_info_t* netc_tx_bdr_t::dirtyBase
uint16_t netc_tx_bdr_t::producerIndex
uint16_t netc_tx_bdr_t::cleanIndex
uint32_t netc_tx_bdr_t::len
struct netc_rx_bdr_config_t

Data Fields

bool extendDescEn
 False - Use 16Bytes standard BD. More...
 
netc_rx_bd_tbdArray
 BD ring base address which shall be 128 bytes aligned. More...
 
uint32_t len
 BD ring length in the unit of 16Bytes standard BD. More...
 
uint64_t * buffAddrArray
 Rx buffers array with BD length(half of BD length if use exteneded BD). More...
 
uint16_t buffSize
 Size of all Rx buffers in this BD ring. More...
 
bool enThresIntr
 Enable/Disable threshold interrupt. More...
 
bool enCoalIntr
 Enable/Disable interrupt coalescing. More...
 
uint32_t intrThreshold
 Interrupt coalescing packet threshold. More...
 
uint32_t intrTimerThres
 Interrupt coalescing timer threshold, specified in NETC clock cycles. More...
 
uint8_t msixEntryIdx
 MSIX entry index of Rx ring interrupt. More...
 
bool disVlanPresent
 Disable/Enable VLAN in BD. More...
 
bool enVlanExtract
 Enable/Disable VLAN extract. More...
 
bool isKeepCRC
 Whether user provided the CRC32 - FCS at end of frame. More...
 
bool congestionMode
 False - lossy. More...
 
bool enHeaderAlign
 Enable/disable +2B alignment to frame. More...
 

Field Documentation

bool netc_rx_bdr_config_t::extendDescEn

True - Use 32Bytes extended BD.

netc_rx_bd_t* netc_rx_bdr_config_t::bdArray
uint32_t netc_rx_bdr_config_t::len

Shall be multiple of 8/16 for standard/exteneded BD.

uint64_t* netc_rx_bdr_config_t::buffAddrArray
uint16_t netc_rx_bdr_config_t::buffSize
bool netc_rx_bdr_config_t::enThresIntr
bool netc_rx_bdr_config_t::enCoalIntr
uint32_t netc_rx_bdr_config_t::intrThreshold
uint32_t netc_rx_bdr_config_t::intrTimerThres
uint8_t netc_rx_bdr_config_t::msixEntryIdx
bool netc_rx_bdr_config_t::disVlanPresent
bool netc_rx_bdr_config_t::enVlanExtract
bool netc_rx_bdr_config_t::isKeepCRC
bool netc_rx_bdr_config_t::congestionMode

True - lossless.

bool netc_rx_bdr_config_t::enHeaderAlign
struct netc_rx_bdr_t

Data Fields

netc_rx_bd_tbdBase
 Rx BDR base address. More...
 
bool extendDesc
 Use extended buffer descriptor. More...
 
uint16_t index
 Current index for read. More...
 
uint32_t len
 Length of this BD ring, unit of 16Bytes standard BD. More...
 
uint64_t * buffArray
 Rx buffers array of this ring. More...
 
uint32_t buffSize
 Rx buffers size for all BDs in this ring. More...
 

Field Documentation

netc_rx_bd_t* netc_rx_bdr_t::bdBase
bool netc_rx_bdr_t::extendDesc
uint16_t netc_rx_bdr_t::index
uint32_t netc_rx_bdr_t::len
uint64_t* netc_rx_bdr_t::buffArray
uint32_t netc_rx_bdr_t::buffSize
struct netc_bdr_config_t

Data Fields

netc_rx_bdr_config_trxBdrConfig
 Receive buffer ring configuration array. More...
 
netc_tx_bdr_config_ttxBdrConfig
 Transmit buffer ring configuration array. More...
 

Field Documentation

netc_rx_bdr_config_t* netc_bdr_config_t::rxBdrConfig
netc_tx_bdr_config_t* netc_bdr_config_t::txBdrConfig
struct netc_psi_rx_msg_t

Data Fields

uint8_t * msgBuff
 The buffer address application set before receiving message. More...
 
uint32_t msgLen
 Received message length. More...
 

Field Documentation

uint8_t* netc_psi_rx_msg_t::msgBuff
uint32_t netc_psi_rx_msg_t::msgLen
struct netc_vsi_msg_tx_status_t

Data Fields

bool txBusy
 The VSI Tx busy flag, become idle when the PSI receive and clear the related status. More...
 
bool isTxErr
 Tx error flag. More...
 
uint16_t msgCode
 The error code or user-defined content. More...
 

Field Documentation

bool netc_vsi_msg_tx_status_t::txBusy
bool netc_vsi_msg_tx_status_t::isTxErr
uint16_t netc_vsi_msg_tx_status_t::msgCode

Macro Definition Documentation

#define NETC_VLAN_PCP_DEI_VALUE (   pcp,
  dei 
)    (((uint8_t)((pcp)&0x7U) << 1U) | ((dei)&0x1U))

Enumeration Type Documentation

Enumerator
kNETC_ENETC_StanCVlan 

Standard C-VLAN 0x8100.

kNETC_ENETC_StanSVlan 

Standard S-VLAN 0x88A8.

kNETC_ENETC_CustomVlan1 

Custom VLAN as defined by CVLANR1[ETYPE].

kNETC_ENETC_CustomVlan2 

Custom VLAN as defined by CVLANR2[ETYPE].

Enumerator
kNETC_SiBDRGroupOne 

SI Rx BD ring group index one.

kNETC_SiBDRGroupTwo 

SI Rx BD ring group index two.

Each flag get its own bit thus it support bit AND/OR operation.

Each flag get its own bit thus it support bit AND/OR operation.

Enumerator
kNETC_PsiRxMsgFromVsi1Flag 

Message receive interrupt enable, initiated by VSI1.

kNETC_PsiRxMsgFromVsi2Flag 

Message receive interrupt enable, initiated by VSI2.

kNETC_PsiFLRFromVsi1Flag 

Function level reset interrupt enable, initiated by VSI1.

Enumerator
kNETC_VsiMsgTxFlag 

Message sent to PSI has completed and response received.

kNETC_VsiMsgRxFlag 

Message received from PSI.