Hi Joe, From: Joe Perches <joe@xxxxxxxxxxx> Date: Mon, 20 Jul 2020 08:19:52 -0700 > On Mon, 2020-07-20 at 12:23 +0300, Alexander Lobakin wrote: >> Date: Sun, 19 Jul 2020 23:21:00 +0200 From: Andrew Lunn <andrew@xxxxxxx> >>> On Sun, Jul 19, 2020 at 11:14:40PM +0300, Alexander Lobakin wrote: >>>> Currently qed driver already ran out of 32 bits to store link modes, >>>> and this doesn't allow to add and support more speeds. >>>> Convert link mode to bitmap that will always have enough space for >>>> any number of speeds and modes. > [] >>> Why not just throw away all these QED_LM_ defines and use the kernel >>> link modes? The fact you are changing the u32 to a bitmap suggests the >>> hardware does not use them. >> >> I've just double-checked, and you're right, management firmware operates >> with NVM_* definitions, while QED_LM_* are used only in QED and QEDE to >> fill Ethtool link settings. >> I didn't notice this while working on the series, but it would be really >> a lot better to just use generic definitions. >> So I'll send v3 soon. > > While you're at it, why are you using __set_bit and not set_bit? Because I'm filling link modes and don't need any atomicity at all. If you refer linkmode_*() functions [1], they also use non-atomic variants of bitops. Al [1] https://elixir.bootlin.com/linux/v5.8-rc4/source/include/linux/linkmode.h