Lines Matching full:ndev
33 struct nitrox_device *ndev; member
37 static inline u64 pf2vf_read_mbox(struct nitrox_device *ndev, int ring) in pf2vf_read_mbox() argument
42 return nitrox_read_csr(ndev, reg_addr); in pf2vf_read_mbox()
45 static inline void pf2vf_write_mbox(struct nitrox_device *ndev, u64 value, in pf2vf_write_mbox() argument
51 nitrox_write_csr(ndev, reg_addr, value); in pf2vf_write_mbox()
54 static void pf2vf_send_response(struct nitrox_device *ndev, in pf2vf_send_response() argument
63 msg.data = ndev->mode; in pf2vf_send_response()
70 msg.id.chipid = ndev->idx; in pf2vf_send_response()
94 pf2vf_write_mbox(ndev, msg.value, vfdev->ring); in pf2vf_send_response()
105 struct nitrox_device *ndev = pf2vf_resp->ndev; in pf2vf_resp_handler() local
110 pf2vf_send_response(ndev, vfdev); in pf2vf_resp_handler()
120 void nitrox_pf2vf_mbox_handler(struct nitrox_device *ndev) in nitrox_pf2vf_mbox_handler() argument
130 value = nitrox_read_csr(ndev, reg_addr); in nitrox_pf2vf_mbox_handler()
133 vfno = RING_TO_VFNO(i, ndev->iov.max_vf_queues); in nitrox_pf2vf_mbox_handler()
134 vfdev = ndev->iov.vfdev + vfno; in nitrox_pf2vf_mbox_handler()
137 vfdev->msg.value = pf2vf_read_mbox(ndev, vfdev->ring); in nitrox_pf2vf_mbox_handler()
143 pfwork->ndev = ndev; in nitrox_pf2vf_mbox_handler()
145 queue_work(ndev->iov.pf2vf_wq, &pfwork->pf2vf_resp); in nitrox_pf2vf_mbox_handler()
147 nitrox_write_csr(ndev, reg_addr, BIT_ULL(i)); in nitrox_pf2vf_mbox_handler()
152 value = nitrox_read_csr(ndev, reg_addr); in nitrox_pf2vf_mbox_handler()
155 vfno = RING_TO_VFNO(i + 64, ndev->iov.max_vf_queues); in nitrox_pf2vf_mbox_handler()
156 vfdev = ndev->iov.vfdev + vfno; in nitrox_pf2vf_mbox_handler()
159 vfdev->msg.value = pf2vf_read_mbox(ndev, vfdev->ring); in nitrox_pf2vf_mbox_handler()
166 pfwork->ndev = ndev; in nitrox_pf2vf_mbox_handler()
168 queue_work(ndev->iov.pf2vf_wq, &pfwork->pf2vf_resp); in nitrox_pf2vf_mbox_handler()
170 nitrox_write_csr(ndev, reg_addr, BIT_ULL(i)); in nitrox_pf2vf_mbox_handler()
174 int nitrox_mbox_init(struct nitrox_device *ndev) in nitrox_mbox_init() argument
179 ndev->iov.vfdev = kcalloc(ndev->iov.num_vfs, in nitrox_mbox_init()
181 if (!ndev->iov.vfdev) in nitrox_mbox_init()
184 for (i = 0; i < ndev->iov.num_vfs; i++) { in nitrox_mbox_init()
185 vfdev = ndev->iov.vfdev + i; in nitrox_mbox_init()
190 ndev->iov.pf2vf_wq = alloc_workqueue("nitrox_pf2vf", 0, 0); in nitrox_mbox_init()
191 if (!ndev->iov.pf2vf_wq) { in nitrox_mbox_init()
192 kfree(ndev->iov.vfdev); in nitrox_mbox_init()
196 enable_pf2vf_mbox_interrupts(ndev); in nitrox_mbox_init()
201 void nitrox_mbox_cleanup(struct nitrox_device *ndev) in nitrox_mbox_cleanup() argument
204 disable_pf2vf_mbox_interrupts(ndev); in nitrox_mbox_cleanup()
206 if (ndev->iov.pf2vf_wq) in nitrox_mbox_cleanup()
207 destroy_workqueue(ndev->iov.pf2vf_wq); in nitrox_mbox_cleanup()
209 kfree(ndev->iov.vfdev); in nitrox_mbox_cleanup()
210 ndev->iov.pf2vf_wq = NULL; in nitrox_mbox_cleanup()
211 ndev->iov.vfdev = NULL; in nitrox_mbox_cleanup()