diff options
Diffstat (limited to 'Documentation/networking/devlink/devlink-linecard.rst')
| -rw-r--r-- | Documentation/networking/devlink/devlink-linecard.rst | 122 | 
1 files changed, 122 insertions, 0 deletions
diff --git a/Documentation/networking/devlink/devlink-linecard.rst b/Documentation/networking/devlink/devlink-linecard.rst new file mode 100644 index 000000000000..6c0b8928bc13 --- /dev/null +++ b/Documentation/networking/devlink/devlink-linecard.rst @@ -0,0 +1,122 @@ +.. SPDX-License-Identifier: GPL-2.0 + +================= +Devlink Line card +================= + +Background +========== + +The ``devlink-linecard`` mechanism is targeted for manipulation of +line cards that serve as a detachable PHY modules for modular switch +system. Following operations are provided: + +  * Get a list of supported line card types. +  * Provision of a slot with specific line card type. +  * Get and monitor of line card state and its change. + +Line card according to the type may contain one or more gearboxes +to mux the lanes with certain speed to multiple ports with lanes +of different speed. Line card ensures N:M mapping between +the switch ASIC modules and physical front panel ports. + +Overview +======== + +Each line card devlink object is created by device driver, +according to the physical line card slots available on the device. + +Similar to splitter cable, where the device might have no way +of detection of the splitter cable geometry, the device +might not have a way to detect line card type. For that devices, +concept of provisioning is introduced. It allows the user to: + +  * Provision a line card slot with certain line card type + +    - Device driver would instruct the ASIC to prepare all +      resources accordingly. The device driver would +      create all instances, namely devlink port and netdevices +      that reside on the line card, according to the line card type +  * Manipulate of line card entities even without line card +    being physically connected or powered-up +  * Setup splitter cable on line card ports + +    - As on the ordinary ports, user may provision a splitter +      cable of a certain type, without the need to +      be physically connected to the port +  * Configure devlink ports and netdevices + +Netdevice carrier is decided as follows: + +  * Line card is not inserted or powered-down + +    - The carrier is always down +  * Line card is inserted and powered up + +    - The carrier is decided as for ordinary port netdevice + +Line card state +=============== + +The ``devlink-linecard`` mechanism supports the following line card states: + +  * ``unprovisioned``: Line card is not provisioned on the slot. +  * ``unprovisioning``: Line card slot is currently being unprovisioned. +  * ``provisioning``: Line card slot is currently in a process of being provisioned +    with a line card type. +  * ``provisioning_failed``: Provisioning was not successful. +  * ``provisioned``: Line card slot is provisioned with a type. +  * ``active``: Line card is powered-up and active. + +The following diagram provides a general overview of ``devlink-linecard`` +state transitions:: + +                                          +-------------------------+ +                                          |                         | +       +---------------------------------->      unprovisioned      | +       |                                  |                         | +       |                                  +--------|-------^--------+ +       |                                           |       | +       |                                           |       | +       |                                  +--------v-------|--------+ +       |                                  |                         | +       |                                  |       provisioning      | +       |                                  |                         | +       |                                  +------------|------------+ +       |                                               | +       |                 +-----------------------------+ +       |                 |                             | +       |    +------------v------------+   +------------v------------+   +-------------------------+ +       |    |                         |   |                         ---->                         | +       +-----   provisioning_failed   |   |       provisioned       |   |         active          | +       |    |                         |   |                         <----                         | +       |    +------------^------------+   +------------|------------+   +-------------------------+ +       |                 |                             | +       |                 |                             | +       |                 |                +------------v------------+ +       |                 |                |                         | +       |                 |                |     unprovisioning      | +       |                 |                |                         | +       |                 |                +------------|------------+ +       |                 |                             | +       |                 +-----------------------------+ +       |                                               | +       +-----------------------------------------------+ + + +Example usage +============= + +.. code:: shell + +    $ devlink lc show [ DEV [ lc LC_INDEX ] ] +    $ devlink lc set DEV lc LC_INDEX [ { type LC_TYPE | notype } ] + +    # Show current line card configuration and status for all slots: +    $ devlink lc + +    # Set slot 8 to be provisioned with type "16x100G": +    $ devlink lc set pci/0000:01:00.0 lc 8 type 16x100G + +    # Set slot 8 to be unprovisioned: +    $ devlink lc set pci/0000:01:00.0 lc 8 notype  | 
