Lines Matching refs:vdev
39 void *vnic_dev_priv(struct vnic_dev *vdev) in vnic_dev_priv() argument
41 return vdev->priv; in vnic_dev_priv()
44 static int vnic_dev_discover_res(struct vnic_dev *vdev, in vnic_dev_discover_res() argument
124 vdev->res[type].count = count; in vnic_dev_discover_res()
125 vdev->res[type].vaddr = (char __iomem *)bar[bar_num].vaddr + in vnic_dev_discover_res()
127 vdev->res[type].bus_addr = bar[bar_num].bus_addr + bar_offset; in vnic_dev_discover_res()
133 unsigned int vnic_dev_get_res_count(struct vnic_dev *vdev, in vnic_dev_get_res_count() argument
136 return vdev->res[type].count; in vnic_dev_get_res_count()
140 void __iomem *vnic_dev_get_res(struct vnic_dev *vdev, enum vnic_res_type type, in vnic_dev_get_res() argument
143 if (!vdev->res[type].vaddr) in vnic_dev_get_res()
151 return (char __iomem *)vdev->res[type].vaddr + in vnic_dev_get_res()
154 return (char __iomem *)vdev->res[type].vaddr; in vnic_dev_get_res()
191 int vnic_dev_alloc_desc_ring(struct vnic_dev *vdev, struct vnic_dev_ring *ring, in vnic_dev_alloc_desc_ring() argument
196 ring->descs_unaligned = pci_alloc_consistent(vdev->pdev, in vnic_dev_alloc_desc_ring()
218 void vnic_dev_free_desc_ring(struct vnic_dev *vdev, struct vnic_dev_ring *ring) in vnic_dev_free_desc_ring() argument
221 pci_free_consistent(vdev->pdev, in vnic_dev_free_desc_ring()
229 static int _vnic_dev_cmd(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd, in _vnic_dev_cmd() argument
232 struct vnic_devcmd __iomem *devcmd = vdev->devcmd; in _vnic_dev_cmd()
250 writeq(vdev->args[i], &devcmd->args[i]); in _vnic_dev_cmd()
286 vdev->args[i] = readq(&devcmd->args[i]); in _vnic_dev_cmd()
297 static int _vnic_dev_cmd2(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd, in _vnic_dev_cmd2() argument
300 struct devcmd2_controller *dc2c = vdev->devcmd2; in _vnic_dev_cmd2()
327 dc2c->cmd_ring[posted].args[i] = vdev->args[i]; in _vnic_dev_cmd2()
361 vdev->args[i] = result->results[i]; in _vnic_dev_cmd2()
373 static int vnic_dev_init_devcmd1(struct vnic_dev *vdev) in vnic_dev_init_devcmd1() argument
375 vdev->devcmd = vnic_dev_get_res(vdev, RES_TYPE_DEVCMD, 0); in vnic_dev_init_devcmd1()
376 if (!vdev->devcmd) in vnic_dev_init_devcmd1()
378 vdev->devcmd_rtn = _vnic_dev_cmd; in vnic_dev_init_devcmd1()
383 static int vnic_dev_init_devcmd2(struct vnic_dev *vdev) in vnic_dev_init_devcmd2() argument
388 if (vdev->devcmd2) in vnic_dev_init_devcmd2()
391 vdev->devcmd2 = kzalloc(sizeof(*vdev->devcmd2), GFP_KERNEL); in vnic_dev_init_devcmd2()
392 if (!vdev->devcmd2) in vnic_dev_init_devcmd2()
395 vdev->devcmd2->color = 1; in vnic_dev_init_devcmd2()
396 vdev->devcmd2->result_size = DEVCMD2_RING_SIZE; in vnic_dev_init_devcmd2()
397 err = enic_wq_devcmd2_alloc(vdev, &vdev->devcmd2->wq, DEVCMD2_RING_SIZE, in vnic_dev_init_devcmd2()
402 fetch_index = ioread32(&vdev->devcmd2->wq.ctrl->fetch_index); in vnic_dev_init_devcmd2()
409 enic_wq_init_start(&vdev->devcmd2->wq, 0, fetch_index, fetch_index, 0, in vnic_dev_init_devcmd2()
411 vdev->devcmd2->posted = fetch_index; in vnic_dev_init_devcmd2()
412 vnic_wq_enable(&vdev->devcmd2->wq); in vnic_dev_init_devcmd2()
414 err = vnic_dev_alloc_desc_ring(vdev, &vdev->devcmd2->results_ring, in vnic_dev_init_devcmd2()
419 vdev->devcmd2->result = vdev->devcmd2->results_ring.descs; in vnic_dev_init_devcmd2()
420 vdev->devcmd2->cmd_ring = vdev->devcmd2->wq.ring.descs; in vnic_dev_init_devcmd2()
421 vdev->devcmd2->wq_ctrl = vdev->devcmd2->wq.ctrl; in vnic_dev_init_devcmd2()
422 vdev->args[0] = (u64)vdev->devcmd2->results_ring.base_addr | in vnic_dev_init_devcmd2()
424 vdev->args[1] = DEVCMD2_RING_SIZE; in vnic_dev_init_devcmd2()
426 err = _vnic_dev_cmd2(vdev, CMD_INITIALIZE_DEVCMD2, 1000); in vnic_dev_init_devcmd2()
430 vdev->devcmd_rtn = _vnic_dev_cmd2; in vnic_dev_init_devcmd2()
435 vnic_dev_free_desc_ring(vdev, &vdev->devcmd2->results_ring); in vnic_dev_init_devcmd2()
437 vnic_wq_disable(&vdev->devcmd2->wq); in vnic_dev_init_devcmd2()
438 vnic_wq_free(&vdev->devcmd2->wq); in vnic_dev_init_devcmd2()
440 kfree(vdev->devcmd2); in vnic_dev_init_devcmd2()
441 vdev->devcmd2 = NULL; in vnic_dev_init_devcmd2()
446 static void vnic_dev_deinit_devcmd2(struct vnic_dev *vdev) in vnic_dev_deinit_devcmd2() argument
448 vnic_dev_free_desc_ring(vdev, &vdev->devcmd2->results_ring); in vnic_dev_deinit_devcmd2()
449 vnic_wq_disable(&vdev->devcmd2->wq); in vnic_dev_deinit_devcmd2()
450 vnic_wq_free(&vdev->devcmd2->wq); in vnic_dev_deinit_devcmd2()
451 kfree(vdev->devcmd2); in vnic_dev_deinit_devcmd2()
454 static int vnic_dev_cmd_proxy(struct vnic_dev *vdev, in vnic_dev_cmd_proxy() argument
461 memset(vdev->args, 0, sizeof(vdev->args)); in vnic_dev_cmd_proxy()
463 vdev->args[0] = vdev->proxy_index; in vnic_dev_cmd_proxy()
464 vdev->args[1] = cmd; in vnic_dev_cmd_proxy()
465 vdev->args[2] = *a0; in vnic_dev_cmd_proxy()
466 vdev->args[3] = *a1; in vnic_dev_cmd_proxy()
468 err = vdev->devcmd_rtn(vdev, proxy_cmd, wait); in vnic_dev_cmd_proxy()
472 status = (u32)vdev->args[0]; in vnic_dev_cmd_proxy()
474 err = (int)vdev->args[1]; in vnic_dev_cmd_proxy()
482 *a0 = vdev->args[1]; in vnic_dev_cmd_proxy()
483 *a1 = vdev->args[2]; in vnic_dev_cmd_proxy()
488 static int vnic_dev_cmd_no_proxy(struct vnic_dev *vdev, in vnic_dev_cmd_no_proxy() argument
493 vdev->args[0] = *a0; in vnic_dev_cmd_no_proxy()
494 vdev->args[1] = *a1; in vnic_dev_cmd_no_proxy()
496 err = vdev->devcmd_rtn(vdev, cmd, wait); in vnic_dev_cmd_no_proxy()
498 *a0 = vdev->args[0]; in vnic_dev_cmd_no_proxy()
499 *a1 = vdev->args[1]; in vnic_dev_cmd_no_proxy()
504 void vnic_dev_cmd_proxy_by_index_start(struct vnic_dev *vdev, u16 index) in vnic_dev_cmd_proxy_by_index_start() argument
506 vdev->proxy = PROXY_BY_INDEX; in vnic_dev_cmd_proxy_by_index_start()
507 vdev->proxy_index = index; in vnic_dev_cmd_proxy_by_index_start()
510 void vnic_dev_cmd_proxy_end(struct vnic_dev *vdev) in vnic_dev_cmd_proxy_end() argument
512 vdev->proxy = PROXY_NONE; in vnic_dev_cmd_proxy_end()
513 vdev->proxy_index = 0; in vnic_dev_cmd_proxy_end()
516 int vnic_dev_cmd(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd, in vnic_dev_cmd() argument
519 memset(vdev->args, 0, sizeof(vdev->args)); in vnic_dev_cmd()
521 switch (vdev->proxy) { in vnic_dev_cmd()
523 return vnic_dev_cmd_proxy(vdev, CMD_PROXY_BY_INDEX, cmd, in vnic_dev_cmd()
526 return vnic_dev_cmd_proxy(vdev, CMD_PROXY_BY_BDF, cmd, in vnic_dev_cmd()
530 return vnic_dev_cmd_no_proxy(vdev, cmd, a0, a1, wait); in vnic_dev_cmd()
534 static int vnic_dev_capable(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd) in vnic_dev_capable() argument
540 err = vnic_dev_cmd(vdev, CMD_CAPABILITY, &a0, &a1, wait); in vnic_dev_capable()
545 int vnic_dev_fw_info(struct vnic_dev *vdev, in vnic_dev_fw_info() argument
552 if (!vdev->fw_info) { in vnic_dev_fw_info()
553 vdev->fw_info = pci_zalloc_consistent(vdev->pdev, in vnic_dev_fw_info()
555 &vdev->fw_info_pa); in vnic_dev_fw_info()
556 if (!vdev->fw_info) in vnic_dev_fw_info()
559 a0 = vdev->fw_info_pa; in vnic_dev_fw_info()
563 if (vnic_dev_capable(vdev, CMD_MCPU_FW_INFO)) in vnic_dev_fw_info()
564 err = vnic_dev_cmd(vdev, CMD_MCPU_FW_INFO, in vnic_dev_fw_info()
567 err = vnic_dev_cmd(vdev, CMD_MCPU_FW_INFO_OLD, in vnic_dev_fw_info()
571 *fw_info = vdev->fw_info; in vnic_dev_fw_info()
576 int vnic_dev_spec(struct vnic_dev *vdev, unsigned int offset, unsigned int size, in vnic_dev_spec() argument
586 err = vnic_dev_cmd(vdev, CMD_DEV_SPEC, &a0, &a1, wait); in vnic_dev_spec()
599 int vnic_dev_stats_dump(struct vnic_dev *vdev, struct vnic_stats **stats) in vnic_dev_stats_dump() argument
604 if (!vdev->stats) { in vnic_dev_stats_dump()
605 vdev->stats = pci_alloc_consistent(vdev->pdev, in vnic_dev_stats_dump()
606 sizeof(struct vnic_stats), &vdev->stats_pa); in vnic_dev_stats_dump()
607 if (!vdev->stats) in vnic_dev_stats_dump()
611 *stats = vdev->stats; in vnic_dev_stats_dump()
612 a0 = vdev->stats_pa; in vnic_dev_stats_dump()
615 return vnic_dev_cmd(vdev, CMD_STATS_DUMP, &a0, &a1, wait); in vnic_dev_stats_dump()
618 int vnic_dev_close(struct vnic_dev *vdev) in vnic_dev_close() argument
622 return vnic_dev_cmd(vdev, CMD_CLOSE, &a0, &a1, wait); in vnic_dev_close()
625 int vnic_dev_enable_wait(struct vnic_dev *vdev) in vnic_dev_enable_wait() argument
630 if (vnic_dev_capable(vdev, CMD_ENABLE_WAIT)) in vnic_dev_enable_wait()
631 return vnic_dev_cmd(vdev, CMD_ENABLE_WAIT, &a0, &a1, wait); in vnic_dev_enable_wait()
633 return vnic_dev_cmd(vdev, CMD_ENABLE, &a0, &a1, wait); in vnic_dev_enable_wait()
636 int vnic_dev_disable(struct vnic_dev *vdev) in vnic_dev_disable() argument
640 return vnic_dev_cmd(vdev, CMD_DISABLE, &a0, &a1, wait); in vnic_dev_disable()
643 int vnic_dev_open(struct vnic_dev *vdev, int arg) in vnic_dev_open() argument
647 return vnic_dev_cmd(vdev, CMD_OPEN, &a0, &a1, wait); in vnic_dev_open()
650 int vnic_dev_open_done(struct vnic_dev *vdev, int *done) in vnic_dev_open_done() argument
658 err = vnic_dev_cmd(vdev, CMD_OPEN_STATUS, &a0, &a1, wait); in vnic_dev_open_done()
667 int vnic_dev_soft_reset(struct vnic_dev *vdev, int arg) in vnic_dev_soft_reset() argument
671 return vnic_dev_cmd(vdev, CMD_SOFT_RESET, &a0, &a1, wait); in vnic_dev_soft_reset()
674 int vnic_dev_soft_reset_done(struct vnic_dev *vdev, int *done) in vnic_dev_soft_reset_done() argument
682 err = vnic_dev_cmd(vdev, CMD_SOFT_RESET_STATUS, &a0, &a1, wait); in vnic_dev_soft_reset_done()
691 int vnic_dev_hang_reset(struct vnic_dev *vdev, int arg) in vnic_dev_hang_reset() argument
697 if (vnic_dev_capable(vdev, CMD_HANG_RESET)) { in vnic_dev_hang_reset()
698 return vnic_dev_cmd(vdev, CMD_HANG_RESET, in vnic_dev_hang_reset()
701 err = vnic_dev_soft_reset(vdev, arg); in vnic_dev_hang_reset()
704 return vnic_dev_init(vdev, 0); in vnic_dev_hang_reset()
708 int vnic_dev_hang_reset_done(struct vnic_dev *vdev, int *done) in vnic_dev_hang_reset_done() argument
716 if (vnic_dev_capable(vdev, CMD_HANG_RESET_STATUS)) { in vnic_dev_hang_reset_done()
717 err = vnic_dev_cmd(vdev, CMD_HANG_RESET_STATUS, in vnic_dev_hang_reset_done()
722 return vnic_dev_soft_reset_done(vdev, done); in vnic_dev_hang_reset_done()
730 int vnic_dev_hang_notify(struct vnic_dev *vdev) in vnic_dev_hang_notify() argument
734 return vnic_dev_cmd(vdev, CMD_HANG_NOTIFY, &a0, &a1, wait); in vnic_dev_hang_notify()
737 int vnic_dev_get_mac_addr(struct vnic_dev *vdev, u8 *mac_addr) in vnic_dev_get_mac_addr() argument
746 err = vnic_dev_cmd(vdev, CMD_GET_MAC_ADDR, &a0, &a1, wait); in vnic_dev_get_mac_addr()
756 int vnic_dev_packet_filter(struct vnic_dev *vdev, int directed, int multicast, in vnic_dev_packet_filter() argument
769 err = vnic_dev_cmd(vdev, CMD_PACKET_FILTER, &a0, &a1, wait); in vnic_dev_packet_filter()
776 int vnic_dev_add_addr(struct vnic_dev *vdev, const u8 *addr) in vnic_dev_add_addr() argument
786 err = vnic_dev_cmd(vdev, CMD_ADDR_ADD, &a0, &a1, wait); in vnic_dev_add_addr()
793 int vnic_dev_del_addr(struct vnic_dev *vdev, const u8 *addr) in vnic_dev_del_addr() argument
803 err = vnic_dev_cmd(vdev, CMD_ADDR_DEL, &a0, &a1, wait); in vnic_dev_del_addr()
810 int vnic_dev_set_ig_vlan_rewrite_mode(struct vnic_dev *vdev, in vnic_dev_set_ig_vlan_rewrite_mode() argument
816 if (vnic_dev_capable(vdev, CMD_IG_VLAN_REWRITE_MODE)) in vnic_dev_set_ig_vlan_rewrite_mode()
817 return vnic_dev_cmd(vdev, CMD_IG_VLAN_REWRITE_MODE, in vnic_dev_set_ig_vlan_rewrite_mode()
823 static int vnic_dev_notify_setcmd(struct vnic_dev *vdev, in vnic_dev_notify_setcmd() argument
831 vdev->notify = notify_addr; in vnic_dev_notify_setcmd()
832 vdev->notify_pa = notify_pa; in vnic_dev_notify_setcmd()
838 r = vnic_dev_cmd(vdev, CMD_NOTIFY, &a0, &a1, wait); in vnic_dev_notify_setcmd()
839 vdev->notify_sz = (r == 0) ? (u32)a1 : 0; in vnic_dev_notify_setcmd()
843 int vnic_dev_notify_set(struct vnic_dev *vdev, u16 intr) in vnic_dev_notify_set() argument
848 if (vdev->notify || vdev->notify_pa) { in vnic_dev_notify_set()
849 vdev_neterr("notify block %p still allocated", vdev->notify); in vnic_dev_notify_set()
853 notify_addr = pci_alloc_consistent(vdev->pdev, in vnic_dev_notify_set()
859 return vnic_dev_notify_setcmd(vdev, notify_addr, notify_pa, intr); in vnic_dev_notify_set()
862 static int vnic_dev_notify_unsetcmd(struct vnic_dev *vdev) in vnic_dev_notify_unsetcmd() argument
872 err = vnic_dev_cmd(vdev, CMD_NOTIFY, &a0, &a1, wait); in vnic_dev_notify_unsetcmd()
873 vdev->notify = NULL; in vnic_dev_notify_unsetcmd()
874 vdev->notify_pa = 0; in vnic_dev_notify_unsetcmd()
875 vdev->notify_sz = 0; in vnic_dev_notify_unsetcmd()
880 int vnic_dev_notify_unset(struct vnic_dev *vdev) in vnic_dev_notify_unset() argument
882 if (vdev->notify) { in vnic_dev_notify_unset()
883 pci_free_consistent(vdev->pdev, in vnic_dev_notify_unset()
885 vdev->notify, in vnic_dev_notify_unset()
886 vdev->notify_pa); in vnic_dev_notify_unset()
889 return vnic_dev_notify_unsetcmd(vdev); in vnic_dev_notify_unset()
892 static int vnic_dev_notify_ready(struct vnic_dev *vdev) in vnic_dev_notify_ready() argument
895 unsigned int nwords = vdev->notify_sz / 4; in vnic_dev_notify_ready()
899 if (!vdev->notify || !vdev->notify_sz) in vnic_dev_notify_ready()
904 memcpy(&vdev->notify_copy, vdev->notify, vdev->notify_sz); in vnic_dev_notify_ready()
905 words = (u32 *)&vdev->notify_copy; in vnic_dev_notify_ready()
913 int vnic_dev_init(struct vnic_dev *vdev, int arg) in vnic_dev_init() argument
919 if (vnic_dev_capable(vdev, CMD_INIT)) in vnic_dev_init()
920 r = vnic_dev_cmd(vdev, CMD_INIT, &a0, &a1, wait); in vnic_dev_init()
922 vnic_dev_cmd(vdev, CMD_INIT_v1, &a0, &a1, wait); in vnic_dev_init()
927 vnic_dev_cmd(vdev, CMD_GET_MAC_ADDR, &a0, &a1, wait); in vnic_dev_init()
928 vnic_dev_cmd(vdev, CMD_ADDR_ADD, &a0, &a1, wait); in vnic_dev_init()
934 int vnic_dev_deinit(struct vnic_dev *vdev) in vnic_dev_deinit() argument
939 return vnic_dev_cmd(vdev, CMD_DEINIT, &a0, &a1, wait); in vnic_dev_deinit()
942 void vnic_dev_intr_coal_timer_info_default(struct vnic_dev *vdev) in vnic_dev_intr_coal_timer_info_default() argument
945 vdev->intr_coal_timer_info.mul = 2; in vnic_dev_intr_coal_timer_info_default()
946 vdev->intr_coal_timer_info.div = 3; in vnic_dev_intr_coal_timer_info_default()
947 vdev->intr_coal_timer_info.max_usec = in vnic_dev_intr_coal_timer_info_default()
948 vnic_dev_intr_coal_timer_hw_to_usec(vdev, 0xffff); in vnic_dev_intr_coal_timer_info_default()
951 int vnic_dev_intr_coal_timer_info(struct vnic_dev *vdev) in vnic_dev_intr_coal_timer_info() argument
956 memset(vdev->args, 0, sizeof(vdev->args)); in vnic_dev_intr_coal_timer_info()
958 if (vnic_dev_capable(vdev, CMD_INTR_COAL_CONVERT)) in vnic_dev_intr_coal_timer_info()
959 err = vdev->devcmd_rtn(vdev, CMD_INTR_COAL_CONVERT, wait); in vnic_dev_intr_coal_timer_info()
967 (!err && !(vdev->args[0] && vdev->args[1] && vdev->args[2]))) { in vnic_dev_intr_coal_timer_info()
969 vnic_dev_intr_coal_timer_info_default(vdev); in vnic_dev_intr_coal_timer_info()
974 vdev->intr_coal_timer_info.mul = (u32) vdev->args[0]; in vnic_dev_intr_coal_timer_info()
975 vdev->intr_coal_timer_info.div = (u32) vdev->args[1]; in vnic_dev_intr_coal_timer_info()
976 vdev->intr_coal_timer_info.max_usec = (u32) vdev->args[2]; in vnic_dev_intr_coal_timer_info()
982 int vnic_dev_link_status(struct vnic_dev *vdev) in vnic_dev_link_status() argument
984 if (!vnic_dev_notify_ready(vdev)) in vnic_dev_link_status()
987 return vdev->notify_copy.link_state; in vnic_dev_link_status()
990 u32 vnic_dev_port_speed(struct vnic_dev *vdev) in vnic_dev_port_speed() argument
992 if (!vnic_dev_notify_ready(vdev)) in vnic_dev_port_speed()
995 return vdev->notify_copy.port_speed; in vnic_dev_port_speed()
998 u32 vnic_dev_msg_lvl(struct vnic_dev *vdev) in vnic_dev_msg_lvl() argument
1000 if (!vnic_dev_notify_ready(vdev)) in vnic_dev_msg_lvl()
1003 return vdev->notify_copy.msglvl; in vnic_dev_msg_lvl()
1006 u32 vnic_dev_mtu(struct vnic_dev *vdev) in vnic_dev_mtu() argument
1008 if (!vnic_dev_notify_ready(vdev)) in vnic_dev_mtu()
1011 return vdev->notify_copy.mtu; in vnic_dev_mtu()
1014 void vnic_dev_set_intr_mode(struct vnic_dev *vdev, in vnic_dev_set_intr_mode() argument
1017 vdev->intr_mode = intr_mode; in vnic_dev_set_intr_mode()
1021 struct vnic_dev *vdev) in vnic_dev_get_intr_mode() argument
1023 return vdev->intr_mode; in vnic_dev_get_intr_mode()
1026 u32 vnic_dev_intr_coal_timer_usec_to_hw(struct vnic_dev *vdev, u32 usec) in vnic_dev_intr_coal_timer_usec_to_hw() argument
1028 return (usec * vdev->intr_coal_timer_info.mul) / in vnic_dev_intr_coal_timer_usec_to_hw()
1029 vdev->intr_coal_timer_info.div; in vnic_dev_intr_coal_timer_usec_to_hw()
1032 u32 vnic_dev_intr_coal_timer_hw_to_usec(struct vnic_dev *vdev, u32 hw_cycles) in vnic_dev_intr_coal_timer_hw_to_usec() argument
1034 return (hw_cycles * vdev->intr_coal_timer_info.div) / in vnic_dev_intr_coal_timer_hw_to_usec()
1035 vdev->intr_coal_timer_info.mul; in vnic_dev_intr_coal_timer_hw_to_usec()
1038 u32 vnic_dev_get_intr_coal_timer_max(struct vnic_dev *vdev) in vnic_dev_get_intr_coal_timer_max() argument
1040 return vdev->intr_coal_timer_info.max_usec; in vnic_dev_get_intr_coal_timer_max()
1043 void vnic_dev_unregister(struct vnic_dev *vdev) in vnic_dev_unregister() argument
1045 if (vdev) { in vnic_dev_unregister()
1046 if (vdev->notify) in vnic_dev_unregister()
1047 pci_free_consistent(vdev->pdev, in vnic_dev_unregister()
1049 vdev->notify, in vnic_dev_unregister()
1050 vdev->notify_pa); in vnic_dev_unregister()
1051 if (vdev->stats) in vnic_dev_unregister()
1052 pci_free_consistent(vdev->pdev, in vnic_dev_unregister()
1054 vdev->stats, vdev->stats_pa); in vnic_dev_unregister()
1055 if (vdev->fw_info) in vnic_dev_unregister()
1056 pci_free_consistent(vdev->pdev, in vnic_dev_unregister()
1058 vdev->fw_info, vdev->fw_info_pa); in vnic_dev_unregister()
1059 if (vdev->devcmd2) in vnic_dev_unregister()
1060 vnic_dev_deinit_devcmd2(vdev); in vnic_dev_unregister()
1062 kfree(vdev); in vnic_dev_unregister()
1067 struct vnic_dev *vnic_dev_register(struct vnic_dev *vdev, in vnic_dev_register() argument
1071 if (!vdev) { in vnic_dev_register()
1072 vdev = kzalloc(sizeof(struct vnic_dev), GFP_ATOMIC); in vnic_dev_register()
1073 if (!vdev) in vnic_dev_register()
1077 vdev->priv = priv; in vnic_dev_register()
1078 vdev->pdev = pdev; in vnic_dev_register()
1080 if (vnic_dev_discover_res(vdev, bar, num_bars)) in vnic_dev_register()
1083 return vdev; in vnic_dev_register()
1086 vnic_dev_unregister(vdev); in vnic_dev_register()
1091 struct pci_dev *vnic_dev_get_pdev(struct vnic_dev *vdev) in vnic_dev_get_pdev() argument
1093 return vdev->pdev; in vnic_dev_get_pdev()
1097 int vnic_devcmd_init(struct vnic_dev *vdev) in vnic_devcmd_init() argument
1102 res = vnic_dev_get_res(vdev, RES_TYPE_DEVCMD2, 0); in vnic_devcmd_init()
1104 err = vnic_dev_init_devcmd2(vdev); in vnic_devcmd_init()
1113 err = vnic_dev_init_devcmd1(vdev); in vnic_devcmd_init()
1120 int vnic_dev_init_prov2(struct vnic_dev *vdev, u8 *buf, u32 len) in vnic_dev_init_prov2() argument
1128 prov_buf = pci_alloc_consistent(vdev->pdev, len, &prov_pa); in vnic_dev_init_prov2()
1136 ret = vnic_dev_cmd(vdev, CMD_INIT_PROV_INFO2, &a0, &a1, wait); in vnic_dev_init_prov2()
1138 pci_free_consistent(vdev->pdev, len, prov_buf, prov_pa); in vnic_dev_init_prov2()
1143 int vnic_dev_enable2(struct vnic_dev *vdev, int active) in vnic_dev_enable2() argument
1150 return vnic_dev_cmd(vdev, CMD_ENABLE2, &a0, &a1, wait); in vnic_dev_enable2()
1153 static int vnic_dev_cmd_status(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd, in vnic_dev_cmd_status() argument
1160 ret = vnic_dev_cmd(vdev, CMD_STATUS, &a0, &a1, wait); in vnic_dev_cmd_status()
1167 int vnic_dev_enable2_done(struct vnic_dev *vdev, int *status) in vnic_dev_enable2_done() argument
1169 return vnic_dev_cmd_status(vdev, CMD_ENABLE2, status); in vnic_dev_enable2_done()
1172 int vnic_dev_deinit_done(struct vnic_dev *vdev, int *status) in vnic_dev_deinit_done() argument
1174 return vnic_dev_cmd_status(vdev, CMD_DEINIT, status); in vnic_dev_deinit_done()
1177 int vnic_dev_set_mac_addr(struct vnic_dev *vdev, u8 *mac_addr) in vnic_dev_set_mac_addr() argument
1186 return vnic_dev_cmd(vdev, CMD_SET_MAC_ADDR, &a0, &a1, wait); in vnic_dev_set_mac_addr()
1203 int vnic_dev_classifier(struct vnic_dev *vdev, u8 cmd, u16 *entry, in vnic_dev_classifier() argument
1218 tlv_va = pci_alloc_consistent(vdev->pdev, tlv_size, &tlv_pa); in vnic_dev_classifier()
1239 ret = vnic_dev_cmd(vdev, CMD_ADD_FILTER, &a0, &a1, wait); in vnic_dev_classifier()
1241 pci_free_consistent(vdev->pdev, tlv_size, tlv_va, tlv_pa); in vnic_dev_classifier()
1244 ret = vnic_dev_cmd(vdev, CMD_DEL_FILTER, &a0, &a1, wait); in vnic_dev_classifier()