Lines Matching full:pf
63 struct ice_pf *pf = container_of(hw, struct ice_pf, hw); in ice_hw_to_dev() local
65 return &pf->pdev->dev; in ice_hw_to_dev()
73 static void ice_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type);
75 static void ice_vsi_release_all(struct ice_pf *pf);
77 static int ice_rebuild_channels(struct ice_pf *pf);
110 * @pf: pointer to PF struct
112 static void ice_check_for_hang_subtask(struct ice_pf *pf) in ice_check_for_hang_subtask() argument
120 ice_for_each_vsi(pf, v) in ice_check_for_hang_subtask()
121 if (pf->vsi[v] && pf->vsi[v]->type == ICE_VSI_PF) { in ice_check_for_hang_subtask()
122 vsi = pf->vsi[v]; in ice_check_for_hang_subtask()
174 * @pf: board private structure
176 * Set initial set of MAC filters for PF VSI; configure filters for permanent
180 static int ice_init_mac_fltr(struct ice_pf *pf) in ice_init_mac_fltr() argument
185 vsi = ice_get_main_vsi(pf); in ice_init_mac_fltr()
258 * ice_set_promisc - Enable promiscuous mode for a given PF
287 * ice_clear_promisc - Disable promiscuous mode for a given PF
325 struct ice_pf *pf = vsi->back; in ice_vsi_sync_fltr() local
326 struct ice_hw *hw = &pf->hw; in ice_vsi_sync_fltr()
480 * @pf: board private structure
482 static void ice_sync_fltr_subtask(struct ice_pf *pf) in ice_sync_fltr_subtask() argument
486 if (!pf || !(test_bit(ICE_FLAG_FLTR_SYNC, pf->flags))) in ice_sync_fltr_subtask()
489 clear_bit(ICE_FLAG_FLTR_SYNC, pf->flags); in ice_sync_fltr_subtask()
491 ice_for_each_vsi(pf, v) in ice_sync_fltr_subtask()
492 if (pf->vsi[v] && ice_vsi_fltr_changed(pf->vsi[v]) && in ice_sync_fltr_subtask()
493 ice_vsi_sync_fltr(pf->vsi[v])) { in ice_sync_fltr_subtask()
495 set_bit(ICE_FLAG_FLTR_SYNC, pf->flags); in ice_sync_fltr_subtask()
501 * ice_pf_dis_all_vsi - Pause all VSIs on a PF
502 * @pf: the PF
505 static void ice_pf_dis_all_vsi(struct ice_pf *pf, bool locked) in ice_pf_dis_all_vsi() argument
510 ice_for_each_vsi(pf, v) in ice_pf_dis_all_vsi()
511 if (pf->vsi[v]) in ice_pf_dis_all_vsi()
512 ice_dis_vsi(pf->vsi[v], locked); in ice_pf_dis_all_vsi()
515 pf->pf_agg_node[node].num_vsis = 0; in ice_pf_dis_all_vsi()
518 pf->vf_agg_node[node].num_vsis = 0; in ice_pf_dis_all_vsi()
523 * @pf: board private structure
530 static void ice_clear_sw_switch_recipes(struct ice_pf *pf) in ice_clear_sw_switch_recipes() argument
535 recp = pf->hw.switch_info->recp_list; in ice_clear_sw_switch_recipes()
542 * @pf: board private structure
548 ice_prepare_for_reset(struct ice_pf *pf, enum ice_reset_req reset_type) in ice_prepare_for_reset() argument
550 struct ice_hw *hw = &pf->hw; in ice_prepare_for_reset()
555 dev_dbg(ice_pf_to_dev(pf), "reset_type=%d\n", reset_type); in ice_prepare_for_reset()
558 if (test_bit(ICE_PREPARED_FOR_RESET, pf->state)) in ice_prepare_for_reset()
561 ice_unplug_aux_dev(pf); in ice_prepare_for_reset()
565 ice_vc_notify_reset(pf); in ice_prepare_for_reset()
568 mutex_lock(&pf->vfs.table_lock); in ice_prepare_for_reset()
569 ice_for_each_vf(pf, bkt, vf) in ice_prepare_for_reset()
571 mutex_unlock(&pf->vfs.table_lock); in ice_prepare_for_reset()
573 if (ice_is_eswitch_mode_switchdev(pf)) { in ice_prepare_for_reset()
575 ice_clear_sw_switch_recipes(pf); in ice_prepare_for_reset()
579 vsi = ice_get_main_vsi(pf); in ice_prepare_for_reset()
588 if (test_bit(ICE_FLAG_TC_MQPRIO, pf->flags)) { in ice_prepare_for_reset()
604 clear_bit(ICE_FLAG_TC_MQPRIO, pf->flags); in ice_prepare_for_reset()
613 ice_pf_dis_all_vsi(pf, false); in ice_prepare_for_reset()
615 if (test_bit(ICE_FLAG_PTP_SUPPORTED, pf->flags)) in ice_prepare_for_reset()
616 ice_ptp_prepare_for_reset(pf); in ice_prepare_for_reset()
618 if (ice_is_feature_supported(pf, ICE_F_GNSS)) in ice_prepare_for_reset()
619 ice_gnss_exit(pf); in ice_prepare_for_reset()
626 set_bit(ICE_PREPARED_FOR_RESET, pf->state); in ice_prepare_for_reset()
631 * @pf: board private structure
634 static void ice_do_reset(struct ice_pf *pf, enum ice_reset_req reset_type) in ice_do_reset() argument
636 struct device *dev = ice_pf_to_dev(pf); in ice_do_reset()
637 struct ice_hw *hw = &pf->hw; in ice_do_reset()
641 if (pf->lag && pf->lag->bonded && reset_type == ICE_RESET_PFR) { in ice_do_reset()
646 ice_prepare_for_reset(pf, reset_type); in ice_do_reset()
651 set_bit(ICE_RESET_FAILED, pf->state); in ice_do_reset()
652 clear_bit(ICE_RESET_OICR_RECV, pf->state); in ice_do_reset()
653 clear_bit(ICE_PREPARED_FOR_RESET, pf->state); in ice_do_reset()
654 clear_bit(ICE_PFR_REQ, pf->state); in ice_do_reset()
655 clear_bit(ICE_CORER_REQ, pf->state); in ice_do_reset()
656 clear_bit(ICE_GLOBR_REQ, pf->state); in ice_do_reset()
657 wake_up(&pf->reset_wait_queue); in ice_do_reset()
666 pf->pfr_count++; in ice_do_reset()
667 ice_rebuild(pf, reset_type); in ice_do_reset()
668 clear_bit(ICE_PREPARED_FOR_RESET, pf->state); in ice_do_reset()
669 clear_bit(ICE_PFR_REQ, pf->state); in ice_do_reset()
670 wake_up(&pf->reset_wait_queue); in ice_do_reset()
671 ice_reset_all_vfs(pf); in ice_do_reset()
677 * @pf: board private structure
679 static void ice_reset_subtask(struct ice_pf *pf) in ice_reset_subtask() argument
685 * of reset is pending and sets bits in pf->state indicating the reset in ice_reset_subtask()
687 * prepare for pending reset if not already (for PF software-initiated in ice_reset_subtask()
693 if (test_bit(ICE_RESET_OICR_RECV, pf->state)) { in ice_reset_subtask()
695 if (test_and_clear_bit(ICE_CORER_RECV, pf->state)) in ice_reset_subtask()
697 if (test_and_clear_bit(ICE_GLOBR_RECV, pf->state)) in ice_reset_subtask()
699 if (test_and_clear_bit(ICE_EMPR_RECV, pf->state)) in ice_reset_subtask()
704 ice_prepare_for_reset(pf, reset_type); in ice_reset_subtask()
707 if (ice_check_reset(&pf->hw)) { in ice_reset_subtask()
708 set_bit(ICE_RESET_FAILED, pf->state); in ice_reset_subtask()
711 pf->hw.reset_ongoing = false; in ice_reset_subtask()
712 ice_rebuild(pf, reset_type); in ice_reset_subtask()
716 clear_bit(ICE_RESET_OICR_RECV, pf->state); in ice_reset_subtask()
717 clear_bit(ICE_PREPARED_FOR_RESET, pf->state); in ice_reset_subtask()
718 clear_bit(ICE_PFR_REQ, pf->state); in ice_reset_subtask()
719 clear_bit(ICE_CORER_REQ, pf->state); in ice_reset_subtask()
720 clear_bit(ICE_GLOBR_REQ, pf->state); in ice_reset_subtask()
721 wake_up(&pf->reset_wait_queue); in ice_reset_subtask()
722 ice_reset_all_vfs(pf); in ice_reset_subtask()
729 if (test_bit(ICE_PFR_REQ, pf->state)) { in ice_reset_subtask()
731 if (pf->lag && pf->lag->bonded) { in ice_reset_subtask()
732 dev_dbg(ice_pf_to_dev(pf), "PFR on a bonded interface, promoting to CORER\n"); in ice_reset_subtask()
736 if (test_bit(ICE_CORER_REQ, pf->state)) in ice_reset_subtask()
738 if (test_bit(ICE_GLOBR_REQ, pf->state)) in ice_reset_subtask()
745 if (!test_bit(ICE_DOWN, pf->state) && in ice_reset_subtask()
746 !test_bit(ICE_CFG_BUSY, pf->state)) { in ice_reset_subtask()
747 ice_do_reset(pf, reset_type); in ice_reset_subtask()
940 * @pf: private PF struct
949 static void ice_set_dflt_mib(struct ice_pf *pf) in ice_set_dflt_mib() argument
951 struct device *dev = ice_pf_to_dev(pf); in ice_set_dflt_mib()
955 struct ice_hw *hw = &pf->hw; in ice_set_dflt_mib()
1028 * @pf: pointer to PF struct
1033 static void ice_check_phy_fw_load(struct ice_pf *pf, u8 link_cfg_err) in ice_check_phy_fw_load() argument
1036 clear_bit(ICE_FLAG_PHY_FW_LOAD_FAILED, pf->flags); in ice_check_phy_fw_load()
1040 if (test_bit(ICE_FLAG_PHY_FW_LOAD_FAILED, pf->flags)) in ice_check_phy_fw_load()
1044 …dev_err(ice_pf_to_dev(pf), "Device failed to load the FW for the external PHY. Please download and… in ice_check_phy_fw_load()
1045 set_bit(ICE_FLAG_PHY_FW_LOAD_FAILED, pf->flags); in ice_check_phy_fw_load()
1051 * @pf: pointer to PF struct
1057 static void ice_check_module_power(struct ice_pf *pf, u8 link_cfg_err) in ice_check_module_power() argument
1062 clear_bit(ICE_FLAG_MOD_POWER_UNSUPPORTED, pf->flags); in ice_check_module_power()
1069 if (test_bit(ICE_FLAG_MOD_POWER_UNSUPPORTED, pf->flags)) in ice_check_module_power()
1073 …dev_err(ice_pf_to_dev(pf), "The installed module is incompatible with the device's NVM image. Cann… in ice_check_module_power()
1074 set_bit(ICE_FLAG_MOD_POWER_UNSUPPORTED, pf->flags); in ice_check_module_power()
1076 …dev_err(ice_pf_to_dev(pf), "The module's power requirements exceed the device's power supply. Cann… in ice_check_module_power()
1077 set_bit(ICE_FLAG_MOD_POWER_UNSUPPORTED, pf->flags); in ice_check_module_power()
1083 * @pf: pointer to the PF struct
1089 static void ice_check_link_cfg_err(struct ice_pf *pf, u8 link_cfg_err) in ice_check_link_cfg_err() argument
1091 ice_check_module_power(pf, link_cfg_err); in ice_check_link_cfg_err()
1092 ice_check_phy_fw_load(pf, link_cfg_err); in ice_check_link_cfg_err()
1097 * @pf: PF that the link event is associated with
1105 ice_link_event(struct ice_pf *pf, struct ice_port_info *pi, bool link_up, in ice_link_event() argument
1108 struct device *dev = ice_pf_to_dev(pf); in ice_link_event()
1130 ice_check_link_cfg_err(pf, pi->phy.link_info.link_cfg_err); in ice_link_event()
1138 vsi = ice_get_main_vsi(pf); in ice_link_event()
1143 if (!test_bit(ICE_FLAG_NO_MEDIA, pf->flags) && in ice_link_event()
1145 set_bit(ICE_FLAG_NO_MEDIA, pf->flags); in ice_link_event()
1153 ice_ptp_link_change(pf, pf->hw.pf_id, link_up); in ice_link_event()
1155 if (ice_is_dcb_active(pf)) { in ice_link_event()
1156 if (test_bit(ICE_FLAG_DCB_ENA, pf->flags)) in ice_link_event()
1157 ice_dcb_rebuild(pf); in ice_link_event()
1160 ice_set_dflt_mib(pf); in ice_link_event()
1165 ice_vc_notify_link_state(pf); in ice_link_event()
1172 * @pf: board private structure
1174 static void ice_watchdog_subtask(struct ice_pf *pf) in ice_watchdog_subtask() argument
1179 if (test_bit(ICE_DOWN, pf->state) || in ice_watchdog_subtask()
1180 test_bit(ICE_CFG_BUSY, pf->state)) in ice_watchdog_subtask()
1185 pf->serv_tmr_prev + pf->serv_tmr_period)) in ice_watchdog_subtask()
1188 pf->serv_tmr_prev = jiffies; in ice_watchdog_subtask()
1193 ice_update_pf_stats(pf); in ice_watchdog_subtask()
1194 ice_for_each_vsi(pf, i) in ice_watchdog_subtask()
1195 if (pf->vsi[i] && pf->vsi[i]->netdev) in ice_watchdog_subtask()
1196 ice_update_vsi_stats(pf->vsi[i]); in ice_watchdog_subtask()
1230 * @pf: PF that the link event is associated with
1234 ice_handle_link_event(struct ice_pf *pf, struct ice_rq_event_info *event) in ice_handle_link_event() argument
1241 port_info = pf->hw.port_info; in ice_handle_link_event()
1245 status = ice_link_event(pf, port_info, in ice_handle_link_event()
1249 dev_dbg(ice_pf_to_dev(pf), "Could not process link event, error %d\n", in ice_handle_link_event()
1257 * @pf: PF that the FW log event is associated with
1261 ice_get_fwlog_data(struct ice_pf *pf, struct ice_rq_event_info *event) in ice_get_fwlog_data() argument
1264 struct ice_hw *hw = &pf->hw; in ice_get_fwlog_data()
1283 * @pf: pointer to the PF private structure
1288 * a given PF. Actual wait would be done by a call to ice_aq_wait_for_event().
1297 void ice_aq_prep_for_event(struct ice_pf *pf, struct ice_aq_task *task, in ice_aq_prep_for_event() argument
1304 spin_lock_bh(&pf->aq_wait_lock); in ice_aq_prep_for_event()
1305 hlist_add_head(&task->entry, &pf->aq_wait_list); in ice_aq_prep_for_event()
1306 spin_unlock_bh(&pf->aq_wait_lock); in ice_aq_prep_for_event()
1311 * @pf: pointer to the PF private structure
1315 * Waits for a specific AdminQ completion event on the ARQ for a given PF. The
1321 int ice_aq_wait_for_event(struct ice_pf *pf, struct ice_aq_task *task, in ice_aq_wait_for_event() argument
1325 struct device *dev = ice_pf_to_dev(pf); in ice_aq_wait_for_event()
1330 ret = wait_event_interruptible_timeout(pf->aq_wait_queue, in ice_aq_wait_for_event()
1358 spin_lock_bh(&pf->aq_wait_lock); in ice_aq_wait_for_event()
1360 spin_unlock_bh(&pf->aq_wait_lock); in ice_aq_wait_for_event()
1367 * @pf: pointer to the PF private structure
1383 static void ice_aq_check_events(struct ice_pf *pf, u16 opcode, in ice_aq_check_events() argument
1390 spin_lock_bh(&pf->aq_wait_lock); in ice_aq_check_events()
1391 hlist_for_each_entry(task, &pf->aq_wait_list, entry) { in ice_aq_check_events()
1411 spin_unlock_bh(&pf->aq_wait_lock); in ice_aq_check_events()
1414 wake_up(&pf->aq_wait_queue); in ice_aq_check_events()
1419 * @pf: the PF private structure
1424 static void ice_aq_cancel_waiting_tasks(struct ice_pf *pf) in ice_aq_cancel_waiting_tasks() argument
1428 spin_lock_bh(&pf->aq_wait_lock); in ice_aq_cancel_waiting_tasks()
1429 hlist_for_each_entry(task, &pf->aq_wait_list, entry) in ice_aq_cancel_waiting_tasks()
1431 spin_unlock_bh(&pf->aq_wait_lock); in ice_aq_cancel_waiting_tasks()
1433 wake_up(&pf->aq_wait_queue); in ice_aq_cancel_waiting_tasks()
1440 * @pf: ptr to struct ice_pf
1443 static int __ice_clean_ctrlq(struct ice_pf *pf, enum ice_ctl_q q_type) in __ice_clean_ctrlq() argument
1445 struct device *dev = ice_pf_to_dev(pf); in __ice_clean_ctrlq()
1447 struct ice_hw *hw = &pf->hw; in __ice_clean_ctrlq()
1453 /* Do not clean control queue if/when PF reset fails */ in __ice_clean_ctrlq()
1454 if (test_bit(ICE_RESET_FAILED, pf->state)) in __ice_clean_ctrlq()
1544 ice_aq_check_events(pf, opcode, &event); in __ice_clean_ctrlq()
1548 if (ice_handle_link_event(pf, &event)) in __ice_clean_ctrlq()
1552 ice_vf_lan_overflow_event(pf, &event); in __ice_clean_ctrlq()
1560 ice_vc_process_vf_msg(pf, &event, &data); in __ice_clean_ctrlq()
1563 ice_get_fwlog_data(pf, &event); in __ice_clean_ctrlq()
1566 ice_dcb_process_lldp_set_mib_change(pf, &event); in __ice_clean_ctrlq()
1597 * @pf: board private structure
1599 static void ice_clean_adminq_subtask(struct ice_pf *pf) in ice_clean_adminq_subtask() argument
1601 struct ice_hw *hw = &pf->hw; in ice_clean_adminq_subtask()
1603 if (!test_bit(ICE_ADMINQ_EVENT_PENDING, pf->state)) in ice_clean_adminq_subtask()
1606 if (__ice_clean_ctrlq(pf, ICE_CTL_Q_ADMIN)) in ice_clean_adminq_subtask()
1609 clear_bit(ICE_ADMINQ_EVENT_PENDING, pf->state); in ice_clean_adminq_subtask()
1617 __ice_clean_ctrlq(pf, ICE_CTL_Q_ADMIN); in ice_clean_adminq_subtask()
1624 * @pf: board private structure
1626 static void ice_clean_mailboxq_subtask(struct ice_pf *pf) in ice_clean_mailboxq_subtask() argument
1628 struct ice_hw *hw = &pf->hw; in ice_clean_mailboxq_subtask()
1630 if (!test_bit(ICE_MAILBOXQ_EVENT_PENDING, pf->state)) in ice_clean_mailboxq_subtask()
1633 if (__ice_clean_ctrlq(pf, ICE_CTL_Q_MAILBOX)) in ice_clean_mailboxq_subtask()
1636 clear_bit(ICE_MAILBOXQ_EVENT_PENDING, pf->state); in ice_clean_mailboxq_subtask()
1639 __ice_clean_ctrlq(pf, ICE_CTL_Q_MAILBOX); in ice_clean_mailboxq_subtask()
1646 * @pf: board private structure
1648 static void ice_clean_sbq_subtask(struct ice_pf *pf) in ice_clean_sbq_subtask() argument
1650 struct ice_hw *hw = &pf->hw; in ice_clean_sbq_subtask()
1654 clear_bit(ICE_SIDEBANDQ_EVENT_PENDING, pf->state); in ice_clean_sbq_subtask()
1658 if (!test_bit(ICE_SIDEBANDQ_EVENT_PENDING, pf->state)) in ice_clean_sbq_subtask()
1661 if (__ice_clean_ctrlq(pf, ICE_CTL_Q_SB)) in ice_clean_sbq_subtask()
1664 clear_bit(ICE_SIDEBANDQ_EVENT_PENDING, pf->state); in ice_clean_sbq_subtask()
1667 __ice_clean_ctrlq(pf, ICE_CTL_Q_SB); in ice_clean_sbq_subtask()
1674 * @pf: board private structure
1678 void ice_service_task_schedule(struct ice_pf *pf) in ice_service_task_schedule() argument
1680 if (!test_bit(ICE_SERVICE_DIS, pf->state) && in ice_service_task_schedule()
1681 !test_and_set_bit(ICE_SERVICE_SCHED, pf->state) && in ice_service_task_schedule()
1682 !test_bit(ICE_NEEDS_RESTART, pf->state)) in ice_service_task_schedule()
1683 queue_work(ice_wq, &pf->serv_task); in ice_service_task_schedule()
1688 * @pf: board private structure
1690 static void ice_service_task_complete(struct ice_pf *pf) in ice_service_task_complete() argument
1692 WARN_ON(!test_bit(ICE_SERVICE_SCHED, pf->state)); in ice_service_task_complete()
1694 /* force memory (pf->state) to sync before next service task */ in ice_service_task_complete()
1696 clear_bit(ICE_SERVICE_SCHED, pf->state); in ice_service_task_complete()
1701 * @pf: board private structure
1706 static int ice_service_task_stop(struct ice_pf *pf) in ice_service_task_stop() argument
1710 ret = test_and_set_bit(ICE_SERVICE_DIS, pf->state); in ice_service_task_stop()
1712 if (pf->serv_tmr.function) in ice_service_task_stop()
1713 del_timer_sync(&pf->serv_tmr); in ice_service_task_stop()
1714 if (pf->serv_task.func) in ice_service_task_stop()
1715 cancel_work_sync(&pf->serv_task); in ice_service_task_stop()
1717 clear_bit(ICE_SERVICE_SCHED, pf->state); in ice_service_task_stop()
1723 * @pf: board private structure
1727 static void ice_service_task_restart(struct ice_pf *pf) in ice_service_task_restart() argument
1729 clear_bit(ICE_SERVICE_DIS, pf->state); in ice_service_task_restart()
1730 ice_service_task_schedule(pf); in ice_service_task_restart()
1739 struct ice_pf *pf = from_timer(pf, t, serv_tmr); in ice_service_timer() local
1741 mod_timer(&pf->serv_tmr, round_jiffies(pf->serv_tmr_period + jiffies)); in ice_service_timer()
1742 ice_service_task_schedule(pf); in ice_service_timer()
1747 * @pf: pointer to the PF structure
1750 * VF MDD logging is guarded by net_ratelimit. Additional PF and VF log
1752 * disable the queue, the PF can be configured to reset the VF using ethtool
1755 static void ice_handle_mdd_event(struct ice_pf *pf) in ice_handle_mdd_event() argument
1757 struct device *dev = ice_pf_to_dev(pf); in ice_handle_mdd_event()
1758 struct ice_hw *hw = &pf->hw; in ice_handle_mdd_event()
1763 if (!test_and_clear_bit(ICE_MDD_EVENT_PENDING, pf->state)) { in ice_handle_mdd_event()
1767 ice_print_vfs_mdd_events(pf); in ice_handle_mdd_event()
1779 if (netif_msg_tx_err(pf)) in ice_handle_mdd_event()
1780 dev_info(dev, "Malicious Driver Detection event %d on TX queue %d PF# %d VF# %d\n", in ice_handle_mdd_event()
1792 if (netif_msg_tx_err(pf)) in ice_handle_mdd_event()
1793 dev_info(dev, "Malicious Driver Detection event %d on TX queue %d PF# %d VF# %d\n", in ice_handle_mdd_event()
1805 if (netif_msg_rx_err(pf)) in ice_handle_mdd_event()
1806 dev_info(dev, "Malicious Driver Detection event %d on RX queue %d PF# %d VF# %d\n", in ice_handle_mdd_event()
1811 /* check to see if this PF caused an MDD event */ in ice_handle_mdd_event()
1815 if (netif_msg_tx_err(pf)) in ice_handle_mdd_event()
1816 dev_info(dev, "Malicious Driver Detection event TX_PQM detected on PF\n"); in ice_handle_mdd_event()
1822 if (netif_msg_tx_err(pf)) in ice_handle_mdd_event()
1823 dev_info(dev, "Malicious Driver Detection event TX_TCLAN detected on PF\n"); in ice_handle_mdd_event()
1829 if (netif_msg_rx_err(pf)) in ice_handle_mdd_event()
1830 dev_info(dev, "Malicious Driver Detection event RX detected on PF\n"); in ice_handle_mdd_event()
1836 mutex_lock(&pf->vfs.table_lock); in ice_handle_mdd_event()
1837 ice_for_each_vf(pf, bkt, vf) { in ice_handle_mdd_event()
1842 set_bit(ICE_MDD_VF_PRINT_PENDING, pf->state); in ice_handle_mdd_event()
1843 if (netif_msg_tx_err(pf)) in ice_handle_mdd_event()
1852 set_bit(ICE_MDD_VF_PRINT_PENDING, pf->state); in ice_handle_mdd_event()
1853 if (netif_msg_tx_err(pf)) in ice_handle_mdd_event()
1862 set_bit(ICE_MDD_VF_PRINT_PENDING, pf->state); in ice_handle_mdd_event()
1863 if (netif_msg_tx_err(pf)) in ice_handle_mdd_event()
1872 set_bit(ICE_MDD_VF_PRINT_PENDING, pf->state); in ice_handle_mdd_event()
1873 if (netif_msg_rx_err(pf)) in ice_handle_mdd_event()
1878 * PF can be configured to reset the VF through ethtool in ice_handle_mdd_event()
1881 if (test_bit(ICE_FLAG_MDD_AUTO_RESET_VF, pf->flags)) { in ice_handle_mdd_event()
1890 mutex_unlock(&pf->vfs.table_lock); in ice_handle_mdd_event()
1892 ice_print_vfs_mdd_events(pf); in ice_handle_mdd_event()
1980 struct ice_pf *pf = pi->hw->back; in ice_init_nvm_phy_type() local
1991 dev_err(ice_pf_to_dev(pf), "Get PHY capability failed.\n"); in ice_init_nvm_phy_type()
1995 pf->nvm_phy_type_hi = pcaps->phy_type_high; in ice_init_nvm_phy_type()
1996 pf->nvm_phy_type_lo = pcaps->phy_type_low; in ice_init_nvm_phy_type()
2012 struct ice_pf *pf = pi->hw->back; in ice_init_link_dflt_override() local
2014 ldo = &pf->link_dflt_override; in ice_init_link_dflt_override()
2024 set_bit(ICE_FLAG_TOTAL_PORT_SHUTDOWN_ENA, pf->flags); in ice_init_link_dflt_override()
2025 set_bit(ICE_FLAG_LINK_DOWN_ON_CLOSE_ENA, pf->flags); in ice_init_link_dflt_override()
2050 struct ice_pf *pf = pi->hw->back; in ice_init_phy_cfg_dflt_override() local
2052 ldo = &pf->link_dflt_override; in ice_init_phy_cfg_dflt_override()
2060 cfg->phy_type_low = pf->nvm_phy_type_lo & in ice_init_phy_cfg_dflt_override()
2062 cfg->phy_type_high = pf->nvm_phy_type_hi & in ice_init_phy_cfg_dflt_override()
2068 set_bit(ICE_LINK_DEFAULT_OVERRIDE_PENDING, pf->state); in ice_init_phy_cfg_dflt_override()
2089 struct ice_pf *pf = pi->hw->back; in ice_init_phy_user_cfg() local
2106 dev_err(ice_pf_to_dev(pf), "Get PHY capability failed.\n"); in ice_init_phy_user_cfg()
2116 set_bit(ICE_FLAG_LINK_LENIENT_MODE_ENA, pf->flags); in ice_init_phy_user_cfg()
2123 (pf->link_dflt_override.options & ICE_LINK_OVERRIDE_EN)) { in ice_init_phy_user_cfg()
2138 set_bit(ICE_PHY_INIT_COMPLETE, pf->state); in ice_init_phy_user_cfg()
2159 struct ice_pf *pf = vsi->back; in ice_configure_phy() local
2168 if (!test_bit(ICE_FLAG_LINK_LENIENT_MODE_ENA, pf->flags) && in ice_configure_phy()
2172 if (test_bit(ICE_FLAG_LINK_DOWN_ON_CLOSE_ENA, pf->flags)) in ice_configure_phy()
2258 err = ice_aq_set_phy_cfg(&pf->hw, pi, cfg, NULL); in ice_configure_phy()
2271 * @pf: pointer to PF struct
2276 static void ice_check_media_subtask(struct ice_pf *pf) in ice_check_media_subtask() argument
2283 if (!test_bit(ICE_FLAG_NO_MEDIA, pf->flags)) in ice_check_media_subtask()
2286 vsi = ice_get_main_vsi(pf); in ice_check_media_subtask()
2296 ice_check_link_cfg_err(pf, pi->phy.link_info.link_cfg_err); in ice_check_media_subtask()
2299 if (!test_bit(ICE_PHY_INIT_COMPLETE, pf->state)) in ice_check_media_subtask()
2311 clear_bit(ICE_FLAG_NO_MEDIA, pf->flags); in ice_check_media_subtask()
2321 * @work: pointer to work_struct contained by the PF struct
2325 struct ice_pf *pf = container_of(work, struct ice_pf, serv_task); in ice_service_task() local
2331 ice_reset_subtask(pf); in ice_service_task()
2334 if (ice_is_reset_in_progress(pf->state) || in ice_service_task()
2335 test_bit(ICE_SUSPENDED, pf->state) || in ice_service_task()
2336 test_bit(ICE_NEEDS_RESTART, pf->state)) { in ice_service_task()
2337 ice_service_task_complete(pf); in ice_service_task()
2341 if (test_and_clear_bit(ICE_AUX_ERR_PENDING, pf->state)) { in ice_service_task()
2348 swap(event->reg, pf->oicr_err_reg); in ice_service_task()
2349 ice_send_event_to_aux(pf, event); in ice_service_task()
2357 if (test_and_clear_bit(ICE_FLAG_UNPLUG_AUX_DEV, pf->flags)) in ice_service_task()
2358 ice_unplug_aux_dev(pf); in ice_service_task()
2361 if (test_and_clear_bit(ICE_FLAG_PLUG_AUX_DEV, pf->flags)) in ice_service_task()
2362 ice_plug_aux_dev(pf); in ice_service_task()
2364 if (test_and_clear_bit(ICE_FLAG_MTU_CHANGED, pf->flags)) { in ice_service_task()
2370 ice_send_event_to_aux(pf, event); in ice_service_task()
2375 ice_clean_adminq_subtask(pf); in ice_service_task()
2376 ice_check_media_subtask(pf); in ice_service_task()
2377 ice_check_for_hang_subtask(pf); in ice_service_task()
2378 ice_sync_fltr_subtask(pf); in ice_service_task()
2379 ice_handle_mdd_event(pf); in ice_service_task()
2380 ice_watchdog_subtask(pf); in ice_service_task()
2382 if (ice_is_safe_mode(pf)) { in ice_service_task()
2383 ice_service_task_complete(pf); in ice_service_task()
2387 ice_process_vflr_event(pf); in ice_service_task()
2388 ice_clean_mailboxq_subtask(pf); in ice_service_task()
2389 ice_clean_sbq_subtask(pf); in ice_service_task()
2390 ice_sync_arfs_fltrs(pf); in ice_service_task()
2391 ice_flush_fdir_ctx(pf); in ice_service_task()
2394 ice_service_task_complete(pf); in ice_service_task()
2400 if (time_after(jiffies, (start_time + pf->serv_tmr_period)) || in ice_service_task()
2401 test_bit(ICE_MDD_EVENT_PENDING, pf->state) || in ice_service_task()
2402 test_bit(ICE_VFLR_EVENT_PENDING, pf->state) || in ice_service_task()
2403 test_bit(ICE_MAILBOXQ_EVENT_PENDING, pf->state) || in ice_service_task()
2404 test_bit(ICE_FD_VF_FLUSH_CTX, pf->state) || in ice_service_task()
2405 test_bit(ICE_SIDEBANDQ_EVENT_PENDING, pf->state) || in ice_service_task()
2406 test_bit(ICE_ADMINQ_EVENT_PENDING, pf->state)) in ice_service_task()
2407 mod_timer(&pf->serv_tmr, jiffies); in ice_service_task()
2432 * @pf: board private structure
2435 int ice_schedule_reset(struct ice_pf *pf, enum ice_reset_req reset) in ice_schedule_reset() argument
2437 struct device *dev = ice_pf_to_dev(pf); in ice_schedule_reset()
2440 if (test_bit(ICE_RESET_FAILED, pf->state)) { in ice_schedule_reset()
2445 if (ice_is_reset_in_progress(pf->state)) { in ice_schedule_reset()
2452 set_bit(ICE_PFR_REQ, pf->state); in ice_schedule_reset()
2455 set_bit(ICE_CORER_REQ, pf->state); in ice_schedule_reset()
2458 set_bit(ICE_GLOBR_REQ, pf->state); in ice_schedule_reset()
2464 ice_service_task_schedule(pf); in ice_schedule_reset()
2520 struct ice_pf *pf = vsi->back; in ice_vsi_req_irq_msix() local
2527 dev = ice_pf_to_dev(pf); in ice_vsi_req_irq_msix()
2682 struct ice_pf *pf = vsi->back; in ice_prepare_xdp_rings() local
2684 .qs_mutex = &pf->avail_q_mutex, in ice_prepare_xdp_rings()
2685 .pf_map = pf->avail_txqs, in ice_prepare_xdp_rings()
2686 .pf_map_size = pf->max_pf_txqs, in ice_prepare_xdp_rings()
2697 dev = ice_pf_to_dev(pf); in ice_prepare_xdp_rings()
2754 if (ice_is_reset_in_progress(pf->state)) in ice_prepare_xdp_rings()
2792 mutex_lock(&pf->avail_q_mutex); in ice_prepare_xdp_rings()
2794 clear_bit(vsi->txq_map[i + vsi->alloc_txq], pf->avail_txqs); in ice_prepare_xdp_rings()
2797 mutex_unlock(&pf->avail_q_mutex); in ice_prepare_xdp_rings()
2807 * Detach XDP rings from irq vectors, clean up the PF bitmap and free
2813 struct ice_pf *pf = vsi->back; in ice_destroy_xdp_rings() local
2818 * in pf->state won't be set, so additionally check first q_vector in ice_destroy_xdp_rings()
2821 if (ice_is_reset_in_progress(pf->state) || !vsi->q_vectors[0]) in ice_destroy_xdp_rings()
2837 mutex_lock(&pf->avail_q_mutex); in ice_destroy_xdp_rings()
2839 clear_bit(vsi->txq_map[i + vsi->alloc_txq], pf->avail_txqs); in ice_destroy_xdp_rings()
2842 mutex_unlock(&pf->avail_q_mutex); in ice_destroy_xdp_rings()
2856 devm_kfree(ice_pf_to_dev(pf), vsi->xdp_rings); in ice_destroy_xdp_rings()
2862 if (ice_is_reset_in_progress(pf->state) || !vsi->q_vectors[0]) in ice_destroy_xdp_rings()
3027 NL_SET_ERR_MSG_MOD(xdp->extack, "XDP can be loaded only on PF VSI"); in ice_xdp()
3044 * @pf: board private structure
3046 static void ice_ena_misc_vector(struct ice_pf *pf) in ice_ena_misc_vector() argument
3048 struct ice_hw *hw = &pf->hw; in ice_ena_misc_vector()
3076 wr32(hw, GLINT_DYN_CTL(pf->oicr_irq.index), in ice_ena_misc_vector()
3079 if (!pf->hw.dev_caps.ts_dev_info.ts_ll_int_read) in ice_ena_misc_vector()
3082 wr32(hw, GLINT_DYN_CTL(pf->ll_ts_irq.index + pf_intr_start_offset), in ice_ena_misc_vector()
3093 struct ice_pf *pf = data; in ice_ll_ts_intr() local
3101 hw = &pf->hw; in ice_ll_ts_intr()
3102 tx = &pf->ptp.port.tx; in ice_ll_ts_intr()
3115 wr32(hw, GLINT_DYN_CTL(pf->ll_ts_irq.index + pf_intr_start_offset), in ice_ll_ts_intr()
3128 struct ice_pf *pf = (struct ice_pf *)data; in ice_misc_intr() local
3130 struct ice_hw *hw = &pf->hw; in ice_misc_intr()
3134 dev = ice_pf_to_dev(pf); in ice_misc_intr()
3135 set_bit(ICE_ADMINQ_EVENT_PENDING, pf->state); in ice_misc_intr()
3136 set_bit(ICE_MAILBOXQ_EVENT_PENDING, pf->state); in ice_misc_intr()
3137 set_bit(ICE_SIDEBANDQ_EVENT_PENDING, pf->state); in ice_misc_intr()
3144 pf->sw_int_count++; in ice_misc_intr()
3149 set_bit(ICE_MDD_EVENT_PENDING, pf->state); in ice_misc_intr()
3153 if (test_bit(ICE_VF_RESETS_DISABLED, pf->state)) { in ice_misc_intr()
3160 set_bit(ICE_VFLR_EVENT_PENDING, pf->state); in ice_misc_intr()
3173 pf->corer_count++; in ice_misc_intr()
3175 pf->globr_count++; in ice_misc_intr()
3177 pf->empr_count++; in ice_misc_intr()
3182 * pf->state so that the service task can start a reset/rebuild. in ice_misc_intr()
3184 if (!test_and_set_bit(ICE_RESET_OICR_RECV, pf->state)) { in ice_misc_intr()
3186 set_bit(ICE_CORER_RECV, pf->state); in ice_misc_intr()
3188 set_bit(ICE_GLOBR_RECV, pf->state); in ice_misc_intr()
3190 set_bit(ICE_EMPR_RECV, pf->state); in ice_misc_intr()
3198 * ICE_RESET_OICR_RECV in pf->state indicates in ice_misc_intr()
3211 if (ice_pf_state_is_nominal(pf) && in ice_misc_intr()
3212 pf->hw.dev_caps.ts_dev_info.ts_ll_int_read) { in ice_misc_intr()
3213 struct ice_ptp_tx *tx = &pf->ptp.port.tx; in ice_misc_intr()
3223 } else if (ice_ptp_pf_handles_tx_interrupt(pf)) { in ice_misc_intr()
3224 set_bit(ICE_MISC_THREAD_TX_TSTAMP, pf->misc_thread); in ice_misc_intr()
3235 if (ice_pf_src_tmr_owned(pf)) { in ice_misc_intr()
3237 pf->ptp.ext_ts_irq |= gltsyn_stat & in ice_misc_intr()
3242 ice_ptp_extts_event(pf); in ice_misc_intr()
3248 pf->oicr_err_reg |= oicr; in ice_misc_intr()
3249 set_bit(ICE_AUX_ERR_PENDING, pf->state); in ice_misc_intr()
3262 set_bit(ICE_PFR_REQ, pf->state); in ice_misc_intr()
3265 ice_service_task_schedule(pf); in ice_misc_intr()
3279 struct ice_pf *pf = data; in ice_misc_intr_thread_fn() local
3282 hw = &pf->hw; in ice_misc_intr_thread_fn()
3284 if (ice_is_reset_in_progress(pf->state)) in ice_misc_intr_thread_fn()
3287 if (test_and_clear_bit(ICE_MISC_THREAD_TX_TSTAMP, pf->misc_thread)) { in ice_misc_intr_thread_fn()
3291 if (ice_ptp_process_ts(pf) == ICE_TX_TSTAMP_WORK_PENDING) { in ice_misc_intr_thread_fn()
3329 * @pf: board private structure
3331 static void ice_free_irq_msix_ll_ts(struct ice_pf *pf) in ice_free_irq_msix_ll_ts() argument
3333 int irq_num = pf->ll_ts_irq.virq; in ice_free_irq_msix_ll_ts()
3336 devm_free_irq(ice_pf_to_dev(pf), irq_num, pf); in ice_free_irq_msix_ll_ts()
3338 ice_free_irq(pf, pf->ll_ts_irq); in ice_free_irq_msix_ll_ts()
3343 * @pf: board private structure
3345 static void ice_free_irq_msix_misc(struct ice_pf *pf) in ice_free_irq_msix_misc() argument
3347 int misc_irq_num = pf->oicr_irq.virq; in ice_free_irq_msix_misc()
3348 struct ice_hw *hw = &pf->hw; in ice_free_irq_msix_misc()
3357 devm_free_irq(ice_pf_to_dev(pf), misc_irq_num, pf); in ice_free_irq_msix_misc()
3359 ice_free_irq(pf, pf->oicr_irq); in ice_free_irq_msix_misc()
3360 if (pf->hw.dev_caps.ts_dev_info.ts_ll_int_read) in ice_free_irq_msix_misc()
3361 ice_free_irq_msix_ll_ts(pf); in ice_free_irq_msix_misc()
3399 * @pf: board private structure
3405 static int ice_req_irq_msix_misc(struct ice_pf *pf) in ice_req_irq_msix_misc() argument
3407 struct device *dev = ice_pf_to_dev(pf); in ice_req_irq_msix_misc()
3408 struct ice_hw *hw = &pf->hw; in ice_req_irq_msix_misc()
3413 if (!pf->int_name[0]) in ice_req_irq_msix_misc()
3414 snprintf(pf->int_name, sizeof(pf->int_name) - 1, "%s-%s:misc", in ice_req_irq_msix_misc()
3417 if (!pf->int_name_ll_ts[0]) in ice_req_irq_msix_misc()
3418 snprintf(pf->int_name_ll_ts, sizeof(pf->int_name_ll_ts) - 1, in ice_req_irq_msix_misc()
3424 if (ice_is_reset_in_progress(pf->state)) in ice_req_irq_msix_misc()
3428 irq = ice_alloc_irq(pf, false); in ice_req_irq_msix_misc()
3432 pf->oicr_irq = irq; in ice_req_irq_msix_misc()
3433 err = devm_request_threaded_irq(dev, pf->oicr_irq.virq, ice_misc_intr, in ice_req_irq_msix_misc()
3435 pf->int_name, pf); in ice_req_irq_msix_misc()
3438 pf->int_name, err); in ice_req_irq_msix_misc()
3439 ice_free_irq(pf, pf->oicr_irq); in ice_req_irq_msix_misc()
3444 if (!pf->hw.dev_caps.ts_dev_info.ts_ll_int_read) in ice_req_irq_msix_misc()
3447 irq = ice_alloc_irq(pf, false); in ice_req_irq_msix_misc()
3451 pf->ll_ts_irq = irq; in ice_req_irq_msix_misc()
3452 err = devm_request_irq(dev, pf->ll_ts_irq.virq, ice_ll_ts_intr, 0, in ice_req_irq_msix_misc()
3453 pf->int_name_ll_ts, pf); in ice_req_irq_msix_misc()
3456 pf->int_name_ll_ts, err); in ice_req_irq_msix_misc()
3457 ice_free_irq(pf, pf->ll_ts_irq); in ice_req_irq_msix_misc()
3462 ice_ena_misc_vector(pf); in ice_req_irq_msix_misc()
3464 ice_ena_ctrlq_interrupts(hw, pf->oicr_irq.index); in ice_req_irq_msix_misc()
3467 if (pf->hw.dev_caps.ts_dev_info.ts_ll_int_read) in ice_req_irq_msix_misc()
3469 ((pf->ll_ts_irq.index + pf_intr_start_offset) & in ice_req_irq_msix_misc()
3471 wr32(hw, GLINT_ITR(ICE_RX_ITR, pf->oicr_irq.index), in ice_req_irq_msix_misc()
3509 struct ice_pf *pf = ice_netdev_to_pf(netdev); in ice_set_ops() local
3511 if (ice_is_safe_mode(pf)) { in ice_set_ops()
3518 netdev->udp_tunnel_nic_info = &pf->hw.udp_tunnel_nic; in ice_set_ops()
3537 struct ice_pf *pf = ice_netdev_to_pf(netdev); in ice_set_netdev_features() local
3538 bool is_dvm_ena = ice_is_dvm_ena(&pf->hw); in ice_set_netdev_features()
3544 if (ice_is_safe_mode(pf)) { in ice_set_netdev_features()
3636 * ice_pf_vsi_setup - Set up a PF VSI
3637 * @pf: board private structure
3644 ice_pf_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi) in ice_pf_vsi_setup() argument
3652 return ice_vsi_setup(pf, ¶ms); in ice_pf_vsi_setup()
3656 ice_chnl_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi, in ice_chnl_vsi_setup() argument
3666 return ice_vsi_setup(pf, ¶ms); in ice_chnl_vsi_setup()
3671 * @pf: board private structure
3678 ice_ctrl_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi) in ice_ctrl_vsi_setup() argument
3686 return ice_vsi_setup(pf, ¶ms); in ice_ctrl_vsi_setup()
3691 * @pf: board private structure
3698 ice_lb_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi) in ice_lb_vsi_setup() argument
3706 return ice_vsi_setup(pf, ¶ms); in ice_lb_vsi_setup()
3906 * @pf: pointer to an ice_pf instance
3908 u16 ice_get_avail_txq_count(struct ice_pf *pf) in ice_get_avail_txq_count() argument
3910 return ice_get_avail_q_count(pf->avail_txqs, &pf->avail_q_mutex, in ice_get_avail_txq_count()
3911 pf->max_pf_txqs); in ice_get_avail_txq_count()
3916 * @pf: pointer to an ice_pf instance
3918 u16 ice_get_avail_rxq_count(struct ice_pf *pf) in ice_get_avail_rxq_count() argument
3920 return ice_get_avail_q_count(pf->avail_rxqs, &pf->avail_q_mutex, in ice_get_avail_rxq_count()
3921 pf->max_pf_rxqs); in ice_get_avail_rxq_count()
3926 * @pf: board private structure to initialize
3928 static void ice_deinit_pf(struct ice_pf *pf) in ice_deinit_pf() argument
3930 ice_service_task_stop(pf); in ice_deinit_pf()
3931 mutex_destroy(&pf->lag_mutex); in ice_deinit_pf()
3932 mutex_destroy(&pf->adev_mutex); in ice_deinit_pf()
3933 mutex_destroy(&pf->sw_mutex); in ice_deinit_pf()
3934 mutex_destroy(&pf->tc_mutex); in ice_deinit_pf()
3935 mutex_destroy(&pf->avail_q_mutex); in ice_deinit_pf()
3936 mutex_destroy(&pf->vfs.table_lock); in ice_deinit_pf()
3938 if (pf->avail_txqs) { in ice_deinit_pf()
3939 bitmap_free(pf->avail_txqs); in ice_deinit_pf()
3940 pf->avail_txqs = NULL; in ice_deinit_pf()
3943 if (pf->avail_rxqs) { in ice_deinit_pf()
3944 bitmap_free(pf->avail_rxqs); in ice_deinit_pf()
3945 pf->avail_rxqs = NULL; in ice_deinit_pf()
3948 if (pf->ptp.clock) in ice_deinit_pf()
3949 ptp_clock_unregister(pf->ptp.clock); in ice_deinit_pf()
3954 * @pf: pointer to the PF instance
3956 static void ice_set_pf_caps(struct ice_pf *pf) in ice_set_pf_caps() argument
3958 struct ice_hw_func_caps *func_caps = &pf->hw.func_caps; in ice_set_pf_caps()
3960 clear_bit(ICE_FLAG_RDMA_ENA, pf->flags); in ice_set_pf_caps()
3962 set_bit(ICE_FLAG_RDMA_ENA, pf->flags); in ice_set_pf_caps()
3963 clear_bit(ICE_FLAG_DCB_CAPABLE, pf->flags); in ice_set_pf_caps()
3965 set_bit(ICE_FLAG_DCB_CAPABLE, pf->flags); in ice_set_pf_caps()
3966 clear_bit(ICE_FLAG_SRIOV_CAPABLE, pf->flags); in ice_set_pf_caps()
3968 set_bit(ICE_FLAG_SRIOV_CAPABLE, pf->flags); in ice_set_pf_caps()
3969 pf->vfs.num_supported = min_t(int, func_caps->num_allocd_vfs, in ice_set_pf_caps()
3972 clear_bit(ICE_FLAG_RSS_ENA, pf->flags); in ice_set_pf_caps()
3974 set_bit(ICE_FLAG_RSS_ENA, pf->flags); in ice_set_pf_caps()
3976 clear_bit(ICE_FLAG_FD_ENA, pf->flags); in ice_set_pf_caps()
3983 pf->ctrl_vsi_idx = ICE_NO_VSI; in ice_set_pf_caps()
3984 set_bit(ICE_FLAG_FD_ENA, pf->flags); in ice_set_pf_caps()
3985 /* force guaranteed filter pool for PF */ in ice_set_pf_caps()
3986 ice_alloc_fd_guar_item(&pf->hw, &unused, in ice_set_pf_caps()
3988 /* force shared filter pool for PF */ in ice_set_pf_caps()
3989 ice_alloc_fd_shrd_item(&pf->hw, &unused, in ice_set_pf_caps()
3993 clear_bit(ICE_FLAG_PTP_SUPPORTED, pf->flags); in ice_set_pf_caps()
3995 !(pf->hw.mac_type == ICE_MAC_E830)) in ice_set_pf_caps()
3996 set_bit(ICE_FLAG_PTP_SUPPORTED, pf->flags); in ice_set_pf_caps()
3998 pf->max_pf_txqs = func_caps->common_cap.num_txq; in ice_set_pf_caps()
3999 pf->max_pf_rxqs = func_caps->common_cap.num_rxq; in ice_set_pf_caps()
4004 * @pf: board private structure to initialize
4006 static int ice_init_pf(struct ice_pf *pf) in ice_init_pf() argument
4008 ice_set_pf_caps(pf); in ice_init_pf()
4010 mutex_init(&pf->sw_mutex); in ice_init_pf()
4011 mutex_init(&pf->tc_mutex); in ice_init_pf()
4012 mutex_init(&pf->adev_mutex); in ice_init_pf()
4013 mutex_init(&pf->lag_mutex); in ice_init_pf()
4015 INIT_HLIST_HEAD(&pf->aq_wait_list); in ice_init_pf()
4016 spin_lock_init(&pf->aq_wait_lock); in ice_init_pf()
4017 init_waitqueue_head(&pf->aq_wait_queue); in ice_init_pf()
4019 init_waitqueue_head(&pf->reset_wait_queue); in ice_init_pf()
4022 timer_setup(&pf->serv_tmr, ice_service_timer, 0); in ice_init_pf()
4023 pf->serv_tmr_period = HZ; in ice_init_pf()
4024 INIT_WORK(&pf->serv_task, ice_service_task); in ice_init_pf()
4025 clear_bit(ICE_SERVICE_SCHED, pf->state); in ice_init_pf()
4027 mutex_init(&pf->avail_q_mutex); in ice_init_pf()
4028 pf->avail_txqs = bitmap_zalloc(pf->max_pf_txqs, GFP_KERNEL); in ice_init_pf()
4029 if (!pf->avail_txqs) in ice_init_pf()
4032 pf->avail_rxqs = bitmap_zalloc(pf->max_pf_rxqs, GFP_KERNEL); in ice_init_pf()
4033 if (!pf->avail_rxqs) { in ice_init_pf()
4034 bitmap_free(pf->avail_txqs); in ice_init_pf()
4035 pf->avail_txqs = NULL; in ice_init_pf()
4039 mutex_init(&pf->vfs.table_lock); in ice_init_pf()
4040 hash_init(pf->vfs.table); in ice_init_pf()
4041 ice_mbx_init_snapshot(&pf->hw); in ice_init_pf()
4058 * word) indicates WoL is not supported on the corresponding PF ID. in ice_is_wol_supported()
4079 struct ice_pf *pf = vsi->back; in ice_vsi_recfg_qs() local
4085 while (test_and_set_bit(ICE_CFG_BUSY, pf->state)) { in ice_vsi_recfg_qs()
4100 dev_dbg(ice_pf_to_dev(pf), "Link is down, queue count change happens when link is brought up\n"); in ice_vsi_recfg_qs()
4106 ice_pf_dcb_recfg(pf, locked); in ice_vsi_recfg_qs()
4109 clear_bit(ICE_CFG_BUSY, pf->state); in ice_vsi_recfg_qs()
4114 * ice_set_safe_mode_vlan_cfg - configure PF VSI to allow all VLANs in safe mode
4115 * @pf: PF to configure
4117 * No VLAN offloads/filtering are advertised in safe mode so make sure the PF
4120 static void ice_set_safe_mode_vlan_cfg(struct ice_pf *pf) in ice_set_safe_mode_vlan_cfg() argument
4122 struct ice_vsi *vsi = ice_get_main_vsi(pf); in ice_set_safe_mode_vlan_cfg()
4134 hw = &pf->hw; in ice_set_safe_mode_vlan_cfg()
4173 struct ice_pf *pf = hw->back; in ice_log_pkg_init() local
4176 dev = ice_pf_to_dev(pf); in ice_log_pkg_init()
4250 * @pf: pointer to the PF instance
4256 ice_load_pkg(const struct firmware *firmware, struct ice_pf *pf) in ice_load_pkg() argument
4259 struct device *dev = ice_pf_to_dev(pf); in ice_load_pkg()
4260 struct ice_hw *hw = &pf->hw; in ice_load_pkg()
4277 clear_bit(ICE_FLAG_ADV_FEATURES, pf->flags); in ice_load_pkg()
4284 set_bit(ICE_FLAG_ADV_FEATURES, pf->flags); in ice_load_pkg()
4289 * @pf: pointer to the PF structure
4295 static void ice_verify_cacheline_size(struct ice_pf *pf) in ice_verify_cacheline_size() argument
4297 if (rd32(&pf->hw, GLPCI_CNF2) & GLPCI_CNF2_CACHELINE_SIZE_M) in ice_verify_cacheline_size()
4298 …dev_warn(ice_pf_to_dev(pf), "%d Byte cache line assumption is invalid, driver may have Tx timeouts… in ice_verify_cacheline_size()
4304 * @pf: PF struct
4308 static int ice_send_version(struct ice_pf *pf) in ice_send_version() argument
4318 return ice_aq_send_driver_ver(&pf->hw, &dv, NULL); in ice_send_version()
4323 * @pf: pointer to the PF instance
4327 static int ice_init_fdir(struct ice_pf *pf) in ice_init_fdir() argument
4329 struct device *dev = ice_pf_to_dev(pf); in ice_init_fdir()
4334 * Allocate it and store it in the PF. in ice_init_fdir()
4336 ctrl_vsi = ice_ctrl_vsi_setup(pf, pf->hw.port_info); in ice_init_fdir()
4348 mutex_init(&pf->hw.fdir_fltr_lock); in ice_init_fdir()
4350 err = ice_fdir_create_dflt_rules(pf); in ice_init_fdir()
4357 ice_fdir_release_flows(&pf->hw); in ice_init_fdir()
4361 if (pf->ctrl_vsi_idx != ICE_NO_VSI) { in ice_init_fdir()
4362 pf->vsi[pf->ctrl_vsi_idx] = NULL; in ice_init_fdir()
4363 pf->ctrl_vsi_idx = ICE_NO_VSI; in ice_init_fdir()
4368 static void ice_deinit_fdir(struct ice_pf *pf) in ice_deinit_fdir() argument
4370 struct ice_vsi *vsi = ice_get_ctrl_vsi(pf); in ice_deinit_fdir()
4377 if (pf->ctrl_vsi_idx != ICE_NO_VSI) { in ice_deinit_fdir()
4378 pf->vsi[pf->ctrl_vsi_idx] = NULL; in ice_deinit_fdir()
4379 pf->ctrl_vsi_idx = ICE_NO_VSI; in ice_deinit_fdir()
4382 mutex_destroy(&(&pf->hw)->fdir_fltr_lock); in ice_deinit_fdir()
4387 * @pf: pointer to the PF instance
4389 static char *ice_get_opt_fw_name(struct ice_pf *pf) in ice_get_opt_fw_name() argument
4394 struct pci_dev *pdev = pf->pdev; in ice_get_opt_fw_name()
4417 * @pf: pointer to the PF instance
4419 static void ice_request_fw(struct ice_pf *pf) in ice_request_fw() argument
4421 char *opt_fw_filename = ice_get_opt_fw_name(pf); in ice_request_fw()
4423 struct device *dev = ice_pf_to_dev(pf); in ice_request_fw()
4438 ice_load_pkg(firmware, pf); in ice_request_fw()
4452 ice_load_pkg(firmware, pf); in ice_request_fw()
4458 * @pf: pointer to the PF struct
4460 static void ice_print_wake_reason(struct ice_pf *pf) in ice_print_wake_reason() argument
4462 u32 wus = pf->wakeup_reason; in ice_print_wake_reason()
4480 dev_info(ice_pf_to_dev(pf), "Wake reason: %s", wake_str); in ice_print_wake_reason()
4485 * @pf: pointer to the PF struct
4489 void ice_pf_fwlog_update_module(struct ice_pf *pf, int log_level, int module) in ice_pf_fwlog_update_module() argument
4491 struct ice_hw *hw = &pf->hw; in ice_pf_fwlog_update_module()
4596 static int ice_init_eth(struct ice_pf *pf) in ice_init_eth() argument
4598 struct ice_vsi *vsi = ice_get_main_vsi(pf); in ice_init_eth()
4613 err = ice_init_mac_fltr(pf); in ice_init_eth()
4617 err = ice_devlink_create_pf_port(pf); in ice_init_eth()
4621 SET_NETDEV_DEVLINK_PORT(vsi->netdev, &pf->devlink_port); in ice_init_eth()
4638 ice_devlink_destroy_pf_port(pf); in ice_init_eth()
4645 static void ice_deinit_eth(struct ice_pf *pf) in ice_deinit_eth() argument
4647 struct ice_vsi *vsi = ice_get_main_vsi(pf); in ice_deinit_eth()
4654 ice_devlink_destroy_pf_port(pf); in ice_deinit_eth()
4684 static int ice_init_dev(struct ice_pf *pf) in ice_init_dev() argument
4686 struct device *dev = ice_pf_to_dev(pf); in ice_init_dev()
4687 struct ice_hw *hw = &pf->hw; in ice_init_dev()
4708 ice_init_feature_support(pf); in ice_init_dev()
4710 ice_request_fw(pf); in ice_init_dev()
4713 * set in pf->state, which will cause ice_is_safe_mode to return in ice_init_dev()
4716 if (ice_is_safe_mode(pf)) { in ice_init_dev()
4725 err = ice_init_pf(pf); in ice_init_dev()
4731 pf->hw.udp_tunnel_nic.set_port = ice_udp_tunnel_set_port; in ice_init_dev()
4732 pf->hw.udp_tunnel_nic.unset_port = ice_udp_tunnel_unset_port; in ice_init_dev()
4733 pf->hw.udp_tunnel_nic.flags = UDP_TUNNEL_NIC_INFO_MAY_SLEEP; in ice_init_dev()
4734 pf->hw.udp_tunnel_nic.shared = &pf->hw.udp_tunnel_shared; in ice_init_dev()
4735 if (pf->hw.tnl.valid_count[TNL_VXLAN]) { in ice_init_dev()
4736 pf->hw.udp_tunnel_nic.tables[0].n_entries = in ice_init_dev()
4737 pf->hw.tnl.valid_count[TNL_VXLAN]; in ice_init_dev()
4738 pf->hw.udp_tunnel_nic.tables[0].tunnel_types = in ice_init_dev()
4741 if (pf->hw.tnl.valid_count[TNL_GENEVE]) { in ice_init_dev()
4742 pf->hw.udp_tunnel_nic.tables[1].n_entries = in ice_init_dev()
4743 pf->hw.tnl.valid_count[TNL_GENEVE]; in ice_init_dev()
4744 pf->hw.udp_tunnel_nic.tables[1].tunnel_types = in ice_init_dev()
4748 err = ice_init_interrupt_scheme(pf); in ice_init_dev()
4760 err = ice_req_irq_msix_misc(pf); in ice_init_dev()
4769 ice_clear_interrupt_scheme(pf); in ice_init_dev()
4771 ice_deinit_pf(pf); in ice_init_dev()
4777 static void ice_deinit_dev(struct ice_pf *pf) in ice_deinit_dev() argument
4779 ice_free_irq_msix_misc(pf); in ice_deinit_dev()
4780 ice_deinit_pf(pf); in ice_deinit_dev()
4781 ice_deinit_hw(&pf->hw); in ice_deinit_dev()
4784 ice_reset(&pf->hw, ICE_RESET_PFR); in ice_deinit_dev()
4785 pci_wait_for_pending_transaction(pf->pdev); in ice_deinit_dev()
4786 ice_clear_interrupt_scheme(pf); in ice_deinit_dev()
4789 static void ice_init_features(struct ice_pf *pf) in ice_init_features() argument
4791 struct device *dev = ice_pf_to_dev(pf); in ice_init_features()
4793 if (ice_is_safe_mode(pf)) in ice_init_features()
4797 if (test_bit(ICE_FLAG_PTP_SUPPORTED, pf->flags)) in ice_init_features()
4798 ice_ptp_init(pf); in ice_init_features()
4800 if (ice_is_feature_supported(pf, ICE_F_GNSS)) in ice_init_features()
4801 ice_gnss_init(pf); in ice_init_features()
4803 if (ice_is_feature_supported(pf, ICE_F_CGU) || in ice_init_features()
4804 ice_is_feature_supported(pf, ICE_F_PHY_RCLK)) in ice_init_features()
4805 ice_dpll_init(pf); in ice_init_features()
4808 if (ice_init_fdir(pf)) in ice_init_features()
4812 if (ice_init_pf_dcb(pf, false)) { in ice_init_features()
4813 clear_bit(ICE_FLAG_DCB_CAPABLE, pf->flags); in ice_init_features()
4814 clear_bit(ICE_FLAG_DCB_ENA, pf->flags); in ice_init_features()
4816 ice_cfg_lldp_mib_change(&pf->hw, true); in ice_init_features()
4819 if (ice_init_lag(pf)) in ice_init_features()
4822 ice_hwmon_init(pf); in ice_init_features()
4825 static void ice_deinit_features(struct ice_pf *pf) in ice_deinit_features() argument
4827 if (ice_is_safe_mode(pf)) in ice_deinit_features()
4830 ice_deinit_lag(pf); in ice_deinit_features()
4831 if (test_bit(ICE_FLAG_DCB_CAPABLE, pf->flags)) in ice_deinit_features()
4832 ice_cfg_lldp_mib_change(&pf->hw, false); in ice_deinit_features()
4833 ice_deinit_fdir(pf); in ice_deinit_features()
4834 if (ice_is_feature_supported(pf, ICE_F_GNSS)) in ice_deinit_features()
4835 ice_gnss_exit(pf); in ice_deinit_features()
4836 if (test_bit(ICE_FLAG_PTP_SUPPORTED, pf->flags)) in ice_deinit_features()
4837 ice_ptp_release(pf); in ice_deinit_features()
4838 if (test_bit(ICE_FLAG_DPLL, pf->flags)) in ice_deinit_features()
4839 ice_dpll_deinit(pf); in ice_deinit_features()
4840 if (pf->eswitch_mode == DEVLINK_ESWITCH_MODE_SWITCHDEV) in ice_deinit_features()
4841 xa_destroy(&pf->eswitch.reprs); in ice_deinit_features()
4844 static void ice_init_wakeup(struct ice_pf *pf) in ice_init_wakeup() argument
4847 pf->wakeup_reason = rd32(&pf->hw, PFPM_WUS); in ice_init_wakeup()
4850 ice_print_wake_reason(pf); in ice_init_wakeup()
4853 wr32(&pf->hw, PFPM_WUS, U32_MAX); in ice_init_wakeup()
4856 device_set_wakeup_enable(ice_pf_to_dev(pf), false); in ice_init_wakeup()
4859 static int ice_init_link(struct ice_pf *pf) in ice_init_link() argument
4861 struct device *dev = ice_pf_to_dev(pf); in ice_init_link()
4864 err = ice_init_link_events(pf->hw.port_info); in ice_init_link()
4871 err = ice_init_nvm_phy_type(pf->hw.port_info); in ice_init_link()
4876 err = ice_update_link_info(pf->hw.port_info); in ice_init_link()
4880 ice_init_link_dflt_override(pf->hw.port_info); in ice_init_link()
4882 ice_check_link_cfg_err(pf, in ice_init_link()
4883 pf->hw.port_info->phy.link_info.link_cfg_err); in ice_init_link()
4886 if (pf->hw.port_info->phy.link_info.link_info & in ice_init_link()
4889 err = ice_init_phy_user_cfg(pf->hw.port_info); in ice_init_link()
4893 if (!test_bit(ICE_FLAG_LINK_DOWN_ON_CLOSE_ENA, pf->flags)) { in ice_init_link()
4894 struct ice_vsi *vsi = ice_get_main_vsi(pf); in ice_init_link()
4900 set_bit(ICE_FLAG_NO_MEDIA, pf->flags); in ice_init_link()
4906 static int ice_init_pf_sw(struct ice_pf *pf) in ice_init_pf_sw() argument
4908 bool dvm = ice_is_dvm_ena(&pf->hw); in ice_init_pf_sw()
4913 pf->first_sw = kzalloc(sizeof(*pf->first_sw), GFP_KERNEL); in ice_init_pf_sw()
4914 if (!pf->first_sw) in ice_init_pf_sw()
4917 if (pf->hw.evb_veb) in ice_init_pf_sw()
4918 pf->first_sw->bridge_mode = BRIDGE_MODE_VEB; in ice_init_pf_sw()
4920 pf->first_sw->bridge_mode = BRIDGE_MODE_VEPA; in ice_init_pf_sw()
4922 pf->first_sw->pf = pf; in ice_init_pf_sw()
4925 pf->first_sw->sw_id = pf->hw.port_info->sw_id; in ice_init_pf_sw()
4927 err = ice_aq_set_port_params(pf->hw.port_info, dvm, NULL); in ice_init_pf_sw()
4931 vsi = ice_pf_vsi_setup(pf, pf->hw.port_info); in ice_init_pf_sw()
4941 kfree(pf->first_sw); in ice_init_pf_sw()
4945 static void ice_deinit_pf_sw(struct ice_pf *pf) in ice_deinit_pf_sw() argument
4947 struct ice_vsi *vsi = ice_get_main_vsi(pf); in ice_deinit_pf_sw()
4953 kfree(pf->first_sw); in ice_deinit_pf_sw()
4956 static int ice_alloc_vsis(struct ice_pf *pf) in ice_alloc_vsis() argument
4958 struct device *dev = ice_pf_to_dev(pf); in ice_alloc_vsis()
4960 pf->num_alloc_vsi = pf->hw.func_caps.guar_num_vsi; in ice_alloc_vsis()
4961 if (!pf->num_alloc_vsi) in ice_alloc_vsis()
4964 if (pf->num_alloc_vsi > UDP_TUNNEL_NIC_MAX_SHARING_DEVICES) { in ice_alloc_vsis()
4967 pf->num_alloc_vsi, UDP_TUNNEL_NIC_MAX_SHARING_DEVICES); in ice_alloc_vsis()
4968 pf->num_alloc_vsi = UDP_TUNNEL_NIC_MAX_SHARING_DEVICES; in ice_alloc_vsis()
4971 pf->vsi = devm_kcalloc(dev, pf->num_alloc_vsi, sizeof(*pf->vsi), in ice_alloc_vsis()
4973 if (!pf->vsi) in ice_alloc_vsis()
4976 pf->vsi_stats = devm_kcalloc(dev, pf->num_alloc_vsi, in ice_alloc_vsis()
4977 sizeof(*pf->vsi_stats), GFP_KERNEL); in ice_alloc_vsis()
4978 if (!pf->vsi_stats) { in ice_alloc_vsis()
4979 devm_kfree(dev, pf->vsi); in ice_alloc_vsis()
4986 static void ice_dealloc_vsis(struct ice_pf *pf) in ice_dealloc_vsis() argument
4988 devm_kfree(ice_pf_to_dev(pf), pf->vsi_stats); in ice_dealloc_vsis()
4989 pf->vsi_stats = NULL; in ice_dealloc_vsis()
4991 pf->num_alloc_vsi = 0; in ice_dealloc_vsis()
4992 devm_kfree(ice_pf_to_dev(pf), pf->vsi); in ice_dealloc_vsis()
4993 pf->vsi = NULL; in ice_dealloc_vsis()
4996 static int ice_init_devlink(struct ice_pf *pf) in ice_init_devlink() argument
5000 err = ice_devlink_register_params(pf); in ice_init_devlink()
5004 ice_devlink_init_regions(pf); in ice_init_devlink()
5005 ice_devlink_register(pf); in ice_init_devlink()
5010 static void ice_deinit_devlink(struct ice_pf *pf) in ice_deinit_devlink() argument
5012 ice_devlink_unregister(pf); in ice_deinit_devlink()
5013 ice_devlink_destroy_regions(pf); in ice_deinit_devlink()
5014 ice_devlink_unregister_params(pf); in ice_deinit_devlink()
5017 static int ice_init(struct ice_pf *pf) in ice_init() argument
5021 err = ice_init_dev(pf); in ice_init()
5025 err = ice_alloc_vsis(pf); in ice_init()
5029 err = ice_init_pf_sw(pf); in ice_init()
5033 ice_init_wakeup(pf); in ice_init()
5035 err = ice_init_link(pf); in ice_init()
5039 err = ice_send_version(pf); in ice_init()
5043 ice_verify_cacheline_size(pf); in ice_init()
5045 if (ice_is_safe_mode(pf)) in ice_init()
5046 ice_set_safe_mode_vlan_cfg(pf); in ice_init()
5049 pcie_print_link_status(pf->pdev); in ice_init()
5052 clear_bit(ICE_DOWN, pf->state); in ice_init()
5053 clear_bit(ICE_SERVICE_DIS, pf->state); in ice_init()
5056 mod_timer(&pf->serv_tmr, round_jiffies(jiffies + pf->serv_tmr_period)); in ice_init()
5061 ice_deinit_pf_sw(pf); in ice_init()
5063 ice_dealloc_vsis(pf); in ice_init()
5065 ice_deinit_dev(pf); in ice_init()
5069 static void ice_deinit(struct ice_pf *pf) in ice_deinit() argument
5071 set_bit(ICE_SERVICE_DIS, pf->state); in ice_deinit()
5072 set_bit(ICE_DOWN, pf->state); in ice_deinit()
5074 ice_deinit_pf_sw(pf); in ice_deinit()
5075 ice_dealloc_vsis(pf); in ice_deinit()
5076 ice_deinit_dev(pf); in ice_deinit()
5080 * ice_load - load pf by init hw and starting VSI
5081 * @pf: pointer to the pf instance
5083 int ice_load(struct ice_pf *pf) in ice_load() argument
5089 err = ice_init_dev(pf); in ice_load()
5093 vsi = ice_get_main_vsi(pf); in ice_load()
5103 err = ice_start_eth(ice_get_main_vsi(pf)); in ice_load()
5108 err = ice_init_rdma(pf); in ice_load()
5112 ice_init_features(pf); in ice_load()
5113 ice_service_task_restart(pf); in ice_load()
5115 clear_bit(ICE_DOWN, pf->state); in ice_load()
5120 ice_vsi_close(ice_get_main_vsi(pf)); in ice_load()
5123 ice_vsi_decfg(ice_get_main_vsi(pf)); in ice_load()
5126 ice_deinit_dev(pf); in ice_load()
5131 * ice_unload - unload pf by stopping VSI and deinit hw
5132 * @pf: pointer to the pf instance
5134 void ice_unload(struct ice_pf *pf) in ice_unload() argument
5136 ice_deinit_features(pf); in ice_unload()
5137 ice_deinit_rdma(pf); in ice_unload()
5139 ice_stop_eth(ice_get_main_vsi(pf)); in ice_unload()
5140 ice_vsi_decfg(ice_get_main_vsi(pf)); in ice_unload()
5142 ice_deinit_dev(pf); in ice_unload()
5156 struct ice_pf *pf; in ice_probe() local
5192 pf = ice_allocate_pf(dev); in ice_probe()
5193 if (!pf) in ice_probe()
5197 pf->aux_idx = -1; in ice_probe()
5208 pf->pdev = pdev; in ice_probe()
5209 pci_set_drvdata(pdev, pf); in ice_probe()
5210 set_bit(ICE_DOWN, pf->state); in ice_probe()
5212 set_bit(ICE_SERVICE_DIS, pf->state); in ice_probe()
5214 hw = &pf->hw; in ice_probe()
5218 hw->back = pf; in ice_probe()
5229 pf->msg_enable = netif_msg_init(debug, ICE_DFLT_NETIF_M); in ice_probe()
5236 err = ice_init(pf); in ice_probe()
5240 err = ice_init_eth(pf); in ice_probe()
5244 err = ice_init_rdma(pf); in ice_probe()
5248 err = ice_init_devlink(pf); in ice_probe()
5252 ice_init_features(pf); in ice_probe()
5257 ice_deinit_rdma(pf); in ice_probe()
5259 ice_deinit_eth(pf); in ice_probe()
5261 ice_deinit(pf); in ice_probe()
5269 * @pf: pointer to the PF struct
5273 static void ice_set_wake(struct ice_pf *pf) in ice_set_wake() argument
5275 struct ice_hw *hw = &pf->hw; in ice_set_wake()
5276 bool wol = pf->wol_ena; in ice_set_wake()
5290 * @pf: pointer to the PF struct
5294 * wake, and that PF reset doesn't undo the LAA.
5296 static void ice_setup_mc_magic_wake(struct ice_pf *pf) in ice_setup_mc_magic_wake() argument
5298 struct device *dev = ice_pf_to_dev(pf); in ice_setup_mc_magic_wake()
5299 struct ice_hw *hw = &pf->hw; in ice_setup_mc_magic_wake()
5305 if (!pf->wol_ena) in ice_setup_mc_magic_wake()
5308 vsi = ice_get_main_vsi(pf); in ice_setup_mc_magic_wake()
5334 struct ice_pf *pf = pci_get_drvdata(pdev); in ice_remove() local
5338 if (!ice_is_reset_in_progress(pf->state)) in ice_remove()
5345 if (test_bit(ICE_FLAG_SRIOV_ENA, pf->flags)) { in ice_remove()
5346 set_bit(ICE_VF_RESETS_DISABLED, pf->state); in ice_remove()
5347 ice_free_vfs(pf); in ice_remove()
5350 ice_hwmon_exit(pf); in ice_remove()
5352 ice_service_task_stop(pf); in ice_remove()
5353 ice_aq_cancel_waiting_tasks(pf); in ice_remove()
5354 set_bit(ICE_DOWN, pf->state); in ice_remove()
5356 if (!ice_is_safe_mode(pf)) in ice_remove()
5357 ice_remove_arfs(pf); in ice_remove()
5358 ice_deinit_features(pf); in ice_remove()
5359 ice_deinit_devlink(pf); in ice_remove()
5360 ice_deinit_rdma(pf); in ice_remove()
5361 ice_deinit_eth(pf); in ice_remove()
5362 ice_deinit(pf); in ice_remove()
5364 ice_vsi_release_all(pf); in ice_remove()
5366 ice_setup_mc_magic_wake(pf); in ice_remove()
5367 ice_set_wake(pf); in ice_remove()
5378 struct ice_pf *pf = pci_get_drvdata(pdev); in ice_shutdown() local
5383 pci_wake_from_d3(pdev, pf->wol_ena); in ice_shutdown()
5391 * @pf: board private structure
5395 static void ice_prepare_for_shutdown(struct ice_pf *pf) in ice_prepare_for_shutdown() argument
5397 struct ice_hw *hw = &pf->hw; in ice_prepare_for_shutdown()
5402 ice_vc_notify_reset(pf); in ice_prepare_for_shutdown()
5404 dev_dbg(ice_pf_to_dev(pf), "Tearing down internal switch for shutdown\n"); in ice_prepare_for_shutdown()
5407 ice_pf_dis_all_vsi(pf, false); in ice_prepare_for_shutdown()
5409 ice_for_each_vsi(pf, v) in ice_prepare_for_shutdown()
5410 if (pf->vsi[v]) in ice_prepare_for_shutdown()
5411 pf->vsi[v]->vsi_num = 0; in ice_prepare_for_shutdown()
5418 * @pf: board private structure to reinitialize
5426 static int ice_reinit_interrupt_scheme(struct ice_pf *pf) in ice_reinit_interrupt_scheme() argument
5428 struct device *dev = ice_pf_to_dev(pf); in ice_reinit_interrupt_scheme()
5435 ret = ice_init_interrupt_scheme(pf); in ice_reinit_interrupt_scheme()
5442 ice_for_each_vsi(pf, v) { in ice_reinit_interrupt_scheme()
5443 if (!pf->vsi[v]) in ice_reinit_interrupt_scheme()
5446 ret = ice_vsi_alloc_q_vectors(pf->vsi[v]); in ice_reinit_interrupt_scheme()
5449 ice_vsi_map_rings_to_vectors(pf->vsi[v]); in ice_reinit_interrupt_scheme()
5450 ice_vsi_set_napi_queues(pf->vsi[v]); in ice_reinit_interrupt_scheme()
5453 ret = ice_req_irq_msix_misc(pf); in ice_reinit_interrupt_scheme()
5464 if (pf->vsi[v]) in ice_reinit_interrupt_scheme()
5465 ice_vsi_free_q_vectors(pf->vsi[v]); in ice_reinit_interrupt_scheme()
5480 struct ice_pf *pf; in ice_suspend() local
5483 pf = pci_get_drvdata(pdev); in ice_suspend()
5485 if (!ice_pf_state_is_nominal(pf)) { in ice_suspend()
5496 disabled = ice_service_task_stop(pf); in ice_suspend()
5498 ice_unplug_aux_dev(pf); in ice_suspend()
5501 if (test_and_set_bit(ICE_SUSPENDED, pf->state)) { in ice_suspend()
5503 ice_service_task_restart(pf); in ice_suspend()
5507 if (test_bit(ICE_DOWN, pf->state) || in ice_suspend()
5508 ice_is_reset_in_progress(pf->state)) { in ice_suspend()
5511 ice_service_task_restart(pf); in ice_suspend()
5515 ice_setup_mc_magic_wake(pf); in ice_suspend()
5517 ice_prepare_for_shutdown(pf); in ice_suspend()
5519 ice_set_wake(pf); in ice_suspend()
5526 ice_free_irq_msix_misc(pf); in ice_suspend()
5527 ice_for_each_vsi(pf, v) { in ice_suspend()
5528 if (!pf->vsi[v]) in ice_suspend()
5530 ice_vsi_free_q_vectors(pf->vsi[v]); in ice_suspend()
5532 ice_clear_interrupt_scheme(pf); in ice_suspend()
5535 pci_wake_from_d3(pdev, pf->wol_ena); in ice_suspend()
5548 struct ice_pf *pf; in ice_resume() local
5565 pf = pci_get_drvdata(pdev); in ice_resume()
5566 hw = &pf->hw; in ice_resume()
5568 pf->wakeup_reason = rd32(hw, PFPM_WUS); in ice_resume()
5569 ice_print_wake_reason(pf); in ice_resume()
5574 ret = ice_reinit_interrupt_scheme(pf); in ice_resume()
5578 clear_bit(ICE_DOWN, pf->state); in ice_resume()
5579 /* Now perform PF reset and rebuild */ in ice_resume()
5582 clear_bit(ICE_SERVICE_DIS, pf->state); in ice_resume()
5584 if (ice_schedule_reset(pf, reset_type)) in ice_resume()
5587 clear_bit(ICE_SUSPENDED, pf->state); in ice_resume()
5588 ice_service_task_restart(pf); in ice_resume()
5591 mod_timer(&pf->serv_tmr, round_jiffies(jiffies + pf->serv_tmr_period)); in ice_resume()
5608 struct ice_pf *pf = pci_get_drvdata(pdev); in ice_pci_err_detected() local
5610 if (!pf) { in ice_pci_err_detected()
5616 if (!test_bit(ICE_SUSPENDED, pf->state)) { in ice_pci_err_detected()
5617 ice_service_task_stop(pf); in ice_pci_err_detected()
5619 if (!test_bit(ICE_PREPARED_FOR_RESET, pf->state)) { in ice_pci_err_detected()
5620 set_bit(ICE_PFR_REQ, pf->state); in ice_pci_err_detected()
5621 ice_prepare_for_reset(pf, ICE_RESET_PFR); in ice_pci_err_detected()
5637 struct ice_pf *pf = pci_get_drvdata(pdev); in ice_pci_err_slot_reset() local
5654 reg = rd32(&pf->hw, GLGEN_RTRIG); in ice_pci_err_slot_reset()
5673 struct ice_pf *pf = pci_get_drvdata(pdev); in ice_pci_err_resume() local
5675 if (!pf) { in ice_pci_err_resume()
5681 if (test_bit(ICE_SUSPENDED, pf->state)) { in ice_pci_err_resume()
5687 ice_restore_all_vfs_msi_state(pf); in ice_pci_err_resume()
5689 ice_do_reset(pf, ICE_RESET_PFR); in ice_pci_err_resume()
5690 ice_service_task_restart(pf); in ice_pci_err_resume()
5691 mod_timer(&pf->serv_tmr, round_jiffies(jiffies + pf->serv_tmr_period)); in ice_pci_err_resume()
5700 struct ice_pf *pf = pci_get_drvdata(pdev); in ice_pci_err_reset_prepare() local
5702 if (!test_bit(ICE_SUSPENDED, pf->state)) { in ice_pci_err_reset_prepare()
5703 ice_service_task_stop(pf); in ice_pci_err_reset_prepare()
5705 if (!test_bit(ICE_PREPARED_FOR_RESET, pf->state)) { in ice_pci_err_reset_prepare()
5706 set_bit(ICE_PFR_REQ, pf->state); in ice_pci_err_reset_prepare()
5707 ice_prepare_for_reset(pf, ICE_RESET_PFR); in ice_pci_err_reset_prepare()
5862 struct ice_pf *pf = vsi->back; in ice_set_mac_address() local
5863 struct ice_hw *hw = &pf->hw; in ice_set_mac_address()
5875 if (test_bit(ICE_DOWN, pf->state) || in ice_set_mac_address()
5876 ice_is_reset_in_progress(pf->state)) { in ice_set_mac_address()
5882 if (ice_chnl_dmac_fltr_cnt(pf)) { in ice_set_mac_address()
6190 * @vsi: PF's VSI
6206 * ice_set_vlan_offload_features - set VLAN offload features for the PF VSI
6207 * @vsi: PF's VSI
6254 * ice_set_vlan_filtering_features - set VLAN filtering features for the PF VSI
6255 * @vsi: PF's VSI
6323 * ice_set_loopback - turn on/off loopback mode on underlying PF
6359 struct ice_pf *pf = vsi->back; in ice_set_features() local
6363 if (ice_is_safe_mode(pf)) { in ice_set_features()
6364 dev_err(ice_pf_to_dev(pf), in ice_set_features()
6370 if (ice_is_reset_in_progress(pf->state)) { in ice_set_features()
6371 dev_err(ice_pf_to_dev(pf), in ice_set_features()
6411 if (!(features & NETIF_F_HW_TC) && ice_is_adq_active(pf)) { in ice_set_features()
6412 dev_err(ice_pf_to_dev(pf), "ADQ is active, can't turn hw_tc_offload off\n"); in ice_set_features()
6419 ena ? set_bit(ICE_FLAG_CLS_FLOWER, pf->flags) : in ice_set_features()
6420 clear_bit(ICE_FLAG_CLS_FLOWER, pf->flags); in ice_set_features()
6430 * ice_vsi_vlan_setup - Setup VLAN offload properties on a PF VSI
6625 struct ice_pf *pf = vsi->back; in ice_up_complete() local
6648 ice_ptp_link_change(pf, pf->hw.pf_id, true); in ice_up_complete()
6657 ice_service_task_schedule(pf); in ice_up_complete()
6816 struct ice_pf *pf = vsi->back; in ice_update_vsi_stats() local
6819 test_bit(ICE_CFG_BUSY, pf->state)) in ice_update_vsi_stats()
6835 cur_ns->rx_crc_errors = pf->stats.crc_errors; in ice_update_vsi_stats()
6836 cur_ns->rx_errors = pf->stats.crc_errors + in ice_update_vsi_stats()
6837 pf->stats.illegal_bytes + in ice_update_vsi_stats()
6838 pf->stats.rx_undersize + in ice_update_vsi_stats()
6839 pf->hw_csum_rx_error + in ice_update_vsi_stats()
6840 pf->stats.rx_jabber + in ice_update_vsi_stats()
6841 pf->stats.rx_fragments + in ice_update_vsi_stats()
6842 pf->stats.rx_oversize; in ice_update_vsi_stats()
6844 cur_ns->rx_missed_errors = pf->stats.eth.rx_discards; in ice_update_vsi_stats()
6849 * ice_update_pf_stats - Update PF port stats counters
6850 * @pf: PF whose stats needs to be updated
6852 void ice_update_pf_stats(struct ice_pf *pf) in ice_update_pf_stats() argument
6855 struct ice_hw *hw = &pf->hw; in ice_update_pf_stats()
6860 prev_ps = &pf->stats_prev; in ice_update_pf_stats()
6861 cur_ps = &pf->stats; in ice_update_pf_stats()
6863 if (ice_is_reset_in_progress(pf->state)) in ice_update_pf_stats()
6864 pf->stat_prev_loaded = false; in ice_update_pf_stats()
6866 ice_stat_update40(hw, GLPRT_GORCL(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6870 ice_stat_update40(hw, GLPRT_UPRCL(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6874 ice_stat_update40(hw, GLPRT_MPRCL(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6878 ice_stat_update40(hw, GLPRT_BPRCL(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6882 ice_stat_update32(hw, PRTRPB_RDPC, pf->stat_prev_loaded, in ice_update_pf_stats()
6886 ice_stat_update40(hw, GLPRT_GOTCL(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6890 ice_stat_update40(hw, GLPRT_UPTCL(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6894 ice_stat_update40(hw, GLPRT_MPTCL(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6898 ice_stat_update40(hw, GLPRT_BPTCL(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6902 ice_stat_update32(hw, GLPRT_TDOLD(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6906 ice_stat_update40(hw, GLPRT_PRC64L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6909 ice_stat_update40(hw, GLPRT_PRC127L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6912 ice_stat_update40(hw, GLPRT_PRC255L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6915 ice_stat_update40(hw, GLPRT_PRC511L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6918 ice_stat_update40(hw, GLPRT_PRC1023L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6921 ice_stat_update40(hw, GLPRT_PRC1522L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6924 ice_stat_update40(hw, GLPRT_PRC9522L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6927 ice_stat_update40(hw, GLPRT_PTC64L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6930 ice_stat_update40(hw, GLPRT_PTC127L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6933 ice_stat_update40(hw, GLPRT_PTC255L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6936 ice_stat_update40(hw, GLPRT_PTC511L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6939 ice_stat_update40(hw, GLPRT_PTC1023L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6942 ice_stat_update40(hw, GLPRT_PTC1522L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6945 ice_stat_update40(hw, GLPRT_PTC9522L(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6952 pf->stat_prev_loaded, &prev_ps->fd_sb_match, in ice_update_pf_stats()
6954 ice_stat_update32(hw, GLPRT_LXONRXC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6957 ice_stat_update32(hw, GLPRT_LXOFFRXC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6960 ice_stat_update32(hw, GLPRT_LXONTXC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6963 ice_stat_update32(hw, GLPRT_LXOFFTXC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6966 ice_update_dcb_stats(pf); in ice_update_pf_stats()
6968 ice_stat_update32(hw, GLPRT_CRCERRS(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6971 ice_stat_update32(hw, GLPRT_ILLERRC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6974 ice_stat_update32(hw, GLPRT_MLFC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6978 ice_stat_update32(hw, GLPRT_MRFC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6982 ice_stat_update32(hw, GLPRT_RUC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6985 ice_stat_update32(hw, GLPRT_RFC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6988 ice_stat_update32(hw, GLPRT_ROC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6991 ice_stat_update32(hw, GLPRT_RJC(port), pf->stat_prev_loaded, in ice_update_pf_stats()
6994 cur_ps->fd_sb_status = test_bit(ICE_FLAG_FD_ENA, pf->flags) ? 1 : 0; in ice_update_pf_stats()
6996 pf->stat_prev_loaded = true; in ice_update_pf_stats()
7223 struct ice_pf *pf = vsi->back; in ice_vsi_open_ctrl() local
7227 dev = ice_pf_to_dev(pf); in ice_vsi_open_ctrl()
7279 struct ice_pf *pf = vsi->back; in ice_vsi_open() local
7296 dev_driver_string(ice_pf_to_dev(pf)), vsi->netdev->name); in ice_vsi_open()
7334 * @pf: PF from which all VSIs are being removed
7336 static void ice_vsi_release_all(struct ice_pf *pf) in ice_vsi_release_all() argument
7340 if (!pf->vsi) in ice_vsi_release_all()
7343 ice_for_each_vsi(pf, i) { in ice_vsi_release_all()
7344 if (!pf->vsi[i]) in ice_vsi_release_all()
7347 if (pf->vsi[i]->type == ICE_VSI_CHNL) in ice_vsi_release_all()
7350 err = ice_vsi_release(pf->vsi[i]); in ice_vsi_release_all()
7352 dev_dbg(ice_pf_to_dev(pf), "Failed to release pf->vsi[%d], err %d, vsi_num = %d\n", in ice_vsi_release_all()
7353 i, err, pf->vsi[i]->vsi_num); in ice_vsi_release_all()
7359 * @pf: pointer to the PF instance
7362 * Iterates through the pf->vsi array and rebuilds VSIs of the requested type
7364 static int ice_vsi_rebuild_by_type(struct ice_pf *pf, enum ice_vsi_type type) in ice_vsi_rebuild_by_type() argument
7366 struct device *dev = ice_pf_to_dev(pf); in ice_vsi_rebuild_by_type()
7369 ice_for_each_vsi(pf, i) { in ice_vsi_rebuild_by_type()
7370 struct ice_vsi *vsi = pf->vsi[i]; in ice_vsi_rebuild_by_type()
7384 err = ice_replay_vsi(&pf->hw, vsi->idx); in ice_vsi_rebuild_by_type()
7394 vsi->vsi_num = ice_get_hw_vsi_num(&pf->hw, vsi->idx); in ice_vsi_rebuild_by_type()
7412 * ice_update_pf_netdev_link - Update PF netdev link status
7413 * @pf: pointer to the PF instance
7415 static void ice_update_pf_netdev_link(struct ice_pf *pf) in ice_update_pf_netdev_link() argument
7420 ice_for_each_vsi(pf, i) { in ice_update_pf_netdev_link()
7421 struct ice_vsi *vsi = pf->vsi[i]; in ice_update_pf_netdev_link()
7426 ice_get_link_status(pf->vsi[i]->port_info, &link_up); in ice_update_pf_netdev_link()
7428 netif_carrier_on(pf->vsi[i]->netdev); in ice_update_pf_netdev_link()
7429 netif_tx_wake_all_queues(pf->vsi[i]->netdev); in ice_update_pf_netdev_link()
7431 netif_carrier_off(pf->vsi[i]->netdev); in ice_update_pf_netdev_link()
7432 netif_tx_stop_all_queues(pf->vsi[i]->netdev); in ice_update_pf_netdev_link()
7439 * @pf: PF to rebuild
7447 static void ice_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type) in ice_rebuild() argument
7449 struct device *dev = ice_pf_to_dev(pf); in ice_rebuild()
7450 struct ice_hw *hw = &pf->hw; in ice_rebuild()
7454 if (test_bit(ICE_DOWN, pf->state)) in ice_rebuild()
7457 dev_dbg(dev, "rebuilding PF after reset_type=%d\n", reset_type); in ice_rebuild()
7465 pf->fw_emp_reset_disabled = false; in ice_rebuild()
7477 if (!ice_is_safe_mode(pf)) { in ice_rebuild()
7483 ice_load_pkg(NULL, pf); in ice_rebuild()
7488 dev_err(dev, "clear PF configuration failed %d\n", err); in ice_rebuild()
7514 err = ice_aq_set_port_params(pf->hw.port_info, dvm, NULL); in ice_rebuild()
7523 err = ice_req_irq_msix_misc(pf); in ice_rebuild()
7529 if (test_bit(ICE_FLAG_FD_ENA, pf->flags)) { in ice_rebuild()
7537 /* force guaranteed filter pool for PF */ in ice_rebuild()
7539 /* force shared filter pool for PF */ in ice_rebuild()
7544 if (test_bit(ICE_FLAG_DCB_ENA, pf->flags)) in ice_rebuild()
7545 ice_dcb_rebuild(pf); in ice_rebuild()
7547 /* If the PF previously had enabled PTP, PTP init needs to happen before in ice_rebuild()
7551 if (test_bit(ICE_FLAG_PTP_SUPPORTED, pf->flags)) in ice_rebuild()
7552 ice_ptp_reset(pf); in ice_rebuild()
7554 if (ice_is_feature_supported(pf, ICE_F_GNSS)) in ice_rebuild()
7555 ice_gnss_init(pf); in ice_rebuild()
7557 /* rebuild PF VSI */ in ice_rebuild()
7558 err = ice_vsi_rebuild_by_type(pf, ICE_VSI_PF); in ice_rebuild()
7560 dev_err(dev, "PF VSI rebuild failed: %d\n", err); in ice_rebuild()
7564 err = ice_eswitch_rebuild(pf); in ice_rebuild()
7571 err = ice_rebuild_channels(pf); in ice_rebuild()
7580 if (test_bit(ICE_FLAG_FD_ENA, pf->flags)) { in ice_rebuild()
7581 err = ice_vsi_rebuild_by_type(pf, ICE_VSI_CTRL); in ice_rebuild()
7592 ice_fdir_replay_fltrs(pf); in ice_rebuild()
7594 ice_rebuild_arfs(pf); in ice_rebuild()
7597 ice_update_pf_netdev_link(pf); in ice_rebuild()
7600 err = ice_send_version(pf); in ice_rebuild()
7610 clear_bit(ICE_RESET_FAILED, pf->state); in ice_rebuild()
7612 ice_plug_aux_dev(pf); in ice_rebuild()
7613 if (ice_is_feature_supported(pf, ICE_F_SRIOV_LAG)) in ice_rebuild()
7614 ice_lag_rebuild(pf); in ice_rebuild()
7617 ice_ptp_restore_timestamp_mode(pf); in ice_rebuild()
7625 set_bit(ICE_RESET_FAILED, pf->state); in ice_rebuild()
7627 /* set this bit in PF state to control service task scheduling */ in ice_rebuild()
7628 set_bit(ICE_NEEDS_RESTART, pf->state); in ice_rebuild()
7643 struct ice_pf *pf = vsi->back; in ice_change_mtu() local
7662 } else if (test_bit(ICE_FLAG_LEGACY_RX, pf->flags)) { in ice_change_mtu()
7672 if (ice_is_reset_in_progress(pf->state)) { in ice_change_mtu()
7692 set_bit(ICE_FLAG_MTU_CHANGED, pf->flags); in ice_change_mtu()
7706 struct ice_pf *pf = np->vsi->back; in ice_eth_ioctl() local
7710 return ice_ptp_get_ts_config(pf, ifr); in ice_eth_ioctl()
7712 return ice_ptp_set_ts_config(pf, ifr); in ice_eth_ioctl()
7936 struct ice_pf *pf = vsi->back; in ice_bridge_getlink() local
7939 bmode = pf->first_sw->bridge_mode; in ice_bridge_getlink()
7997 * hooked up to. Iterates through the PF VSI list and sets the loopback mode (if
8007 struct ice_pf *pf = np->vsi->back; in ice_bridge_setlink() local
8009 struct ice_hw *hw = &pf->hw; in ice_bridge_setlink()
8013 pf_sw = pf->first_sw; in ice_bridge_setlink()
8030 /* Iterates through the PF VSI list and update the loopback in ice_bridge_setlink()
8033 ice_for_each_vsi(pf, v) { in ice_bridge_setlink()
8034 if (!pf->vsi[v]) in ice_bridge_setlink()
8036 err = ice_vsi_update_bridge_mode(pf->vsi[v], mode); in ice_bridge_setlink()
8071 struct ice_pf *pf = vsi->back; in ice_tx_timeout() local
8074 pf->tx_timeout_count++; in ice_tx_timeout()
8080 if (ice_is_pfc_causing_hung_q(pf, txqueue)) { in ice_tx_timeout()
8081 dev_info(ice_pf_to_dev(pf), "Fake Tx hang detected on queue %u, timeout caused by PFC storm\n", in ice_tx_timeout()
8097 if (time_after(jiffies, (pf->tx_timeout_last_recovery + HZ * 20))) in ice_tx_timeout()
8098 pf->tx_timeout_recovery_level = 1; in ice_tx_timeout()
8099 else if (time_before(jiffies, (pf->tx_timeout_last_recovery + in ice_tx_timeout()
8104 struct ice_hw *hw = &pf->hw; in ice_tx_timeout()
8117 pf->tx_timeout_last_recovery = jiffies; in ice_tx_timeout()
8119 pf->tx_timeout_recovery_level, txqueue); in ice_tx_timeout()
8121 switch (pf->tx_timeout_recovery_level) { in ice_tx_timeout()
8123 set_bit(ICE_PFR_REQ, pf->state); in ice_tx_timeout()
8126 set_bit(ICE_CORER_REQ, pf->state); in ice_tx_timeout()
8129 set_bit(ICE_GLOBR_REQ, pf->state); in ice_tx_timeout()
8133 set_bit(ICE_DOWN, pf->state); in ice_tx_timeout()
8135 set_bit(ICE_SERVICE_DIS, pf->state); in ice_tx_timeout()
8139 ice_service_task_schedule(pf); in ice_tx_timeout()
8140 pf->tx_timeout_recovery_level++; in ice_tx_timeout()
8203 struct ice_pf *pf = vsi->back; in ice_validate_mqprio_qopt() local
8218 dev = ice_pf_to_dev(pf); in ice_validate_mqprio_qopt()
8330 * ice_add_vsi_to_fdir - add a VSI to the flow director group for PF
8331 * @pf: ptr to PF device
8334 static int ice_add_vsi_to_fdir(struct ice_pf *pf, struct ice_vsi *vsi) in ice_add_vsi_to_fdir() argument
8336 struct device *dev = ice_pf_to_dev(pf); in ice_add_vsi_to_fdir()
8344 hw = &pf->hw; in ice_add_vsi_to_fdir()
8391 * @pf: ptr to PF device
8397 static int ice_add_channel(struct ice_pf *pf, u16 sw_id, struct ice_channel *ch) in ice_add_channel() argument
8399 struct device *dev = ice_pf_to_dev(pf); in ice_add_channel()
8407 vsi = ice_chnl_vsi_setup(pf, pf->hw.port_info, ch); in ice_add_channel()
8413 ice_add_vsi_to_fdir(pf, vsi); in ice_add_channel()
8505 * @pf: ptr to PF device
8515 ice_setup_hw_channel(struct ice_pf *pf, struct ice_vsi *vsi, in ice_setup_hw_channel() argument
8518 struct device *dev = ice_pf_to_dev(pf); in ice_setup_hw_channel()
8524 ret = ice_add_channel(pf, sw_id, ch); in ice_setup_hw_channel()
8545 * @pf: ptr to PF device
8553 ice_setup_channel(struct ice_pf *pf, struct ice_vsi *vsi, in ice_setup_channel() argument
8556 struct device *dev = ice_pf_to_dev(pf); in ice_setup_channel()
8565 sw_id = pf->first_sw->sw_id; in ice_setup_channel()
8568 ret = ice_setup_hw_channel(pf, vsi, ch, sw_id, ICE_VSI_CHNL); in ice_setup_channel()
8606 struct ice_pf *pf = vsi->back; in ice_create_q_channel() local
8612 dev = ice_pf_to_dev(pf); in ice_create_q_channel()
8624 if (!ice_setup_channel(pf, vsi, ch)) { in ice_create_q_channel()
8649 * @pf: ptr to PF, TC-flower based filter are tracked at PF level
8654 static void ice_rem_all_chnl_fltrs(struct ice_pf *pf) in ice_rem_all_chnl_fltrs() argument
8661 &pf->tc_flower_fltr_list, in ice_rem_all_chnl_fltrs()
8673 status = ice_rem_adv_rule_by_id(&pf->hw, &rule); in ice_rem_all_chnl_fltrs()
8676 dev_dbg(ice_pf_to_dev(pf), "TC flower filter (rule_id %u) does not exist\n", in ice_rem_all_chnl_fltrs()
8679 dev_err(ice_pf_to_dev(pf), "failed to delete TC flower filter, status %d\n", in ice_rem_all_chnl_fltrs()
8689 pf->num_dmac_chnl_fltrs--; in ice_rem_all_chnl_fltrs()
8708 struct ice_pf *pf = vsi->back; in ice_remove_q_channels() local
8713 ice_rem_all_chnl_fltrs(pf); in ice_remove_q_channels()
8717 struct ice_hw *hw = &pf->hw; in ice_remove_q_channels()
8755 ice_fdir_rem_adq_chnl(&pf->hw, ch->ch_vsi->idx); in ice_remove_q_channels()
8760 /* Delete VSI from FW, PF and HW VSI arrays */ in ice_remove_q_channels()
8778 * @pf: ptr to PF
8782 static int ice_rebuild_channels(struct ice_pf *pf) in ice_rebuild_channels() argument
8784 struct device *dev = ice_pf_to_dev(pf); in ice_rebuild_channels()
8792 main_vsi = ice_get_main_vsi(pf); in ice_rebuild_channels()
8796 if (!test_bit(ICE_FLAG_TC_MQPRIO, pf->flags) || in ice_rebuild_channels()
8811 ice_for_each_vsi(pf, i) { in ice_rebuild_channels()
8814 vsi = pf->vsi[i]; in ice_rebuild_channels()
8831 vsi->vsi_num = ice_get_hw_vsi_num(&pf->hw, vsi->idx); in ice_rebuild_channels()
8834 err = ice_replay_vsi(&pf->hw, vsi->idx); in ice_rebuild_channels()
8898 struct ice_pf *pf = vsi->back; in ice_create_q_channels() local
8928 dev_err(ice_pf_to_dev(pf), in ice_create_q_channels()
8935 dev_dbg(ice_pf_to_dev(pf), in ice_create_q_channels()
8956 struct ice_pf *pf = vsi->back; in ice_setup_tc_mqprio_qdisc() local
8963 dev = ice_pf_to_dev(pf); in ice_setup_tc_mqprio_qdisc()
8968 clear_bit(ICE_FLAG_TC_MQPRIO, pf->flags); in ice_setup_tc_mqprio_qdisc()
8981 if (pf->hw.port_info->is_custom_tx_enabled) { in ice_setup_tc_mqprio_qdisc()
8985 ice_tear_down_devlink_rate_tree(pf); in ice_setup_tc_mqprio_qdisc()
8994 set_bit(ICE_FLAG_TC_MQPRIO, pf->flags); in ice_setup_tc_mqprio_qdisc()
9000 set_bit(ICE_FLAG_CLS_FLOWER, pf->flags); in ice_setup_tc_mqprio_qdisc()
9016 if (!hw && !test_bit(ICE_FLAG_TC_MQPRIO, pf->flags)) in ice_setup_tc_mqprio_qdisc()
9019 if (!hw && !test_bit(ICE_FLAG_TC_MQPRIO, pf->flags)) { in ice_setup_tc_mqprio_qdisc()
9020 vsi->req_txq = min_t(int, ice_get_avail_txq_count(pf), in ice_setup_tc_mqprio_qdisc()
9022 vsi->req_rxq = min_t(int, ice_get_avail_rxq_count(pf), in ice_setup_tc_mqprio_qdisc()
9059 clear_bit(ICE_RESET_FAILED, pf->state); in ice_setup_tc_mqprio_qdisc()
9075 if (test_bit(ICE_FLAG_TC_MQPRIO, pf->flags)) { in ice_setup_tc_mqprio_qdisc()
9128 struct ice_pf *pf = np->vsi->back; in ice_setup_tc() local
9139 if (ice_is_eswitch_mode_switchdev(pf)) { in ice_setup_tc()
9144 if (pf->adev) { in ice_setup_tc()
9145 mutex_lock(&pf->adev_mutex); in ice_setup_tc()
9146 device_lock(&pf->adev->dev); in ice_setup_tc()
9148 if (pf->adev->dev.driver) { in ice_setup_tc()
9156 mutex_lock(&pf->tc_mutex); in ice_setup_tc()
9158 mutex_unlock(&pf->tc_mutex); in ice_setup_tc()
9162 device_unlock(&pf->adev->dev); in ice_setup_tc()
9163 mutex_unlock(&pf->adev_mutex); in ice_setup_tc()
9302 struct ice_pf *pf = np->vsi->back; in ice_open() local
9304 if (ice_is_reset_in_progress(pf->state)) { in ice_open()
9325 struct ice_pf *pf = vsi->back; in ice_open_internal() local
9329 if (test_bit(ICE_NEEDS_RESTART, pf->state)) { in ice_open_internal()
9343 ice_check_link_cfg_err(pf, pi->phy.link_info.link_cfg_err); in ice_open_internal()
9347 clear_bit(ICE_FLAG_NO_MEDIA, pf->flags); in ice_open_internal()
9348 if (!test_bit(ICE_PHY_INIT_COMPLETE, pf->state)) { in ice_open_internal()
9364 set_bit(ICE_FLAG_NO_MEDIA, pf->flags); in ice_open_internal()
9393 struct ice_pf *pf = vsi->back; in ice_stop() local
9395 if (ice_is_reset_in_progress(pf->state)) { in ice_stop()