Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Jan 2014 23:50:15 +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-7@freebsd.org
Subject:   svn commit: r260427 - stable/7/sys/dev/bxe
Message-ID:  <201401072350.s07NoFeb064895@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: edavis
Date: Tue Jan  7 23:50:15 2014
New Revision: 260427
URL: http://svnweb.freebsd.org/changeset/base/260427

Log:
  Merged r260415 from head.
  
  Approved by:	davidch

Modified:
  stable/7/sys/dev/bxe/bxe.c
  stable/7/sys/dev/bxe/ecore_hsi.h
Directory Properties:
  stable/7/sys/   (props changed)

Modified: stable/7/sys/dev/bxe/bxe.c
==============================================================================
--- stable/7/sys/dev/bxe/bxe.c	Tue Jan  7 23:50:02 2014	(r260426)
+++ stable/7/sys/dev/bxe/bxe.c	Tue Jan  7 23:50:15 2014	(r260427)
@@ -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"
@@ -5511,10 +5511,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/7/sys/dev/bxe/ecore_hsi.h
==============================================================================
--- stable/7/sys/dev/bxe/ecore_hsi.h	Tue Jan  7 23:50:02 2014	(r260426)
+++ stable/7/sys/dev/bxe/ecore_hsi.h	Tue Jan  7 23:50:15 2014	(r260427)
@@ -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?201401072350.s07NoFeb064895>