• Home
  • Raw
  • Download

Lines Matching refs:vdev

68 	int (*devcmd_rtn)(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd,
77 void *svnic_dev_priv(struct vnic_dev *vdev) in svnic_dev_priv() argument
79 return vdev->priv; in svnic_dev_priv()
82 static int vnic_dev_discover_res(struct vnic_dev *vdev, in vnic_dev_discover_res() argument
158 vdev->res[type].count = count; in vnic_dev_discover_res()
159 vdev->res[type].vaddr = (char __iomem *)bar->vaddr + bar_offset; in vnic_dev_discover_res()
165 unsigned int svnic_dev_get_res_count(struct vnic_dev *vdev, in svnic_dev_get_res_count() argument
168 return vdev->res[type].count; in svnic_dev_get_res_count()
171 void __iomem *svnic_dev_get_res(struct vnic_dev *vdev, enum vnic_res_type type, in svnic_dev_get_res() argument
174 if (!vdev->res[type].vaddr) in svnic_dev_get_res()
182 return (char __iomem *)vdev->res[type].vaddr + in svnic_dev_get_res()
186 return (char __iomem *)vdev->res[type].vaddr; in svnic_dev_get_res()
223 int svnic_dev_alloc_desc_ring(struct vnic_dev *vdev, struct vnic_dev_ring *ring, in svnic_dev_alloc_desc_ring() argument
228 ring->descs_unaligned = dma_alloc_coherent(&vdev->pdev->dev, in svnic_dev_alloc_desc_ring()
250 void svnic_dev_free_desc_ring(struct vnic_dev *vdev, struct vnic_dev_ring *ring) in svnic_dev_free_desc_ring() argument
253 dma_free_coherent(&vdev->pdev->dev, in svnic_dev_free_desc_ring()
261 static int _svnic_dev_cmd2(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd, in _svnic_dev_cmd2() argument
264 struct devcmd2_controller *dc2c = vdev->devcmd2; in _svnic_dev_cmd2()
290 pci_name(vdev->pdev), _CMD_N(cmd), fetch_idx, posted); in _svnic_dev_cmd2()
303 dc2c->cmd_ring[posted].args[i] = vdev->args[i]; in _svnic_dev_cmd2()
343 vdev->args[i] = result->results[i]; in _svnic_dev_cmd2()
355 static int svnic_dev_init_devcmd2(struct vnic_dev *vdev) in svnic_dev_init_devcmd2() argument
362 if (vdev->devcmd2) in svnic_dev_init_devcmd2()
365 p = svnic_dev_get_res(vdev, RES_TYPE_DEVCMD2, 0); in svnic_dev_init_devcmd2()
373 vdev->devcmd2 = dc2c; in svnic_dev_init_devcmd2()
378 ret = vnic_wq_devcmd2_alloc(vdev, in svnic_dev_init_devcmd2()
398 ret = svnic_dev_alloc_desc_ring(vdev, in svnic_dev_init_devcmd2()
408 vdev->args[0] = (u64) dc2c->results_ring.base_addr | VNIC_PADDR_TARGET; in svnic_dev_init_devcmd2()
409 vdev->args[1] = DEVCMD2_RING_SIZE; in svnic_dev_init_devcmd2()
411 ret = _svnic_dev_cmd2(vdev, CMD_INITIALIZE_DEVCMD2, VNIC_DVCMD_TMO); in svnic_dev_init_devcmd2()
415 vdev->devcmd_rtn = &_svnic_dev_cmd2; in svnic_dev_init_devcmd2()
421 svnic_dev_free_desc_ring(vdev, &dc2c->results_ring); in svnic_dev_init_devcmd2()
429 vdev->devcmd2 = NULL; in svnic_dev_init_devcmd2()
434 static void vnic_dev_deinit_devcmd2(struct vnic_dev *vdev) in vnic_dev_deinit_devcmd2() argument
436 struct devcmd2_controller *dc2c = vdev->devcmd2; in vnic_dev_deinit_devcmd2()
438 vdev->devcmd2 = NULL; in vnic_dev_deinit_devcmd2()
439 vdev->devcmd_rtn = NULL; in vnic_dev_deinit_devcmd2()
441 svnic_dev_free_desc_ring(vdev, &dc2c->results_ring); in vnic_dev_deinit_devcmd2()
447 int svnic_dev_cmd(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd, in svnic_dev_cmd() argument
452 memset(vdev->args, 0, sizeof(vdev->args)); in svnic_dev_cmd()
453 vdev->args[0] = *a0; in svnic_dev_cmd()
454 vdev->args[1] = *a1; in svnic_dev_cmd()
456 err = (*vdev->devcmd_rtn)(vdev, cmd, wait); in svnic_dev_cmd()
458 *a0 = vdev->args[0]; in svnic_dev_cmd()
459 *a1 = vdev->args[1]; in svnic_dev_cmd()
464 int svnic_dev_fw_info(struct vnic_dev *vdev, in svnic_dev_fw_info() argument
471 if (!vdev->fw_info) { in svnic_dev_fw_info()
472 vdev->fw_info = dma_alloc_coherent(&vdev->pdev->dev, in svnic_dev_fw_info()
474 &vdev->fw_info_pa, GFP_KERNEL); in svnic_dev_fw_info()
475 if (!vdev->fw_info) in svnic_dev_fw_info()
478 a0 = vdev->fw_info_pa; in svnic_dev_fw_info()
481 err = svnic_dev_cmd(vdev, CMD_MCPU_FW_INFO, &a0, &a1, wait); in svnic_dev_fw_info()
484 *fw_info = vdev->fw_info; in svnic_dev_fw_info()
489 int svnic_dev_spec(struct vnic_dev *vdev, unsigned int offset, in svnic_dev_spec() argument
499 err = svnic_dev_cmd(vdev, CMD_DEV_SPEC, &a0, &a1, wait); in svnic_dev_spec()
522 int svnic_dev_stats_clear(struct vnic_dev *vdev) in svnic_dev_stats_clear() argument
527 return svnic_dev_cmd(vdev, CMD_STATS_CLEAR, &a0, &a1, wait); in svnic_dev_stats_clear()
530 int svnic_dev_stats_dump(struct vnic_dev *vdev, struct vnic_stats **stats) in svnic_dev_stats_dump() argument
535 if (!vdev->stats) { in svnic_dev_stats_dump()
536 vdev->stats = dma_alloc_coherent(&vdev->pdev->dev, in svnic_dev_stats_dump()
537 sizeof(struct vnic_stats), &vdev->stats_pa, GFP_KERNEL); in svnic_dev_stats_dump()
538 if (!vdev->stats) in svnic_dev_stats_dump()
542 *stats = vdev->stats; in svnic_dev_stats_dump()
543 a0 = vdev->stats_pa; in svnic_dev_stats_dump()
546 return svnic_dev_cmd(vdev, CMD_STATS_DUMP, &a0, &a1, wait); in svnic_dev_stats_dump()
549 int svnic_dev_close(struct vnic_dev *vdev) in svnic_dev_close() argument
554 return svnic_dev_cmd(vdev, CMD_CLOSE, &a0, &a1, wait); in svnic_dev_close()
557 int svnic_dev_enable_wait(struct vnic_dev *vdev) in svnic_dev_enable_wait() argument
563 err = svnic_dev_cmd(vdev, CMD_ENABLE_WAIT, &a0, &a1, wait); in svnic_dev_enable_wait()
565 return svnic_dev_cmd(vdev, CMD_ENABLE, &a0, &a1, wait); in svnic_dev_enable_wait()
570 int svnic_dev_disable(struct vnic_dev *vdev) in svnic_dev_disable() argument
575 return svnic_dev_cmd(vdev, CMD_DISABLE, &a0, &a1, wait); in svnic_dev_disable()
578 int svnic_dev_open(struct vnic_dev *vdev, int arg) in svnic_dev_open() argument
583 return svnic_dev_cmd(vdev, CMD_OPEN, &a0, &a1, wait); in svnic_dev_open()
586 int svnic_dev_open_done(struct vnic_dev *vdev, int *done) in svnic_dev_open_done() argument
594 err = svnic_dev_cmd(vdev, CMD_OPEN_STATUS, &a0, &a1, wait); in svnic_dev_open_done()
603 int svnic_dev_notify_set(struct vnic_dev *vdev, u16 intr) in svnic_dev_notify_set() argument
608 if (!vdev->notify) { in svnic_dev_notify_set()
609 vdev->notify = dma_alloc_coherent(&vdev->pdev->dev, in svnic_dev_notify_set()
611 &vdev->notify_pa, GFP_KERNEL); in svnic_dev_notify_set()
612 if (!vdev->notify) in svnic_dev_notify_set()
616 a0 = vdev->notify_pa; in svnic_dev_notify_set()
620 return svnic_dev_cmd(vdev, CMD_NOTIFY, &a0, &a1, wait); in svnic_dev_notify_set()
623 void svnic_dev_notify_unset(struct vnic_dev *vdev) in svnic_dev_notify_unset() argument
632 svnic_dev_cmd(vdev, CMD_NOTIFY, &a0, &a1, wait); in svnic_dev_notify_unset()
635 static int vnic_dev_notify_ready(struct vnic_dev *vdev) in vnic_dev_notify_ready() argument
642 if (!vdev->notify) in vnic_dev_notify_ready()
647 memcpy(&vdev->notify_copy, vdev->notify, in vnic_dev_notify_ready()
649 words = (u32 *)&vdev->notify_copy; in vnic_dev_notify_ready()
657 int svnic_dev_init(struct vnic_dev *vdev, int arg) in svnic_dev_init() argument
662 return svnic_dev_cmd(vdev, CMD_INIT, &a0, &a1, wait); in svnic_dev_init()
665 int svnic_dev_link_status(struct vnic_dev *vdev) in svnic_dev_link_status() argument
667 if (vdev->linkstatus) in svnic_dev_link_status()
668 return *vdev->linkstatus; in svnic_dev_link_status()
670 if (!vnic_dev_notify_ready(vdev)) in svnic_dev_link_status()
673 return vdev->notify_copy.link_state; in svnic_dev_link_status()
676 u32 svnic_dev_link_down_cnt(struct vnic_dev *vdev) in svnic_dev_link_down_cnt() argument
678 if (!vnic_dev_notify_ready(vdev)) in svnic_dev_link_down_cnt()
681 return vdev->notify_copy.link_down_cnt; in svnic_dev_link_down_cnt()
684 void svnic_dev_set_intr_mode(struct vnic_dev *vdev, in svnic_dev_set_intr_mode() argument
687 vdev->intr_mode = intr_mode; in svnic_dev_set_intr_mode()
690 enum vnic_dev_intr_mode svnic_dev_get_intr_mode(struct vnic_dev *vdev) in svnic_dev_get_intr_mode() argument
692 return vdev->intr_mode; in svnic_dev_get_intr_mode()
695 void svnic_dev_unregister(struct vnic_dev *vdev) in svnic_dev_unregister() argument
697 if (vdev) { in svnic_dev_unregister()
698 if (vdev->notify) in svnic_dev_unregister()
699 dma_free_coherent(&vdev->pdev->dev, in svnic_dev_unregister()
701 vdev->notify, in svnic_dev_unregister()
702 vdev->notify_pa); in svnic_dev_unregister()
703 if (vdev->linkstatus) in svnic_dev_unregister()
704 dma_free_coherent(&vdev->pdev->dev, in svnic_dev_unregister()
706 vdev->linkstatus, in svnic_dev_unregister()
707 vdev->linkstatus_pa); in svnic_dev_unregister()
708 if (vdev->stats) in svnic_dev_unregister()
709 dma_free_coherent(&vdev->pdev->dev, in svnic_dev_unregister()
711 vdev->stats, vdev->stats_pa); in svnic_dev_unregister()
712 if (vdev->fw_info) in svnic_dev_unregister()
713 dma_free_coherent(&vdev->pdev->dev, in svnic_dev_unregister()
715 vdev->fw_info, vdev->fw_info_pa); in svnic_dev_unregister()
716 if (vdev->devcmd2) in svnic_dev_unregister()
717 vnic_dev_deinit_devcmd2(vdev); in svnic_dev_unregister()
718 kfree(vdev); in svnic_dev_unregister()
722 struct vnic_dev *svnic_dev_alloc_discover(struct vnic_dev *vdev, in svnic_dev_alloc_discover() argument
728 if (!vdev) { in svnic_dev_alloc_discover()
729 vdev = kzalloc(sizeof(struct vnic_dev), GFP_ATOMIC); in svnic_dev_alloc_discover()
730 if (!vdev) in svnic_dev_alloc_discover()
734 vdev->priv = priv; in svnic_dev_alloc_discover()
735 vdev->pdev = pdev; in svnic_dev_alloc_discover()
737 if (vnic_dev_discover_res(vdev, bar, num_bars)) in svnic_dev_alloc_discover()
740 return vdev; in svnic_dev_alloc_discover()
743 svnic_dev_unregister(vdev); in svnic_dev_alloc_discover()
751 int svnic_dev_cmd_init(struct vnic_dev *vdev, int fallback) in svnic_dev_cmd_init() argument
756 p = svnic_dev_get_res(vdev, RES_TYPE_DEVCMD2, 0); in svnic_dev_cmd_init()
758 err = svnic_dev_init_devcmd2(vdev); in svnic_dev_cmd_init()