Commit 271e8b79 authored by Rasesh Mody's avatar Rasesh Mody Committed by David S. Miller

bna: TX Path and RX Path Changes

Change details:
 - Add bnad_pci_unmap_skb() API to unmap skb from transmit path and update the
   unmap index. Add more checks for illegal skbs in transmit path. Add tx_skb
   counters for dropped skbs.
 - The unmap_cons index used in bnad_free_txbufs() is incorrectly declared as
   u16. It quickly wraps around and accesses null sk_buff ptr. So using u32 to
   handle unmap_array.
 - Disable and enable interrupts from the same polling context to prevent
   reordering in Rx path.
 - Add Rx NAPI debug counters.
 - Make NAPI budget check more generic.
 - Modify dim timer stop logic to make it dependent on cfg and run flags
 - Handle reduced MSI-X vectors case in bnad_enable_msix.
 - Check for single frame TSO skbs and send them out as non-TSO.
 - Put memory barrier after bna_txq_prod_indx_doorbell().
Signed-off-by: default avatarGurunatha Karaje <gkaraje@brocade.com>
Signed-off-by: default avatarRasesh Mody <rmody@brocade.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2be67144
This diff is collapsed.
...@@ -56,6 +56,11 @@ struct bnad_rx_ctrl { ...@@ -56,6 +56,11 @@ struct bnad_rx_ctrl {
struct bnad *bnad; struct bnad *bnad;
unsigned long flags; unsigned long flags;
struct napi_struct napi; struct napi_struct napi;
u64 rx_intr_ctr;
u64 rx_poll_ctr;
u64 rx_schedule;
u64 rx_keep_poll;
u64 rx_complete;
}; };
#define BNAD_RXMODE_PROMISC_DEFAULT BNA_RXMODE_PROMISC #define BNAD_RXMODE_PROMISC_DEFAULT BNA_RXMODE_PROMISC
...@@ -148,6 +153,20 @@ struct bnad_drv_stats { ...@@ -148,6 +153,20 @@ struct bnad_drv_stats {
u64 udpcsum_offload; u64 udpcsum_offload;
u64 csum_help; u64 csum_help;
u64 csum_help_err; u64 csum_help_err;
u64 tx_skb_too_short;
u64 tx_skb_stopping;
u64 tx_skb_max_vectors;
u64 tx_skb_mss_too_long;
u64 tx_skb_tso_too_short;
u64 tx_skb_tso_prepare;
u64 tx_skb_non_tso_too_long;
u64 tx_skb_tcp_hdr;
u64 tx_skb_udp_hdr;
u64 tx_skb_csum_err;
u64 tx_skb_headlen_too_long;
u64 tx_skb_headlen_zero;
u64 tx_skb_frag_zero;
u64 tx_skb_len_mismatch;
u64 hw_stats_updates; u64 hw_stats_updates;
u64 netif_rx_schedule; u64 netif_rx_schedule;
...@@ -346,7 +365,7 @@ extern void bnad_netdev_hwstats_fill(struct bnad *bnad, ...@@ -346,7 +365,7 @@ extern void bnad_netdev_hwstats_fill(struct bnad *bnad,
#define bnad_enable_rx_irq_unsafe(_ccb) \ #define bnad_enable_rx_irq_unsafe(_ccb) \
{ \ { \
if (likely(test_bit(BNAD_RXQ_STARTED, &ccb->rcb[0]->flags))) {\ if (likely(test_bit(BNAD_RXQ_STARTED, &(_ccb)->rcb[0]->flags))) {\
bna_ib_coalescing_timer_set((_ccb)->i_dbell, \ bna_ib_coalescing_timer_set((_ccb)->i_dbell, \
(_ccb)->rx_coalescing_timeo); \ (_ccb)->rx_coalescing_timeo); \
bna_ib_ack((_ccb)->i_dbell, 0); \ bna_ib_ack((_ccb)->i_dbell, 0); \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment