From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9C3D046A23 for ; Sun, 29 Jun 2025 00:44:33 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 94FFD40144; Sun, 29 Jun 2025 00:44:33 +0200 (CEST) Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by mails.dpdk.org (Postfix) with ESMTP id 2C94640144 for ; Sun, 29 Jun 2025 00:44:32 +0200 (CEST) Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2363e973db1so32848795ad.0 for ; Sat, 28 Jun 2025 15:44:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1751150671; x=1751755471; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=wOfQdQNp/Vs50YJet/xP9tv7ZowzJw3aI+QBcf4HHIw=; b=crDmVNRuIX4YOf3VclQLq1b3wpAVRY/IuvXzVHUOIIMeGyqxv4t96xn9adyFrL6b1J qGdPkElXPgz6lLVCsTNolFc/tNIya87CEVSW/OhyG29kiysIUKMxEQsXFC4t58Jh2CL9 y7v5QnEV9mmso72KkctxXGCo5107TuIJPpmxiLCcGcbZ3L6/T3da9Y6jw6pENCRqJjl6 w+GOoYSchM7q0e8m83XWqCLH0gycxzxIVeTnIbH7y8vsddED8DXmyRkHcRsA/Lo9f254 iSu+qB3gG9Dno0XGntp1f6JDT/sX3L0/vmlD+uVcZeTD44tEPoHBihK23z8/Qn7FriB/ uhtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751150671; x=1751755471; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wOfQdQNp/Vs50YJet/xP9tv7ZowzJw3aI+QBcf4HHIw=; b=rDskjPFD7jm61dluHmozi5/P4P/lTH9jS7Lr+BmYzNzVR6GEJ3ekHRsuARF/kvBChQ EFL+DOjWbtupAjBVnqsjJlQMZ99At6idJa8QeqzVlmBJa/G4f5SwLIZ+BFSF6RDtsK8b 9b+JnqILflG/Bx7y/vUACNarHcqcbyiMtKzwsbg8UqSj3OPXe2fwqgtIzFZAIWmYHFDV 7s1r4XI0l+dntmZMl6WU2sH+scHtausSMhKsKZgHd+nhRo1PVq/RypFbXjqk6LXxJUF4 CAG0d4+aC5Z86xhV3S+PGRm0YA1vSkRs65rVd/2XiZVshfKYjTA1DDvwAVGPeSeZpUvx pf6g== X-Forwarded-Encrypted: i=1; AJvYcCUBbaWxAdnbCN6Wdrnb84ERgFDmFx+UAM9yN8feOOHlTop7LO0Hg9Ure+He2MIKbXpJhivN1s0=@dpdk.org X-Gm-Message-State: AOJu0YzEybI6i2zBO55vvtdshJ8SgrH8fyAfuaqqC/MLDwgltCFh2ras j56Ay5hpHnA3RQSjNQT+Y7IGNRliOHQSkr2xHqgwexvz9ZymQDNoxgie1pVxaUE4PBJ/piR29Jl A2esnfW8= X-Gm-Gg: ASbGnctfNI6TtPe0Sk23C3gBWahURImu9k2yoGkm2KotmIeALXdPpYy+Nzi19UufFrT xmqmDaIpAVuMEY7v4lxSI11Q6yJ7NUzctbc5km97xTpeDnWwvj9p+2jcaitq6JAiX2k23I3iba+ K2GyBBPhKLWopfDArcQCLdaYTNHC1XJcenzF6c7HNakYHSQmvbu7CO3vRhY4onCTMMPPjq1L+IF yOJdfs+df7+riQLt3V/snV3okYTebNnmCpCc32j9nOv2rpkXtJf86XiUbiz4pIvMGI5iQbFiZ9O ur1UCkqhJiWeOXnvTCrbXCQ1B27YRY9HvVEOXc8s1MvHDeLyNvfC+MUDr6fV7B7Cg/KllP9/PBe lhA227ghA5/04UZngRAMskAVh9r1VQGSLK3kn4+M= X-Google-Smtp-Source: AGHT+IE/C1XCwknp3Evk4BxK4zp6mnn0WgMa/GI6u+pSe40w/Ekljk1cF8Erjbd7zfqqxMKunuP/Pw== X-Received: by 2002:a17:902:e847:b0:236:71a5:4417 with SMTP id d9443c01a7336-238e9e05a5cmr178151905ad.5.1751150671096; Sat, 28 Jun 2025 15:44:31 -0700 (PDT) Received: from hermes.local (204-195-96-226.wavecable.com. [204.195.96.226]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb3c8b81sm44698925ad.242.2025.06.28.15.44.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Jun 2025 15:44:30 -0700 (PDT) Date: Sat, 28 Jun 2025 15:44:28 -0700 From: Stephen Hemminger To: Wenbo Cao Cc: Ferruh Yigit , dev@dpdk.org, yaojun@mucse.com, stable@dpdk.org Subject: Re: [PATCH v1 1/3] net/rnp: add check firmware respond info Message-ID: <20250628154428.1de592f9@hermes.local> In-Reply-To: <20250618121113.17302-2-caowenbo@mucse.com> References: <20250618121113.17302-1-caowenbo@mucse.com> <20250618121113.17302-2-caowenbo@mucse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org On Wed, 18 Jun 2025 20:11:11 +0800 Wenbo Cao 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; }