From owner-svn-src-user@FreeBSD.ORG Thu Jun 4 05:20:46 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E48C5106566B; Thu, 4 Jun 2009 05:20:46 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B87478FC0A; Thu, 4 Jun 2009 05:20:46 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n545KkqT078329; Thu, 4 Jun 2009 05:20:46 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n545KkvB078328; Thu, 4 Jun 2009 05:20:46 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200906040520.n545KkvB078328@svn.freebsd.org> From: Kip Macy Date: Thu, 4 Jun 2009 05:20:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r193428 - user/kmacy/releng_7_2_fcs/sys/dev/cxgb X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Jun 2009 05:20:47 -0000 Author: kmacy Date: Thu Jun 4 05:20:46 2009 New Revision: 193428 URL: http://svn.freebsd.org/changeset/base/193428 Log: simplify packet initialization in get_packet Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c Modified: user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c Thu Jun 4 04:43:07 2009 (r193427) +++ user/kmacy/releng_7_2_fcs/sys/dev/cxgb/cxgb_sge.c Thu Jun 4 05:20:46 2009 (r193428) @@ -2633,7 +2633,7 @@ get_packet(adapter_t *adap, unsigned int uint32_t flags = M_EXT; uint8_t sopeop = G_RSPD_SOP_EOP(ntohl(r->flags)); caddr_t cl; - struct mbuf *m, *m0; + struct mbuf *m; int ret = 0; prefetch(sd->rxsd_cl); @@ -2643,29 +2643,37 @@ get_packet(adapter_t *adap, unsigned int if (recycle_enable && len <= SGE_RX_COPY_THRES && sopeop == RSPQ_SOP_EOP) { - if ((m0 = m_gethdr(M_DONTWAIT, MT_DATA)) == NULL) + if ((m = m_gethdr(M_DONTWAIT, MT_DATA)) == NULL) goto skip_recycle; - cl = mtod(m0, void *); + cl = mtod(m, void *); memcpy(cl, sd->rxsd_cl, len); recycle_rx_buf(adap, fl, fl->cidx); - m = m0; - m0->m_len = len; - m0->m_flags = 0; + m->m_pkthdr.len = m->m_len = len; + m->m_flags = 0; + mh->mh_head = mh->mh_tail = m; + ret = 1; + goto done; } else { skip_recycle: - bus_dmamap_unload(fl->entry_tag, sd->map); cl = sd->rxsd_cl; - m = m0 = sd->m; + m = sd->m; if ((sopeop == RSPQ_SOP_EOP) || (sopeop == RSPQ_SOP)) flags |= M_PKTHDR; - if (fl->zone != zone_pack) - m_cljset(m0, cl, fl->type); - m0->m_flags = flags; - m0->m_next = m0->m_nextpkt = NULL; - m0->m_pkthdr.len = m0->m_len = len; + if (fl->zone == zone_pack) { + m_init(m, zone_pack, MCLBYTES, M_NOWAIT, MT_DATA, flags); + /* + * restore clobbered data pointer + */ + m->m_data = m->m_ext.ext_buf; + } else { + m_cljset(m, cl, fl->type); + m->m_flags = flags; + m->m_next = m->m_nextpkt = NULL; + } + m->m_len = len; } switch(sopeop) { case RSPQ_SOP_EOP: @@ -2700,6 +2708,9 @@ get_packet(adapter_t *adap, unsigned int ret = 1; break; } + if (cxgb_debug) + printf("len=%d pktlen=%d\n", m->m_len, m->m_pkthdr.len); +done: if (++fl->cidx == fl->size) fl->cidx = 0; @@ -2843,8 +2854,11 @@ process_responses(adapter_t *adap, struc int drop_thresh = eth ? SGE_RX_DROP_THRES : 0; eop = get_packet(adap, drop_thresh, qs, &rspq->rspq_mh, r); - rspq->rspq_mh.mh_head->m_flags |= M_FLOWID; - rspq->rspq_mh.mh_head->m_pkthdr.flowid = rss_hash; + if (eop) { + rspq->rspq_mh.mh_head->m_flags |= M_FLOWID; + rspq->rspq_mh.mh_head->m_pkthdr.flowid = rss_hash; + } + ethpad = 2; } else { DPRINTF("pure response\n");