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()
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 this_cpu_inc(lport->stats->FcpFrameAllocFails); in fc_fcp_frame_alloc()
444 fc_fcp_can_queue_ramp_down(lport); in fc_fcp_frame_alloc()
445 shost_printk(KERN_ERR, lport->host, in fc_fcp_frame_alloc()
447 "reducing can_queue to %d.\n", lport->host->can_queue); in fc_fcp_frame_alloc()
475 struct fc_lport *lport = fsp->lp; in fc_fcp_recv_data() local
537 this_cpu_inc(lport->stats->ErrorFrames); in fc_fcp_recv_data()
539 if (this_cpu_inc_return(lport->stats->InvalidCRCCount) < FC_MAX_ERROR_CNT) in fc_fcp_recv_data()
542 lport->port_id); in fc_fcp_recv_data()
596 struct fc_lport *lport = fsp->lp; in fc_fcp_send_data() local
607 int using_sg = lport->sg_supp; in fc_fcp_send_data()
629 if (lport->seq_offload) { in fc_fcp_send_data()
630 t_blen = min(seq_blen, (size_t)lport->lso_max); in fc_fcp_send_data()
632 fsp, seq_blen, lport->lso_max, t_blen); in fc_fcp_send_data()
664 fp = fc_frame_alloc(lport, using_sg ? 0 : tlen); in fc_fcp_send_data()
720 error = fc_seq_send(lport, seq, fp); in fc_fcp_send_data()
776 struct fc_lport *lport = fsp->lp; in fc_fcp_recv() local
790 if (lport->state != LPORT_ST_READY) { in fc_fcp_recv()
792 lport->state, r_ctl); in fc_fcp_recv()
980 struct fc_lport *lport = fsp->lp; in fc_fcp_complete_locked() local
1022 fc_seq_send(lport, csp, conf_frame); in fc_fcp_complete_locked()
1059 static void fc_fcp_cleanup_each_cmd(struct fc_lport *lport, unsigned int id, in fc_fcp_cleanup_each_cmd() argument
1062 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_cleanup_each_cmd()
1116 static void fc_fcp_abort_io(struct fc_lport *lport) in fc_fcp_abort_io() argument
1118 fc_fcp_cleanup_each_cmd(lport, -1, -1, FC_HRD_ERROR); in fc_fcp_abort_io()
1129 static int fc_fcp_pkt_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp) in fc_fcp_pkt_send() argument
1131 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_pkt_send()
1145 rc = lport->tt.fcp_cmd_send(lport, fsp, fc_fcp_recv); in fc_fcp_pkt_send()
1162 static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp, in fc_fcp_cmd_send() argument
1177 fp = fc_fcp_frame_alloc(lport, sizeof(fsp->cdb_cmd)); in fc_fcp_cmd_send()
1193 seq = fc_exch_seq_send(lport, fp, resp, fc_fcp_pkt_destroy, fsp, 0); in fc_fcp_cmd_send()
1287 struct fc_lport *lport = fsp->lp; in fc_lun_reset_send() local
1289 if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) { in fc_lun_reset_send()
1308 static int fc_lun_reset(struct fc_lport *lport, struct fc_fcp_pkt *fsp, in fc_lun_reset() argument
1343 FC_SCSI_DBG(lport, "lun reset failed\n"); in fc_lun_reset()
1351 FC_SCSI_DBG(lport, "lun reset to lun %u completed\n", lun); in fc_lun_reset()
1352 fc_fcp_cleanup_each_cmd(lport, id, lun, FC_CMD_ABORTED); in fc_lun_reset()
1401 static void fc_fcp_cleanup(struct fc_lport *lport) in fc_fcp_cleanup() argument
1403 fc_fcp_cleanup_each_cmd(lport, -1, -1, FC_ERROR); in fc_fcp_cleanup()
1457 struct fc_lport *lport; in fc_fcp_rec() local
1462 lport = fsp->lp; in fc_fcp_rec()
1472 fp = fc_fcp_frame_alloc(lport, sizeof(struct fc_els_rec)); in fc_fcp_rec()
1480 if (lport->tt.elsct_send(lport, rport->port_id, fp, ELS_REC, in fc_fcp_rec()
1482 2 * lport->r_a_tov)) { in fc_fcp_rec()
1716 struct fc_lport *lport = fsp->lp; in fc_fcp_srr() local
1730 fp = fc_fcp_frame_alloc(lport, sizeof(*srr)); in fc_fcp_srr()
1746 seq = fc_exch_seq_send(lport, fp, fc_fcp_srr_resp, in fc_fcp_srr()
1843 static inline int fc_fcp_lport_queue_ready(struct fc_lport *lport) in fc_fcp_lport_queue_ready() argument
1846 return (lport->state == LPORT_ST_READY) && in fc_fcp_lport_queue_ready()
1847 lport->link_up && !lport->qfull; in fc_fcp_lport_queue_ready()
1859 struct fc_lport *lport = shost_priv(shost); in fc_queuecommand() local
1882 if (!fc_fcp_lport_queue_ready(lport)) { in fc_queuecommand()
1883 if (lport->qfull) { in fc_queuecommand()
1884 if (fc_fcp_can_queue_ramp_down(lport)) in fc_queuecommand()
1885 shost_printk(KERN_ERR, lport->host, in fc_queuecommand()
1888 lport->host->can_queue); in fc_queuecommand()
1894 fsp = fc_fcp_pkt_alloc(lport, GFP_ATOMIC); in fc_queuecommand()
1917 this_cpu_inc(lport->stats->InputRequests); in fc_queuecommand()
1918 this_cpu_add(lport->stats->InputBytes, fsp->data_len); in fc_queuecommand()
1921 this_cpu_inc(lport->stats->OutputRequests); in fc_queuecommand()
1922 this_cpu_add(lport->stats->OutputBytes, fsp->data_len); in fc_queuecommand()
1925 this_cpu_inc(lport->stats->ControlRequests); in fc_queuecommand()
1933 rval = fc_fcp_pkt_send(lport, fsp); in fc_queuecommand()
1955 struct fc_lport *lport; in fc_io_compl() local
1968 lport = fsp->lp; in fc_io_compl()
1969 si = fc_get_scsi_internal(lport); in fc_io_compl()
1976 fc_fcp_can_queue_ramp_up(lport); in fc_io_compl()
2076 if (lport->state != LPORT_ST_READY && fsp->status_code != FC_COMPLETE) in fc_io_compl()
2099 struct fc_lport *lport; in fc_eh_abort() local
2109 lport = shost_priv(sc_cmd->device->host); in fc_eh_abort()
2110 if (lport->state != LPORT_ST_READY) in fc_eh_abort()
2112 else if (!lport->link_up) in fc_eh_abort()
2115 si = fc_get_scsi_internal(lport); in fc_eh_abort()
2151 struct fc_lport *lport; in fc_eh_device_reset() local
2161 lport = shost_priv(sc_cmd->device->host); in fc_eh_device_reset()
2163 if (lport->state != LPORT_ST_READY) in fc_eh_device_reset()
2166 FC_SCSI_DBG(lport, "Resetting rport (%6.6x)\n", rport->port_id); in fc_eh_device_reset()
2168 fsp = fc_fcp_pkt_alloc(lport, GFP_NOIO); in fc_eh_device_reset()
2184 rc = fc_lun_reset(lport, fsp, scmd_id(sc_cmd), sc_cmd->device->lun); in fc_eh_device_reset()
2200 struct fc_lport *lport = shost_priv(shost); in fc_eh_host_reset() local
2203 FC_SCSI_DBG(lport, "Resetting host\n"); in fc_eh_host_reset()
2205 fc_lport_reset(lport); in fc_eh_host_reset()
2207 while (!fc_fcp_lport_queue_ready(lport) && time_before(jiffies, in fc_eh_host_reset()
2211 if (fc_fcp_lport_queue_ready(lport)) { in fc_eh_host_reset()
2213 "on port (%6.6x)\n", lport->port_id); in fc_eh_host_reset()
2218 lport->port_id); in fc_eh_host_reset()
2247 void fc_fcp_destroy(struct fc_lport *lport) in fc_fcp_destroy() argument
2249 struct fc_fcp_internal *si = fc_get_scsi_internal(lport); in fc_fcp_destroy()
2253 "port (%6.6x)\n", lport->port_id); in fc_fcp_destroy()
2257 lport->scsi_priv = NULL; in fc_fcp_destroy()
2286 int fc_fcp_init(struct fc_lport *lport) in fc_fcp_init() argument
2291 if (!lport->tt.fcp_cmd_send) in fc_fcp_init()
2292 lport->tt.fcp_cmd_send = fc_fcp_cmd_send; in fc_fcp_init()
2294 if (!lport->tt.fcp_cleanup) in fc_fcp_init()
2295 lport->tt.fcp_cleanup = fc_fcp_cleanup; in fc_fcp_init()
2297 if (!lport->tt.fcp_abort_io) in fc_fcp_init()
2298 lport->tt.fcp_abort_io = fc_fcp_abort_io; in fc_fcp_init()
2303 lport->scsi_priv = si; in fc_fcp_init()
2304 si->max_can_queue = lport->host->can_queue; in fc_fcp_init()