Lines Matching refs:hwfn

680 	struct qed_hwfn *hwfn = &cdev->hwfns[index % cdev->num_hwfns];  in qed_simd_handler_config()  local
683 hwfn->simd_proto_handler[relative_idx].func = handler; in qed_simd_handler_config()
684 hwfn->simd_proto_handler[relative_idx].token = token; in qed_simd_handler_config()
689 struct qed_hwfn *hwfn = &cdev->hwfns[index % cdev->num_hwfns]; in qed_simd_handler_clean() local
692 memset(&hwfn->simd_proto_handler[relative_idx], 0, in qed_simd_handler_clean()
705 struct qed_hwfn *hwfn; in qed_single_int() local
716 hwfn = &cdev->hwfns[i]; in qed_single_int()
720 tasklet_schedule(&hwfn->sp_dpc); in qed_single_int()
729 &hwfn->simd_proto_handler[j]; in qed_single_int()
734 DP_NOTICE(hwfn, in qed_single_int()
744 DP_VERBOSE(hwfn, NETIF_MSG_INTR, in qed_single_int()
752 int qed_slowpath_irq_req(struct qed_hwfn *hwfn) in qed_slowpath_irq_req() argument
754 struct qed_dev *cdev = hwfn->cdev; in qed_slowpath_irq_req()
761 id = hwfn->my_id; in qed_slowpath_irq_req()
762 snprintf(hwfn->name, NAME_SIZE, "sp-%d-%02x:%02x.%02x", in qed_slowpath_irq_req()
764 PCI_SLOT(cdev->pdev->devfn), hwfn->abs_pf_id); in qed_slowpath_irq_req()
766 qed_msix_sp_int, 0, hwfn->name, &hwfn->sp_dpc); in qed_slowpath_irq_req()
784 DP_VERBOSE(hwfn, (NETIF_MSG_INTR | QED_MSG_SP), in qed_slowpath_irq_req()
1130 static int qed_slowpath_delayed_work(struct qed_hwfn *hwfn, in qed_slowpath_delayed_work() argument
1134 if (!hwfn->slowpath_wq_active) in qed_slowpath_delayed_work()
1139 set_bit(wq_flag, &hwfn->slowpath_task_flags); in qed_slowpath_delayed_work()
1142 queue_delayed_work(hwfn->slowpath_wq, &hwfn->slowpath_task, delay); in qed_slowpath_delayed_work()
1182 struct qed_hwfn *hwfn = container_of(work, struct qed_hwfn, in qed_slowpath_task() local
1184 struct qed_ptt *ptt = qed_ptt_acquire(hwfn); in qed_slowpath_task()
1187 if (hwfn->slowpath_wq_active) in qed_slowpath_task()
1188 queue_delayed_work(hwfn->slowpath_wq, in qed_slowpath_task()
1189 &hwfn->slowpath_task, 0); in qed_slowpath_task()
1195 &hwfn->slowpath_task_flags)) in qed_slowpath_task()
1196 qed_mfw_process_tlv_req(hwfn, ptt); in qed_slowpath_task()
1199 &hwfn->slowpath_task_flags)) { in qed_slowpath_task()
1201 if (hwfn->cdev->recov_in_prog || !hwfn->slowpath_wq_active) in qed_slowpath_task()
1204 qed_db_rec_handler(hwfn, ptt); in qed_slowpath_task()
1205 if (hwfn->periodic_db_rec_count--) in qed_slowpath_task()
1206 qed_slowpath_delayed_work(hwfn, in qed_slowpath_task()
1212 qed_ptt_release(hwfn, ptt); in qed_slowpath_task()
1217 struct qed_hwfn *hwfn; in qed_slowpath_wq_start() local
1225 hwfn = &cdev->hwfns[i]; in qed_slowpath_wq_start()
1229 PCI_SLOT(cdev->pdev->devfn), hwfn->abs_pf_id); in qed_slowpath_wq_start()
1231 hwfn->slowpath_wq = alloc_workqueue(name, 0, 0); in qed_slowpath_wq_start()
1232 if (!hwfn->slowpath_wq) { in qed_slowpath_wq_start()
1233 DP_NOTICE(hwfn, "Cannot create slowpath workqueue\n"); in qed_slowpath_wq_start()
1237 INIT_DELAYED_WORK(&hwfn->slowpath_task, qed_slowpath_task); in qed_slowpath_wq_start()
1238 hwfn->slowpath_wq_active = true; in qed_slowpath_wq_start()
1252 struct qed_hwfn *hwfn; in qed_slowpath_start() local
1357 hwfn = QED_LEADING_HWFN(cdev); in qed_slowpath_start()
1364 rc = qed_mcp_send_drv_version(hwfn, hwfn->p_main_ptt, in qed_slowpath_start()
1666 struct qed_hwfn *hwfn; in qed_set_link() local
1675 hwfn = &cdev->hwfns[0]; in qed_set_link()
1682 qed_schedule_iov(hwfn, QED_IOV_WQ_VF_FORCE_LINK_QUERY_FLAG); in qed_set_link()
1686 ptt = qed_ptt_acquire(hwfn); in qed_set_link()
1690 link_params = qed_mcp_get_link_params(hwfn); in qed_set_link()
1713 if (qed_mcp_is_ext_speed_supported(hwfn)) in qed_set_link()
1777 rc = qed_mcp_set_link(hwfn, ptt, params->link_up); in qed_set_link()
1779 qed_ptt_release(hwfn, ptt); in qed_set_link()
1813 static int qed_get_link_data(struct qed_hwfn *hwfn, in qed_get_link_data() argument
1820 if (!IS_PF(hwfn->cdev)) { in qed_get_link_data()
1821 qed_vf_get_link_params(hwfn, params); in qed_get_link_data()
1822 qed_vf_get_link_state(hwfn, link); in qed_get_link_data()
1823 qed_vf_get_link_caps(hwfn, link_caps); in qed_get_link_data()
1828 p = qed_mcp_get_link_params(hwfn); in qed_get_link_data()
1833 p = qed_mcp_get_link_state(hwfn); in qed_get_link_data()
1838 p = qed_mcp_get_link_capabilities(hwfn); in qed_get_link_data()
1846 static void qed_fill_link_capability(struct qed_hwfn *hwfn, in qed_fill_link_capability() argument
1853 if (qed_mcp_get_media_type(hwfn, ptt, &media_type)) in qed_fill_link_capability()
1856 if (qed_mcp_get_transceiver_data(hwfn, ptt, &tcvr_state, &tcvr_type)) in qed_fill_link_capability()
1859 if (qed_mcp_trans_speed_mask(hwfn, ptt, &speed_mask)) in qed_fill_link_capability()
1862 if (qed_mcp_get_board_config(hwfn, ptt, &board_cfg)) in qed_fill_link_capability()
1865 DP_VERBOSE(hwfn->cdev, NETIF_MSG_DRV, in qed_fill_link_capability()
2053 DP_VERBOSE(hwfn->cdev, QED_MSG_DEBUG, in qed_fill_link_capability()
2080 static void qed_fill_link(struct qed_hwfn *hwfn, in qed_fill_link() argument
2092 if (qed_get_link_data(hwfn, &params, &link, &link_caps)) { in qed_fill_link()
2093 dev_warn(&hwfn->cdev->pdev->dev, "no link data available\n"); in qed_fill_link()
2101 if (IS_PF(hwfn->cdev) && qed_mcp_is_ext_speed_supported(hwfn)) { in qed_fill_link()
2112 qed_fill_link_capability(hwfn, ptt, in qed_fill_link()
2138 qed_fill_link_capability(hwfn, ptt, params.speed.advertised_speeds, in qed_fill_link()
2142 qed_fill_link_capability(hwfn, ptt, link_caps.speed_capabilities, in qed_fill_link()
2147 qed_fill_link_capability(hwfn, ptt, speed_mask, if_link->lp_caps); in qed_fill_link()
2154 qed_mcp_get_media_type(hwfn, ptt, &media_type); in qed_fill_link()
2193 struct qed_hwfn *hwfn; in qed_get_current_link() local
2197 hwfn = &cdev->hwfns[0]; in qed_get_current_link()
2199 ptt = qed_ptt_acquire(hwfn); in qed_get_current_link()
2201 qed_fill_link(hwfn, ptt, if_link); in qed_get_current_link()
2202 qed_ptt_release(hwfn, ptt); in qed_get_current_link()
2204 DP_NOTICE(hwfn, "Failed to fill link; No PTT\n"); in qed_get_current_link()
2207 qed_fill_link(hwfn, NULL, if_link); in qed_get_current_link()
2214 void qed_link_update(struct qed_hwfn *hwfn, struct qed_ptt *ptt) in qed_link_update() argument
2216 void *cookie = hwfn->cdev->ops_cookie; in qed_link_update()
2217 struct qed_common_cb_ops *op = hwfn->cdev->protocol_ops.common; in qed_link_update()
2220 qed_fill_link(hwfn, ptt, &if_link); in qed_link_update()
2221 qed_inform_vf_link_state(hwfn); in qed_link_update()
2223 if (IS_LEAD_HWFN(hwfn) && cookie) in qed_link_update()
2227 void qed_bw_update(struct qed_hwfn *hwfn, struct qed_ptt *ptt) in qed_bw_update() argument
2229 void *cookie = hwfn->cdev->ops_cookie; in qed_bw_update()
2230 struct qed_common_cb_ops *op = hwfn->cdev->protocol_ops.common; in qed_bw_update()
2232 if (IS_LEAD_HWFN(hwfn) && cookie && op && op->bw_update) in qed_bw_update()
2238 struct qed_hwfn *hwfn; in qed_drain() local
2246 hwfn = &cdev->hwfns[i]; in qed_drain()
2247 ptt = qed_ptt_acquire(hwfn); in qed_drain()
2249 DP_NOTICE(hwfn, "Failed to drain NIG; No PTT\n"); in qed_drain()
2252 rc = qed_mcp_drain(hwfn, ptt); in qed_drain()
2253 qed_ptt_release(hwfn, ptt); in qed_drain()
2537 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_nvm_flash_cfg_write() local
2545 ptt = qed_ptt_acquire(hwfn); in qed_nvm_flash_cfg_write()
2588 rc = qed_mcp_nvm_set_cfg(hwfn, ptt, cfg_id, entity_id, flags, in qed_nvm_flash_cfg_write()
2596 qed_ptt_release(hwfn, ptt); in qed_nvm_flash_cfg_write()
2604 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_nvm_flash_cfg_len() local
2610 ptt = qed_ptt_acquire(hwfn); in qed_nvm_flash_cfg_len()
2614 rc = qed_mcp_nvm_get_cfg(hwfn, ptt, cmd, 0, QED_NVM_CFG_GET_FLAGS, buf, in qed_nvm_flash_cfg_len()
2621 qed_ptt_release(hwfn, ptt); in qed_nvm_flash_cfg_len()
2629 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_nvm_flash_cfg_read() local
2634 ptt = qed_ptt_acquire(hwfn); in qed_nvm_flash_cfg_read()
2641 rc = qed_mcp_nvm_get_cfg(hwfn, ptt, cmd, entity_id, flags, *data, &len); in qed_nvm_flash_cfg_read()
2645 qed_ptt_release(hwfn, ptt); in qed_nvm_flash_cfg_read()
2739 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_nvm_get_image() local
2741 return qed_mcp_get_nvm_image(hwfn, type, buf, len); in qed_nvm_get_image()
2794 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_set_led() local
2798 ptt = qed_ptt_acquire(hwfn); in qed_set_led()
2802 status = qed_mcp_set_led(hwfn, ptt, mode); in qed_set_led()
2804 qed_ptt_release(hwfn, ptt); in qed_set_led()
2828 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_update_wol() local
2835 ptt = qed_ptt_acquire(hwfn); in qed_update_wol()
2839 rc = qed_mcp_ov_update_wol(hwfn, ptt, enabled ? QED_OV_WOL_ENABLED in qed_update_wol()
2843 rc = qed_mcp_ov_update_current_config(hwfn, ptt, QED_OV_CLIENT_DRV); in qed_update_wol()
2846 qed_ptt_release(hwfn, ptt); in qed_update_wol()
2852 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_update_drv_state() local
2859 ptt = qed_ptt_acquire(hwfn); in qed_update_drv_state()
2863 status = qed_mcp_ov_update_driver_state(hwfn, ptt, active ? in qed_update_drv_state()
2867 qed_ptt_release(hwfn, ptt); in qed_update_drv_state()
2874 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_update_mac() local
2881 ptt = qed_ptt_acquire(hwfn); in qed_update_mac()
2885 status = qed_mcp_ov_update_mac(hwfn, ptt, mac); in qed_update_mac()
2889 status = qed_mcp_ov_update_current_config(hwfn, ptt, QED_OV_CLIENT_DRV); in qed_update_mac()
2892 qed_ptt_release(hwfn, ptt); in qed_update_mac()
2898 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_update_mtu() local
2905 ptt = qed_ptt_acquire(hwfn); in qed_update_mtu()
2909 status = qed_mcp_ov_update_mtu(hwfn, ptt, mtu); in qed_update_mtu()
2913 status = qed_mcp_ov_update_current_config(hwfn, ptt, QED_OV_CLIENT_DRV); in qed_update_mtu()
2916 qed_ptt_release(hwfn, ptt); in qed_update_mtu()
2924 struct qed_hwfn *hwfn = &cdev->hwfns[qid % cdev->num_hwfns]; in qed_get_sb_info() local
2931 ptt = qed_ptt_acquire(hwfn); in qed_get_sb_info()
2933 DP_NOTICE(hwfn, "Can't acquire PTT\n"); in qed_get_sb_info()
2938 rc = qed_int_get_sb_dbg(hwfn, ptt, sb, sb_dbg); in qed_get_sb_info()
2940 qed_ptt_release(hwfn, ptt); in qed_get_sb_info()
2947 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_read_module_eeprom() local
2954 ptt = qed_ptt_acquire(hwfn); in qed_read_module_eeprom()
2958 rc = qed_mcp_phy_sfp_read(hwfn, ptt, MFW_PORT(hwfn), dev_addr, in qed_read_module_eeprom()
2961 qed_ptt_release(hwfn, ptt); in qed_read_module_eeprom()
2968 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_set_grc_config() local
2975 ptt = qed_ptt_acquire(hwfn); in qed_set_grc_config()
2979 rc = qed_dbg_grc_config(hwfn, cfg_id, val); in qed_set_grc_config()
2981 qed_ptt_release(hwfn, ptt); in qed_set_grc_config()
3014 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_get_esl_status() local
3023 ptt = qed_ptt_acquire(hwfn); in qed_get_esl_status()
3027 rc = qed_mcp_get_esl_status(hwfn, ptt, esl_active); in qed_get_esl_status()
3029 qed_ptt_release(hwfn, ptt); in qed_get_esl_status()
3124 int qed_mfw_tlv_req(struct qed_hwfn *hwfn) in qed_mfw_tlv_req() argument
3126 DP_VERBOSE(hwfn->cdev, NETIF_MSG_DRV, in qed_mfw_tlv_req()
3131 set_bit(QED_SLOWPATH_MFW_TLV_REQ, &hwfn->slowpath_task_flags); in qed_mfw_tlv_req()
3134 queue_delayed_work(hwfn->slowpath_wq, &hwfn->slowpath_task, 0); in qed_mfw_tlv_req()
3180 int qed_mfw_fill_tlv_data(struct qed_hwfn *hwfn, enum qed_mfw_tlv_type type, in qed_mfw_fill_tlv_data() argument
3183 struct qed_dev *cdev = hwfn->cdev; in qed_mfw_fill_tlv_data()
3188 DP_NOTICE(hwfn, "Can't collect TLV management info\n"); in qed_mfw_fill_tlv_data()
3194 qed_fill_generic_tlv_data(hwfn->cdev, &tlv_buf->generic); in qed_mfw_fill_tlv_data()