[Live-devel] NIC overruns on IBM stbx25xx embedded platform

Ross Finlayson finlayson at live.com
Wed Apr 27 08:51:02 PDT 2005


>The MediaMVP device uses a smc91111 nic, with only a
>tiny on-chip buffer. I've tried increasing the kernel's RX buffers
>with no improvement.

Are you sure you did that properly?  This is what I would do to try to fix 
the problem (it worked for "MPlayer" - see "libmpdemux/demux_rtp.cpp" in 
the "MPlayer" source code).

In particular, after a successful call to "subsession->initiate()", you can 
do the following:
         int rtpSocketNum = subsession->rtpSource()->RTPgs()->socketNum();
         increaseReceiveBufferTo(*env, rtpSocketNum, desiredReceiveBufferSize);

For "MPlayer", I use a 'desiredReceiveBufferSize' of 100,000 bytes for an 
audio stream, and 2,000,000 bytes for a video stream.  This is probably 
being much too conservative, but they are values that work for MPlayer.

>I believe (please correct me if
>I'm wrong) overruns are an indication that the nics
>interrupts aren't being handled fast enough to
>transfer the data from the on-chip buffer to the
>kernel's buffer (ie not the same as dropped)

Not necessarily.  That is one possible cause, but they could also be caused 
by the packets overflowing the kernel's receive buffer before the 
user-level application (in this case, your RTSP client) gets to read 
them.  In that case, increasing the kernel's receive buffer should solve 
the problem.


	Ross Finlayson
	LIVE.COM
	<http://www.live.com/>



More information about the live-devel mailing list