summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/pensando/ionic/ionic_txrx.h
diff options
context:
space:
mode:
authorBrett Creeley <brett.creeley@amd.com>2024-02-29 22:39:24 +0300
committerDavid S. Miller <davem@davemloft.net>2024-03-04 12:38:13 +0300
commit061b9bedbef124ab28682496bdba7f265f13b2f3 (patch)
treef128f4ecdb176823e2bed52e08d5d00d90384718 /drivers/net/ethernet/pensando/ionic/ionic_txrx.h
parentdf620d7fabe984accf6567c846e4188fbd8add4d (diff)
downloadlinux-061b9bedbef124ab28682496bdba7f265f13b2f3.tar.xz
ionic: Rework Tx start/stop flow
Currently the driver attempts to wake the Tx queue for every descriptor processed. However, this is overkill and can cause thrashing since Tx xmit can be running concurrently on a different CPU than Tx clean. Fix this by refactoring Tx cq servicing into its own function so the Tx wake code can run after processing all Tx descriptors. The driver isn't using the expected memory barriers to make sure the stop/start bits are coherent. Fix this by making sure to use the correct memory barriers. Also, the driver is using the wake API during Tx xmit even though it's already scheduled. Fix this by using the start API during Tx xmit. Signed-off-by: Brett Creeley <brett.creeley@amd.com> Signed-off-by: Shannon Nelson <shannon.nelson@amd.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/pensando/ionic/ionic_txrx.h')
-rw-r--r--drivers/net/ethernet/pensando/ionic/ionic_txrx.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.h b/drivers/net/ethernet/pensando/ionic/ionic_txrx.h
index 82fc38e0f573..68228bb8c119 100644
--- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.h
+++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.h
@@ -15,7 +15,6 @@ int ionic_txrx_napi(struct napi_struct *napi, int budget);
netdev_tx_t ionic_start_xmit(struct sk_buff *skb, struct net_device *netdev);
bool ionic_rx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info);
-bool ionic_tx_service(struct ionic_cq *cq, struct ionic_cq_info *cq_info);
int ionic_xdp_xmit(struct net_device *netdev, int n, struct xdp_frame **xdp, u32 flags);
#endif /* _IONIC_TXRX_H_ */