[v6,06/18] net/mana: add device info

Message ID 1661899911-13086-7-git-send-email-longli@linuxonhyperv.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series Introduce Microsoft Azure Network Adatper (MANA) PMD |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Long Li Aug. 30, 2022, 10:51 p.m. UTC
  From: Long Li <longli@microsoft.com>

Add the function to get device info.

Signed-off-by: Long Li <longli@microsoft.com>
---
 doc/guides/nics/features/mana.ini |  1 +
 drivers/net/mana/mana.c           | 82 +++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+)
  

Comments

fengchengwen Sept. 2, 2022, 12:11 p.m. UTC | #1
On 2022/8/31 6:51, longli@linuxonhyperv.com wrote:
> From: Long Li <longli@microsoft.com>
> 
> Add the function to get device info.
> 
> Signed-off-by: Long Li <longli@microsoft.com>
> ---
>  doc/guides/nics/features/mana.ini |  1 +
>  drivers/net/mana/mana.c           | 82 +++++++++++++++++++++++++++++++
>  2 files changed, 83 insertions(+)
> 
> diff --git a/doc/guides/nics/features/mana.ini b/doc/guides/nics/features/mana.ini
> index 8043e11f99..566b3e8770 100644
> --- a/doc/guides/nics/features/mana.ini
> +++ b/doc/guides/nics/features/mana.ini
> @@ -8,5 +8,6 @@ Link status          = P
>  Linux                = Y
>  Multiprocess aware   = Y
>  Removal event        = Y
> +Speed capabilities   = P
>  Usage doc            = Y
>  x86-64               = Y
> diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c
> index c9591035ac..e1550b3c08 100644
> --- a/drivers/net/mana/mana.c
> +++ b/drivers/net/mana/mana.c
> @@ -116,6 +116,86 @@ mana_dev_close(struct rte_eth_dev *dev)
>  	return 0;
>  }
>  
> +static int mana_dev_info_get(struct rte_eth_dev *dev,
> +			     struct rte_eth_dev_info *dev_info)
> +{
> +	struct mana_priv *priv = dev->data->dev_private;
> +
> +	dev_info->max_mtu = RTE_ETHER_MTU;

...

> +	dev_info->tx_desc_lim.nb_max = priv->max_tx_desc;
> +	dev_info->tx_desc_lim.nb_align = MIN_BUFFERS_PER_QUEUE;
> +	dev_info->tx_desc_lim.nb_seg_max = priv->max_send_sge;
> +	dev_info->rx_desc_lim.nb_mtu_seg_max = priv->max_recv_sge;
> +
> +	/* Speed */
> +	dev_info->speed_capa = ETH_LINK_SPEED_100G;

I notice "[Patch v6 04/18] net/mana: add link update" report always 200G, why here is 100G?

> +
> +	/* RX params */
> +	dev_info->default_rxportconf.burst_size = 1;
> +	dev_info->default_rxportconf.ring_size = MAX_RECEIVE_BUFFERS_PER_QUEUE;
> +	dev_info->default_rxportconf.nb_queues = 1;
> +
> +	/* TX params */
> +	dev_info->default_txportconf.burst_size = 1;
> +	dev_info->default_txportconf.ring_size = MAX_SEND_BUFFERS_PER_QUEUE;
> +	dev_info->default_txportconf.nb_queues = 1;
> +
> +	return 0;
> +}
> +

...
  
Long Li Sept. 2, 2022, 7:35 p.m. UTC | #2
> Subject: Re: [Patch v6 06/18] net/mana: add device info
> 
> On 2022/8/31 6:51, longli@linuxonhyperv.com wrote:
> > From: Long Li <longli@microsoft.com>
> >
> > Add the function to get device info.
> >
> > Signed-off-by: Long Li <longli@microsoft.com>
> > ---
> >  doc/guides/nics/features/mana.ini |  1 +
> >  drivers/net/mana/mana.c           | 82 +++++++++++++++++++++++++++++++
> >  2 files changed, 83 insertions(+)
> >
> > diff --git a/doc/guides/nics/features/mana.ini
> > b/doc/guides/nics/features/mana.ini
> > index 8043e11f99..566b3e8770 100644
> > --- a/doc/guides/nics/features/mana.ini
> > +++ b/doc/guides/nics/features/mana.ini
> > @@ -8,5 +8,6 @@ Link status          = P
> >  Linux                = Y
> >  Multiprocess aware   = Y
> >  Removal event        = Y
> > +Speed capabilities   = P
> >  Usage doc            = Y
> >  x86-64               = Y
> > diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c index
> > c9591035ac..e1550b3c08 100644
> > --- a/drivers/net/mana/mana.c
> > +++ b/drivers/net/mana/mana.c
> > @@ -116,6 +116,86 @@ mana_dev_close(struct rte_eth_dev *dev)
> >  	return 0;
> >  }
> >
> > +static int mana_dev_info_get(struct rte_eth_dev *dev,
> > +			     struct rte_eth_dev_info *dev_info) {
> > +	struct mana_priv *priv = dev->data->dev_private;
> > +
> > +	dev_info->max_mtu = RTE_ETHER_MTU;
> 
> ...
> 
> > +	dev_info->tx_desc_lim.nb_max = priv->max_tx_desc;
> > +	dev_info->tx_desc_lim.nb_align = MIN_BUFFERS_PER_QUEUE;
> > +	dev_info->tx_desc_lim.nb_seg_max = priv->max_send_sge;
> > +	dev_info->rx_desc_lim.nb_mtu_seg_max = priv->max_recv_sge;
> > +
> > +	/* Speed */
> > +	dev_info->speed_capa = ETH_LINK_SPEED_100G;
> 
> I notice "[Patch v6 04/18] net/mana: add link update" report always 200G, why
> here is 100G?

Thanks for pointing this out. I will fix patch 04.

> 
> > +
> > +	/* RX params */
> > +	dev_info->default_rxportconf.burst_size = 1;
> > +	dev_info->default_rxportconf.ring_size =
> MAX_RECEIVE_BUFFERS_PER_QUEUE;
> > +	dev_info->default_rxportconf.nb_queues = 1;
> > +
> > +	/* TX params */
> > +	dev_info->default_txportconf.burst_size = 1;
> > +	dev_info->default_txportconf.ring_size =
> MAX_SEND_BUFFERS_PER_QUEUE;
> > +	dev_info->default_txportconf.nb_queues = 1;
> > +
> > +	return 0;
> > +}
> > +
> 
> ...
  

Patch

diff --git a/doc/guides/nics/features/mana.ini b/doc/guides/nics/features/mana.ini
index 8043e11f99..566b3e8770 100644
--- a/doc/guides/nics/features/mana.ini
+++ b/doc/guides/nics/features/mana.ini
@@ -8,5 +8,6 @@  Link status          = P
 Linux                = Y
 Multiprocess aware   = Y
 Removal event        = Y
+Speed capabilities   = P
 Usage doc            = Y
 x86-64               = Y
diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c
index c9591035ac..e1550b3c08 100644
--- a/drivers/net/mana/mana.c
+++ b/drivers/net/mana/mana.c
@@ -116,6 +116,86 @@  mana_dev_close(struct rte_eth_dev *dev)
 	return 0;
 }
 
+static int mana_dev_info_get(struct rte_eth_dev *dev,
+			     struct rte_eth_dev_info *dev_info)
+{
+	struct mana_priv *priv = dev->data->dev_private;
+
+	dev_info->max_mtu = RTE_ETHER_MTU;
+
+	/* RX params */
+	dev_info->min_rx_bufsize = MIN_RX_BUF_SIZE;
+	dev_info->max_rx_pktlen = MAX_FRAME_SIZE;
+
+	dev_info->max_rx_queues = priv->max_rx_queues;
+	dev_info->max_tx_queues = priv->max_tx_queues;
+
+	dev_info->max_mac_addrs = BNIC_MAX_MAC_ADDR;
+	dev_info->max_hash_mac_addrs = 0;
+
+	dev_info->max_vfs = 1;
+
+	/* Offload params */
+	dev_info->rx_offload_capa = BNIC_DEV_RX_OFFLOAD_SUPPORT;
+
+	dev_info->tx_offload_capa = BNIC_DEV_TX_OFFLOAD_SUPPORT;
+
+	/* RSS */
+	dev_info->reta_size = INDIRECTION_TABLE_NUM_ELEMENTS;
+	dev_info->hash_key_size = TOEPLITZ_HASH_KEY_SIZE_IN_BYTES;
+	dev_info->flow_type_rss_offloads = BNIC_ETH_RSS_SUPPORT;
+
+	/* Thresholds */
+	dev_info->default_rxconf = (struct rte_eth_rxconf){
+		.rx_thresh = {
+			.pthresh = 8,
+			.hthresh = 8,
+			.wthresh = 0,
+		},
+		.rx_free_thresh = 32,
+		/* If no descriptors available, pkts are dropped by default */
+		.rx_drop_en = 1,
+	};
+
+	dev_info->default_txconf = (struct rte_eth_txconf){
+		.tx_thresh = {
+			.pthresh = 32,
+			.hthresh = 0,
+			.wthresh = 0,
+		},
+		.tx_rs_thresh = 32,
+		.tx_free_thresh = 32,
+	};
+
+	/* Buffer limits */
+	dev_info->rx_desc_lim.nb_min = MIN_BUFFERS_PER_QUEUE;
+	dev_info->rx_desc_lim.nb_max = priv->max_rx_desc;
+	dev_info->rx_desc_lim.nb_align = MIN_BUFFERS_PER_QUEUE;
+	dev_info->rx_desc_lim.nb_seg_max = priv->max_recv_sge;
+	dev_info->rx_desc_lim.nb_mtu_seg_max = priv->max_recv_sge;
+
+	dev_info->tx_desc_lim.nb_min = MIN_BUFFERS_PER_QUEUE;
+	dev_info->tx_desc_lim.nb_max = priv->max_tx_desc;
+	dev_info->tx_desc_lim.nb_align = MIN_BUFFERS_PER_QUEUE;
+	dev_info->tx_desc_lim.nb_seg_max = priv->max_send_sge;
+	dev_info->rx_desc_lim.nb_mtu_seg_max = priv->max_recv_sge;
+
+	/* Speed */
+	dev_info->speed_capa = ETH_LINK_SPEED_100G;
+
+	/* RX params */
+	dev_info->default_rxportconf.burst_size = 1;
+	dev_info->default_rxportconf.ring_size = MAX_RECEIVE_BUFFERS_PER_QUEUE;
+	dev_info->default_rxportconf.nb_queues = 1;
+
+	/* TX params */
+	dev_info->default_txportconf.burst_size = 1;
+	dev_info->default_txportconf.ring_size = MAX_SEND_BUFFERS_PER_QUEUE;
+	dev_info->default_txportconf.nb_queues = 1;
+
+	return 0;
+}
+
 static const uint32_t *mana_supported_ptypes(struct rte_eth_dev *dev __rte_unused)
 {
 	static const uint32_t ptypes[] = {
@@ -150,11 +230,13 @@  static int mana_dev_link_update(struct rte_eth_dev *dev,
 const struct eth_dev_ops mana_dev_ops = {
 	.dev_configure		= mana_dev_configure,
 	.dev_close		= mana_dev_close,
+	.dev_infos_get		= mana_dev_info_get,
 	.dev_supported_ptypes_get = mana_supported_ptypes,
 	.link_update		= mana_dev_link_update,
 };
 
 const struct eth_dev_ops mana_dev_sec_ops = {
+	.dev_infos_get = mana_dev_info_get,
 };
 
 uint16_t