Lines Matching refs:lport
131 static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lport, gfp_t gfp) in fc_fcp_pkt_alloc() argument
133 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_pkt_alloc()
139 fsp->lp = lport; in fc_fcp_pkt_alloc()
146 this_cpu_inc(lport->stats->FcpPktAllocFails); in fc_fcp_pkt_alloc()
313 struct fc_lport *lport; in fc_fcp_ddp_setup() local
315 lport = fsp->lp; in fc_fcp_ddp_setup()
317 (lport->lro_enabled) && (lport->tt.ddp_setup)) { in fc_fcp_ddp_setup()
318 if (lport->tt.ddp_setup(lport, xid, scsi_sglist(fsp->cmd), in fc_fcp_ddp_setup()
331 struct fc_lport *lport; in fc_fcp_ddp_done() local
339 lport = fsp->lp; in fc_fcp_ddp_done()
340 if (lport->tt.ddp_done) { in fc_fcp_ddp_done()
341 fsp->xfer_len = lport->tt.ddp_done(lport, fsp->xfer_ddp); in fc_fcp_ddp_done()
350 static void fc_fcp_can_queue_ramp_up(struct fc_lport *lport) in fc_fcp_can_queue_ramp_up() argument
352 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_can_queue_ramp_up()
356 spin_lock_irqsave(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_up()
369 can_queue = lport->host->can_queue << 1; in fc_fcp_can_queue_ramp_up()
374 lport->host->can_queue = can_queue; in fc_fcp_can_queue_ramp_up()
375 shost_printk(KERN_ERR, lport->host, "libfc: increased " in fc_fcp_can_queue_ramp_up()
379 spin_unlock_irqrestore(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_up()
392 static bool fc_fcp_can_queue_ramp_down(struct fc_lport *lport) in fc_fcp_can_queue_ramp_down() argument
394 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_can_queue_ramp_down()
399 spin_lock_irqsave(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_down()
408 can_queue = lport->host->can_queue; in fc_fcp_can_queue_ramp_down()
412 lport->host->can_queue = can_queue; in fc_fcp_can_queue_ramp_down()
416 spin_unlock_irqrestore(lport->host->host_lock, flags); in fc_fcp_can_queue_ramp_down()
428 static inline struct fc_frame *fc_fcp_frame_alloc(struct fc_lport *lport, in fc_fcp_frame_alloc() argument
433 fp = fc_frame_alloc(lport, len); in fc_fcp_frame_alloc()
437 this_cpu_inc(lport->stats->FcpFrameAllocFails); in fc_fcp_frame_alloc()
439 fc_fcp_can_queue_ramp_down(lport); in fc_fcp_frame_alloc()
440 shost_printk(KERN_ERR, lport->host, in fc_fcp_frame_alloc()
442 "reducing can_queue to %d.\n", lport->host->can_queue); in fc_fcp_frame_alloc()
470 struct fc_lport *lport = fsp->lp; in fc_fcp_recv_data() local
532 this_cpu_inc(lport->stats->ErrorFrames); in fc_fcp_recv_data()
534 if (this_cpu_inc_return(lport->stats->InvalidCRCCount) < FC_MAX_ERROR_CNT) in fc_fcp_recv_data()
537 lport->port_id); in fc_fcp_recv_data()
591 struct fc_lport *lport = fsp->lp; in fc_fcp_send_data() local
602 int using_sg = lport->sg_supp; in fc_fcp_send_data()
624 if (lport->seq_offload) { in fc_fcp_send_data()
625 t_blen = min(seq_blen, (size_t)lport->lso_max); in fc_fcp_send_data()
627 fsp, seq_blen, lport->lso_max, t_blen); in fc_fcp_send_data()
659 fp = fc_frame_alloc(lport, using_sg ? 0 : tlen); in fc_fcp_send_data()
715 error = fc_seq_send(lport, seq, fp); in fc_fcp_send_data()
771 struct fc_lport *lport = fsp->lp; in fc_fcp_recv() local
785 if (lport->state != LPORT_ST_READY) { in fc_fcp_recv()
787 lport->state, r_ctl); in fc_fcp_recv()
975 struct fc_lport *lport = fsp->lp; in fc_fcp_complete_locked() local
1017 fc_seq_send(lport, csp, conf_frame); in fc_fcp_complete_locked()
1054 static void fc_fcp_cleanup_each_cmd(struct fc_lport *lport, unsigned int id, in fc_fcp_cleanup_each_cmd() argument
1057 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_cleanup_each_cmd()
1111 static void fc_fcp_abort_io(struct fc_lport *lport) in fc_fcp_abort_io() argument
1113 fc_fcp_cleanup_each_cmd(lport, -1, -1, FC_HRD_ERROR); in fc_fcp_abort_io()
1124 static int fc_fcp_pkt_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp) in fc_fcp_pkt_send() argument
1126 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_pkt_send()
1140 rc = lport->tt.fcp_cmd_send(lport, fsp, fc_fcp_recv); in fc_fcp_pkt_send()
1157 static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp, in fc_fcp_cmd_send() argument
1172 fp = fc_fcp_frame_alloc(lport, sizeof(fsp->cdb_cmd)); in fc_fcp_cmd_send()
1188 seq = fc_exch_seq_send(lport, fp, resp, fc_fcp_pkt_destroy, fsp, 0); in fc_fcp_cmd_send()
1282 struct fc_lport *lport = fsp->lp; in fc_lun_reset_send() local
1284 if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) { in fc_lun_reset_send()
1303 static int fc_lun_reset(struct fc_lport *lport, struct fc_fcp_pkt *fsp, in fc_lun_reset() argument
1338 FC_SCSI_DBG(lport, "lun reset failed\n"); in fc_lun_reset()
1346 FC_SCSI_DBG(lport, "lun reset to lun %u completed\n", lun); in fc_lun_reset()
1347 fc_fcp_cleanup_each_cmd(lport, id, lun, FC_CMD_ABORTED); in fc_lun_reset()
1396 static void fc_fcp_cleanup(struct fc_lport *lport) in fc_fcp_cleanup() argument
1398 fc_fcp_cleanup_each_cmd(lport, -1, -1, FC_ERROR); in fc_fcp_cleanup()
1452 struct fc_lport *lport; in fc_fcp_rec() local
1457 lport = fsp->lp; in fc_fcp_rec()
1467 fp = fc_fcp_frame_alloc(lport, sizeof(struct fc_els_rec)); in fc_fcp_rec()
1475 if (lport->tt.elsct_send(lport, rport->port_id, fp, ELS_REC, in fc_fcp_rec()
1477 2 * lport->r_a_tov)) { in fc_fcp_rec()
1710 struct fc_lport *lport = fsp->lp; in fc_fcp_srr() local
1724 fp = fc_fcp_frame_alloc(lport, sizeof(*srr)); in fc_fcp_srr()
1740 seq = fc_exch_seq_send(lport, fp, fc_fcp_srr_resp, in fc_fcp_srr()
1837 static inline int fc_fcp_lport_queue_ready(struct fc_lport *lport) in fc_fcp_lport_queue_ready() argument
1840 return (lport->state == LPORT_ST_READY) && in fc_fcp_lport_queue_ready()
1841 lport->link_up && !lport->qfull; in fc_fcp_lport_queue_ready()
1853 struct fc_lport *lport = shost_priv(shost); in fc_queuecommand() local
1876 if (!fc_fcp_lport_queue_ready(lport)) { in fc_queuecommand()
1877 if (lport->qfull) { in fc_queuecommand()
1878 if (fc_fcp_can_queue_ramp_down(lport)) in fc_queuecommand()
1879 shost_printk(KERN_ERR, lport->host, in fc_queuecommand()
1882 lport->host->can_queue); in fc_queuecommand()
1888 fsp = fc_fcp_pkt_alloc(lport, GFP_ATOMIC); in fc_queuecommand()
1911 this_cpu_inc(lport->stats->InputRequests); in fc_queuecommand()
1912 this_cpu_add(lport->stats->InputBytes, fsp->data_len); in fc_queuecommand()
1915 this_cpu_inc(lport->stats->OutputRequests); in fc_queuecommand()
1916 this_cpu_add(lport->stats->OutputBytes, fsp->data_len); in fc_queuecommand()
1919 this_cpu_inc(lport->stats->ControlRequests); in fc_queuecommand()
1927 rval = fc_fcp_pkt_send(lport, fsp); in fc_queuecommand()
1949 struct fc_lport *lport; in fc_io_compl() local
1962 lport = fsp->lp; in fc_io_compl()
1963 si = fc_get_scsi_internal(lport); in fc_io_compl()
1970 fc_fcp_can_queue_ramp_up(lport); in fc_io_compl()
2070 if (lport->state != LPORT_ST_READY && fsp->status_code != FC_COMPLETE) in fc_io_compl()
2093 struct fc_lport *lport; in fc_eh_abort() local
2103 lport = shost_priv(sc_cmd->device->host); in fc_eh_abort()
2104 if (lport->state != LPORT_ST_READY) in fc_eh_abort()
2106 else if (!lport->link_up) in fc_eh_abort()
2109 si = fc_get_scsi_internal(lport); in fc_eh_abort()
2145 struct fc_lport *lport; in fc_eh_device_reset() local
2155 lport = shost_priv(sc_cmd->device->host); in fc_eh_device_reset()
2157 if (lport->state != LPORT_ST_READY) in fc_eh_device_reset()
2160 FC_SCSI_DBG(lport, "Resetting rport (%6.6x)\n", rport->port_id); in fc_eh_device_reset()
2162 fsp = fc_fcp_pkt_alloc(lport, GFP_NOIO); in fc_eh_device_reset()
2178 rc = fc_lun_reset(lport, fsp, scmd_id(sc_cmd), sc_cmd->device->lun); in fc_eh_device_reset()
2194 struct fc_lport *lport = shost_priv(shost); in fc_eh_host_reset() local
2197 FC_SCSI_DBG(lport, "Resetting host\n"); in fc_eh_host_reset()
2199 fc_lport_reset(lport); in fc_eh_host_reset()
2201 while (!fc_fcp_lport_queue_ready(lport) && time_before(jiffies, in fc_eh_host_reset()
2205 if (fc_fcp_lport_queue_ready(lport)) { in fc_eh_host_reset()
2207 "on port (%6.6x)\n", lport->port_id); in fc_eh_host_reset()
2212 lport->port_id); in fc_eh_host_reset()
2241 void fc_fcp_destroy(struct fc_lport *lport) in fc_fcp_destroy() argument
2243 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_destroy()
2247 "port (%6.6x)\n", lport->port_id); in fc_fcp_destroy()
2251 lport->scsi_priv = NULL; in fc_fcp_destroy()
2280 int fc_fcp_init(struct fc_lport *lport) in fc_fcp_init() argument
2285 if (!lport->tt.fcp_cmd_send) in fc_fcp_init()
2286 lport->tt.fcp_cmd_send = fc_fcp_cmd_send; in fc_fcp_init()
2288 if (!lport->tt.fcp_cleanup) in fc_fcp_init()
2289 lport->tt.fcp_cleanup = fc_fcp_cleanup; in fc_fcp_init()
2291 if (!lport->tt.fcp_abort_io) in fc_fcp_init()
2292 lport->tt.fcp_abort_io = fc_fcp_abort_io; in fc_fcp_init()
2297 lport->scsi_priv = si; in fc_fcp_init()
2298 si->max_can_queue = lport->host->can_queue; in fc_fcp_init()