Lines Matching refs:ndev

34 	struct nitrox_device *ndev;  member
38 static inline u64 pf2vf_read_mbox(struct nitrox_device *ndev, int ring) in pf2vf_read_mbox() argument
43 return nitrox_read_csr(ndev, reg_addr); in pf2vf_read_mbox()
46 static inline void pf2vf_write_mbox(struct nitrox_device *ndev, u64 value, in pf2vf_write_mbox() argument
52 nitrox_write_csr(ndev, reg_addr, value); in pf2vf_write_mbox()
55 static void pf2vf_send_response(struct nitrox_device *ndev, in pf2vf_send_response() argument
64 msg.data = ndev->mode; in pf2vf_send_response()
71 msg.id.chipid = ndev->idx; in pf2vf_send_response()
95 pf2vf_write_mbox(ndev, msg.value, vfdev->ring); in pf2vf_send_response()
106 struct nitrox_device *ndev = pf2vf_resp->ndev; in pf2vf_resp_handler() local
111 pf2vf_send_response(ndev, vfdev); in pf2vf_resp_handler()
121 void nitrox_pf2vf_mbox_handler(struct nitrox_device *ndev) in nitrox_pf2vf_mbox_handler() argument
131 value = nitrox_read_csr(ndev, reg_addr); in nitrox_pf2vf_mbox_handler()
134 vfno = RING_TO_VFNO(i, ndev->iov.max_vf_queues); in nitrox_pf2vf_mbox_handler()
135 vfdev = ndev->iov.vfdev + vfno; in nitrox_pf2vf_mbox_handler()
138 vfdev->msg.value = pf2vf_read_mbox(ndev, vfdev->ring); in nitrox_pf2vf_mbox_handler()
144 pfwork->ndev = ndev; in nitrox_pf2vf_mbox_handler()
146 queue_work(ndev->iov.pf2vf_wq, &pfwork->pf2vf_resp); in nitrox_pf2vf_mbox_handler()
148 nitrox_write_csr(ndev, reg_addr, BIT_ULL(i)); in nitrox_pf2vf_mbox_handler()
153 value = nitrox_read_csr(ndev, reg_addr); in nitrox_pf2vf_mbox_handler()
156 vfno = RING_TO_VFNO(i + 64, ndev->iov.max_vf_queues); in nitrox_pf2vf_mbox_handler()
157 vfdev = ndev->iov.vfdev + vfno; in nitrox_pf2vf_mbox_handler()
160 vfdev->msg.value = pf2vf_read_mbox(ndev, vfdev->ring); in nitrox_pf2vf_mbox_handler()
167 pfwork->ndev = ndev; in nitrox_pf2vf_mbox_handler()
169 queue_work(ndev->iov.pf2vf_wq, &pfwork->pf2vf_resp); in nitrox_pf2vf_mbox_handler()
171 nitrox_write_csr(ndev, reg_addr, BIT_ULL(i)); in nitrox_pf2vf_mbox_handler()
175 int nitrox_mbox_init(struct nitrox_device *ndev) in nitrox_mbox_init() argument
180 ndev->iov.vfdev = kcalloc(ndev->iov.num_vfs, in nitrox_mbox_init()
182 if (!ndev->iov.vfdev) in nitrox_mbox_init()
185 for (i = 0; i < ndev->iov.num_vfs; i++) { in nitrox_mbox_init()
186 vfdev = ndev->iov.vfdev + i; in nitrox_mbox_init()
191 ndev->iov.pf2vf_wq = alloc_workqueue("nitrox_pf2vf", 0, 0); in nitrox_mbox_init()
192 if (!ndev->iov.pf2vf_wq) { in nitrox_mbox_init()
193 kfree(ndev->iov.vfdev); in nitrox_mbox_init()
197 enable_pf2vf_mbox_interrupts(ndev); in nitrox_mbox_init()
202 void nitrox_mbox_cleanup(struct nitrox_device *ndev) in nitrox_mbox_cleanup() argument
205 disable_pf2vf_mbox_interrupts(ndev); in nitrox_mbox_cleanup()
207 if (ndev->iov.pf2vf_wq) in nitrox_mbox_cleanup()
208 destroy_workqueue(ndev->iov.pf2vf_wq); in nitrox_mbox_cleanup()
210 kfree(ndev->iov.vfdev); in nitrox_mbox_cleanup()
211 ndev->iov.pf2vf_wq = NULL; in nitrox_mbox_cleanup()
212 ndev->iov.vfdev = NULL; in nitrox_mbox_cleanup()