Lines Matching refs:oct

34 static void octep_pfvf_validate_version(struct octep_device *oct,  u32 vf_id,
40 dev_dbg(&oct->pdev->dev, "VF id:%d VF version:%d PF version:%d\n",
47 oct->vf_info[vf_id].mbox_version = rsp->s_version.version;
48 dev_dbg(&oct->pdev->dev, "VF id:%d negotiated VF version:%d\n",
49 vf_id, oct->vf_info[vf_id].mbox_version);
54 static void octep_pfvf_get_link_status(struct octep_device *oct, u32 vf_id,
60 status = octep_ctrl_net_get_link_status(oct, vf_id);
63 dev_err(&oct->pdev->dev, "Get VF link status failed via host control Mbox\n");
70 static void octep_pfvf_set_link_status(struct octep_device *oct, u32 vf_id,
76 err = octep_ctrl_net_set_link_status(oct, vf_id, cmd.s_link_status.status, true);
79 dev_err(&oct->pdev->dev, "Set VF link status failed via host control Mbox\n");
85 static void octep_pfvf_set_rx_state(struct octep_device *oct, u32 vf_id,
91 err = octep_ctrl_net_set_rx_state(oct, vf_id, cmd.s_link_state.state, true);
94 dev_err(&oct->pdev->dev, "Set VF Rx link state failed via host control Mbox\n");
100 static int octep_send_notification(struct octep_device *oct, u32 vf_id,
107 if (pfvf_cmd_versions[cmd.s.opcode] > oct->vf_info[vf_id].mbox_version) {
108 dev_dbg(&oct->pdev->dev, "VF Mbox doesn't support Notification:%d on VF ver:%d\n",
109 cmd.s.opcode, oct->vf_info[vf_id].mbox_version);
113 max_rings_per_vf = CFG_GET_MAX_RPVF(oct->conf);
115 if (!oct->mbox[vf_mbox_queue]) {
116 dev_err(&oct->pdev->dev, "Notif obtained for bad mbox vf %d\n", vf_id);
119 mbox = oct->mbox[vf_mbox_queue];
128 static void octep_pfvf_set_mtu(struct octep_device *oct, u32 vf_id,
134 err = octep_ctrl_net_set_mtu(oct, vf_id, cmd.s_set_mtu.mtu, true);
137 dev_err(&oct->pdev->dev, "Set VF MTU failed via host control Mbox\n");
143 static void octep_pfvf_get_mtu(struct octep_device *oct, u32 vf_id,
147 int max_rx_pktlen = oct->netdev->max_mtu + (ETH_HLEN + ETH_FCS_LEN);
153 static void octep_pfvf_set_mac_addr(struct octep_device *oct, u32 vf_id,
159 err = octep_ctrl_net_set_mac_addr(oct, vf_id, cmd.s_set_mac.mac_addr, true);
162 dev_err(&oct->pdev->dev, "Set VF MAC address failed via host control Mbox\n");
168 static void octep_pfvf_get_mac_addr(struct octep_device *oct, u32 vf_id,
174 err = octep_ctrl_net_get_mac_addr(oct, vf_id, rsp->s_set_mac.mac_addr);
177 dev_err(&oct->pdev->dev, "Get VF MAC address failed via host control Mbox\n");
183 static void octep_pfvf_dev_remove(struct octep_device *oct, u32 vf_id,
189 err = octep_ctrl_net_dev_remove(oct, vf_id);
192 dev_err(&oct->pdev->dev, "Failed to acknowledge fw of vf %d removal\n",
199 static void octep_pfvf_get_fw_info(struct octep_device *oct, u32 vf_id,
206 err = octep_ctrl_net_get_info(oct, vf_id, &fw_info);
209 dev_err(&oct->pdev->dev, "Get VF info failed via host control Mbox\n");
221 static void octep_pfvf_set_offloads(struct octep_device *oct, u32 vf_id,
231 err = octep_ctrl_net_set_offloads(oct, vf_id, &offloads, true);
234 dev_err(&oct->pdev->dev, "Set VF offloads failed via host control Mbox\n");
240 int octep_setup_pfvf_mbox(struct octep_device *oct)
245 num_vfs = oct->conf->sriov_cfg.active_vfs;
246 rings_per_vf = oct->conf->sriov_cfg.max_rings_per_vf;
250 oct->mbox[ring] = vzalloc(sizeof(*oct->mbox[ring]));
252 if (!oct->mbox[ring])
255 memset(oct->mbox[ring], 0, sizeof(struct octep_mbox));
256 memset(&oct->vf_info[i], 0, sizeof(struct octep_pfvf_info));
257 mutex_init(&oct->mbox[ring]->lock);
258 INIT_WORK(&oct->mbox[ring]->wk.work, octep_pfvf_mbox_work);
259 oct->mbox[ring]->wk.ctxptr = oct->mbox[ring];
260 oct->mbox[ring]->oct = oct;
261 oct->mbox[ring]->vf_id = i;
262 oct->hw_ops.setup_mbox_regs(oct, ring);
270 cancel_work_sync(&oct->mbox[ring]->wk.work);
271 mutex_destroy(&oct->mbox[ring]->lock);
272 vfree(oct->mbox[ring]);
273 oct->mbox[ring] = NULL;
278 void octep_delete_pfvf_mbox(struct octep_device *oct)
280 int rings_per_vf = oct->conf->sriov_cfg.max_rings_per_vf;
281 int num_vfs = oct->conf->sriov_cfg.active_vfs;
286 if (!oct->mbox[ring])
289 if (work_pending(&oct->mbox[ring]->wk.work))
290 cancel_work_sync(&oct->mbox[ring]->wk.work);
292 mutex_destroy(&oct->mbox[ring]->lock);
293 vfree(oct->mbox[ring]);
294 oct->mbox[ring] = NULL;
298 static void octep_pfvf_pf_get_data(struct octep_device *oct,
322 err = octep_ctrl_net_get_link_info(oct, vf_id, &link_info);
335 err = octep_ctrl_net_get_if_stats(oct, vf_id, &rx_stats, &tx_stats);
367 void octep_pfvf_notify(struct octep_device *oct, struct octep_ctrl_mbox_msg *msg)
385 octep_send_notification(oct, msg->hdr.s.vf_idx, notif);
394 struct octep_device *oct = NULL;
398 oct = (struct octep_device *)mbox->oct;
407 octep_pfvf_validate_version(oct, vf_id, cmd, &rsp);
410 octep_pfvf_get_link_status(oct, vf_id, cmd, &rsp);
413 octep_pfvf_set_link_status(oct, vf_id, cmd, &rsp);
416 octep_pfvf_set_rx_state(oct, vf_id, cmd, &rsp);
419 octep_pfvf_set_mtu(oct, vf_id, cmd, &rsp);
422 octep_pfvf_set_mac_addr(oct, vf_id, cmd, &rsp);
425 octep_pfvf_get_mac_addr(oct, vf_id, cmd, &rsp);
429 octep_pfvf_pf_get_data(oct, mbox, vf_id, cmd, &rsp);
432 octep_pfvf_get_mtu(oct, vf_id, cmd, &rsp);
435 octep_pfvf_dev_remove(oct, vf_id, cmd, &rsp);
438 octep_pfvf_get_fw_info(oct, vf_id, cmd, &rsp);
441 octep_pfvf_set_offloads(oct, vf_id, cmd, &rsp);
444 dev_err(&oct->pdev->dev, "PF-VF mailbox: invalid opcode %d\n", cmd.s.opcode);