mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-23 09:56:00 +00:00
qlcnic: additional driver statistics
Added additional driver statistics to track errors in rcv/tx path. Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e802af9cab
commit
8ae6df978b
@ -428,6 +428,10 @@ struct qlcnic_adapter_stats {
|
|||||||
u64 xmit_on;
|
u64 xmit_on;
|
||||||
u64 xmit_off;
|
u64 xmit_off;
|
||||||
u64 skb_alloc_failure;
|
u64 skb_alloc_failure;
|
||||||
|
u64 null_skb;
|
||||||
|
u64 null_rxbuf;
|
||||||
|
u64 rx_dma_map_error;
|
||||||
|
u64 tx_dma_map_error;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -69,6 +69,14 @@ static const struct qlcnic_stats qlcnic_gstrings_stats[] = {
|
|||||||
QLC_SIZEOF(stats.xmit_off), QLC_OFF(stats.xmit_off)},
|
QLC_SIZEOF(stats.xmit_off), QLC_OFF(stats.xmit_off)},
|
||||||
{"skb_alloc_failure", QLC_SIZEOF(stats.skb_alloc_failure),
|
{"skb_alloc_failure", QLC_SIZEOF(stats.skb_alloc_failure),
|
||||||
QLC_OFF(stats.skb_alloc_failure)},
|
QLC_OFF(stats.skb_alloc_failure)},
|
||||||
|
{"null skb",
|
||||||
|
QLC_SIZEOF(stats.null_skb), QLC_OFF(stats.null_skb)},
|
||||||
|
{"null rxbuf",
|
||||||
|
QLC_SIZEOF(stats.null_rxbuf), QLC_OFF(stats.null_rxbuf)},
|
||||||
|
{"rx dma map error", QLC_SIZEOF(stats.rx_dma_map_error),
|
||||||
|
QLC_OFF(stats.rx_dma_map_error)},
|
||||||
|
{"tx dma map error", QLC_SIZEOF(stats.tx_dma_map_error),
|
||||||
|
QLC_OFF(stats.tx_dma_map_error)},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1287,6 +1287,7 @@ qlcnic_alloc_rx_skb(struct qlcnic_adapter *adapter,
|
|||||||
rds_ring->dma_size, PCI_DMA_FROMDEVICE);
|
rds_ring->dma_size, PCI_DMA_FROMDEVICE);
|
||||||
|
|
||||||
if (pci_dma_mapping_error(pdev, dma)) {
|
if (pci_dma_mapping_error(pdev, dma)) {
|
||||||
|
adapter->stats.rx_dma_map_error++;
|
||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
buffer->skb = NULL;
|
buffer->skb = NULL;
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -1311,8 +1312,10 @@ static struct sk_buff *qlcnic_process_rxbuf(struct qlcnic_adapter *adapter,
|
|||||||
PCI_DMA_FROMDEVICE);
|
PCI_DMA_FROMDEVICE);
|
||||||
|
|
||||||
skb = buffer->skb;
|
skb = buffer->skb;
|
||||||
if (!skb)
|
if (!skb) {
|
||||||
|
adapter->stats.null_skb++;
|
||||||
goto no_skb;
|
goto no_skb;
|
||||||
|
}
|
||||||
|
|
||||||
if (likely(adapter->rx_csum && cksum == STATUS_CKSUM_OK)) {
|
if (likely(adapter->rx_csum && cksum == STATUS_CKSUM_OK)) {
|
||||||
adapter->stats.csummed++;
|
adapter->stats.csummed++;
|
||||||
@ -1502,6 +1505,8 @@ qlcnic_process_rcv_ring(struct qlcnic_host_sds_ring *sds_ring, int max)
|
|||||||
|
|
||||||
if (rxbuf)
|
if (rxbuf)
|
||||||
list_add_tail(&rxbuf->list, &sds_ring->free_list[ring]);
|
list_add_tail(&rxbuf->list, &sds_ring->free_list[ring]);
|
||||||
|
else
|
||||||
|
adapter->stats.null_rxbuf++;
|
||||||
|
|
||||||
skip:
|
skip:
|
||||||
for (; desc_cnt > 0; desc_cnt--) {
|
for (; desc_cnt > 0; desc_cnt--) {
|
||||||
|
@ -1589,8 +1589,10 @@ qlcnic_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
|||||||
|
|
||||||
pdev = adapter->pdev;
|
pdev = adapter->pdev;
|
||||||
|
|
||||||
if (qlcnic_map_tx_skb(pdev, skb, pbuf))
|
if (qlcnic_map_tx_skb(pdev, skb, pbuf)) {
|
||||||
|
adapter->stats.tx_dma_map_error++;
|
||||||
goto drop_packet;
|
goto drop_packet;
|
||||||
|
}
|
||||||
|
|
||||||
pbuf->skb = skb;
|
pbuf->skb = skb;
|
||||||
pbuf->frag_count = frag_count;
|
pbuf->frag_count = frag_count;
|
||||||
|
Loading…
Reference in New Issue
Block a user