1 Jun 2025 |
emily | but the ONT turns it into 2.5GBASE-T | 12:57:05 |
K900 | The EEPROM specifies what modes the module understands | 12:57:27 |
emily | yes I could mess about with a PON module, but as K900 has shown those are also very cursed :P | 12:57:29 |
emily | and it would be illegal, also | 12:57:32 |
emily | since everything up to and including the ONT is property of the network operator (even though it's in my house) | 12:57:43 |
emily | so 2.5GBASE-T for WAN is non-negotiable | 12:57:55 |
emily | I could use a separate media converter but that would just have the same problems of "not controlling the MAC" | 12:58:07 |
K900 | So presumably the module would report itself | 12:58:14 |
emily | e.g., I need mini jumbo frames and so on | 12:58:16 |
emily | I see, makes sense | 12:58:23 |
K900 | * So presumably the module would report itself as whatever it's configured to do | 12:58:24 |
K900 | The fun part happens when you start adding dynamic configuration | 12:58:42 |
K900 | Because that it's not prepared for | 12:58:46 |
K900 | And that's why you have things doing SGMII layer autoneg | 12:59:00 |
K900 | Because the EEPROM then just says "yeah I speak USXGMII" | 12:59:09 |
emily | can it say it speaks both USXGMII and 2500BASE-X? | 12:59:22 |
K900 | Technically yes | 12:59:27 |
emily | I don't like that "technically" :P | 12:59:35 |
emily | all of these things are going to want to do 10G after all | 12:59:43 |
emily | since it's a 10G chip | 12:59:45 |
K900 | I'm not sure things do generally | 12:59:46 |
K900 | But you can and the kernel will basically pick the fastest least insane mode it can find | 13:00:09 |
emily | right. which I could override if i specifically want 2500BASE-X | 13:00:38 |
emily | (I assume) | 13:00:42 |
K900 | Yes | 13:01:15 |
K900 | Redacted or Malformed Event | 13:01:16 |
emily | I'm a little worried that what I want may be unobtainium but I guess I'll have to try and find out. | 13:01:18 |
K900 | Ugh | 13:01:19 |
K900 | static const phy_interface_t phylink_sfp_interface_preference[] = {
PHY_INTERFACE_MODE_25GBASER,
PHY_INTERFACE_MODE_USXGMII,
PHY_INTERFACE_MODE_10GBASER,
PHY_INTERFACE_MODE_5GBASER,
PHY_INTERFACE_MODE_2500BASEX,
PHY_INTERFACE_MODE_SGMII,
PHY_INTERFACE_MODE_1000BASEX,
PHY_INTERFACE_MODE_100BASEX,
};
| 13:01:25 |
K900 | This is the list the kernel uses | 13:01:30 |