Intel IXP400 Frozen Dessert Maker User Manual


 
Intel
®
IXP400 Software
Buffer Management
April 2005 IXP400 Software Version 2.0 Programmer’s Guide
42 Document Number: 252539, Revision: 007
Linux utilizes memory structures called skbuffs. The user allocates IXP_BUF and sets the data
payload pointer to the skbuff payload pointer. An os_buf_ptr field inside the ixp_ctrl structure
(defined below) of the IXP_BUF is used to save the actual skbuff pointer. In this manner, the OS
buffers are not freed directly by the IXP400 software.
The IXP400 software IXP_BUF to skbuff mapping is a ‘zero-copy’ implementation. There is no
copy/performance penalty in using Linux skbuffs. Other proprietary buffer schemes could also be
implemented with the IXP400 software using the mbuf-to-skbuff implementation as an example.
ix_ctrl: Intel
®
IXP400 Software Internal Pool Management Fields
As shown in Figure 11, the ix_ctrl fields are set and used by the IXP_BUF pool manager provided
by the OSAL component. Some of the fields can be used for specific purposes for different
operating systems For example, signature verification fields is used in Linux when NDEBUG is
enabled. The reserved field may be used in VxWorks to support IPv6 format.
Figure 11. IXP_BUF: ix_ctrl Structure
ix_ne: IXP400 NPE Shared Structure
As shown in Figure 12, this structure is provided by the Intel XScale core to the NPE. Depending
upon the access-layer component usage, some of these fields may be visible to the user through use
of macros and also may be altered by the NPE. The lower five words of this structure are defined
according to the needs of NPE microcode; therefore, different NPE images may have different
structure for this part. The upper three words follows the same structure across all the NPE images.
Note: Users should not make any assumptions to usage of the service-specific fields in this NPE-shared
structure. The fields are for internal NPE usage only.
Reserved
ix_osbuf_ptr
ix_chain
ix_allocated_data
ix_pool
ix_allocated_len
ix_signature
Reserved
ix_ctrl: 2nd Structure of IX_BUF
(Internal fields)