[SCSI] bfa: Fix to set vport FC host sysfs entries
authorKrishna Gudipati <kgudipat@brocade.com>
Sat, 12 May 2012 00:49:59 +0000 (17:49 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Tue, 22 May 2012 10:06:29 +0000 (11:06 +0100)
Made changes to set the fc_host sysfs entries supported_speeds,
supported_classes etc., during the vport creation from the
FC transport template.

Signed-off-by: Krishna Gudipati <kgudipat@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/bfa/bfad_attr.c
drivers/scsi/bfa/bfad_im.c
drivers/scsi/bfa/bfad_im.h

index 8b6c6bf..b839274 100644 (file)
@@ -426,6 +426,23 @@ bfad_im_vport_create(struct fc_vport *fc_vport, bool disable)
                vshost = vport->drv_port.im_port->shost;
                fc_host_node_name(vshost) = wwn_to_u64((u8 *)&port_cfg.nwwn);
                fc_host_port_name(vshost) = wwn_to_u64((u8 *)&port_cfg.pwwn);
+               fc_host_supported_classes(vshost) = FC_COS_CLASS3;
+
+               memset(fc_host_supported_fc4s(vshost), 0,
+                       sizeof(fc_host_supported_fc4s(vshost)));
+
+               /* For FCP type 0x08 */
+               if (supported_fc4s & BFA_LPORT_ROLE_FCP_IM)
+                       fc_host_supported_fc4s(vshost)[2] = 1;
+
+               /* For fibre channel services type 0x20 */
+               fc_host_supported_fc4s(vshost)[7] = 1;
+
+               fc_host_supported_speeds(vshost) =
+                               bfad_im_supported_speeds(&bfad->bfa);
+               fc_host_maxframe_size(vshost) =
+                               bfa_fcport_get_maxfrsize(&bfad->bfa);
+
                fc_vport->dd_data = vport;
                vport->drv_port.im_port->fc_vport = fc_vport;
        } else if (rc == BFA_STATUS_INVALID_WWN)
index 3153923..1ac09af 100644 (file)
@@ -987,7 +987,7 @@ done:
        return 0;
 }
 
-static u32
+u32
 bfad_im_supported_speeds(struct bfa_s *bfa)
 {
        struct bfa_ioc_attr_s *ioc_attr;
index 0814367..f6c1023 100644 (file)
@@ -37,6 +37,7 @@ int  bfad_im_scsi_host_alloc(struct bfad_s *bfad,
                struct bfad_im_port_s *im_port, struct device *dev);
 void bfad_im_scsi_host_free(struct bfad_s *bfad,
                                struct bfad_im_port_s *im_port);
+u32 bfad_im_supported_speeds(struct bfa_s *bfa);
 
 #define MAX_FCP_TARGET 1024
 #define MAX_FCP_LUN 16384