svn commit: r260425 - stable/9/sys/dev/bxe

Eric Davis edavis at FreeBSD.org
Tue Jan 7 23:20:22 UTC 2014


Author: edavis
Date: Tue Jan  7 23:20:21 2014
New Revision: 260425
URL: http://svnweb.freebsd.org/changeset/base/260425

Log:
  Merged r260415 from head.
  
  Approved by:	davidcd

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

Modified: stable/9/sys/dev/bxe/bxe.c
==============================================================================
--- stable/9/sys/dev/bxe/bxe.c	Tue Jan  7 23:14:55 2014	(r260424)
+++ stable/9/sys/dev/bxe/bxe.c	Tue Jan  7 23:20:21 2014	(r260425)
@@ -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"
@@ -5509,10 +5509,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/9/sys/dev/bxe/ecore_hsi.h
==============================================================================
--- stable/9/sys/dev/bxe/ecore_hsi.h	Tue Jan  7 23:14:55 2014	(r260424)
+++ stable/9/sys/dev/bxe/ecore_hsi.h	Tue Jan  7 23:20:21 2014	(r260425)
@@ -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


More information about the svn-src-all mailing list