Lines Matching +full:temperature +full:- +full:lookup +full:- +full:table
3 Copyright (c) 2013-2018, Intel Corporation
115 "CL108 RS-FEC",
116 "CL74 FC-FEC/BASE-R",
127 * ixl_set_state - Set the specified state
141 * ixl_clear_state - Clear the specified state
155 * ixl_test_state - Test the specified state
170 * ixl_testandset_state - Test and set the specified state
193 u8 oem_ver = (u8)(hw->nvm.oem_ver >> 24); in ixl_nvm_version_str()
194 u16 oem_build = (u16)((hw->nvm.oem_ver >> 16) & 0xFFFF); in ixl_nvm_version_str()
195 u8 oem_patch = (u8)(hw->nvm.oem_ver & 0xFF); in ixl_nvm_version_str()
199 hw->aq.fw_maj_ver, hw->aq.fw_min_ver, hw->aq.fw_build, in ixl_nvm_version_str()
200 hw->aq.api_maj_ver, hw->aq.api_min_ver, in ixl_nvm_version_str()
201 (hw->nvm.version & IXL_NVM_VERSION_HI_MASK) >> in ixl_nvm_version_str()
203 (hw->nvm.version & IXL_NVM_VERSION_LO_MASK) >> in ixl_nvm_version_str()
205 hw->nvm.eetrack, in ixl_nvm_version_str()
212 struct i40e_hw *hw = &pf->hw; in ixl_print_nvm_version()
213 device_t dev = pf->dev; in ixl_print_nvm_version()
224 * ixl_get_fw_mode - Check the state of FW
236 struct i40e_hw *hw = &pf->hw; in ixl_get_fw_mode()
241 if (pf->recovery_mode) in ixl_get_fw_mode()
261 * ixl_pf_reset - Reset the PF
272 struct i40e_hw *hw = &pf->hw; in ixl_pf_reset()
279 ixl_set_state(&pf->state, IXL_STATE_RECOVERY_MODE); in ixl_pf_reset()
293 ixl_set_state(&pf->state, IXL_STATE_RECOVERY_MODE); in ixl_pf_reset()
298 device_printf(pf->dev, in ixl_pf_reset()
301 device_printf(pf->dev, "PF reset failure %s\n", in ixl_pf_reset()
307 * ixl_setup_hmc - Setup LAN Host Memory Cache
317 struct i40e_hw *hw = &pf->hw; in ixl_setup_hmc()
320 status = i40e_init_lan_hmc(hw, hw->func_caps.num_tx_qp, in ixl_setup_hmc()
321 hw->func_caps.num_rx_qp, 0, 0); in ixl_setup_hmc()
323 device_printf(pf->dev, "init_lan_hmc failed: %s\n", in ixl_setup_hmc()
330 device_printf(pf->dev, "configure_lan_hmc failed: %s\n", in ixl_setup_hmc()
339 * ixl_shutdown_hmc - Shutdown LAN Host Memory Cache
348 struct i40e_hw *hw = &pf->hw; in ixl_shutdown_hmc()
352 if (hw->hmc.hmc_obj == NULL) in ixl_shutdown_hmc()
357 device_printf(pf->dev, in ixl_shutdown_hmc()
381 struct i40e_hw *hw = &pf->hw; in ixl_get_hw_capabilities()
382 device_t dev = pf->dev; in ixl_get_hw_capabilities()
389 hw->func_caps.iwarp = 0; in ixl_get_hw_capabilities()
405 if ((pf->hw.aq.asq_last_status == I40E_AQ_RC_ENOMEM) && in ixl_get_hw_capabilities()
413 i40e_stat_str(hw, status), i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_get_hw_capabilities()
422 if (i2c_intfc_num != -1) in ixl_get_hw_capabilities()
423 pf->has_i2c = true; in ixl_get_hw_capabilities()
426 switch (pf->i2c_access_method) { in ixl_get_hw_capabilities()
428 if (hw->flags & I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE) { in ixl_get_hw_capabilities()
429 pf->read_i2c_byte = ixl_read_i2c_byte_aq; in ixl_get_hw_capabilities()
430 pf->write_i2c_byte = ixl_write_i2c_byte_aq; in ixl_get_hw_capabilities()
432 pf->read_i2c_byte = ixl_read_i2c_byte_reg; in ixl_get_hw_capabilities()
433 pf->write_i2c_byte = ixl_write_i2c_byte_reg; in ixl_get_hw_capabilities()
438 pf->read_i2c_byte = ixl_read_i2c_byte_aq; in ixl_get_hw_capabilities()
439 pf->write_i2c_byte = ixl_write_i2c_byte_aq; in ixl_get_hw_capabilities()
442 pf->read_i2c_byte = ixl_read_i2c_byte_reg; in ixl_get_hw_capabilities()
443 pf->write_i2c_byte = ixl_write_i2c_byte_reg; in ixl_get_hw_capabilities()
446 pf->read_i2c_byte = ixl_read_i2c_byte_bb; in ixl_get_hw_capabilities()
447 pf->write_i2c_byte = ixl_write_i2c_byte_bb; in ixl_get_hw_capabilities()
456 ixl_set_state(&pf->state, IXL_STATE_LINK_ACTIVE_ON_DOWN); in ixl_get_hw_capabilities()
460 "PF-ID[%d]: VFs %d, MSI-X %d, VF MSI-X %d, QPs %d, %s\n", in ixl_get_hw_capabilities()
461 hw->pf_id, hw->func_caps.num_vfs, hw->func_caps.num_msix_vectors, in ixl_get_hw_capabilities()
462 hw->func_caps.num_msix_vectors_vf, hw->func_caps.num_tx_qp, in ixl_get_hw_capabilities()
463 (hw->func_caps.mdio_port_mode == 2) ? "I2C" : in ixl_get_hw_capabilities()
464 (hw->func_caps.mdio_port_mode == 1 && pf->has_i2c) ? "MDIO & I2C" : in ixl_get_hw_capabilities()
465 (hw->func_caps.mdio_port_mode == 1) ? "MDIO dedicated" : in ixl_get_hw_capabilities()
475 device_t dev = pf->dev; in ixl_set_initial_advertised_speeds()
482 err = ixl_set_advertised_speeds(pf, pf->supported_speeds, true); in ixl_set_initial_advertised_speeds()
484 /* Non-fatal error */ in ixl_set_initial_advertised_speeds()
490 pf->advertised_speed = in ixl_set_initial_advertised_speeds()
491 ixl_convert_sysctl_aq_link_speed(pf->supported_speeds, false); in ixl_set_initial_advertised_speeds()
498 struct i40e_hw *hw = &pf->hw; in ixl_teardown_hw_structs()
499 device_t dev = pf->dev; in ixl_teardown_hw_structs()
502 if (hw->hmc.hmc_obj) { in ixl_teardown_hw_structs()
520 ixl_pf_qmgr_release(&pf->qmgr, &pf->qtag); in ixl_teardown_hw_structs()
538 bcopy(macaddr, f->macaddr, ETHER_ADDR_LEN); in ixl_new_filter()
539 f->vlan = vlan; in ixl_new_filter()
546 * ixl_free_filters - Free all filters in given list
547 * headp - pointer to list head
571 struct ixl_vsi *vsi = ama->vsi; in ixl_add_maddr()
576 f = ixl_find_filter(&vsi->ftl, macaddr, IXL_VLAN_ANY); in ixl_add_maddr()
580 f = ixl_new_filter(&ama->to_add, macaddr, IXL_VLAN_ANY); in ixl_add_maddr()
582 device_printf(vsi->dev, "WARNING: no filter available!!\n"); in ixl_add_maddr()
585 f->flags |= IXL_FILTER_MC; in ixl_add_maddr()
598 * ixl_add_multi - Add multicast filters to the hardware
608 if_t ifp = vsi->ifp; in ixl_add_multi()
635 if (ixl_ether_is_equal(f->macaddr, (u8 *)LLADDR(sdl))) in ixl_match_maddr()
642 * ixl_dis_multi_promisc - Disable multicast promiscuous mode
647 * and the VSI, then re-add multicast filters.
653 struct ifnet *ifp = vsi->ifp; in ixl_dis_multi_promisc()
654 struct i40e_hw *hw = vsi->hw; in ixl_dis_multi_promisc()
663 if (!(vsi->flags & IXL_FLAGS_MC_PROMISC) || in ixl_dis_multi_promisc()
678 status = i40e_aq_set_vsi_multicast_promiscuous(hw, vsi->seid, in ixl_dis_multi_promisc()
688 vsi->flags &= ~IXL_FLAGS_MC_PROMISC; in ixl_dis_multi_promisc()
695 * ixl_del_multi - Delete multicast filters from the hardware
707 if_t ifp = vsi->ifp; in ixl_del_multi()
715 LIST_FOREACH_SAFE(f, &vsi->ftl, ftle, fn) { in ixl_del_multi()
716 if ((f->flags & IXL_FILTER_MC) == 0) in ixl_del_multi()
743 struct i40e_hw *hw = &pf->hw; in ixl_link_up_msg()
744 if_t ifp = pf->vsi.ifp; in ixl_link_up_msg()
748 fec_abilities = hw->phy.link_info.req_fec_info; in ixl_link_up_msg()
757 if (hw->phy.link_info.fec_info & I40E_AQ_CONFIG_FEC_RS_ENA) in ixl_link_up_msg()
759 else if (hw->phy.link_info.fec_info & I40E_AQ_CONFIG_FEC_KR_ENA) in ixl_link_up_msg()
766 ixl_link_speed_string(hw->phy.link_info.link_speed), in ixl_link_up_msg()
768 (hw->phy.link_info.an_info & I40E_AQ_AN_COMPLETED) ? "True" : "False", in ixl_link_up_msg()
769 (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_TX && in ixl_link_up_msg()
770 hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_RX) ? in ixl_link_up_msg()
771 ixl_fc_string[3] : (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_TX) ? in ixl_link_up_msg()
772 ixl_fc_string[2] : (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_RX) ? in ixl_link_up_msg()
782 struct i40e_hw *hw = &pf->hw; in ixl_configure_intr0_msix()
785 /* First set up the adminq - vector 0 */ in ixl_configure_intr0_msix()
801 * This means we won't use MSI-X vector 0 for a queue interrupt in ixl_configure_intr0_msix()
802 * in MSI-X mode. in ixl_configure_intr0_msix()
898 * - this will need to be more robust when more complex
905 struct i40e_hw *hw = &pf->hw; in ixl_switch_config()
906 struct ixl_vsi *vsi = &pf->vsi; in ixl_switch_config()
907 device_t dev = iflib_get_dev(vsi->ctx); in ixl_switch_config()
919 " aq_error %d\n", ret, pf->hw.aq.asq_last_status); in ixl_switch_config()
922 if (pf->dbg_mask & IXL_DBG_SWITCH_INFO) { in ixl_switch_config()
925 LE16_TO_CPU(sw_config->header.num_reported), in ixl_switch_config()
926 LE16_TO_CPU(sw_config->header.num_total)); in ixl_switch_config()
928 i < LE16_TO_CPU(sw_config->header.num_reported); i++) { in ixl_switch_config()
930 "-> %d: type=%d seid=%d uplink=%d downlink=%d\n", i, in ixl_switch_config()
931 sw_config->element[i].element_type, in ixl_switch_config()
932 LE16_TO_CPU(sw_config->element[i].seid), in ixl_switch_config()
933 LE16_TO_CPU(sw_config->element[i].uplink_seid), in ixl_switch_config()
934 LE16_TO_CPU(sw_config->element[i].downlink_seid)); in ixl_switch_config()
938 vsi->uplink_seid = LE16_TO_CPU(sw_config->element[0].uplink_seid); in ixl_switch_config()
939 vsi->downlink_seid = LE16_TO_CPU(sw_config->element[0].downlink_seid); in ixl_switch_config()
940 vsi->seid = LE16_TO_CPU(sw_config->element[0].seid); in ixl_switch_config()
951 tree = device_get_sysctl_tree(vsi->dev); in ixl_vsi_add_sysctls()
953 vsi->vsi_node = SYSCTL_ADD_NODE(&vsi->sysctl_ctx, child, OID_AUTO, sysctl_name, in ixl_vsi_add_sysctls()
956 vsi_list = SYSCTL_CHILDREN(vsi->vsi_node); in ixl_vsi_add_sysctls()
957 ixl_add_sysctls_eth_stats(&vsi->sysctl_ctx, vsi_list, &vsi->eth_stats); in ixl_vsi_add_sysctls()
960 SYSCTL_ADD_UQUAD(&vsi->sysctl_ctx, vsi_list, OID_AUTO, "rx_errors", in ixl_vsi_add_sysctls()
961 CTLFLAG_RD, &vsi->ierrors, in ixl_vsi_add_sysctls()
965 ixl_vsi_add_queues_stats(vsi, &vsi->sysctl_ctx); in ixl_vsi_add_sysctls()
976 device_t dev = pf->dev; in ixl_sysctl_pf_tx_itr()
980 requested_tx_itr = pf->tx_itr; in ixl_sysctl_pf_tx_itr()
982 if ((error) || (req->newptr == NULL)) in ixl_sysctl_pf_tx_itr()
984 if (pf->dynamic_tx_itr) { in ixl_sysctl_pf_tx_itr()
996 pf->tx_itr = requested_tx_itr; in ixl_sysctl_pf_tx_itr()
1010 device_t dev = pf->dev; in ixl_sysctl_pf_rx_itr()
1014 requested_rx_itr = pf->rx_itr; in ixl_sysctl_pf_rx_itr()
1016 if ((error) || (req->newptr == NULL)) in ixl_sysctl_pf_rx_itr()
1018 if (pf->dynamic_rx_itr) { in ixl_sysctl_pf_rx_itr()
1030 pf->rx_itr = requested_rx_itr; in ixl_sysctl_pf_rx_itr()
1045 struct i40e_eth_stats *eth_stats = &stats->eth; in ixl_add_sysctls_mac_stats()
1050 {&stats->crc_errors, "crc_errors", "CRC Errors"}, in ixl_add_sysctls_mac_stats()
1051 {&stats->illegal_bytes, "illegal_bytes", "Illegal Byte Errors"}, in ixl_add_sysctls_mac_stats()
1052 {&stats->mac_local_faults, "local_faults", "MAC Local Faults"}, in ixl_add_sysctls_mac_stats()
1053 {&stats->mac_remote_faults, "remote_faults", "MAC Remote Faults"}, in ixl_add_sysctls_mac_stats()
1054 {&stats->rx_length_errors, "rx_length_errors", "Receive Length Errors"}, in ixl_add_sysctls_mac_stats()
1056 {&stats->rx_size_64, "rx_frames_64", "64 byte frames received"}, in ixl_add_sysctls_mac_stats()
1057 {&stats->rx_size_127, "rx_frames_65_127", "65-127 byte frames received"}, in ixl_add_sysctls_mac_stats()
1058 {&stats->rx_size_255, "rx_frames_128_255", "128-255 byte frames received"}, in ixl_add_sysctls_mac_stats()
1059 {&stats->rx_size_511, "rx_frames_256_511", "256-511 byte frames received"}, in ixl_add_sysctls_mac_stats()
1060 {&stats->rx_size_1023, "rx_frames_512_1023", "512-1023 byte frames received"}, in ixl_add_sysctls_mac_stats()
1061 {&stats->rx_size_1522, "rx_frames_1024_1522", "1024-1522 byte frames received"}, in ixl_add_sysctls_mac_stats()
1062 {&stats->rx_size_big, "rx_frames_big", "1523-9522 byte frames received"}, in ixl_add_sysctls_mac_stats()
1063 {&stats->rx_undersize, "rx_undersize", "Undersized packets received"}, in ixl_add_sysctls_mac_stats()
1064 {&stats->rx_fragments, "rx_fragmented", "Fragmented packets received"}, in ixl_add_sysctls_mac_stats()
1065 {&stats->rx_oversize, "rx_oversized", "Oversized packets received"}, in ixl_add_sysctls_mac_stats()
1066 {&stats->rx_jabber, "rx_jabber", "Received Jabber"}, in ixl_add_sysctls_mac_stats()
1067 {&stats->checksum_error, "checksum_errors", "Checksum Errors"}, in ixl_add_sysctls_mac_stats()
1069 {&stats->tx_size_64, "tx_frames_64", "64 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
1070 {&stats->tx_size_127, "tx_frames_65_127", "65-127 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
1071 {&stats->tx_size_255, "tx_frames_128_255", "128-255 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
1072 {&stats->tx_size_511, "tx_frames_256_511", "256-511 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
1073 {&stats->tx_size_1023, "tx_frames_512_1023", "512-1023 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
1074 {&stats->tx_size_1522, "tx_frames_1024_1522", "1024-1522 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
1075 {&stats->tx_size_big, "tx_frames_big", "1523-9522 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
1077 {&stats->link_xon_tx, "xon_txd", "Link XON transmitted"}, in ixl_add_sysctls_mac_stats()
1078 {&stats->link_xon_rx, "xon_recvd", "Link XON received"}, in ixl_add_sysctls_mac_stats()
1079 {&stats->link_xoff_tx, "xoff_txd", "Link XOFF transmitted"}, in ixl_add_sysctls_mac_stats()
1080 {&stats->link_xoff_rx, "xoff_recvd", "Link XOFF received"}, in ixl_add_sysctls_mac_stats()
1086 while (entry->stat != 0) in ixl_add_sysctls_mac_stats()
1088 SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, entry->name, in ixl_add_sysctls_mac_stats()
1089 CTLFLAG_RD, entry->stat, in ixl_add_sysctls_mac_stats()
1090 entry->description); in ixl_add_sysctls_mac_stats()
1098 struct i40e_hw *hw = &pf->hw; in ixl_set_rss_key()
1099 struct ixl_vsi *vsi = &pf->vsi; in ixl_set_rss_key()
1100 device_t dev = pf->dev; in ixl_set_rss_key()
1111 if (hw->mac.type == I40E_MAC_X722) { in ixl_set_rss_key()
1114 status = i40e_aq_set_rss_key(hw, vsi->vsi_num, &key_data); in ixl_set_rss_key()
1119 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_set_rss_key()
1132 struct i40e_hw *hw = &pf->hw; in ixl_set_rss_pctypes()
1154 if (hw->mac.type == I40E_MAC_X722) in ixl_set_rss_pctypes()
1189 bcopy(vsi->hw->mac.perm_addr, e.mac_addr, ETHER_ADDR_LEN); in ixl_del_default_hw_filters()
1192 i40e_aq_remove_macvlan(vsi->hw, vsi->seid, &e, 1, NULL); in ixl_del_default_hw_filters()
1195 bcopy(vsi->hw->mac.perm_addr, e.mac_addr, ETHER_ADDR_LEN); in ixl_del_default_hw_filters()
1199 i40e_aq_remove_macvlan(vsi->hw, vsi->seid, &e, 1, NULL); in ixl_del_default_hw_filters()
1211 struct ixl_pf *pf = (struct ixl_pf *)vsi->back; in ixl_init_filters()
1216 LIST_INIT(&vsi->ftl); in ixl_init_filters()
1217 vsi->num_hw_filters = 0; in ixl_init_filters()
1220 i40e_aq_set_vsi_broadcast(&pf->hw, vsi->seid, TRUE, NULL); in ixl_init_filters()
1227 ixl_add_filter(vsi, vsi->hw->mac.addr, IXL_VLAN_ANY); in ixl_init_filters()
1231 * non-firmware transmitters. in ixl_init_filters()
1235 i40e_add_filter_to_drop_tx_flow_control_frames(vsi->hw, vsi->seid); in ixl_init_filters()
1237 if (pf->enable_tx_fc_filter) in ixl_init_filters()
1238 i40e_add_filter_to_drop_tx_flow_control_frames(vsi->hw, vsi->seid); in ixl_init_filters()
1245 struct i40e_hw *hw = vsi->hw; in ixl_reconfigure_filters()
1255 LIST_CONCAT(&tmp, &vsi->ftl, ixl_mac_filter, ftle); in ixl_reconfigure_filters()
1256 cnt = vsi->num_hw_filters; in ixl_reconfigure_filters()
1257 vsi->num_hw_filters = 0; in ixl_reconfigure_filters()
1262 * When the vsi is allocated for the VFs, both vsi->hw and vsi->ifp in ixl_reconfigure_filters()
1270 ixl_add_filter(vsi, hw->mac.addr, IXL_VLAN_ANY); in ixl_reconfigure_filters()
1272 if ((if_getcapenable(vsi->ifp) & IFCAP_VLAN_HWFILTER) == 0) in ixl_reconfigure_filters()
1278 ixl_add_vlan_filters(vsi, hw->mac.addr); in ixl_reconfigure_filters()
1295 pf = vsi->back; in ixl_add_filter()
1296 dev = pf->dev; in ixl_add_filter()
1303 f = ixl_find_filter(&vsi->ftl, macaddr, vlan); in ixl_add_filter()
1313 if (f->vlan != IXL_VLAN_ANY) in ixl_add_filter()
1314 f->flags |= IXL_FILTER_VLAN; in ixl_add_filter()
1316 vsi->num_macs++; in ixl_add_filter()
1323 if ((vlan != IXL_VLAN_ANY) && (vsi->num_vlans == 1)) { in ixl_add_filter()
1324 tmp = ixl_find_filter(&vsi->ftl, macaddr, IXL_VLAN_ANY); in ixl_add_filter()
1349 * ixl_add_vlan_filters - Add MAC/VLAN filters for all registered VLANs
1366 if (vsi->num_vlans == 0 || vsi->num_vlans > IXL_MAX_VLAN_FILTERS) { in ixl_add_vlan_filters()
1373 f = ixl_find_filter(&vsi->ftl, macaddr, 0); in ixl_add_vlan_filters()
1377 device_printf(vsi->dev, "WARNING: no filter available!!\n"); in ixl_add_vlan_filters()
1384 bit_ffs_at(vsi->vlans_map, i, IXL_VLANS_MAP_LEN, &vlan); in ixl_add_vlan_filters()
1385 if (vlan == -1) in ixl_add_vlan_filters()
1389 f = ixl_find_filter(&vsi->ftl, macaddr, vlan); in ixl_add_vlan_filters()
1395 device_printf(vsi->dev, "WARNING: no filter available!!\n"); in ixl_add_vlan_filters()
1412 ixl_dbg_filter((struct ixl_pf *)vsi->back, in ixl_del_filter()
1416 f = ixl_find_filter(&vsi->ftl, macaddr, vlan); in ixl_del_filter()
1423 if (f->vlan == IXL_VLAN_ANY && (f->flags & IXL_FILTER_VLAN) != 0) in ixl_del_filter()
1424 vsi->num_macs--; in ixl_del_filter()
1427 if (vlan == IXL_VLAN_ANY || vsi->num_vlans > 0) { in ixl_del_filter()
1432 /* It's the last vlan, we need to switch back to a non-vlan filter */ in ixl_del_filter()
1433 tmp = ixl_find_filter(&vsi->ftl, macaddr, 0); in ixl_del_filter()
1445 * ixl_del_all_vlan_filters - Delete all VLAN filters with given MAC
1463 LIST_FOREACH_SAFE(f, &vsi->ftl, ftle, tmp) { in ixl_del_all_vlan_filters()
1464 if ((f->flags & IXL_FILTER_MC) != 0 || in ixl_del_all_vlan_filters()
1465 !ixl_ether_is_equal(f->macaddr, macaddr)) in ixl_del_all_vlan_filters()
1473 ixl_dbg_filter((struct ixl_pf *)vsi->back, in ixl_del_all_vlan_filters()
1489 if (ixl_ether_is_equal(f->macaddr, macaddr) && in ixl_find_filter()
1490 (f->vlan == vlan)) { in ixl_find_filter()
1500 ** table and creates an Admin Queue call to create
1514 pf = vsi->back; in ixl_add_hw_filters()
1515 dev = vsi->dev; in ixl_add_hw_filters()
1516 hw = &pf->hw; in ixl_add_hw_filters()
1534 bcopy(f->macaddr, b->mac_addr, ETHER_ADDR_LEN); in ixl_add_hw_filters()
1535 if (f->vlan == IXL_VLAN_ANY) { in ixl_add_hw_filters()
1536 b->vlan_tag = 0; in ixl_add_hw_filters()
1537 b->flags = I40E_AQC_MACVLAN_ADD_IGNORE_VLAN; in ixl_add_hw_filters()
1539 b->vlan_tag = f->vlan; in ixl_add_hw_filters()
1540 b->flags = 0; in ixl_add_hw_filters()
1542 b->flags |= I40E_AQC_MACVLAN_ADD_PERFECT_MATCH; in ixl_add_hw_filters()
1547 b->match_method = I40E_AQC_MM_ERR_NO_RES; in ixl_add_hw_filters()
1549 MAC_FORMAT_ARGS(f->macaddr)); in ixl_add_hw_filters()
1563 status = i40e_aq_add_macvlan(hw, vsi->seid, a, j, NULL); in ixl_add_hw_filters()
1565 LIST_CONCAT(&vsi->ftl, to_add, ixl_mac_filter, ftle); in ixl_add_hw_filters()
1566 vsi->num_hw_filters += j; in ixl_add_hw_filters()
1573 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_add_hw_filters()
1584 MAC_FORMAT_ARGS(f->macaddr), in ixl_add_hw_filters()
1585 f->vlan); in ixl_add_hw_filters()
1588 LIST_INSERT_HEAD(&vsi->ftl, f, ftle); in ixl_add_hw_filters()
1589 vsi->num_hw_filters++; in ixl_add_hw_filters()
1600 ** table and creates an Admin Queue call to delete
1614 pf = vsi->back; in ixl_del_hw_filters()
1615 hw = &pf->hw; in ixl_del_hw_filters()
1616 dev = vsi->dev; in ixl_del_hw_filters()
1629 bcopy(f->macaddr, e->mac_addr, ETHER_ADDR_LEN); in ixl_del_hw_filters()
1630 e->flags = I40E_AQC_MACVLAN_DEL_PERFECT_MATCH; in ixl_del_hw_filters()
1631 if (f->vlan == IXL_VLAN_ANY) { in ixl_del_hw_filters()
1632 e->vlan_tag = 0; in ixl_del_hw_filters()
1633 e->flags |= I40E_AQC_MACVLAN_DEL_IGNORE_VLAN; in ixl_del_hw_filters()
1635 e->vlan_tag = f->vlan; in ixl_del_hw_filters()
1639 MAC_FORMAT_ARGS(f->macaddr)); in ixl_del_hw_filters()
1655 status = i40e_aq_remove_macvlan(hw, vsi->seid, d, j, NULL); in ixl_del_hw_filters()
1660 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_del_hw_filters()
1671 vsi->num_hw_filters -= j; in ixl_del_hw_filters()
1682 struct i40e_hw *hw = &pf->hw; in ixl_enable_tx_ring()
1707 device_printf(pf->dev, "TX queue %d still disabled!\n", in ixl_enable_tx_ring()
1718 struct i40e_hw *hw = &pf->hw; in ixl_enable_rx_ring()
1741 device_printf(pf->dev, "RX queue %d still disabled!\n", in ixl_enable_rx_ring()
1768 struct i40e_hw *hw = &pf->hw; in ixl_disable_tx_ring()
1793 device_printf(pf->dev, "TX queue %d still enabled!\n", in ixl_disable_tx_ring()
1807 struct i40e_hw *hw = &pf->hw; in ixl_disable_rx_ring()
1829 device_printf(pf->dev, "RX queue %d still enabled!\n", in ixl_disable_rx_ring()
1853 struct i40e_hw *hw = &pf->hw; in ixl_handle_tx_mdd_event()
1854 device_t dev = pf->dev; in ixl_handle_tx_mdd_event()
1885 pf_mdet_num = hw->pf_id; in ixl_handle_tx_mdd_event()
1890 for (int i = 0; i < pf->num_vfs; i++) { in ixl_handle_tx_mdd_event()
1891 vf = &(pf->vfs[i]); in ixl_handle_tx_mdd_event()
1896 vf->num_mdd_events++; in ixl_handle_tx_mdd_event()
1905 " on TX queue %d, pf number %d (PF-%d), vf number %d (VF-%d)\n", in ixl_handle_tx_mdd_event()
1910 " on TX queue %d, pf number %d, vf number %d (VF-%d)\n", in ixl_handle_tx_mdd_event()
1915 " on TX queue %d, pf number %d (PF-%d)\n", in ixl_handle_tx_mdd_event()
1926 struct i40e_hw *hw = &pf->hw; in ixl_handle_rx_mdd_event()
1927 device_t dev = pf->dev; in ixl_handle_rx_mdd_event()
1959 pf_mdet_num = hw->pf_id; in ixl_handle_rx_mdd_event()
1964 for (int i = 0; i < pf->num_vfs; i++) { in ixl_handle_rx_mdd_event()
1965 vf = &(pf->vfs[i]); in ixl_handle_rx_mdd_event()
1970 vf->num_mdd_events++; in ixl_handle_rx_mdd_event()
1979 " on RX queue %d, pf number %d (PF-%d), (VF-%d)\n", in ixl_handle_rx_mdd_event()
1984 " on RX queue %d, pf number %d, (VF-%d)\n", in ixl_handle_rx_mdd_event()
1989 " on RX queue %d, pf number %d (PF-%d)\n", in ixl_handle_rx_mdd_event()
2006 struct i40e_hw *hw = &pf->hw; in ixl_handle_mdd_event()
2016 ixl_clear_state(&pf->state, IXL_STATE_MDD_PENDING); in ixl_handle_mdd_event()
2018 /* re-enable mdd interrupt cause */ in ixl_handle_mdd_event()
2070 struct ixl_vsi *vsi = &pf->vsi; in ixl_handle_empr_reset()
2071 bool is_up = !!(if_getdrvflags(vsi->ifp) & IFF_DRV_RUNNING); in ixl_handle_empr_reset()
2084 ixl_set_state(&pf->state, IXL_STATE_RECOVERY_MODE); in ixl_handle_empr_reset()
2085 device_printf(pf->dev, in ixl_handle_empr_reset()
2087 pf->link_up = FALSE; in ixl_handle_empr_reset()
2093 ixl_clear_state(&pf->state, IXL_STATE_RESETTING); in ixl_handle_empr_reset()
2099 struct i40e_hw *hw = &pf->hw; in ixl_update_stats_counters()
2100 struct ixl_vsi *vsi = &pf->vsi; in ixl_update_stats_counters()
2102 u64 prev_link_xoff_rx = pf->stats.link_xoff_rx; in ixl_update_stats_counters()
2104 struct i40e_hw_port_stats *nsd = &pf->stats; in ixl_update_stats_counters()
2105 struct i40e_hw_port_stats *osd = &pf->stats_offsets; in ixl_update_stats_counters()
2108 ixl_stat_update32(hw, I40E_GLPRT_CRCERRS(hw->port), in ixl_update_stats_counters()
2109 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2110 &osd->crc_errors, &nsd->crc_errors); in ixl_update_stats_counters()
2111 ixl_stat_update32(hw, I40E_GLPRT_ILLERRC(hw->port), in ixl_update_stats_counters()
2112 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2113 &osd->illegal_bytes, &nsd->illegal_bytes); in ixl_update_stats_counters()
2114 ixl_stat_update48(hw, I40E_GLPRT_GORCL(hw->port), in ixl_update_stats_counters()
2115 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2116 &osd->eth.rx_bytes, &nsd->eth.rx_bytes); in ixl_update_stats_counters()
2117 ixl_stat_update48(hw, I40E_GLPRT_GOTCL(hw->port), in ixl_update_stats_counters()
2118 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2119 &osd->eth.tx_bytes, &nsd->eth.tx_bytes); in ixl_update_stats_counters()
2120 ixl_stat_update32(hw, I40E_GLPRT_RDPC(hw->port), in ixl_update_stats_counters()
2121 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2122 &osd->eth.rx_discards, in ixl_update_stats_counters()
2123 &nsd->eth.rx_discards); in ixl_update_stats_counters()
2124 ixl_stat_update48(hw, I40E_GLPRT_UPRCL(hw->port), in ixl_update_stats_counters()
2125 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2126 &osd->eth.rx_unicast, in ixl_update_stats_counters()
2127 &nsd->eth.rx_unicast); in ixl_update_stats_counters()
2128 ixl_stat_update48(hw, I40E_GLPRT_UPTCL(hw->port), in ixl_update_stats_counters()
2129 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2130 &osd->eth.tx_unicast, in ixl_update_stats_counters()
2131 &nsd->eth.tx_unicast); in ixl_update_stats_counters()
2132 ixl_stat_update48(hw, I40E_GLPRT_MPRCL(hw->port), in ixl_update_stats_counters()
2133 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2134 &osd->eth.rx_multicast, in ixl_update_stats_counters()
2135 &nsd->eth.rx_multicast); in ixl_update_stats_counters()
2136 ixl_stat_update48(hw, I40E_GLPRT_MPTCL(hw->port), in ixl_update_stats_counters()
2137 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2138 &osd->eth.tx_multicast, in ixl_update_stats_counters()
2139 &nsd->eth.tx_multicast); in ixl_update_stats_counters()
2140 ixl_stat_update48(hw, I40E_GLPRT_BPRCL(hw->port), in ixl_update_stats_counters()
2141 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2142 &osd->eth.rx_broadcast, in ixl_update_stats_counters()
2143 &nsd->eth.rx_broadcast); in ixl_update_stats_counters()
2144 ixl_stat_update48(hw, I40E_GLPRT_BPTCL(hw->port), in ixl_update_stats_counters()
2145 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2146 &osd->eth.tx_broadcast, in ixl_update_stats_counters()
2147 &nsd->eth.tx_broadcast); in ixl_update_stats_counters()
2149 ixl_stat_update32(hw, I40E_GLPRT_TDOLD(hw->port), in ixl_update_stats_counters()
2150 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2151 &osd->tx_dropped_link_down, in ixl_update_stats_counters()
2152 &nsd->tx_dropped_link_down); in ixl_update_stats_counters()
2153 ixl_stat_update32(hw, I40E_GLPRT_MLFC(hw->port), in ixl_update_stats_counters()
2154 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2155 &osd->mac_local_faults, in ixl_update_stats_counters()
2156 &nsd->mac_local_faults); in ixl_update_stats_counters()
2157 ixl_stat_update32(hw, I40E_GLPRT_MRFC(hw->port), in ixl_update_stats_counters()
2158 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2159 &osd->mac_remote_faults, in ixl_update_stats_counters()
2160 &nsd->mac_remote_faults); in ixl_update_stats_counters()
2161 ixl_stat_update32(hw, I40E_GLPRT_RLEC(hw->port), in ixl_update_stats_counters()
2162 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2163 &osd->rx_length_errors, in ixl_update_stats_counters()
2164 &nsd->rx_length_errors); in ixl_update_stats_counters()
2167 ixl_stat_update32(hw, I40E_GLPRT_LXONRXC(hw->port), in ixl_update_stats_counters()
2168 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2169 &osd->link_xon_rx, &nsd->link_xon_rx); in ixl_update_stats_counters()
2170 ixl_stat_update32(hw, I40E_GLPRT_LXONTXC(hw->port), in ixl_update_stats_counters()
2171 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2172 &osd->link_xon_tx, &nsd->link_xon_tx); in ixl_update_stats_counters()
2173 ixl_stat_update32(hw, I40E_GLPRT_LXOFFRXC(hw->port), in ixl_update_stats_counters()
2174 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2175 &osd->link_xoff_rx, &nsd->link_xoff_rx); in ixl_update_stats_counters()
2176 ixl_stat_update32(hw, I40E_GLPRT_LXOFFTXC(hw->port), in ixl_update_stats_counters()
2177 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2178 &osd->link_xoff_tx, &nsd->link_xoff_tx); in ixl_update_stats_counters()
2184 if (pf->stats.link_xoff_rx != prev_link_xoff_rx) in ixl_update_stats_counters()
2185 vsi->shared->isc_pause_frames = 1; in ixl_update_stats_counters()
2188 ixl_stat_update48(hw, I40E_GLPRT_PRC64L(hw->port), in ixl_update_stats_counters()
2189 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2190 &osd->rx_size_64, &nsd->rx_size_64); in ixl_update_stats_counters()
2191 ixl_stat_update48(hw, I40E_GLPRT_PRC127L(hw->port), in ixl_update_stats_counters()
2192 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2193 &osd->rx_size_127, &nsd->rx_size_127); in ixl_update_stats_counters()
2194 ixl_stat_update48(hw, I40E_GLPRT_PRC255L(hw->port), in ixl_update_stats_counters()
2195 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2196 &osd->rx_size_255, &nsd->rx_size_255); in ixl_update_stats_counters()
2197 ixl_stat_update48(hw, I40E_GLPRT_PRC511L(hw->port), in ixl_update_stats_counters()
2198 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2199 &osd->rx_size_511, &nsd->rx_size_511); in ixl_update_stats_counters()
2200 ixl_stat_update48(hw, I40E_GLPRT_PRC1023L(hw->port), in ixl_update_stats_counters()
2201 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2202 &osd->rx_size_1023, &nsd->rx_size_1023); in ixl_update_stats_counters()
2203 ixl_stat_update48(hw, I40E_GLPRT_PRC1522L(hw->port), in ixl_update_stats_counters()
2204 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2205 &osd->rx_size_1522, &nsd->rx_size_1522); in ixl_update_stats_counters()
2206 ixl_stat_update48(hw, I40E_GLPRT_PRC9522L(hw->port), in ixl_update_stats_counters()
2207 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2208 &osd->rx_size_big, &nsd->rx_size_big); in ixl_update_stats_counters()
2211 ixl_stat_update48(hw, I40E_GLPRT_PTC64L(hw->port), in ixl_update_stats_counters()
2212 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2213 &osd->tx_size_64, &nsd->tx_size_64); in ixl_update_stats_counters()
2214 ixl_stat_update48(hw, I40E_GLPRT_PTC127L(hw->port), in ixl_update_stats_counters()
2215 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2216 &osd->tx_size_127, &nsd->tx_size_127); in ixl_update_stats_counters()
2217 ixl_stat_update48(hw, I40E_GLPRT_PTC255L(hw->port), in ixl_update_stats_counters()
2218 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2219 &osd->tx_size_255, &nsd->tx_size_255); in ixl_update_stats_counters()
2220 ixl_stat_update48(hw, I40E_GLPRT_PTC511L(hw->port), in ixl_update_stats_counters()
2221 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2222 &osd->tx_size_511, &nsd->tx_size_511); in ixl_update_stats_counters()
2223 ixl_stat_update48(hw, I40E_GLPRT_PTC1023L(hw->port), in ixl_update_stats_counters()
2224 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2225 &osd->tx_size_1023, &nsd->tx_size_1023); in ixl_update_stats_counters()
2226 ixl_stat_update48(hw, I40E_GLPRT_PTC1522L(hw->port), in ixl_update_stats_counters()
2227 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2228 &osd->tx_size_1522, &nsd->tx_size_1522); in ixl_update_stats_counters()
2229 ixl_stat_update48(hw, I40E_GLPRT_PTC9522L(hw->port), in ixl_update_stats_counters()
2230 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2231 &osd->tx_size_big, &nsd->tx_size_big); in ixl_update_stats_counters()
2233 ixl_stat_update32(hw, I40E_GLPRT_RUC(hw->port), in ixl_update_stats_counters()
2234 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2235 &osd->rx_undersize, &nsd->rx_undersize); in ixl_update_stats_counters()
2236 ixl_stat_update32(hw, I40E_GLPRT_RFC(hw->port), in ixl_update_stats_counters()
2237 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2238 &osd->rx_fragments, &nsd->rx_fragments); in ixl_update_stats_counters()
2241 ixl_stat_update32(hw, I40E_GLPRT_ROC(hw->port), in ixl_update_stats_counters()
2242 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2243 &osd->rx_oversize, &rx_roc); in ixl_update_stats_counters()
2249 * Also need to add BIT(7) to hw->port value while indexing in ixl_update_stats_counters()
2251 * SR-IOV is enabled. Indexes 128..143 are for PFs. in ixl_update_stats_counters()
2255 I40E_GL_RXERR1L(hw->pf_id + BIT(7)), in ixl_update_stats_counters()
2256 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2257 &osd->rx_err1, in ixl_update_stats_counters()
2260 nsd->rx_oversize = rx_roc + rx_err1; in ixl_update_stats_counters()
2262 ixl_stat_update32(hw, I40E_GLPRT_RJC(hw->port), in ixl_update_stats_counters()
2263 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2264 &osd->rx_jabber, &nsd->rx_jabber); in ixl_update_stats_counters()
2268 i40e_lpi_stat_update(hw, pf->stat_offsets_loaded, in ixl_update_stats_counters()
2269 &osd->tx_lpi_count, &nsd->tx_lpi_count, in ixl_update_stats_counters()
2270 &osd->rx_lpi_count, &nsd->rx_lpi_count); in ixl_update_stats_counters()
2272 pf->stat_offsets_loaded = true; in ixl_update_stats_counters()
2278 for (int i = 0; i < pf->num_vfs; i++) { in ixl_update_stats_counters()
2279 vf = &pf->vfs[i]; in ixl_update_stats_counters()
2280 if (vf->vf_flags & VF_FLAG_ENABLED) in ixl_update_stats_counters()
2281 ixl_update_eth_stats(&pf->vfs[i].vsi); in ixl_update_stats_counters()
2286 * Update VSI-specific ethernet statistics counters.
2291 struct ixl_pf *pf = (struct ixl_pf *)vsi->back; in ixl_update_eth_stats()
2292 struct i40e_hw *hw = &pf->hw; in ixl_update_eth_stats()
2295 u16 stat_idx = vsi->info.stat_counter_idx; in ixl_update_eth_stats()
2297 es = &vsi->eth_stats; in ixl_update_eth_stats()
2298 oes = &vsi->eth_stats_offsets; in ixl_update_eth_stats()
2302 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2303 &oes->tx_errors, &es->tx_errors); in ixl_update_eth_stats()
2305 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2306 &oes->rx_discards, &es->rx_discards); in ixl_update_eth_stats()
2309 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2310 &oes->rx_bytes, &es->rx_bytes); in ixl_update_eth_stats()
2312 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2313 &oes->rx_unicast, &es->rx_unicast); in ixl_update_eth_stats()
2315 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2316 &oes->rx_multicast, &es->rx_multicast); in ixl_update_eth_stats()
2318 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2319 &oes->rx_broadcast, &es->rx_broadcast); in ixl_update_eth_stats()
2322 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2323 &oes->tx_bytes, &es->tx_bytes); in ixl_update_eth_stats()
2325 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2326 &oes->tx_unicast, &es->tx_unicast); in ixl_update_eth_stats()
2328 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2329 &oes->tx_multicast, &es->tx_multicast); in ixl_update_eth_stats()
2331 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2332 &oes->tx_broadcast, &es->tx_broadcast); in ixl_update_eth_stats()
2333 vsi->stat_offsets_loaded = true; in ixl_update_eth_stats()
2345 pf = vsi->back; in ixl_update_vsi_stats()
2346 es = &vsi->eth_stats; in ixl_update_vsi_stats()
2347 nsd = &pf->stats; in ixl_update_vsi_stats()
2351 tx_discards = es->tx_discards + nsd->tx_dropped_link_down; in ixl_update_vsi_stats()
2354 for (int i = 0; i < vsi->num_rx_queues; i++) in ixl_update_vsi_stats()
2355 csum_errs += vsi->rx_queues[i].rxr.csum_errs; in ixl_update_vsi_stats()
2356 nsd->checksum_error = csum_errs; in ixl_update_vsi_stats()
2359 IXL_SET_IPACKETS(vsi, es->rx_unicast + in ixl_update_vsi_stats()
2360 es->rx_multicast + in ixl_update_vsi_stats()
2361 es->rx_broadcast); in ixl_update_vsi_stats()
2362 IXL_SET_OPACKETS(vsi, es->tx_unicast + in ixl_update_vsi_stats()
2363 es->tx_multicast + in ixl_update_vsi_stats()
2364 es->tx_broadcast); in ixl_update_vsi_stats()
2365 IXL_SET_IBYTES(vsi, es->rx_bytes); in ixl_update_vsi_stats()
2366 IXL_SET_OBYTES(vsi, es->tx_bytes); in ixl_update_vsi_stats()
2367 IXL_SET_IMCASTS(vsi, es->rx_multicast); in ixl_update_vsi_stats()
2368 IXL_SET_OMCASTS(vsi, es->tx_multicast); in ixl_update_vsi_stats()
2370 IXL_SET_IERRORS(vsi, nsd->crc_errors + nsd->illegal_bytes + in ixl_update_vsi_stats()
2371 nsd->checksum_error + nsd->rx_length_errors + in ixl_update_vsi_stats()
2372 nsd->rx_undersize + nsd->rx_fragments + nsd->rx_oversize + in ixl_update_vsi_stats()
2373 nsd->rx_jabber); in ixl_update_vsi_stats()
2374 IXL_SET_OERRORS(vsi, es->tx_errors); in ixl_update_vsi_stats()
2375 IXL_SET_IQDROPS(vsi, es->rx_discards + nsd->eth.rx_discards); in ixl_update_vsi_stats()
2377 IXL_SET_NOPROTO(vsi, es->rx_unknown_protocol); in ixl_update_vsi_stats()
2387 bzero(&pf->stats, sizeof(struct i40e_hw_port_stats)); in ixl_pf_reset_stats()
2388 bzero(&pf->stats_offsets, sizeof(struct i40e_hw_port_stats)); in ixl_pf_reset_stats()
2389 pf->stat_offsets_loaded = false; in ixl_pf_reset_stats()
2398 bzero(&vsi->eth_stats, sizeof(struct i40e_eth_stats)); in ixl_vsi_reset_stats()
2399 bzero(&vsi->eth_stats_offsets, sizeof(struct i40e_eth_stats)); in ixl_vsi_reset_stats()
2400 vsi->stat_offsets_loaded = false; in ixl_vsi_reset_stats()
2420 *stat = new_data - *offset; in _ixl_stat_update_helper()
2422 *stat = (new_data + mask) - *offset + 1; in _ixl_stat_update_helper()
2442 * ixl_stat_update64 - read and update a 64 bit stat from the chip.
2469 *stat = (u32)(new_data - *offset); in ixl_stat_update32()
2471 *stat = (u32)((new_data + ((u64)1 << 32)) - *offset); in ixl_stat_update32()
2480 device_t dev = pf->dev; in ixl_add_sysctls_recovery_mode()
2495 * in "sysctl -a" output. */ in ixl_add_sysctls_recovery_mode()
2503 &pf->hw.debug_mask, 0, "Shared code debug message level"); in ixl_add_sysctls_recovery_mode()
2507 &pf->dbg_mask, 0, "Non-shared code debug message level"); in ixl_add_sysctls_recovery_mode()
2532 pf, 0, ixl_sysctl_queue_interrupt_table, "A", "View MSI-X indices for TX/RX queues"); in ixl_add_sysctls_recovery_mode()
2538 "View MSI-X control registers for RX queues"); in ixl_add_sysctls_recovery_mode()
2544 device_t dev = pf->dev; in ixl_add_device_sysctls()
2545 struct i40e_hw *hw = &pf->hw; in ixl_add_device_sysctls()
2604 &pf->dynamic_rx_itr, 0, "Enable dynamic RX ITR"); in ixl_add_device_sysctls()
2608 &pf->dynamic_tx_itr, 0, "Enable dynamic TX ITR"); in ixl_add_device_sysctls()
2611 if (i40e_is_25G_device(hw->device_id)) { in ixl_add_device_sysctls()
2661 CTLFLAG_RD | CTLFLAG_MPSAFE, &pf->stats.tx_lpi_status, 0, in ixl_add_device_sysctls()
2665 CTLFLAG_RD | CTLFLAG_MPSAFE, &pf->stats.rx_lpi_status, 0, in ixl_add_device_sysctls()
2669 CTLFLAG_RD | CTLFLAG_MPSAFE, &pf->stats.tx_lpi_count, in ixl_add_device_sysctls()
2673 CTLFLAG_RD | CTLFLAG_MPSAFE, &pf->stats.rx_lpi_count, in ixl_add_device_sysctls()
2683 * in "sysctl -a" output. */ in ixl_add_device_sysctls()
2691 &pf->hw.debug_mask, 0, "Shared code debug message level"); in ixl_add_device_sysctls()
2695 &pf->dbg_mask, 0, "Non-shared code debug message level"); in ixl_add_device_sysctls()
2740 pf, 0, ixl_sysctl_hlut, "A", "View RSS lookup table"); in ixl_add_device_sysctls()
2775 pf, 0, ixl_sysctl_queue_interrupt_table, "A", "View MSI-X indices for TX/RX queues"); in ixl_add_device_sysctls()
2781 if (pf->has_i2c) { in ixl_add_device_sysctls()
2809 queues = (int)ixl_pf_qmgr_get_num_free(&pf->qmgr); in ixl_sysctl_unallocated_queues()
2868 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_current_speed()
2875 ixl_link_speed_string(hw->phy.link_info.link_speed)), in ixl_sysctl_current_speed()
2882 * Converts 8-bit speeds value to and from sysctl flags and
2914 struct i40e_hw *hw = &pf->hw; in ixl_set_advertised_speeds()
2915 device_t dev = pf->dev; in ixl_set_advertised_speeds()
2927 hw->aq.asq_last_status); in ixl_set_advertised_speeds()
2953 hw->aq.asq_last_status); in ixl_set_advertised_speeds()
2963 ** 0x1 - 100 Mb
2964 ** 0x2 - 1G
2965 ** 0x4 - 10G
2966 ** 0x8 - 20G
2967 ** 0x10 - 25G
2968 ** 0x20 - 40G
2969 ** 0x40 - 2.5G
2970 ** 0x80 - 5G
2976 int supported = ixl_convert_sysctl_aq_link_speed(pf->supported_speeds, false); in ixl_sysctl_supported_speeds()
2984 ** 0x1 - advertise 100 Mb
2985 ** 0x2 - advertise 1G
2986 ** 0x4 - advertise 10G
2987 ** 0x8 - advertise 20G
2988 ** 0x10 - advertise 25G
2989 ** 0x20 - advertise 40G
2990 ** 0x40 - advertise 2.5G
2991 ** 0x80 - advertise 5G
2999 device_t dev = pf->dev; in ixl_sysctl_set_advertise()
3005 requested_ls = pf->advertised_speed; in ixl_sysctl_set_advertise()
3007 if ((error) || (req->newptr == NULL)) in ixl_sysctl_set_advertise()
3019 ixl_convert_sysctl_aq_link_speed(pf->supported_speeds, false)); in ixl_sysctl_set_advertise()
3025 if ((converted_speeds | pf->supported_speeds) != pf->supported_speeds) { in ixl_sysctl_set_advertise()
3028 ixl_convert_sysctl_aq_link_speed(pf->supported_speeds, false)); in ixl_sysctl_set_advertise()
3036 pf->advertised_speed = requested_ls; in ixl_sysctl_set_advertise()
3075 struct i40e_hw *hw = &pf->hw; in ixl_get_bus_info()
3076 device_t dev = pf->dev; in ixl_get_bus_info()
3082 if (hw->mac.type == I40E_MAC_X722) in ixl_get_bus_info()
3094 ((hw->bus.speed == i40e_bus_speed_8000) ? "8.0GT/s": in ixl_get_bus_info()
3095 (hw->bus.speed == i40e_bus_speed_5000) ? "5.0GT/s": in ixl_get_bus_info()
3096 (hw->bus.speed == i40e_bus_speed_2500) ? "2.5GT/s":"Unknown"), in ixl_get_bus_info()
3097 (hw->bus.width == i40e_bus_width_pcie_x8) ? "Width x8" : in ixl_get_bus_info()
3098 (hw->bus.width == i40e_bus_width_pcie_x4) ? "Width x4" : in ixl_get_bus_info()
3099 (hw->bus.width == i40e_bus_width_pcie_x2) ? "Width x2" : in ixl_get_bus_info()
3100 (hw->bus.width == i40e_bus_width_pcie_x1) ? "Width x1" : in ixl_get_bus_info()
3107 if (hw->bus.speed >= i40e_bus_speed_8000 in ixl_get_bus_info()
3108 && hw->bus.width >= i40e_bus_width_pcie_x8) in ixl_get_bus_info()
3111 num_ports = bitcount32(hw->func_caps.valid_functions); in ixl_get_bus_info()
3112 max_speed = ixl_max_aq_speed_to_value(pf->supported_speeds) / 1000000; in ixl_get_bus_info()
3114 if ((num_ports * max_speed) > hw->bus.speed * hw->bus.width) { in ixl_get_bus_info()
3115 device_printf(dev, "PCI-Express bandwidth available" in ixl_get_bus_info()
3119 " PCI-e link with more lanes and/or higher" in ixl_get_bus_info()
3128 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_show_fw()
3142 u8 nvma_ptr = nvma->config & 0xFF; in ixl_print_nvm_cmd()
3143 u8 nvma_flags = (nvma->config & 0xF00) >> 8; in ixl_print_nvm_cmd()
3146 switch (nvma->command) { in ixl_print_nvm_cmd()
3149 nvma->offset == 0 && nvma->data_size == 1) { in ixl_print_nvm_cmd()
3159 device_printf(dev, "NVMUPD: unknown command: 0x%08x\n", nvma->command); in ixl_print_nvm_cmd()
3164 cmd_str, nvma_ptr, nvma_flags, nvma->offset, nvma->data_size); in ixl_print_nvm_cmd()
3170 struct i40e_hw *hw = &pf->hw; in ixl_handle_nvmupd_cmd()
3172 device_t dev = pf->dev; in ixl_handle_nvmupd_cmd()
3181 ifd_len = ifd->ifd_len; in ixl_handle_nvmupd_cmd()
3184 ifd->ifd_data == NULL) { in ixl_handle_nvmupd_cmd()
3190 ifd->ifd_data); in ixl_handle_nvmupd_cmd()
3195 err = copyin(ifd->ifd_data, nvma, ifd_len); in ixl_handle_nvmupd_cmd()
3203 if (pf->dbg_mask & IXL_DBG_NVMUPD) in ixl_handle_nvmupd_cmd()
3220 return (-EBUSY); in ixl_handle_nvmupd_cmd()
3223 if (nvma->data_size < 1 || nvma->data_size > 4096) { in ixl_handle_nvmupd_cmd()
3237 exp_len = nvma_size + nvma->data_size - 1; /* One byte is kept in struct */ in ixl_handle_nvmupd_cmd()
3242 err = copyin(ifd->ifd_data, nvma, ifd_len); in ixl_handle_nvmupd_cmd()
3253 status = i40e_nvmupd_command(hw, nvma, nvma->data, &perrno); in ixl_handle_nvmupd_cmd()
3256 err = copyout(nvma, ifd->ifd_data, ifd_len); in ixl_handle_nvmupd_cmd()
3265 if (status != 0 && (pf->dbg_mask & IXL_DBG_NVMUPD) != 0) in ixl_handle_nvmupd_cmd()
3270 * -EPERM is actually ERESTART, which the kernel interprets as it needing in ixl_handle_nvmupd_cmd()
3271 * to run this ioctl again. So use -EACCES for -EPERM instead. in ixl_handle_nvmupd_cmd()
3273 if (perrno == -EPERM) in ixl_handle_nvmupd_cmd()
3274 return (-EACCES); in ixl_handle_nvmupd_cmd()
3282 struct i40e_hw *hw = &pf->hw; in ixl_find_i2c_interface()
3291 & BIT(hw->port); in ixl_find_i2c_interface()
3296 return (-1); in ixl_find_i2c_interface()
3302 struct i40e_hw *hw = &pf->hw; in ixl_set_link()
3303 device_t dev = pf->dev; in ixl_set_link()
3316 hw->aq.asq_last_status); in ixl_set_link()
3330 hw->aq.asq_last_status); in ixl_set_link()
3349 switch (pf->fc) { in ixl_set_link()
3375 hw->aq.asq_last_status); in ixl_set_link()
3384 hw->aq.asq_last_status); in ixl_set_link()
3394 "1000BASE-KX", in ixl_phy_type_string()
3395 "10GBASE-KX4", in ixl_phy_type_string()
3396 "10GBASE-KR", in ixl_phy_type_string()
3397 "40GBASE-KR4", in ixl_phy_type_string()
3403 "40GBASE-CR4", in ixl_phy_type_string()
3404 "10GBASE-CR1", in ixl_phy_type_string()
3410 "100BASE-TX", in ixl_phy_type_string()
3411 "1000BASE-T", in ixl_phy_type_string()
3412 "10GBASE-T", in ixl_phy_type_string()
3413 "10GBASE-SR", in ixl_phy_type_string()
3414 "10GBASE-LR", in ixl_phy_type_string()
3415 "10GBASE-SFP+Cu", in ixl_phy_type_string()
3416 "10GBASE-CR1", in ixl_phy_type_string()
3417 "40GBASE-CR4", in ixl_phy_type_string()
3418 "40GBASE-SR4", in ixl_phy_type_string()
3419 "40GBASE-LR4", in ixl_phy_type_string()
3420 "1000BASE-SX", in ixl_phy_type_string()
3421 "1000BASE-LX", in ixl_phy_type_string()
3422 "1000BASE-T Optical", in ixl_phy_type_string()
3423 "20GBASE-KR2", in ixl_phy_type_string()
3427 "25GBASE-KR", in ixl_phy_type_string()
3428 "25GBASE-CR", in ixl_phy_type_string()
3429 "25GBASE-SR", in ixl_phy_type_string()
3430 "25GBASE-LR", in ixl_phy_type_string()
3431 "25GBASE-AOC", in ixl_phy_type_string()
3432 "25GBASE-ACC", in ixl_phy_type_string()
3433 "2.5GBASE-T", in ixl_phy_type_string()
3434 "5GBASE-T" in ixl_phy_type_string()
3447 device_t dev = pf->dev; in ixl_aq_get_link_status()
3448 struct i40e_hw *hw = &pf->hw; in ixl_aq_get_link_status()
3456 link_status->command_flags = CPU_TO_LE16(I40E_AQ_LSE_ENABLE); in ixl_aq_get_link_status()
3462 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_aq_get_link_status()
3474 return ixl_phy_type_string(val - 0x1F, true); in ixl_phy_type_string_ls()
3483 device_t dev = pf->dev; in ixl_sysctl_link_status()
3533 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_phy_abilities()
3534 device_t dev = pf->dev; in ixl_sysctl_phy_abilities()
3552 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_phy_abilities()
3625 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_phy_statistics()
3626 device_t dev = pf->dev; in ixl_sysctl_phy_statistics()
3636 if (hw->mac.type == I40E_MAC_X722) { in ixl_sysctl_phy_statistics()
3642 "Auto-Negotiation (AN) Status: unavailable\n" in ixl_sysctl_phy_statistics()
3653 "Auto-Negotiation (AN) Status: %#010X\n" in ixl_sysctl_phy_statistics()
3680 struct ixl_vsi *vsi = &pf->vsi; in ixl_sysctl_sw_filter_list()
3682 device_t dev = pf->dev; in ixl_sysctl_sw_filter_list()
3697 LIST_FOREACH(f, &vsi->ftl, ftle) in ixl_sysctl_sw_filter_list()
3703 LIST_FOREACH(f, &vsi->ftl, ftle) { in ixl_sysctl_sw_filter_list()
3706 MAC_FORMAT_ARGS(f->macaddr), f->vlan, f->flags); in ixl_sysctl_sw_filter_list()
3716 if (pf->num_vfs > 0) { in ixl_sysctl_sw_filter_list()
3718 for (int i = 0; i < pf->num_vfs; i++) { in ixl_sysctl_sw_filter_list()
3719 vf = &pf->vfs[i]; in ixl_sysctl_sw_filter_list()
3720 if (!(vf->vf_flags & VF_FLAG_ENABLED)) in ixl_sysctl_sw_filter_list()
3723 vsi = &vf->vsi; in ixl_sysctl_sw_filter_list()
3725 sbuf_printf(buf, "VF-%d Filters:\n", vf->vf_num); in ixl_sysctl_sw_filter_list()
3726 LIST_FOREACH(f, &vsi->ftl, ftle) in ixl_sysctl_sw_filter_list()
3732 LIST_FOREACH(f, &vsi->ftl, ftle) { in ixl_sysctl_sw_filter_list()
3735 MAC_FORMAT_ARGS(f->macaddr), f->vlan, f->flags); in ixl_sysctl_sw_filter_list()
3758 return ((int)one->resource_type - (int)two->resource_type); in ixl_res_alloc_cmp()
3771 "S-tag", in ixl_switch_res_type_string()
3800 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_hw_res_alloc()
3801 device_t dev = pf->dev; in ixl_sysctl_hw_res_alloc()
3824 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_hw_res_alloc()
3837 " Type | Guaranteed | Total | Used | Un-allocated\n" in ixl_sysctl_hw_res_alloc()
3847 if (i < num_entries - 1) in ixl_sysctl_hw_res_alloc()
3874 * power-on; these include the EMP, Ports, PFs and VFs.
3890 seid - IXL_SW_SEID_MAC_START); in ixl_switch_element_string()
3895 seid - IXL_SW_SEID_PF_START); in ixl_switch_element_string()
3900 seid - IXL_SW_SEID_VF_START); in ixl_switch_element_string()
3937 return ((int)one->seid - (int)two->seid); in ixl_sw_cfg_elem_seid_cmp()
3944 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_switch_config()
3945 device_t dev = pf->dev; in ixl_sysctl_switch_config()
3969 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_switch_config()
3985 qsort(sw_config->element, sw_config->header.num_reported, in ixl_sysctl_switch_config()
3991 sbuf_printf(buf, "# of reported elements: %d\n", sw_config->header.num_reported); in ixl_sysctl_switch_config()
3992 sbuf_printf(buf, "total # of elements: %d\n", sw_config->header.num_total); in ixl_sysctl_switch_config()
3994 * Revision -- all elements are revision 1 for now in ixl_sysctl_switch_config()
3999 for (int i = 0; i < sw_config->header.num_reported; i++) { in ixl_sysctl_switch_config()
4000 elem = &sw_config->element[i]; in ixl_sysctl_switch_config()
4003 sbuf_printf(buf, "%4d", elem->seid); in ixl_sysctl_switch_config()
4006 elem->element_type, elem->seid)); in ixl_sysctl_switch_config()
4008 sbuf_printf(buf, "%4d", elem->uplink_seid); in ixl_sysctl_switch_config()
4011 0, elem->uplink_seid)); in ixl_sysctl_switch_config()
4013 sbuf_printf(buf, "%4d", elem->downlink_seid); in ixl_sysctl_switch_config()
4016 0, elem->downlink_seid)); in ixl_sysctl_switch_config()
4018 sbuf_printf(buf, "%8d", elem->connection_type); in ixl_sysctl_switch_config()
4019 if (i < sw_config->header.num_reported - 1) in ixl_sysctl_switch_config()
4037 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_switch_vlans()
4038 device_t dev = pf->dev; in ixl_sysctl_switch_vlans()
4039 int requested_vlan = -1; in ixl_sysctl_switch_vlans()
4044 if ((error) || (req->newptr == NULL)) in ixl_sysctl_switch_vlans()
4047 if ((hw->flags & I40E_HW_FLAG_802_1AD_CAPABLE) == 0) { in ixl_sysctl_switch_vlans()
4052 hw->switch_tag = requested_vlan; in ixl_sysctl_switch_vlans()
4055 hw->switch_tag, hw->first_tag, hw->second_tag); in ixl_sysctl_switch_vlans()
4061 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_switch_vlans()
4071 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_hkey()
4072 device_t dev = pf->dev; in ixl_sysctl_hkey()
4089 if (hw->mac.type == I40E_MAC_X722) { in ixl_sysctl_hkey()
4090 status = i40e_aq_get_rss_key(hw, pf->vsi.vsi_num, &key_data); in ixl_sysctl_hkey()
4093 i40e_stat_str(hw, status), i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_hkey()
4126 width = (rem > 0 && i == lines - 1) in ixl_sbuf_print_bytes()
4135 for (k = 0; k < (byte_stride - width); k++) in ixl_sbuf_print_bytes()
4151 if (j == width - 1) in ixl_sbuf_print_bytes()
4161 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_hlut()
4162 device_t dev = pf->dev; in ixl_sysctl_hlut()
4177 if (hw->mac.type == I40E_MAC_X722) { in ixl_sysctl_hlut()
4178 status = i40e_aq_get_rss_lut(hw, pf->vsi.vsi_num, TRUE, hlut, sizeof(hlut)); in ixl_sysctl_hlut()
4181 i40e_stat_str(hw, status), i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_hlut()
4183 for (int i = 0; i < hw->func_caps.rss_table_size >> 2; i++) { in ixl_sysctl_hlut()
4202 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_hena()
4214 * 1 - Disable link management on this port
4215 * 0 - Re-enable link management
4223 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_fw_link_management()
4224 device_t dev = pf->dev; in ixl_sysctl_fw_link_management()
4225 int requested_mode = -1; in ixl_sysctl_fw_link_management()
4231 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fw_link_management()
4245 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_fw_link_management()
4256 * Temperature 96-97 22-23
4257 * Vcc 98-99 26-27
4258 * TX power 102-103 34-35..40-41
4259 * RX power 104-105 50-51..56-57
4265 device_t dev = pf->dev; in ixl_sysctl_read_i2c_diag_data()
4270 if (req->oldptr == NULL) { in ixl_sysctl_read_i2c_diag_data()
4275 error = pf->read_i2c_byte(pf, 0, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4285 * - Internally calibrated data in ixl_sysctl_read_i2c_diag_data()
4286 * - Diagnostic monitoring is implemented in ixl_sysctl_read_i2c_diag_data()
4288 pf->read_i2c_byte(pf, 92, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4297 pf->read_i2c_byte(pf, offset, 0xA2, &output); in ixl_sysctl_read_i2c_diag_data()
4301 pf->read_i2c_byte(pf, offset, 0xA2, &output); in ixl_sysctl_read_i2c_diag_data()
4312 pf->read_i2c_byte(pf, offset, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4316 pf->read_i2c_byte(pf, offset, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4321 pf->read_i2c_byte(pf, offset, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4325 pf->read_i2c_byte(pf, offset, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4342 * Input: 32-bit value:
4343 * bits 0-7: device address (0xA0 or 0xA2)
4344 * bits 8-15: offset (0-255)
4345 * bits 16-31: unused
4346 * Output: 8-bit value read
4352 device_t dev = pf->dev; in ixl_sysctl_read_i2c_byte()
4353 int input = -1, error = 0; in ixl_sysctl_read_i2c_byte()
4358 if ((error) || (req->newptr == NULL)) in ixl_sysctl_read_i2c_byte()
4367 error = pf->read_i2c_byte(pf, offset, dev_addr, &output); in ixl_sysctl_read_i2c_byte()
4378 * Input: 32-bit value:
4379 * bits 0-7: device address (0xA0 or 0xA2)
4380 * bits 8-15: offset (0-255)
4381 * bits 16-23: value to write
4382 * bits 24-31: unused
4383 * Output: 8-bit value written
4389 device_t dev = pf->dev; in ixl_sysctl_write_i2c_byte()
4390 int input = -1, error = 0; in ixl_sysctl_write_i2c_byte()
4395 if ((error) || (req->newptr == NULL)) in ixl_sysctl_write_i2c_byte()
4405 error = pf->write_i2c_byte(pf, offset, dev_addr, value); in ixl_sysctl_write_i2c_byte()
4417 device_t dev = pf->dev; in ixl_get_fec_config()
4418 struct i40e_hw *hw = &pf->hw; in ixl_get_fec_config()
4430 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_get_fec_config()
4434 *is_set = !!(abilities->fec_cfg_curr_mod_ext_info & bit_pos); in ixl_get_fec_config()
4442 device_t dev = pf->dev; in ixl_set_fec_config()
4443 struct i40e_hw *hw = &pf->hw; in ixl_set_fec_config()
4449 config.fec_config = abilities->fec_cfg_curr_mod_ext_info & ~(bit_pos); in ixl_set_fec_config()
4452 if (config.fec_config != abilities->fec_cfg_curr_mod_ext_info) { in ixl_set_fec_config()
4454 config.phy_type = abilities->phy_type; in ixl_set_fec_config()
4455 config.phy_type_ext = abilities->phy_type_ext; in ixl_set_fec_config()
4456 config.link_speed = abilities->link_speed; in ixl_set_fec_config()
4457 config.eee_capability = abilities->eee_capability; in ixl_set_fec_config()
4458 config.eeer = abilities->eeer_val; in ixl_set_fec_config()
4459 config.low_power_ctrl = abilities->d3_lpan; in ixl_set_fec_config()
4466 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_set_fec_config()
4486 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_fc_ability()
4504 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_rs_ability()
4522 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_fc_request()
4540 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_rs_request()
4558 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_auto_enable()
4568 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_dump_debug_data()
4569 device_t dev = pf->dev; in ixl_sysctl_dump_debug_data()
4609 i40e_stat_str(hw, status), i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_dump_debug_data()
4618 /* We're done with the current table; we can dump out read data. */ in ixl_sysctl_dump_debug_data()
4658 struct i40e_hw *hw = &pf->hw; in ixl_start_fw_lldp()
4663 switch (hw->aq.asq_last_status) { in ixl_start_fw_lldp()
4665 device_printf(pf->dev, in ixl_start_fw_lldp()
4669 device_printf(pf->dev, in ixl_start_fw_lldp()
4675 device_printf(pf->dev, in ixl_start_fw_lldp()
4678 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_start_fw_lldp()
4683 ixl_clear_state(&pf->state, IXL_STATE_FW_LLDP_DISABLED); in ixl_start_fw_lldp()
4690 struct i40e_hw *hw = &pf->hw; in ixl_stop_fw_lldp()
4691 device_t dev = pf->dev; in ixl_stop_fw_lldp()
4694 if (hw->func_caps.npar_enable != 0) { in ixl_stop_fw_lldp()
4700 if ((hw->flags & I40E_HW_FLAG_FW_LLDP_STOPPABLE) == 0) { in ixl_stop_fw_lldp()
4708 if (hw->aq.asq_last_status != I40E_AQ_RC_EPERM) { in ixl_stop_fw_lldp()
4712 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_stop_fw_lldp()
4720 ixl_set_state(&pf->state, IXL_STATE_FW_LLDP_DISABLED); in ixl_stop_fw_lldp()
4730 state = new_state = !ixl_test_state(&pf->state, IXL_STATE_FW_LLDP_DISABLED); in ixl_sysctl_fw_lldp()
4734 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fw_lldp()
4756 state = new_state = ixl_test_state(&pf->state, IXL_STATE_EEE_ENABLED); in ixl_sysctl_eee_enable()
4760 if ((sysctl_handle_status) || (req->newptr == NULL)) in ixl_sysctl_eee_enable()
4768 cmd_status = i40e_enable_eee(&pf->hw, (bool)(!!new_state)); in ixl_sysctl_eee_enable()
4773 ixl_clear_state(&pf->state, IXL_STATE_EEE_ENABLED); in ixl_sysctl_eee_enable()
4775 ixl_set_state(&pf->state, IXL_STATE_EEE_ENABLED); in ixl_sysctl_eee_enable()
4790 state = ixl_test_state(&pf->state, IXL_STATE_LINK_ACTIVE_ON_DOWN); in ixl_sysctl_set_link_active()
4793 if ((error) || (req->newptr == NULL)) in ixl_sysctl_set_link_active()
4797 ixl_clear_state(&pf->state, IXL_STATE_LINK_ACTIVE_ON_DOWN); in ixl_sysctl_set_link_active()
4799 ixl_set_state(&pf->state, IXL_STATE_LINK_ACTIVE_ON_DOWN); in ixl_sysctl_set_link_active()
4808 struct i40e_hw *hw = &pf->hw; in ixl_attach_get_link_status()
4809 device_t dev = pf->dev; in ixl_attach_get_link_status()
4812 if (((hw->aq.fw_maj_ver == 4) && (hw->aq.fw_min_ver < 33)) || in ixl_attach_get_link_status()
4813 (hw->aq.fw_maj_ver < 4)) { in ixl_attach_get_link_status()
4820 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_attach_get_link_status()
4826 hw->phy.get_link_info = TRUE; in ixl_attach_get_link_status()
4827 status = i40e_get_link_status(hw, &pf->link_up); in ixl_attach_get_link_status()
4832 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_attach_get_link_status()
4837 ixl_set_state(&pf->state, IXL_STATE_LINK_POLLING); in ixl_attach_get_link_status()
4838 pf->link_poll_start = getsbinuptime(); in ixl_attach_get_link_status()
4841 ixl_dbg_link(pf, "%s link_up: %d\n", __func__, pf->link_up); in ixl_attach_get_link_status()
4844 if (pf->fc == -1) in ixl_attach_get_link_status()
4845 pf->fc = hw->fc.current_mode; in ixl_attach_get_link_status()
4858 if ((error) || (req->newptr == NULL)) in ixl_sysctl_do_pf_reset()
4862 ixl_set_state(&pf->state, IXL_STATE_PF_RESET_REQ); in ixl_sysctl_do_pf_reset()
4871 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_do_core_reset()
4876 if ((error) || (req->newptr == NULL)) in ixl_sysctl_do_core_reset()
4888 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_do_global_reset()
4893 if ((error) || (req->newptr == NULL)) in ixl_sysctl_do_global_reset()
4903 * to MSI-X vectors.
4909 struct ixl_vsi *vsi = &pf->vsi; in ixl_sysctl_queue_interrupt_table()
4910 struct i40e_hw *hw = vsi->hw; in ixl_sysctl_queue_interrupt_table()
4911 device_t dev = pf->dev; in ixl_sysctl_queue_interrupt_table()
4915 struct ixl_rx_queue *rx_que = vsi->rx_queues; in ixl_sysctl_queue_interrupt_table()
4916 struct ixl_tx_queue *tx_que = vsi->tx_queues; in ixl_sysctl_queue_interrupt_table()
4925 for (int i = 0; i < vsi->num_rx_queues; i++) { in ixl_sysctl_queue_interrupt_table()
4926 rx_que = &vsi->rx_queues[i]; in ixl_sysctl_queue_interrupt_table()
4929 i, rx_que->msix, in ixl_sysctl_queue_interrupt_table()
4930 rd32(hw, I40E_PFINT_LNKLSTN(rx_que->msix - 1)), in ixl_sysctl_queue_interrupt_table()
4931 rd32(hw, I40E_QINT_RQCTL(rx_que->msix - 1))); in ixl_sysctl_queue_interrupt_table()
4933 for (int i = 0; i < vsi->num_tx_queues; i++) { in ixl_sysctl_queue_interrupt_table()
4934 tx_que = &vsi->tx_queues[i]; in ixl_sysctl_queue_interrupt_table()
4936 i, tx_que->msix, in ixl_sysctl_queue_interrupt_table()
4937 rd32(hw, I40E_QINT_TQCTL(tx_que->msix - 1))); in ixl_sysctl_queue_interrupt_table()
4952 struct ixl_vsi *vsi = &pf->vsi; in ixl_sysctl_debug_queue_int_ctln()
4953 struct i40e_hw *hw = vsi->hw; in ixl_sysctl_debug_queue_int_ctln()
4954 device_t dev = pf->dev; in ixl_sysctl_debug_queue_int_ctln()
4958 struct ixl_rx_queue *rx_que = vsi->rx_queues; in ixl_sysctl_debug_queue_int_ctln()
4967 for (int i = 0; i < vsi->num_rx_queues; i++) { in ixl_sysctl_debug_queue_int_ctln()
4968 rx_que = &vsi->rx_queues[i]; in ixl_sysctl_debug_queue_int_ctln()
4971 i, rx_que->msix, in ixl_sysctl_debug_queue_int_ctln()
4972 rd32(hw, I40E_PFINT_DYN_CTLN(rx_que->msix - 1))); in ixl_sysctl_debug_queue_int_ctln()