Date: Tue, 18 Mar 2014 13:58:40 +0400 From: Andrew Rybchenko <Andrew.Rybchenko@oktetlabs.ru> To: net@FreeBSD.org Subject: [PATCH 4/6] sfxge: add counter for Tx errors returned from if_transmit Message-ID: <532818D0.4080006@oktetlabs.ru>
next in thread | raw e-mail | index | archive | help
sfxge: add counter for Tx errors returned from if_transmit Submitted-by: Boris Misenov <Boris.Misenov@oktetlabs.ru> Sponsored by: Solarflare Communications, Inc. diff -r 53935db50f8a -r af2586a023d8 src/driver/freebsd/sfxge_tx.c --- a/head/sys/dev/sfxge/sfxge_tx.c Mon Mar 10 11:37:12 2014 +0400 +++ b/head/sys/dev/sfxge/sfxge_tx.c Mon Mar 10 11:37:12 2014 +0400 @@ -503,6 +503,11 @@ int locked; int rc; + if (!SFXGE_LINK_UP(txq->sc)) { + rc = ENETDOWN; + goto fail; + } + /* * Try to grab the txq lock. If we are able to get the lock, * the packet will be appended to the "get list" of the deferred @@ -537,6 +542,7 @@ fail: m_freem(m); + atomic_add_long(&txq->early_drops, 1); return (rc); } @@ -587,11 +593,6 @@ KASSERT(ifp->if_flags & IFF_UP, ("interface not up")); - if (!SFXGE_LINK_UP(sc)) { - m_freem(m); - return (ENETDOWN); - } - /* Pick the desired transmit queue. */ if (m->m_pkthdr.csum_flags & (CSUM_DELAY_DATA | CSUM_TSO)) { int index = 0; @@ -1391,6 +1392,7 @@ SFXGE_TX_STAT(tso_long_headers, tso_long_headers), SFXGE_TX_STAT(tx_collapses, collapses), SFXGE_TX_STAT(tx_drops, drops), + SFXGE_TX_STAT(tx_early_drops, early_drops), }; static int diff -r 53935db50f8a -r af2586a023d8 src/driver/freebsd/sfxge_tx.h --- a/head/sys/dev/sfxge/sfxge_tx.h Mon Mar 10 11:37:12 2014 +0400 +++ b/head/sys/dev/sfxge/sfxge_tx.h Mon Mar 10 11:37:12 2014 +0400 @@ -160,6 +160,7 @@ unsigned long tso_long_headers; unsigned long collapses; unsigned long drops; + unsigned long early_drops; /* The following fields change more often, and are used mostly * on the completion path
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?532818D0.4080006>