forked from Minki/linux
scsi: ibmvfc: Add helper for testing capability flags
Testing the NPIV Login response capabilities is a long winded process of dereferencing the vhost->login_buf->resp.capabilities field, then byte swapping that value to host endian, and performing the bitwise test. Currently we only ever check this in ibmvfc_cancel_all(), but follow-up patches will need to regularly check for targetWWPN and channelization support. Add a helper to simplify checking various VIOS capabilities, namely ibmvfc_check_caps(). Link: https://lore.kernel.org/r/20201118011104.296999-4-tyreld@linux.ibm.com Acked-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
c16b8a6d8a
commit
a318c2b71c
@ -138,6 +138,13 @@ static void ibmvfc_tgt_move_login(struct ibmvfc_target *);
|
||||
|
||||
static const char *unknown_error = "unknown error";
|
||||
|
||||
static int ibmvfc_check_caps(struct ibmvfc_host *vhost, unsigned long cap_flags)
|
||||
{
|
||||
u64 host_caps = be64_to_cpu(vhost->login_buf->resp.capabilities);
|
||||
|
||||
return (host_caps & cap_flags) ? 1 : 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SCSI_IBMVFC_TRACE
|
||||
/**
|
||||
* ibmvfc_trc_start - Log a start trace entry
|
||||
@ -2240,7 +2247,7 @@ static int ibmvfc_cancel_all(struct scsi_device *sdev, int type)
|
||||
tmf->common.length = cpu_to_be16(sizeof(*tmf));
|
||||
tmf->scsi_id = cpu_to_be64(rport->port_id);
|
||||
int_to_scsilun(sdev->lun, &tmf->lun);
|
||||
if (!(be64_to_cpu(vhost->login_buf->resp.capabilities) & IBMVFC_CAN_SUPPRESS_ABTS))
|
||||
if (!ibmvfc_check_caps(vhost, IBMVFC_CAN_SUPPRESS_ABTS))
|
||||
type &= ~IBMVFC_TMF_SUPPRESS_ABTS;
|
||||
if (vhost->state == IBMVFC_ACTIVE)
|
||||
tmf->flags = cpu_to_be32((type | IBMVFC_TMF_LUA_VALID));
|
||||
|
Loading…
Reference in New Issue
Block a user