/** * FC transport template entry, get SCSI host link speed. */ static void bfad_im_get_host_speed(struct Scsi_Host *shost) { struct bfad_im_port_s *im_port = (struct bfad_im_port_s *) shost->hostdata[0]; struct bfad_s *bfad = im_port->bfad; struct bfa_pport_attr_s attr; unsigned long flags; spin_lock_irqsave(shost->host_lock, flags); bfa_fcport_get_attr(&bfad->bfa, &attr); switch (attr.speed) { case BFA_PPORT_SPEED_8GBPS: fc_host_speed(shost) = FC_PORTSPEED_8GBIT; break; case BFA_PPORT_SPEED_4GBPS: fc_host_speed(shost) = FC_PORTSPEED_4GBIT; break; case BFA_PPORT_SPEED_2GBPS: fc_host_speed(shost) = FC_PORTSPEED_2GBIT; break; case BFA_PPORT_SPEED_1GBPS: fc_host_speed(shost) = FC_PORTSPEED_1GBIT; break; default: fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; break; } spin_unlock_irqrestore(shost->host_lock, flags); }
/** * FC transport template entry, get SCSI host link speed. */ static void bfad_im_get_host_speed(struct Scsi_Host *shost) { struct bfad_im_port_s *im_port = (struct bfad_im_port_s *) shost->hostdata[0]; struct bfad_s *bfad = im_port->bfad; struct bfa_pport_attr_s attr; bfa_fcport_get_attr(&bfad->bfa, &attr); switch (attr.speed) { case BFA_PPORT_SPEED_8GBPS: fc_host_speed(shost) = FC_PORTSPEED_8GBIT; break; case BFA_PPORT_SPEED_4GBPS: fc_host_speed(shost) = FC_PORTSPEED_4GBIT; break; case BFA_PPORT_SPEED_2GBPS: fc_host_speed(shost) = FC_PORTSPEED_2GBIT; break; case BFA_PPORT_SPEED_1GBPS: fc_host_speed(shost) = FC_PORTSPEED_1GBIT; break; default: fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; break; } }
static void fnic_get_host_speed(struct Scsi_Host *shost) { struct fc_lport *lp = shost_priv(shost); struct fnic *fnic = lport_priv(lp); u32 port_speed = vnic_dev_port_speed(fnic->vdev); /* Add in other values as they get defined in fw */ switch (port_speed) { case DCEM_PORTSPEED_10G: fc_host_speed(shost) = FC_PORTSPEED_10GBIT; break; case DCEM_PORTSPEED_25G: fc_host_speed(shost) = FC_PORTSPEED_25GBIT; break; case DCEM_PORTSPEED_40G: case DCEM_PORTSPEED_4x10G: fc_host_speed(shost) = FC_PORTSPEED_40GBIT; break; case DCEM_PORTSPEED_100G: fc_host_speed(shost) = FC_PORTSPEED_100GBIT; break; default: fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; break; } }
static void fnic_get_host_speed(struct Scsi_Host *shost) { struct fc_lport *lp = shost_priv(shost); struct fnic *fnic = lport_priv(lp); u32 port_speed = vnic_dev_port_speed(fnic->vdev); switch (port_speed) { case 10000: fc_host_speed(shost) = FC_PORTSPEED_10GBIT; break; default: fc_host_speed(shost) = FC_PORTSPEED_10GBIT; break; } }
/* * csio_get_host_speed - Return link speed to FC transport. * @shost: scsi host. * */ static void csio_get_host_speed(struct Scsi_Host *shost) { struct csio_lnode *ln = shost_priv(shost); struct csio_hw *hw = csio_lnode_to_hw(ln); spin_lock_irq(&hw->lock); switch (hw->pport[ln->portid].link_speed) { case FW_PORT_CAP32_SPEED_1G: fc_host_speed(shost) = FC_PORTSPEED_1GBIT; break; case FW_PORT_CAP32_SPEED_10G: fc_host_speed(shost) = FC_PORTSPEED_10GBIT; break; case FW_PORT_CAP32_SPEED_25G: fc_host_speed(shost) = FC_PORTSPEED_25GBIT; break; case FW_PORT_CAP32_SPEED_40G: fc_host_speed(shost) = FC_PORTSPEED_40GBIT; break; case FW_PORT_CAP32_SPEED_50G: fc_host_speed(shost) = FC_PORTSPEED_50GBIT; break; case FW_PORT_CAP32_SPEED_100G: fc_host_speed(shost) = FC_PORTSPEED_100GBIT; break; default: fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN; break; } spin_unlock_irq(&hw->lock); }
/** * fc_get_host_speed() - Return the speed of the given Scsi_Host * @shost: The SCSI host whose port speed is to be determined */ void fc_get_host_speed(struct Scsi_Host *shost) { struct fc_lport *lport = shost_priv(shost); fc_host_speed(shost) = lport->link_speed; }