| From: Jakub Kicinski <kubak...@wp.pl> | Sent: Thursday, July 6, 2017 12:02 PM | | IMHO if something gets replugged all the settings should be reset. | I feel that it's not entirely unlike replugging a USB adapter. Perhaps | we should introduce some (devlink) notifications for SFP module events | so userspace can apply whatever static user config it has?
Absolutely a valid approach. As are all of the ones I outlined. But, and far more importantly, ideally _*ANY*_ such decision is made at an architectural level to apply to all Link Parameters and Vendor Products. The last thing a user wants to deal with is a hodge-podge of different policies for different adapters from different vendors. As I noted in my previous letter: this is something new that we've never faced before with any prior networking technology. All previous networking technologies had a static set of Physical Port Capabilities fixed from the moment a Host Diver/Firmware first see a Port. We're now facing a situation where these can change dynamically from moment to moment based on what Transceiver Module is inserted. With regard to this "architectural" issue, one way of trying to tease out what model will be the simplest for users to work with is to ask: how do users conceive of a "Port"? I.e. when a user requests that a particular Link Parameter be applied to a Port, are they thinking that it only applies to the current instantaneous combination of Adapter Transceiver Module Cage + Transceiver Module? Or do they conceptualize a "Port" as being a higher level entity? Or, let's make it Very Concrete with a specific example: 1. User applies some set of Link Parameters. 2. User attempts to bring Link up but it doesn't come up. 3. User decides to try a different cable on the grounds that the first cable may be bad. 4. New cable is accidentally of a completely different type with completely different subsequent Physical Port Capabilities, not capable of supporting the user's selected Link Parameters. 5. User realizes this accidental mis-selection, and swaps in a third cable, similar to the first cable. 6. User attempts to bring the Link up with the third cable. If we reset all of the user-specified Link Parameters at point #3 and/or #5, then the user's requested Link Parameter settings from point #1 will no longer be in effect at point #6. Is this expected/desirable? In our discussions (Dustin, I, and others), we felt that the answer to this above scenario question was "no". I.e. that users would have a persistent memory of having applied a set of Link Parameter settings to the "Port" and would be annoyed/confused if those settings were "arbitrarily" reset at some indefinite time. But, this is a discussion and a decision that needs to be made. Regardless of what people finally decide is the "Right Answer", it needs to be extremely well documented, it needs to be executed uniformly, and we may want to explicitly notify the user at the points where something unexpected/confusing is occurring. Say, in the "Reset Unsupportable Link Parameters When Transceiver Module Is Changed" model that you advocate, when the user's Link Parameter settings are reset. Casey