From owner-svn-src-head@FreeBSD.ORG Mon Dec 30 23:02:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F29B2266; Mon, 30 Dec 2013 23:02:26 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DD9AC192C; Mon, 30 Dec 2013 23:02:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rBUN2QBO068428; Mon, 30 Dec 2013 23:02:26 GMT (envelope-from edavis@svn.freebsd.org) Received: (from edavis@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id rBUN2QIk068426; Mon, 30 Dec 2013 23:02:26 GMT (envelope-from edavis@svn.freebsd.org) Message-Id: <201312302302.rBUN2QIk068426@svn.freebsd.org> From: Eric Davis Date: Mon, 30 Dec 2013 23:02:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260113 - head/sys/dev/bxe X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Dec 2013 23:02:27 -0000 Author: edavis Date: Mon Dec 30 23:02:26 2013 New Revision: 260113 URL: http://svnweb.freebsd.org/changeset/base/260113 Log: For TSO, when the first mbuf contains both the packet header and data, the header is split out into its own BD for processing by the firmware. When this split occurred the data length in the BD was not being set correctly resulting in packet corruption. Approved by: davidcd (mentor) Modified: head/sys/dev/bxe/bxe.c head/sys/dev/bxe/ecore_sp.c Modified: head/sys/dev/bxe/bxe.c ============================================================================== --- head/sys/dev/bxe/bxe.c Mon Dec 30 22:17:33 2013 (r260112) +++ head/sys/dev/bxe/bxe.c Mon Dec 30 23:02:26 2013 (r260113) @@ -34,7 +34,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.75" +#define BXE_DRIVER_VERSION "1.78.76" #include "bxe.h" #include "ecore_sp.h" @@ -5004,6 +5004,7 @@ bxe_dump_mbuf(struct bxe_softc *sc, uint8_t contents) { char * type; + int i = 0; if (!(sc->debug & DBG_MBUF)) { return; @@ -5016,28 +5017,21 @@ bxe_dump_mbuf(struct bxe_softc *sc, while (m) { BLOGD(sc, DBG_MBUF, - "mbuf=%p m_len=%d m_flags=0x%b m_data=%p\n", - m, m->m_len, m->m_flags, - "\20\1M_EXT\2M_PKTHDR\3M_EOR\4M_RDONLY", m->m_data); + "%02d: mbuf=%p m_len=%d m_flags=0x%b m_data=%p\n", + i, m, m->m_len, m->m_flags, M_FLAG_BITS, m->m_data); if (m->m_flags & M_PKTHDR) { BLOGD(sc, DBG_MBUF, - "- m_pkthdr: len=%d flags=0x%b csum_flags=%b\n", - m->m_pkthdr.len, m->m_flags, - "\20\12M_BCAST\13M_MCAST\14M_FRAG" - "\15M_FIRSTFRAG\16M_LASTFRAG\21M_VLANTAG" - "\22M_PROMISC\23M_NOFREE", - (int)m->m_pkthdr.csum_flags, - "\20\1CSUM_IP\2CSUM_TCP\3CSUM_UDP\4CSUM_IP_FRAGS" - "\5CSUM_FRAGMENT\6CSUM_TSO\11CSUM_IP_CHECKED" - "\12CSUM_IP_VALID\13CSUM_DATA_VALID" - "\14CSUM_PSEUDO_HDR"); + "%02d: - m_pkthdr: tot_len=%d flags=0x%b csum_flags=%b\n", + i, m->m_pkthdr.len, m->m_flags, M_FLAG_BITS, + (int)m->m_pkthdr.csum_flags, CSUM_BITS); } if (m->m_flags & M_EXT) { switch (m->m_ext.ext_type) { case EXT_CLUSTER: type = "EXT_CLUSTER"; break; case EXT_SFBUF: type = "EXT_SFBUF"; break; + case EXT_JUMBOP: type = "EXT_JUMBOP"; break; case EXT_JUMBO9: type = "EXT_JUMBO9"; break; case EXT_JUMBO16: type = "EXT_JUMBO16"; break; case EXT_PACKET: type = "EXT_PACKET"; break; @@ -5050,8 +5044,8 @@ bxe_dump_mbuf(struct bxe_softc *sc, } BLOGD(sc, DBG_MBUF, - "- m_ext: %p ext_size=%d, type=%s\n", - m->m_ext.ext_buf, m->m_ext.ext_size, type); + "%02d: - m_ext: %p ext_size=%d type=%s\n", + i, m->m_ext.ext_buf, m->m_ext.ext_size, type); } if (contents) { @@ -5059,6 +5053,7 @@ bxe_dump_mbuf(struct bxe_softc *sc, } m = m->m_next; + i++; } } @@ -5669,6 +5664,7 @@ bxe_tx_encap_continue: /* split the first BD into header/data making the fw job easy */ nbds++; tx_start_bd->nbd = htole16(nbds); + tx_start_bd->nbytes = htole16(hlen); bd_prod = TX_BD_NEXT(bd_prod); Modified: head/sys/dev/bxe/ecore_sp.c ============================================================================== --- head/sys/dev/bxe/ecore_sp.c Mon Dec 30 22:17:33 2013 (r260112) +++ head/sys/dev/bxe/ecore_sp.c Mon Dec 30 23:02:26 2013 (r260113) @@ -4264,7 +4264,7 @@ void ecore_init_mac_credit_pool(struct b if (!CHIP_REV_IS_SLOW(sc)) cam_sz = (MAX_MAC_CREDIT_E2 - GET_NUM_VFS_PER_PATH(sc)) - / func_num + / func_num + GET_NUM_VFS_PER_PF(sc); else cam_sz = ECORE_CAM_SIZE_EMUL; @@ -4443,8 +4443,11 @@ int ecore_config_rss(struct bxe_softc *s struct ecore_raw_obj *r = &o->raw; /* Do nothing if only driver cleanup was requested */ - if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, &p->ramrod_flags)) + if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, &p->ramrod_flags)) { + ECORE_MSG(sc, "Not configuring RSS ramrod_flags=%lx\n", + p->ramrod_flags); return ECORE_SUCCESS; + } r->set_pending(r);