drivers: net: sfc: use netdev_xmit_more helper

skb->xmit_more hint is now always 0, this switches the sfc driver to
use the netdev_xmit_more helper instead.

Cc: Solarflare linux maintainers <linux-net-drivers@solarflare.com>
Cc: Edward Cree <ecree@solarflare.com>
Cc: Bert Kenward <bkenward@solarflare.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Florian Westphal 2019-04-01 16:42:16 +02:00 committed by David S. Miller
parent 3c31ff22b2
commit f79c957a0b
2 changed files with 7 additions and 9 deletions

View File

@ -321,7 +321,7 @@ netdev_tx_t ef4_enqueue_skb(struct ef4_tx_queue *tx_queue, struct sk_buff *skb)
netdev_tx_sent_queue(tx_queue->core_txq, skb_len); netdev_tx_sent_queue(tx_queue->core_txq, skb_len);
/* Pass off to hardware */ /* Pass off to hardware */
if (!skb->xmit_more || netif_xmit_stopped(tx_queue->core_txq)) { if (!netdev_xmit_more() || netif_xmit_stopped(tx_queue->core_txq)) {
struct ef4_tx_queue *txq2 = ef4_tx_queue_partner(tx_queue); struct ef4_tx_queue *txq2 = ef4_tx_queue_partner(tx_queue);
/* There could be packets left on the partner queue if those /* There could be packets left on the partner queue if those
@ -333,7 +333,7 @@ netdev_tx_t ef4_enqueue_skb(struct ef4_tx_queue *tx_queue, struct sk_buff *skb)
ef4_nic_push_buffers(tx_queue); ef4_nic_push_buffers(tx_queue);
} else { } else {
tx_queue->xmit_more_available = skb->xmit_more; tx_queue->xmit_more_available = netdev_xmit_more();
} }
tx_queue->tx_packets++; tx_queue->tx_packets++;

View File

@ -478,8 +478,6 @@ static int efx_tx_tso_fallback(struct efx_tx_queue *tx_queue,
next = skb->next; next = skb->next;
skb->next = NULL; skb->next = NULL;
if (next)
skb->xmit_more = true;
efx_enqueue_skb(tx_queue, skb); efx_enqueue_skb(tx_queue, skb);
skb = next; skb = next;
} }
@ -506,7 +504,7 @@ static int efx_tx_tso_fallback(struct efx_tx_queue *tx_queue,
netdev_tx_t efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb) netdev_tx_t efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb)
{ {
unsigned int old_insert_count = tx_queue->insert_count; unsigned int old_insert_count = tx_queue->insert_count;
bool xmit_more = skb->xmit_more; bool xmit_more = netdev_xmit_more();
bool data_mapped = false; bool data_mapped = false;
unsigned int segments; unsigned int segments;
unsigned int skb_len; unsigned int skb_len;
@ -533,7 +531,7 @@ netdev_tx_t efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb)
if (rc) if (rc)
goto err; goto err;
#ifdef EFX_USE_PIO #ifdef EFX_USE_PIO
} else if (skb_len <= efx_piobuf_size && !skb->xmit_more && } else if (skb_len <= efx_piobuf_size && !xmit_more &&
efx_nic_may_tx_pio(tx_queue)) { efx_nic_may_tx_pio(tx_queue)) {
/* Use PIO for short packets with an empty queue. */ /* Use PIO for short packets with an empty queue. */
if (efx_enqueue_skb_pio(tx_queue, skb)) if (efx_enqueue_skb_pio(tx_queue, skb))
@ -559,8 +557,8 @@ netdev_tx_t efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb)
if (__netdev_tx_sent_queue(tx_queue->core_txq, skb_len, xmit_more)) { if (__netdev_tx_sent_queue(tx_queue->core_txq, skb_len, xmit_more)) {
struct efx_tx_queue *txq2 = efx_tx_queue_partner(tx_queue); struct efx_tx_queue *txq2 = efx_tx_queue_partner(tx_queue);
/* There could be packets left on the partner queue if those /* There could be packets left on the partner queue if
* SKBs had skb->xmit_more set. If we do not push those they * xmit_more was set. If we do not push those they
* could be left for a long time and cause a netdev watchdog. * could be left for a long time and cause a netdev watchdog.
*/ */
if (txq2->xmit_more_available) if (txq2->xmit_more_available)
@ -568,7 +566,7 @@ netdev_tx_t efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb)
efx_nic_push_buffers(tx_queue); efx_nic_push_buffers(tx_queue);
} else { } else {
tx_queue->xmit_more_available = skb->xmit_more; tx_queue->xmit_more_available = xmit_more;
} }
if (segments) { if (segments) {