On Sat, Feb 03, 2024 at 12:18:13AM +0100, Sergio Palumbo wrote:
Hello Russell,Your third line is just wrong. Given the capabilities of the host
thanks for your explanation. I have to say that:
Module default is LAN_SDS_MODE=1
Host banana PI R3 supporting 1000base-X + 2500base-X
I would update the table as follows:
The current situation:
Host supports Module Mode Functional
1000base-X LAN_SDS_MODE=1 1000base-X Not tested, but expect to work as 1000base-X + 2500base-X
1000base-X LAN_SDS_MODE=6 1000base-X Not tested, but expect to work as 1000base-X + 2500base-X
1000base-X + 2500base-X LAN_SDS_MODE=1 1000base-X Yes
1000base-X + 2500base-X LAN_SDS_MODE=6 1000base-X Yes (host forcing module at 1000base-X)
I suppose that Banana PI R3 host is forced by linux drivers
at 1000base-X so first two cases should be same as second two cases.
With the quirk:
Host supports Module Mode Functional
1000base-X LAN_SDS_MODE=1 1000base-X Not tested, but expect to work as 1000base-X + 2500base-X host
1000base-X LAN_SDS_MODE=6 1000base-X Not tested, but expect to work as 1000base-X + 2500base-X host
1000base-X + 2500base-X LAN_SDS_MODE=1 1000base-X Yes (module forcing host at 1000base-X)
1000base-X + 2500base-X LAN_SDS_MODE=6 2500base-X Yes
_and_ the capabilities of the module adjusted by your quirk, phylink
_will_ choose 2500base-X _not_ 1000base-X for that. With your quirk,
there is no way for Linux to know what LAN_SDS_MODE has been set
in the module. Even without your quirk, _unless_ the module updates
the EEPROM contents which is unlikely, there isn't a way to know.
Adding a quirk that makes it not work in its default state is
technically a regression. We can't know whether people are already
using this module with Linux in this state. Adding this change
potentially breaks users setups.
I suppose Banana PI R3 forcing Linux drivers at 1000-X whenThere is no way for Linux to know what LAN_SDS_MODE the module is
module in LAN_SDS_MODE=1 and expect it should work alpso with
hosts at 1000base-X only in LAN_SDS_MODE=1 and LAN_SDS_MODE=6
in.