| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- .. 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
|