Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Jan 2009 18:56:02 +0200
From:      "Yony Yossef" <>
To:        "'Kip Macy'" <>, "Yony Yossef" <>
Cc:,, Eitan Shefi <>, Amit Krig <>, Liran Liss <>
Subject:   RE: freebsd 7.0-RELEASE BUG ping: sendto: No buffer space available
Message-ID:  <002201c980a0$25903420$>
In-Reply-To: <>
References:  <000001c97e23$0d81df20$> <>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help

> "No buffer space available" is ENOBUFS. This error is 
> returned when the ifq is full - see IFQ_ENQUEUE in if_var.h. 
> You'll almost certainly want to set ifq_len to larger than 
> the default for a 10 gigabit driver. This most likely to be a 
> combination of ifq_len being too small and inadequate txq 
> overflow handling. However, without the code to look at I can 
> only guess.
> Cheers,
> Kip

---- my Tx loop is pretty normal (I've removed debug calls and irrelevant

while (!IFQ_DRV_IS_EMPTY(&dev->if_snd)) {

	IFQ_DRV_DEQUEUE(&dev->if_snd, m_head);
	if (m_head == NULL)

	if ( (err = mtnic_xmit_encap(priv, &m_head, &used)) != 0) {
            	priv->ifp->if_drv_flags |= IFF_DRV_OACTIVE;
           		IFQ_DRV_PREPEND(&dev->if_snd, m_head);

    	ETHER_BPF_MTAP(dev, m_head);

---- my ifq_max_len is set to 4096, I believe it's bigger than the other
10GigE drivers (cxgb is using 1K, for instance):

dev->if_snd.ifq_drv_maxlen = MTNIC_TX_IFQ_MAXLEN;    // = 4096
IFQ_SET_MAXLEN(&dev->if_snd, dev->if_snd.ifq_drv_maxlen);

---- there's another strange symptom to this hang: after the 20 minutes I've
mentioned (caused by the sender full IFQ) I have to ping the sender from the
receiver side in order to retain traffic. During the 20 minutes it will not
work, but after it passes a single ping will make the sender IFQ go back to


Want to link to this message? Use this URL: <$25903420$220f000a>