scsi: lpfc: Do not abuse UUID APIs and LPFC_COMPRESS_VMID_SIZE
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 18 Aug 2023 15:54:52 +0000 (18:54 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Mon, 21 Aug 2023 21:13:57 +0000 (17:13 -0400)
The lpfc_vmid_host_uuid is not defined as uuid_t and its usage is not the
same as for uuid_t operations (like exporting or importing).  Hence replace
call to uuid_is_null() by respective memchr_inv() without abusing casting.

With that, replace LPFC_COMPRESS_VMID_SIZE with plain number and respective
sizeof() to make code robust to changes in the future, if any.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20230818155452.875781-1-andriy.shevchenko@linux.intel.com
Reviewed-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc.h
drivers/scsi/lpfc/lpfc_els.c

index bc1c5f6..af15f7a 100644 (file)
@@ -309,7 +309,6 @@ struct lpfc_hba;
 #define LPFC_VMID_TIMER   300  /* timer interval in seconds */
 
 #define LPFC_MAX_VMID_SIZE      256
-#define LPFC_COMPRESS_VMID_SIZE 16
 
 union lpfc_vmid_io_tag {
        u32 app_id;     /* App Id vmid */
@@ -667,7 +666,7 @@ struct lpfc_vport {
        uint32_t cfg_first_burst_size;
        uint32_t dev_loss_tmo_changed;
        /* VMID parameters */
-       u8 lpfc_vmid_host_uuid[LPFC_COMPRESS_VMID_SIZE];
+       u8 lpfc_vmid_host_uuid[16];
        u32 max_vmid;   /* maximum VMIDs allowed per port */
        u32 cur_vmid_cnt;       /* Current VMID count */
 #define LPFC_MIN_VMID  4
index b5cd6d1..54e47f2 100644 (file)
@@ -1331,7 +1331,8 @@ lpfc_issue_els_flogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
        if (phba->cfg_vmid_priority_tagging) {
                sp->cmn.priority_tagging = 1;
                /* lpfc_vmid_host_uuid is combination of wwpn and wwnn */
-               if (uuid_is_null((uuid_t *)vport->lpfc_vmid_host_uuid)) {
+               if (!memchr_inv(vport->lpfc_vmid_host_uuid, 0,
+                               sizeof(vport->lpfc_vmid_host_uuid))) {
                        memcpy(vport->lpfc_vmid_host_uuid, phba->wwpn,
                               sizeof(phba->wwpn));
                        memcpy(&vport->lpfc_vmid_host_uuid[8], phba->wwnn,
@@ -12357,9 +12358,10 @@ lpfc_vmid_uvem(struct lpfc_vport *vport,
        elsiocb->vmid_tag.vmid_context = vmid_context;
        pcmd = (u8 *)elsiocb->cmd_dmabuf->virt;
 
-       if (uuid_is_null((uuid_t *)vport->lpfc_vmid_host_uuid))
+       if (!memchr_inv(vport->lpfc_vmid_host_uuid, 0,
+                       sizeof(vport->lpfc_vmid_host_uuid)))
                memcpy(vport->lpfc_vmid_host_uuid, vmid->host_vmid,
-                      LPFC_COMPRESS_VMID_SIZE);
+                      sizeof(vport->lpfc_vmid_host_uuid));
 
        *((u32 *)(pcmd)) = ELS_CMD_UVEM;
        len = (u32 *)(pcmd + 4);
@@ -12369,13 +12371,13 @@ lpfc_vmid_uvem(struct lpfc_vport *vport,
        vem_id_desc->tag = be32_to_cpu(VEM_ID_DESC_TAG);
        vem_id_desc->length = be32_to_cpu(LPFC_UVEM_VEM_ID_DESC_SIZE);
        memcpy(vem_id_desc->vem_id, vport->lpfc_vmid_host_uuid,
-              LPFC_COMPRESS_VMID_SIZE);
+              sizeof(vem_id_desc->vem_id));
 
        inst_desc = (struct instantiated_ve_desc *)(pcmd + 32);
        inst_desc->tag = be32_to_cpu(INSTANTIATED_VE_DESC_TAG);
        inst_desc->length = be32_to_cpu(LPFC_UVEM_VE_MAP_DESC_SIZE);
        memcpy(inst_desc->global_vem_id, vmid->host_vmid,
-              LPFC_COMPRESS_VMID_SIZE);
+              sizeof(inst_desc->global_vem_id));
 
        bf_set(lpfc_instantiated_nport_id, inst_desc, vport->fc_myDID);
        bf_set(lpfc_instantiated_local_id, inst_desc,