> I have not looked very far into what lwIP is doing > internally. I know that the function ip_output_if() is where > my CPU is spending over 80% of its time during my UDP > transfers. I am using a Gigabit MAC/PHY, so lwIP's > transmission speed is no where near what the hardware can > sustain. There should not be any waiting for the hardware.
OK, I seem to have overread the fact that you are using UDP, I was thinking of TCP. However, spending 80% of the time in ip_output_if() seems a little strange to me, since there is nothing in that function which could be consuming cycles (no loop, just a checksum calculation over 20 bytes). How did you measure the 80% and are you sure that netif->output() and nested calls don't count into the time of ip_output_if()? I'd imagine the cycles are going into your network driver instead of ip_output_if()... > In fact, the Xilinx driver I have, from the reference design > I started with, does not even check to see if the MAC's FIFO > is full. It just blindly sends data to the MAC presuming the > FIFO will be emptied faster than it can be filled. This > presumption is justified if the PHY has negotiated a Gigabit > connection. In my test setup, it has. > > Is there something in particular you would like me to look into? Hm, checking if the 80% are including netif->output() or not. Oh, did you check you aren't running out of memory? Aside from that, I'm afraid I don't think I can help much. Simon _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
