| From 7ed4e6ea40b433b5c34bcbb1ed5875c2bcccaa99 Mon Sep 17 00:00:00 2001 |
| From: Raju Rangoju <rajur@chelsio.com> |
| Date: Wed, 23 Oct 2019 23:03:55 +0530 |
| Subject: [PATCH] cxgb4: request the TX CIDX updates to status page |
| |
| commit 7c3bebc3d8688b84795c11848c314a2fbfe045e0 upstream. |
| |
| For adapters which support the SGE Doorbell Queue Timer facility, |
| we configured the Ethernet TX Queues to send CIDX Updates to the |
| Associated Ethernet RX Response Queue with CPL_SGE_EGR_UPDATE |
| messages to allow us to respond more quickly to the CIDX Updates. |
| But, this was adding load to PCIe Link RX bandwidth and, |
| potentially, resulting in higher CPU Interrupt load. |
| |
| This patch requests the HW to deliver the CIDX updates to the TX |
| queue status page rather than generating an ingress queue message |
| (as an interrupt). With this patch, the load on RX bandwidth is |
| reduced and a substantial improvement in BW is noticed at lower |
| IO sizes. |
| |
| Fixes: d429005fdf2c ("cxgb4/cxgb4vf: Add support for SGE doorbell queue timer") |
| Signed-off-by: Raju Rangoju <rajur@chelsio.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c |
| index b3da81e90132..928bfea5457b 100644 |
| --- a/drivers/net/ethernet/chelsio/cxgb4/sge.c |
| +++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c |
| @@ -3791,15 +3791,11 @@ int t4_sge_alloc_eth_txq(struct adapter *adap, struct sge_eth_txq *txq, |
| * write the CIDX Updates into the Status Page at the end of the |
| * TX Queue. |
| */ |
| - c.autoequiqe_to_viid = htonl((dbqt |
| - ? FW_EQ_ETH_CMD_AUTOEQUIQE_F |
| - : FW_EQ_ETH_CMD_AUTOEQUEQE_F) | |
| + c.autoequiqe_to_viid = htonl(FW_EQ_ETH_CMD_AUTOEQUEQE_F | |
| FW_EQ_ETH_CMD_VIID_V(pi->viid)); |
| |
| c.fetchszm_to_iqid = |
| - htonl(FW_EQ_ETH_CMD_HOSTFCMODE_V(dbqt |
| - ? HOSTFCMODE_INGRESS_QUEUE_X |
| - : HOSTFCMODE_STATUS_PAGE_X) | |
| + htonl(FW_EQ_ETH_CMD_HOSTFCMODE_V(HOSTFCMODE_STATUS_PAGE_X) | |
| FW_EQ_ETH_CMD_PCIECHN_V(pi->tx_chan) | |
| FW_EQ_ETH_CMD_FETCHRO_F | FW_EQ_ETH_CMD_IQID_V(iqid)); |
| |
| -- |
| 2.7.4 |
| |