By "PC is hanging" I mean that I am unable to do any activity. The mouse pointer disappears, keyboard freezes etc. I think this is because of the FULL_DUPLEX option in port configuration in the octmac.c file. I changed it to HALF_DUPLEX and I no longer see the problem.
That could be because maybe your PC network card is configured to or can do only Half duplex. Anyway, you can ignore that for now since things are fine.
When I do a ping I get the trace message "Ring to microengine full" after sometime. I am guessing that the microcode that de-queues messages from the ring is not running or not loaded on the micro engine.
So I am assuming you are doing a ping from the IXP to the host. Try the other way, from host to IXP. Run tcpdump on the host interface, also turn on debugging everywhere (ingress, egress, l3, RM) and see how far the arp packet sent by the host goes. Next, statically add the Mac address of the IXP port on the host and then see how far the ICMP echo request goes on the IXP. good luck debugging :)