Lines Matching refs:lport

146 static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lport, gfp_t gfp)  in fc_fcp_pkt_alloc()  argument
148 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_pkt_alloc()
154 fsp->lp = lport; in fc_fcp_pkt_alloc()
162 per_cpu_ptr(lport->stats, get_cpu())->FcpPktAllocFails++; in fc_fcp_pkt_alloc()
306 struct fc_lport *lport; in fc_fcp_ddp_setup() local
308 lport = fsp->lp; in fc_fcp_ddp_setup()
310 (lport->lro_enabled) && (lport->tt.ddp_setup)) { in fc_fcp_ddp_setup()
311 if (lport->tt.ddp_setup(lport, xid, scsi_sglist(fsp->cmd), in fc_fcp_ddp_setup()
324 struct fc_lport *lport; in fc_fcp_ddp_done() local
332 lport = fsp->lp; in fc_fcp_ddp_done()
333 if (lport->tt.ddp_done) { in fc_fcp_ddp_done()
334 fsp->xfer_len = lport->tt.ddp_done(lport, fsp->xfer_ddp); in fc_fcp_ddp_done()
343 static void fc_fcp_can_queue_ramp_up(struct fc_lport *lport) in fc_fcp_can_queue_ramp_up() argument
345 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_can_queue_ramp_up()
349 spin_lock_irqsave(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_up()
362 can_queue = lport->host->can_queue << 1; in fc_fcp_can_queue_ramp_up()
367 lport->host->can_queue = can_queue; in fc_fcp_can_queue_ramp_up()
368 shost_printk(KERN_ERR, lport->host, "libfc: increased " in fc_fcp_can_queue_ramp_up()
372 spin_unlock_irqrestore(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_up()
385 static void fc_fcp_can_queue_ramp_down(struct fc_lport *lport) in fc_fcp_can_queue_ramp_down() argument
387 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_can_queue_ramp_down()
391 spin_lock_irqsave(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_down()
400 can_queue = lport->host->can_queue; in fc_fcp_can_queue_ramp_down()
404 lport->host->can_queue = can_queue; in fc_fcp_can_queue_ramp_down()
405 shost_printk(KERN_ERR, lport->host, "libfc: Could not allocate frame.\n" in fc_fcp_can_queue_ramp_down()
409 spin_unlock_irqrestore(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_down()
420 static inline struct fc_frame *fc_fcp_frame_alloc(struct fc_lport *lport, in fc_fcp_frame_alloc() argument
425 fp = fc_frame_alloc(lport, len); in fc_fcp_frame_alloc()
429 per_cpu_ptr(lport->stats, get_cpu())->FcpFrameAllocFails++; in fc_fcp_frame_alloc()
432 fc_fcp_can_queue_ramp_down(lport); in fc_fcp_frame_alloc()
444 struct fc_lport *lport = fsp->lp; in fc_fcp_recv_data() local
507 stats = per_cpu_ptr(lport->stats, get_cpu()); in fc_fcp_recv_data()
513 lport->port_id); in fc_fcp_recv_data()
566 struct fc_lport *lport = fsp->lp; in fc_fcp_send_data() local
577 int using_sg = lport->sg_supp; in fc_fcp_send_data()
599 if (lport->seq_offload) { in fc_fcp_send_data()
600 t_blen = min(seq_blen, (size_t)lport->lso_max); in fc_fcp_send_data()
602 fsp, seq_blen, lport->lso_max, t_blen); in fc_fcp_send_data()
612 seq = lport->tt.seq_start_next(seq); in fc_fcp_send_data()
634 fp = fc_frame_alloc(lport, using_sg ? 0 : tlen); in fc_fcp_send_data()
690 error = lport->tt.seq_send(lport, seq, fp); in fc_fcp_send_data()
753 struct fc_lport *lport = fsp->lp; in fc_fcp_recv() local
767 if (lport->state != LPORT_ST_READY) in fc_fcp_recv()
943 struct fc_lport *lport = fsp->lp; in fc_fcp_complete_locked() local
973 csp = lport->tt.seq_start_next(seq); in fc_fcp_complete_locked()
982 lport->tt.seq_send(lport, csp, conf_frame); in fc_fcp_complete_locked()
985 lport->tt.exch_done(seq); in fc_fcp_complete_locked()
1003 struct fc_lport *lport = fsp->lp; in fc_fcp_cleanup_cmd() local
1006 lport->tt.exch_done(fsp->seq_ptr); in fc_fcp_cleanup_cmd()
1021 static void fc_fcp_cleanup_each_cmd(struct fc_lport *lport, unsigned int id, in fc_fcp_cleanup_each_cmd() argument
1024 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_cleanup_each_cmd()
1078 static void fc_fcp_abort_io(struct fc_lport *lport) in fc_fcp_abort_io() argument
1080 fc_fcp_cleanup_each_cmd(lport, -1, -1, FC_HRD_ERROR); in fc_fcp_abort_io()
1091 static int fc_fcp_pkt_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp) in fc_fcp_pkt_send() argument
1093 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_pkt_send()
1107 rc = lport->tt.fcp_cmd_send(lport, fsp, fc_fcp_recv); in fc_fcp_pkt_send()
1137 static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp, in fc_fcp_cmd_send() argument
1152 fp = fc_fcp_frame_alloc(lport, sizeof(fsp->cdb_cmd)); in fc_fcp_cmd_send()
1168 seq = lport->tt.exch_seq_send(lport, fp, resp, fc_fcp_pkt_destroy, in fc_fcp_cmd_send()
1255 struct fc_lport *lport = fsp->lp; in fc_lun_reset_send() local
1257 if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) { in fc_lun_reset_send()
1276 static int fc_lun_reset(struct fc_lport *lport, struct fc_fcp_pkt *fsp, in fc_lun_reset() argument
1304 lport->tt.exch_done(fsp->seq_ptr); in fc_lun_reset()
1311 FC_SCSI_DBG(lport, "lun reset failed\n"); in fc_lun_reset()
1319 FC_SCSI_DBG(lport, "lun reset to lun %u completed\n", lun); in fc_lun_reset()
1320 fc_fcp_cleanup_each_cmd(lport, id, lun, FC_CMD_ABORTED); in fc_lun_reset()
1369 static void fc_fcp_cleanup(struct fc_lport *lport) in fc_fcp_cleanup() argument
1371 fc_fcp_cleanup_each_cmd(lport, -1, -1, FC_ERROR); in fc_fcp_cleanup()
1416 struct fc_lport *lport; in fc_fcp_rec() local
1421 lport = fsp->lp; in fc_fcp_rec()
1431 fp = fc_fcp_frame_alloc(lport, sizeof(struct fc_els_rec)); in fc_fcp_rec()
1439 if (lport->tt.elsct_send(lport, rport->port_id, fp, ELS_REC, in fc_fcp_rec()
1441 2 * lport->r_a_tov)) { in fc_fcp_rec()
1664 struct fc_lport *lport = fsp->lp; in fc_fcp_srr() local
1679 fp = fc_fcp_frame_alloc(lport, sizeof(*srr)); in fc_fcp_srr()
1696 seq = lport->tt.exch_seq_send(lport, fp, fc_fcp_srr_resp, in fc_fcp_srr()
1791 static inline int fc_fcp_lport_queue_ready(struct fc_lport *lport) in fc_fcp_lport_queue_ready() argument
1794 return (lport->state == LPORT_ST_READY) && in fc_fcp_lport_queue_ready()
1795 lport->link_up && !lport->qfull; in fc_fcp_lport_queue_ready()
1807 struct fc_lport *lport = shost_priv(shost); in fc_queuecommand() local
1834 if (!fc_fcp_lport_queue_ready(lport)) { in fc_queuecommand()
1835 if (lport->qfull) in fc_queuecommand()
1836 fc_fcp_can_queue_ramp_down(lport); in fc_queuecommand()
1841 fsp = fc_fcp_pkt_alloc(lport, GFP_ATOMIC); in fc_queuecommand()
1862 stats = per_cpu_ptr(lport->stats, get_cpu()); in fc_queuecommand()
1882 rval = fc_fcp_pkt_send(lport, fsp); in fc_queuecommand()
1904 struct fc_lport *lport; in fc_io_compl() local
1917 lport = fsp->lp; in fc_io_compl()
1918 si = fc_get_scsi_internal(lport); in fc_io_compl()
1925 fc_fcp_can_queue_ramp_up(lport); in fc_io_compl()
2014 if (lport->state != LPORT_ST_READY && fsp->status_code != FC_COMPLETE) in fc_io_compl()
2037 struct fc_lport *lport; in fc_eh_abort() local
2047 lport = shost_priv(sc_cmd->device->host); in fc_eh_abort()
2048 if (lport->state != LPORT_ST_READY) in fc_eh_abort()
2050 else if (!lport->link_up) in fc_eh_abort()
2053 si = fc_get_scsi_internal(lport); in fc_eh_abort()
2089 struct fc_lport *lport; in fc_eh_device_reset() local
2099 lport = shost_priv(sc_cmd->device->host); in fc_eh_device_reset()
2101 if (lport->state != LPORT_ST_READY) in fc_eh_device_reset()
2104 FC_SCSI_DBG(lport, "Resetting rport (%6.6x)\n", rport->port_id); in fc_eh_device_reset()
2106 fsp = fc_fcp_pkt_alloc(lport, GFP_NOIO); in fc_eh_device_reset()
2122 rc = fc_lun_reset(lport, fsp, scmd_id(sc_cmd), sc_cmd->device->lun); in fc_eh_device_reset()
2138 struct fc_lport *lport = shost_priv(shost); in fc_eh_host_reset() local
2141 FC_SCSI_DBG(lport, "Resetting host\n"); in fc_eh_host_reset()
2145 lport->tt.lport_reset(lport); in fc_eh_host_reset()
2147 while (!fc_fcp_lport_queue_ready(lport) && time_before(jiffies, in fc_eh_host_reset()
2151 if (fc_fcp_lport_queue_ready(lport)) { in fc_eh_host_reset()
2153 "on port (%6.6x)\n", lport->port_id); in fc_eh_host_reset()
2158 lport->port_id); in fc_eh_host_reset()
2187 void fc_fcp_destroy(struct fc_lport *lport) in fc_fcp_destroy() argument
2189 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_destroy()
2193 "port (%6.6x)\n", lport->port_id); in fc_fcp_destroy()
2197 lport->scsi_priv = NULL; in fc_fcp_destroy()
2227 int fc_fcp_init(struct fc_lport *lport) in fc_fcp_init() argument
2232 if (!lport->tt.fcp_cmd_send) in fc_fcp_init()
2233 lport->tt.fcp_cmd_send = fc_fcp_cmd_send; in fc_fcp_init()
2235 if (!lport->tt.fcp_cleanup) in fc_fcp_init()
2236 lport->tt.fcp_cleanup = fc_fcp_cleanup; in fc_fcp_init()
2238 if (!lport->tt.fcp_abort_io) in fc_fcp_init()
2239 lport->tt.fcp_abort_io = fc_fcp_abort_io; in fc_fcp_init()
2244 lport->scsi_priv = si; in fc_fcp_init()
2245 si->max_can_queue = lport->host->can_queue; in fc_fcp_init()