[dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities

Ferruh Yigit ferruh.yigit at intel.com
Wed Apr 25 18:31:46 CEST 2018


On 4/25/2018 5:15 PM, Ophir Munk wrote:
> Fix report on port offload capabilities to be 0 (no capabilities).
> Before this commit port capabilities were a clone of queue
> capabilities, however the current TAP offload capabilities (e.g.
> checksum calculation) are per queue and are not specific per port.

Overall looks good to me, thanks.

Is error log in tap_tx_queue_setup() still valid:
  RTE_LOG(ERR, PMD,
          "%p: Tx queue offloads 0x%" PRIx64
          " don't match port offloads 0x%" PRIx64
          " or supported offloads 0x%" PRIx64,
          (void *)dev, tx_conf->offloads,
          dev->data->dev_conf.txmode.offloads,
          tap_tx_offload_get_port_capa());

There is no match expected, this path can be hit when requested offload out of
reported capabilities, but either log or printed values give much information
about real error cause.

Similar in tap_rx_queue_setup(), at least it does:
 (tap_rx_offload_get_port_capa() | tap_rx_offload_get_queue_capa())



> 
> Fixes: 95ae196ae10b ("net/tap: use new Rx offloads API")
> Fixes: 818fe14a9891 ("net/tap: use new Tx offloads API")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Ophir Munk <ophirmu at mellanox.com>
> ---
>  drivers/net/tap/rte_eth_tap.c | 21 ++++++---------------
>  1 file changed, 6 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
> index fe62ab3..aea73b1 100644
> --- a/drivers/net/tap/rte_eth_tap.c
> +++ b/drivers/net/tap/rte_eth_tap.c
> @@ -269,14 +269,9 @@ static uint64_t
>  tap_rx_offload_get_port_capa(void)
>  {
>  	/*
> -	 * In order to support legacy apps,
> -	 * report capabilities also as port capabilities.
> +	 * No specific port Rx offload capabilities.
>  	 */
> -	return DEV_RX_OFFLOAD_SCATTER |
> -	       DEV_RX_OFFLOAD_IPV4_CKSUM |
> -	       DEV_RX_OFFLOAD_UDP_CKSUM |
> -	       DEV_RX_OFFLOAD_TCP_CKSUM |
> -	       DEV_RX_OFFLOAD_CRC_STRIP;
> +	return 0;
>  }
>  
>  static uint64_t
> @@ -403,14 +398,9 @@ static uint64_t
>  tap_tx_offload_get_port_capa(void)
>  {
>  	/*
> -	 * In order to support legacy apps,
> -	 * report capabilities also as port capabilities.
> +	 * No specific port Tx offload capabilities.
>  	 */
> -	return DEV_TX_OFFLOAD_MULTI_SEGS |
> -	       DEV_TX_OFFLOAD_IPV4_CKSUM |
> -	       DEV_TX_OFFLOAD_UDP_CKSUM |
> -	       DEV_TX_OFFLOAD_TCP_CKSUM |
> -	       DEV_TX_OFFLOAD_TCP_TSO;
> +	return 0;
>  }
>  
>  static uint64_t
> @@ -787,7 +777,8 @@ tap_dev_stop(struct rte_eth_dev *dev)
>  static int
>  tap_dev_configure(struct rte_eth_dev *dev)
>  {
> -	uint64_t supp_tx_offloads = tap_tx_offload_get_port_capa();
> +	uint64_t supp_tx_offloads = tap_tx_offload_get_port_capa() |
> +				tap_tx_offload_get_queue_capa();
>  	uint64_t tx_offloads = dev->data->dev_conf.txmode.offloads;
>  
>  	if ((tx_offloads & supp_tx_offloads) != tx_offloads) {
> 



More information about the dev mailing list