Given that em(4), lem(4) and igb(4) hardware doesn't require the
alignment guarantees provided by m_defrag(9), use m_collapse(9) instead for performance reasons. While at it, sanitize the statistics softc members, i. e. retire unused ones and add SYSCTL nodes missing for actually used ones. Differential Revision: https://reviews.freebsd.org/D4717
This commit is contained in:
parent
f5e45e53f9
commit
e12a9f251e
@ -2035,9 +2035,9 @@ retry:
|
||||
if (error == EFBIG && remap) {
|
||||
struct mbuf *m;
|
||||
|
||||
m = m_defrag(*m_headp, M_NOWAIT);
|
||||
m = m_collapse(*m_headp, M_NOWAIT, EM_MAX_SCATTER);
|
||||
if (m == NULL) {
|
||||
adapter->mbuf_alloc_failed++;
|
||||
adapter->mbuf_defrag_failed++;
|
||||
m_freem(*m_headp);
|
||||
*m_headp = NULL;
|
||||
return (ENOBUFS);
|
||||
@ -5493,18 +5493,15 @@ em_add_hw_stats(struct adapter *adapter)
|
||||
char namebuf[QUEUE_NAME_LEN];
|
||||
|
||||
/* Driver Statistics */
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "link_irq",
|
||||
CTLFLAG_RD, &adapter->link_irq,
|
||||
"Link MSIX IRQ Handled");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "mbuf_alloc_fail",
|
||||
CTLFLAG_RD, &adapter->mbuf_alloc_failed,
|
||||
"Std mbuf failed");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "cluster_alloc_fail",
|
||||
CTLFLAG_RD, &adapter->mbuf_cluster_failed,
|
||||
"Std mbuf cluster failed");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "dropped",
|
||||
CTLFLAG_RD, &adapter->dropped_pkts,
|
||||
"Driver dropped packets");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "link_irq",
|
||||
CTLFLAG_RD, &adapter->link_irq,
|
||||
"Link MSIX IRQ Handled");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "mbuf_defrag_fail",
|
||||
CTLFLAG_RD, &adapter->mbuf_defrag_failed,
|
||||
"Defragmenting mbuf chain failed");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "tx_dma_fail",
|
||||
CTLFLAG_RD, &adapter->no_tx_dma_setup,
|
||||
"Driver tx dma failure in xmit");
|
||||
|
@ -473,13 +473,12 @@ struct adapter {
|
||||
|
||||
/* Misc stats maintained by the driver */
|
||||
unsigned long dropped_pkts;
|
||||
unsigned long mbuf_alloc_failed;
|
||||
unsigned long mbuf_cluster_failed;
|
||||
unsigned long link_irq;
|
||||
unsigned long mbuf_defrag_failed;
|
||||
unsigned long no_tx_dma_setup;
|
||||
unsigned long no_tx_map_avail;
|
||||
unsigned long no_tx_dma_setup;
|
||||
unsigned long rx_overruns;
|
||||
unsigned long watchdog_events;
|
||||
unsigned long link_irq;
|
||||
|
||||
struct e1000_hw_stats stats;
|
||||
};
|
||||
|
@ -1835,7 +1835,8 @@ retry:
|
||||
/* Try it again? - one try */
|
||||
if (remap == TRUE) {
|
||||
remap = FALSE;
|
||||
m = m_defrag(*m_headp, M_NOWAIT);
|
||||
m = m_collapse(*m_headp, M_NOWAIT,
|
||||
IGB_MAX_SCATTER);
|
||||
if (m == NULL) {
|
||||
adapter->mbuf_defrag_failed++;
|
||||
m_freem(*m_headp);
|
||||
@ -5826,12 +5827,15 @@ igb_add_hw_stats(struct adapter *adapter)
|
||||
char namebuf[QUEUE_NAME_LEN];
|
||||
|
||||
/* Driver Statistics */
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "link_irq",
|
||||
CTLFLAG_RD, &adapter->link_irq,
|
||||
"Link MSIX IRQ Handled");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "dropped",
|
||||
CTLFLAG_RD, &adapter->dropped_pkts,
|
||||
"Driver dropped packets");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "link_irq",
|
||||
CTLFLAG_RD, &adapter->link_irq,
|
||||
"Link MSIX IRQ Handled");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "mbuf_defrag_fail",
|
||||
CTLFLAG_RD, &adapter->mbuf_defrag_failed,
|
||||
"Defragmenting mbuf chain failed");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "tx_dma_fail",
|
||||
CTLFLAG_RD, &adapter->no_tx_dma_setup,
|
||||
"Driver tx dma failure in xmit");
|
||||
|
@ -512,20 +512,19 @@ struct adapter {
|
||||
u8 *mta;
|
||||
|
||||
/* Misc stats maintained by the driver */
|
||||
unsigned long dropped_pkts;
|
||||
unsigned long mbuf_defrag_failed;
|
||||
unsigned long mbuf_header_failed;
|
||||
unsigned long mbuf_packet_failed;
|
||||
unsigned long no_tx_dma_setup;
|
||||
unsigned long watchdog_events;
|
||||
unsigned long link_irq;
|
||||
unsigned long rx_overruns;
|
||||
unsigned long device_control;
|
||||
unsigned long rx_control;
|
||||
unsigned long int_mask;
|
||||
unsigned long dropped_pkts;
|
||||
unsigned long eint_mask;
|
||||
unsigned long int_mask;
|
||||
unsigned long link_irq;
|
||||
unsigned long mbuf_defrag_failed;
|
||||
unsigned long no_tx_dma_setup;
|
||||
unsigned long packet_buf_alloc_rx;
|
||||
unsigned long packet_buf_alloc_tx;
|
||||
unsigned long rx_control;
|
||||
unsigned long rx_overruns;
|
||||
unsigned long watchdog_events;
|
||||
|
||||
/* Used in pf and vf */
|
||||
void *stats;
|
||||
|
||||
|
@ -1675,9 +1675,9 @@ lem_xmit(struct adapter *adapter, struct mbuf **m_headp)
|
||||
if (error == EFBIG) {
|
||||
struct mbuf *m;
|
||||
|
||||
m = m_defrag(*m_headp, M_NOWAIT);
|
||||
m = m_collapse(*m_headp, M_NOWAIT, EM_MAX_SCATTER);
|
||||
if (m == NULL) {
|
||||
adapter->mbuf_alloc_failed++;
|
||||
adapter->mbuf_defrag_failed++;
|
||||
m_freem(*m_headp);
|
||||
*m_headp = NULL;
|
||||
return (ENOBUFS);
|
||||
@ -4526,12 +4526,12 @@ lem_add_hw_stats(struct adapter *adapter)
|
||||
struct sysctl_oid_list *stat_list;
|
||||
|
||||
/* Driver Statistics */
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "mbuf_alloc_fail",
|
||||
CTLFLAG_RD, &adapter->mbuf_alloc_failed,
|
||||
"Std mbuf failed");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "cluster_alloc_fail",
|
||||
CTLFLAG_RD, &adapter->mbuf_cluster_failed,
|
||||
"Std mbuf cluster failed");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "mbuf_defrag_fail",
|
||||
CTLFLAG_RD, &adapter->mbuf_defrag_failed,
|
||||
"Defragmenting mbuf chain failed");
|
||||
SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "dropped",
|
||||
CTLFLAG_RD, &adapter->dropped_pkts,
|
||||
"Driver dropped packets");
|
||||
|
@ -417,17 +417,17 @@ struct adapter {
|
||||
|
||||
/* Misc stats maintained by the driver */
|
||||
unsigned long dropped_pkts;
|
||||
unsigned long mbuf_alloc_failed;
|
||||
unsigned long link_irq;
|
||||
unsigned long mbuf_cluster_failed;
|
||||
unsigned long mbuf_defrag_failed;
|
||||
unsigned long no_tx_desc_avail1;
|
||||
unsigned long no_tx_desc_avail2;
|
||||
unsigned long no_tx_dma_setup;
|
||||
unsigned long no_tx_map_avail;
|
||||
unsigned long no_tx_dma_setup;
|
||||
unsigned long watchdog_events;
|
||||
unsigned long rx_overruns;
|
||||
unsigned long rx_irq;
|
||||
unsigned long rx_overruns;
|
||||
unsigned long tx_irq;
|
||||
unsigned long link_irq;
|
||||
|
||||
/* 82547 workaround */
|
||||
uint32_t tx_fifo_size;
|
||||
|
Loading…
x
Reference in New Issue
Block a user