On 7/27/2020 2:01 PM, Andrew Lunn wrote:
> Here are the netlink messages.
> 
> sending genetlink packet (32 bytes):
>     msg length 32 genl-ctrl
>     CTRL_CMD_GETFAMILY
>         CTRL_ATTR_FAMILY_NAME = "ethtool"
> ...
> ...
> sending genetlink packet (36 bytes):
>     msg length 36 ethool ETHTOOL_MSG_LINKMODES_GET
>     ETHTOOL_MSG_LINKMODES_GET
>         ETHTOOL_A_LINKMODES_HEADER
>             ETHTOOL_A_HEADER_DEV_NAME = "green"
> received genetlink packet (572 bytes):
>     msg length 572 ethool ETHTOOL_MSG_LINKMODES_GET_REPLY
>     ETHTOOL_MSG_LINKMODES_GET_REPLY
>         ETHTOOL_A_LINKMODES_HEADER
>             ETHTOOL_A_HEADER_DEV_INDEX = 8
>             ETHTOOL_A_HEADER_DEV_NAME = "green"
>         ETHTOOL_A_LINKMODES_AUTONEG = on
>         ETHTOOL_A_LINKMODES_OURS
>             ETHTOOL_A_BITSET_SIZE = 90
>             ETHTOOL_A_BITSET_BITS
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 0
>                     ETHTOOL_A_BITSET_BIT_NAME = "10baseT/Half"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 1
>                     ETHTOOL_A_BITSET_BIT_NAME = "10baseT/Full"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 2
>                     ETHTOOL_A_BITSET_BIT_NAME = "100baseT/Half"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 3
>                     ETHTOOL_A_BITSET_BIT_NAME = "100baseT/Full"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 5
>                     ETHTOOL_A_BITSET_BIT_NAME = "1000baseT/Full"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 6
>                     ETHTOOL_A_BITSET_BIT_NAME = "Autoneg"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 7
>                     ETHTOOL_A_BITSET_BIT_NAME = "TP"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 9
>                     ETHTOOL_A_BITSET_BIT_NAME = "MII"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 13
>                     ETHTOOL_A_BITSET_BIT_NAME = "Pause"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>         ETHTOOL_A_LINKMODES_PEER
>             ETHTOOL_A_BITSET_NOMASK = true
>             ETHTOOL_A_BITSET_SIZE = 90
>             ETHTOOL_A_BITSET_BITS
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 0
>                     ETHTOOL_A_BITSET_BIT_NAME = "10baseT/Half"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 1
>                     ETHTOOL_A_BITSET_BIT_NAME = "10baseT/Full"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 2
>                     ETHTOOL_A_BITSET_BIT_NAME = "100baseT/Half"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 3
>                     ETHTOOL_A_BITSET_BIT_NAME = "100baseT/Full"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 5
>                     ETHTOOL_A_BITSET_BIT_NAME = "1000baseT/Full"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 6
>                     ETHTOOL_A_BITSET_BIT_NAME = "Autoneg"
>         ETHTOOL_A_LINKMODES_SPEED = 1000
>         ETHTOOL_A_LINKMODES_DUPLEX = 1

Based on the netlink contents here it looks like a bug at
netlink/settings.c:357, where we check for ETHTOOL_A_BITSET_BIT_VALUE,
but these aren't sent when you send the bitset using a individual
BIT_INDEX/BIT_NAME like this. I think that's a bug.

I'm working up a simple to verify this and if my suspicion is confirmed
I can write up a patch.

Thanks,
Jake

Reply via email to