Date: Tue, 7 Jan 2014 22:59:33 +0000 (UTC) From: Eric Davis <edavis@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260416 - stable/10/sys/dev/bxe Message-ID: <201401072259.s07MxX35038770@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: edavis Date: Tue Jan 7 22:59:33 2014 New Revision: 260416 URL: http://svnweb.freebsd.org/changeset/base/260416 Log: Merged r260415 from head. Approved by: davidch Modified: stable/10/sys/dev/bxe/bxe.c stable/10/sys/dev/bxe/ecore_hsi.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/bxe/bxe.c ============================================================================== --- stable/10/sys/dev/bxe/bxe.c Tue Jan 7 22:26:20 2014 (r260415) +++ stable/10/sys/dev/bxe/bxe.c Tue Jan 7 22:59:33 2014 (r260416) @@ -34,7 +34,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.76" +#define BXE_DRIVER_VERSION "1.78.77" #include "bxe.h" #include "ecore_sp.h" @@ -5501,10 +5501,31 @@ bxe_tx_encap(struct bxe_fastpath *fp, st fp->eth_q_stats.tx_window_violation_std++; } - /* XXX I don't like this, change to double copy packet */ + /* lets try to defragment this mbuf */ + fp->eth_q_stats.mbuf_defrag_attempts++; - /* no sense trying to defrag again, just drop the frame */ - rc = ENODEV; + m0 = m_defrag(*m_head, M_DONTWAIT); + if (m0 == NULL) { + fp->eth_q_stats.mbuf_defrag_failures++; + /* Ugh, just drop the frame... :( */ + rc = ENOBUFS; + } else { + /* defrag successful, try mapping again */ + *m_head = m0; + error = bus_dmamap_load_mbuf_sg(fp->tx_mbuf_tag, + tx_buf->m_map, m0, + segs, &nsegs, BUS_DMA_NOWAIT); + if (error) { + fp->eth_q_stats.tx_dma_mapping_failure++; + /* No sense in trying to defrag/copy chain, drop it. :( */ + rc = error; + } + + /* if the chain is still too long then drop it */ + if (__predict_false(nsegs > 12)) { + rc = ENODEV; + } + } } bxe_tx_encap_continue: Modified: stable/10/sys/dev/bxe/ecore_hsi.h ============================================================================== --- stable/10/sys/dev/bxe/ecore_hsi.h Tue Jan 7 22:26:20 2014 (r260415) +++ stable/10/sys/dev/bxe/ecore_hsi.h Tue Jan 7 22:59:33 2014 (r260416) @@ -1305,6 +1305,13 @@ struct extended_dev_info_shared_cfg { #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_SHOW_MENU 0x00000000 #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_HIDE_MENU 0x00000200 + /* Overide PCIE revision ID when enabled the, + revision ID will set to B1=='0x11' */ + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_MASK 0x00000400 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_SHIFT 10 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_DISABLED 0x00000000 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_ENABLED 0x00000400 + /* Threshold in celcius for max continuous operation */ uint32_t temperature_report; /* 0x4014 */ #define EXTENDED_DEV_INFO_SHARED_CFG_TEMP_MCOT_MASK 0x0000007F
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401072259.s07MxX35038770>