• Subbaraya Sundeep's avatar
    octeontx2-af: cn10k: Add support for programmable channels · 242da439
    Subbaraya Sundeep authored
    NIX uses unique channel numbers to identify the packet sources/sinks
    like CGX,LBK and SDP. The channel numbers assigned to each block are
    hardwired in CN9xxx silicon.
    The fixed channel numbers in CN9xxx are:
    
    0x0 | a << 8 | b            - LBK(0..3)_CH(0..63)
    0x0 | a << 8                - Reserved
    0x700 | a                   - SDP_CH(0..255)
    0x800 | a << 8 | b << 4 | c - CGX(0..7)_LMAC(0..3)_CH(0..15)
    
    All the channels in the above fixed enumerator(with maximum
    number of blocks) are not required since some chips
    have less number of blocks.
    For CN10K silicon the channel numbers need to be programmed by
    software in each block with the base channel number and range of
    channels. This patch calculates and assigns the channel numbers
    to efficiently distribute the channel number range(0-4095) among
    all the blocks. The assignment is made based on the actual number of
    blocks present and also contiguously leaving no holes.
    The channel numbers remaining after the math are used as new CPT
    replay channels present in CN10K. Also since channel numbers are
    not fixed the transmit channel link number needed by AF consumers
    is calculated by AF and sent along with nix_lf_alloc mailbox response.
    Signed-off-by: default avatarSubbaraya Sundeep <sbhatta@marvell.com>
    Signed-off-by: default avatarGeetha sowjanya <gakula@marvell.com>
    Signed-off-by: default avatarSunil Goutham <sgoutham@marvell.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    242da439
rvu_nix.c 98.5 KB