net/smc: add new link state and related helpers
Before a link can be reused it must have been cleared. Lowest current link state is INACTIVE, which does not mean that the link is already cleared. Add a new state UNUSED that is set when the link is cleared and can be reused. Add helper smc_llc_usable_link() to find an active link in a link group, and smc_link_usable() to determine if a link is usable. Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Reviewed-by: Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
e07d31dc16
commit
d854fcbfae
@@ -372,7 +372,7 @@ static void smc_llc_send_message_work(struct work_struct *work)
|
||||
struct smc_wr_buf *wr_buf;
|
||||
int rc;
|
||||
|
||||
if (llcwrk->link->state == SMC_LNK_INACTIVE)
|
||||
if (!smc_link_usable(llcwrk->link))
|
||||
goto out;
|
||||
rc = smc_llc_add_pending_send(llcwrk->link, &wr_buf, &pend);
|
||||
if (rc)
|
||||
@@ -562,7 +562,7 @@ static void smc_llc_rx_handler(struct ib_wc *wc, void *buf)
|
||||
return; /* short message */
|
||||
if (llc->raw.hdr.length != sizeof(*llc))
|
||||
return; /* invalid message */
|
||||
if (link->state == SMC_LNK_INACTIVE)
|
||||
if (!smc_link_usable(link))
|
||||
return; /* link not active, drop msg */
|
||||
|
||||
switch (llc->raw.hdr.common.type) {
|
||||
|
Reference in New Issue
Block a user