From owner-svn-src-stable@FreeBSD.ORG  Mon Sep 27 18:22:50 2010
Return-Path: <owner-svn-src-stable@FreeBSD.ORG>
Delivered-To: svn-src-stable@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id BD5CC1065674;
	Mon, 27 Sep 2010 18:22:50 +0000 (UTC)
	(envelope-from yongari@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id ABC498FC21;
	Mon, 27 Sep 2010 18:22:50 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o8RIMoE7045897;
	Mon, 27 Sep 2010 18:22:50 GMT (envelope-from yongari@svn.freebsd.org)
Received: (from yongari@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o8RIMoKr045895;
	Mon, 27 Sep 2010 18:22:50 GMT (envelope-from yongari@svn.freebsd.org)
Message-Id: <201009271822.o8RIMoKr045895@svn.freebsd.org>
From: Pyun YongHyeon <yongari@FreeBSD.org>
Date: Mon, 27 Sep 2010 18:22:50 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-all@freebsd.org,
	svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
X-SVN-Group: stable-7
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r213222 - stable/7/sys/dev/e1000
X-BeenThere: svn-src-stable@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: SVN commit messages for all the -stable branches of the src tree
	<svn-src-stable.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>, 
	<mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable>
List-Post: <mailto:svn-src-stable@freebsd.org>
List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>,
	<mailto:svn-src-stable-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 27 Sep 2010 18:22:50 -0000

Author: yongari
Date: Mon Sep 27 18:22:50 2010
New Revision: 213222
URL: http://svn.freebsd.org/changeset/base/213222

Log:
  MFC r211909:
    If em(4) failed to allocate RX buffers, do not call panic(9).
    Just showing some buffer allocation error is more appropriate
    action for drivers. This should fix occasional panic reported on
    em(4) when driver encountered resource shortage.
  
    Reviewed by:	jfv

Modified:
  stable/7/sys/dev/e1000/if_em.c
Directory Properties:
  stable/7/sys/   (props changed)
  stable/7/sys/cddl/contrib/opensolaris/   (props changed)
  stable/7/sys/contrib/dev/acpica/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)

Modified: stable/7/sys/dev/e1000/if_em.c
==============================================================================
--- stable/7/sys/dev/e1000/if_em.c	Mon Sep 27 18:20:56 2010	(r213221)
+++ stable/7/sys/dev/e1000/if_em.c	Mon Sep 27 18:22:50 2010	(r213222)
@@ -3841,7 +3841,7 @@ em_setup_receive_ring(struct rx_ring *rx
 		rxbuf = &rxr->rx_buffers[j];
 		rxbuf->m_head = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
 		if (rxbuf->m_head == NULL)
-			panic("RX ring hdr initialization failed!\n");
+			return (ENOBUFS);
 		rxbuf->m_head->m_len = MCLBYTES;
 		rxbuf->m_head->m_flags &= ~M_HASFCS; /* we strip it */
 		rxbuf->m_head->m_pkthdr.len = MCLBYTES;
@@ -3850,8 +3850,11 @@ em_setup_receive_ring(struct rx_ring *rx
 		error = bus_dmamap_load_mbuf_sg(rxr->rxtag,
 		    rxbuf->map, rxbuf->m_head, seg,
 		    &nsegs, BUS_DMA_NOWAIT);
-		if (error != 0)
-			panic("RX ring dma initialization failed!\n");
+		if (error != 0) {
+			m_freem(rxbuf->m_head);
+			rxbuf->m_head = NULL;
+			return (error);
+		}
 		bus_dmamap_sync(rxr->rxtag,
 		    rxbuf->map, BUS_DMASYNC_PREREAD);