From: Stephen Hemminger <stephen@networkplumber.org>
To: Wenbo Cao <caowenbo@mucse.com>
Cc: Ferruh Yigit <ferruh.yigit@amd.com>,
dev@dpdk.org, yaojun@mucse.com, stable@dpdk.org
Subject: Re: [PATCH v1 1/3] net/rnp: add check firmware respond info
Date: Sat, 28 Jun 2025 15:44:28 -0700 [thread overview]
Message-ID: <20250628154428.1de592f9@hermes.local> (raw)
In-Reply-To: <20250618121113.17302-2-caowenbo@mucse.com>
On Wed, 18 Jun 2025 20:11:11 +0800
Wenbo Cao <caowenbo@mucse.com> wrote:
> diff --git a/drivers/net/rnp/rnp_ethdev.c b/drivers/net/rnp/rnp_ethdev.c
> index de1c077f61..7b996913c8 100644
> --- a/drivers/net/rnp/rnp_ethdev.c
> +++ b/drivers/net/rnp/rnp_ethdev.c
> @@ -751,17 +751,17 @@ rnp_get_speed_caps(struct rte_eth_dev *dev)
> {
> struct rnp_eth_port *port = RNP_DEV_TO_PORT(dev);
> uint32_t speed_cap = 0;
> - uint32_t i = 0, speed;
> uint32_t support_link;
> - uint32_t link_types;
> + uint32_t speed = 0;
> + int bit_pos = 0;
>
> support_link = port->attr.phy_meta.supported_link;
> - link_types = rte_popcount64(support_link);
> - if (!link_types)
> + if (support_link == 0)
> return 0;
> - for (i = 0; i < link_types; i++) {
> - speed = ffs(support_link) - 1;
> - switch (RTE_BIT32(speed)) {
> + while (support_link) {
> + bit_pos = ffs(support_link) - 1;
> + speed = RTE_BIT32(bit_pos) & RNP_SPEED_VALID_MASK;
> + switch (speed) {
> case RNP_SPEED_CAP_10M_FULL:
> speed_cap |= RTE_ETH_LINK_SPEED_10M;
> break;
> @@ -789,7 +789,7 @@ rnp_get_speed_caps(struct rte_eth_dev *dev)
> default:
> speed_cap |= 0;
> }
> - support_link &= ~RTE_BIT32(speed);
> + support_link &= ~(1ULL << bit_pos);
> }
> if (!port->attr.phy_meta.link_autoneg)
> speed_cap |= RTE_ETH_LINK_SPEED_FIXED;
Prefer not to mix raw masks and use of rte_bitops.
Better to stick to rte_bitops which is portable to Windows as well.
Can be simplified like:
static uint32_t
rnp_get_speed_caps(struct rte_eth_dev *dev)
{
struct rnp_eth_port *port = RNP_DEV_TO_PORT(dev);
uint32_t speed_cap = 0;
uint32_t support_link = port->attr.phy_meta.supported_link & RNP_SPEED_VALID_MASK;
while (support_link != 0) {
unsigned int bit_pos = rte_ffs32(support_link);
uint32_t speed = RTE_BIT32(bit_pos);
switch (speed) {
case RNP_SPEED_CAP_10M_FULL:
speed_cap |= RTE_ETH_LINK_SPEED_10M;
break;
case RNP_SPEED_CAP_100M_FULL:
speed_cap |= RTE_ETH_LINK_SPEED_100M;
break;
case RNP_SPEED_CAP_1GB_FULL:
speed_cap |= RTE_ETH_LINK_SPEED_1G;
break;
case RNP_SPEED_CAP_10GB_FULL:
speed_cap |= RTE_ETH_LINK_SPEED_10G;
break;
case RNP_SPEED_CAP_40GB_FULL:
speed_cap |= RTE_ETH_LINK_SPEED_40G;
break;
case RNP_SPEED_CAP_25GB_FULL:
speed_cap |= RTE_ETH_LINK_SPEED_25G;
break;
case RNP_SPEED_CAP_10M_HALF:
speed_cap |= RTE_ETH_LINK_SPEED_10M_HD;
break;
case RNP_SPEED_CAP_100M_HALF:
speed_cap |= RTE_ETH_LINK_SPEED_100M_HD;
break;
}
support_link &= ~speed;
}
if (!port->attr.phy_meta.link_autoneg)
speed_cap |= RTE_ETH_LINK_SPEED_FIXED;
return speed_cap;
}
next prev parent reply other threads:[~2025-06-28 22:44 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-18 12:11 [PATCH v0 0/3] [v0]drivers/net fixed Coverity issue Wenbo Cao
2025-06-18 12:11 ` [PATCH v1 1/3] net/rnp: add check firmware respond info Wenbo Cao
2025-06-28 22:44 ` Stephen Hemminger [this message]
2025-06-18 12:11 ` [PATCH v1 2/3] net/rnp: fix Tunnel-TSO VLAN header untrusted loop bound Wenbo Cao
2025-06-18 12:11 ` [PATCH v1 3/3] net/rnp: fix TSO segmentation for packets of 64KB Wenbo Cao
2025-06-29 17:44 ` [PATCH v0 0/3] [v0]drivers/net fixed Coverity issue Stephen Hemminger
2025-06-30 6:14 ` 11
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250628154428.1de592f9@hermes.local \
--to=stephen@networkplumber.org \
--cc=caowenbo@mucse.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=stable@dpdk.org \
--cc=yaojun@mucse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.