mirror of https://gitee.com/openkylin/linux.git
ionic: use fewer firmware doorbells on rx fill
We really don't need to hit the Rx queue doorbell so many times, we can wait to the end and cause a little less thrash. Signed-off-by: Shannon Nelson <snelson@pensando.io> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
622e32b7d4
commit
155f15ad67
|
@ -331,9 +331,6 @@ static void ionic_rx_page_free(struct ionic_queue *q, struct page *page,
|
|||
__free_page(page);
|
||||
}
|
||||
|
||||
#define IONIC_RX_RING_DOORBELL_STRIDE ((1 << 5) - 1)
|
||||
#define IONIC_RX_RING_HEAD_BUF_SZ 2048
|
||||
|
||||
void ionic_rx_fill(struct ionic_queue *q)
|
||||
{
|
||||
struct net_device *netdev = q->lif->netdev;
|
||||
|
@ -345,7 +342,6 @@ void ionic_rx_fill(struct ionic_queue *q)
|
|||
unsigned int remain_len;
|
||||
unsigned int seg_len;
|
||||
unsigned int nfrags;
|
||||
bool ring_doorbell;
|
||||
unsigned int i, j;
|
||||
unsigned int len;
|
||||
|
||||
|
@ -360,9 +356,7 @@ void ionic_rx_fill(struct ionic_queue *q)
|
|||
page_info = &desc_info->pages[0];
|
||||
|
||||
if (page_info->page) { /* recycle the buffer */
|
||||
ring_doorbell = ((q->head->index + 1) &
|
||||
IONIC_RX_RING_DOORBELL_STRIDE) == 0;
|
||||
ionic_rxq_post(q, ring_doorbell, ionic_rx_clean, NULL);
|
||||
ionic_rxq_post(q, false, ionic_rx_clean, NULL);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -401,10 +395,11 @@ void ionic_rx_fill(struct ionic_queue *q)
|
|||
page_info++;
|
||||
}
|
||||
|
||||
ring_doorbell = ((q->head->index + 1) &
|
||||
IONIC_RX_RING_DOORBELL_STRIDE) == 0;
|
||||
ionic_rxq_post(q, ring_doorbell, ionic_rx_clean, NULL);
|
||||
ionic_rxq_post(q, false, ionic_rx_clean, NULL);
|
||||
}
|
||||
|
||||
ionic_dbell_ring(q->lif->kern_dbpage, q->hw_type,
|
||||
q->dbval | q->head->index);
|
||||
}
|
||||
|
||||
static void ionic_rx_fill_cb(void *arg)
|
||||
|
|
Loading…
Reference in New Issue