IXP1200 Network Processor Family ATM OC-3/12/Ethernet IP Router Example Design
54 Application Note
Modified on: 3/20/02,

4.11 Inter-Thread Signalling

Inter-thread signals are used in four ways:
Initialization, as detailed in the Microengine Initialization section.
Notification to a BDQ (Buffer Descriptor Queue) dequeue thread that data is available, as
detailed in the BDQ section.
Within the Ethernet Transmit microengine.
The StrongARM core signals the Ethernet Transmit microengine to notify it that it has
enqueued packets to send.
5.0 Project Configuration / Modifying the Example Design
The design can be assembled with a variety of options, all of which are configurable in the header
files: project_config.h and system_config.h.

5.1 project_config.h

As detailed in the projects README.txt, shared project source code can be simultaneously
complied and run in a number of different configurations. project_config.h is a small top-level
header file that is copied and modified into those different configurations.
// ATM Wire Rate
#define ATM_OC3_PORTS
// Number of ATM Ports -- OC3 defaults to 4.
// To run on IXD4521 "Rainsford" WAN Card Daughter Card, limit to 2 ports.
#define NUMBER_OF_ATM_PORTS 2
// Define NUMBER_OF_ETHERNET_PORTS to 4 for IXP1200.
// Default is 8, as supported by the IXP1240 version of this project.
#define NUMBER_OF_ETHERNET_PORTS 4
// Define SW_CRC_RX to enable CRC-32 checking via microcode table lookup.
// Project build must also load the appropriate threads.
#define SW_CRC_RX
// Define SW_CRC_TX to enable CRC-32 checking via microcode table lookup.
// Project build must also load the appropriate threads.
#define SW_CRC_TX
Parameter Description
out_abs_reg Absolute register containing the semaphores.
in_bit_number
bit number of the semaphore.
0 bits: critical section available.
1 bits: critical section occupied.
mutex_vector_exit clears specified bit.