Re: [PATCH 2/2][next] net: ethtool: Avoid thousands of -Wflex-array-member-not-at-end warnings

From: Gustavo A. R. Silva
Date: Tue Oct 29 2024 - 14:19:13 EST




On 29/10/24 12:08, Jakub Kicinski wrote:
On Tue, 29 Oct 2024 10:55:14 -0600 Gustavo A. R. Silva wrote:
On 29/10/24 07:58, Jakub Kicinski wrote:
On Mon, 21 Oct 2024 13:02:27 -0600 Gustavo A. R. Silva wrote:
@@ -3025,7 +3025,7 @@ static int bnxt_set_link_ksettings(struct net_device *dev,
{
struct bnxt *bp = netdev_priv(dev);
struct bnxt_link_info *link_info = &bp->link_info;
- const struct ethtool_link_settings *base = &lk_ksettings->base;
+ const struct ethtool_link_settings_hdr *base = &lk_ksettings->base;

Please improve the variable ordering while at it. Longest list first,
so move the @base definition first.

OK. This would end up looking like:

const struct ethtool_link_settings_hdr *base = &lk_ksettings->base;
struct bnxt *bp = netdev_priv(dev);
struct bnxt_link_info *link_info = &bp->link_info;

Correct, one step at a time.

@@ -62,7 +62,7 @@ static int linkmodes_reply_size(const struct ethnl_req_info *req_base,
{
const struct linkmodes_reply_data *data = LINKMODES_REPDATA(reply_base);
const struct ethtool_link_ksettings *ksettings = &data->ksettings;
- const struct ethtool_link_settings *lsettings = &ksettings->base;
+ const struct ethtool_link_settings_hdr *lsettings = &ksettings->base;

here it was correct and now its not

I don't think you want to change this. `lsettings` is based on `ksettings`. So,
`ksettings` should go first. The same scenario for the one below.

In which case you need to move the init out of line.

So, the same applies to the case below?

const struct ethtool_link_settings_hdr *base = &lk_ksettings->base;
struct bnxt *bp = netdev_priv(dev);
struct bnxt_link_info *link_info = &bp->link_info;

Is this going to be a priority for any other netdev patches in the future?

--
Gustavo