Lines Matching refs:pdev

9 extern void lm_int_igu_ack_sb(lm_device_t *pdev, u8_t rss_id, u8_t storm_id, u16_t sb_index, u8_t i…
25 u8_t lm_vf_is_lamac_restricted(struct _lm_device_t *pdev) in lm_vf_is_lamac_restricted() argument
27 …return (pdev->vars.is_pf_provides_mac && (pdev->vars.is_pf_restricts_lamac || pdev->vars.is_pf_rej… in lm_vf_is_lamac_restricted()
30 static u8_t lm_vf_check_mac_restriction(struct _lm_device_t *pdev, struct pfvf_acquire_resp_tlv *pf… in lm_vf_check_mac_restriction() argument
35 static lm_status_t lm_pf_get_queues_number(struct _lm_device_t *pdev, lm_vf_info_t *vf_info, u8_t *… in lm_pf_get_queues_number() argument
37 return mm_pf_get_queues_number(pdev, vf_info, num_rxqs, num_txqs); in lm_pf_get_queues_number()
40 static lm_status_t lm_pf_get_filters_number(struct _lm_device_t *pdev, lm_vf_info_t *vf_info, in lm_pf_get_filters_number() argument
45 … return mm_pf_get_filters_number(pdev, vf_info, num_mac_filters, num_vlan_filters, num_mc_filters); in lm_pf_get_filters_number()
48 static lm_status_t lm_pf_get_macs(struct _lm_device_t *pdev, lm_vf_info_t *vf_info, u8_t *permanent… in lm_pf_get_macs() argument
50 return mm_pf_get_macs(pdev, vf_info, permanent_mac_addr, current_mac_addr); in lm_pf_get_macs()
53 static u8 lm_pf_vf_check_compatibility(struct _lm_device_t *pdev, in lm_pf_vf_check_compatibility() argument
94 static lm_status_t lm_pf_vf_fill_acquire_response(struct _lm_device_t *pdev, lm_vf_info_t *vf_info) in lm_pf_vf_fill_acquire_response() argument
105 …DbgBreakIf(!(pdev && vf_info && vf_info->pf_vf_response.request_virt_addr && vf_info->pf_vf_respon… in lm_pf_vf_fill_acquire_response()
110 status = lm_pf_vf_check_compatibility(pdev, vf_info, request); in lm_pf_vf_fill_acquire_response()
117 response->pfdev_info.chip_num = pdev->hw_info.chip_id;//CHIP_NUM(pdev); in lm_pf_vf_fill_acquire_response()
119 if (pdev->params.debug_sriov_vfs) in lm_pf_vf_fill_acquire_response()
140 lm_pf_release_vf_igu_block(pdev, vf_info->vf_chains[i].igu_sb_id); in lm_pf_vf_fill_acquire_response()
141 lm_pf_release_separate_vf_chain_resources(pdev, vf_info->relative_vf_id, i); in lm_pf_vf_fill_acquire_response()
154 lm_pf_get_filters_number(pdev,vf_info, in lm_pf_vf_fill_acquire_response()
163 … lm_pf_get_macs(pdev,vf_info, response->resc.permanent_mac_addr, response->resc.current_mac_addr); in lm_pf_vf_fill_acquire_response()
165 if (pdev->params.sriov_inc_mac) in lm_pf_vf_fill_acquire_response()
167 u8_t mac_addition = (u8_t)pdev->params.sriov_inc_mac; in lm_pf_vf_fill_acquire_response()
176 static lm_status_t lm_pf_vf_fill_init_vf_response(struct _lm_device_t *pdev, lm_vf_info_t *vf_info) in lm_pf_vf_fill_init_vf_response() argument
186 …DbgBreakIf(!(pdev && vf_info && vf_info->pf_vf_response.request_virt_addr && vf_info->pf_vf_respon… in lm_pf_vf_fill_init_vf_response()
193 MM_ACQUIRE_VFS_STATS_LOCK(pdev); in lm_pf_vf_fill_init_vf_response()
201 MM_RELEASE_VFS_STATS_LOCK(pdev); in lm_pf_vf_fill_init_vf_response()
204 lm_pf_init_vf_non_def_sb(pdev, vf_info, sb_idx, request->sb_addr[sb_idx]); in lm_pf_vf_fill_init_vf_response()
209 …REG_WR(PFDEV(pdev),XSEM_REG_FAST_MEMORY + XSTORM_VF_SPQ_DATA_OFFSET(vf_info->abs_vf_id) + i*sizeof… in lm_pf_vf_fill_init_vf_response()
212 … REG_WR(PFDEV(pdev),XSEM_REG_FAST_MEMORY + (XSTORM_VF_SPQ_PAGE_BASE_OFFSET(vf_info->abs_vf_id)),0); in lm_pf_vf_fill_init_vf_response()
213 …REG_WR(PFDEV(pdev),XSEM_REG_FAST_MEMORY + (XSTORM_VF_SPQ_PAGE_BASE_OFFSET(vf_info->abs_vf_id)) + 4… in lm_pf_vf_fill_init_vf_response()
214 REG_WR(PFDEV(pdev),XSEM_REG_FAST_MEMORY + (XSTORM_VF_SPQ_PROD_OFFSET(vf_info->abs_vf_id)),0); in lm_pf_vf_fill_init_vf_response()
219 REG_WR(PFDEV(pdev), reg, val); in lm_pf_vf_fill_init_vf_response()
233 …LM_INTMEM_WRITE8(PFDEV(pdev), XSTORM_VF_TO_PF_OFFSET(function_fw_id), FUNC_ID(pdev), BAR_XSTRORM_I… in lm_pf_vf_fill_init_vf_response()
234 …LM_INTMEM_WRITE8(PFDEV(pdev), CSTORM_VF_TO_PF_OFFSET(function_fw_id), FUNC_ID(pdev), BAR_CSTRORM_I… in lm_pf_vf_fill_init_vf_response()
235 …LM_INTMEM_WRITE8(PFDEV(pdev), TSTORM_VF_TO_PF_OFFSET(function_fw_id), FUNC_ID(pdev), BAR_TSTRORM_I… in lm_pf_vf_fill_init_vf_response()
236 …LM_INTMEM_WRITE8(PFDEV(pdev), USTORM_VF_TO_PF_OFFSET(function_fw_id), FUNC_ID(pdev), BAR_USTRORM_I… in lm_pf_vf_fill_init_vf_response()
238 LM_INTMEM_WRITE8(PFDEV(pdev), XSTORM_FUNC_EN_OFFSET(function_fw_id), 1, BAR_XSTRORM_INTMEM); in lm_pf_vf_fill_init_vf_response()
239 LM_INTMEM_WRITE8(PFDEV(pdev), CSTORM_FUNC_EN_OFFSET(function_fw_id), 1, BAR_CSTRORM_INTMEM); in lm_pf_vf_fill_init_vf_response()
240 LM_INTMEM_WRITE8(PFDEV(pdev), TSTORM_FUNC_EN_OFFSET(function_fw_id), 1, BAR_TSTRORM_INTMEM); in lm_pf_vf_fill_init_vf_response()
241 LM_INTMEM_WRITE8(PFDEV(pdev), USTORM_FUNC_EN_OFFSET(function_fw_id), 1, BAR_USTRORM_INTMEM); in lm_pf_vf_fill_init_vf_response()
243 lm_status = lm_pf_enable_vf_igu_int(pdev, vf_info->abs_vf_id); in lm_pf_vf_fill_init_vf_response()
256 static lm_status_t lm_pf_vf_fill_setup_q_response(struct _lm_device_t *pdev, lm_vf_info_t *vf_info) in lm_pf_vf_fill_setup_q_response() argument
270 …DbgBreakIf(!(pdev && vf_info && vf_info->pf_vf_response.request_virt_addr && vf_info->pf_vf_respon… in lm_pf_vf_fill_setup_q_response()
285 …vf_info->vf_chains[q_id].tpa_ramrod_data_virt = mm_alloc_phys_mem(pdev, mem_size, &vf_info->vf_cha… in lm_pf_vf_fill_setup_q_response()
300 lm_status = lm_pf_init_vf_client_init_data(pdev, vf_info, q_id, rxq_params, txq_params); in lm_pf_vf_fill_setup_q_response()
302 vf_cid_of_pf = LM_VF_Q_ID_TO_PF_CID(pdev, vf_info, q_id); in lm_pf_vf_fill_setup_q_response()
303 lm_init_connection_context(pdev, vf_cid_of_pf, 0); in lm_pf_vf_fill_setup_q_response()
306 lm_set_con_state(pdev, vf_cid_of_pf, LM_CON_STATE_OPEN_SENT); in lm_pf_vf_fill_setup_q_response()
308 lm_sq_post(pdev, in lm_pf_vf_fill_setup_q_response()
313 pdev->client_info[LM_SW_VF_CLI_ID(vf_info,q_id)].client_init_data_phys.as_u64); in lm_pf_vf_fill_setup_q_response()
315 lm_status = lm_eth_wait_state_change(pdev, LM_CON_STATE_OPEN, vf_cid_of_pf); in lm_pf_vf_fill_setup_q_response()
323 MM_ACQUIRE_VFS_STATS_LOCK(pdev); in lm_pf_vf_fill_setup_q_response()
333 MM_RELEASE_VFS_STATS_LOCK(pdev); in lm_pf_vf_fill_setup_q_response()
346 static lm_status_t lm_pf_vf_fill_set_q_filters_response(struct _lm_device_t *pdev, lm_vf_info_t *vf… in lm_pf_vf_fill_set_q_filters_response() argument
359 …lm_status = lm_set_rx_mask(pdev, LM_SW_VF_CLI_ID(vf_info,request->vf_qid), LM_RX_MASK_ACCEPT_NONE,… in lm_pf_vf_fill_set_q_filters_response()
362 … lm_status = lm_wait_set_rx_mask_done(pdev, LM_SW_VF_CLI_ID(vf_info,request->vf_qid)); in lm_pf_vf_fill_set_q_filters_response()
372 …lm_status = lm_set_rx_mask(pdev, LM_SW_VF_CLI_ID(vf_info,request->vf_qid), LM_RX_MASK_PROMISCUOUS_… in lm_pf_vf_fill_set_q_filters_response()
375 … lm_status = lm_wait_set_rx_mask_done(pdev, LM_SW_VF_CLI_ID(vf_info,request->vf_qid)); in lm_pf_vf_fill_set_q_filters_response()
398 … lm_status = lm_set_rx_mask(pdev, LM_SW_VF_CLI_ID(vf_info,request->vf_qid), rx_mask, NULL); in lm_pf_vf_fill_set_q_filters_response()
401 … lm_status = lm_wait_set_rx_mask_done(pdev, LM_SW_VF_CLI_ID(vf_info,request->vf_qid)); in lm_pf_vf_fill_set_q_filters_response()
416 lm_status = lm_set_mac_addr(pdev, request->filters[mac_idx].dest_mac, in lm_pf_vf_fill_set_q_filters_response()
419 … lm_status = lm_wait_set_mac_done(pdev, LM_SW_VF_CLI_ID(vf_info,request->vf_qid)); in lm_pf_vf_fill_set_q_filters_response()
437 static lm_status_t lm_pf_vf_fill_teardown_q_response(struct _lm_device_t *pdev, lm_vf_info_t *vf_in… in lm_pf_vf_fill_teardown_q_response() argument
451 MM_ACQUIRE_VFS_STATS_LOCK(pdev); in lm_pf_vf_fill_teardown_q_response()
457 MM_RELEASE_VFS_STATS_LOCK(pdev); in lm_pf_vf_fill_teardown_q_response()
458 …DbgMessage(pdev, WARN, "lm_pf_vf_fill_teardown_q_response for VF[%d]: stats_cnt: %d\n",vf_info->re… in lm_pf_vf_fill_teardown_q_response()
460 lm_status = lm_pf_vf_wait_for_stats_ready(pdev, vf_info); in lm_pf_vf_fill_teardown_q_response()
461 …DbgMessage(pdev, WARN, "lm_pf_vf_fill_teardown_q_response for VF[%d]: stats_cnt: %d\n",vf_info->re… in lm_pf_vf_fill_teardown_q_response()
472 cid = LM_VF_Q_ID_TO_PF_CID(pdev, vf_info, q_id); in lm_pf_vf_fill_teardown_q_response()
478 lm_set_con_state(pdev, cid, LM_CON_STATE_CLOSE); in lm_pf_vf_fill_teardown_q_response()
482 lm_status = lm_close_eth_con(pdev, cid, TRUE); in lm_pf_vf_fill_teardown_q_response()
497 static lm_status_t lm_pf_vf_fill_close_vf_response(struct _lm_device_t *pdev, lm_vf_info_t *vf_info) in lm_pf_vf_fill_close_vf_response() argument
511 MM_ACQUIRE_VFS_STATS_LOCK(pdev); in lm_pf_vf_fill_close_vf_response()
517 MM_RELEASE_VFS_STATS_LOCK(pdev); in lm_pf_vf_fill_close_vf_response()
519 lm_status = lm_pf_vf_wait_for_stats_ready(pdev, vf_info); in lm_pf_vf_fill_close_vf_response()
527 cid = LM_VF_Q_ID_TO_PF_CID(pdev, vf_info, q_idx); in lm_pf_vf_fill_close_vf_response()
531 lm_set_con_state(pdev, cid, LM_CON_STATE_CLOSE); in lm_pf_vf_fill_close_vf_response()
535 lm_status = lm_close_eth_con(pdev, cid, TRUE); in lm_pf_vf_fill_close_vf_response()
540 lm_pf_disable_vf_igu_int(pdev, vf_info->abs_vf_id); in lm_pf_vf_fill_close_vf_response()
546 LM_INTMEM_WRITE8(PFDEV(pdev), XSTORM_FUNC_EN_OFFSET(function_fw_id), 0, BAR_XSTRORM_INTMEM); in lm_pf_vf_fill_close_vf_response()
547 LM_INTMEM_WRITE8(PFDEV(pdev), CSTORM_FUNC_EN_OFFSET(function_fw_id), 0, BAR_CSTRORM_INTMEM); in lm_pf_vf_fill_close_vf_response()
548 LM_INTMEM_WRITE8(PFDEV(pdev), TSTORM_FUNC_EN_OFFSET(function_fw_id), 0, BAR_TSTRORM_INTMEM); in lm_pf_vf_fill_close_vf_response()
549 LM_INTMEM_WRITE8(PFDEV(pdev), USTORM_FUNC_EN_OFFSET(function_fw_id), 0, BAR_USTRORM_INTMEM); in lm_pf_vf_fill_close_vf_response()
552 lm_clear_non_def_status_block(pdev, LM_FW_VF_SB_ID(vf_info, sb_idx)); in lm_pf_vf_fill_close_vf_response()
558 REG_WR(PFDEV(pdev), reg, val); in lm_pf_vf_fill_close_vf_response()
573 static lm_status_t lm_pf_vf_fill_release_vf_response(struct _lm_device_t *pdev, lm_vf_info_t *vf_in… in lm_pf_vf_fill_release_vf_response() argument
586 static lm_status_t lm_pf_vf_fill_update_rss_response(struct _lm_device_t *pdev, lm_vf_info_t *vf_in… in lm_pf_vf_fill_update_rss_response() argument
610 lm_status = ecore_config_rss(pdev, rss_params); in lm_pf_vf_fill_update_rss_response()
620 lm_status_t lm_pf_vf_fill_update_rsc_response(struct _lm_device_t *pdev, lm_vf_info_t *vf_info) in lm_pf_vf_fill_update_rsc_response() argument
633 …lm_status = lm_pf_tpa_send_vf_ramrod(pdev, vf_info, q_idx, (u8_t)request->rsc_ipv4_state, (u8_t)re… in lm_pf_vf_fill_update_rsc_response()
641 lm_status = lm_wait_state_change(pdev, &vf_info->vf_tpa_info.ramrod_recv_cnt, 0); in lm_pf_vf_fill_update_rsc_response()
650 lm_status_t lm_pf_process_standard_request(struct _lm_device_t *pdev, lm_vf_info_t *vf_info) in lm_pf_process_standard_request() argument
656 …DbgBreakIf(!(pdev && IS_CHANNEL_VIRT_MODE_MASTER_PFDEV(pdev) && vf_info && (vf_info->pf_vf_respons… in lm_pf_process_standard_request()
657 …DbgMessage(pdev, WARNvf, "lm_pf_process_standard_request %d for VF[%d]\n",requst_hdr->opcode,vf_in… in lm_pf_process_standard_request()
688 lm_status = lm_pf_vf_fill_acquire_response(pdev,vf_info); in lm_pf_process_standard_request()
707 lm_status = lm_pf_vf_fill_init_vf_response(pdev,vf_info); in lm_pf_process_standard_request()
721 lm_status = lm_pf_vf_fill_setup_q_response(pdev,vf_info); in lm_pf_process_standard_request()
730 lm_status = lm_pf_vf_fill_set_q_filters_response(pdev,vf_info); in lm_pf_process_standard_request()
760 lm_status = lm_pf_vf_fill_teardown_q_response(pdev,vf_info); in lm_pf_process_standard_request()
766 DbgMessage(pdev, FATAL, "VF[%d] already closesd!\n",vf_info->relative_vf_id); in lm_pf_process_standard_request()
775 lm_status = lm_pf_vf_fill_close_vf_response(pdev,vf_info); in lm_pf_process_standard_request()
789 lm_status = lm_pf_vf_fill_release_vf_response(pdev,vf_info); in lm_pf_process_standard_request()
798 lm_status = lm_pf_vf_fill_update_rss_response(pdev,vf_info); in lm_pf_process_standard_request()
807 lm_status = lm_pf_vf_fill_update_rsc_response(pdev,vf_info); in lm_pf_process_standard_request()
820 lm_status_t lm_pf_notify_standard_request_ready(struct _lm_device_t *pdev, lm_vf_info_t *vf_info, u… in lm_pf_notify_standard_request_ready() argument
826 …DbgBreakIf(!(pdev && IS_CHANNEL_VIRT_MODE_MASTER_PFDEV(pdev) && vf_info && (vf_info->pf_vf_respons… in lm_pf_notify_standard_request_ready()
827 DbgMessage(pdev, WARNvf, "lm_pf_process_standard_request\n"); in lm_pf_notify_standard_request_ready()
878 static lm_status_t lm_vf_pf_send_message_to_hw_channel(struct _lm_device_t * pdev, lm_vf_pf_message… in lm_vf_pf_send_message_to_hw_channel() argument
882 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev))); in lm_vf_pf_send_message_to_hw_channel()
884 DbgMessage(pdev, WARNvf, "lm_vf_pf_channel_send\n"); in lm_vf_pf_send_message_to_hw_channel()
889 message_phys_addr = &pdev->vars.vf_pf_mess.message_phys_addr; in lm_vf_pf_send_message_to_hw_channel()
892 VF_REG_WR(pdev, (VF_BAR0_CSDM_GLOBAL_OFFSET + in lm_vf_pf_send_message_to_hw_channel()
898 VF_REG_WR(pdev, (VF_BAR0_CSDM_GLOBAL_OFFSET + in lm_vf_pf_send_message_to_hw_channel()
904 LM_INTMEM_WRITE8(pdev,(OFFSETOF(struct cstorm_vf_zone_data,trigger) in lm_vf_pf_send_message_to_hw_channel()
918 lm_status_t lm_vf_pf_send_request_to_sw_channel(struct _lm_device_t * pdev, lm_vf_pf_message_t * me… in lm_vf_pf_send_request_to_sw_channel() argument
921 struct vf_pf_msg_hdr *hdr = (struct vf_pf_msg_hdr*)pdev->vars.vf_pf_mess.message_virt_addr; in lm_vf_pf_send_request_to_sw_channel()
925 … lm_status = mm_vf_pf_write_block_to_sw_channel(pdev, VF_TO_PF_STANDARD_BLOCK_ID, buffer, length); in lm_vf_pf_send_request_to_sw_channel()
929 lm_status_t lm_vf_pf_recv_response_from_sw_channel(struct _lm_device_t * pdev, lm_vf_pf_message_t *… in lm_vf_pf_recv_response_from_sw_channel() argument
932 struct vf_pf_msg_hdr *hdr = (struct vf_pf_msg_hdr*)pdev->vars.vf_pf_mess.message_virt_addr; in lm_vf_pf_recv_response_from_sw_channel()
946 …lm_status = mm_vf_pf_read_block_from_sw_channel(pdev, VF_TO_PF_STANDARD_BLOCK_ID, (u8_t*)buffer + … in lm_vf_pf_recv_response_from_sw_channel()
962 static lm_status_t lm_vf_pf_channel_send(struct _lm_device_t * pdev, lm_vf_pf_message_t * mess) in lm_vf_pf_channel_send() argument
966 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev))); in lm_vf_pf_channel_send()
968 DbgMessage(pdev, WARNvf, "lm_vf_pf_channel_send\n"); in lm_vf_pf_channel_send()
970 if (IS_HW_CHANNEL_VIRT_MODE(pdev)) { in lm_vf_pf_channel_send()
971 lm_vf_pf_send_message_to_hw_channel(pdev, mess); in lm_vf_pf_channel_send()
972 } else if (IS_SW_CHANNEL_VIRT_MODE(pdev)) { in lm_vf_pf_channel_send()
973 lm_status = lm_vf_pf_send_request_to_sw_channel(pdev, mess); in lm_vf_pf_channel_send()
981 mm_vf_pf_arm_trigger(pdev, mess); in lm_vf_pf_channel_send()
987 static lm_status_t lm_vf_pf_channel_wait_response(struct _lm_device_t * pdev, lm_vf_pf_message_t * … in lm_vf_pf_channel_wait_response() argument
995 … if ERR_IF(!(pdev && IS_CHANNEL_VFDEV(pdev) && mess && pdev->vars.vf_pf_mess.message_virt_addr)) { in lm_vf_pf_channel_wait_response()
1001 DbgMessage(pdev, WARN, "lm_vf_pf_channel_wait_response\n"); in lm_vf_pf_channel_wait_response()
1003 mess = &pdev->vars.vf_pf_mess; in lm_vf_pf_channel_wait_response()
1006 if ((*mess->done == FALSE) && IS_SW_CHANNEL_VIRT_MODE(pdev) && !lm_reset_is_inprogress(pdev)) { in lm_vf_pf_channel_wait_response()
1007 lm_status = lm_vf_pf_recv_response_from_sw_channel(pdev, mess); in lm_vf_pf_channel_wait_response()
1014 mm_wait(pdev, delay_us); in lm_vf_pf_channel_wait_response()
1018 if( lm_reset_is_inprogress(pdev) ) { in lm_vf_pf_channel_wait_response()
1020 } else if (IS_SW_CHANNEL_VIRT_MODE(pdev)) { in lm_vf_pf_channel_wait_response()
1021 lm_status = lm_vf_pf_recv_response_from_sw_channel(pdev,mess); in lm_vf_pf_channel_wait_response()
1025 …DbgMessage(pdev, WARN, "lm_vf_pf_channel_wait_response: message done(%dus waiting)\n",sum_delay_us… in lm_vf_pf_channel_wait_response()
1034 if (!lm_reset_is_inprogress(pdev)) in lm_vf_pf_channel_wait_response()
1042 DbgMessage(pdev, FATAL, "lm_vf_pf_channel_wait_response returns %d\n", lm_status); in lm_vf_pf_channel_wait_response()
1047 static void lm_vf_pf_channel_release_message(struct _lm_device_t * pdev, lm_vf_pf_message_t * mess) in lm_vf_pf_channel_release_message() argument
1050 …DbgMessage(pdev, WARN, "VF_PF channel: assuming REQ_SET_INFORMATION - indicating back to NDIS!\n"); in lm_vf_pf_channel_release_message()
1051 mm_set_done(pdev, LM_SW_LEADING_RSS_CID(pdev), mess->cookie); in lm_vf_pf_channel_release_message()
1057 static lm_vf_pf_message_t * lm_vf_pf_channel_get_message_to_send(struct _lm_device_t * pdev, const … in lm_vf_pf_channel_get_message_to_send() argument
1066 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev))); in lm_vf_pf_channel_get_message_to_send()
1069 if (mm_atomic_inc(&pdev->vars.vf_pf_mess.state) != 1) { in lm_vf_pf_channel_get_message_to_send()
1070 …DbgMessage(pdev, FATAL, "VF_PF Channel: pdev->vars.vf_pf_mess.state is %d\n",pdev->vars.vf_pf_mess… in lm_vf_pf_channel_get_message_to_send()
1071 mm_atomic_dec(&pdev->vars.vf_pf_mess.state); in lm_vf_pf_channel_get_message_to_send()
1076 mm_atomic_inc(&pdev->vars.vf_pf_mess.state); in lm_vf_pf_channel_get_message_to_send()
1077 …DbgMessage(pdev, FATAL, "VF_PF Channel: pdev->vars.vf_pf_mess.state is %d\n",pdev->vars.vf_pf_mess… in lm_vf_pf_channel_get_message_to_send()
1079 if (pdev->vars.vf_pf_mess.message_virt_addr == NULL) { in lm_vf_pf_channel_get_message_to_send()
1080 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1082pdev->vars.vf_pf_mess.message_size = ((sizeof(union vf_pf_msg) + CACHE_LINE_SIZE_MASK) & ~CACHE_LI… in lm_vf_pf_channel_get_message_to_send()
1085 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1087pdev->vars.vf_pf_mess.message_size = ((sizeof(union vfpf_tlvs) + sizeof(struct channel_list_end_tl… in lm_vf_pf_channel_get_message_to_send()
1096pdev->vars.vf_pf_mess.message_virt_addr = mm_alloc_phys_mem(pdev, pdev->vars.vf_pf_mess.message_si… in lm_vf_pf_channel_get_message_to_send()
1097 … &pdev->vars.vf_pf_mess.message_phys_addr, 0, LM_RESOURCE_COMMON); in lm_vf_pf_channel_get_message_to_send()
1098 if CHK_NULL(pdev->vars.vf_pf_mess.message_virt_addr) in lm_vf_pf_channel_get_message_to_send()
1100 … DbgMessage(pdev, FATAL, "VF_PF Channel: pdev->vvars.vf_pf_mess.message_virt_addr is NULL\n"); in lm_vf_pf_channel_get_message_to_send()
1102 mm_atomic_dec(&pdev->vars.vf_pf_mess.state); in lm_vf_pf_channel_get_message_to_send()
1105 if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1108 buletin_offset = pdev->vars.vf_pf_mess.message_size = in lm_vf_pf_channel_get_message_to_send()
1111pdev->vars.vf_pf_mess.bulletin_virt_addr = (u8_t*)pdev->vars.vf_pf_mess.message_virt_addr + buleti… in lm_vf_pf_channel_get_message_to_send()
1112 pdev->vars.vf_pf_mess.bulletin_phys_addr = pdev->vars.vf_pf_mess.message_phys_addr; in lm_vf_pf_channel_get_message_to_send()
1113 LM_INC64(&pdev->vars.vf_pf_mess.bulletin_phys_addr, buletin_offset); in lm_vf_pf_channel_get_message_to_send()
1116 mm_mem_zero(pdev->vars.vf_pf_mess.message_virt_addr, pdev->vars.vf_pf_mess.message_size); in lm_vf_pf_channel_get_message_to_send()
1117 sw_hdr = (struct vf_pf_msg_hdr*)pdev->vars.vf_pf_mess.message_virt_addr; in lm_vf_pf_channel_get_message_to_send()
1118 hw_first_tlv = (struct vfpf_first_tlv*)pdev->vars.vf_pf_mess.message_virt_addr; in lm_vf_pf_channel_get_message_to_send()
1121 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1134 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1147 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1160 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1174 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1186 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1199 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1212 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1225 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1238 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1251 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1264 mm_atomic_dec(&pdev->vars.vf_pf_mess.state); in lm_vf_pf_channel_get_message_to_send()
1265 DbgMessage(pdev, FATAL, "VF_PF channel: Opcode %d is not supported\n",opcode); in lm_vf_pf_channel_get_message_to_send()
1269 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_channel_get_message_to_send()
1276pdev->vars.vf_pf_mess.done = (u16_t*)((u8_t *)pdev->vars.vf_pf_mess.message_virt_addr + resp_offse… in lm_vf_pf_channel_get_message_to_send()
1284 pdev->vars.vf_pf_mess.done = (u16_t*)(&hw_resp_hdr->status); in lm_vf_pf_channel_get_message_to_send()
1286 return &pdev->vars.vf_pf_mess; in lm_vf_pf_channel_get_message_to_send()
1289 u16_t lm_vf_pf_get_sb_running_index(lm_device_t *pdev, u8_t sb_id, u8_t sm_idx) in lm_vf_pf_get_sb_running_index() argument
1292 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) && pdev->pf_vf_acquiring_resp)); in lm_vf_pf_get_sb_running_index()
1293 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_get_sb_running_index()
1295 …struct pf_vf_msg_acquire_resp * p_sw_resp = (struct pf_vf_msg_acquire_resp *)pdev->pf_vf_acquiring… in lm_vf_pf_get_sb_running_index()
1296 …running_index = pdev->vars.status_blocks_arr[sb_id].host_hc_status_block.vf_sb[p_sw_resp->pfdev_in… in lm_vf_pf_get_sb_running_index()
1298 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_get_sb_running_index()
1300 …struct pfvf_acquire_resp_tlv * p_hw_resp = (struct pfvf_acquire_resp_tlv *)pdev->pf_vf_acquiring_r… in lm_vf_pf_get_sb_running_index()
1301 …running_index = pdev->vars.status_blocks_arr[sb_id].host_hc_status_block.vf_sb[p_hw_resp->pfdev_in… in lm_vf_pf_get_sb_running_index()
1312 u16_t lm_vf_pf_get_sb_index(lm_device_t *pdev, u8_t sb_id, u8_t idx) in lm_vf_pf_get_sb_index() argument
1314 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) && pdev->pf_vf_acquiring_resp)); in lm_vf_pf_get_sb_index()
1315 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_get_sb_index()
1317 …struct pf_vf_msg_acquire_resp * p_sw_resp = (struct pf_vf_msg_acquire_resp *)pdev->pf_vf_acquiring… in lm_vf_pf_get_sb_index()
1320 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_get_sb_index()
1322 …struct pfvf_acquire_resp_tlv * p_hw_resp = (struct pfvf_acquire_resp_tlv *)pdev->pf_vf_acquiring_r… in lm_vf_pf_get_sb_index()
1329 return mm_le16_to_cpu(pdev->vars.status_blocks_arr[sb_id].host_hc_status_block.vf_sb[sb_id]); in lm_vf_pf_get_sb_index()
1332 u16_t lm_vf_get_doorbell_size(struct _lm_device_t *pdev) in lm_vf_get_doorbell_size() argument
1334 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) && pdev->pf_vf_acquiring_resp)); in lm_vf_get_doorbell_size()
1335 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_get_doorbell_size()
1337 …struct pf_vf_msg_acquire_resp * p_sw_resp = (struct pf_vf_msg_acquire_resp *)pdev->pf_vf_acquiring… in lm_vf_get_doorbell_size()
1341 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_get_doorbell_size()
1343 …struct pfvf_acquire_resp_tlv * p_hw_resp = (struct pfvf_acquire_resp_tlv *)pdev->pf_vf_acquiring_r… in lm_vf_get_doorbell_size()
1354 lm_status_t lm_vf_pf_wait_no_messages_pending(struct _lm_device_t * pdev) in lm_vf_pf_wait_no_messages_pending() argument
1358 pf_mess = &pdev->vars.vf_pf_mess; in lm_vf_pf_wait_no_messages_pending()
1359 lm_status = lm_vf_pf_channel_wait_response(pdev, pf_mess); in lm_vf_pf_wait_no_messages_pending()
1361 DbgMessage(pdev, WARNvf, "lm_vf_pf_wait_no_messages_pending\n"); in lm_vf_pf_wait_no_messages_pending()
1364 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_wait_no_messages_pending()
1372 …DbgMessage(pdev, WARN, "VF_PF Channel: Message %d(%d) is completed successfully\n",mess_hdr->opcod… in lm_vf_pf_wait_no_messages_pending()
1379 … DbgMessage(pdev, FATAL, "VF_PF Channel: Status %d is not supported yet\n", resp_hdr->status); in lm_vf_pf_wait_no_messages_pending()
1384 DbgMessage(pdev, FATAL, "VF_PF Channel: Unknown status %d\n", resp_hdr->status); in lm_vf_pf_wait_no_messages_pending()
1390 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_wait_no_messages_pending()
1404 … DbgMessage(pdev, FATAL, "VF_PF Channel: Status %d is not supported yet\n", resp_hdr->status); in lm_vf_pf_wait_no_messages_pending()
1409 DbgMessage(pdev, FATAL, "VF_PF Channel: Unknown status %d\n", resp_hdr->status); in lm_vf_pf_wait_no_messages_pending()
1420 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_wait_no_messages_pending()
1424 lm_status_t lm_vf_pf_acquire_msg(struct _lm_device_t * pdev) in lm_vf_pf_acquire_msg() argument
1434 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev))); in lm_vf_pf_acquire_msg()
1436 pf_mess = lm_vf_pf_channel_get_message_to_send(pdev, PFVF_OP_ACQUIRE); in lm_vf_pf_acquire_msg()
1440 … DbgMessage(pdev, FATAL, "VF_PF Channel: lm_vf_pf_channel_get_message_to_send returns NULL\n"); in lm_vf_pf_acquire_msg()
1446 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_acquire_msg()
1452 sw_mess->vfdev_info.vf_id = ABS_VFID(pdev); /* ME register value */ in lm_vf_pf_acquire_msg()
1455 …sw_mess->vfdev_info.vf_fw_hsi_version = pdev->ver_num_fw; /* Must not be zero otherwise, VF will… in lm_vf_pf_acquire_msg()
1459 …equest.num_rxqs = sw_mess->resc_request.num_txqs = sw_mess->resc_request.num_sbs = LM_SB_CNT(pdev); in lm_vf_pf_acquire_msg()
1465 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_acquire_msg()
1468 hw_mess->vfdev_info.vf_id = ABS_VFID(pdev); /* ME register value */ in lm_vf_pf_acquire_msg()
1471 …equest.num_rxqs = hw_mess->resc_request.num_txqs = hw_mess->resc_request.num_sbs = LM_SB_CNT(pdev); in lm_vf_pf_acquire_msg()
1480 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_acquire_msg()
1485 lm_status = lm_vf_pf_channel_send(pdev,pf_mess); in lm_vf_pf_acquire_msg()
1489 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_acquire_msg()
1492 lm_status = lm_vf_pf_channel_wait_response(pdev, pf_mess); in lm_vf_pf_acquire_msg()
1497 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_acquire_msg()
1515 … DbgMessage(pdev, FATAL, "VF_PF Channel: Status %d is not supported yet\n", sw_resp->hdr.status); in lm_vf_pf_acquire_msg()
1519 … DbgMessage(pdev, FATAL, "VF_PF Channel: Unknown status %d\n", sw_resp->hdr.status); in lm_vf_pf_acquire_msg()
1526 pdev->params.pf_acquire_status = sw_resp->hdr.status; in lm_vf_pf_acquire_msg()
1529 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_acquire_msg()
1546 … DbgMessage(pdev, FATAL, "VF_PF Channel: Status %d is not supported yet\n", hw_resp->hdr.status); in lm_vf_pf_acquire_msg()
1550 … DbgMessage(pdev, FATAL, "VF_PF Channel: Unknown status %d\n", hw_resp->hdr.status); in lm_vf_pf_acquire_msg()
1557 pdev->params.pf_acquire_status = hw_resp->hdr.status; in lm_vf_pf_acquire_msg()
1569 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_acquire_msg()
1573 if (pdev->pf_vf_acquiring_resp == NULL) in lm_vf_pf_acquire_msg()
1575pdev->pf_vf_acquiring_resp = mm_alloc_mem(pdev, sizeof(struct pf_vf_msg_acquire_resp),LM_RESOURCE_… in lm_vf_pf_acquire_msg()
1577 if CHK_NULL(pdev->pf_vf_acquiring_resp) in lm_vf_pf_acquire_msg()
1579 lm_vf_pf_channel_release_message(pdev, pf_mess); in lm_vf_pf_acquire_msg()
1585 …DbgMessage(pdev, FATAL, "VF_PF Channel: pdev->pf_vf_acquiring_resp is allocated (%db)\n",sizeof(st… in lm_vf_pf_acquire_msg()
1590 presp = (struct pf_vf_msg_acquire_resp *)pdev->pf_vf_acquiring_resp; in lm_vf_pf_acquire_msg()
1595 mm_memcpy(pdev->pf_vf_acquiring_resp, sw_resp, sizeof(struct pf_vf_msg_acquire_resp)); in lm_vf_pf_acquire_msg()
1596 if (!pdev->params.debug_sriov) in lm_vf_pf_acquire_msg()
1598 pdev->params.debug_sriov = presp->pfdev_info.pf_cap & PFVF_DEBUG; in lm_vf_pf_acquire_msg()
1600 … DbgMessage(pdev, FATALvf, "presp->pfdev_info.db_size = %d\n", presp->pfdev_info.db_size); in lm_vf_pf_acquire_msg()
1601 …DbgMessage(pdev, FATALvf, "presp->pfdev_info.indices_per_sb = %d\n", presp->pfdev_info.indices_per… in lm_vf_pf_acquire_msg()
1602 DbgMessage(pdev, FATALvf, "presp->pfdev_info.pf_cap = %d\n", presp->pfdev_info.pf_cap); in lm_vf_pf_acquire_msg()
1603 … DbgMessage(pdev, FATALvf, "presp->pfdev_info.chip_num = %d\n", presp->pfdev_info.chip_num); in lm_vf_pf_acquire_msg()
1604 DbgMessage(pdev, FATALvf, "presp->resc.hw_qid[0] = %d\n", presp->resc.hw_qid[0]); in lm_vf_pf_acquire_msg()
1605 …DbgMessage(pdev, FATALvf, "presp->resc.hw_sbs[0].hw_sb_id = %d\n", presp->resc.hw_sbs[0].hw_sb_id); in lm_vf_pf_acquire_msg()
1606 … DbgMessage(pdev, FATALvf, "presp->resc.hw_sbs[0].sb_qid = %d\n", presp->resc.hw_sbs[0].sb_qid); in lm_vf_pf_acquire_msg()
1607 DbgMessage(pdev, FATALvf, "presp->resc.num_sbs = %d\n", presp->resc.num_sbs); in lm_vf_pf_acquire_msg()
1608 DbgMessage(pdev, FATALvf, "presp->resc.igu_cnt = %d\n", presp->resc.igu_cnt); in lm_vf_pf_acquire_msg()
1609 DbgMessage(pdev, FATALvf, "presp->resc.igu_test_cnt = %d\n", presp->resc.igu_test_cnt); in lm_vf_pf_acquire_msg()
1610 DbgMessage(pdev, FATALvf, "presp->resc.num_rxqs = %d\n", presp->resc.num_rxqs); in lm_vf_pf_acquire_msg()
1611 DbgMessage(pdev, FATALvf, "presp->resc.num_txqs = %d\n", presp->resc.num_txqs); in lm_vf_pf_acquire_msg()
1612 … DbgMessage(pdev, FATALvf, "presp->resc.num_mac_filters = %d\n", presp->resc.num_mac_filters); in lm_vf_pf_acquire_msg()
1613 … DbgMessage(pdev, FATALvf, "presp->resc.num_mc_filters = %d\n", presp->resc.num_mc_filters); in lm_vf_pf_acquire_msg()
1614 … DbgMessage(pdev, FATALvf, "presp->resc.num_vlan_filters = %d\n", presp->resc.num_vlan_filters); in lm_vf_pf_acquire_msg()
1626 lm_vf_pf_channel_release_message(pdev, pf_mess); in lm_vf_pf_acquire_msg()
1630 pdev->params.fw_base_qzone_cnt = pdev->params.sb_cnt = min(presp->resc.num_sbs, max_dq); in lm_vf_pf_acquire_msg()
1631pdev->params.max_rss_chains = pdev->params.rss_chain_cnt = min(presp->resc.num_rxqs, max_dq); in lm_vf_pf_acquire_msg()
1632 pdev->params.tss_chain_cnt = min(presp->resc.num_txqs, max_dq); in lm_vf_pf_acquire_msg()
1634 pdev->hw_info.chip_id = presp->pfdev_info.chip_num; in lm_vf_pf_acquire_msg()
1635 pdev->hw_info.intr_blk_info.blk_type = INTR_BLK_IGU; in lm_vf_pf_acquire_msg()
1636 pdev->hw_info.intr_blk_info.blk_mode = INTR_BLK_MODE_NORM; in lm_vf_pf_acquire_msg()
1637 pdev->hw_info.intr_blk_info.access_type = INTR_BLK_ACCESS_IGUMEM; in lm_vf_pf_acquire_msg()
1640 pdev->hw_info.intr_blk_info.igu_info.igu_base_sb = presp->resc.hw_sbs[0].hw_sb_id; in lm_vf_pf_acquire_msg()
1641 pdev->hw_info.intr_blk_info.igu_info.igu_sb_cnt = presp->resc.igu_cnt; in lm_vf_pf_acquire_msg()
1642 pdev->hw_info.intr_blk_info.igu_info.igu_test_sb_cnt = presp->resc.igu_test_cnt; in lm_vf_pf_acquire_msg()
1646 for (idx = 0; idx < pdev->params.fw_base_qzone_cnt; idx++) in lm_vf_pf_acquire_msg()
1648 pdev->params.fw_qzone_id[idx] = presp->resc.hw_qid[idx]; in lm_vf_pf_acquire_msg()
1649 IGU_VF_NDSB(pdev,idx) = presp->resc.hw_sbs[idx].hw_sb_id; in lm_vf_pf_acquire_msg()
1667 DbgMessage(pdev, WARN, "VF received MAC from PF\n"); in lm_vf_pf_acquire_msg()
1668pdev->params.mac_addr[0] = pdev->hw_info.mac_addr[0] = presp->resc.current_mac_addr[0]; in lm_vf_pf_acquire_msg()
1669pdev->params.mac_addr[1] = pdev->hw_info.mac_addr[1] = presp->resc.current_mac_addr[1]; in lm_vf_pf_acquire_msg()
1670pdev->params.mac_addr[2] = pdev->hw_info.mac_addr[2] = presp->resc.current_mac_addr[2]; in lm_vf_pf_acquire_msg()
1671pdev->params.mac_addr[3] = pdev->hw_info.mac_addr[3] = presp->resc.current_mac_addr[3]; in lm_vf_pf_acquire_msg()
1672pdev->params.mac_addr[4] = pdev->hw_info.mac_addr[4] = presp->resc.current_mac_addr[4]; in lm_vf_pf_acquire_msg()
1673pdev->params.mac_addr[5] = pdev->hw_info.mac_addr[5] = presp->resc.current_mac_addr[5]; in lm_vf_pf_acquire_msg()
1677 DbgMessage(pdev, WARN, "VF uses own MAC\n"); in lm_vf_pf_acquire_msg()
1680 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_acquire_msg()
1684 if (pdev->pf_vf_acquiring_resp == NULL) in lm_vf_pf_acquire_msg()
1686pdev->pf_vf_acquiring_resp = mm_alloc_mem(pdev, sizeof(struct pfvf_acquire_resp_tlv),LM_RESOURCE_C… in lm_vf_pf_acquire_msg()
1688 if CHK_NULL(pdev->pf_vf_acquiring_resp) in lm_vf_pf_acquire_msg()
1690 lm_vf_pf_channel_release_message(pdev, pf_mess); in lm_vf_pf_acquire_msg()
1696 …DbgMessage(pdev, FATAL, "VF_PF Channel: pdev->pf_vf_acquiring_resp is allocated (%db)\n",sizeof(st… in lm_vf_pf_acquire_msg()
1701 presp = (struct pfvf_acquire_resp_tlv *)pdev->pf_vf_acquiring_resp; in lm_vf_pf_acquire_msg()
1705 mm_memcpy(pdev->pf_vf_acquiring_resp, hw_resp, sizeof(struct pfvf_acquire_resp_tlv)); in lm_vf_pf_acquire_msg()
1707 … DbgMessage(pdev, FATALvf, "presp->pfdev_info.db_size = %d\n", presp->pfdev_info.db_size); in lm_vf_pf_acquire_msg()
1708 …DbgMessage(pdev, FATALvf, "presp->pfdev_info.indices_per_sb = %d\n", presp->pfdev_info.indices_per… in lm_vf_pf_acquire_msg()
1709 DbgMessage(pdev, FATALvf, "presp->pfdev_info.pf_cap = %d\n", presp->pfdev_info.pf_cap); in lm_vf_pf_acquire_msg()
1710 … DbgMessage(pdev, FATALvf, "presp->pfdev_info.chip_num = %d\n", presp->pfdev_info.chip_num); in lm_vf_pf_acquire_msg()
1711 DbgMessage(pdev, FATALvf, "presp->resc.hw_qid[0] = %d\n", presp->resc.hw_qid[0]); in lm_vf_pf_acquire_msg()
1712 …DbgMessage(pdev, FATALvf, "presp->resc.hw_sbs[0].hw_sb_id = %d\n", presp->resc.hw_sbs[0].hw_sb_id); in lm_vf_pf_acquire_msg()
1713 … DbgMessage(pdev, FATALvf, "presp->resc.hw_sbs[0].sb_qid = %d\n", presp->resc.hw_sbs[0].sb_qid); in lm_vf_pf_acquire_msg()
1714 DbgMessage(pdev, FATALvf, "presp->resc.num_sbs = %d\n", presp->resc.num_sbs); in lm_vf_pf_acquire_msg()
1715 DbgMessage(pdev, FATALvf, "presp->resc.num_rxqs = %d\n", presp->resc.num_rxqs); in lm_vf_pf_acquire_msg()
1716 DbgMessage(pdev, FATALvf, "presp->resc.num_txqs = %d\n", presp->resc.num_txqs); in lm_vf_pf_acquire_msg()
1717 … DbgMessage(pdev, FATALvf, "presp->resc.num_mac_filters = %d\n", presp->resc.num_mac_filters); in lm_vf_pf_acquire_msg()
1718 … DbgMessage(pdev, FATALvf, "presp->resc.num_mc_filters = %d\n", presp->resc.num_mc_filters); in lm_vf_pf_acquire_msg()
1719 … DbgMessage(pdev, FATALvf, "presp->resc.num_vlan_filters = %d\n", presp->resc.num_vlan_filters); in lm_vf_pf_acquire_msg()
1732 lm_vf_pf_channel_release_message(pdev, pf_mess); in lm_vf_pf_acquire_msg()
1736 pdev->params.fw_base_qzone_cnt = pdev->params.sb_cnt = min(presp->resc.num_sbs, max_dq); in lm_vf_pf_acquire_msg()
1737pdev->params.max_rss_chains = pdev->params.rss_chain_cnt = min(presp->resc.num_rxqs, max_dq); in lm_vf_pf_acquire_msg()
1738 pdev->params.tss_chain_cnt = min(presp->resc.num_txqs, max_dq); in lm_vf_pf_acquire_msg()
1740 pdev->hw_info.chip_id = presp->pfdev_info.chip_num; in lm_vf_pf_acquire_msg()
1741 pdev->hw_info.intr_blk_info.blk_type = INTR_BLK_IGU; in lm_vf_pf_acquire_msg()
1742 pdev->hw_info.intr_blk_info.blk_mode = INTR_BLK_MODE_NORM; in lm_vf_pf_acquire_msg()
1743 pdev->hw_info.intr_blk_info.access_type = INTR_BLK_ACCESS_IGUMEM; in lm_vf_pf_acquire_msg()
1746 pdev->hw_info.intr_blk_info.igu_info.igu_base_sb = presp->resc.hw_sbs[0].hw_sb_id; in lm_vf_pf_acquire_msg()
1747 pdev->hw_info.intr_blk_info.igu_info.igu_sb_cnt = presp->resc.num_sbs; in lm_vf_pf_acquire_msg()
1751 for (idx = 0; idx < pdev->params.fw_base_qzone_cnt; idx++) in lm_vf_pf_acquire_msg()
1753 pdev->params.fw_qzone_id[idx] = presp->resc.hw_qid[idx]; in lm_vf_pf_acquire_msg()
1754 IGU_VF_NDSB(pdev,idx) = presp->resc.hw_sbs[idx].hw_sb_id; in lm_vf_pf_acquire_msg()
1769 pdev->params.mc_table_size[LM_CLI_IDX_NDIS] = presp->resc.num_mc_filters; in lm_vf_pf_acquire_msg()
1770 pdev->vars.pf_link_speed = presp->resc.pf_link_speed; in lm_vf_pf_acquire_msg()
1780 DbgMessage(pdev, WARN, "VF received MAC from PF\n"); in lm_vf_pf_acquire_msg()
1781pdev->params.mac_addr[0] = pdev->hw_info.mac_addr[0] = presp->resc.current_mac_addr[0]; in lm_vf_pf_acquire_msg()
1782pdev->params.mac_addr[1] = pdev->hw_info.mac_addr[1] = presp->resc.current_mac_addr[1]; in lm_vf_pf_acquire_msg()
1783pdev->params.mac_addr[2] = pdev->hw_info.mac_addr[2] = presp->resc.current_mac_addr[2]; in lm_vf_pf_acquire_msg()
1784pdev->params.mac_addr[3] = pdev->hw_info.mac_addr[3] = presp->resc.current_mac_addr[3]; in lm_vf_pf_acquire_msg()
1785pdev->params.mac_addr[4] = pdev->hw_info.mac_addr[4] = presp->resc.current_mac_addr[4]; in lm_vf_pf_acquire_msg()
1786pdev->params.mac_addr[5] = pdev->hw_info.mac_addr[5] = presp->resc.current_mac_addr[5]; in lm_vf_pf_acquire_msg()
1787 pdev->vars.is_pf_provides_mac = TRUE; in lm_vf_pf_acquire_msg()
1788 pdev->vars.is_pf_restricts_lamac = lm_vf_check_mac_restriction(pdev, presp); in lm_vf_pf_acquire_msg()
1792 DbgMessage(pdev, WARN, "VF uses own MAC\n"); in lm_vf_pf_acquire_msg()
1793 pdev->vars.is_pf_provides_mac = FALSE; in lm_vf_pf_acquire_msg()
1794 pdev->vars.is_pf_restricts_lamac = FALSE; in lm_vf_pf_acquire_msg()
1804 lm_vf_pf_channel_release_message(pdev, pf_mess); in lm_vf_pf_acquire_msg()
1808 lm_status_t lm_vf_pf_init_vf(struct _lm_device_t * pdev) in lm_vf_pf_init_vf() argument
1815 DbgMessage(pdev, WARNvf, "lm_vf_pf_init_vf\n"); in lm_vf_pf_init_vf()
1817 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) && (LM_SB_CNT(pdev) <= PFVF_MAX_SBS_PER_VF))); in lm_vf_pf_init_vf()
1818 pf_mess = lm_vf_pf_channel_get_message_to_send(pdev, PFVF_OP_INIT_VF); in lm_vf_pf_init_vf()
1824 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_init_vf()
1829 q_stats = pdev->vars.stats.stats_collect.stats_fw.fw_stats_data_mapping; in lm_vf_pf_init_vf()
1833 LM_FOREACH_SB_ID(pdev,sb_id) { in lm_vf_pf_init_vf()
1834 …mess->sb_addr[sb_id] = pdev->vars.status_blocks_arr[sb_id].hc_status_block_data.vf_sb_phy_address.… in lm_vf_pf_init_vf()
1837 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_init_vf()
1842 q_stats = pdev->vars.stats.stats_collect.stats_fw.fw_stats_data_mapping; in lm_vf_pf_init_vf()
1847 LM_FOREACH_SB_ID(pdev,sb_id) { in lm_vf_pf_init_vf()
1848 …mess->sb_addr[sb_id] = pdev->vars.status_blocks_arr[sb_id].hc_status_block_data.vf_sb_phy_address.… in lm_vf_pf_init_vf()
1854 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_init_vf()
1858 lm_status = lm_vf_pf_channel_send(pdev,pf_mess); in lm_vf_pf_init_vf()
1860 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_init_vf()
1862 DbgMessage(pdev, WARNvf, "lm_vf_pf_init_vf return lm_status = %d\n", lm_status); in lm_vf_pf_init_vf()
1867 lm_status_t lm_vf_pf_setup_q(struct _lm_device_t * pdev, u8 vf_qid, u8_t validation_flag) in lm_vf_pf_setup_q() argument
1872 DbgMessage(pdev, WARNvf, "lm_vf_pf_setup_q\n"); in lm_vf_pf_setup_q()
1874 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) in lm_vf_pf_setup_q()
1876 && (vf_qid < LM_SB_CNT(pdev)) in lm_vf_pf_setup_q()
1877 && pdev->pf_vf_acquiring_resp)); in lm_vf_pf_setup_q()
1879 pf_mess = lm_vf_pf_channel_get_message_to_send(pdev, PFVF_OP_SETUP_Q); in lm_vf_pf_setup_q()
1885 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_setup_q()
1891 presp = (struct pf_vf_msg_acquire_resp *)pdev->pf_vf_acquiring_resp; in lm_vf_pf_setup_q()
1895 mess->rxq.rcq_addr = lm_bd_chain_phys_addr(&(LM_RCQ(pdev,vf_qid).bd_chain), 0).as_u64; in lm_vf_pf_setup_q()
1896 mess->rxq.rcq_np_addr = lm_bd_chain_phys_addr(&(LM_RCQ(pdev,vf_qid).bd_chain), 1).as_u64; in lm_vf_pf_setup_q()
1897 mess->rxq.rxq_addr = lm_bd_chain_phys_addr(&(LM_RXQ_CHAIN(pdev,vf_qid,0)), 0).as_u64; in lm_vf_pf_setup_q()
1899 mess->rxq.sge_addr = LM_TPA_CHAIN_BD(pdev, vf_qid).bd_chain_phy.as_u64; in lm_vf_pf_setup_q()
1910 mess->rxq.sb_index = LM_RCQ(pdev, vf_qid).hc_sb_info.hc_index_value; in lm_vf_pf_setup_q()
1911 …if ((pdev->params.int_coalesing_mode == LM_INT_COAL_PERIODIC_SYNC)/* && !pdev->params.int_coalesin… in lm_vf_pf_setup_q()
1912 …mess->rxq.hc_rate = (u16_t)pdev->params.int_per_sec_rx[HC_PARAMS_ETH_INDEX]; /* desired … in lm_vf_pf_setup_q()
1914 …if (pdev->params.enable_dynamic_hc[HC_PARAMS_ETH_INDEX] && (presp->pfdev_info.pf_cap & PFVF_CAP_DH… in lm_vf_pf_setup_q()
1920 mess->rxq.mtu = (u16_t)pdev->params.l2_cli_con_params[vf_qid].mtu; in lm_vf_pf_setup_q()
1921 mess->rxq.buf_sz = MAX_L2_CLI_BUFFER_SIZE(pdev, vf_qid); in lm_vf_pf_setup_q()
1927 mess->txq.txq_addr = lm_bd_chain_phys_addr(&(LM_TXQ(pdev,vf_qid).bd_chain), 0).as_u64; in lm_vf_pf_setup_q()
1929 mess->txq.sb_index = LM_TXQ(pdev, vf_qid).hc_sb_info.hc_index_value; in lm_vf_pf_setup_q()
1930 …if ((pdev->params.int_coalesing_mode == LM_INT_COAL_PERIODIC_SYNC)/* && pdev->params.int_coalesing… in lm_vf_pf_setup_q()
1931 …mess->txq.hc_rate = (u16_t)pdev->params.int_per_sec_tx[HC_PARAMS_ETH_INDEX]; /* desired … in lm_vf_pf_setup_q()
1936 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_setup_q()
1942 presp = (struct pfvf_acquire_resp_tlv *)pdev->pf_vf_acquiring_resp; in lm_vf_pf_setup_q()
1946 mess->rxq.rcq_addr = lm_bd_chain_phys_addr(&(LM_RCQ(pdev,vf_qid).bd_chain), 0).as_u64; in lm_vf_pf_setup_q()
1947 … mess->rxq.rcq_np_addr = lm_bd_chain_phys_addr(&(LM_RCQ(pdev,vf_qid).bd_chain), 1).as_u64; in lm_vf_pf_setup_q()
1948 mess->rxq.rxq_addr = lm_bd_chain_phys_addr(&(LM_RXQ_CHAIN(pdev,vf_qid,0)), 0).as_u64; in lm_vf_pf_setup_q()
1951 mess->rxq.sge_addr = LM_TPA_CHAIN_BD(pdev, vf_qid).bd_chain_phy.as_u64; in lm_vf_pf_setup_q()
1967 mess->rxq.sb_index = LM_RCQ(pdev, vf_qid).hc_sb_info.hc_index_value; in lm_vf_pf_setup_q()
1968 …if ((pdev->params.int_coalesing_mode == LM_INT_COAL_PERIODIC_SYNC)/* && !pdev->params.int_coalesin… in lm_vf_pf_setup_q()
1969 …mess->rxq.hc_rate = (u16_t)pdev->params.int_per_sec_rx[HC_PARAMS_ETH_INDEX]; /* desired … in lm_vf_pf_setup_q()
1971 …if (pdev->params.enable_dynamic_hc[HC_PARAMS_ETH_INDEX] && (presp->pfdev_info.pf_cap & PFVF_CAP_DH… in lm_vf_pf_setup_q()
1980 mess->rxq.mtu = (u16_t)pdev->params.l2_cli_con_params[vf_qid].mtu; in lm_vf_pf_setup_q()
1981 mess->rxq.buf_sz = MAX_L2_CLI_BUFFER_SIZE(pdev, vf_qid); in lm_vf_pf_setup_q()
1987 mess->txq.txq_addr = lm_bd_chain_phys_addr(&(LM_TXQ(pdev,vf_qid).bd_chain), 0).as_u64; in lm_vf_pf_setup_q()
1989 mess->txq.sb_index = LM_TXQ(pdev, vf_qid).hc_sb_info.hc_index_value; in lm_vf_pf_setup_q()
1990 …if ((pdev->params.int_coalesing_mode == LM_INT_COAL_PERIODIC_SYNC)/* && pdev->params.int_coalesing… in lm_vf_pf_setup_q()
1991 …mess->txq.hc_rate = (u16_t)pdev->params.int_per_sec_tx[HC_PARAMS_ETH_INDEX]; /* desired … in lm_vf_pf_setup_q()
1999 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_setup_q()
2002 lm_status = lm_vf_pf_channel_send(pdev,pf_mess); in lm_vf_pf_setup_q()
2004 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_setup_q()
2007 DbgMessage(pdev, WARNvf, "lm_vf_pf_setup_q lm_status = %d\n", lm_status); in lm_vf_pf_setup_q()
2013 lm_status_t lm_vf_pf_tear_q_down(struct _lm_device_t * pdev, u8 vf_qid) in lm_vf_pf_tear_q_down() argument
2018 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) in lm_vf_pf_tear_q_down()
2019 && (vf_qid < LM_SB_CNT(pdev)))); in lm_vf_pf_tear_q_down()
2021 pf_mess = lm_vf_pf_channel_get_message_to_send(pdev, PFVF_OP_TEARDOWN_Q); in lm_vf_pf_tear_q_down()
2027 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_tear_q_down()
2033 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_tear_q_down()
2042 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_tear_q_down()
2045 lm_status = lm_vf_pf_channel_send(pdev,pf_mess); in lm_vf_pf_tear_q_down()
2047 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_tear_q_down()
2053 lm_status_t lm_vf_pf_set_q_filters(struct _lm_device_t * pdev, u8 vf_qid, void * cookie, q_filter_t… in lm_vf_pf_set_q_filters() argument
2063 DbgMessage(pdev, WARNvf, "lm_vf_pf_set_q_filters\n"); in lm_vf_pf_set_q_filters()
2065 …DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) && (vf_qid < LM_SB_CNT(pdev)) && pdev->pf_vf_acquiring… in lm_vf_pf_set_q_filters()
2067 pf_mess = lm_vf_pf_channel_get_message_to_send(pdev, PFVF_OP_SET_Q_FILTERS); in lm_vf_pf_set_q_filters()
2073 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_set_q_filters()
2078 resp = (struct pf_vf_msg_acquire_resp *)pdev->pf_vf_acquiring_resp; in lm_vf_pf_set_q_filters()
2109 DbgMessage(pdev, FATAL, "VLAN filter is not supported yet\n"); in lm_vf_pf_set_q_filters()
2117 DbgMessage(pdev, FATAL, "Q_FILTER_MC: %d entries\n", num_entries); in lm_vf_pf_set_q_filters()
2152 …DbgMessage(pdev, FATAL, "Q_FILTER_RX_MASK: mess->rx_mask=%x mess->flags=%x\n", mess->rx_mask, mess… in lm_vf_pf_set_q_filters()
2162 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_set_q_filters()
2167 resp = (struct pfvf_acquire_resp_tlv *)pdev->pf_vf_acquiring_resp; in lm_vf_pf_set_q_filters()
2198 DbgMessage(pdev,FATAL,"VLAN filter is not supported yet\n"); in lm_vf_pf_set_q_filters()
2206 DbgMessage(pdev, FATAL, "Q_FILTER_MC: %d entries\n", num_entries); in lm_vf_pf_set_q_filters()
2241 …DbgMessage(pdev, FATAL, "Q_FILTER_RX_MASK: mess->rx_mask=%x mess->flags=%x\n", mess->rx_mask, mess… in lm_vf_pf_set_q_filters()
2254 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_set_q_filters()
2259 lm_status = lm_vf_pf_channel_send(pdev,pf_mess); in lm_vf_pf_set_q_filters()
2261 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_set_q_filters()
2264 DbgMessage(pdev, FATAL, "lm_vf_pf_set_q_filters: flag is not set. Use bypass\n"); in lm_vf_pf_set_q_filters()
2272 lm_status_t lm_vf_pf_set_q_filters_list(struct _lm_device_t * pdev, u8 vf_qid, void * cookie, q_fil… in lm_vf_pf_set_q_filters_list() argument
2281 lm_status_t lm_vf_pf_update_rss(struct _lm_device_t *pdev, void * cookie, u32_t rss_flags, u8_t rss… in lm_vf_pf_update_rss() argument
2287 DbgMessage(pdev, WARNvf, "lm_vf_pf_update_rss\n"); in lm_vf_pf_update_rss()
2289 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) && pdev->pf_vf_acquiring_resp)); in lm_vf_pf_update_rss()
2291 pf_mess = lm_vf_pf_channel_get_message_to_send(pdev, PFVF_OP_UPDATE_RSS); in lm_vf_pf_update_rss()
2297 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_update_rss()
2309 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_update_rss()
2317 mess->ind_table[ind_table_idx] = IGU_VF_NDSB(pdev,ind_table[ind_table_idx]); in lm_vf_pf_update_rss()
2326 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_update_rss()
2330 lm_status = lm_vf_pf_channel_send(pdev,pf_mess); in lm_vf_pf_update_rss()
2332 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_update_rss()
2338 lm_status_t lm_vf_pf_update_rsc(struct _lm_device_t *pdev) in lm_vf_pf_update_rsc() argument
2344 DbgMessage(pdev, WARNvf, "lm_vf_pf_update_rsc\n"); in lm_vf_pf_update_rsc()
2346 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) && pdev->pf_vf_acquiring_resp)); in lm_vf_pf_update_rsc()
2348 pf_mess = lm_vf_pf_channel_get_message_to_send(pdev, PFVF_OP_UPDATE_RSC); in lm_vf_pf_update_rsc()
2354 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_update_rsc()
2357 mess->rsc_ipv4_state = lm_tpa_ramrod_update_ipvx(pdev, 0, TPA_IPV4_ENABLED); in lm_vf_pf_update_rsc()
2358 mess->rsc_ipv6_state = lm_tpa_ramrod_update_ipvx(pdev, 0, TPA_IPV6_ENABLED); in lm_vf_pf_update_rsc()
2360 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_update_rsc()
2364 LM_FOREACH_RSS_IDX(pdev, rss_idx) in lm_vf_pf_update_rsc()
2366 … mess->tpa_client_info.sge_addr[rss_idx] = LM_TPA_CHAIN_BD(pdev, rss_idx).bd_chain_phy.as_u64; in lm_vf_pf_update_rsc()
2371 …mess->tpa_client_info.max_sges_for_packet = DIV_ROUND_UP_BITS((u16_t)pdev->params.l2_cli_con_param… in lm_vf_pf_update_rsc()
2379 mess->tpa_client_info.update_ipv4 = lm_tpa_ramrod_update_ipvx(pdev, 0, TPA_IPV4_ENABLED); in lm_vf_pf_update_rsc()
2380 mess->tpa_client_info.update_ipv6 = lm_tpa_ramrod_update_ipvx(pdev, 0, TPA_IPV6_ENABLED); in lm_vf_pf_update_rsc()
2386 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_update_rsc()
2390 lm_status = lm_vf_pf_channel_send(pdev,pf_mess); in lm_vf_pf_update_rsc()
2392 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_update_rsc()
2398 lm_status_t lm_vf_pf_close_vf(struct _lm_device_t * pdev) in lm_vf_pf_close_vf() argument
2403 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev))); in lm_vf_pf_close_vf()
2404 pf_mess = lm_vf_pf_channel_get_message_to_send(pdev, PFVF_OP_CLOSE_VF); in lm_vf_pf_close_vf()
2410 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_close_vf()
2414 mess->vf_id = ABS_VFID(pdev); in lm_vf_pf_close_vf()
2416 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_close_vf()
2420 mess->vf_id = ABS_VFID(pdev); in lm_vf_pf_close_vf()
2425 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_close_vf()
2429 lm_status = lm_vf_pf_channel_send(pdev,pf_mess); in lm_vf_pf_close_vf()
2431 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_close_vf()
2438 lm_status_t lm_vf_pf_release_vf(struct _lm_device_t * pdev) in lm_vf_pf_release_vf() argument
2444 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev))); in lm_vf_pf_release_vf()
2446 pf_mess = lm_vf_pf_channel_get_message_to_send(pdev, PFVF_OP_RELEASE_VF); in lm_vf_pf_release_vf()
2452 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_release_vf()
2456 mess->vf_id = ABS_VFID(pdev); /* ME register value */ in lm_vf_pf_release_vf()
2459 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_release_vf()
2463 mess->vf_id = ABS_VFID(pdev); in lm_vf_pf_release_vf()
2468 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_release_vf()
2472 lm_status = lm_vf_pf_channel_send(pdev,pf_mess); in lm_vf_pf_release_vf()
2474 lm_vf_pf_channel_release_message(pdev,pf_mess); in lm_vf_pf_release_vf()
2477 lm_status = lm_vf_pf_channel_wait_response(pdev, pf_mess); in lm_vf_pf_release_vf()
2480 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_pf_release_vf()
2495 … DbgMessage(pdev, FATAL, "VF_PF Channel: Status %d is not supported yet\n", resp->hdr.status); in lm_vf_pf_release_vf()
2499 DbgMessage(pdev, FATAL, "VF_PF Channel: Unknown status %d\n", resp->hdr.status); in lm_vf_pf_release_vf()
2508 lm_vf_pf_channel_release_message(pdev, pf_mess); in lm_vf_pf_release_vf()
2512 void lm_vf_fl_reset_set_inprogress(struct _lm_device_t * pdev) in lm_vf_fl_reset_set_inprogress() argument
2514 DbgMessage(pdev, WARN, "Set FLR flag is not implemented yet\n"); in lm_vf_fl_reset_set_inprogress()
2517 void lm_vf_fl_reset_clear_inprogress(struct _lm_device_t *pdev) in lm_vf_fl_reset_clear_inprogress() argument
2519 DbgMessage(pdev, WARN, "Clear FLR flag is not implemented yet\n"); in lm_vf_fl_reset_clear_inprogress()
2522 u8_t lm_vf_fl_reset_is_inprogress(struct _lm_device_t *pdev) in lm_vf_fl_reset_is_inprogress() argument
2524 DbgMessage(pdev, WARN, "Get FLR flag is not implemented yet\n"); in lm_vf_fl_reset_is_inprogress()
2528 lm_status_t lm_vf_get_vf_id(struct _lm_device_t * pdev) in lm_vf_get_vf_id() argument
2530 pdev->params.debug_me_register = _vf_reg_rd(pdev,VF_BAR0_DB_OFFSET);; in lm_vf_get_vf_id()
2532 DbgMessage(pdev, WARN, "vf ME-REG value: 0x%x\n", pdev->params.debug_me_register); in lm_vf_get_vf_id()
2534 if (!(pdev->params.debug_me_register & ME_REG_VF_VALID)) { in lm_vf_get_vf_id()
2535 DbgBreakIf(!(pdev->params.debug_me_register & ME_REG_VF_VALID)); in lm_vf_get_vf_id()
2538pdev->params.vf_num_in_path = (pdev->params.debug_me_register & ME_REG_VF_NUM_MASK) >> ME_REG_VF_N… in lm_vf_get_vf_id()
2539 DbgMessage(pdev, WARN, "vf_num_in_path=%d\n", pdev->params.vf_num_in_path); in lm_vf_get_vf_id()
2543 lm_status_t lm_vf_setup_alloc_resc(struct _lm_device_t *pdev, u8_t b_is_alloc ) in lm_vf_setup_alloc_resc() argument
2552 DbgBreakIf(!(pdev && IS_CHANNEL_VFDEV(pdev) && pdev->pf_vf_acquiring_resp)); in lm_vf_setup_alloc_resc()
2555 if CHK_NULL( pdev ) in lm_vf_setup_alloc_resc()
2560 …DbgMessage(pdev, FATAL, "### VF lm_common_setup_alloc_resc b_is_alloc=%s\n", b_is_alloc ? "TRUE" :… in lm_vf_setup_alloc_resc()
2562 vars = &(pdev->vars) ; in lm_vf_setup_alloc_resc()
2567 if (IS_CHANNEL_VFDEV(pdev)) { in lm_vf_setup_alloc_resc()
2568 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_setup_alloc_resc()
2571 presp = (struct pf_vf_msg_acquire_resp *)pdev->pf_vf_acquiring_resp; in lm_vf_setup_alloc_resc()
2574 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_setup_alloc_resc()
2577 presp = (struct pfvf_acquire_resp_tlv *)pdev->pf_vf_acquiring_resp; in lm_vf_setup_alloc_resc()
2591 LM_FOREACH_SB_ID(pdev, sb_id) in lm_vf_setup_alloc_resc()
2595 if (IS_CHANNEL_VFDEV(pdev)) { in lm_vf_setup_alloc_resc()
2596pdev->vars.status_blocks_arr[sb_id].host_hc_status_block.vf_sb = p_sb = mm_alloc_phys_mem(pdev, me… in lm_vf_setup_alloc_resc()
2597pdev->vars.status_blocks_arr[sb_id].hc_status_block_data.vf_sb_phy_address.as_u32.low = sb_phy_add… in lm_vf_setup_alloc_resc()
2598pdev->vars.status_blocks_arr[sb_id].hc_status_block_data.vf_sb_phy_address.as_u32.high = sb_phy_ad… in lm_vf_setup_alloc_resc()
2600pdev->vars.status_blocks_arr[sb_id].host_hc_status_block.e2_sb = p_sb = mm_alloc_phys_mem(pdev, me… in lm_vf_setup_alloc_resc()
2601pdev->vars.status_blocks_arr[sb_id].hc_status_block_data.e2_sb_data.common.host_sb_addr.lo = sb_ph… in lm_vf_setup_alloc_resc()
2602pdev->vars.status_blocks_arr[sb_id].hc_status_block_data.e2_sb_data.common.host_sb_addr.hi = sb_ph… in lm_vf_setup_alloc_resc()
2607 if (IS_CHANNEL_VFDEV(pdev)) { in lm_vf_setup_alloc_resc()
2608 p_sb = (void *)pdev->vars.status_blocks_arr[sb_id].host_hc_status_block.vf_sb; in lm_vf_setup_alloc_resc()
2610 p_sb = (void *)pdev->vars.status_blocks_arr[sb_id].host_hc_status_block.e2_sb; in lm_vf_setup_alloc_resc()
2621 lm_reset_sb_ack_values(pdev); in lm_vf_setup_alloc_resc()
2623 mm_mem_zero(pdev->debug_info.ack_dis, sizeof(pdev->debug_info.ack_dis)); in lm_vf_setup_alloc_resc()
2624 mm_mem_zero(pdev->debug_info.ack_en, sizeof(pdev->debug_info.ack_en)); in lm_vf_setup_alloc_resc()
2625 mm_mem_zero(pdev->debug_info.rx_only_int, sizeof(pdev->debug_info.rx_only_int)); in lm_vf_setup_alloc_resc()
2626 mm_mem_zero(pdev->debug_info.tx_only_int, sizeof(pdev->debug_info.tx_only_int)); in lm_vf_setup_alloc_resc()
2627 mm_mem_zero(pdev->debug_info.both_int, sizeof(pdev->debug_info.both_int)); in lm_vf_setup_alloc_resc()
2628 mm_mem_zero(pdev->debug_info.empty_int, sizeof(pdev->debug_info.empty_int)); in lm_vf_setup_alloc_resc()
2629 mm_mem_zero(pdev->debug_info.false_int, sizeof(pdev->debug_info.false_int)); in lm_vf_setup_alloc_resc()
2637 pdev->params.mac_config[LM_CLI_IDX_NDIS] = mm_alloc_phys_mem(pdev, in lm_vf_setup_alloc_resc()
2639 &pdev->params.mac_config_phy[LM_CLI_IDX_NDIS], in lm_vf_setup_alloc_resc()
2643 if CHK_NULL( pdev->params.mac_config[LM_CLI_IDX_NDIS] ) in lm_vf_setup_alloc_resc()
2649 mm_mem_zero((void *) (pdev->params.mac_config[LM_CLI_IDX_NDIS]), alloc_size ); in lm_vf_setup_alloc_resc()
2653 pdev->params.mcast_config = mm_alloc_phys_mem(pdev, in lm_vf_setup_alloc_resc()
2655 &pdev->params.mcast_config_phy, in lm_vf_setup_alloc_resc()
2660 if CHK_NULL( pdev->params.mcast_config ) in lm_vf_setup_alloc_resc()
2665 mm_mem_zero((void *) (pdev->params.mcast_config), alloc_size); in lm_vf_setup_alloc_resc()
2671 lm_status_t lm_vf_chip_init(struct _lm_device_t *pdev) in lm_vf_chip_init() argument
2675 DbgMessage(pdev, WARNvf, "lm_vf_chip_init\n"); in lm_vf_chip_init()
2677 lm_status = lm_vf_pf_init_vf(pdev); in lm_vf_chip_init()
2679 lm_status = lm_vf_pf_wait_no_messages_pending(pdev); in lm_vf_chip_init()
2688 igu_sb_cnt = LM_IGU_SB_CNT(pdev); in lm_vf_chip_init()
2692 … lm_int_igu_ack_sb(pdev, IGU_VF_NDSB(pdev,sb_id), IGU_SEG_ACCESS_NORM, 0, IGU_INT_DISABLE, 0); in lm_vf_chip_init()
2693 … lm_int_igu_ack_sb(pdev, IGU_VF_NDSB(pdev,sb_id), IGU_SEG_ACCESS_NORM, 0, IGU_INT_ENABLE, 1); in lm_vf_chip_init()
2701 pdev->vars.cable_is_attached = TRUE; in lm_vf_chip_init()
2702 pdev->vars.link_status = LM_STATUS_LINK_ACTIVE; in lm_vf_chip_init()
2703 if (IS_HW_CHANNEL_VIRT_MODE(pdev) && pdev->vars.pf_link_speed) in lm_vf_chip_init()
2705 switch(pdev->vars.pf_link_speed) in lm_vf_chip_init()
2708 SET_MEDIUM_SPEED(pdev->vars.medium, LM_MEDIUM_SPEED_10MBPS); in lm_vf_chip_init()
2712 SET_MEDIUM_SPEED(pdev->vars.medium, LM_MEDIUM_SPEED_100MBPS); in lm_vf_chip_init()
2716 SET_MEDIUM_SPEED(pdev->vars.medium, LM_MEDIUM_SPEED_1000MBPS); in lm_vf_chip_init()
2720 SET_MEDIUM_SPEED(pdev->vars.medium, LM_MEDIUM_SPEED_2500MBPS); in lm_vf_chip_init()
2724 SET_MEDIUM_SPEED(pdev->vars.medium, LM_MEDIUM_SPEED_20GBPS); in lm_vf_chip_init()
2729 SET_MEDIUM_SPEED(pdev->vars.medium, LM_MEDIUM_SPEED_10GBPS); in lm_vf_chip_init()
2735 SET_MEDIUM_SPEED(pdev->vars.medium,LM_MEDIUM_SPEED_10GBPS); in lm_vf_chip_init()
2739 DbgMessage(pdev, WARNvf, "lm_vf_chip_init lm_status = %d\n", lm_status); in lm_vf_chip_init()
2743 lm_status_t lm_vf_queue_init(struct _lm_device_t *pdev, u8_t cid) in lm_vf_queue_init() argument
2747 u8_t q_index = LM_SW_CID_TO_SW_QID(pdev,cid); in lm_vf_queue_init()
2749 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_queue_init()
2752 presp = (struct pf_vf_msg_acquire_resp *)pdev->pf_vf_acquiring_resp; in lm_vf_queue_init()
2762 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_vf_queue_init()
2765 presp = (struct pfvf_acquire_resp_tlv *)pdev->pf_vf_acquiring_resp; in lm_vf_queue_init()
2780 DbgMessage(pdev, WARNvf, "validation_flag = %d\n", validation_flag); in lm_vf_queue_init()
2782 lm_status = lm_vf_pf_setup_q(pdev, q_index, validation_flag); in lm_vf_queue_init()
2784 lm_status = lm_vf_pf_wait_no_messages_pending(pdev); in lm_vf_queue_init()
2787 lm_set_con_state(pdev, cid, LM_CON_STATE_OPEN); in lm_vf_queue_init()
2793 lm_status_t lm_vf_queue_close(struct _lm_device_t *pdev, u8_t cid) in lm_vf_queue_close() argument
2796 u8_t q_index = LM_SW_CID_TO_SW_QID(pdev,cid); in lm_vf_queue_close()
2798 if (lm_reset_is_inprogress(pdev)) { in lm_vf_queue_close()
2799 lm_set_con_state(pdev, cid, LM_CON_STATE_CLOSE); in lm_vf_queue_close()
2803 if (lm_get_con_state(pdev, cid) == LM_CON_STATE_OPEN) { in lm_vf_queue_close()
2804 lm_status = lm_vf_pf_tear_q_down(pdev, q_index); in lm_vf_queue_close()
2806 lm_status = lm_vf_pf_wait_no_messages_pending(pdev); in lm_vf_queue_close()
2813 lm_set_con_state(pdev, cid, LM_CON_STATE_CLOSE); in lm_vf_queue_close()
2819 lm_status_t lm_vf_chip_reset(struct _lm_device_t *pdev, lm_reason_t reason) in lm_vf_chip_reset() argument
2823 if (lm_reset_is_inprogress(pdev)) { in lm_vf_chip_reset()
2827 lm_status = lm_vf_pf_close_vf(pdev); in lm_vf_chip_reset()
2829 lm_status = lm_vf_pf_wait_no_messages_pending(pdev); in lm_vf_chip_reset()
2835 u8_t lm_vf_is_function_after_flr(struct _lm_device_t * pdev) in lm_vf_is_function_after_flr() argument
2840 lm_status_t lm_vf_init_dev_info(struct _lm_device_t *pdev) in lm_vf_init_dev_info() argument
2842 DbgMessage(pdev, WARN, "lm_vf_init_dev_info>>\n"); in lm_vf_init_dev_info()
2844 pdev->context_info = NULL; in lm_vf_init_dev_info()
2845 mm_mem_zero((void *) &pdev->cid_recycled_callbacks, sizeof(pdev->cid_recycled_callbacks)); in lm_vf_init_dev_info()
2846 mm_mem_zero((void *) &pdev->toe_info, sizeof(pdev->toe_info)); in lm_vf_init_dev_info()
2852 lm_status_t lm_vf_recycle_resc_in_pf(struct _lm_device_t *pdev) in lm_vf_recycle_resc_in_pf() argument
2859 lm_status_t lm_vf_enable_vf(struct _lm_device_t *pdev) in lm_vf_enable_vf() argument
2865 lm_status_t lm_vf_enable_igu_int(struct _lm_device_t * pdev) in lm_vf_enable_igu_int() argument
2871 lm_status_t lm_vf_disable_igu_int(struct _lm_device_t * pdev) in lm_vf_disable_igu_int() argument
2877 pfvf_bb_event_type lm_vf_check_hw_back_channel(struct _lm_device_t * pdev) in lm_vf_check_hw_back_channel() argument
2879 …struct pf_vf_bulletin_content volatile *bulletin = (struct pf_vf_bulletin_content *)pdev->vars.vf_… in lm_vf_check_hw_back_channel()
2884 DbgMessage(pdev, FATAL, "PF to VF channel is not active\n"); in lm_vf_check_hw_back_channel()
2887 if (pdev->vars.vf_pf_mess.old_version != bulletin->version) in lm_vf_check_hw_back_channel()
2897 DbgMessage(pdev, FATAL, "PF to VF channel: CRC error\n"); in lm_vf_check_hw_back_channel()
2900 pdev->vars.vf_pf_mess.old_version = bulletin->version; in lm_vf_check_hw_back_channel()
2903 DbgMessage(pdev, FATAL, "PF to VF channel: PF provides VLAN\n"); in lm_vf_check_hw_back_channel()
2907 if ((bulletin->mac[0] != pdev->params.mac_addr[0]) in lm_vf_check_hw_back_channel()
2908 || (bulletin->mac[1] != pdev->params.mac_addr[1]) in lm_vf_check_hw_back_channel()
2909 || (bulletin->mac[2] != pdev->params.mac_addr[2]) in lm_vf_check_hw_back_channel()
2910 || (bulletin->mac[3] != pdev->params.mac_addr[3]) in lm_vf_check_hw_back_channel()
2911 || (bulletin->mac[4] != pdev->params.mac_addr[4]) in lm_vf_check_hw_back_channel()
2912 || (bulletin->mac[5] != pdev->params.mac_addr[5])) in lm_vf_check_hw_back_channel()
2914 DbgMessage(pdev, FATAL, "PF to VF channel: PF provides new MAC\n"); in lm_vf_check_hw_back_channel()
2921 lm_status_t lm_pf_enable_vf_igu_int(struct _lm_device_t * pdev, u8_t abs_vf_id) in lm_pf_enable_vf_igu_int() argument
2932 lm_vf_info_t * vf_info = lm_pf_find_vf_info_by_abs_id(pdev, abs_vf_id); in lm_pf_enable_vf_igu_int()
2936 pretend_val = ABS_FUNC_ID(pdev) | (1<<3) | (abs_vf_id << 4); in lm_pf_enable_vf_igu_int()
2937 lm_pretend_func(PFDEV(pdev), pretend_val); in lm_pf_enable_vf_igu_int()
2939 REG_WR(PFDEV(pdev), IGU_REG_SB_INT_BEFORE_MASK_LSB, 0); in lm_pf_enable_vf_igu_int()
2940 REG_WR(PFDEV(pdev), IGU_REG_SB_INT_BEFORE_MASK_MSB, 0); in lm_pf_enable_vf_igu_int()
2941 REG_WR(PFDEV(pdev), IGU_REG_SB_MASK_LSB, 0); in lm_pf_enable_vf_igu_int()
2942 REG_WR(PFDEV(pdev), IGU_REG_SB_MASK_MSB, 0); in lm_pf_enable_vf_igu_int()
2943 REG_WR(PFDEV(pdev), IGU_REG_PBA_STATUS_LSB, 0); in lm_pf_enable_vf_igu_int()
2944 REG_WR(PFDEV(pdev), IGU_REG_PBA_STATUS_MSB, 0); in lm_pf_enable_vf_igu_int()
2947 val=REG_RD(PFDEV(pdev), IGU_REG_VF_CONFIGURATION); in lm_pf_enable_vf_igu_int()
2952 if (pdev->params.interrupt_mode == LM_INT_MODE_SIMD) { in lm_pf_enable_vf_igu_int()
2957 val |= ((FUNC_ID(pdev) << IGU_VF_CONF_PARENT_SHIFT) & IGU_VF_CONF_PARENT_MASK); in lm_pf_enable_vf_igu_int()
2959 REG_WR(PFDEV(pdev), IGU_REG_VF_CONFIGURATION, val); in lm_pf_enable_vf_igu_int()
2966 REG_WR(PFDEV(pdev), IGU_REG_PROD_CONS_MEMORY + (prod_idx + i)*4, 0); in lm_pf_enable_vf_igu_int()
2968 SB_RX_INDEX(pdev,LM_VF_IGU_SB_ID(vf_info,sb_id)) = 0; in lm_pf_enable_vf_igu_int()
2969 lm_int_ack_sb_enable(pdev, LM_VF_IGU_SB_ID(vf_info,sb_id)); in lm_pf_enable_vf_igu_int()
2970 lm_pf_int_vf_igu_sb_cleanup(pdev, vf_info, sb_id); in lm_pf_enable_vf_igu_int()
2973 lm_status = lm_pretend_func(PFDEV(pdev), ABS_FUNC_ID(pdev)); in lm_pf_enable_vf_igu_int()
2977 lm_status_t lm_pf_disable_vf_igu_int(struct _lm_device_t * pdev, u8_t abs_vf_id) in lm_pf_disable_vf_igu_int() argument
2984 if (lm_fl_reset_is_inprogress(PFDEV(pdev))) { in lm_pf_disable_vf_igu_int()
2985 DbgMessage(pdev, FATAL, "PF[%d] of VF[%d] is under FLR\n", FUNC_ID(pdev), abs_vf_id); in lm_pf_disable_vf_igu_int()
2988 pretend_val = ABS_FUNC_ID(pdev) | (1<<3) | (abs_vf_id << 4); in lm_pf_disable_vf_igu_int()
2989 lm_pretend_func(PFDEV(pdev), pretend_val); in lm_pf_disable_vf_igu_int()
2991 val = REG_RD(PFDEV(pdev), IGU_REG_VF_CONFIGURATION); in lm_pf_disable_vf_igu_int()
2996 REG_WR(PFDEV(pdev), IGU_REG_VF_CONFIGURATION, val); in lm_pf_disable_vf_igu_int()
2998 lm_status = lm_pretend_func(PFDEV(pdev), ABS_FUNC_ID(pdev)); in lm_pf_disable_vf_igu_int()
3003 lm_pf_enable_vf(struct _lm_device_t *pdev, u8_t abs_vf_id) in lm_pf_enable_vf() argument
3014 lm_vf_info_t * vf_info = lm_pf_find_vf_info_by_abs_id(pdev, abs_vf_id); in lm_pf_enable_vf()
3022 pretend_val = ABS_FUNC_ID(pdev) | (1<<3) | (abs_vf_id << 4); in lm_pf_enable_vf()
3023 lm_status = lm_pretend_func(PFDEV(pdev), pretend_val); in lm_pf_enable_vf()
3025 REG_WR(PFDEV(pdev), PBF_REG_DISABLE_VF,0); in lm_pf_enable_vf()
3026 REG_WR(PFDEV(pdev), PGLUE_B_REG_INTERNAL_VFID_ENABLE, 1); in lm_pf_enable_vf()
3027 lm_pretend_func(PFDEV(pdev), ABS_FUNC_ID(pdev) ); in lm_pf_enable_vf()
3028 DbgMessage(pdev, FATAL, "vf[%d] is enabled\n", abs_vf_id); in lm_pf_enable_vf()
3030 was_err_num = 2 * PATH_ID(pdev) + abs_vf_id / 32; in lm_pf_enable_vf()
3046 DbgMessage(pdev, FATAL,"Wrong Path[%d], VF[%d]\n",PATH_ID(pdev),abs_vf_id); in lm_pf_enable_vf()
3052 …REG_WR(PFDEV(pdev), was_err_reg, was_err_value); /* PglueB - Clear the was_error indication of the… in lm_pf_enable_vf()
3059 REG_WR(PFDEV(pdev), IGU_REG_PROD_CONS_MEMORY + prod_idx*4, 0); in lm_pf_enable_vf()
3060 DbgMessage(pdev, FATAL, "IGU[%d] is inialized\n", prod_idx); in lm_pf_enable_vf()
3062 REG_WR(PFDEV(pdev),TSEM_REG_VFPF_ERR_NUM, abs_vf_id); in lm_pf_enable_vf()
3063 REG_WR(PFDEV(pdev),USEM_REG_VFPF_ERR_NUM, abs_vf_id); in lm_pf_enable_vf()
3064 REG_WR(PFDEV(pdev),CSEM_REG_VFPF_ERR_NUM, abs_vf_id); in lm_pf_enable_vf()
3065 REG_WR(PFDEV(pdev),XSEM_REG_VFPF_ERR_NUM, abs_vf_id); in lm_pf_enable_vf()
3067 DbgMessage(pdev, FATAL, "lm_pretend_func(%x) returns %d\n",pretend_val,lm_status); in lm_pf_enable_vf()
3068 DbgMessage(pdev, FATAL, "vf[%d] is not enabled\n", abs_vf_id); in lm_pf_enable_vf()
3076 lm_pf_disable_vf(struct _lm_device_t *pdev, u8_t abs_vf_id) in lm_pf_disable_vf() argument
3081 if (lm_pf_fl_vf_reset_is_inprogress(pdev,abs_vf_id)) { in lm_pf_disable_vf()
3082 … DbgMessage(pdev, FATAL, "vf disable called on a flred function - not much we can do here... \n"); in lm_pf_disable_vf()
3085 pretend_val = ABS_FUNC_ID(pdev) | (1<<3) | (abs_vf_id << 4); in lm_pf_disable_vf()
3086 lm_status = lm_pretend_func(PFDEV(pdev), pretend_val); in lm_pf_disable_vf()
3088 REG_WR(PFDEV(pdev), PBF_REG_DISABLE_VF,1); in lm_pf_disable_vf()
3089 REG_WR(PFDEV(pdev), PGLUE_B_REG_INTERNAL_VFID_ENABLE, 0); in lm_pf_disable_vf()
3090 lm_pretend_func(PFDEV(pdev), ABS_FUNC_ID(pdev) ); in lm_pf_disable_vf()
3091 DbgMessage(pdev, FATAL, "vf[%d] is disbled\n", abs_vf_id); in lm_pf_disable_vf()
3093 DbgMessage(pdev, FATAL, "lm_pretend_func(%x) returns %d\n",pretend_val,lm_status); in lm_pf_disable_vf()
3094 DbgMessage(pdev, FATAL, "vf[%d] is not enabled\n", abs_vf_id); in lm_pf_disable_vf()
3102 lm_status_t lm_pf_create_vf(struct _lm_device_t *pdev, u16_t abs_vf_id, void* ctx) in lm_pf_create_vf() argument
3111 DbgMessage(pdev, WARN, "lm_pf_create_vf(%d)\n",abs_vf_id); in lm_pf_create_vf()
3112 vf_info = lm_pf_find_vf_info_by_abs_id(pdev, (u8_t)abs_vf_id); in lm_pf_create_vf()
3117 lm_status = lm_pf_set_vf_ctx(pdev, vf_info->relative_vf_id, ctx); in lm_pf_create_vf()
3122 lm_pf_get_queues_number(pdev, vf_info, &num_rxqs, &num_txqs); in lm_pf_create_vf()
3123 num_of_vf_avaiable_chains = lm_pf_allocate_vf_igu_sbs(pdev, vf_info, num_rxqs); in lm_pf_create_vf()
3130 …chains_resource_acquired = lm_pf_acquire_vf_chains_resources(pdev, vf_info->relative_vf_id, num_of… in lm_pf_create_vf()
3140 lm_status = lm_pf_set_vf_stat_id(pdev, vf_info->relative_vf_id, base_fw_stat_id); in lm_pf_create_vf()
3141 lm_pf_init_vf_slow_path(pdev, vf_info); in lm_pf_create_vf()
3142 lm_pf_init_vf_client(pdev, vf_info, 0); in lm_pf_create_vf()
3144 …lm_status = lm_set_rx_mask(pdev, vf_info->vf_chains[0].sw_client_id, LM_RX_MASK_ACCEPT_NONE, NULL); in lm_pf_create_vf()
3149 lm_status = lm_wait_set_rx_mask_done(pdev, vf_info->vf_chains[0].sw_client_id); in lm_pf_create_vf()
3152 lm_status = lm_pf_enable_vf(pdev, vf_info->abs_vf_id); in lm_pf_create_vf()
3160 lm_status_t lm_pf_remove_vf(struct _lm_device_t *pdev, u16_t abs_vf_id) in lm_pf_remove_vf() argument
3165 lm_vf_info_t * vf_info = lm_pf_find_vf_info_by_abs_id(pdev, (u8_t)abs_vf_id); in lm_pf_remove_vf()
3167 DbgMessage(pdev, WARN, "lm_pf_remove_vf(%d)\n",abs_vf_id); in lm_pf_remove_vf()
3172 if (lm_pf_fl_vf_reset_is_inprogress(pdev, (u8_t)abs_vf_id)) { in lm_pf_remove_vf()
3173 MM_ACQUIRE_VFS_STATS_LOCK(pdev); in lm_pf_remove_vf()
3179 MM_RELEASE_VFS_STATS_LOCK(pdev); in lm_pf_remove_vf()
3180 lm_status = lm_pf_vf_wait_for_stats_ready(pdev, vf_info); in lm_pf_remove_vf()
3188 cid = LM_VF_Q_ID_TO_PF_CID(pdev, vf_info, q_idx); in lm_pf_remove_vf()
3190 con_state = lm_get_con_state(pdev, cid); in lm_pf_remove_vf()
3194 … DbgMessage(pdev, FATAL, "State of CID %d of VF[%d(rel)] is %d)\n",cid, vf_info->relative_vf_id, in lm_pf_remove_vf()
3198 lm_set_con_state(pdev, cid, LM_CON_STATE_HALT); in lm_pf_remove_vf()
3199 lm_status = lm_terminate_eth_con(pdev, cid); in lm_pf_remove_vf()
3200 … DbgMessage(pdev, WARN, "lm_pf_remove_vf(%d): terminate CID %d (0x%x)\n",abs_vf_id,cid,lm_status); in lm_pf_remove_vf()
3206 lm_set_con_state(pdev, cid, LM_CON_STATE_CLOSE); in lm_pf_remove_vf()
3211 lm_status = lm_pf_cleanup_vf_after_flr(pdev, vf_info); in lm_pf_remove_vf()
3213 lm_status = lm_pf_disable_vf(pdev,vf_info->abs_vf_id); in lm_pf_remove_vf()
3216 lm_pf_release_vf_chains_resources(pdev, vf_info->relative_vf_id); in lm_pf_remove_vf()
3217 lm_status = lm_pf_set_vf_ctx(pdev, vf_info->relative_vf_id, NULL); in lm_pf_remove_vf()
3224 lm_status_t lm_pf_cleanup_vf_after_flr(struct _lm_device_t *pdev, lm_vf_info_t *vf_info) in lm_pf_cleanup_vf_after_flr() argument
3238 if (CHIP_REV_IS_EMUL(pdev)) in lm_pf_cleanup_vf_after_flr()
3242 else if (CHIP_REV_IS_FPGA(pdev)) in lm_pf_cleanup_vf_after_flr()
3252 pdev->flr_stats.default_wait_interval_ms = DEFAULT_WAIT_INTERVAL_MICSEC; in lm_pf_cleanup_vf_after_flr()
3253 DbgMessage(pdev, FATAL, "lm_cleanup_after_flr VF[%d] >>>\n",vf_info->abs_vf_id); in lm_pf_cleanup_vf_after_flr()
3267 pretend_value = ABS_FUNC_ID(pdev) | (1<<3) | (vf_info->abs_vf_id << 4); in lm_pf_cleanup_vf_after_flr()
3268 lm_status = lm_pretend_func(PFDEV(pdev), pretend_value); in lm_pf_cleanup_vf_after_flr()
3270pdev->flr_stats.dq_usage_counter = REG_WAIT_VERIFY_VAL(PFDEV(pdev), DORQ_REG_VF_USAGE_CNT, 0, wait… in lm_pf_cleanup_vf_after_flr()
3271 lm_pretend_func(PFDEV(pdev), ABS_FUNC_ID(pdev)); in lm_pf_cleanup_vf_after_flr()
3272 …DbgMessage(pdev, FATAL, "%d*%dms waiting for DQ per vf usage counter\n", pdev->flr_stats.dq_usage_… in lm_pf_cleanup_vf_after_flr()
3274 DbgMessage(pdev, FATAL,"lm_pretend_func(%x) returns %d\n",pretend_value,lm_status); in lm_pf_cleanup_vf_after_flr()
3275 DbgMessage(pdev, FATAL, "VF[%d]: could not read DORQ_REG_VF_USAGE_CNT\n", ABS_VFID(pdev)); in lm_pf_cleanup_vf_after_flr()
3284 …LM_INTMEM_READ32(PFDEV(pdev),CSTORM_FINAL_CLEANUP_COMPLETE_OFFSET(function_for_clean_up),&cleanup_… in lm_pf_cleanup_vf_after_flr()
3286 DbgMessage(pdev, FATAL, "CSTORM_FINAL_CLEANUP_COMPLETE_OFFSET is %x",cleanup_complete); in lm_pf_cleanup_vf_after_flr()
3295 DbgMessage(pdev, FATAL, "Final cleanup\n"); in lm_pf_cleanup_vf_after_flr()
3296 REG_WR(PFDEV(pdev),XSDM_REG_OPERATION_GEN, final_cleanup.command); in lm_pf_cleanup_vf_after_flr()
3297pdev->flr_stats.final_cleanup_complete = REG_WAIT_VERIFY_VAL(PFDEV(pdev), BAR_CSTRORM_INTMEM + CST… in lm_pf_cleanup_vf_after_flr()
3298 …DbgMessage(pdev, FATAL, "%d*%dms waiting for final cleanup compete\n", pdev->flr_stats.final_clean… in lm_pf_cleanup_vf_after_flr()
3300 …LM_INTMEM_WRITE32(PFDEV(pdev),CSTORM_FINAL_CLEANUP_COMPLETE_OFFSET(function_for_clean_up),0, BAR_C… in lm_pf_cleanup_vf_after_flr()
3328 … pbf_reg_pN_tq_occupancy = (CHIP_IS_E3B0(pdev))? PBF_REG_TQ_OCCUPANCY_Q0 : PBF_REG_P0_TQ_OCCUPANCY; in lm_pf_cleanup_vf_after_flr()
3329 …pbf_reg_pN_tq_lines_freed_cnt = (CHIP_IS_E3B0(pdev)) ? PBF_REG_TQ_LINES_FREED_CNT_Q0 : PBF_REG_P0_… in lm_pf_cleanup_vf_after_flr()
3332 …pbf_reg_pN_tq_occupancy = (CHIP_IS_E3B0(pdev)) ? PBF_REG_TQ_OCCUPANCY_Q1 : PBF_REG_P1_TQ_OCCUPANCY; in lm_pf_cleanup_vf_after_flr()
3333 …pbf_reg_pN_tq_lines_freed_cnt = (CHIP_IS_E3B0(pdev)) ? PBF_REG_TQ_LINES_FREED_CNT_Q1 : PBF_REG_P1_… in lm_pf_cleanup_vf_after_flr()
3336 …pbf_reg_pN_tq_occupancy = (CHIP_IS_E3B0(pdev)) ? PBF_REG_TQ_OCCUPANCY_LB_Q : PBF_REG_P4_TQ_OCCUPAN… in lm_pf_cleanup_vf_after_flr()
3337 …pbf_reg_pN_tq_lines_freed_cnt = (CHIP_IS_E3B0(pdev)) ? PBF_REG_TQ_LINES_FREED_CNT_LB_Q : PBF_REG_P… in lm_pf_cleanup_vf_after_flr()
3340 pdev->flr_stats.pbf_queue[idx] = 0; in lm_pf_cleanup_vf_after_flr()
3341 tq_freed_cnt_last = tq_freed_cnt_start = REG_RD(PFDEV(pdev), pbf_reg_pN_tq_lines_freed_cnt); in lm_pf_cleanup_vf_after_flr()
3342 tq_occ = tq_to_free = REG_RD(PFDEV(pdev), pbf_reg_pN_tq_occupancy); in lm_pf_cleanup_vf_after_flr()
3343 DbgMessage(pdev, FATAL, "TQ_OCCUPANCY[%d] : s:%x\n", (idx == 2) ? 4 : idx, tq_to_free); in lm_pf_cleanup_vf_after_flr()
3344 …DbgMessage(pdev, FATAL, "TQ_LINES_FREED_CNT[%d]: s:%x\n", (idx == 2) ? 4 : idx, tq_freed_cnt_start… in lm_pf_cleanup_vf_after_flr()
3346 if (pdev->flr_stats.pbf_queue[idx]++ < wait_ms/DEFAULT_WAIT_INTERVAL_MICSEC) { in lm_pf_cleanup_vf_after_flr()
3347 mm_wait(PFDEV(pdev), DEFAULT_WAIT_INTERVAL_MICSEC); in lm_pf_cleanup_vf_after_flr()
3348 tq_occ = REG_RD(PFDEV(pdev), pbf_reg_pN_tq_occupancy); in lm_pf_cleanup_vf_after_flr()
3349 tq_freed_cnt_last = REG_RD(PFDEV(pdev), pbf_reg_pN_tq_lines_freed_cnt); in lm_pf_cleanup_vf_after_flr()
3351 … DbgMessage(pdev, FATAL, "TQ_OCCUPANCY[%d] : c:%x\n", (idx == 2) ? 4 : idx, tq_occ); in lm_pf_cleanup_vf_after_flr()
3352 …DbgMessage(pdev, FATAL, "TQ_LINES_FREED_CNT[%d]: c:%x\n", (idx == 2) ? 4 : idx, tq_freed_cnt_last); in lm_pf_cleanup_vf_after_flr()
3357 DbgMessage(pdev, FATAL, "%d*%dms waiting for PBF command queue[%d] is flushed\n", in lm_pf_cleanup_vf_after_flr()
3358pdev->flr_stats.pbf_queue[idx], DEFAULT_WAIT_INTERVAL_MICSEC, (idx == 2) ? 4 : idx); in lm_pf_cleanup_vf_after_flr()
3376 pbf_reg_pN_init_crd = (CHIP_IS_E3B0(pdev)) ? PBF_REG_INIT_CRD_Q0 : PBF_REG_P0_INIT_CRD; in lm_pf_cleanup_vf_after_flr()
3377 pbf_reg_pN_credit = (CHIP_IS_E3B0(pdev)) ? PBF_REG_CREDIT_Q0 : PBF_REG_P0_CREDIT; in lm_pf_cleanup_vf_after_flr()
3378 …pbf_reg_pN_internal_crd_freed = (CHIP_IS_E3B0(pdev)) ? PBF_REG_INTERNAL_CRD_FREED_CNT_Q0 : PBF_REG… in lm_pf_cleanup_vf_after_flr()
3381 pbf_reg_pN_init_crd = (CHIP_IS_E3B0(pdev)) ? PBF_REG_INIT_CRD_Q1: PBF_REG_P1_INIT_CRD; in lm_pf_cleanup_vf_after_flr()
3382 pbf_reg_pN_credit = (CHIP_IS_E3B0(pdev)) ? PBF_REG_CREDIT_Q1 : PBF_REG_P1_CREDIT; in lm_pf_cleanup_vf_after_flr()
3383 …pbf_reg_pN_internal_crd_freed = (CHIP_IS_E3B0(pdev)) ? PBF_REG_INTERNAL_CRD_FREED_CNT_Q1 : PBF_REG… in lm_pf_cleanup_vf_after_flr()
3386 … pbf_reg_pN_init_crd = (CHIP_IS_E3B0(pdev)) ? PBF_REG_INIT_CRD_LB_Q : PBF_REG_P4_INIT_CRD; in lm_pf_cleanup_vf_after_flr()
3387 pbf_reg_pN_credit = (CHIP_IS_E3B0(pdev)) ? PBF_REG_CREDIT_LB_Q : PBF_REG_P4_CREDIT; in lm_pf_cleanup_vf_after_flr()
3388 …pbf_reg_pN_internal_crd_freed = (CHIP_IS_E3B0(pdev)) ? PBF_REG_INTERNAL_CRD_FREED_CNT_LB_Q : PBF_R… in lm_pf_cleanup_vf_after_flr()
3391 pdev->flr_stats.pbf_transmit_buffer[idx] = 0; in lm_pf_cleanup_vf_after_flr()
3392 …inernal_freed_crd_last = inernal_freed_crd_start = REG_RD(PFDEV(pdev), pbf_reg_pN_internal_crd_fre… in lm_pf_cleanup_vf_after_flr()
3393 credit_last = credit_start = REG_RD(PFDEV(pdev), pbf_reg_pN_credit); in lm_pf_cleanup_vf_after_flr()
3394 init_crd = REG_RD(PFDEV(pdev), pbf_reg_pN_init_crd); in lm_pf_cleanup_vf_after_flr()
3395 DbgMessage(pdev, FATAL, "INIT CREDIT[%d] : %x\n", (idx == 2) ? 4 : idx, init_crd); in lm_pf_cleanup_vf_after_flr()
3396 … DbgMessage(pdev, FATAL, "CREDIT[%d] : s:%x\n", (idx == 2) ? 4 : idx, credit_start); in lm_pf_cleanup_vf_after_flr()
3397 …DbgMessage(pdev, FATAL, "INTERNAL_CRD_FREED[%d]: s:%x\n", (idx == 2) ? 4 : idx, inernal_freed_crd_… in lm_pf_cleanup_vf_after_flr()
3400 if (pdev->flr_stats.pbf_transmit_buffer[idx]++ < wait_ms/DEFAULT_WAIT_INTERVAL_MICSEC) { in lm_pf_cleanup_vf_after_flr()
3401 mm_wait(PFDEV(pdev), DEFAULT_WAIT_INTERVAL_MICSEC); in lm_pf_cleanup_vf_after_flr()
3402 credit_last = REG_RD(PFDEV(pdev), pbf_reg_pN_credit); in lm_pf_cleanup_vf_after_flr()
3403 inernal_freed_crd_last = REG_RD(PFDEV(pdev), pbf_reg_pN_internal_crd_freed); in lm_pf_cleanup_vf_after_flr()
3405 … DbgMessage(pdev, FATAL, "CREDIT[%d] : c:%x\n", (idx == 2) ? 4 : idx, credit_last); in lm_pf_cleanup_vf_after_flr()
3406 …DbgMessage(pdev, FATAL, "INTERNAL_CRD_FREED[%d]: c:%x\n", (idx == 2) ? 4 : idx, inernal_freed_crd_… in lm_pf_cleanup_vf_after_flr()
3411 DbgMessage(pdev, FATAL, "%d*%dms waiting for PBF transmission buffer[%d] is flushed\n", in lm_pf_cleanup_vf_after_flr()
3412pdev->flr_stats.pbf_transmit_buffer[idx], DEFAULT_WAIT_INTERVAL_MICSEC, (idx == 2) ? 4 : idx); in lm_pf_cleanup_vf_after_flr()
3418 mm_wait(pdev, 10000*factor); in lm_pf_cleanup_vf_after_flr()
3429 if (IS_VFDEV(pdev)) in lm_pf_cleanup_vf_after_flr()
3432 lm_set_con_state(pdev, LM_VF_Q_ID_TO_PF_CID(pdev, vf_info,0), LM_CON_STATE_CLOSE); in lm_pf_cleanup_vf_after_flr()
3441 void lm_pf_fl_vf_reset_set_inprogress(struct _lm_device_t * pdev, u8_t abs_vf_id) in lm_pf_fl_vf_reset_set_inprogress() argument
3443 lm_vf_info_t * vf_info = lm_pf_find_vf_info_by_abs_id(pdev, (u8_t)abs_vf_id); in lm_pf_fl_vf_reset_set_inprogress()
3445 DbgMessage(pdev, WARN, "lm_pf_fl_vf_reset_set_inprogress(%d)\n",abs_vf_id); in lm_pf_fl_vf_reset_set_inprogress()
3454 void lm_pf_fl_vf_reset_clear_inprogress(struct _lm_device_t *pdev, u8_t abs_vf_id) in lm_pf_fl_vf_reset_clear_inprogress() argument
3456 lm_vf_info_t * vf_info = lm_pf_find_vf_info_by_abs_id(pdev, (u8_t)abs_vf_id); in lm_pf_fl_vf_reset_clear_inprogress()
3458 DbgMessage(pdev, WARN, "lm_pf_fl_vf_reset_clear_inprogress(%d)\n",abs_vf_id); in lm_pf_fl_vf_reset_clear_inprogress()
3467 u8_t lm_pf_fl_vf_reset_is_inprogress(struct _lm_device_t *pdev, u8_t abs_vf_id) in lm_pf_fl_vf_reset_is_inprogress() argument
3469 lm_vf_info_t * vf_info = lm_pf_find_vf_info_by_abs_id(pdev, (u8_t)abs_vf_id); in lm_pf_fl_vf_reset_is_inprogress()
3471 DbgMessage(pdev, WARN, "lm_pf_fl_vf_reset_clear_inprogress(%d)\n",abs_vf_id); in lm_pf_fl_vf_reset_is_inprogress()
3480 lm_status_t lm_pf_finally_release_vf(struct _lm_device_t *pdev, lm_vf_info_t *vf_info) in lm_pf_finally_release_vf() argument
3488 DbgBreakIf(!(pdev && vf_info)); in lm_pf_finally_release_vf()
3490 …DbgMessage(pdev, WARN, "VF[%d%d)] is not closed yet\n", vf_info->relative_vf_id, vf_info->abs_vf_i… in lm_pf_finally_release_vf()
3491 MM_ACQUIRE_VFS_STATS_LOCK(pdev); in lm_pf_finally_release_vf()
3497 MM_RELEASE_VFS_STATS_LOCK(pdev); in lm_pf_finally_release_vf()
3499 lm_status = lm_pf_vf_wait_for_stats_ready(pdev, vf_info); in lm_pf_finally_release_vf()
3507 cid = LM_VF_Q_ID_TO_PF_CID(pdev, vf_info, q_idx); in lm_pf_finally_release_vf()
3510 lm_set_con_state(pdev, cid, LM_CON_STATE_CLOSE); in lm_pf_finally_release_vf()
3514 lm_status = lm_close_eth_con(pdev, cid, TRUE); in lm_pf_finally_release_vf()
3521 lm_pf_disable_vf_igu_int(pdev, vf_info->abs_vf_id); in lm_pf_finally_release_vf()
3527 … LM_INTMEM_WRITE8(PFDEV(pdev), XSTORM_FUNC_EN_OFFSET(function_fw_id), 0, BAR_XSTRORM_INTMEM); in lm_pf_finally_release_vf()
3528 … LM_INTMEM_WRITE8(PFDEV(pdev), CSTORM_FUNC_EN_OFFSET(function_fw_id), 0, BAR_CSTRORM_INTMEM); in lm_pf_finally_release_vf()
3529 … LM_INTMEM_WRITE8(PFDEV(pdev), TSTORM_FUNC_EN_OFFSET(function_fw_id), 0, BAR_TSTRORM_INTMEM); in lm_pf_finally_release_vf()
3530 … LM_INTMEM_WRITE8(PFDEV(pdev), USTORM_FUNC_EN_OFFSET(function_fw_id), 0, BAR_USTRORM_INTMEM); in lm_pf_finally_release_vf()
3533 lm_clear_non_def_status_block(pdev, LM_FW_VF_SB_ID(vf_info, sb_idx)); in lm_pf_finally_release_vf()
3539 REG_WR(PFDEV(pdev), reg, val); in lm_pf_finally_release_vf()
3546 …DbgMessage(pdev, WARN, "VF[%d%d)] is not released yet\n", vf_info->relative_vf_id, vf_info->abs_vf… in lm_pf_finally_release_vf()
3552 lm_status_t lm_pf_tpa_send_vf_ramrod(struct _lm_device_t *pdev, lm_vf_info_t *vf_info, u32_t q_idx,… in lm_pf_tpa_send_vf_ramrod() argument
3592 vf_cid_of_pf = LM_VF_Q_ID_TO_PF_CID(pdev, vf_info, q_idx); in lm_pf_tpa_send_vf_ramrod()
3597 lm_status = lm_sq_post(pdev, in lm_pf_tpa_send_vf_ramrod()
3609 u8_t lm_is_vf_rsc_supported(struct _lm_device_t *pdev) in lm_is_vf_rsc_supported() argument
3612 if (IS_VFDEV(pdev)) { in lm_is_vf_rsc_supported()
3613 if (IS_SW_CHANNEL_VIRT_MODE(pdev)) in lm_is_vf_rsc_supported()
3615 …struct pf_vf_msg_acquire_resp * presp = (struct pf_vf_msg_acquire_resp *)pdev->pf_vf_acquiring_res… in lm_is_vf_rsc_supported()
3620 else if (IS_HW_CHANNEL_VIRT_MODE(pdev)) in lm_is_vf_rsc_supported()
3623 presp = (struct pfvf_acquire_resp_tlv *)pdev->pf_vf_acquiring_resp; in lm_is_vf_rsc_supported()
3636 void lm_pf_init_vf_filters(struct _lm_device_t *pdev, lm_vf_info_t *vf_info) in lm_pf_init_vf_filters() argument
3638 if ((vf_info == NULL) || (pdev == NULL)) in lm_pf_init_vf_filters()
3644 … vf_info->is_promiscuous_mode_restricted = (pdev->params.vf_promiscuous_mode_restricted != 0); in lm_pf_init_vf_filters()
3662 void lm_pf_int_vf_igu_sb_cleanup(lm_device_t *pdev, lm_vf_info_t *vf_info, u8_t vf_chain_id) in lm_pf_int_vf_igu_sb_cleanup() argument
3675 if (INTR_BLK_MODE(pdev) == INTR_BLK_MODE_BC) in lm_pf_int_vf_igu_sb_cleanup()
3680 if ((vf_info == NULL) || (pdev == NULL)) in lm_pf_int_vf_igu_sb_cleanup()
3686 if (IS_VFDEV(pdev)) in lm_pf_int_vf_igu_sb_cleanup()
3707 REG_WR(pdev, IGU_REG_COMMAND_REG_32LSB_DATA, cmd_data.sb_id_and_flags); in lm_pf_int_vf_igu_sb_cleanup()
3708 REG_WR(pdev, IGU_REG_COMMAND_REG_CTRL, cmd_ctrl.ctrl_data); in lm_pf_int_vf_igu_sb_cleanup()
3711 while (!(REG_RD(pdev, igu_addr_ack) & sb_bit) && --cnt) in lm_pf_int_vf_igu_sb_cleanup()
3713 mm_wait(pdev, 10); in lm_pf_int_vf_igu_sb_cleanup()
3716 if (!(REG_RD(pdev, igu_addr_ack) & sb_bit)) in lm_pf_int_vf_igu_sb_cleanup()
3718 …DbgMessage(pdev, FATAL, "Unable to finish IGU cleanup - set: igu_sb_id %d offset %d bit %d (cnt %d… in lm_pf_int_vf_igu_sb_cleanup()
3728 REG_WR(pdev, IGU_REG_COMMAND_REG_32LSB_DATA, cmd_data.sb_id_and_flags); in lm_pf_int_vf_igu_sb_cleanup()
3729 REG_WR(pdev, IGU_REG_COMMAND_REG_CTRL, cmd_ctrl.ctrl_data); in lm_pf_int_vf_igu_sb_cleanup()
3732 while ((REG_RD(pdev, igu_addr_ack) & sb_bit) && --cnt) in lm_pf_int_vf_igu_sb_cleanup()
3734 mm_wait(pdev, 10); in lm_pf_int_vf_igu_sb_cleanup()
3737 if ((REG_RD(pdev, igu_addr_ack) & sb_bit)) in lm_pf_int_vf_igu_sb_cleanup()
3739 …DbgMessage(pdev, FATAL, "Unable to finish IGU cleanup - clear: igu_sb_id %d offset %d bit %d (cnt … in lm_pf_int_vf_igu_sb_cleanup()