scsi: qla2xxx: Fix RIDA Format-2
authorQuinn Tran <qutran@marvell.com>
Tue, 17 Dec 2019 22:06:14 +0000 (14:06 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 21 Dec 2019 18:42:41 +0000 (13:42 -0500)
This patch fixes offset for Format-2 data structure for Report ID
Acquisition. This caused driver to set remote_nport_id to 0x0000 in N2N
configuration. In a scenario where initiator's WWPN is higher than target's
WWPN, driver will assign 0x00 as target nport-id, which results into login
failure.

Link: https://lore.kernel.org/r/20191217220617.28084-12-hmadhani@marvell.com
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_fw.h

index 9dc09c1174169b6b5f5666dbaee9b62f76fcf627..df5fff819bd7d55d7e98790107741cc74a6aa242 100644 (file)
@@ -1354,12 +1354,12 @@ struct vp_rpt_id_entry_24xx {
        uint8_t port_id[3];
        uint8_t format;
        union {
-               struct {
+               struct _f0 {
                        /* format 0 loop */
                        uint8_t vp_idx_map[16];
                        uint8_t reserved_4[32];
                } f0;
-               struct {
+               struct _f1 {
                        /* format 1 fabric */
                        uint8_t vpstat1_subcode; /* vp_status=1 subcode */
                        uint8_t flags;
@@ -1381,21 +1381,22 @@ struct vp_rpt_id_entry_24xx {
                        uint16_t bbcr;
                        uint8_t reserved_5[6];
                } f1;
-               struct { /* format 2: N2N direct connect */
-                   uint8_t vpstat1_subcode;
-                   uint8_t flags;
-                   uint16_t rsv6;
-                   uint8_t rsv2[12];
-
-                   uint8_t ls_rjt_vendor;
-                   uint8_t ls_rjt_explanation;
-                   uint8_t ls_rjt_reason;
-                   uint8_t rsv3[5];
-
-                   uint8_t port_name[8];
-                   uint8_t node_name[8];
-                   uint8_t remote_nport_id[4];
-                   uint32_t reserved_5;
+               struct _f2 { /* format 2: N2N direct connect */
+                       uint8_t vpstat1_subcode;
+                       uint8_t flags;
+                       uint16_t fip_flags;
+                       uint8_t rsv2[12];
+
+                       uint8_t ls_rjt_vendor;
+                       uint8_t ls_rjt_explanation;
+                       uint8_t ls_rjt_reason;
+                       uint8_t rsv3[5];
+
+                       uint8_t port_name[8];
+                       uint8_t node_name[8];
+                       uint16_t bbcr;
+                       uint8_t reserved_5[2];
+                       uint8_t remote_nport_id[4];
                } f2;
        } u;
 };