On the other hand I think the port is not calling tcpip_input from the ISR context, I will still implement the change to eliminate a unknown. This is how I start my code in SYSBIOS:
(these are what I think are the relevant pieces to the conversation)
Create and call task:
task = Task_create( (Task_FuncPtr) echo_thread, NULL, &eb);
tcpip_init(echo_init, &init_sem);
netif_add(&netif, &laddr, &netmask, &gw, 0, arm9emac_init, tcpip_input);
Set the callbacks:
cppiram->txmsg = tcpip_callbackmsg_new(arm9emac_tx_callback, netif);
cppiram->rxmsg = tcpip_callbackmsg_new(arm9emac_rx_callback, netif):
Set the interrupts:
Hwi_Handle rxisr = Hwi_create(34, (Hwi_FuncPtr) arm9emac_rx_interrupt, NULL, NULL);
Hwi_Handle txisr = Hwi_create(35, (Hwi_FuncPtr) arm9emac_tx_interrupt, NULL, NULL);
The interrupt for RX calls the callback and input function does not seem like it is called inside the interrupt.
tcpip_input() or (ethernet_input) are called directly inside the callback not the ISR by this function:
void arm9emac_rx_interrupt(void *arg).....
/* Callback */
#if !NO_SYS
if (!cppiram->rxevent) tcpip_trycallback(cppiram->rxmsg);
#endif
maybe this is like calling it but the documentation "tcpip_trycallback" does not suggest it:
/**
* Allocate a structure for a static callback message and initialize it.
* This is intended to be used to send "static" messages from interrupt context.
Not sure what else I could be missing. Please remember that ethernet_input works. This should give some confidence that the configuration and initialization is sort of correct.
Regards