Author: arybchik
Date: Sat May 16 05:43:20 2015
New Revision: 282998
URL: https://svnweb.freebsd.org/changeset/base/282998

Log:
  sfxge: move mbuf free to sfxge_if_transmit()
  
  It is a preparation to the next patch which will service packet queue even
  if packet addtion fails.
  
  Reviewed by:    gnn
  Sponsored by:   Solarflare Communications, Inc.
  MFC after:      2 days
  Differential Revision: https://reviews.freebsd.org/D2552

Modified:
  head/sys/dev/sfxge/sfxge_tx.c

Modified: head/sys/dev/sfxge/sfxge_tx.c
==============================================================================
--- head/sys/dev/sfxge/sfxge_tx.c       Sat May 16 05:37:47 2015        
(r282997)
+++ head/sys/dev/sfxge/sfxge_tx.c       Sat May 16 05:43:20 2015        
(r282998)
@@ -605,9 +605,8 @@ sfxge_tx_packet_add(struct sfxge_txq *tx
        int rc;
 
        if (!SFXGE_LINK_UP(txq->sc)) {
-               rc = ENETDOWN;
                atomic_add_long(&txq->netdown_drops, 1);
-               goto fail;
+               return (ENETDOWN);
        }
 
        /*
@@ -622,7 +621,7 @@ sfxge_tx_packet_add(struct sfxge_txq *tx
                rc = sfxge_tx_qdpl_put_locked(txq, m);
                if (rc != 0) {
                        SFXGE_TXQ_UNLOCK(txq);
-                       goto fail;
+                       return (rc);
                }
 
                /* Try to service the list. */
@@ -631,7 +630,7 @@ sfxge_tx_packet_add(struct sfxge_txq *tx
        } else {
                rc = sfxge_tx_qdpl_put_unlocked(txq, m);
                if (rc != 0)
-                       goto fail;
+                       return (rc);
 
                /*
                 * Try to grab the lock again.
@@ -649,10 +648,6 @@ sfxge_tx_packet_add(struct sfxge_txq *tx
        SFXGE_TXQ_LOCK_ASSERT_NOTOWNED(txq);
 
        return (0);
-
-fail:
-       m_freem(m);
-       return (rc);
 }
 
 static void
@@ -730,6 +725,8 @@ sfxge_if_transmit(struct ifnet *ifp, str
        }
 
        rc = sfxge_tx_packet_add(txq, m);
+       if (rc != 0)
+               m_freem(m);
 
        return (rc);
 }
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to