Lines Matching refs:hwfn
640 struct qed_hwfn *hwfn = &cdev->hwfns[index % cdev->num_hwfns]; in qed_simd_handler_config() local
643 hwfn->simd_proto_handler[relative_idx].func = handler; in qed_simd_handler_config()
644 hwfn->simd_proto_handler[relative_idx].token = token; in qed_simd_handler_config()
649 struct qed_hwfn *hwfn = &cdev->hwfns[index % cdev->num_hwfns]; in qed_simd_handler_clean() local
652 memset(&hwfn->simd_proto_handler[relative_idx], 0, in qed_simd_handler_clean()
665 struct qed_hwfn *hwfn; in qed_single_int() local
676 hwfn = &cdev->hwfns[i]; in qed_single_int()
680 tasklet_schedule(hwfn->sp_dpc); in qed_single_int()
689 &hwfn->simd_proto_handler[j]; in qed_single_int()
694 DP_NOTICE(hwfn, in qed_single_int()
704 DP_VERBOSE(hwfn, NETIF_MSG_INTR, in qed_single_int()
712 int qed_slowpath_irq_req(struct qed_hwfn *hwfn) in qed_slowpath_irq_req() argument
714 struct qed_dev *cdev = hwfn->cdev; in qed_slowpath_irq_req()
721 id = hwfn->my_id; in qed_slowpath_irq_req()
722 snprintf(hwfn->name, NAME_SIZE, "sp-%d-%02x:%02x.%02x", in qed_slowpath_irq_req()
724 PCI_SLOT(cdev->pdev->devfn), hwfn->abs_pf_id); in qed_slowpath_irq_req()
726 qed_msix_sp_int, 0, hwfn->name, hwfn->sp_dpc); in qed_slowpath_irq_req()
744 DP_VERBOSE(hwfn, (NETIF_MSG_INTR | QED_MSG_SP), in qed_slowpath_irq_req()
1094 static int qed_slowpath_delayed_work(struct qed_hwfn *hwfn, in qed_slowpath_delayed_work() argument
1098 if (!hwfn->slowpath_wq_active) in qed_slowpath_delayed_work()
1103 set_bit(wq_flag, &hwfn->slowpath_task_flags); in qed_slowpath_delayed_work()
1105 queue_delayed_work(hwfn->slowpath_wq, &hwfn->slowpath_task, delay); in qed_slowpath_delayed_work()
1151 struct qed_hwfn *hwfn = container_of(work, struct qed_hwfn, in qed_slowpath_task() local
1153 struct qed_ptt *ptt = qed_ptt_acquire(hwfn); in qed_slowpath_task()
1156 if (hwfn->slowpath_wq_active) in qed_slowpath_task()
1157 queue_delayed_work(hwfn->slowpath_wq, in qed_slowpath_task()
1158 &hwfn->slowpath_task, 0); in qed_slowpath_task()
1164 &hwfn->slowpath_task_flags)) in qed_slowpath_task()
1165 qed_mfw_process_tlv_req(hwfn, ptt); in qed_slowpath_task()
1168 &hwfn->slowpath_task_flags)) { in qed_slowpath_task()
1169 qed_db_rec_handler(hwfn, ptt); in qed_slowpath_task()
1170 if (hwfn->periodic_db_rec_count--) in qed_slowpath_task()
1171 qed_slowpath_delayed_work(hwfn, in qed_slowpath_task()
1176 qed_ptt_release(hwfn, ptt); in qed_slowpath_task()
1181 struct qed_hwfn *hwfn; in qed_slowpath_wq_start() local
1189 hwfn = &cdev->hwfns[i]; in qed_slowpath_wq_start()
1193 PCI_SLOT(cdev->pdev->devfn), hwfn->abs_pf_id); in qed_slowpath_wq_start()
1195 hwfn->slowpath_wq = alloc_workqueue(name, 0, 0); in qed_slowpath_wq_start()
1196 if (!hwfn->slowpath_wq) { in qed_slowpath_wq_start()
1197 DP_NOTICE(hwfn, "Cannot create slowpath workqueue\n"); in qed_slowpath_wq_start()
1201 INIT_DELAYED_WORK(&hwfn->slowpath_task, qed_slowpath_task); in qed_slowpath_wq_start()
1202 hwfn->slowpath_wq_active = true; in qed_slowpath_wq_start()
1216 struct qed_hwfn *hwfn; in qed_slowpath_start() local
1320 hwfn = QED_LEADING_HWFN(cdev); in qed_slowpath_start()
1327 rc = qed_mcp_send_drv_version(hwfn, hwfn->p_main_ptt, in qed_slowpath_start()
1485 struct qed_hwfn *hwfn; in qed_set_link() local
1495 hwfn = &cdev->hwfns[0]; in qed_set_link()
1502 qed_schedule_iov(hwfn, QED_IOV_WQ_VF_FORCE_LINK_QUERY_FLAG); in qed_set_link()
1506 ptt = qed_ptt_acquire(hwfn); in qed_set_link()
1510 link_params = qed_mcp_get_link_params(hwfn); in qed_set_link()
1602 rc = qed_mcp_set_link(hwfn, ptt, params->link_up); in qed_set_link()
1604 qed_ptt_release(hwfn, ptt); in qed_set_link()
1638 static int qed_get_link_data(struct qed_hwfn *hwfn, in qed_get_link_data() argument
1645 if (!IS_PF(hwfn->cdev)) { in qed_get_link_data()
1646 qed_vf_get_link_params(hwfn, params); in qed_get_link_data()
1647 qed_vf_get_link_state(hwfn, link); in qed_get_link_data()
1648 qed_vf_get_link_caps(hwfn, link_caps); in qed_get_link_data()
1653 p = qed_mcp_get_link_params(hwfn); in qed_get_link_data()
1658 p = qed_mcp_get_link_state(hwfn); in qed_get_link_data()
1663 p = qed_mcp_get_link_capabilities(hwfn); in qed_get_link_data()
1671 static void qed_fill_link_capability(struct qed_hwfn *hwfn, in qed_fill_link_capability() argument
1678 if (qed_mcp_get_media_type(hwfn, ptt, &media_type)) in qed_fill_link_capability()
1681 if (qed_mcp_get_transceiver_data(hwfn, ptt, &tcvr_state, &tcvr_type)) in qed_fill_link_capability()
1684 if (qed_mcp_trans_speed_mask(hwfn, ptt, &speed_mask)) in qed_fill_link_capability()
1687 if (qed_mcp_get_board_config(hwfn, ptt, &board_cfg)) in qed_fill_link_capability()
1690 DP_VERBOSE(hwfn->cdev, NETIF_MSG_DRV, in qed_fill_link_capability()
1806 DP_VERBOSE(hwfn->cdev, QED_MSG_DEBUG, in qed_fill_link_capability()
1812 static void qed_fill_link(struct qed_hwfn *hwfn, in qed_fill_link() argument
1824 if (qed_get_link_data(hwfn, ¶ms, &link, &link_caps)) { in qed_fill_link()
1825 dev_warn(&hwfn->cdev->pdev->dev, "no link data available\n"); in qed_fill_link()
1850 qed_fill_link_capability(hwfn, ptt, params.speed.advertised_speeds, in qed_fill_link()
1853 qed_fill_link_capability(hwfn, ptt, link_caps.speed_capabilities, in qed_fill_link()
1861 qed_mcp_get_media_type(hwfn, ptt, &media_type); in qed_fill_link()
1918 struct qed_hwfn *hwfn; in qed_get_current_link() local
1922 hwfn = &cdev->hwfns[0]; in qed_get_current_link()
1924 ptt = qed_ptt_acquire(hwfn); in qed_get_current_link()
1926 qed_fill_link(hwfn, ptt, if_link); in qed_get_current_link()
1927 qed_ptt_release(hwfn, ptt); in qed_get_current_link()
1929 DP_NOTICE(hwfn, "Failed to fill link; No PTT\n"); in qed_get_current_link()
1932 qed_fill_link(hwfn, NULL, if_link); in qed_get_current_link()
1939 void qed_link_update(struct qed_hwfn *hwfn, struct qed_ptt *ptt) in qed_link_update() argument
1941 void *cookie = hwfn->cdev->ops_cookie; in qed_link_update()
1942 struct qed_common_cb_ops *op = hwfn->cdev->protocol_ops.common; in qed_link_update()
1945 qed_fill_link(hwfn, ptt, &if_link); in qed_link_update()
1946 qed_inform_vf_link_state(hwfn); in qed_link_update()
1948 if (IS_LEAD_HWFN(hwfn) && cookie) in qed_link_update()
1954 struct qed_hwfn *hwfn; in qed_drain() local
1962 hwfn = &cdev->hwfns[i]; in qed_drain()
1963 ptt = qed_ptt_acquire(hwfn); in qed_drain()
1965 DP_NOTICE(hwfn, "Failed to drain NIG; No PTT\n"); in qed_drain()
1968 rc = qed_mcp_drain(hwfn, ptt); in qed_drain()
1969 qed_ptt_release(hwfn, ptt); in qed_drain()
2255 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_nvm_flash_cfg_write() local
2263 ptt = qed_ptt_acquire(hwfn); in qed_nvm_flash_cfg_write()
2306 rc = qed_mcp_nvm_set_cfg(hwfn, ptt, cfg_id, entity_id, flags, in qed_nvm_flash_cfg_write()
2314 qed_ptt_release(hwfn, ptt); in qed_nvm_flash_cfg_write()
2322 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_nvm_flash_cfg_len() local
2328 ptt = qed_ptt_acquire(hwfn); in qed_nvm_flash_cfg_len()
2332 rc = qed_mcp_nvm_get_cfg(hwfn, ptt, cmd, 0, QED_NVM_CFG_GET_FLAGS, buf, in qed_nvm_flash_cfg_len()
2339 qed_ptt_release(hwfn, ptt); in qed_nvm_flash_cfg_len()
2347 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_nvm_flash_cfg_read() local
2352 ptt = qed_ptt_acquire(hwfn); in qed_nvm_flash_cfg_read()
2359 rc = qed_mcp_nvm_get_cfg(hwfn, ptt, cmd, entity_id, flags, *data, &len); in qed_nvm_flash_cfg_read()
2363 qed_ptt_release(hwfn, ptt); in qed_nvm_flash_cfg_read()
2457 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_nvm_get_image() local
2459 return qed_mcp_get_nvm_image(hwfn, type, buf, len); in qed_nvm_get_image()
2479 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_set_led() local
2483 ptt = qed_ptt_acquire(hwfn); in qed_set_led()
2487 status = qed_mcp_set_led(hwfn, ptt, mode); in qed_set_led()
2489 qed_ptt_release(hwfn, ptt); in qed_set_led()
2513 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_update_wol() local
2520 ptt = qed_ptt_acquire(hwfn); in qed_update_wol()
2524 rc = qed_mcp_ov_update_wol(hwfn, ptt, enabled ? QED_OV_WOL_ENABLED in qed_update_wol()
2528 rc = qed_mcp_ov_update_current_config(hwfn, ptt, QED_OV_CLIENT_DRV); in qed_update_wol()
2531 qed_ptt_release(hwfn, ptt); in qed_update_wol()
2537 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_update_drv_state() local
2544 ptt = qed_ptt_acquire(hwfn); in qed_update_drv_state()
2548 status = qed_mcp_ov_update_driver_state(hwfn, ptt, active ? in qed_update_drv_state()
2552 qed_ptt_release(hwfn, ptt); in qed_update_drv_state()
2559 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_update_mac() local
2566 ptt = qed_ptt_acquire(hwfn); in qed_update_mac()
2570 status = qed_mcp_ov_update_mac(hwfn, ptt, mac); in qed_update_mac()
2574 status = qed_mcp_ov_update_current_config(hwfn, ptt, QED_OV_CLIENT_DRV); in qed_update_mac()
2577 qed_ptt_release(hwfn, ptt); in qed_update_mac()
2583 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_update_mtu() local
2590 ptt = qed_ptt_acquire(hwfn); in qed_update_mtu()
2594 status = qed_mcp_ov_update_mtu(hwfn, ptt, mtu); in qed_update_mtu()
2598 status = qed_mcp_ov_update_current_config(hwfn, ptt, QED_OV_CLIENT_DRV); in qed_update_mtu()
2601 qed_ptt_release(hwfn, ptt); in qed_update_mtu()
2608 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_read_module_eeprom() local
2615 ptt = qed_ptt_acquire(hwfn); in qed_read_module_eeprom()
2619 rc = qed_mcp_phy_sfp_read(hwfn, ptt, MFW_PORT(hwfn), dev_addr, in qed_read_module_eeprom()
2622 qed_ptt_release(hwfn, ptt); in qed_read_module_eeprom()
2629 struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev); in qed_set_grc_config() local
2636 ptt = qed_ptt_acquire(hwfn); in qed_set_grc_config()
2640 rc = qed_dbg_grc_config(hwfn, ptt, cfg_id, val); in qed_set_grc_config()
2642 qed_ptt_release(hwfn, ptt); in qed_set_grc_config()
2735 int qed_mfw_tlv_req(struct qed_hwfn *hwfn) in qed_mfw_tlv_req() argument
2737 DP_VERBOSE(hwfn->cdev, NETIF_MSG_DRV, in qed_mfw_tlv_req()
2741 set_bit(QED_SLOWPATH_MFW_TLV_REQ, &hwfn->slowpath_task_flags); in qed_mfw_tlv_req()
2743 queue_delayed_work(hwfn->slowpath_wq, &hwfn->slowpath_task, 0); in qed_mfw_tlv_req()
2789 int qed_mfw_fill_tlv_data(struct qed_hwfn *hwfn, enum qed_mfw_tlv_type type, in qed_mfw_fill_tlv_data() argument
2792 struct qed_dev *cdev = hwfn->cdev; in qed_mfw_fill_tlv_data()
2797 DP_NOTICE(hwfn, "Can't collect TLV management info\n"); in qed_mfw_fill_tlv_data()
2803 qed_fill_generic_tlv_data(hwfn->cdev, &tlv_buf->generic); in qed_mfw_fill_tlv_data()