diff mbox series

[net-next,01/10] eth: fbnic: reorder ethtool code

Message ID 20241220025241.1522781-2-kuba@kernel.org (mailing list archive)
State New
Delegated to: Netdev Maintainers
Headers show
Series eth: fbnic: support basic RSS config and setting channel count | expand

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Clearly marked for net-next
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 1 this patch: 1
netdev/build_tools success No tools touched, skip
netdev/cc_maintainers warning 4 maintainers not CCed: andrew+netdev@lunn.ch alexanderduyck@fb.com kernel-team@meta.com vadim.fedorenko@linux.dev
netdev/build_clang success Errors and warnings before: 2 this patch: 2
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 1 this patch: 1
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 195 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-12-20--06-00 (tests: 881)

Commit Message

Jakub Kicinski Dec. 20, 2024, 2:52 a.m. UTC
Define ethtool callback handlers in order in which they are defined
in the ops struct. It doesn't really matter what the order is,
but it's good to have an order.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
 .../net/ethernet/meta/fbnic/fbnic_ethtool.c   | 160 +++++++++---------
 1 file changed, 80 insertions(+), 80 deletions(-)

Comments

Larysa Zaremba Dec. 20, 2024, 2:53 p.m. UTC | #1
On Thu, Dec 19, 2024 at 06:52:32PM -0800, Jakub Kicinski wrote:
> Define ethtool callback handlers in order in which they are defined
> in the ops struct. It doesn't really matter what the order is,
> but it's good to have an order.
> 
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
>  .../net/ethernet/meta/fbnic/fbnic_ethtool.c   | 160 +++++++++---------
>  1 file changed, 80 insertions(+), 80 deletions(-)
> 
> diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c b/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
> index cc8ca94529ca..777e083acae9 100644
> --- a/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
> +++ b/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
> @@ -40,6 +40,68 @@ static const struct fbnic_stat fbnic_gstrings_hw_stats[] = {
>  #define FBNIC_HW_FIXED_STATS_LEN ARRAY_SIZE(fbnic_gstrings_hw_stats)
>  #define FBNIC_HW_STATS_LEN	FBNIC_HW_FIXED_STATS_LEN
>  
> +static void

I thought type and name on separate lines are not desirable, it could be moved 
to a single line in this commit. Assuming such adjustment,

Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>

Also, this would be a little bit out of scope for this commit, but seeing 
relatively new code that does not use `for (int i = 0,...)` is surprising.

> +fbnic_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
> +{
> +	struct fbnic_net *fbn = netdev_priv(netdev);
> +	struct fbnic_dev *fbd = fbn->fbd;
> +
> +	fbnic_get_fw_ver_commit_str(fbd, drvinfo->fw_version,
> +				    sizeof(drvinfo->fw_version));
> +}
> +
> +static int fbnic_get_regs_len(struct net_device *netdev)
> +{
> +	struct fbnic_net *fbn = netdev_priv(netdev);
> +
> +	return fbnic_csr_regs_len(fbn->fbd) * sizeof(u32);
> +}
> +
> +static void fbnic_get_regs(struct net_device *netdev,
> +			   struct ethtool_regs *regs, void *data)
> +{
> +	struct fbnic_net *fbn = netdev_priv(netdev);
> +
> +	fbnic_csr_get_regs(fbn->fbd, data, &regs->version);
> +}
> +
> +static void fbnic_get_strings(struct net_device *dev, u32 sset, u8 *data)
> +{
> +	int i;
> +
> +	switch (sset) {
> +	case ETH_SS_STATS:
> +		for (i = 0; i < FBNIC_HW_STATS_LEN; i++)
> +			ethtool_puts(&data, fbnic_gstrings_hw_stats[i].string);
> +		break;
> +	}
> +}
> +
> +static void fbnic_get_ethtool_stats(struct net_device *dev,
> +				    struct ethtool_stats *stats, u64 *data)
> +{
> +	struct fbnic_net *fbn = netdev_priv(dev);
> +	const struct fbnic_stat *stat;
> +	int i;
> +
> +	fbnic_get_hw_stats(fbn->fbd);
> +
> +	for (i = 0; i < FBNIC_HW_STATS_LEN; i++) {
> +		stat = &fbnic_gstrings_hw_stats[i];
> +		data[i] = *(u64 *)((u8 *)&fbn->fbd->hw_stats + stat->offset);
> +	}
> +}
> +
> +static int fbnic_get_sset_count(struct net_device *dev, int sset)
> +{
> +	switch (sset) {
> +	case ETH_SS_STATS:
> +		return FBNIC_HW_STATS_LEN;
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
>  static int
>  fbnic_get_ts_info(struct net_device *netdev,
>  		  struct kernel_ethtool_ts_info *tsinfo)
> @@ -69,14 +131,27 @@ fbnic_get_ts_info(struct net_device *netdev,
>  	return 0;
>  }
>  
> -static void
> -fbnic_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
> +static void fbnic_get_ts_stats(struct net_device *netdev,
> +			       struct ethtool_ts_stats *ts_stats)
>  {
>  	struct fbnic_net *fbn = netdev_priv(netdev);
> -	struct fbnic_dev *fbd = fbn->fbd;
> +	u64 ts_packets, ts_lost;
> +	struct fbnic_ring *ring;
> +	unsigned int start;
> +	int i;
>  
> -	fbnic_get_fw_ver_commit_str(fbd, drvinfo->fw_version,
> -				    sizeof(drvinfo->fw_version));
> +	ts_stats->pkts = fbn->tx_stats.ts_packets;
> +	ts_stats->lost = fbn->tx_stats.ts_lost;
> +	for (i = 0; i < fbn->num_tx_queues; i++) {
> +		ring = fbn->tx[i];
> +		do {
> +			start = u64_stats_fetch_begin(&ring->stats.syncp);
> +			ts_packets = ring->stats.ts_packets;
> +			ts_lost = ring->stats.ts_lost;
> +		} while (u64_stats_fetch_retry(&ring->stats.syncp, start));
> +		ts_stats->pkts += ts_packets;
> +		ts_stats->lost += ts_lost;
> +	}
>  }
>  
>  static void fbnic_set_counter(u64 *stat, struct fbnic_stat_counter *counter)
> @@ -85,43 +160,6 @@ static void fbnic_set_counter(u64 *stat, struct fbnic_stat_counter *counter)
>  		*stat = counter->value;
>  }
>  
> -static void fbnic_get_strings(struct net_device *dev, u32 sset, u8 *data)
> -{
> -	int i;
> -
> -	switch (sset) {
> -	case ETH_SS_STATS:
> -		for (i = 0; i < FBNIC_HW_STATS_LEN; i++)
> -			ethtool_puts(&data, fbnic_gstrings_hw_stats[i].string);
> -		break;
> -	}
> -}
> -
> -static int fbnic_get_sset_count(struct net_device *dev, int sset)
> -{
> -	switch (sset) {
> -	case ETH_SS_STATS:
> -		return FBNIC_HW_STATS_LEN;
> -	default:
> -		return -EOPNOTSUPP;
> -	}
> -}
> -
> -static void fbnic_get_ethtool_stats(struct net_device *dev,
> -				    struct ethtool_stats *stats, u64 *data)
> -{
> -	struct fbnic_net *fbn = netdev_priv(dev);
> -	const struct fbnic_stat *stat;
> -	int i;
> -
> -	fbnic_get_hw_stats(fbn->fbd);
> -
> -	for (i = 0; i < FBNIC_HW_STATS_LEN; i++) {
> -		stat = &fbnic_gstrings_hw_stats[i];
> -		data[i] = *(u64 *)((u8 *)&fbn->fbd->hw_stats + stat->offset);
> -	}
> -}
> -
>  static void
>  fbnic_get_eth_mac_stats(struct net_device *netdev,
>  			struct ethtool_eth_mac_stats *eth_mac_stats)
> @@ -164,44 +202,6 @@ fbnic_get_eth_mac_stats(struct net_device *netdev,
>  			  &mac_stats->eth_mac.FrameTooLongErrors);
>  }
>  
> -static void fbnic_get_ts_stats(struct net_device *netdev,
> -			       struct ethtool_ts_stats *ts_stats)
> -{
> -	struct fbnic_net *fbn = netdev_priv(netdev);
> -	u64 ts_packets, ts_lost;
> -	struct fbnic_ring *ring;
> -	unsigned int start;
> -	int i;
> -
> -	ts_stats->pkts = fbn->tx_stats.ts_packets;
> -	ts_stats->lost = fbn->tx_stats.ts_lost;
> -	for (i = 0; i < fbn->num_tx_queues; i++) {
> -		ring = fbn->tx[i];
> -		do {
> -			start = u64_stats_fetch_begin(&ring->stats.syncp);
> -			ts_packets = ring->stats.ts_packets;
> -			ts_lost = ring->stats.ts_lost;
> -		} while (u64_stats_fetch_retry(&ring->stats.syncp, start));
> -		ts_stats->pkts += ts_packets;
> -		ts_stats->lost += ts_lost;
> -	}
> -}
> -
> -static void fbnic_get_regs(struct net_device *netdev,
> -			   struct ethtool_regs *regs, void *data)
> -{
> -	struct fbnic_net *fbn = netdev_priv(netdev);
> -
> -	fbnic_csr_get_regs(fbn->fbd, data, &regs->version);
> -}
> -
> -static int fbnic_get_regs_len(struct net_device *netdev)
> -{
> -	struct fbnic_net *fbn = netdev_priv(netdev);
> -
> -	return fbnic_csr_regs_len(fbn->fbd) * sizeof(u32);
> -}
> -
>  static const struct ethtool_ops fbnic_ethtool_ops = {
>  	.get_drvinfo		= fbnic_get_drvinfo,
>  	.get_regs_len		= fbnic_get_regs_len,
> -- 
> 2.47.1
> 
>
Jakub Kicinski Dec. 20, 2024, 5:38 p.m. UTC | #2
On Fri, 20 Dec 2024 15:53:18 +0100 Larysa Zaremba wrote:
> I thought type and name on separate lines are not desirable, it could be moved 
> to a single line in this commit. Assuming such adjustment,

I find this style more readable, TBH. I tend to break the line after
return type if the function declaration doesn't fit on a line and the
type is longer than 3 chars (IOW int/u32/u8 are exceptions).

Functions which end up looking like:

static struct some_type_struct *some_function_name_here(struct another *ptr,
                                                        int argument);

are really ugly. And break if > 3 chars is a simple rule to follow.

You will find that most of fbnic does not follow this style, because
I didn't write most of it. But most of the nfp driver does.

I think I learned the breaking after return type from Felix Fietkau.
Not that he specified the 3 character thing as pedantically as I do.

> Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
> 
> Also, this would be a little bit out of scope for this commit, but seeing 
> relatively new code that does not use `for (int i = 0,...)` is surprising.

I think you at Intel try to adopt the novelties much more than the rest of us.
Let us old timers be, please.
diff mbox series

Patch

diff --git a/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c b/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
index cc8ca94529ca..777e083acae9 100644
--- a/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
+++ b/drivers/net/ethernet/meta/fbnic/fbnic_ethtool.c
@@ -40,6 +40,68 @@  static const struct fbnic_stat fbnic_gstrings_hw_stats[] = {
 #define FBNIC_HW_FIXED_STATS_LEN ARRAY_SIZE(fbnic_gstrings_hw_stats)
 #define FBNIC_HW_STATS_LEN	FBNIC_HW_FIXED_STATS_LEN
 
+static void
+fbnic_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
+{
+	struct fbnic_net *fbn = netdev_priv(netdev);
+	struct fbnic_dev *fbd = fbn->fbd;
+
+	fbnic_get_fw_ver_commit_str(fbd, drvinfo->fw_version,
+				    sizeof(drvinfo->fw_version));
+}
+
+static int fbnic_get_regs_len(struct net_device *netdev)
+{
+	struct fbnic_net *fbn = netdev_priv(netdev);
+
+	return fbnic_csr_regs_len(fbn->fbd) * sizeof(u32);
+}
+
+static void fbnic_get_regs(struct net_device *netdev,
+			   struct ethtool_regs *regs, void *data)
+{
+	struct fbnic_net *fbn = netdev_priv(netdev);
+
+	fbnic_csr_get_regs(fbn->fbd, data, &regs->version);
+}
+
+static void fbnic_get_strings(struct net_device *dev, u32 sset, u8 *data)
+{
+	int i;
+
+	switch (sset) {
+	case ETH_SS_STATS:
+		for (i = 0; i < FBNIC_HW_STATS_LEN; i++)
+			ethtool_puts(&data, fbnic_gstrings_hw_stats[i].string);
+		break;
+	}
+}
+
+static void fbnic_get_ethtool_stats(struct net_device *dev,
+				    struct ethtool_stats *stats, u64 *data)
+{
+	struct fbnic_net *fbn = netdev_priv(dev);
+	const struct fbnic_stat *stat;
+	int i;
+
+	fbnic_get_hw_stats(fbn->fbd);
+
+	for (i = 0; i < FBNIC_HW_STATS_LEN; i++) {
+		stat = &fbnic_gstrings_hw_stats[i];
+		data[i] = *(u64 *)((u8 *)&fbn->fbd->hw_stats + stat->offset);
+	}
+}
+
+static int fbnic_get_sset_count(struct net_device *dev, int sset)
+{
+	switch (sset) {
+	case ETH_SS_STATS:
+		return FBNIC_HW_STATS_LEN;
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
 static int
 fbnic_get_ts_info(struct net_device *netdev,
 		  struct kernel_ethtool_ts_info *tsinfo)
@@ -69,14 +131,27 @@  fbnic_get_ts_info(struct net_device *netdev,
 	return 0;
 }
 
-static void
-fbnic_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
+static void fbnic_get_ts_stats(struct net_device *netdev,
+			       struct ethtool_ts_stats *ts_stats)
 {
 	struct fbnic_net *fbn = netdev_priv(netdev);
-	struct fbnic_dev *fbd = fbn->fbd;
+	u64 ts_packets, ts_lost;
+	struct fbnic_ring *ring;
+	unsigned int start;
+	int i;
 
-	fbnic_get_fw_ver_commit_str(fbd, drvinfo->fw_version,
-				    sizeof(drvinfo->fw_version));
+	ts_stats->pkts = fbn->tx_stats.ts_packets;
+	ts_stats->lost = fbn->tx_stats.ts_lost;
+	for (i = 0; i < fbn->num_tx_queues; i++) {
+		ring = fbn->tx[i];
+		do {
+			start = u64_stats_fetch_begin(&ring->stats.syncp);
+			ts_packets = ring->stats.ts_packets;
+			ts_lost = ring->stats.ts_lost;
+		} while (u64_stats_fetch_retry(&ring->stats.syncp, start));
+		ts_stats->pkts += ts_packets;
+		ts_stats->lost += ts_lost;
+	}
 }
 
 static void fbnic_set_counter(u64 *stat, struct fbnic_stat_counter *counter)
@@ -85,43 +160,6 @@  static void fbnic_set_counter(u64 *stat, struct fbnic_stat_counter *counter)
 		*stat = counter->value;
 }
 
-static void fbnic_get_strings(struct net_device *dev, u32 sset, u8 *data)
-{
-	int i;
-
-	switch (sset) {
-	case ETH_SS_STATS:
-		for (i = 0; i < FBNIC_HW_STATS_LEN; i++)
-			ethtool_puts(&data, fbnic_gstrings_hw_stats[i].string);
-		break;
-	}
-}
-
-static int fbnic_get_sset_count(struct net_device *dev, int sset)
-{
-	switch (sset) {
-	case ETH_SS_STATS:
-		return FBNIC_HW_STATS_LEN;
-	default:
-		return -EOPNOTSUPP;
-	}
-}
-
-static void fbnic_get_ethtool_stats(struct net_device *dev,
-				    struct ethtool_stats *stats, u64 *data)
-{
-	struct fbnic_net *fbn = netdev_priv(dev);
-	const struct fbnic_stat *stat;
-	int i;
-
-	fbnic_get_hw_stats(fbn->fbd);
-
-	for (i = 0; i < FBNIC_HW_STATS_LEN; i++) {
-		stat = &fbnic_gstrings_hw_stats[i];
-		data[i] = *(u64 *)((u8 *)&fbn->fbd->hw_stats + stat->offset);
-	}
-}
-
 static void
 fbnic_get_eth_mac_stats(struct net_device *netdev,
 			struct ethtool_eth_mac_stats *eth_mac_stats)
@@ -164,44 +202,6 @@  fbnic_get_eth_mac_stats(struct net_device *netdev,
 			  &mac_stats->eth_mac.FrameTooLongErrors);
 }
 
-static void fbnic_get_ts_stats(struct net_device *netdev,
-			       struct ethtool_ts_stats *ts_stats)
-{
-	struct fbnic_net *fbn = netdev_priv(netdev);
-	u64 ts_packets, ts_lost;
-	struct fbnic_ring *ring;
-	unsigned int start;
-	int i;
-
-	ts_stats->pkts = fbn->tx_stats.ts_packets;
-	ts_stats->lost = fbn->tx_stats.ts_lost;
-	for (i = 0; i < fbn->num_tx_queues; i++) {
-		ring = fbn->tx[i];
-		do {
-			start = u64_stats_fetch_begin(&ring->stats.syncp);
-			ts_packets = ring->stats.ts_packets;
-			ts_lost = ring->stats.ts_lost;
-		} while (u64_stats_fetch_retry(&ring->stats.syncp, start));
-		ts_stats->pkts += ts_packets;
-		ts_stats->lost += ts_lost;
-	}
-}
-
-static void fbnic_get_regs(struct net_device *netdev,
-			   struct ethtool_regs *regs, void *data)
-{
-	struct fbnic_net *fbn = netdev_priv(netdev);
-
-	fbnic_csr_get_regs(fbn->fbd, data, &regs->version);
-}
-
-static int fbnic_get_regs_len(struct net_device *netdev)
-{
-	struct fbnic_net *fbn = netdev_priv(netdev);
-
-	return fbnic_csr_regs_len(fbn->fbd) * sizeof(u32);
-}
-
 static const struct ethtool_ops fbnic_ethtool_ops = {
 	.get_drvinfo		= fbnic_get_drvinfo,
 	.get_regs_len		= fbnic_get_regs_len,