Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9d75e87 authored by Tariq Toukan's avatar Tariq Toukan Committed by Greg Kroah-Hartman
Browse files

net: Fix features skip in for_each_netdev_feature()



[ Upstream commit 85db6352fc8a158a893151baa1716463d34a20d0 ]

The find_next_netdev_feature() macro gets the "remaining length",
not bit index.
Passing "bit - 1" for the following iteration is wrong as it skips
the adjacent bit. Pass "bit" instead.

Fixes: 3b89ea9c ("net: Fix for_each_netdev_feature on Big endian")
Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
Reviewed-by: default avatarGal Pressman <gal@nvidia.com>
Link: https://lore.kernel.org/r/20220504080914.1918-1-tariqt@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 5c905767
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -151,7 +151,7 @@ enum {
#define NETIF_F_HW_TLS_TX	__NETIF_F(HW_TLS_TX)
#define NETIF_F_HW_TLS_TX	__NETIF_F(HW_TLS_TX)
#define NETIF_F_HW_TLS_RX	__NETIF_F(HW_TLS_RX)
#define NETIF_F_HW_TLS_RX	__NETIF_F(HW_TLS_RX)


/* Finds the next feature with the highest number of the range of start till 0.
/* Finds the next feature with the highest number of the range of start-1 till 0.
 */
 */
static inline int find_next_netdev_feature(u64 feature, unsigned long start)
static inline int find_next_netdev_feature(u64 feature, unsigned long start)
{
{
@@ -170,7 +170,7 @@ static inline int find_next_netdev_feature(u64 feature, unsigned long start)
	for ((bit) = find_next_netdev_feature((mask_addr),		\
	for ((bit) = find_next_netdev_feature((mask_addr),		\
					      NETDEV_FEATURE_COUNT);	\
					      NETDEV_FEATURE_COUNT);	\
	     (bit) >= 0;						\
	     (bit) >= 0;						\
	     (bit) = find_next_netdev_feature((mask_addr), (bit) - 1))
	     (bit) = find_next_netdev_feature((mask_addr), (bit)))


/* Features valid for ethtool to change */
/* Features valid for ethtool to change */
/* = all defined minus driver/device-class-related */
/* = all defined minus driver/device-class-related */