• Michal Kalderon's avatar
    qed: Free RoCE ILT Memory on rmmod qedr · 9de506a5
    Michal Kalderon authored
    Rdma requires ILT Memory to be allocated for it's QPs.
    Each ILT entry points to a page used by several Rdma QPs.
    To avoid allocating all the memory in advance, the rdma
    implementation dynamically allocates memory as more QPs are
    added, however it does not dynamically free the memory.
    The memory should have been freed on rmmod qedr, but isn't.
    This patch adds the memory freeing on rmmod qedr (currently
    it will be freed with qed is removed).
    
    An outcome of this bug, is that if qedr is unloaded and loaded
    without unloaded qed, there will be no more RoCE traffic.
    
    The reason these are related, is that the logic of detecting the
    first QP ever opened is by asking whether ILT memory for RoCE has
    been allocated.
    
    In addition, this patch modifies freeing of the Task context to
    always use the PROTOCOLID_ROCE and not the protocol passed,
    this is because task context for iWARP and ROCE both use the
    ROCE protocol id, as opposed to the connection context.
    
    Fixes: dbb799c3 ("qed: Initialize hardware for new protocols")
    Signed-off-by: default avatarMichal Kalderon <Michal.Kalderon@cavium.com>
    Signed-off-by: default avatarAriel Elior <Ariel.Elior@cavium.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9de506a5
qed_rdma.c 50.9 KB