On Thu, 10 Sep 2020 21:33:11 +0100 Edward Cree wrote: > index 078c7ec2a70e..272eb5ecb7e7 100644 > --- a/drivers/net/ethernet/sfc/ef100_tx.c > +++ b/drivers/net/ethernet/sfc/ef100_tx.c > @@ -38,7 +38,8 @@ void ef100_tx_init(struct efx_tx_queue *tx_queue) > tx_queue->channel->channel - > tx_queue->efx->tx_channel_offset); > > - if (efx_mcdi_tx_init(tx_queue, false)) > + tx_queue->tso_version = 3; > + if (efx_mcdi_tx_init(tx_queue)) > netdev_WARN(tx_queue->efx->net_dev, > "failed to initialise TXQ %d\n", tx_queue->queue); > }
> --- a/drivers/net/ethernet/sfc/tx.c > +++ b/drivers/net/ethernet/sfc/tx.c > @@ -338,8 +338,18 @@ netdev_tx_t __efx_enqueue_skb(struct efx_tx_queue > *tx_queue, struct sk_buff *skb > * size limit. > */ > if (segments) { > - EFX_WARN_ON_ONCE_PARANOID(!tx_queue->handle_tso); > - rc = tx_queue->handle_tso(tx_queue, skb, &data_mapped); > + switch (tx_queue->tso_version) { > + case 1: > + rc = efx_enqueue_skb_tso(tx_queue, skb, &data_mapped); > + break; > + case 2: > + rc = efx_ef10_tx_tso_desc(tx_queue, skb, &data_mapped); > + break; > + case 0: /* No TSO on this queue, SW fallback needed */ > + default: > + rc = -EINVAL; > + break; > + } Should tso_version 3 be handled in this switch?