IXP2400/2800 Programming: The Complete Microengine Coding Guide

This chapter covers some advanced IXP2XXX programming topics. specifically, timers, CRC calculations, queue managers, CSIX interfaces, and the crypto unit.
You can read, or skip, the sections of this chapter as they relate to your needs. The details of this chapter are probably best read as a reference after you discover you need to take advantage of them. The details of the CSIX operations in this chapter assume a familiarity with the receive and transmit operations covered in Chapters 5 and 11.
This chapter covers the following five programming topics:
Programming with microengine timers: In addition to timestamps (covered in Chapter 8), the IXP2XXX microengines have a per-thread timer, which can be configured to send a signal to the appropriate microengine thread after a configurable amount of time. Timers can be useful in many applications that hold softstate or have buffering and retransmission requirements.
Using the Cyclical Redundancy Check (CRC) unit on the microengines: The IXP2XXX microengines contain special instructions, and dedicated hardware, for computing CRC checks on data. For applications that require CRC calculations, such as ATM SAR, using this hardware feature can significantly enhance performance.
Accessing the crypto unit on the IXP2850: As explained in Chapter 2, the IXP2850 contains two cryptographic units that can encrypt and decrypt data using AES and 3DES algorithms, and compute SHA-1 message digests and HMAC-SHA1 authentication codes. This unit is useful for applications, such as VPNs and security offload.
Receiving and transmitting frames over a CSIX interface: CSIX is a...