Hi, I am trying to develop write a packet receive code for IXP1200. I am using a scheduler-worker paradigm to do the receive. i.e, my scheduler is in microengine 0 and one of its thread (thread 0) checks for availability of packet in any of the ports. I have 2 microengines doing the packet receive and so there are 8 threads for 8 ports, one thread per port. Two other microengines do the transmit (and one ue is free) Actually the code works for packets of length = 64 bytes. (i.e length of one chunk). But when the size of the packet increases, the data read from the FIFO is corrupt. I can give more details on this if anyone is interested. /* some of the details that could be of interest at this time: 1) I am not using autopush. My scheduler reads the rcv_rdy_lo register. 2) The scheduler constructs the rcv_req with the thread id responsible for that port. 3) The reading of rcv_cntl is done by the worker after it gets the start_receive signal 4) The worker read the packet and processes it. 5) The packet that gets corrupt is usually the first workd of the IP packet (version, etc) */ Thanks a lot. Jagan.