Lines Matching refs:vport
30 static int hclge_gen_resp_to_vf(struct hclge_vport *vport, in hclge_gen_resp_to_vf() argument
35 struct hclge_dev *hdev = vport->back; in hclge_gen_resp_to_vf()
88 static int hclge_send_mbx_msg(struct hclge_vport *vport, u8 *msg, u16 msg_len, in hclge_send_mbx_msg() argument
92 struct hclge_dev *hdev = vport->back; in hclge_send_mbx_msg()
117 int hclge_inform_reset_assert_to_vf(struct hclge_vport *vport) in hclge_inform_reset_assert_to_vf() argument
119 struct hclge_dev *hdev = vport->back; in hclge_inform_reset_assert_to_vf()
126 dest_vfid = (u8)vport->vport_id; in hclge_inform_reset_assert_to_vf()
138 return hclge_send_mbx_msg(vport, msg_data, sizeof(msg_data), in hclge_inform_reset_assert_to_vf()
168 struct hclge_vport *vport) in hclge_get_ring_chain_from_mbx() argument
171 struct hclge_dev *hdev = vport->back; in hclge_get_ring_chain_from_mbx()
181 if (req->msg.param[i].tqp_index >= vport->nic.kinfo.rss_size) { in hclge_get_ring_chain_from_mbx()
184 vport->nic.kinfo.rss_size - 1); in hclge_get_ring_chain_from_mbx()
192 hclge_get_queue_id(vport->nic.kinfo.tqp in hclge_get_ring_chain_from_mbx()
208 hclge_get_queue_id(vport->nic.kinfo.tqp in hclge_get_ring_chain_from_mbx()
225 static int hclge_map_unmap_ring_to_vf_vector(struct hclge_vport *vport, bool en, in hclge_map_unmap_ring_to_vf_vector() argument
233 ret = hclge_get_ring_chain_from_mbx(req, &ring_chain, vport); in hclge_map_unmap_ring_to_vf_vector()
237 ret = hclge_bind_ring_with_vector(vport, vector_id, en, &ring_chain); in hclge_map_unmap_ring_to_vf_vector()
244 static void hclge_set_vf_promisc_mode(struct hclge_vport *vport, in hclge_set_vf_promisc_mode() argument
247 struct hnae3_handle *handle = &vport->nic; in hclge_set_vf_promisc_mode()
248 struct hclge_dev *hdev = vport->back; in hclge_set_vf_promisc_mode()
250 vport->vf_info.request_uc_en = req->msg.en_uc; in hclge_set_vf_promisc_mode()
251 vport->vf_info.request_mc_en = req->msg.en_mc; in hclge_set_vf_promisc_mode()
252 vport->vf_info.request_bc_en = req->msg.en_bc; in hclge_set_vf_promisc_mode()
260 set_bit(HCLGE_VPORT_STATE_PROMISC_CHANGE, &vport->state); in hclge_set_vf_promisc_mode()
264 static int hclge_set_vf_uc_mac_addr(struct hclge_vport *vport, in hclge_set_vf_uc_mac_addr() argument
270 struct hclge_dev *hdev = vport->back; in hclge_set_vf_uc_mac_addr()
280 if (!is_zero_ether_addr(vport->vf_info.mac) && in hclge_set_vf_uc_mac_addr()
281 !ether_addr_equal(mac_addr, vport->vf_info.mac)) in hclge_set_vf_uc_mac_addr()
287 spin_lock_bh(&vport->mac_list_lock); in hclge_set_vf_uc_mac_addr()
288 status = hclge_update_mac_node_for_dev_addr(vport, old_addr, in hclge_set_vf_uc_mac_addr()
290 spin_unlock_bh(&vport->mac_list_lock); in hclge_set_vf_uc_mac_addr()
293 status = hclge_update_mac_list(vport, HCLGE_MAC_TO_ADD, in hclge_set_vf_uc_mac_addr()
296 status = hclge_update_mac_list(vport, HCLGE_MAC_TO_DEL, in hclge_set_vf_uc_mac_addr()
308 static int hclge_set_vf_mc_mac_addr(struct hclge_vport *vport, in hclge_set_vf_mc_mac_addr() argument
312 struct hclge_dev *hdev = vport->back; in hclge_set_vf_mc_mac_addr()
315 hclge_update_mac_list(vport, HCLGE_MAC_TO_ADD, in hclge_set_vf_mc_mac_addr()
318 hclge_update_mac_list(vport, HCLGE_MAC_TO_DEL, in hclge_set_vf_mc_mac_addr()
330 int hclge_push_vf_port_base_vlan_info(struct hclge_vport *vport, u8 vfid, in hclge_push_vf_port_base_vlan_info() argument
343 return hclge_send_mbx_msg(vport, msg_data, sizeof(msg_data), in hclge_push_vf_port_base_vlan_info()
347 static int hclge_set_vf_vlan_cfg(struct hclge_vport *vport, in hclge_set_vf_vlan_cfg() argument
354 struct hnae3_handle *handle = &vport->nic; in hclge_set_vf_vlan_cfg()
355 struct hclge_dev *hdev = vport->back; in hclge_set_vf_vlan_cfg()
375 vport->port_base_vlan_cfg.state; in hclge_set_vf_vlan_cfg()
379 return hclge_enable_vport_vlan_filter(vport, msg_cmd->enable); in hclge_set_vf_vlan_cfg()
385 static int hclge_set_vf_alive(struct hclge_vport *vport, in hclge_set_vf_alive() argument
392 ret = hclge_vport_start(vport); in hclge_set_vf_alive()
394 hclge_vport_stop(vport); in hclge_set_vf_alive()
399 static void hclge_get_basic_info(struct hclge_vport *vport, in hclge_get_basic_info() argument
402 struct hnae3_knic_private_info *kinfo = &vport->nic.kinfo; in hclge_get_basic_info()
403 struct hnae3_ae_dev *ae_dev = vport->back->ae_dev; in hclge_get_basic_info()
418 static void hclge_get_vf_queue_info(struct hclge_vport *vport, in hclge_get_vf_queue_info() argument
426 struct hclge_dev *hdev = vport->back; in hclge_get_vf_queue_info()
430 &vport->alloc_tqps, sizeof(u16)); in hclge_get_vf_queue_info()
432 &vport->nic.kinfo.rss_size, sizeof(u16)); in hclge_get_vf_queue_info()
438 static void hclge_get_vf_mac_addr(struct hclge_vport *vport, in hclge_get_vf_mac_addr() argument
441 ether_addr_copy(resp_msg->data, vport->vf_info.mac); in hclge_get_vf_mac_addr()
445 static void hclge_get_vf_queue_depth(struct hclge_vport *vport, in hclge_get_vf_queue_depth() argument
452 struct hclge_dev *hdev = vport->back; in hclge_get_vf_queue_depth()
462 static void hclge_get_vf_media_type(struct hclge_vport *vport, in hclge_get_vf_media_type() argument
469 struct hclge_dev *hdev = vport->back; in hclge_get_vf_media_type()
478 int hclge_push_vf_link_status(struct hclge_vport *vport) in hclge_push_vf_link_status() argument
483 struct hclge_dev *hdev = vport->back; in hclge_push_vf_link_status()
489 switch (vport->vf_info.link_state) { in hclge_push_vf_link_status()
509 return hclge_send_mbx_msg(vport, msg_data, sizeof(msg_data), in hclge_push_vf_link_status()
510 HCLGE_MBX_LINK_STAT_CHANGE, vport->vport_id); in hclge_push_vf_link_status()
513 static void hclge_get_link_mode(struct hclge_vport *vport, in hclge_get_link_mode() argument
517 struct hclge_dev *hdev = vport->back; in hclge_get_link_mode()
532 hclge_send_mbx_msg(vport, msg_data, sizeof(msg_data), in hclge_get_link_mode()
536 static int hclge_mbx_reset_vf_queue(struct hclge_vport *vport, in hclge_mbx_reset_vf_queue() argument
541 struct hnae3_handle *handle = &vport->nic; in hclge_mbx_reset_vf_queue()
542 struct hclge_dev *hdev = vport->back; in hclge_mbx_reset_vf_queue()
559 vport->vport_id - HCLGE_VF_VPORT_START_NUM, ret); in hclge_mbx_reset_vf_queue()
564 static int hclge_reset_vf(struct hclge_vport *vport) in hclge_reset_vf() argument
566 struct hclge_dev *hdev = vport->back; in hclge_reset_vf()
569 vport->vport_id - HCLGE_VF_VPORT_START_NUM); in hclge_reset_vf()
571 return hclge_func_reset_cmd(hdev, vport->vport_id); in hclge_reset_vf()
574 static void hclge_vf_keep_alive(struct hclge_vport *vport) in hclge_vf_keep_alive() argument
576 vport->last_active_jiffies = jiffies; in hclge_vf_keep_alive()
579 static int hclge_set_vf_mtu(struct hclge_vport *vport, in hclge_set_vf_mtu() argument
586 return hclge_set_vport_mtu(vport, mtu); in hclge_set_vf_mtu()
589 static void hclge_get_queue_id_in_pf(struct hclge_vport *vport, in hclge_get_queue_id_in_pf() argument
593 struct hnae3_handle *handle = &vport->nic; in hclge_get_queue_id_in_pf()
594 struct hclge_dev *hdev = vport->back; in hclge_get_queue_id_in_pf()
604 qid_in_pf = hclge_covert_handle_qid_global(&vport->nic, queue_id); in hclge_get_queue_id_in_pf()
609 static void hclge_get_rss_key(struct hclge_vport *vport, in hclge_get_rss_key() argument
614 struct hclge_dev *hdev = vport->back; in hclge_get_rss_key()
623 sizeof(vport[0].rss_hash_key)) { in hclge_get_rss_key()
631 &hdev->vport[0].rss_hash_key[index * HCLGE_RSS_MBX_RESP_LEN], in hclge_get_rss_key()
678 static void hclge_handle_vf_tbl(struct hclge_vport *vport, in hclge_handle_vf_tbl() argument
681 struct hclge_dev *hdev = vport->back; in hclge_handle_vf_tbl()
686 hclge_rm_vport_all_mac_table(vport, true, HCLGE_MAC_ADDR_UC); in hclge_handle_vf_tbl()
687 hclge_rm_vport_all_mac_table(vport, true, HCLGE_MAC_ADDR_MC); in hclge_handle_vf_tbl()
688 hclge_rm_vport_all_vlan_table(vport, true); in hclge_handle_vf_tbl()
700 struct hclge_vport *vport; in hclge_mbx_handler() local
729 vport = &hdev->vport[req->mbx_src_vfid]; in hclge_mbx_handler()
738 ret = hclge_map_unmap_ring_to_vf_vector(vport, true, in hclge_mbx_handler()
742 ret = hclge_map_unmap_ring_to_vf_vector(vport, false, in hclge_mbx_handler()
746 hclge_set_vf_promisc_mode(vport, req); in hclge_mbx_handler()
749 ret = hclge_set_vf_uc_mac_addr(vport, req); in hclge_mbx_handler()
756 ret = hclge_set_vf_mc_mac_addr(vport, req); in hclge_mbx_handler()
763 ret = hclge_set_vf_vlan_cfg(vport, req, &resp_msg); in hclge_mbx_handler()
770 ret = hclge_set_vf_alive(vport, req); in hclge_mbx_handler()
777 hclge_get_vf_queue_info(vport, &resp_msg); in hclge_mbx_handler()
780 hclge_get_vf_queue_depth(vport, &resp_msg); in hclge_mbx_handler()
783 hclge_get_basic_info(vport, &resp_msg); in hclge_mbx_handler()
786 ret = hclge_push_vf_link_status(vport); in hclge_mbx_handler()
793 ret = hclge_mbx_reset_vf_queue(vport, req, &resp_msg); in hclge_mbx_handler()
796 ret = hclge_reset_vf(vport); in hclge_mbx_handler()
799 hclge_vf_keep_alive(vport); in hclge_mbx_handler()
802 ret = hclge_set_vf_mtu(vport, req); in hclge_mbx_handler()
808 hclge_get_queue_id_in_pf(vport, req, &resp_msg); in hclge_mbx_handler()
811 hclge_get_rss_key(vport, req, &resp_msg); in hclge_mbx_handler()
814 hclge_get_link_mode(vport, req); in hclge_mbx_handler()
819 hclge_rm_vport_all_mac_table(vport, is_del, in hclge_mbx_handler()
821 hclge_rm_vport_all_mac_table(vport, is_del, in hclge_mbx_handler()
823 hclge_rm_vport_all_vlan_table(vport, is_del); in hclge_mbx_handler()
826 hclge_get_vf_media_type(vport, &resp_msg); in hclge_mbx_handler()
832 hclge_get_vf_mac_addr(vport, &resp_msg); in hclge_mbx_handler()
838 hclge_handle_vf_tbl(vport, req); in hclge_mbx_handler()
851 hclge_gen_resp_to_vf(vport, req, &resp_msg); in hclge_mbx_handler()