• Arkadi Sharshevsky's avatar
    devlink: Support for pipeline debug (dpipe) · 1555d204
    Arkadi Sharshevsky authored
    The pipeline debug is used to export the pipeline abstractions for the
    main objects - tables, headers and entries. The only support for set is
    for changing the counter parameter on specific table.
    
    The basic structures:
    
    Header - can represent a real protocol header information or internal
             metadata. Generic protocol headers like IPv4 can be shared
             between drivers. Each driver can add local headers.
    
    Field - part of a header. Can represent protocol field or specific ASIC
            metadata field. Hardware special metadata fields can be mapped
            to different resources, for example switch ASIC ports can have
            internal number which from the systems point of view is mapped
            to netdeivce ifindex.
    
    Match - represent specific match rule. Can describe match on specific
            field or header. The header index should be specified as well
            in order to support several header instances of the same type
            (tunneling).
    
    Action - represents specific action rule. Actions can describe operations
             on specific field values for example like set, increment, etc.
             And header operation like add and delete.
    
    Value - represents value which can be associated with specific match or
            action.
    
    Table - represents a hardware block which can be described with match/
            action behavior. The match/action can be done on the packets
            data or on the internal metadata that it gathered along the
            packets traversal throw the pipeline which is vendor specific
            and should be exported in order to provide understanding of
            ASICs behavior.
    
    Entry - represents single record in a specific table. The entry is
            identified by specific combination of values for match/action.
    
    Prior to accessing the tables/entries the drivers provide the header/
    field data base which is used by driver to user-space. The data base
    is split between the shared headers and unique headers.
    Signed-off-by: default avatarArkadi Sharshevsky <arkadis@mellanox.com>
    Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1555d204
devlink.c 69.3 KB