]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Internal branch sync. Included in this change:
authorVMware, Inc <>
Wed, 18 Sep 2013 03:14:08 +0000 (20:14 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 23 Sep 2013 05:01:52 +0000 (22:01 -0700)
. Solaris vmxnet3: log over-fragmented condition only when retry fails
. changes in shared code that don't affect open-vm-tools functionality

Signed-off-by: Dmitry Torokhov <dtor@vmware.com>
open-vm-tools/lib/include/vm_basic_types.h
open-vm-tools/modules/solaris/vmxnet3/vmxnet3_tx.c

index c399c38d896ac0d042eb11567b2cc073c5cea7e0..fdb17336b959e7b246b77bc4e3559ee0a10f379f 100644 (file)
@@ -549,7 +549,7 @@ typedef uint64 PPN64;
 typedef uint64 MA64;
 
 
-#ifdef VMKERNEL
+#if defined(VMKERNEL) || defined(VMKBOOT)
 typedef uint8 * MPN64;
 #else
 typedef uint64 MPN64;
index f77f13b0b92a98b79281aecb029152806075a9ff..586c4ec62202441ea31ca3e3082e3749ebfa0760 100644 (file)
@@ -191,7 +191,8 @@ static vmxnet3_txstatus
 vmxnet3_tx_one(vmxnet3_softc_t *dp,
                vmxnet3_txqueue_t *txq,
                vmxnet3_offload_t *ol,
-               mblk_t *mp)
+               mblk_t *mp,
+               boolean_t retry)
 {
    int ret = VMXNET3_TX_OK;
    unsigned int frags = 0, totLen = 0;
@@ -244,7 +245,11 @@ vmxnet3_tx_one(vmxnet3_softc_t *dp,
 
             if (frags >= cmdRing->size - 1 ||
                 (ol->om != VMXNET3_OM_TSO && frags >= VMXNET3_MAX_TXD_PER_PKT)) {
-               VMXNET3_DEBUG(dp, 2, "overfragmented mp (%u)\n", frags);
+
+               if (retry) {
+                  VMXNET3_DEBUG(dp, 2, "overfragmented, frags=%u ring=%hu om=%hu\n",
+                                frags, cmdRing->size, ol->om);
+               }
                ddi_dma_unbind_handle(dp->txDmaHandle);
                ret = VMXNET3_TX_PULLUP;
                goto error;
@@ -408,7 +413,7 @@ vmxnet3_tx(void *data, mblk_t *mps)
        * Try to map the message in the Tx ring.
        * This call might fail for non-fatal reasons.
        */
-      status = vmxnet3_tx_one(dp, txq, &ol, mp);
+      status = vmxnet3_tx_one(dp, txq, &ol, mp, B_FALSE);
       if (status == VMXNET3_TX_PULLUP) {
          /*
           * Try one more time after flattening
@@ -419,7 +424,7 @@ vmxnet3_tx(void *data, mblk_t *mps)
             freemsg(mp);
             if (new_mp) {
                mp = new_mp;
-               status = vmxnet3_tx_one(dp, txq, &ol, mp);
+               status = vmxnet3_tx_one(dp, txq, &ol, mp, B_TRUE);
             } else {
                continue;
             }