• Sukadev Bhattiprolu's avatar
    ibmvnic: Allow multiple ltbs in rxpool ltb_set · a75de820
    Sukadev Bhattiprolu authored
    Allow multiple LTBs in the rxpool's ltb_set. The first n-1 LTBs will all
    be of the same size. The size of the last LTB in the set depends on the
    number of buffers and buffer (mtu) size.
    
    Having a set of LTBs per pool provides a couple of benefits.
    
    First, with the current value of IBMVNIC_MAX_LTB_SIZE of 16MB, with an
    MTU of 9000, we need a LTB (DMA buffer) of that size but the allocation
    can fail in low memory conditions. With a set of LTBs per pool, we can
    use several smaller (8MB) LTBs and hopefully have fewer allocation
    failures. (See also comments in ibmvnic.h on the trade-off with smaller
    LTBs)
    
    Second since the kernel limits the size of the DMA buffer to 16MB (based
    on MAX_ORDER), with a single DMA buffer per pool, the pool is also limited
    to 16MB. This in turn limits the number of buffers per pool to 1763 when
    MTU is 9000. With a set of LTBs per pool, we can have upto the max of 4096
    buffers per pool even when MTU is 9000.
    Suggested-by: default avatarBrian King <brking@linux.ibm.com>
    Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.ibm.com>
    Signed-off-by: default avatarDany Madden <drt@linux.ibm.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    a75de820
ibmvnic.h 25.4 KB