* [dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities @ 2018-04-25 16:15 Ophir Munk 2018-04-25 16:31 ` Ferruh Yigit ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Ophir Munk @ 2018-04-25 16:15 UTC (permalink / raw) To: dev, Pascal Mazon Cc: Thomas Monjalon, Olga Shern, Ferruh Yigit, Ophir Munk, stable 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. Fixes: 95ae196ae10b ("net/tap: use new Rx offloads API") Fixes: 818fe14a9891 ("net/tap: use new Tx offloads API") Cc: stable@dpdk.org Signed-off-by: Ophir Munk <ophirmu@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) { -- 2.7.4 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities 2018-04-25 16:15 [dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities Ophir Munk @ 2018-04-25 16:31 ` Ferruh Yigit 2018-04-26 11:09 ` Ophir Munk 2018-04-25 16:47 ` Thomas Monjalon 2018-04-26 11:13 ` [dpdk-dev] [PATCH v2] " Ophir Munk 2 siblings, 1 reply; 8+ messages in thread From: Ferruh Yigit @ 2018-04-25 16:31 UTC (permalink / raw) To: Ophir Munk, dev, Pascal Mazon; +Cc: Thomas Monjalon, Olga Shern, stable 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@dpdk.org > > Signed-off-by: Ophir Munk <ophirmu@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) { > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities 2018-04-25 16:31 ` Ferruh Yigit @ 2018-04-26 11:09 ` Ophir Munk 0 siblings, 0 replies; 8+ messages in thread From: Ophir Munk @ 2018-04-26 11:09 UTC (permalink / raw) To: Ferruh Yigit, dev, Pascal Mazon; +Cc: Thomas Monjalon, Olga Shern, stable Hi Ferruh, Thanks for your review. v2 was sent to mailing list that updates the log message and the commit message (based on Thomas comment that all queues capabilities must be reported as port capabilities) > -----Original Message----- > From: Ferruh Yigit [mailto:ferruh.yigit@intel.com] > Sent: Wednesday, April 25, 2018 7:32 PM > To: Ophir Munk <ophirmu@mellanox.com>; dev@dpdk.org; Pascal Mazon > <pascal.mazon@6wind.com> > Cc: Thomas Monjalon <thomas@monjalon.net>; Olga Shern > <olgas@mellanox.com>; stable@dpdk.org > Subject: Re: [PATCH v1] net/tap: return empty port offload capabilities > > 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@dpdk.org > > > > Signed-off-by: Ophir Munk <ophirmu@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) { > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities 2018-04-25 16:15 [dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities Ophir Munk 2018-04-25 16:31 ` Ferruh Yigit @ 2018-04-25 16:47 ` Thomas Monjalon 2018-04-25 17:13 ` Ferruh Yigit 2018-04-26 11:13 ` [dpdk-dev] [PATCH v2] " Ophir Munk 2 siblings, 1 reply; 8+ messages in thread From: Thomas Monjalon @ 2018-04-25 16:47 UTC (permalink / raw) To: Ophir Munk, Ferruh Yigit; +Cc: dev, Pascal Mazon, Olga Shern, stable 25/04/2018 18:15, Ophir Munk: > 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. I did not follow what is the problem exactly. But this change looks wrong to me. Please look at the thread "Survey for final decision about per-port offload API" http://dpdk.org/ml/archives/dev/2018-March/094459.html It says: "every queue capabilities must be reported as port capabilities" ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities 2018-04-25 16:47 ` Thomas Monjalon @ 2018-04-25 17:13 ` Ferruh Yigit 0 siblings, 0 replies; 8+ messages in thread From: Ferruh Yigit @ 2018-04-25 17:13 UTC (permalink / raw) To: Thomas Monjalon, Ophir Munk; +Cc: dev, Pascal Mazon, Olga Shern, stable On 4/25/2018 5:47 PM, Thomas Monjalon wrote: > 25/04/2018 18:15, Ophir Munk: >> 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. > > I did not follow what is the problem exactly. > But this change looks wrong to me. > Please look at the thread > "Survey for final decision about per-port offload API" > http://dpdk.org/ml/archives/dev/2018-March/094459.html > It says: > "every queue capabilities must be reported as port capabilities" That logic is correct in capability reporting [1]. The problem here is the offload verify function assumes the tap_rx_offload_get_port_capa() is the only port level offloads. Returning queue level offloads in this function breaks the verify logic. I think the reason of this issue is undocumented smart verify function implementation (copied from mlx5 driver) [2], since it is not easy to understand it is easy to confuse. [1] dev_info->rx_queue_offload_capa = tap_rx_offload_get_queue_capa(); dev_info->rx_offload_capa = tap_rx_offload_get_port_capa() | dev_info->rx_queue_offload_capa; [2] static bool tap_rxq_are_offloads_valid(struct rte_eth_dev *dev, uint64_t offloads) { uint64_t port_offloads = dev->data->dev_conf.rxmode.offloads; uint64_t queue_supp_offloads = tap_rx_offload_get_queue_capa(); uint64_t port_supp_offloads = tap_rx_offload_get_port_capa(); if ((offloads & (queue_supp_offloads | port_supp_offloads)) != offloads) return false; if ((port_offloads ^ offloads) & port_supp_offloads) return false; return true; } ^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH v2] net/tap: return empty port offload capabilities 2018-04-25 16:15 [dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities Ophir Munk 2018-04-25 16:31 ` Ferruh Yigit 2018-04-25 16:47 ` Thomas Monjalon @ 2018-04-26 11:13 ` Ophir Munk 2018-04-26 16:56 ` Ferruh Yigit 2 siblings, 1 reply; 8+ messages in thread From: Ophir Munk @ 2018-04-26 11:13 UTC (permalink / raw) To: dev, Pascal Mazon Cc: Thomas Monjalon, Olga Shern, Ferruh Yigit, Ophir Munk, stable Fix internal report on port specific 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. This commit fixes an internal validation check for new configured queue offloads. The port capability API keeps reporting all queue capabilities as port capabilities. Fixes: 95ae196ae10b ("net/tap: use new Rx offloads API") Fixes: 818fe14a9891 ("net/tap: use new Tx offloads API") Cc: stable@dpdk.org Signed-off-by: Ophir Munk <ophirmu@mellanox.com> --- v1: initial release v2: Fix log error message and update commit message drivers/net/tap/rte_eth_tap.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index fe62ab3..b4420ce 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) { @@ -1351,7 +1342,8 @@ tap_tx_queue_setup(struct rte_eth_dev *dev, " or supported offloads 0x%" PRIx64, (void *)dev, tx_conf->offloads, dev->data->dev_conf.txmode.offloads, - tap_tx_offload_get_port_capa()); + (tap_tx_offload_get_port_capa() | + tap_tx_offload_get_queue_capa())); return -rte_errno; } } -- 2.7.4 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v2] net/tap: return empty port offload capabilities 2018-04-26 11:13 ` [dpdk-dev] [PATCH v2] " Ophir Munk @ 2018-04-26 16:56 ` Ferruh Yigit 2018-04-26 16:57 ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit 0 siblings, 1 reply; 8+ messages in thread From: Ferruh Yigit @ 2018-04-26 16:56 UTC (permalink / raw) To: Ophir Munk, dev, Pascal Mazon; +Cc: Thomas Monjalon, Olga Shern, stable On 4/26/2018 12:13 PM, Ophir Munk wrote: > Fix internal report on port specific 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. > This commit fixes an internal validation check for new configured > queue offloads. > The port capability API keeps reporting all queue capabilities as port > capabilities. > > Fixes: 95ae196ae10b ("net/tap: use new Rx offloads API") > Fixes: 818fe14a9891 ("net/tap: use new Tx offloads API") > Cc: stable@dpdk.org > > Signed-off-by: Ophir Munk <ophirmu@mellanox.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [dpdk-stable] [PATCH v2] net/tap: return empty port offload capabilities 2018-04-26 16:56 ` Ferruh Yigit @ 2018-04-26 16:57 ` Ferruh Yigit 0 siblings, 0 replies; 8+ messages in thread From: Ferruh Yigit @ 2018-04-26 16:57 UTC (permalink / raw) To: Ophir Munk, dev, Pascal Mazon; +Cc: Thomas Monjalon, Olga Shern, stable On 4/26/2018 5:56 PM, Ferruh Yigit wrote: > On 4/26/2018 12:13 PM, Ophir Munk wrote: >> Fix internal report on port specific 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. >> This commit fixes an internal validation check for new configured >> queue offloads. >> The port capability API keeps reporting all queue capabilities as port >> capabilities. >> >> Fixes: 95ae196ae10b ("net/tap: use new Rx offloads API") >> Fixes: 818fe14a9891 ("net/tap: use new Tx offloads API") >> Cc: stable@dpdk.org >> >> Signed-off-by: Ophir Munk <ophirmu@mellanox.com> > > Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> Applied to dpdk-next-net/master, thanks. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2018-04-26 16:57 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-04-25 16:15 [dpdk-dev] [PATCH v1] net/tap: return empty port offload capabilities Ophir Munk 2018-04-25 16:31 ` Ferruh Yigit 2018-04-26 11:09 ` Ophir Munk 2018-04-25 16:47 ` Thomas Monjalon 2018-04-25 17:13 ` Ferruh Yigit 2018-04-26 11:13 ` [dpdk-dev] [PATCH v2] " Ophir Munk 2018-04-26 16:56 ` Ferruh Yigit 2018-04-26 16:57 ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).