Main Page   Modules   Alphabetical List   Data Structures   File List   Data Fields   Globals  

IXP425 Ethernet Access (IxEthAcc) API

ethAcc is a library that does provides access to the internal IXP425 10/100Bt Ethernet MACs. More...

Data Structures

struct  IxEthAccMacAddr
 The IEEE 802.3 Ethernet MAC address structure. More...

struct  IxEthEthObjStats
 This struct defines the statistics returned by this component. The component returns MIB2 EthObj variables which should are obtained from the hardware or maintained by this component. More...


Defines

#define IX_ETH_ACC_NUMBER_OF_PORTS
 Defines related to the number of NPE's and mapping between PortId and NPE.

#define IX_IEEE803_MAC_ADDRESS_SIZE
 Defines the size of the MAC address NPE.

#define IX_ETH_ACC_NUM_TX_PRIORITIES
 The number of transmit priorities.

#define IX_ETHACC_RX_MBUF_MIN_SIZE
 This defines the recommanded minimum size of MBUF's submitted to the frame receive service.

#define IXP425_ETH_ACC_MII_MAX_ADDR
 This defines the highest MII address of any attached PHYs.

#define ixEthAccMiiPhyScan(phyPresent)
 : deprecated API entry point. This definition ensures backward compatibility

#define ixEthAccMiiPhyConfig(phyAddr, speed100, fullDuplex, autonegotiate)
 : deprecated API entry point. This definition ensures backward compatibility

#define ixEthAccMiiPhyReset(phyAddr)
 : deprecated API entry point. This definition ensures backward compatibility

#define ixEthAccMiiLinkStatus(phyAddr, linkUp, speed100, fullDuplex, autoneg)
 : deprecated API entry point. This definition ensures backward compatibility

#define ixEthAccMiiShow(phyAddr)
 : deprecated API entry point. This definition ensures backward compatibility


Typedefs

typedef void(* IxEthAccPortTxDoneCallback )(UINT32 callbackTag, IX_MBUF *buffer)
 Function prototype for Ethernet Tx Buffer Done callback. Registered via ixEthAccTxBufferDoneCallbackRegister.

typedef void(* IxEthAccPortRxCallback )(UINT32 callbackTag, IX_MBUF *buffer, IxEthAccPortId portId)
 Function prototype for Ethernet Frame Rx callback. Registered via ixEthAccPortRxCallbackRegister.


Enumerations

enum  IxEthAccStatus {
  IX_ETH_ACC_SUCCESS,
  IX_ETH_ACC_FAIL,
  IX_ETH_ACC_INVALID_PORT,
  IX_ETH_ACC_PORT_UNINITIALIZED,
  IX_ETH_ACC_MAC_UNINITIALIZED,
  IX_ETH_ACC_INVALID_ARG,
  IX_ETH_TX_Q_FULL,
  IX_ETH_ACC_NO_SUCH_ADDR
}
 This is an enum to define the Ethernet Access status. More...

enum  IxEthAccPortId {
  IX_ETH_PORT_1,
  IX_ETH_PORT_2
}
 This is an emum to define the IXP425 Mac Ethernet device. More...

enum  IxEthAccTxPriority {
  IX_ETH_ACC_TX_PRIORITY_0,
  IX_ETH_ACC_TX_PRIORITY_1,
  IX_ETH_ACC_TX_PRIORITY_2,
  IX_ETH_ACC_TX_PRIORITY_3,
  IX_ETH_ACC_TX_PRIORITY_4,
  IX_ETH_ACC_TX_PRIORITY_5,
  IX_ETH_ACC_TX_PRIORITY_6,
  IX_ETH_ACC_TX_PRIORITY_7,
  IX_ETH_ACC_TX_DEFAULT_PRIORITY
}
 enum to submit a frame with relative priority. More...

enum  IxEthAccDuplexMode {
  IX_ETH_ACC_FULL_DUPLEX,
  IX_ETH_ACC_HALF_DUPLEX
}
 Definition to provision the duplex mode of the MAC. More...

enum  IxEthAccTxSchedulerDiscipline {
  FIFO_NO_PRIORITY,
  FIFO_PRIORITY
}
 Definition for the port transmit scheduling discipline Definition for the port transmit scheduling discipline. More...


Functions

IxEthAccStatus ixEthAccInit (void)
 Initialize the Ethernet Access Service.

void ixEthAccUnload (void)
 Unload the Ethernet Access Service.

IxEthAccStatus ixEthAccPortInit (IxEthAccPortId portId)
 Initialize an Ethernet MAC Port.

IxEthAccStatus ixEthAccPortTxFrameSubmit (IxEthAccPortId portId, IX_MBUF *buffer, IxEthAccTxPriority priority)
 This function shall be used to submit MBUFs buffers for transmission on a particular MAC device.

IxEthAccStatus ixEthAccPortTxDoneCallbackRegister (IxEthAccPortId portId, IxEthAccPortTxDoneCallback txCallbackFn, UINT32 callbackTag)
 This function registers a callback function to facilitate the return of transmit buffers to the user.

IxEthAccStatus ixEthAccPortRxCallbackRegister (IxEthAccPortId portId, IxEthAccPortRxCallback rxCallbackFn, UINT32 callbackTag)
 The function registered through this function shall be called once per received Ethernet frame.

IxEthAccStatus ixEthAccPortRxFreeReplenish (IxEthAccPortId portId, IX_MBUF *buffer)
 This function provides buffers for the Ethernet receive path.

IxEthAccStatus ixEthAccPortEnable (IxEthAccPortId portId)
 Enable a port.

IxEthAccStatus ixEthAccPortDisable (IxEthAccPortId portId)
 Disable a port.

IxEthAccStatus ixEthAccPortEnabledQuery (IxEthAccPortId portId, BOOL *enabled)
 Get the enabled state of a port.

IxEthAccStatus ixEthAccPortPromiscuousModeClear (IxEthAccPortId portId)
 Put the Ethernet MAC device in non-promiscuous mode.

IxEthAccStatus ixEthAccPortPromiscuousModeSet (IxEthAccPortId portId)
 Put the MAC device in promiscuous mode.

IxEthAccStatus ixEthAccPortUnicastMacAddressSet (IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
 Configure unicast MAC address for a particular port.

IxEthAccStatus ixEthAccPortUnicastMacAddressGet (IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
 Get unicast MAC address for a particular MAC port.

IxEthAccStatus ixEthAccPortMulticastAddressJoin (IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
 ADD a multicast address to the MAC address table.

IxEthAccStatus ixEthAccPortMulticastAddressJoinAll (IxEthAccPortId portId)
 Filter all frames with multicast dest.

IxEthAccStatus ixEthAccPortMulticastAddressLeave (IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
 Remove a multicast address from the MAC address table.

IxEthAccStatus ixEthAccPortMulticastAddressLeaveAll (IxEthAccPortId portId)
 Clear the MAC address table.

IxEthAccStatus ixEthAccPortUnicastAddressShow (IxEthAccPortId portId)
 Display unicast address has been configured using ixEthAccUnicastMacAddressSet.

void ixEthAccPortMulticastAddressShow (IxEthAccPortId portId)
 Display multicast address which have been configured using ixEthAccMulticastAddressJoin Display multicast address which have been configured using ixEthAccMulticastAddressJoin.

IxEthAccStatus ixEthAccPortDuplexModeSet (IxEthAccPortId portId, IxEthAccDuplexMode mode)
 Set the duplex mode for the MAC.

IxEthAccStatus ixEthAccPortDuplexModeGet (IxEthAccPortId portId, IxEthAccDuplexMode *mode)
 Get the duplex mode for the MAC.

IxEthAccStatus ixEthAccPortTxFrameAppendPaddingEnable (IxEthAccPortId portId)
 Enable the appending of padding bytes to runt frames submitted to this port.

IxEthAccStatus ixEthAccPortTxFrameAppendPaddingDisable (IxEthAccPortId portId)
 Disable the appending of padding bytes to the runt frames submitted to this port.

IxEthAccStatus ixEthAccPortTxFrameAppendFCSEnable (IxEthAccPortId portId)
 Enable the appending of Ethernet FCS to all frames submitted to this port.

IxEthAccStatus ixEthAccPortTxFrameAppendFCSDisable (IxEthAccPortId portId)
 Disable the appending of Ethernet FCS to all frames submitted to this port.

IxEthAccStatus ixEthAccPortRxFrameAppendFCSEnable (IxEthAccPortId portId)
 Forward frames with FCS included in the receive buffer to the user.

IxEthAccStatus ixEthAccPortRxFrameAppendFCSDisable (IxEthAccPortId portId)
 Disable the appending of Ethernet FCS to all frames submitted to this port.

IxEthAccStatus ixEthAccTxSchedulingDisciplineSet (IxEthAccPortId portId, IxEthAccTxSchedulerDiscipline sched)
 Set the port scheduling to one of IxEthAccTxSchedulerDiscipline Set the port scheduling to one of IxEthAccTxSchedulerDiscipline.

IxEthAccStatus ixEthAccMibIIStatsGet (IxEthAccPortId portId,IxEthEthObjStats *retStats)
 Return the statistics maintained for a port. Return the statistics maintained for a port.

IxEthAccStatus ixEthAccMibIIStatsGetClear (IxEthAccPortId portId, IxEthEthObjStats *retStats)
 Return and clear the statistics maintained for a port. Return and clear the statistics maintained for a port.

IxEthAccStatus ixEthAccMibIIStatsClear (IxEthAccPortId portId)
 Clear the statistics maintained for a port. Clear the statistics maintained for a port.

IxEthAccStatus ixEthAccMacInit (IxEthAccPortId portId)
 Initialize the ethernet MAC settings.

void ixEthAccStatsShow (IxEthAccPortId portId)
 Display a ports statistics on the standard io console using printf. Display a ports statistics on the standard io console using printf.

IxEthAccStatus ixEthAccMiiReadRtn (UINT8 phyAddr, UINT8 phyReg, UINT16 *value)
 Read a 16 bit value from a PHY.

IxEthAccStatus ixEthAccMiiWriteRtn (UINT8 phyAddr, UINT8 phyReg, UINT16 value)
 Write a 16 bit value to a PHY.

IxEthAccStatus ixEthAccMiiStatsShow (UINT32 phyAddr)
 Display detailed information on a specified PHY.


Detailed Description

ethAcc is a library that does provides access to the internal IXP425 10/100Bt Ethernet MACs.


Define Documentation

#define IX_ETH_ACC_NUM_TX_PRIORITIES
 

The number of transmit priorities.

Definition at line 133 of file IxEthAcc.h.

#define IX_ETH_ACC_NUMBER_OF_PORTS
 

Defines related to the number of NPE's and mapping between PortId and NPE.

Definition at line 102 of file IxEthAcc.h.

#define IX_ETHACC_RX_MBUF_MIN_SIZE
 

This defines the recommanded minimum size of MBUF's submitted to the frame receive service.

Definition at line 176 of file IxEthAcc.h.

#define IX_IEEE803_MAC_ADDRESS_SIZE
 

Defines the size of the MAC address NPE.

Definition at line 112 of file IxEthAcc.h.

#define ixEthAccMiiLinkStatus phyAddr,
linkUp,
speed100,
fullDuplex,
autoneg   ) 
 

: deprecated API entry point. This definition ensures backward compatibility

See ixEthMiiLinkStatus

Note:
this feature is board specific

Definition at line 1710 of file IxEthAcc.h.

#define ixEthAccMiiPhyConfig phyAddr,
speed100,
fullDuplex,
autonegotiate   ) 
 

: deprecated API entry point. This definition ensures backward compatibility

See ixEthMiiPhyConfig

Note:
this feature is board specific

Definition at line 1680 of file IxEthAcc.h.

#define ixEthAccMiiPhyReset phyAddr   ) 
 

: deprecated API entry point. This definition ensures backward compatibility

See ixEthMiiPhyReset

Note:
this feature is board specific

Definition at line 1695 of file IxEthAcc.h.

#define ixEthAccMiiPhyScan phyPresent   ) 
 

: deprecated API entry point. This definition ensures backward compatibility

See ixEthMiiPhyScan

Note:
this feature is board specific

Definition at line 1666 of file IxEthAcc.h.

#define ixEthAccMiiShow phyAddr   ) 
 

: deprecated API entry point. This definition ensures backward compatibility

See ixEthMiiPhyShow

Note:
this feature is board specific

Definition at line 1727 of file IxEthAcc.h.

#define IXP425_ETH_ACC_MII_MAX_ADDR
 

This defines the highest MII address of any attached PHYs.

Max number for PHY address is 31, add on for range checking.

Definition at line 186 of file IxEthAcc.h.


Typedef Documentation

typedef void(* IxEthAccPortRxCallback)(UINT32 callbackTag, IX_MBUF *buffer, IxEthAccPortId portId)
 

Function prototype for Ethernet Frame Rx callback. Registered via ixEthAccPortRxCallbackRegister.

It is the responsibility of the user function to free any MBUF's which it receives.

  • Reentrant - yes , The user provided function should be reentrant.
  • ISR Callable - yes , The user provided function must be callable from an ISR.
    Calling Context :
    This callback is called in the context of the queue manager dispatch loop ixQmgrgrDispatcherLoopRun within the IXP425 Queue Manager (IxQMgr) API component. The calling context may be from interrupt or high priority thread. The decision is system specific.
    Parameters:
    callbackTag - This tag is that provided when the callback was registered for a particular MAC via ixEthAccPortRxCallbackRegister. It allows the same callback to be used for multiple MACs.
    mbuf - Pointer to the Rx mbuf header. Mbufs may be chained if the frame length is greater than the supplied mbuf length.
    portId - ID of the port which match the destination MAC address for this frame (The value is greater or equal to IX_ETH_DB_NUMBER_OF_PORTS if the MAC address is not found in the copy of the database shared with the NPE)
    Returns:
    void
    Note:
    Buffers may not be filled up to the length supplied in ixEthAccPortRxFreeReplenish(). The firmware fills them to the previous 64 bytes boundary. The user has to be aware that the length of the received mbufs may be smaller than the length of the supplied mbufs. The mbuf header contains the following modified field
    • IX_MBUF_PKT_LEN is set in the header of the first mbuf and indicates the total frame size
    • IX_MBUF_LEN is set each mbuf header and indicates the payload length
    • IX_MBUF_NEXT_BUFFER_IN_PKT_PTR contains a pointer to the next mbuf, or NULL at the end of a chain.
    • IX_MBUF_NEXT_PKT_IN_CHAIN_PTR is modified. Its value is reset to NULL
    • IX_MBUF_FLAGS contains the bit 4 set for a broadcast packet and the bit 5 set for a multicast packet. Other bits are unmodified.
    Warning:
    Any portID returned via the received callback is invalid if greater than 5. If your system defines more than 6 ports (0 to 5) in IxEthDBPortDefs.h you MUST check this value before using it in conjunction with the Ethernet Learning/Filtering Database. This is a constraint of an NPE Rx descriptor format limitation, which can report valid ports only between 0 and 5, and will use 6 for "reserved" and "7" for "not found", while the XScale Ethernet Database can use these numbers for legitimate ports.

Definition at line 473 of file IxEthAcc.h.

typedef void(* IxEthAccPortTxDoneCallback)( UINT32 callbackTag, IX_MBUF *buffer )
 

Function prototype for Ethernet Tx Buffer Done callback. Registered via ixEthAccTxBufferDoneCallbackRegister.

This function is called once the previously submitted buffer is no longer required by this service. It may be returned upon successful transmission of the frame or shutdown of port prior to submission. The calling of this registered function is not a guarantee of successful transmission of the buffer.

  • Reentrant - yes , The user provided function should be reentrant.
  • ISR Callable - yes , The user provided function must be callable from an ISR.

Calling Context :

This callback is called in the context of the queue manager dispatch loop ixQmgrgrDispatcherLoopRun within the IXP425 Queue Manager (IxQMgr) API component. The calling context may be from interrupt or high priority thread. The decision is system specific.
Parameters:
callbackTag - This tag is that provided when the callback was registered for a particular MAC via ixEthAccPortRxCallbackRegister. It allows the same callback to be used for multiple MACs.
mbuf - Pointer to the Tx mbuf descriptor.
Returns:
void
Note:
The field IX_MBUF_NEXT_PKT_IN_CHAIN_PTR is modified by the access layer and reset to NULL.

Definition at line 368 of file IxEthAcc.h.


Enumeration Type Documentation

enum IxEthAccDuplexMode
 

Definition to provision the duplex mode of the MAC.

Enumeration values:
IX_ETH_ACC_FULL_DUPLEX  Full duplex operation of the MAC.
IX_ETH_ACC_HALF_DUPLEX  Half duplex operation of the MAC.

Definition at line 162 of file IxEthAcc.h.

enum IxEthAccPortId
 

This is an emum to define the IXP425 Mac Ethernet device.

Enumeration values:
IX_ETH_PORT_1  Ethernet Port 1.
IX_ETH_PORT_2  Ethernet port 2.

Definition at line 88 of file IxEthAcc.h.

enum IxEthAccStatus
 

This is an enum to define the Ethernet Access status.

Enumeration values:
IX_ETH_ACC_SUCCESS  return success
IX_ETH_ACC_FAIL  return fail
IX_ETH_ACC_INVALID_PORT  return invalid port
IX_ETH_ACC_PORT_UNINITIALIZED  return uninitialized
IX_ETH_ACC_MAC_UNINITIALIZED  return MAC uninitialized
IX_ETH_ACC_INVALID_ARG  return invalid arg
IX_ETH_TX_Q_FULL  return tx queue is full
IX_ETH_ACC_NO_SUCH_ADDR  return no such address

Definition at line 71 of file IxEthAcc.h.

enum IxEthAccTxPriority
 

enum to submit a frame with relative priority.

Enumeration values:
IX_ETH_ACC_TX_PRIORITY_0  Lowest Priorty submission.
IX_ETH_ACC_TX_PRIORITY_1  submission prority of 1 (0 is lowest)
IX_ETH_ACC_TX_PRIORITY_2  submission prority of 2 (0 is lowest)
IX_ETH_ACC_TX_PRIORITY_3  submission prority of 3 (0 is lowest)
IX_ETH_ACC_TX_PRIORITY_4  submission prority of 4 (0 is lowest)
IX_ETH_ACC_TX_PRIORITY_5  submission prority of 5 (0 is lowest)
IX_ETH_ACC_TX_PRIORITY_6  submission prority of 6 (0 is lowest)
IX_ETH_ACC_TX_PRIORITY_7  Highest priority submission.
IX_ETH_ACC_TX_DEFAULT_PRIORITY  By default send all pkts with lowest priority.

Definition at line 141 of file IxEthAcc.h.

enum IxEthAccTxSchedulerDiscipline
 

Definition for the port transmit scheduling discipline Definition for the port transmit scheduling discipline.

Select the port transmit scheduling discipline

  • FIFO : No Priority : In this configuration all frames submitted to the access component shall be sub-mitted to the MAC hardware in the strict order in which it was received.
  • FIFO : Priority : This shall be a very simple priority mechanism all submitted frames at a higher prior-ity shall be forwarded to Ethernet MAC for transmission before lower priorities. There shall be no fairness mechanisms applied across different priorities. Higher priority frames could starve lower priority frames indefinitely.
Enumeration values:
FIFO_NO_PRIORITY  frames submitted with no priority
FIFO_PRIORITY  higher prority frames submitted before lower priority

Definition at line 1333 of file IxEthAcc.h.


Function Documentation

ixEthAccInit void   ) 
 

Initialize the Ethernet Access Service.

Initialize the IXP425 Ethernet Access Service.

  • Reentrant - no
  • ISR Callable - no

This should be called once per module initialization.

Precondition:
The NPE must first be downloaded with the required microcode which supports all required features.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : Service has failed to initialize.

ixEthAccMacInit IxEthAccPortId  portId  ) 
 

Initialize the ethernet MAC settings.

* - Reentrant - no

  • ISR Callable - no

Parameters:
portId IxEthAccPortId
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.

ixEthAccMibIIStatsClear IxEthAccPortId  portId  ) 
 

Clear the statistics maintained for a port. Clear the statistics maintained for a port.

  • Reentrant - yes
  • ISR Callable - no

Precondition:
Parameters:
portId IxEthAccPortId
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : Invalid arguments.
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccMibIIStatsGet IxEthAccPortId  portId,
IxEthEthObjStats retStats
 

Return the statistics maintained for a port. Return the statistics maintained for a port.

  • Reentrant - yes
  • ISR Callable - no

Precondition:
Parameters:
portId IxEthAccPortId
retStats IxEthEthObjStats
Note:
Please note the user is responsible for cache coheriency of the retStat buffer. The data is actually populated via the NPE's. As such cache safe memory should be used in the retStats argument.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : Invalid arguments.
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccMibIIStatsGetClear IxEthAccPortId  portId,
IxEthEthObjStats retStats
 

Return and clear the statistics maintained for a port. Return and clear the statistics maintained for a port.

  • Reentrant - yes
  • ISR Callable - yes

Precondition:
Parameters:
portId IxEthAccPortId
retStats IxEthEthObjStats
Note:
Please note the user is responsible for cache coheriency of the retStats buffer. The data is actually populated via the NPE's. As such cache safe memory should be used in the retStats argument.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : invalid arguments.
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccMiiReadRtn UINT8  phyAddr,
UINT8  phyReg,
UINT16 *  value
 

Read a 16 bit value from a PHY.

Read a 16-bit word from a register of a MII-compliant PHY. Reading is performed through the MII management interface. This function returns when the read has successfully completed, or when a timeout has elapsed.

  • Reentrant - no
  • ISR Callable - no

Precondition:
The MAC on Ethernet Port 2 (NPE C) must be initialised, and generating the MDIO clock.
Parameters:
phyAddr: the address of the Ethernet PHY (0-31)
phyReg: the number of the MII register to read (0-31)
value: the value read from the register
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : failed to read register.

ixEthAccMiiStatsShow UINT32  phyAddr  ) 
 

Display detailed information on a specified PHY.

Display the current values of the first eigth MII registers for a PHY,

  • Reentrant - no
  • ISR Callable - no

Precondition:
The MAC on Ethernet Port 2 (NPE C) must be initialised, and generating the MDIO clock.
Parameters:
phyAddr: the address of the Ethernet PHY (0-31)
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : invalid arguments.

ixEthAccMiiWriteRtn UINT8  phyAddr,
UINT8  phyReg,
UINT16  value
 

Write a 16 bit value to a PHY.

Write a 16-bit word from a register of a MII-compliant PHY. Writing is performed through the MII management interface. This function returns when the write has successfully completed, or when a timeout has elapsed.

  • Reentrant - no
  • ISR Callable - no

Precondition:
The MAC on Ethernet Port 2 (NPE C) must be initialised, and generating the MDIO clock.
Parameters:
phyAddr: the address of the Ethernet PHY (0-31)
phyReg: the number of the MII register to write (0-31)
value: the value to write to the register
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : failed to write register.

ixEthAccPortDisable IxEthAccPortId  portId  ) 
 

Disable a port.

This disables an Ethernet port for both Tx and Rx. Free MBufs are returned to the user via the registered callback when the port is disabled

  • Reentrant - yes
  • ISR Callable - yes

Precondition:
The port must be enabled with ixEthAccPortEnable, otherwise this function has no effect
Parameters:
portId : IxEthAccPortId : Port id to act upon.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is not initialized
  • IX_ETH_ACC_MAC_UNINITIALIZED : port MAC address is not initialized

ixEthAccPortDuplexModeGet IxEthAccPortId  portId,
IxEthAccDuplexMode mode
 

Get the duplex mode for the MAC.

return the duplex configuration of the IXP425 MAC.

Note:
The configuration should match that provisioned on the PHY. See ixEthAccDuplexModeSet
  • Reentrant - no
  • ISR Callable - no

Parameters:
portId : IxEthAccPortId
*mode : IxEthAccDuplexMode
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortDuplexModeSet IxEthAccPortId  portId,
IxEthAccDuplexMode  mode
 

Set the duplex mode for the MAC.

Configure the IXP425 MAC to either full or half duplex.

Note:
The configuration should match that provisioned on the PHY.
  • Reentrant - no
  • ISR Callable - no

Parameters:
portId : IxEthAccPortId
mode : IxEthAccDuplexMode
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortEnable IxEthAccPortId  portId  ) 
 

Enable a port.

This enables an Ethernet port for both Tx and Rx.

  • Reentrant - yes
  • ISR Callable - yes

Precondition:
The port must first be initialized via ixEthAccPortInit and the MAC address must be set using ixEthAccUnicastMacAddressSet before enabling it The rx and Tx Done callbacks registration via ixEthAccPortTxDoneCallbackRegister amd ixEthAccPortRxCallbackRegister has to be done before enabling the traffic.
Parameters:
portId : IxEthAccPortId : Port id to act upon.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is not initialized
  • IX_ETH_ACC_MAC_UNINITIALIZED : port MAC address is not initialized

ixEthAccPortEnabledQuery IxEthAccPortId  portId,
BOOL *  enabled
 

Get the enabled state of a port.

Return the enabled state of the port.

  • Reentrant - yes
  • ISR Callable - yes

Precondition:
The port must first be initialized via ixEthAccPortInit
Parameters:
portId : IxEthAccPortId : Port id to act upon.
enabled : BOOL : location to store the state of the port
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid

ixEthAccPortInit IxEthAccPortId  portId  ) 
 

Initialize an Ethernet MAC Port.

Initialize the NPE/Ethernet MAC hardware. Verify NPE downloaded and operational. The NPE shall be available for usage once this API returns. Verify that the Ethernet port is present before initializing

  • Reentrant - no
  • ISR Callable - no

This should be called once per mac device. The NPE/MAC shall be in disabled state after init.

Precondition:
The component must be initialized via ixEthAccInit The NPE must first be downloaded with the required microcode which supports all required features.
Dependant on Services: (Must be initialized before using this service may be initialized) ixNPEmh - NPE Message handling service. ixQmgr - Queue Manager component.

Parameters:
portId : IxEthAccPortId
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS: if the ethernet port is not present, a warning will be issued.
  • IX_ETH_ACC_FAIL : The NPE processor has failed to initialize.
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.

ixEthAccPortMulticastAddressJoin IxEthAccPortId  portId,
IxEthAccMacAddr macAddr
 

ADD a multicast address to the MAC address table.

ADD a multicast address to the MAC address table.

Note:
Due to the operation of the Ethernet MAC multicast filtering mechanism, frames which do not have a multicast destination address which were provisioned via this API may be forwarded to the NPE's. This is a result of the hardware comparison algorithm used in the destination mac address logic within the Ethernet MAC.
See Also: IXP425 hardware development manual.

Other functions modify the MAC filtering

In all cases, unicast and broadcast addresses are forwarded to the application.

  • Reentrant - no
  • ISR Callable - no

Parameters:
portId - Ethernet port id.
*macAddr - Ethernet Mac address.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : Error writing to the MAC registers
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortMulticastAddressJoinAll IxEthAccPortId  portId  ) 
 

Filter all frames with multicast dest.

This function clears the MAC address table, and then sets the MAC to forward ALL multicast frames to the NPE. Specifically, it forwards all frames whose destination address has the LSB of the highest byte set (01:00:00:00:00:00). This bit is commonly referred to as the "multicast bit". Broadcast frames will still be forwarded.

Other functions modify the MAC filtering

In all cases, unicast and broadcast addresses are forwarded to the application.

  • Reentrant - no
  • ISR Callable - no

Parameters:
portId - Ethernet port id.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortMulticastAddressLeave IxEthAccPortId  portId,
IxEthAccMacAddr macAddr
 

Remove a multicast address from the MAC address table.

Remove a multicast address from the MAC address table.

Other functions modify the MAC filtering

In all cases, unicast and broadcast addresses are forwarded to the application.

  • Reentrant - no
  • ISR Callable - no

Parameters:
portId - Ethernet port id.
*macAddr - Ethernet Mac address.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_NO_SUCH_ADDR : Failed if MAC address was not in the table.
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortMulticastAddressLeaveAll IxEthAccPortId  portId  ) 
 

Clear the MAC address table.

This function clears the MAC address table, and then sets the MAC as configured by the promiscuous mode current settings.

Other functions modify the MAC filtering

In all cases, unicast and broadcast addresses are forwarded to the application.

  • Reentrant - no
  • ISR Callable - no

Parameters:
portId - Ethernet port id.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortMulticastAddressShow IxEthAccPortId  portId  ) 
 

Display multicast address which have been configured using ixEthAccMulticastAddressJoin Display multicast address which have been configured using ixEthAccMulticastAddressJoin.

* - Reentrant - yes

  • ISR Callable - no

Parameters:
portId - Ethernet port id.
Returns:
void

ixEthAccPortPromiscuousModeClear IxEthAccPortId  portId  ) 
 

Put the Ethernet MAC device in non-promiscuous mode.

In non-promiscuous mode the MAC will filter all frames other than destination MAC address which matches the following criteria:

  • Unicast address provisioned via ixEthAccUnicastMacAddressSet
  • All broadcast frames.
  • Multicast addresses provisioned via ixEthAccMulticastAddressJoin

See also: ixEthAccPortPromiscuousModeSet

Other functions modify the MAC filtering

In all cases, unicast and broadcast addresses are forwarded to the application.

  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId - Ethernet port id.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortPromiscuousModeSet IxEthAccPortId  portId  ) 
 

Put the MAC device in promiscuous mode.

If the device is in promiscuous mode then all all received frames shall be forwared to the NPE for processing.

See also: ixEthAccPortPromiscuousModeClear

Other functions modify the MAC filtering

In all cases, unicast and broadcast addresses are forwarded to the application.

  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId - Ethernet port id.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortRxCallbackRegister IxEthAccPortId  portId,
IxEthAccPortRxCallback  rxCallbackFn,
UINT32  callbackTag
 

The function registered through this function shall be called once per received Ethernet frame.

This function will dispatch a predefined number of frames to the user level via the provided function. The invocation shall be made for each frame dequeued from the Ethernet QM queue. The user is required to free any MBUF's supplied via this callback. In addition the registered callback must free up MBUF's from the recieve free queue when the port is disabled

If called several times the latest callback shall be registered for a particular port.

  • Reentrant - yes
  • ISR Callable - yes

Parameters:
portId - Register callback for a particular MAC device.
rxCallbackFn - IxEthAccRxCallbackFn - Function to be called when Ethernet frames are availble.
callbackTag - This tag shall be provided to the callback function.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized
  • IX_ETH_ACC_INVALID_ARG : An argument other than portId is invalid.

ixEthAccPortRxFrameAppendFCSDisable IxEthAccPortId  portId  ) 
 

Disable the appending of Ethernet FCS to all frames submitted to this port.

Do not forward the FCS portion of the received Ethernet frame to the user. The FCS is striped from the receive buffer. Frame FCS validity checks are still carried out on all received frames. This is the default behavior of the component. Do not change this behaviour while the port is enabled.

  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId : IxEthAccPortId
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortRxFrameAppendFCSEnable IxEthAccPortId  portId  ) 
 

Forward frames with FCS included in the receive buffer to the user.

Enable the appending of Ethernet FCS to all frames submitted to this port. This is the default behavior of the access component. The Frame length recieved will include the FCS. ie. A minimum sized ethernet frame shall have a length of 64bytes.

  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId : IxEthAccPortId
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortRxFreeReplenish IxEthAccPortId  portId,
IX_MBUF *  buffer
 

This function provides buffers for the Ethernet receive path.

This component does not have a buffer management mechanisms built in. All Rx buffers must be supplied to it via this interface.

  • Reentrant - yes
  • ISR Callable - yes

Parameters:
portId - Provide buffers only to specific Rx MAC.
buffer - Provide an MBUF to the Ethernet receive mechanism. Buffers size smaller than IX_ETHACC_RX_MBUF_MIN_SIZE may result in poor performances and excessive buffer chaining. Buffers larger than this size may be suitable for jumbo frames. Chained packets are not supported and the field IX_MBUF_NEXT_PKT_IN_CHAIN_PTR must be NULL.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : Buffer has was not able to queue the buffer in the receive service.
  • IX_ETH_ACC_FAIL : Buffer size is less than IX_ETHACC_RX_MBUF_MIN_SIZE
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized
Note:
If the buffer replenish operation fails it is the responsibility of the user to free the buffer.

Sufficient buffers must be supplied to the component to maintain receive throughput and avoid rx buffer underflow conditions. To meet this goal, It is expected that the user preload the component with a sufficent number of buffers prior to enabling the NPE Ethernet receive path. The recommended minimum number of buffers is 8.

For maximum performances, the mbuf size should be greater than the maximum frame size (Ethernet header, payload and FCS) + 64. Supplying smaller mbufs to the service results in mbuf chaining and degraded performances. The recommended size is IX_ETHACC_RX_MBUF_MIN_SIZE, which is enough to take care of 802.3 frames and "baby jumbo" frames without chaining, and "jumbo" frame within chaining.

Buffers may not be filled up to their length. The firware will fill them up to the previous 64 bytes boundary. The user has to be aware that the length of the received mbufs may be smaller than the length of the supplied mbufs.

Warning:
This function will only check the parameters if the NDEBUG flag is not defined. Turning on the argument checking (disabled by default) will result in a lower EthAcc performance as this function is part of the data path.

ixEthAccPortTxDoneCallbackRegister IxEthAccPortId  portId,
IxEthAccPortTxDoneCallback  txCallbackFn,
UINT32  callbackTag
 

This function registers a callback function to facilitate the return of transmit buffers to the user.

This function registers the transmit buffer done function callback for a particular port.

The registered callback function is called once the previously submitted buffer is no longer required by this service. It may be returned upon successful transmission of the frame or shutdown of port prior to submission. The calling of this registered function is not a guarantee of successful transmission of the buffer.

If called several times the latest callback shall be registered for a particular port.

  • Reentrant - yes
  • ISR Callable - yes

Precondition:
The port must be initialized via ixEthAccPortInit
Parameters:
portId - Register callback for a particular MAC device.
txCallbackFn - IxEthAccTxBufferDoneCallbackFn - Function to be called to return transmit buffers to the user.
callbackTag - This tag shall be provided to the callback function.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized
  • IX_ETH_ACC_INVALID_ARG : An argument other than portId is invalid.

ixEthAccPortTxFrameAppendFCSDisable IxEthAccPortId  portId  ) 
 

Disable the appending of Ethernet FCS to all frames submitted to this port.

Disable the appending of Ethernet FCS to all frames submitted to this port. This is not the default behavior of the access component. Note: Since the FCS is not appended to the frame it is expected that the frame submitted to the component includes a valid FCS at the end of the data, although this will not be validated. The component shall forward the frame to the Ethernet MAC WITHOUT modification. Do not change this behaviour while the port is enabled.

Note:
Tx FCS append is not disabled while Tx padding is enabled.
See also:
ixEthAccPortTxFrameAppendPaddingEnable
  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId : IxEthAccPortId
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortTxFrameAppendFCSEnable IxEthAccPortId  portId  ) 
 

Enable the appending of Ethernet FCS to all frames submitted to this port.

Enable the appending of Ethernet FCS to all frames submitted to this port. This is the default behavior of the access component. Do not change this behaviour while the port is enabled.

  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId : IxEthAccPortId
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortTxFrameAppendPaddingDisable IxEthAccPortId  portId  ) 
 

Disable the appending of padding bytes to the runt frames submitted to this port.

Disable the appending of padding bytes to runt frames submitted to this port. This is not the default behavior of the access component.

Warning:
Do not change this behaviour while the port is enabled.
  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId : IxEthAccPortId
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortTxFrameAppendPaddingEnable IxEthAccPortId  portId  ) 
 

Enable the appending of padding bytes to runt frames submitted to this port.

Enable the appending of up to 60 null-bytes to runt frames submitted to this port. This is the default behavior of the access component.

Warning:
Do not change this behaviour while the port is enabled.
Note:
When Tx padding is enabled, Tx FCS generation is turned on
See also:
ixEthAccPortTxFrameAppendFCSDusable
  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId : IxEthAccPortId
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortTxFrameSubmit IxEthAccPortId  portId,
IX_MBUF *  buffer,
IxEthAccTxPriority  priority
 

This function shall be used to submit MBUFs buffers for transmission on a particular MAC device.

This function shall be used to submit MBUFs buffers for transmission on a particular MAC device.

When the frame is transmitted, the buffer shall be returned thru the callback IxEthAccPortTxDoneCallback.

The only alterations made to the buffer are assocuated with the next packet chain pointer. This is used to internally queue frames in the service when submitting faster than the network line rate. In case of over=Submitting, the order of the frames on the network may be modified.

Buffers shall be not queued for transmission if the port is disabled. The port can be enabled using ixEthAccPortEnable

  • Reentrant - yes
  • ISR Callable - yes

Precondition:
ixEthAccPortTxDoneCallbackRegister must be called to register a function to allow this service to return the buffer to the calling service.
Note:
If the buffer submit fails for any reason the user has retained ownership of the buffer.
Parameters:
portId - MAC port ID to transmit Ethernet frame on.
buffer - pointer to an MBUF formatted buffer. Chained buffers are supported for transmission. Chained packets are not supported and the field IX_MBUF_NEXT_PKT_IN_CHAIN_PTR must be NULL.
priority - IxEthAccTxPriority
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_FAIL : Failed to queue frame for transmission.
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccPortUnicastAddressShow IxEthAccPortId  portId  ) 
 

Display unicast address has been configured using ixEthAccUnicastMacAddressSet.

Display unicast address has been configured using ixEthAccUnicastMacAddressSet. Display also the MAC filter used

Other functions modify the MAC filtering

In all cases, unicast and broadcast addresses are forwarded to the application.

  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId - Ethernet port id.
Returns:
void

ixEthAccPortUnicastMacAddressGet IxEthAccPortId  portId,
IxEthAccMacAddr macAddr
 

Get unicast MAC address for a particular MAC port.

Precondition:
The MAC address must first be set via ixEthAccMacPromiscuousModeSet If the MAC address has not been set, the function will return a IX_ETH_ACC_MAC_UNINITIALIZED status
  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId - Ethernet port id.
*macAddr - Ethernet MAC address.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_MAC_UNINITIALIZED : port MAC address is not initialized.
  • IX_ETH_ACC_FAIL : macAddr is invalid.

ixEthAccPortUnicastMacAddressSet IxEthAccPortId  portId,
IxEthAccMacAddr macAddr
 

Configure unicast MAC address for a particular port.

  • Reentrant - yes
  • ISR Callable - no

Parameters:
portId - Ethernet port id.
*macAddr - Ethernet Mac address.
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccStatsShow IxEthAccPortId  portId  ) 
 

Display a ports statistics on the standard io console using printf. Display a ports statistics on the standard io console using printf.

  • Reentrant - no
  • ISR Callable - no

Precondition:
Parameters:
portId IxEthAccPortId
Returns:
void

ixEthAccTxSchedulingDisciplineSet IxEthAccPortId  portId,
IxEthAccTxSchedulerDiscipline  sched
 

Set the port scheduling to one of IxEthAccTxSchedulerDiscipline Set the port scheduling to one of IxEthAccTxSchedulerDiscipline.

The default behavior of the component is FIFO_NO_PRIORITY.

  • Reentrant - yes
  • ISR Callable - yes

Precondition:
Parameters:
portId : IxEthAccPortId
sched : IxEthAccTxSchedulerDiscipline
Returns:
IxEthAccStatus
  • IX_ETH_ACC_SUCCESS : Set appropriate discipline.
  • IX_ETH_ACC_FAIL : Invalid/unsupported discipline.
  • IX_ETH_ACC_INVALID_PORT : portId is invalid.
  • IX_ETH_ACC_PORT_UNINITIALIZED : portId is un-initialized

ixEthAccUnload void   ) 
 

Unload the Ethernet Access Service.

* - Reentrant - no

  • ISR Callable - no

Returns:
void

Automatically generated from sources. © Intel Corp. 2003