Intel® IXP400 Software

Access-Layer Components: HSS-Access (IxHssAcc) API

Figure 69. HSS Channelized Receive Operation

 

 

Circular

 

RxCircBufSizeB

buffer for

 

channel 0

 

 

Client Rx Buffer in SDRAM

 

Circular

 

RxCircBufSizeB

buffer for

Total Size =

channel 1

 

(N+1)*CircBufSizeB

 

 

 

 

...

 

 

Circular

 

RxCircBufSizeB

buffer for

 

channel N

 

 

F0-TSa

F1-TSa

F2-TSa

.. .

F0-TSb

F1-TSb

F2-TSb

.. .

F0-TSz

F1-TSz

F2-TSz

.. .

HssChannelizedRxTrigger

queue

2.Rx data moved to circular buffers,

one for each channel

NPE-A

 

Hss Channelized Rx

3. Trigger event

Operation

sent to queue at

 

specified

 

frequency

1.Rx data received from HSS port

 

 

 

Frame 0

 

 

 

 

Frame 1

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F0-

F0-

F0-

 

...

F0-

F1-

F1-

F1-

 

...

F1-

 

TSa

TSb

TSc

 

TSz

TSa

TSb

TSc

 

TSz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Channel:

0

1

2

 

 

N

0

1

2

 

 

N

 

HSS Port Serial Data Stream

(TSa, TSb, ... = timeslots configured as "voice")

B2384-02

For transmission, ixOsServCacheDmaMalloc() is used to allocated two pools: a data buffer pool and a pointer list pool. The data buffer pool has N buffers — one for each channel. Each buffer is divided into K sections and each section has L bytes. The pointer list pool has K pointer lists. Each list has N pointers, each pointing to a section in a data buffer.

Before channelized service is enabled, the pointers have to be initialized to point to the first section of each data buffer in the data buffer pool, and data for transmission is prepared and moved to the data buffer. The pointers to the data buffer pool and pointer list pool are passed to IxHssAcc when ixHssAccChanConnect() is called.

The client can check the current location of data being transmitted by using the registered ixHssAccChanRxCallback() function. When the Rx callback function is called, an offset value txOffset is returned.

txOffset indicates which pointer list in the pointer list pool is pointing to the sections of the data buffers currently being transmitted. Thus the client can use txOffset to determine where new data needs to be put into the data buffer pool for transmission. For example, data can be prepared and moved into sections pointed by the (txOffset-2)thpointer list. The length of the buffer, K * L, needs to be large enough so that the client has enough time to prepare data for transmission.

April 2005

IXP400 Software Version 2.0

Programmer’s Guide

216

Document Number: 252539, Revision: 007

 

Page 216
Image 216
Intel IXP400 manual HSS Channelized Receive Operation