Lines Matching refs:vf

102 static void nic_clear_mbx_intr(struct nicpf *nic, int vf, int mbx_reg)  in nic_clear_mbx_intr()  argument
104 nic_reg_write(nic, NIC_PF_MAILBOX_INT + (mbx_reg << 3), BIT_ULL(vf)); in nic_clear_mbx_intr()
107 static u64 nic_get_mbx_addr(int vf) in nic_get_mbx_addr() argument
109 return NIC_PF_VF_0_127_MAILBOX_0_1 + (vf << NIC_VF_NUM_SHIFT); in nic_get_mbx_addr()
116 static void nic_send_msg_to_vf(struct nicpf *nic, int vf, union nic_mbx *mbx) in nic_send_msg_to_vf() argument
118 void __iomem *mbx_addr = nic->reg_base + nic_get_mbx_addr(vf); in nic_send_msg_to_vf()
141 static void nic_mbx_send_ready(struct nicpf *nic, int vf) in nic_mbx_send_ready() argument
148 mbx.nic_cfg.vf_id = vf; in nic_mbx_send_ready()
152 if (vf < MAX_LMAC) { in nic_mbx_send_ready()
153 bgx_idx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_mbx_send_ready()
154 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_mbx_send_ready()
160 mbx.nic_cfg.sqs_mode = (vf >= nic->num_vf_en) ? true : false; in nic_mbx_send_ready()
163 mbx.nic_cfg.loopback_supported = vf < MAX_LMAC; in nic_mbx_send_ready()
165 nic_send_msg_to_vf(nic, vf, &mbx); in nic_mbx_send_ready()
171 static void nic_mbx_send_ack(struct nicpf *nic, int vf) in nic_mbx_send_ack() argument
176 nic_send_msg_to_vf(nic, vf, &mbx); in nic_mbx_send_ack()
183 static void nic_mbx_send_nack(struct nicpf *nic, int vf) in nic_mbx_send_nack() argument
188 nic_send_msg_to_vf(nic, vf, &mbx); in nic_mbx_send_nack()
236 static int nic_update_hw_frs(struct nicpf *nic, int new_frs, int vf) in nic_update_hw_frs() argument
241 vf, NIC_HW_MIN_FRS, NIC_HW_MAX_FRS); in nic_update_hw_frs()
428 static void nic_send_rss_size(struct nicpf *nic, int vf) in nic_send_rss_size() argument
437 nic_send_msg_to_vf(nic, vf, &mbx); in nic_send_rss_size()
618 static void nic_enable_vf(struct nicpf *nic, int vf, bool enable) in nic_enable_vf() argument
622 nic->vf_enabled[vf] = enable; in nic_enable_vf()
624 if (vf >= nic->num_vf_en) in nic_enable_vf()
627 bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_enable_vf()
628 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_enable_vf()
634 static void nic_handle_mbx_intr(struct nicpf *nic, int vf) in nic_handle_mbx_intr() argument
645 nic->mbx_lock[vf] = true; in nic_handle_mbx_intr()
647 mbx_addr = nic_get_mbx_addr(vf); in nic_handle_mbx_intr()
657 __func__, mbx.msg.msg, vf); in nic_handle_mbx_intr()
660 nic_mbx_send_ready(nic, vf); in nic_handle_mbx_intr()
661 if (vf < MAX_LMAC) { in nic_handle_mbx_intr()
662 nic->link[vf] = 0; in nic_handle_mbx_intr()
663 nic->duplex[vf] = 0; in nic_handle_mbx_intr()
664 nic->speed[vf] = 0; in nic_handle_mbx_intr()
673 if (vf >= nic->num_vf_en) { in nic_handle_mbx_intr()
676 cfg |= nic->pqs_vf[vf]; in nic_handle_mbx_intr()
709 if (vf >= nic->num_vf_en) in nic_handle_mbx_intr()
724 nic_send_rss_size(nic, vf); in nic_handle_mbx_intr()
732 nic_enable_vf(nic, vf, true); in nic_handle_mbx_intr()
736 if (vf >= nic->num_vf_en) in nic_handle_mbx_intr()
737 nic->sqs_used[vf - nic->num_vf_en] = false; in nic_handle_mbx_intr()
738 nic->pqs_vf[vf] = 0; in nic_handle_mbx_intr()
739 nic_enable_vf(nic, vf, false); in nic_handle_mbx_intr()
745 nic->nicvf[vf] = mbx.nicvf.nicvf; in nic_handle_mbx_intr()
748 nic_send_pnicvf(nic, vf); in nic_handle_mbx_intr()
761 "Invalid msg from VF%d, msg 0x%x\n", vf, mbx.msg.msg); in nic_handle_mbx_intr()
766 nic_mbx_send_ack(nic, vf); in nic_handle_mbx_intr()
768 nic_mbx_send_nack(nic, vf); in nic_handle_mbx_intr()
770 nic->mbx_lock[vf] = false; in nic_handle_mbx_intr()
776 u8 vf, vf_per_mbx_reg = 64; in nic_mbx_intr_handler() local
780 for (vf = 0; vf < vf_per_mbx_reg; vf++) { in nic_mbx_intr_handler()
781 if (intr & (1ULL << vf)) { in nic_mbx_intr_handler()
783 vf + (mbx * vf_per_mbx_reg)); in nic_mbx_intr_handler()
785 nic_handle_mbx_intr(nic, vf + (mbx * vf_per_mbx_reg)); in nic_mbx_intr_handler()
786 nic_clear_mbx_intr(nic, vf, mbx); in nic_mbx_intr_handler()
952 u8 vf, bgx, lmac; in nic_poll_for_link() local
958 for (vf = 0; vf < nic->num_vf_en; vf++) { in nic_poll_for_link()
960 if (!nic->vf_enabled[vf]) in nic_poll_for_link()
964 bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_poll_for_link()
965 lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); in nic_poll_for_link()
970 if (nic->link[vf] == link.link_up) in nic_poll_for_link()
973 if (!nic->mbx_lock[vf]) { in nic_poll_for_link()
974 nic->link[vf] = link.link_up; in nic_poll_for_link()
975 nic->duplex[vf] = link.duplex; in nic_poll_for_link()
976 nic->speed[vf] = link.speed; in nic_poll_for_link()
982 nic_send_msg_to_vf(nic, vf, &mbx); in nic_poll_for_link()