[v6,06/18] net/mana: add device info
Checks
Commit Message
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
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;
> +}
> +
...
> 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;
> > +}
> > +
>
> ...
@@ -8,5 +8,6 @@ Link status = P
Linux = Y
Multiprocess aware = Y
Removal event = Y
+Speed capabilities = P
Usage doc = Y
x86-64 = Y
@@ -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