net/memif: implement promisc enable/disable

Message ID 20200414061654.29459-1-jgrajcia@cisco.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series net/memif: implement promisc enable/disable |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/travis-robot success Travis build: passed
ci/Intel-compilation success Compilation OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS

Commit Message

  implement promisc enable/disable for memif PMD

Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
---
 drivers/net/memif/rte_eth_memif.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
  

Comments

Ferruh Yigit April 15, 2020, 3:26 p.m. UTC | #1
On 4/14/2020 7:16 AM, Jakub Grajciar wrote:
> implement promisc enable/disable for memif PMD
> 
> Signed-off-by: Jakub Grajciar <jgrajcia@cisco.com>
> ---
>  drivers/net/memif/rte_eth_memif.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c
> index 81d71c53a..d138ec89e 100644
> --- a/drivers/net/memif/rte_eth_memif.c
> +++ b/drivers/net/memif/rte_eth_memif.c
> @@ -1418,6 +1418,20 @@ memif_rx_queue_intr_disable(struct rte_eth_dev *dev, uint16_t qid __rte_unused)
>  	return 0;
>  }
>  
> +static int
> +memif_promisc_enable(struct rte_eth_dev *dev __rte_unused)
> +{
> +	/* memif works in promisc mode only */
> +	return 0;
> +}
> +
> +static int
> +memif_promisc_disable(struct rte_eth_dev *dev __rte_unused)
> +{
> +	/* memif works in promisc mode only */
> +	return 0;
> +}
> +
>  static const struct eth_dev_ops ops = {
>  	.dev_start = memif_dev_start,
>  	.dev_close = memif_dev_close,
> @@ -1432,6 +1446,8 @@ static const struct eth_dev_ops ops = {
>  	.link_update = memif_link_update,
>  	.stats_get = memif_stats_get,
>  	.stats_reset = memif_stats_reset,
> +	.promiscuous_enable = memif_promisc_enable,
> +	.promiscuous_disable = memif_promisc_disable,
>  };
>  
>  static int
> 

Hi Jakub,

For this, instead of providing empty dev_ops, we suggest setting the
'eth_dev->data->promiscuous = 1' during PMD initialization.

This will show that PMD promiscuous mode enabled, and because of the how ethdev
APIs implemented, when application request to enable the promiscuous mode, it
will return success, when application request to disable the promiscuous mode it
will return error which is correct since " memif works in promisc mode only".

Sample: http://lxr.dpdk.org/dpdk/v20.02/source/drivers/net/null/rte_eth_null.c#L517
  

Patch

diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c
index 81d71c53a..d138ec89e 100644
--- a/drivers/net/memif/rte_eth_memif.c
+++ b/drivers/net/memif/rte_eth_memif.c
@@ -1418,6 +1418,20 @@  memif_rx_queue_intr_disable(struct rte_eth_dev *dev, uint16_t qid __rte_unused)
 	return 0;
 }
 
+static int
+memif_promisc_enable(struct rte_eth_dev *dev __rte_unused)
+{
+	/* memif works in promisc mode only */
+	return 0;
+}
+
+static int
+memif_promisc_disable(struct rte_eth_dev *dev __rte_unused)
+{
+	/* memif works in promisc mode only */
+	return 0;
+}
+
 static const struct eth_dev_ops ops = {
 	.dev_start = memif_dev_start,
 	.dev_close = memif_dev_close,
@@ -1432,6 +1446,8 @@  static const struct eth_dev_ops ops = {
 	.link_update = memif_link_update,
 	.stats_get = memif_stats_get,
 	.stats_reset = memif_stats_reset,
+	.promiscuous_enable = memif_promisc_enable,
+	.promiscuous_disable = memif_promisc_disable,
 };
 
 static int