• Home
  • Raw
  • Download

Lines Matching refs:lport

135 static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lport, gfp_t gfp)  in fc_fcp_pkt_alloc()  argument
137 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_pkt_alloc()
143 fsp->lp = lport; in fc_fcp_pkt_alloc()
150 per_cpu_ptr(lport->stats, get_cpu())->FcpPktAllocFails++; in fc_fcp_pkt_alloc()
318 struct fc_lport *lport; in fc_fcp_ddp_setup() local
320 lport = fsp->lp; in fc_fcp_ddp_setup()
322 (lport->lro_enabled) && (lport->tt.ddp_setup)) { in fc_fcp_ddp_setup()
323 if (lport->tt.ddp_setup(lport, xid, scsi_sglist(fsp->cmd), in fc_fcp_ddp_setup()
336 struct fc_lport *lport; in fc_fcp_ddp_done() local
344 lport = fsp->lp; in fc_fcp_ddp_done()
345 if (lport->tt.ddp_done) { in fc_fcp_ddp_done()
346 fsp->xfer_len = lport->tt.ddp_done(lport, fsp->xfer_ddp); in fc_fcp_ddp_done()
355 static void fc_fcp_can_queue_ramp_up(struct fc_lport *lport) in fc_fcp_can_queue_ramp_up() argument
357 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_can_queue_ramp_up()
361 spin_lock_irqsave(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_up()
374 can_queue = lport->host->can_queue << 1; in fc_fcp_can_queue_ramp_up()
379 lport->host->can_queue = can_queue; in fc_fcp_can_queue_ramp_up()
380 shost_printk(KERN_ERR, lport->host, "libfc: increased " in fc_fcp_can_queue_ramp_up()
384 spin_unlock_irqrestore(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_up()
397 static bool fc_fcp_can_queue_ramp_down(struct fc_lport *lport) in fc_fcp_can_queue_ramp_down() argument
399 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_can_queue_ramp_down()
404 spin_lock_irqsave(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_down()
413 can_queue = lport->host->can_queue; in fc_fcp_can_queue_ramp_down()
417 lport->host->can_queue = can_queue; in fc_fcp_can_queue_ramp_down()
421 spin_unlock_irqrestore(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_down()
433 static inline struct fc_frame *fc_fcp_frame_alloc(struct fc_lport *lport, in fc_fcp_frame_alloc() argument
438 fp = fc_frame_alloc(lport, len); in fc_fcp_frame_alloc()
442 per_cpu_ptr(lport->stats, get_cpu())->FcpFrameAllocFails++; in fc_fcp_frame_alloc()
445 fc_fcp_can_queue_ramp_down(lport); in fc_fcp_frame_alloc()
446 shost_printk(KERN_ERR, lport->host, in fc_fcp_frame_alloc()
448 "reducing can_queue to %d.\n", lport->host->can_queue); in fc_fcp_frame_alloc()
476 struct fc_lport *lport = fsp->lp; in fc_fcp_recv_data() local
539 stats = per_cpu_ptr(lport->stats, get_cpu()); in fc_fcp_recv_data()
545 lport->port_id); in fc_fcp_recv_data()
600 struct fc_lport *lport = fsp->lp; in fc_fcp_send_data() local
611 int using_sg = lport->sg_supp; in fc_fcp_send_data()
633 if (lport->seq_offload) { in fc_fcp_send_data()
634 t_blen = min(seq_blen, (size_t)lport->lso_max); in fc_fcp_send_data()
636 fsp, seq_blen, lport->lso_max, t_blen); in fc_fcp_send_data()
668 fp = fc_frame_alloc(lport, using_sg ? 0 : tlen); in fc_fcp_send_data()
724 error = fc_seq_send(lport, seq, fp); in fc_fcp_send_data()
780 struct fc_lport *lport = fsp->lp; in fc_fcp_recv() local
794 if (lport->state != LPORT_ST_READY) { in fc_fcp_recv()
796 lport->state, r_ctl); in fc_fcp_recv()
984 struct fc_lport *lport = fsp->lp; in fc_fcp_complete_locked() local
1026 fc_seq_send(lport, csp, conf_frame); in fc_fcp_complete_locked()
1063 static void fc_fcp_cleanup_each_cmd(struct fc_lport *lport, unsigned int id, in fc_fcp_cleanup_each_cmd() argument
1066 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_cleanup_each_cmd()
1120 static void fc_fcp_abort_io(struct fc_lport *lport) in fc_fcp_abort_io() argument
1122 fc_fcp_cleanup_each_cmd(lport, -1, -1, FC_HRD_ERROR); in fc_fcp_abort_io()
1133 static int fc_fcp_pkt_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp) in fc_fcp_pkt_send() argument
1135 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_pkt_send()
1149 rc = lport->tt.fcp_cmd_send(lport, fsp, fc_fcp_recv); in fc_fcp_pkt_send()
1166 static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp, in fc_fcp_cmd_send() argument
1181 fp = fc_fcp_frame_alloc(lport, sizeof(fsp->cdb_cmd)); in fc_fcp_cmd_send()
1197 seq = fc_exch_seq_send(lport, fp, resp, fc_fcp_pkt_destroy, fsp, 0); in fc_fcp_cmd_send()
1291 struct fc_lport *lport = fsp->lp; in fc_lun_reset_send() local
1293 if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) { in fc_lun_reset_send()
1312 static int fc_lun_reset(struct fc_lport *lport, struct fc_fcp_pkt *fsp, in fc_lun_reset() argument
1347 FC_SCSI_DBG(lport, "lun reset failed\n"); in fc_lun_reset()
1355 FC_SCSI_DBG(lport, "lun reset to lun %u completed\n", lun); in fc_lun_reset()
1356 fc_fcp_cleanup_each_cmd(lport, id, lun, FC_CMD_ABORTED); in fc_lun_reset()
1405 static void fc_fcp_cleanup(struct fc_lport *lport) in fc_fcp_cleanup() argument
1407 fc_fcp_cleanup_each_cmd(lport, -1, -1, FC_ERROR); in fc_fcp_cleanup()
1461 struct fc_lport *lport; in fc_fcp_rec() local
1466 lport = fsp->lp; in fc_fcp_rec()
1476 fp = fc_fcp_frame_alloc(lport, sizeof(struct fc_els_rec)); in fc_fcp_rec()
1484 if (lport->tt.elsct_send(lport, rport->port_id, fp, ELS_REC, in fc_fcp_rec()
1486 2 * lport->r_a_tov)) { in fc_fcp_rec()
1717 struct fc_lport *lport = fsp->lp; in fc_fcp_srr() local
1731 fp = fc_fcp_frame_alloc(lport, sizeof(*srr)); in fc_fcp_srr()
1747 seq = fc_exch_seq_send(lport, fp, fc_fcp_srr_resp, in fc_fcp_srr()
1844 static inline int fc_fcp_lport_queue_ready(struct fc_lport *lport) in fc_fcp_lport_queue_ready() argument
1847 return (lport->state == LPORT_ST_READY) && in fc_fcp_lport_queue_ready()
1848 lport->link_up && !lport->qfull; in fc_fcp_lport_queue_ready()
1860 struct fc_lport *lport = shost_priv(shost); in fc_queuecommand() local
1884 if (!fc_fcp_lport_queue_ready(lport)) { in fc_queuecommand()
1885 if (lport->qfull) { in fc_queuecommand()
1886 if (fc_fcp_can_queue_ramp_down(lport)) in fc_queuecommand()
1887 shost_printk(KERN_ERR, lport->host, in fc_queuecommand()
1890 lport->host->can_queue); in fc_queuecommand()
1896 fsp = fc_fcp_pkt_alloc(lport, GFP_ATOMIC); in fc_queuecommand()
1917 stats = per_cpu_ptr(lport->stats, get_cpu()); in fc_queuecommand()
1937 rval = fc_fcp_pkt_send(lport, fsp); in fc_queuecommand()
1959 struct fc_lport *lport; in fc_io_compl() local
1972 lport = fsp->lp; in fc_io_compl()
1973 si = fc_get_scsi_internal(lport); in fc_io_compl()
1980 fc_fcp_can_queue_ramp_up(lport); in fc_io_compl()
2080 if (lport->state != LPORT_ST_READY && fsp->status_code != FC_COMPLETE) in fc_io_compl()
2103 struct fc_lport *lport; in fc_eh_abort() local
2113 lport = shost_priv(sc_cmd->device->host); in fc_eh_abort()
2114 if (lport->state != LPORT_ST_READY) in fc_eh_abort()
2116 else if (!lport->link_up) in fc_eh_abort()
2119 si = fc_get_scsi_internal(lport); in fc_eh_abort()
2155 struct fc_lport *lport; in fc_eh_device_reset() local
2165 lport = shost_priv(sc_cmd->device->host); in fc_eh_device_reset()
2167 if (lport->state != LPORT_ST_READY) in fc_eh_device_reset()
2170 FC_SCSI_DBG(lport, "Resetting rport (%6.6x)\n", rport->port_id); in fc_eh_device_reset()
2172 fsp = fc_fcp_pkt_alloc(lport, GFP_NOIO); in fc_eh_device_reset()
2188 rc = fc_lun_reset(lport, fsp, scmd_id(sc_cmd), sc_cmd->device->lun); in fc_eh_device_reset()
2204 struct fc_lport *lport = shost_priv(shost); in fc_eh_host_reset() local
2207 FC_SCSI_DBG(lport, "Resetting host\n"); in fc_eh_host_reset()
2209 fc_lport_reset(lport); in fc_eh_host_reset()
2211 while (!fc_fcp_lport_queue_ready(lport) && time_before(jiffies, in fc_eh_host_reset()
2215 if (fc_fcp_lport_queue_ready(lport)) { in fc_eh_host_reset()
2217 "on port (%6.6x)\n", lport->port_id); in fc_eh_host_reset()
2222 lport->port_id); in fc_eh_host_reset()
2251 void fc_fcp_destroy(struct fc_lport *lport) in fc_fcp_destroy() argument
2253 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_destroy()
2257 "port (%6.6x)\n", lport->port_id); in fc_fcp_destroy()
2261 lport->scsi_priv = NULL; in fc_fcp_destroy()
2290 int fc_fcp_init(struct fc_lport *lport) in fc_fcp_init() argument
2295 if (!lport->tt.fcp_cmd_send) in fc_fcp_init()
2296 lport->tt.fcp_cmd_send = fc_fcp_cmd_send; in fc_fcp_init()
2298 if (!lport->tt.fcp_cleanup) in fc_fcp_init()
2299 lport->tt.fcp_cleanup = fc_fcp_cleanup; in fc_fcp_init()
2301 if (!lport->tt.fcp_abort_io) in fc_fcp_init()
2302 lport->tt.fcp_abort_io = fc_fcp_abort_io; in fc_fcp_init()
2307 lport->scsi_priv = si; in fc_fcp_init()
2308 si->max_can_queue = lport->host->can_queue; in fc_fcp_init()