Lines Matching refs:mbox

104 	struct octep_mbox *mbox;  in octep_send_notification()  local
115 if (!oct->mbox[vf_mbox_queue]) { in octep_send_notification()
119 mbox = oct->mbox[vf_mbox_queue]; in octep_send_notification()
121 mutex_lock(&mbox->lock); in octep_send_notification()
122 writeq(cmd.u64, mbox->pf_vf_data_reg); in octep_send_notification()
123 mutex_unlock(&mbox->lock); in octep_send_notification()
250 oct->mbox[ring] = vzalloc(sizeof(*oct->mbox[ring])); in octep_setup_pfvf_mbox()
252 if (!oct->mbox[ring]) in octep_setup_pfvf_mbox()
255 memset(oct->mbox[ring], 0, sizeof(struct octep_mbox)); in octep_setup_pfvf_mbox()
257 mutex_init(&oct->mbox[ring]->lock); in octep_setup_pfvf_mbox()
258 INIT_WORK(&oct->mbox[ring]->wk.work, octep_pfvf_mbox_work); in octep_setup_pfvf_mbox()
259 oct->mbox[ring]->wk.ctxptr = oct->mbox[ring]; in octep_setup_pfvf_mbox()
260 oct->mbox[ring]->oct = oct; in octep_setup_pfvf_mbox()
261 oct->mbox[ring]->vf_id = i; in octep_setup_pfvf_mbox()
270 cancel_work_sync(&oct->mbox[ring]->wk.work); in octep_setup_pfvf_mbox()
271 mutex_destroy(&oct->mbox[ring]->lock); in octep_setup_pfvf_mbox()
272 vfree(oct->mbox[ring]); in octep_setup_pfvf_mbox()
273 oct->mbox[ring] = NULL; in octep_setup_pfvf_mbox()
286 if (!oct->mbox[ring]) in octep_delete_pfvf_mbox()
289 if (work_pending(&oct->mbox[ring]->wk.work)) in octep_delete_pfvf_mbox()
290 cancel_work_sync(&oct->mbox[ring]->wk.work); in octep_delete_pfvf_mbox()
292 mutex_destroy(&oct->mbox[ring]->lock); in octep_delete_pfvf_mbox()
293 vfree(oct->mbox[ring]); in octep_delete_pfvf_mbox()
294 oct->mbox[ring] = NULL; in octep_delete_pfvf_mbox()
299 struct octep_mbox *mbox, int vf_id, in octep_pfvf_pf_get_data() argument
313 mbox->config_data_index = 0; in octep_pfvf_pf_get_data()
314 memset(mbox->config_data, 0, MAX_VF_PF_MBOX_DATA_SIZE); in octep_pfvf_pf_get_data()
324 mbox->message_len = sizeof(link_info); in octep_pfvf_pf_get_data()
325 *((int32_t *)rsp->s_data.data) = mbox->message_len; in octep_pfvf_pf_get_data()
326 memcpy(mbox->config_data, (u8 *)&link_info, sizeof(link_info)); in octep_pfvf_pf_get_data()
337 mbox->message_len = sizeof(rx_stats) + sizeof(tx_stats); in octep_pfvf_pf_get_data()
338 *((int32_t *)rsp->s_data.data) = mbox->message_len; in octep_pfvf_pf_get_data()
339 memcpy(mbox->config_data, (u8 *)&rx_stats, sizeof(rx_stats)); in octep_pfvf_pf_get_data()
340 memcpy(mbox->config_data + sizeof(rx_stats), (u8 *)&tx_stats, in octep_pfvf_pf_get_data()
349 *((int32_t *)rsp->s_data.data) = mbox->message_len; in octep_pfvf_pf_get_data()
353 if (mbox->message_len > OCTEP_PFVF_MBOX_MAX_DATA_SIZE) in octep_pfvf_pf_get_data()
356 length = mbox->message_len; in octep_pfvf_pf_get_data()
358 mbox->message_len -= length; in octep_pfvf_pf_get_data()
362 mbox->config_data[mbox->config_data_index]; in octep_pfvf_pf_get_data()
363 mbox->config_data_index++; in octep_pfvf_pf_get_data()
393 struct octep_mbox *mbox = NULL; in octep_pfvf_mbox_work() local
397 mbox = (struct octep_mbox *)wk->ctxptr; in octep_pfvf_mbox_work()
398 oct = (struct octep_device *)mbox->oct; in octep_pfvf_mbox_work()
399 vf_id = mbox->vf_id; in octep_pfvf_mbox_work()
401 mutex_lock(&mbox->lock); in octep_pfvf_mbox_work()
402 cmd.u64 = readq(mbox->vf_pf_data_reg); in octep_pfvf_mbox_work()
429 octep_pfvf_pf_get_data(oct, mbox, vf_id, cmd, &rsp); in octep_pfvf_mbox_work()
448 writeq(rsp.u64, mbox->vf_pf_data_reg); in octep_pfvf_mbox_work()
449 mutex_unlock(&mbox->lock); in octep_pfvf_mbox_work()