Lines Matching refs:snic
80 struct snic *snic = shost_priv(sdev->host); in snic_slave_configure() local
89 if (snic->fwinfo.io_tmo > 1) in snic_slave_configure()
90 tmo = snic->fwinfo.io_tmo * HZ; in snic_slave_configure()
101 struct snic *snic = shost_priv(sdev->host); in snic_change_queue_depth() local
106 atomic64_inc(&snic->s_stats.misc.qsz_rampdown); in snic_change_queue_depth()
108 atomic64_inc(&snic->s_stats.misc.qsz_rampup); in snic_change_queue_depth()
110 atomic64_set(&snic->s_stats.misc.last_qsz, sdev->queue_depth); in snic_change_queue_depth()
143 snic_handle_link_event(struct snic *snic) in snic_handle_link_event() argument
147 spin_lock_irqsave(&snic->snic_lock, flags); in snic_handle_link_event()
148 if (snic->stop_link_events) { in snic_handle_link_event()
149 spin_unlock_irqrestore(&snic->snic_lock, flags); in snic_handle_link_event()
153 spin_unlock_irqrestore(&snic->snic_lock, flags); in snic_handle_link_event()
155 queue_work(snic_glob->event_q, &snic->link_work); in snic_handle_link_event()
165 snic_notify_set(struct snic *snic) in snic_notify_set() argument
170 intr_mode = svnic_dev_get_intr_mode(snic->vdev); in snic_notify_set()
173 ret = svnic_dev_notify_set(snic->vdev, SNIC_MSIX_ERR_NOTIFY); in snic_notify_set()
175 SNIC_HOST_ERR(snic->shost, in snic_notify_set()
229 snic_cleanup(struct snic *snic) in snic_cleanup() argument
234 svnic_dev_disable(snic->vdev); in snic_cleanup()
235 for (i = 0; i < snic->intr_count; i++) in snic_cleanup()
236 svnic_intr_mask(&snic->intr[i]); in snic_cleanup()
238 for (i = 0; i < snic->wq_count; i++) { in snic_cleanup()
239 ret = svnic_wq_disable(&snic->wq[i]); in snic_cleanup()
245 snic_fwcq_cmpl_handler(snic, -1); in snic_cleanup()
247 snic_wq_cmpl_handler(snic, -1); in snic_cleanup()
250 for (i = 0; i < snic->wq_count; i++) in snic_cleanup()
251 svnic_wq_clean(&snic->wq[i], snic_free_wq_buf); in snic_cleanup()
253 for (i = 0; i < snic->cq_count; i++) in snic_cleanup()
254 svnic_cq_clean(&snic->cq[i]); in snic_cleanup()
256 for (i = 0; i < snic->intr_count; i++) in snic_cleanup()
257 svnic_intr_clean(&snic->intr[i]); in snic_cleanup()
260 snic_free_all_untagged_reqs(snic); in snic_cleanup()
263 snic_shutdown_scsi_cleanup(snic); in snic_cleanup()
266 mempool_destroy(snic->req_pool[i]); in snic_cleanup()
273 snic_iounmap(struct snic *snic) in snic_iounmap() argument
275 if (snic->bar0.vaddr) in snic_iounmap()
276 iounmap(snic->bar0.vaddr); in snic_iounmap()
285 struct snic *snic = svnic_dev_priv(vdev); in snic_vdev_open_done() local
294 SNIC_HOST_INFO(snic->shost, "VNIC_DEV_OPEN Timedout.\n"); in snic_vdev_open_done()
342 snic_get_state(struct snic *snic) in snic_get_state() argument
344 return atomic_read(&snic->state); in snic_get_state()
348 snic_set_state(struct snic *snic, enum snic_state state) in snic_set_state() argument
350 SNIC_HOST_INFO(snic->shost, "snic state change from %s to %s\n", in snic_set_state()
351 snic_state_to_str(snic_get_state(snic)), in snic_set_state()
354 atomic_set(&snic->state, state); in snic_set_state()
364 struct snic *snic; in snic_probe() local
382 shost = scsi_host_alloc(&snic_host_template, sizeof(struct snic)); in snic_probe()
389 snic = shost_priv(shost); in snic_probe()
390 snic->shost = shost; in snic_probe()
392 snprintf(snic->name, sizeof(snic->name) - 1, "%s%d", SNIC_DRV_NAME, in snic_probe()
397 shost->host_no, snic, shost, pdev->bus->number, in snic_probe()
401 ret = snic_stats_debugfs_init(snic); in snic_probe()
403 SNIC_HOST_ERR(snic->shost, in snic_probe()
405 snic_stats_debugfs_remove(snic); in snic_probe()
410 pci_set_drvdata(pdev, snic); in snic_probe()
411 snic->pdev = pdev; in snic_probe()
477 snic->bar0.vaddr = pci_iomap(pdev, 0, 0); in snic_probe()
478 if (!snic->bar0.vaddr) { in snic_probe()
486 snic->bar0.bus_addr = pci_resource_start(pdev, 0); in snic_probe()
487 snic->bar0.len = pci_resource_len(pdev, 0); in snic_probe()
488 SNIC_BUG_ON(snic->bar0.bus_addr == 0); in snic_probe()
491 snic->vdev = svnic_dev_alloc_discover(NULL, snic, pdev, &snic->bar0, 1); in snic_probe()
492 if (!snic->vdev) { in snic_probe()
499 ret = svnic_dev_cmd_init(snic->vdev, 0); in snic_probe()
506 ret = snic_dev_wait(snic->vdev, svnic_dev_open, snic_vdev_open_done, 0); in snic_probe()
515 ret = svnic_dev_init(snic->vdev, 0); in snic_probe()
525 ret = snic_get_vnic_config(snic); in snic_probe()
535 max_ios = snic->config.io_throttle_count; in snic_probe()
540 snic->max_tag_id = shost->can_queue; in snic_probe()
542 shost->max_lun = snic->config.luns_per_tgt; in snic_probe()
547 snic_get_res_counts(snic); in snic_probe()
552 ret = snic_set_intr_mode(snic); in snic_probe()
561 ret = snic_alloc_vnic_res(snic); in snic_probe()
571 INIT_LIST_HEAD(&snic->list); in snic_probe()
577 INIT_LIST_HEAD(&snic->spl_cmd_list); in snic_probe()
578 spin_lock_init(&snic->spl_cmd_lock); in snic_probe()
581 spin_lock_init(&snic->snic_lock); in snic_probe()
584 spin_lock_init(&snic->wq_lock[i]); in snic_probe()
587 spin_lock_init(&snic->io_req_lock[i]); in snic_probe()
598 snic->req_pool[SNIC_REQ_CACHE_DFLT_SGL] = pool; in snic_probe()
609 snic->req_pool[SNIC_REQ_CACHE_MAX_SGL] = pool; in snic_probe()
620 snic->req_pool[SNIC_REQ_TM_CACHE] = pool; in snic_probe()
623 atomic_set(&snic->state, SNIC_INIT); in snic_probe()
625 atomic_set(&snic->ios_inflight, 0); in snic_probe()
628 ret = snic_notify_set(snic); in snic_probe()
638 list_add_tail(&snic->list, &snic_glob->snic_list); in snic_probe()
641 snic_disc_init(&snic->disc); in snic_probe()
642 INIT_WORK(&snic->tgt_work, snic_handle_tgt_disc); in snic_probe()
643 INIT_WORK(&snic->disc_work, snic_handle_disc); in snic_probe()
644 INIT_WORK(&snic->link_work, snic_handle_link); in snic_probe()
647 for (i = 0; i < snic->wq_count; i++) in snic_probe()
648 svnic_wq_enable(&snic->wq[i]); in snic_probe()
650 ret = svnic_dev_enable_wait(snic->vdev); in snic_probe()
659 ret = snic_request_intr(snic); in snic_probe()
666 for (i = 0; i < snic->intr_count; i++) in snic_probe()
667 svnic_intr_unmask(&snic->intr[i]); in snic_probe()
670 ret = snic_get_conf(snic); in snic_probe()
692 snic_set_state(snic, SNIC_ONLINE); in snic_probe()
694 ret = snic_disc_start(snic); in snic_probe()
707 snic_free_all_untagged_reqs(snic); in snic_probe()
709 for (i = 0; i < snic->intr_count; i++) in snic_probe()
710 svnic_intr_mask(&snic->intr[i]); in snic_probe()
712 snic_free_intr(snic); in snic_probe()
715 svnic_dev_disable(snic->vdev); in snic_probe()
718 svnic_dev_notify_unset(snic->vdev); in snic_probe()
720 for (i = 0; i < snic->wq_count; i++) { in snic_probe()
723 rc = svnic_wq_disable(&snic->wq[i]); in snic_probe()
731 snic_del_host(snic->shost); in snic_probe()
734 mempool_destroy(snic->req_pool[SNIC_REQ_TM_CACHE]); in snic_probe()
737 mempool_destroy(snic->req_pool[SNIC_REQ_CACHE_MAX_SGL]); in snic_probe()
740 mempool_destroy(snic->req_pool[SNIC_REQ_CACHE_DFLT_SGL]); in snic_probe()
743 snic_free_vnic_res(snic); in snic_probe()
746 snic_clear_intr_mode(snic); in snic_probe()
749 svnic_dev_close(snic->vdev); in snic_probe()
752 svnic_dev_unregister(snic->vdev); in snic_probe()
755 snic_iounmap(snic); in snic_probe()
765 snic_stats_debugfs_remove(snic); in snic_probe()
786 struct snic *snic = pci_get_drvdata(pdev); in snic_remove() local
789 if (!snic) { in snic_remove()
803 snic_set_state(snic, SNIC_OFFLINE); in snic_remove()
804 spin_lock_irqsave(&snic->snic_lock, flags); in snic_remove()
805 snic->stop_link_events = 1; in snic_remove()
806 spin_unlock_irqrestore(&snic->snic_lock, flags); in snic_remove()
809 snic_disc_term(snic); in snic_remove()
811 spin_lock_irqsave(&snic->snic_lock, flags); in snic_remove()
812 snic->in_remove = 1; in snic_remove()
813 spin_unlock_irqrestore(&snic->snic_lock, flags); in snic_remove()
820 snic_cleanup(snic); in snic_remove()
823 list_del(&snic->list); in snic_remove()
826 snic_tgt_del_all(snic); in snic_remove()
828 snic_stats_debugfs_remove(snic); in snic_remove()
830 snic_del_host(snic->shost); in snic_remove()
832 svnic_dev_notify_unset(snic->vdev); in snic_remove()
833 snic_free_intr(snic); in snic_remove()
834 snic_free_vnic_res(snic); in snic_remove()
835 snic_clear_intr_mode(snic); in snic_remove()
836 svnic_dev_close(snic->vdev); in snic_remove()
837 svnic_dev_unregister(snic->vdev); in snic_remove()
838 snic_iounmap(snic); in snic_remove()
844 scsi_host_put(snic->shost); in snic_remove()