Lines Matching +full:es +full:- +full:enable
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()
599 if_t ifp = vsi->ifp; in ixl_add_multi()
600 struct i40e_hw *hw = vsi->hw; in ixl_add_multi()
609 vsi->seid, TRUE, NULL); in ixl_add_multi()
630 if (ixl_ether_is_equal(f->macaddr, (u8 *)LLADDR(sdl))) in ixl_match_maddr()
640 if_t ifp = vsi->ifp; in ixl_del_multi()
648 LIST_FOREACH_SAFE(f, &vsi->ftl, ftle, fn) { in ixl_del_multi()
649 if ((f->flags & IXL_FILTER_MC) == 0 || in ixl_del_multi()
665 struct i40e_hw *hw = &pf->hw; in ixl_link_up_msg()
666 if_t ifp = pf->vsi.ifp; in ixl_link_up_msg()
670 fec_abilities = hw->phy.link_info.req_fec_info; in ixl_link_up_msg()
679 if (hw->phy.link_info.fec_info & I40E_AQ_CONFIG_FEC_RS_ENA) in ixl_link_up_msg()
681 else if (hw->phy.link_info.fec_info & I40E_AQ_CONFIG_FEC_KR_ENA) in ixl_link_up_msg()
688 ixl_link_speed_string(hw->phy.link_info.link_speed), in ixl_link_up_msg()
690 (hw->phy.link_info.an_info & I40E_AQ_AN_COMPLETED) ? "True" : "False", in ixl_link_up_msg()
691 (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_TX && in ixl_link_up_msg()
692 hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_RX) ? in ixl_link_up_msg()
693 ixl_fc_string[3] : (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_TX) ? in ixl_link_up_msg()
694 ixl_fc_string[2] : (hw->phy.link_info.an_info & I40E_AQ_LINK_PAUSE_RX) ? in ixl_link_up_msg()
704 struct i40e_hw *hw = &pf->hw; in ixl_configure_intr0_msix()
707 /* First set up the adminq - vector 0 */ in ixl_configure_intr0_msix()
723 * This means we won't use MSI-X vector 0 for a queue interrupt in ixl_configure_intr0_msix()
724 * in MSI-X mode. in ixl_configure_intr0_msix()
820 * - this will need to be more robust when more complex
827 struct i40e_hw *hw = &pf->hw; in ixl_switch_config()
828 struct ixl_vsi *vsi = &pf->vsi; in ixl_switch_config()
829 device_t dev = iflib_get_dev(vsi->ctx); in ixl_switch_config()
841 " aq_error %d\n", ret, pf->hw.aq.asq_last_status); in ixl_switch_config()
844 if (pf->dbg_mask & IXL_DBG_SWITCH_INFO) { in ixl_switch_config()
847 LE16_TO_CPU(sw_config->header.num_reported), in ixl_switch_config()
848 LE16_TO_CPU(sw_config->header.num_total)); in ixl_switch_config()
850 i < LE16_TO_CPU(sw_config->header.num_reported); i++) { in ixl_switch_config()
852 "-> %d: type=%d seid=%d uplink=%d downlink=%d\n", i, in ixl_switch_config()
853 sw_config->element[i].element_type, in ixl_switch_config()
854 LE16_TO_CPU(sw_config->element[i].seid), in ixl_switch_config()
855 LE16_TO_CPU(sw_config->element[i].uplink_seid), in ixl_switch_config()
856 LE16_TO_CPU(sw_config->element[i].downlink_seid)); in ixl_switch_config()
860 vsi->uplink_seid = LE16_TO_CPU(sw_config->element[0].uplink_seid); in ixl_switch_config()
861 vsi->downlink_seid = LE16_TO_CPU(sw_config->element[0].downlink_seid); in ixl_switch_config()
862 vsi->seid = LE16_TO_CPU(sw_config->element[0].seid); in ixl_switch_config()
873 tree = device_get_sysctl_tree(vsi->dev); in ixl_vsi_add_sysctls()
875 vsi->vsi_node = SYSCTL_ADD_NODE(&vsi->sysctl_ctx, child, OID_AUTO, sysctl_name, in ixl_vsi_add_sysctls()
878 vsi_list = SYSCTL_CHILDREN(vsi->vsi_node); in ixl_vsi_add_sysctls()
879 ixl_add_sysctls_eth_stats(&vsi->sysctl_ctx, vsi_list, &vsi->eth_stats); in ixl_vsi_add_sysctls()
882 SYSCTL_ADD_UQUAD(&vsi->sysctl_ctx, vsi_list, OID_AUTO, "rx_errors", in ixl_vsi_add_sysctls()
883 CTLFLAG_RD, &vsi->ierrors, in ixl_vsi_add_sysctls()
887 ixl_vsi_add_queues_stats(vsi, &vsi->sysctl_ctx); in ixl_vsi_add_sysctls()
898 device_t dev = pf->dev; in ixl_sysctl_pf_tx_itr()
902 requested_tx_itr = pf->tx_itr; in ixl_sysctl_pf_tx_itr()
904 if ((error) || (req->newptr == NULL)) in ixl_sysctl_pf_tx_itr()
906 if (pf->dynamic_tx_itr) { in ixl_sysctl_pf_tx_itr()
918 pf->tx_itr = requested_tx_itr; in ixl_sysctl_pf_tx_itr()
932 device_t dev = pf->dev; in ixl_sysctl_pf_rx_itr()
936 requested_rx_itr = pf->rx_itr; in ixl_sysctl_pf_rx_itr()
938 if ((error) || (req->newptr == NULL)) in ixl_sysctl_pf_rx_itr()
940 if (pf->dynamic_rx_itr) { in ixl_sysctl_pf_rx_itr()
952 pf->rx_itr = requested_rx_itr; in ixl_sysctl_pf_rx_itr()
967 struct i40e_eth_stats *eth_stats = &stats->eth; in ixl_add_sysctls_mac_stats()
972 {&stats->crc_errors, "crc_errors", "CRC Errors"}, in ixl_add_sysctls_mac_stats()
973 {&stats->illegal_bytes, "illegal_bytes", "Illegal Byte Errors"}, in ixl_add_sysctls_mac_stats()
974 {&stats->mac_local_faults, "local_faults", "MAC Local Faults"}, in ixl_add_sysctls_mac_stats()
975 {&stats->mac_remote_faults, "remote_faults", "MAC Remote Faults"}, in ixl_add_sysctls_mac_stats()
976 {&stats->rx_length_errors, "rx_length_errors", "Receive Length Errors"}, in ixl_add_sysctls_mac_stats()
978 {&stats->rx_size_64, "rx_frames_64", "64 byte frames received"}, in ixl_add_sysctls_mac_stats()
979 {&stats->rx_size_127, "rx_frames_65_127", "65-127 byte frames received"}, in ixl_add_sysctls_mac_stats()
980 {&stats->rx_size_255, "rx_frames_128_255", "128-255 byte frames received"}, in ixl_add_sysctls_mac_stats()
981 {&stats->rx_size_511, "rx_frames_256_511", "256-511 byte frames received"}, in ixl_add_sysctls_mac_stats()
982 {&stats->rx_size_1023, "rx_frames_512_1023", "512-1023 byte frames received"}, in ixl_add_sysctls_mac_stats()
983 {&stats->rx_size_1522, "rx_frames_1024_1522", "1024-1522 byte frames received"}, in ixl_add_sysctls_mac_stats()
984 {&stats->rx_size_big, "rx_frames_big", "1523-9522 byte frames received"}, in ixl_add_sysctls_mac_stats()
985 {&stats->rx_undersize, "rx_undersize", "Undersized packets received"}, in ixl_add_sysctls_mac_stats()
986 {&stats->rx_fragments, "rx_fragmented", "Fragmented packets received"}, in ixl_add_sysctls_mac_stats()
987 {&stats->rx_oversize, "rx_oversized", "Oversized packets received"}, in ixl_add_sysctls_mac_stats()
988 {&stats->rx_jabber, "rx_jabber", "Received Jabber"}, in ixl_add_sysctls_mac_stats()
989 {&stats->checksum_error, "checksum_errors", "Checksum Errors"}, in ixl_add_sysctls_mac_stats()
991 {&stats->tx_size_64, "tx_frames_64", "64 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
992 {&stats->tx_size_127, "tx_frames_65_127", "65-127 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
993 {&stats->tx_size_255, "tx_frames_128_255", "128-255 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
994 {&stats->tx_size_511, "tx_frames_256_511", "256-511 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
995 {&stats->tx_size_1023, "tx_frames_512_1023", "512-1023 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
996 {&stats->tx_size_1522, "tx_frames_1024_1522", "1024-1522 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
997 {&stats->tx_size_big, "tx_frames_big", "1523-9522 byte frames transmitted"}, in ixl_add_sysctls_mac_stats()
999 {&stats->link_xon_tx, "xon_txd", "Link XON transmitted"}, in ixl_add_sysctls_mac_stats()
1000 {&stats->link_xon_rx, "xon_recvd", "Link XON received"}, in ixl_add_sysctls_mac_stats()
1001 {&stats->link_xoff_tx, "xoff_txd", "Link XOFF transmitted"}, in ixl_add_sysctls_mac_stats()
1002 {&stats->link_xoff_rx, "xoff_recvd", "Link XOFF received"}, in ixl_add_sysctls_mac_stats()
1008 while (entry->stat != 0) in ixl_add_sysctls_mac_stats()
1010 SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, entry->name, in ixl_add_sysctls_mac_stats()
1011 CTLFLAG_RD, entry->stat, in ixl_add_sysctls_mac_stats()
1012 entry->description); in ixl_add_sysctls_mac_stats()
1020 struct i40e_hw *hw = &pf->hw; in ixl_set_rss_key()
1021 struct ixl_vsi *vsi = &pf->vsi; in ixl_set_rss_key()
1022 device_t dev = pf->dev; in ixl_set_rss_key()
1033 if (hw->mac.type == I40E_MAC_X722) { in ixl_set_rss_key()
1036 status = i40e_aq_set_rss_key(hw, vsi->vsi_num, &key_data); in ixl_set_rss_key()
1041 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_set_rss_key()
1054 struct i40e_hw *hw = &pf->hw; in ixl_set_rss_pctypes()
1076 if (hw->mac.type == I40E_MAC_X722) in ixl_set_rss_pctypes()
1111 bcopy(vsi->hw->mac.perm_addr, e.mac_addr, ETHER_ADDR_LEN); in ixl_del_default_hw_filters()
1114 i40e_aq_remove_macvlan(vsi->hw, vsi->seid, &e, 1, NULL); in ixl_del_default_hw_filters()
1117 bcopy(vsi->hw->mac.perm_addr, e.mac_addr, ETHER_ADDR_LEN); in ixl_del_default_hw_filters()
1121 i40e_aq_remove_macvlan(vsi->hw, vsi->seid, &e, 1, NULL); in ixl_del_default_hw_filters()
1133 struct ixl_pf *pf = (struct ixl_pf *)vsi->back; in ixl_init_filters()
1138 LIST_INIT(&vsi->ftl); in ixl_init_filters()
1139 vsi->num_hw_filters = 0; in ixl_init_filters()
1142 i40e_aq_set_vsi_broadcast(&pf->hw, vsi->seid, TRUE, NULL); in ixl_init_filters()
1149 ixl_add_filter(vsi, vsi->hw->mac.addr, IXL_VLAN_ANY); in ixl_init_filters()
1153 * non-firmware transmitters. in ixl_init_filters()
1157 i40e_add_filter_to_drop_tx_flow_control_frames(vsi->hw, vsi->seid); in ixl_init_filters()
1159 if (pf->enable_tx_fc_filter) in ixl_init_filters()
1160 i40e_add_filter_to_drop_tx_flow_control_frames(vsi->hw, vsi->seid); in ixl_init_filters()
1167 struct i40e_hw *hw = vsi->hw; in ixl_reconfigure_filters()
1177 LIST_CONCAT(&tmp, &vsi->ftl, ixl_mac_filter, ftle); in ixl_reconfigure_filters()
1178 cnt = vsi->num_hw_filters; in ixl_reconfigure_filters()
1179 vsi->num_hw_filters = 0; in ixl_reconfigure_filters()
1184 * When the vsi is allocated for the VFs, both vsi->hw and vsi->ifp in ixl_reconfigure_filters()
1192 ixl_add_filter(vsi, hw->mac.addr, IXL_VLAN_ANY); in ixl_reconfigure_filters()
1194 if ((if_getcapenable(vsi->ifp) & IFCAP_VLAN_HWFILTER) == 0) in ixl_reconfigure_filters()
1200 ixl_add_vlan_filters(vsi, hw->mac.addr); in ixl_reconfigure_filters()
1217 pf = vsi->back; in ixl_add_filter()
1218 dev = pf->dev; in ixl_add_filter()
1225 f = ixl_find_filter(&vsi->ftl, macaddr, vlan); in ixl_add_filter()
1235 if (f->vlan != IXL_VLAN_ANY) in ixl_add_filter()
1236 f->flags |= IXL_FILTER_VLAN; in ixl_add_filter()
1238 vsi->num_macs++; in ixl_add_filter()
1245 if ((vlan != IXL_VLAN_ANY) && (vsi->num_vlans == 1)) { in ixl_add_filter()
1246 tmp = ixl_find_filter(&vsi->ftl, macaddr, IXL_VLAN_ANY); in ixl_add_filter()
1271 * ixl_add_vlan_filters - Add MAC/VLAN filters for all registered VLANs
1288 if (vsi->num_vlans == 0 || vsi->num_vlans > IXL_MAX_VLAN_FILTERS) { in ixl_add_vlan_filters()
1295 f = ixl_find_filter(&vsi->ftl, macaddr, 0); in ixl_add_vlan_filters()
1299 device_printf(vsi->dev, "WARNING: no filter available!!\n"); in ixl_add_vlan_filters()
1306 bit_ffs_at(vsi->vlans_map, i, IXL_VLANS_MAP_LEN, &vlan); in ixl_add_vlan_filters()
1307 if (vlan == -1) in ixl_add_vlan_filters()
1311 f = ixl_find_filter(&vsi->ftl, macaddr, vlan); in ixl_add_vlan_filters()
1317 device_printf(vsi->dev, "WARNING: no filter available!!\n"); in ixl_add_vlan_filters()
1334 ixl_dbg_filter((struct ixl_pf *)vsi->back, in ixl_del_filter()
1338 f = ixl_find_filter(&vsi->ftl, macaddr, vlan); in ixl_del_filter()
1345 if (f->vlan == IXL_VLAN_ANY && (f->flags & IXL_FILTER_VLAN) != 0) in ixl_del_filter()
1346 vsi->num_macs--; in ixl_del_filter()
1349 if (vlan == IXL_VLAN_ANY || vsi->num_vlans > 0) { in ixl_del_filter()
1354 /* It's the last vlan, we need to switch back to a non-vlan filter */ in ixl_del_filter()
1355 tmp = ixl_find_filter(&vsi->ftl, macaddr, 0); in ixl_del_filter()
1367 * ixl_del_all_vlan_filters - Delete all VLAN filters with given MAC
1385 LIST_FOREACH_SAFE(f, &vsi->ftl, ftle, tmp) { in ixl_del_all_vlan_filters()
1386 if ((f->flags & IXL_FILTER_MC) != 0 || in ixl_del_all_vlan_filters()
1387 !ixl_ether_is_equal(f->macaddr, macaddr)) in ixl_del_all_vlan_filters()
1395 ixl_dbg_filter((struct ixl_pf *)vsi->back, in ixl_del_all_vlan_filters()
1411 if (ixl_ether_is_equal(f->macaddr, macaddr) && in ixl_find_filter()
1412 (f->vlan == vlan)) { in ixl_find_filter()
1436 pf = vsi->back; in ixl_add_hw_filters()
1437 dev = vsi->dev; in ixl_add_hw_filters()
1438 hw = &pf->hw; in ixl_add_hw_filters()
1456 bcopy(f->macaddr, b->mac_addr, ETHER_ADDR_LEN); in ixl_add_hw_filters()
1457 if (f->vlan == IXL_VLAN_ANY) { in ixl_add_hw_filters()
1458 b->vlan_tag = 0; in ixl_add_hw_filters()
1459 b->flags = I40E_AQC_MACVLAN_ADD_IGNORE_VLAN; in ixl_add_hw_filters()
1461 b->vlan_tag = f->vlan; in ixl_add_hw_filters()
1462 b->flags = 0; in ixl_add_hw_filters()
1464 b->flags |= I40E_AQC_MACVLAN_ADD_PERFECT_MATCH; in ixl_add_hw_filters()
1469 b->match_method = I40E_AQC_MM_ERR_NO_RES; in ixl_add_hw_filters()
1471 MAC_FORMAT_ARGS(f->macaddr)); in ixl_add_hw_filters()
1485 status = i40e_aq_add_macvlan(hw, vsi->seid, a, j, NULL); in ixl_add_hw_filters()
1487 LIST_CONCAT(&vsi->ftl, to_add, ixl_mac_filter, ftle); in ixl_add_hw_filters()
1488 vsi->num_hw_filters += j; in ixl_add_hw_filters()
1495 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_add_hw_filters()
1506 MAC_FORMAT_ARGS(f->macaddr), in ixl_add_hw_filters()
1507 f->vlan); in ixl_add_hw_filters()
1510 LIST_INSERT_HEAD(&vsi->ftl, f, ftle); in ixl_add_hw_filters()
1511 vsi->num_hw_filters++; in ixl_add_hw_filters()
1536 pf = vsi->back; in ixl_del_hw_filters()
1537 hw = &pf->hw; in ixl_del_hw_filters()
1538 dev = vsi->dev; in ixl_del_hw_filters()
1551 bcopy(f->macaddr, e->mac_addr, ETHER_ADDR_LEN); in ixl_del_hw_filters()
1552 e->flags = I40E_AQC_MACVLAN_DEL_PERFECT_MATCH; in ixl_del_hw_filters()
1553 if (f->vlan == IXL_VLAN_ANY) { in ixl_del_hw_filters()
1554 e->vlan_tag = 0; in ixl_del_hw_filters()
1555 e->flags |= I40E_AQC_MACVLAN_DEL_IGNORE_VLAN; in ixl_del_hw_filters()
1557 e->vlan_tag = f->vlan; in ixl_del_hw_filters()
1561 MAC_FORMAT_ARGS(f->macaddr)); in ixl_del_hw_filters()
1577 status = i40e_aq_remove_macvlan(hw, vsi->seid, d, j, NULL); in ixl_del_hw_filters()
1582 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_del_hw_filters()
1593 vsi->num_hw_filters -= j; in ixl_del_hw_filters()
1604 struct i40e_hw *hw = &pf->hw; in ixl_enable_tx_ring()
1621 /* Verify the enable took */ in ixl_enable_tx_ring()
1629 device_printf(pf->dev, "TX queue %d still disabled!\n", in ixl_enable_tx_ring()
1640 struct i40e_hw *hw = &pf->hw; in ixl_enable_rx_ring()
1655 /* Verify the enable took */ in ixl_enable_rx_ring()
1663 device_printf(pf->dev, "RX queue %d still disabled!\n", in ixl_enable_rx_ring()
1690 struct i40e_hw *hw = &pf->hw; in ixl_disable_tx_ring()
1715 device_printf(pf->dev, "TX queue %d still enabled!\n", in ixl_disable_tx_ring()
1729 struct i40e_hw *hw = &pf->hw; in ixl_disable_rx_ring()
1751 device_printf(pf->dev, "RX queue %d still enabled!\n", in ixl_disable_rx_ring()
1775 struct i40e_hw *hw = &pf->hw; in ixl_handle_tx_mdd_event()
1776 device_t dev = pf->dev; in ixl_handle_tx_mdd_event()
1807 pf_mdet_num = hw->pf_id; in ixl_handle_tx_mdd_event()
1812 for (int i = 0; i < pf->num_vfs; i++) { in ixl_handle_tx_mdd_event()
1813 vf = &(pf->vfs[i]); in ixl_handle_tx_mdd_event()
1818 vf->num_mdd_events++; in ixl_handle_tx_mdd_event()
1827 " on TX queue %d, pf number %d (PF-%d), vf number %d (VF-%d)\n", in ixl_handle_tx_mdd_event()
1832 " on TX queue %d, pf number %d, vf number %d (VF-%d)\n", in ixl_handle_tx_mdd_event()
1837 " on TX queue %d, pf number %d (PF-%d)\n", in ixl_handle_tx_mdd_event()
1848 struct i40e_hw *hw = &pf->hw; in ixl_handle_rx_mdd_event()
1849 device_t dev = pf->dev; in ixl_handle_rx_mdd_event()
1881 pf_mdet_num = hw->pf_id; in ixl_handle_rx_mdd_event()
1886 for (int i = 0; i < pf->num_vfs; i++) { in ixl_handle_rx_mdd_event()
1887 vf = &(pf->vfs[i]); in ixl_handle_rx_mdd_event()
1892 vf->num_mdd_events++; in ixl_handle_rx_mdd_event()
1901 " on RX queue %d, pf number %d (PF-%d), (VF-%d)\n", in ixl_handle_rx_mdd_event()
1906 " on RX queue %d, pf number %d, (VF-%d)\n", in ixl_handle_rx_mdd_event()
1911 " on RX queue %d, pf number %d (PF-%d)\n", in ixl_handle_rx_mdd_event()
1928 struct i40e_hw *hw = &pf->hw; in ixl_handle_mdd_event()
1938 ixl_clear_state(&pf->state, IXL_STATE_MDD_PENDING); in ixl_handle_mdd_event()
1940 /* re-enable mdd interrupt cause */ in ixl_handle_mdd_event()
1992 struct ixl_vsi *vsi = &pf->vsi; in ixl_handle_empr_reset()
1993 bool is_up = !!(if_getdrvflags(vsi->ifp) & IFF_DRV_RUNNING); in ixl_handle_empr_reset()
2006 ixl_set_state(&pf->state, IXL_STATE_RECOVERY_MODE); in ixl_handle_empr_reset()
2007 device_printf(pf->dev, in ixl_handle_empr_reset()
2009 pf->link_up = FALSE; in ixl_handle_empr_reset()
2015 ixl_clear_state(&pf->state, IXL_STATE_RESETTING); in ixl_handle_empr_reset()
2021 struct i40e_hw *hw = &pf->hw; in ixl_update_stats_counters()
2022 struct ixl_vsi *vsi = &pf->vsi; in ixl_update_stats_counters()
2024 u64 prev_link_xoff_rx = pf->stats.link_xoff_rx; in ixl_update_stats_counters()
2026 struct i40e_hw_port_stats *nsd = &pf->stats; in ixl_update_stats_counters()
2027 struct i40e_hw_port_stats *osd = &pf->stats_offsets; in ixl_update_stats_counters()
2030 ixl_stat_update32(hw, I40E_GLPRT_CRCERRS(hw->port), in ixl_update_stats_counters()
2031 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2032 &osd->crc_errors, &nsd->crc_errors); in ixl_update_stats_counters()
2033 ixl_stat_update32(hw, I40E_GLPRT_ILLERRC(hw->port), in ixl_update_stats_counters()
2034 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2035 &osd->illegal_bytes, &nsd->illegal_bytes); in ixl_update_stats_counters()
2036 ixl_stat_update48(hw, I40E_GLPRT_GORCL(hw->port), in ixl_update_stats_counters()
2037 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2038 &osd->eth.rx_bytes, &nsd->eth.rx_bytes); in ixl_update_stats_counters()
2039 ixl_stat_update48(hw, I40E_GLPRT_GOTCL(hw->port), in ixl_update_stats_counters()
2040 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2041 &osd->eth.tx_bytes, &nsd->eth.tx_bytes); in ixl_update_stats_counters()
2042 ixl_stat_update32(hw, I40E_GLPRT_RDPC(hw->port), in ixl_update_stats_counters()
2043 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2044 &osd->eth.rx_discards, in ixl_update_stats_counters()
2045 &nsd->eth.rx_discards); in ixl_update_stats_counters()
2046 ixl_stat_update48(hw, I40E_GLPRT_UPRCL(hw->port), in ixl_update_stats_counters()
2047 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2048 &osd->eth.rx_unicast, in ixl_update_stats_counters()
2049 &nsd->eth.rx_unicast); in ixl_update_stats_counters()
2050 ixl_stat_update48(hw, I40E_GLPRT_UPTCL(hw->port), in ixl_update_stats_counters()
2051 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2052 &osd->eth.tx_unicast, in ixl_update_stats_counters()
2053 &nsd->eth.tx_unicast); in ixl_update_stats_counters()
2054 ixl_stat_update48(hw, I40E_GLPRT_MPRCL(hw->port), in ixl_update_stats_counters()
2055 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2056 &osd->eth.rx_multicast, in ixl_update_stats_counters()
2057 &nsd->eth.rx_multicast); in ixl_update_stats_counters()
2058 ixl_stat_update48(hw, I40E_GLPRT_MPTCL(hw->port), in ixl_update_stats_counters()
2059 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2060 &osd->eth.tx_multicast, in ixl_update_stats_counters()
2061 &nsd->eth.tx_multicast); in ixl_update_stats_counters()
2062 ixl_stat_update48(hw, I40E_GLPRT_BPRCL(hw->port), in ixl_update_stats_counters()
2063 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2064 &osd->eth.rx_broadcast, in ixl_update_stats_counters()
2065 &nsd->eth.rx_broadcast); in ixl_update_stats_counters()
2066 ixl_stat_update48(hw, I40E_GLPRT_BPTCL(hw->port), in ixl_update_stats_counters()
2067 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2068 &osd->eth.tx_broadcast, in ixl_update_stats_counters()
2069 &nsd->eth.tx_broadcast); in ixl_update_stats_counters()
2071 ixl_stat_update32(hw, I40E_GLPRT_TDOLD(hw->port), in ixl_update_stats_counters()
2072 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2073 &osd->tx_dropped_link_down, in ixl_update_stats_counters()
2074 &nsd->tx_dropped_link_down); in ixl_update_stats_counters()
2075 ixl_stat_update32(hw, I40E_GLPRT_MLFC(hw->port), in ixl_update_stats_counters()
2076 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2077 &osd->mac_local_faults, in ixl_update_stats_counters()
2078 &nsd->mac_local_faults); in ixl_update_stats_counters()
2079 ixl_stat_update32(hw, I40E_GLPRT_MRFC(hw->port), in ixl_update_stats_counters()
2080 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2081 &osd->mac_remote_faults, in ixl_update_stats_counters()
2082 &nsd->mac_remote_faults); in ixl_update_stats_counters()
2083 ixl_stat_update32(hw, I40E_GLPRT_RLEC(hw->port), in ixl_update_stats_counters()
2084 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2085 &osd->rx_length_errors, in ixl_update_stats_counters()
2086 &nsd->rx_length_errors); in ixl_update_stats_counters()
2089 ixl_stat_update32(hw, I40E_GLPRT_LXONRXC(hw->port), in ixl_update_stats_counters()
2090 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2091 &osd->link_xon_rx, &nsd->link_xon_rx); in ixl_update_stats_counters()
2092 ixl_stat_update32(hw, I40E_GLPRT_LXONTXC(hw->port), in ixl_update_stats_counters()
2093 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2094 &osd->link_xon_tx, &nsd->link_xon_tx); in ixl_update_stats_counters()
2095 ixl_stat_update32(hw, I40E_GLPRT_LXOFFRXC(hw->port), in ixl_update_stats_counters()
2096 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2097 &osd->link_xoff_rx, &nsd->link_xoff_rx); in ixl_update_stats_counters()
2098 ixl_stat_update32(hw, I40E_GLPRT_LXOFFTXC(hw->port), in ixl_update_stats_counters()
2099 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2100 &osd->link_xoff_tx, &nsd->link_xoff_tx); in ixl_update_stats_counters()
2106 if (pf->stats.link_xoff_rx != prev_link_xoff_rx) in ixl_update_stats_counters()
2107 vsi->shared->isc_pause_frames = 1; in ixl_update_stats_counters()
2110 ixl_stat_update48(hw, I40E_GLPRT_PRC64L(hw->port), in ixl_update_stats_counters()
2111 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2112 &osd->rx_size_64, &nsd->rx_size_64); in ixl_update_stats_counters()
2113 ixl_stat_update48(hw, I40E_GLPRT_PRC127L(hw->port), in ixl_update_stats_counters()
2114 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2115 &osd->rx_size_127, &nsd->rx_size_127); in ixl_update_stats_counters()
2116 ixl_stat_update48(hw, I40E_GLPRT_PRC255L(hw->port), in ixl_update_stats_counters()
2117 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2118 &osd->rx_size_255, &nsd->rx_size_255); in ixl_update_stats_counters()
2119 ixl_stat_update48(hw, I40E_GLPRT_PRC511L(hw->port), in ixl_update_stats_counters()
2120 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2121 &osd->rx_size_511, &nsd->rx_size_511); in ixl_update_stats_counters()
2122 ixl_stat_update48(hw, I40E_GLPRT_PRC1023L(hw->port), in ixl_update_stats_counters()
2123 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2124 &osd->rx_size_1023, &nsd->rx_size_1023); in ixl_update_stats_counters()
2125 ixl_stat_update48(hw, I40E_GLPRT_PRC1522L(hw->port), in ixl_update_stats_counters()
2126 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2127 &osd->rx_size_1522, &nsd->rx_size_1522); in ixl_update_stats_counters()
2128 ixl_stat_update48(hw, I40E_GLPRT_PRC9522L(hw->port), in ixl_update_stats_counters()
2129 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2130 &osd->rx_size_big, &nsd->rx_size_big); in ixl_update_stats_counters()
2133 ixl_stat_update48(hw, I40E_GLPRT_PTC64L(hw->port), in ixl_update_stats_counters()
2134 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2135 &osd->tx_size_64, &nsd->tx_size_64); in ixl_update_stats_counters()
2136 ixl_stat_update48(hw, I40E_GLPRT_PTC127L(hw->port), in ixl_update_stats_counters()
2137 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2138 &osd->tx_size_127, &nsd->tx_size_127); in ixl_update_stats_counters()
2139 ixl_stat_update48(hw, I40E_GLPRT_PTC255L(hw->port), in ixl_update_stats_counters()
2140 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2141 &osd->tx_size_255, &nsd->tx_size_255); in ixl_update_stats_counters()
2142 ixl_stat_update48(hw, I40E_GLPRT_PTC511L(hw->port), in ixl_update_stats_counters()
2143 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2144 &osd->tx_size_511, &nsd->tx_size_511); in ixl_update_stats_counters()
2145 ixl_stat_update48(hw, I40E_GLPRT_PTC1023L(hw->port), in ixl_update_stats_counters()
2146 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2147 &osd->tx_size_1023, &nsd->tx_size_1023); in ixl_update_stats_counters()
2148 ixl_stat_update48(hw, I40E_GLPRT_PTC1522L(hw->port), in ixl_update_stats_counters()
2149 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2150 &osd->tx_size_1522, &nsd->tx_size_1522); in ixl_update_stats_counters()
2151 ixl_stat_update48(hw, I40E_GLPRT_PTC9522L(hw->port), in ixl_update_stats_counters()
2152 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2153 &osd->tx_size_big, &nsd->tx_size_big); in ixl_update_stats_counters()
2155 ixl_stat_update32(hw, I40E_GLPRT_RUC(hw->port), in ixl_update_stats_counters()
2156 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2157 &osd->rx_undersize, &nsd->rx_undersize); in ixl_update_stats_counters()
2158 ixl_stat_update32(hw, I40E_GLPRT_RFC(hw->port), in ixl_update_stats_counters()
2159 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2160 &osd->rx_fragments, &nsd->rx_fragments); in ixl_update_stats_counters()
2163 ixl_stat_update32(hw, I40E_GLPRT_ROC(hw->port), in ixl_update_stats_counters()
2164 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2165 &osd->rx_oversize, &rx_roc); in ixl_update_stats_counters()
2171 * Also need to add BIT(7) to hw->port value while indexing in ixl_update_stats_counters()
2173 * SR-IOV is enabled. Indexes 128..143 are for PFs. in ixl_update_stats_counters()
2177 I40E_GL_RXERR1L(hw->pf_id + BIT(7)), in ixl_update_stats_counters()
2178 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2179 &osd->rx_err1, in ixl_update_stats_counters()
2182 nsd->rx_oversize = rx_roc + rx_err1; in ixl_update_stats_counters()
2184 ixl_stat_update32(hw, I40E_GLPRT_RJC(hw->port), in ixl_update_stats_counters()
2185 pf->stat_offsets_loaded, in ixl_update_stats_counters()
2186 &osd->rx_jabber, &nsd->rx_jabber); in ixl_update_stats_counters()
2190 i40e_lpi_stat_update(hw, pf->stat_offsets_loaded, in ixl_update_stats_counters()
2191 &osd->tx_lpi_count, &nsd->tx_lpi_count, in ixl_update_stats_counters()
2192 &osd->rx_lpi_count, &nsd->rx_lpi_count); in ixl_update_stats_counters()
2194 pf->stat_offsets_loaded = true; in ixl_update_stats_counters()
2200 for (int i = 0; i < pf->num_vfs; i++) { in ixl_update_stats_counters()
2201 vf = &pf->vfs[i]; in ixl_update_stats_counters()
2202 if (vf->vf_flags & VF_FLAG_ENABLED) in ixl_update_stats_counters()
2203 ixl_update_eth_stats(&pf->vfs[i].vsi); in ixl_update_stats_counters()
2208 * Update VSI-specific ethernet statistics counters.
2213 struct ixl_pf *pf = (struct ixl_pf *)vsi->back; in ixl_update_eth_stats()
2214 struct i40e_hw *hw = &pf->hw; in ixl_update_eth_stats()
2215 struct i40e_eth_stats *es; in ixl_update_eth_stats() local
2217 u16 stat_idx = vsi->info.stat_counter_idx; in ixl_update_eth_stats()
2219 es = &vsi->eth_stats; in ixl_update_eth_stats()
2220 oes = &vsi->eth_stats_offsets; in ixl_update_eth_stats()
2224 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2225 &oes->tx_errors, &es->tx_errors); in ixl_update_eth_stats()
2227 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2228 &oes->rx_discards, &es->rx_discards); in ixl_update_eth_stats()
2231 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2232 &oes->rx_bytes, &es->rx_bytes); in ixl_update_eth_stats()
2234 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2235 &oes->rx_unicast, &es->rx_unicast); in ixl_update_eth_stats()
2237 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2238 &oes->rx_multicast, &es->rx_multicast); in ixl_update_eth_stats()
2240 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2241 &oes->rx_broadcast, &es->rx_broadcast); in ixl_update_eth_stats()
2244 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2245 &oes->tx_bytes, &es->tx_bytes); in ixl_update_eth_stats()
2247 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2248 &oes->tx_unicast, &es->tx_unicast); in ixl_update_eth_stats()
2250 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2251 &oes->tx_multicast, &es->tx_multicast); in ixl_update_eth_stats()
2253 vsi->stat_offsets_loaded, in ixl_update_eth_stats()
2254 &oes->tx_broadcast, &es->tx_broadcast); in ixl_update_eth_stats()
2255 vsi->stat_offsets_loaded = true; in ixl_update_eth_stats()
2262 struct i40e_eth_stats *es; in ixl_update_vsi_stats() local
2267 pf = vsi->back; in ixl_update_vsi_stats()
2268 es = &vsi->eth_stats; in ixl_update_vsi_stats()
2269 nsd = &pf->stats; in ixl_update_vsi_stats()
2273 tx_discards = es->tx_discards + nsd->tx_dropped_link_down; in ixl_update_vsi_stats()
2276 for (int i = 0; i < vsi->num_rx_queues; i++) in ixl_update_vsi_stats()
2277 csum_errs += vsi->rx_queues[i].rxr.csum_errs; in ixl_update_vsi_stats()
2278 nsd->checksum_error = csum_errs; in ixl_update_vsi_stats()
2281 IXL_SET_IPACKETS(vsi, es->rx_unicast + in ixl_update_vsi_stats()
2282 es->rx_multicast + in ixl_update_vsi_stats()
2283 es->rx_broadcast); in ixl_update_vsi_stats()
2284 IXL_SET_OPACKETS(vsi, es->tx_unicast + in ixl_update_vsi_stats()
2285 es->tx_multicast + in ixl_update_vsi_stats()
2286 es->tx_broadcast); in ixl_update_vsi_stats()
2287 IXL_SET_IBYTES(vsi, es->rx_bytes); in ixl_update_vsi_stats()
2288 IXL_SET_OBYTES(vsi, es->tx_bytes); in ixl_update_vsi_stats()
2289 IXL_SET_IMCASTS(vsi, es->rx_multicast); in ixl_update_vsi_stats()
2290 IXL_SET_OMCASTS(vsi, es->tx_multicast); in ixl_update_vsi_stats()
2292 IXL_SET_IERRORS(vsi, nsd->crc_errors + nsd->illegal_bytes + in ixl_update_vsi_stats()
2293 nsd->checksum_error + nsd->rx_length_errors + in ixl_update_vsi_stats()
2294 nsd->rx_undersize + nsd->rx_fragments + nsd->rx_oversize + in ixl_update_vsi_stats()
2295 nsd->rx_jabber); in ixl_update_vsi_stats()
2296 IXL_SET_OERRORS(vsi, es->tx_errors); in ixl_update_vsi_stats()
2297 IXL_SET_IQDROPS(vsi, es->rx_discards + nsd->eth.rx_discards); in ixl_update_vsi_stats()
2299 IXL_SET_NOPROTO(vsi, es->rx_unknown_protocol); in ixl_update_vsi_stats()
2309 bzero(&pf->stats, sizeof(struct i40e_hw_port_stats)); in ixl_pf_reset_stats()
2310 bzero(&pf->stats_offsets, sizeof(struct i40e_hw_port_stats)); in ixl_pf_reset_stats()
2311 pf->stat_offsets_loaded = false; in ixl_pf_reset_stats()
2320 bzero(&vsi->eth_stats, sizeof(struct i40e_eth_stats)); in ixl_vsi_reset_stats()
2321 bzero(&vsi->eth_stats_offsets, sizeof(struct i40e_eth_stats)); in ixl_vsi_reset_stats()
2322 vsi->stat_offsets_loaded = false; in ixl_vsi_reset_stats()
2342 *stat = new_data - *offset; in _ixl_stat_update_helper()
2344 *stat = (new_data + mask) - *offset + 1; in _ixl_stat_update_helper()
2364 * ixl_stat_update64 - read and update a 64 bit stat from the chip.
2391 *stat = (u32)(new_data - *offset); in ixl_stat_update32()
2393 *stat = (u32)((new_data + ((u64)1 << 32)) - *offset); in ixl_stat_update32()
2402 device_t dev = pf->dev; in ixl_add_sysctls_recovery_mode()
2417 * in "sysctl -a" output. */ in ixl_add_sysctls_recovery_mode()
2425 &pf->hw.debug_mask, 0, "Shared code debug message level"); in ixl_add_sysctls_recovery_mode()
2429 &pf->dbg_mask, 0, "Non-shared code debug message level"); in ixl_add_sysctls_recovery_mode()
2454 pf, 0, ixl_sysctl_queue_interrupt_table, "A", "View MSI-X indices for TX/RX queues"); in ixl_add_sysctls_recovery_mode()
2460 "View MSI-X control registers for RX queues"); in ixl_add_sysctls_recovery_mode()
2466 device_t dev = pf->dev; in ixl_add_device_sysctls()
2467 struct i40e_hw *hw = &pf->hw; in ixl_add_device_sysctls()
2526 &pf->dynamic_rx_itr, 0, "Enable dynamic RX ITR"); in ixl_add_device_sysctls()
2530 &pf->dynamic_tx_itr, 0, "Enable dynamic TX ITR"); in ixl_add_device_sysctls()
2533 if (i40e_is_25G_device(hw->device_id)) { in ixl_add_device_sysctls()
2578 OID_AUTO, "enable", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, in ixl_add_device_sysctls()
2580 "Enable Energy Efficient Ethernet (EEE)"); in ixl_add_device_sysctls()
2583 CTLFLAG_RD | CTLFLAG_MPSAFE, &pf->stats.tx_lpi_status, 0, in ixl_add_device_sysctls()
2587 CTLFLAG_RD | CTLFLAG_MPSAFE, &pf->stats.rx_lpi_status, 0, in ixl_add_device_sysctls()
2591 CTLFLAG_RD | CTLFLAG_MPSAFE, &pf->stats.tx_lpi_count, in ixl_add_device_sysctls()
2595 CTLFLAG_RD | CTLFLAG_MPSAFE, &pf->stats.rx_lpi_count, in ixl_add_device_sysctls()
2605 * in "sysctl -a" output. */ in ixl_add_device_sysctls()
2613 &pf->hw.debug_mask, 0, "Shared code debug message level"); in ixl_add_device_sysctls()
2617 &pf->dbg_mask, 0, "Non-shared code debug message level"); in ixl_add_device_sysctls()
2697 pf, 0, ixl_sysctl_queue_interrupt_table, "A", "View MSI-X indices for TX/RX queues"); in ixl_add_device_sysctls()
2703 if (pf->has_i2c) { in ixl_add_device_sysctls()
2731 queues = (int)ixl_pf_qmgr_get_num_free(&pf->qmgr); in ixl_sysctl_unallocated_queues()
2790 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_current_speed()
2797 ixl_link_speed_string(hw->phy.link_info.link_speed)), in ixl_sysctl_current_speed()
2804 * Converts 8-bit speeds value to and from sysctl flags and
2836 struct i40e_hw *hw = &pf->hw; in ixl_set_advertised_speeds()
2837 device_t dev = pf->dev; in ixl_set_advertised_speeds()
2849 hw->aq.asq_last_status); in ixl_set_advertised_speeds()
2875 hw->aq.asq_last_status); in ixl_set_advertised_speeds()
2885 ** 0x1 - 100 Mb
2886 ** 0x2 - 1G
2887 ** 0x4 - 10G
2888 ** 0x8 - 20G
2889 ** 0x10 - 25G
2890 ** 0x20 - 40G
2891 ** 0x40 - 2.5G
2892 ** 0x80 - 5G
2898 int supported = ixl_convert_sysctl_aq_link_speed(pf->supported_speeds, false); in ixl_sysctl_supported_speeds()
2906 ** 0x1 - advertise 100 Mb
2907 ** 0x2 - advertise 1G
2908 ** 0x4 - advertise 10G
2909 ** 0x8 - advertise 20G
2910 ** 0x10 - advertise 25G
2911 ** 0x20 - advertise 40G
2912 ** 0x40 - advertise 2.5G
2913 ** 0x80 - advertise 5G
2921 device_t dev = pf->dev; in ixl_sysctl_set_advertise()
2927 requested_ls = pf->advertised_speed; in ixl_sysctl_set_advertise()
2929 if ((error) || (req->newptr == NULL)) in ixl_sysctl_set_advertise()
2941 ixl_convert_sysctl_aq_link_speed(pf->supported_speeds, false)); in ixl_sysctl_set_advertise()
2947 if ((converted_speeds | pf->supported_speeds) != pf->supported_speeds) { in ixl_sysctl_set_advertise()
2950 ixl_convert_sysctl_aq_link_speed(pf->supported_speeds, false)); in ixl_sysctl_set_advertise()
2958 pf->advertised_speed = requested_ls; in ixl_sysctl_set_advertise()
2997 struct i40e_hw *hw = &pf->hw; in ixl_get_bus_info()
2998 device_t dev = pf->dev; in ixl_get_bus_info()
3004 if (hw->mac.type == I40E_MAC_X722) in ixl_get_bus_info()
3016 ((hw->bus.speed == i40e_bus_speed_8000) ? "8.0GT/s": in ixl_get_bus_info()
3017 (hw->bus.speed == i40e_bus_speed_5000) ? "5.0GT/s": in ixl_get_bus_info()
3018 (hw->bus.speed == i40e_bus_speed_2500) ? "2.5GT/s":"Unknown"), in ixl_get_bus_info()
3019 (hw->bus.width == i40e_bus_width_pcie_x8) ? "Width x8" : in ixl_get_bus_info()
3020 (hw->bus.width == i40e_bus_width_pcie_x4) ? "Width x4" : in ixl_get_bus_info()
3021 (hw->bus.width == i40e_bus_width_pcie_x2) ? "Width x2" : in ixl_get_bus_info()
3022 (hw->bus.width == i40e_bus_width_pcie_x1) ? "Width x1" : in ixl_get_bus_info()
3029 if (hw->bus.speed >= i40e_bus_speed_8000 in ixl_get_bus_info()
3030 && hw->bus.width >= i40e_bus_width_pcie_x8) in ixl_get_bus_info()
3033 num_ports = bitcount32(hw->func_caps.valid_functions); in ixl_get_bus_info()
3034 max_speed = ixl_max_aq_speed_to_value(pf->supported_speeds) / 1000000; in ixl_get_bus_info()
3036 if ((num_ports * max_speed) > hw->bus.speed * hw->bus.width) { in ixl_get_bus_info()
3037 device_printf(dev, "PCI-Express bandwidth available" in ixl_get_bus_info()
3041 " PCI-e link with more lanes and/or higher" in ixl_get_bus_info()
3050 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_show_fw()
3064 u8 nvma_ptr = nvma->config & 0xFF; in ixl_print_nvm_cmd()
3065 u8 nvma_flags = (nvma->config & 0xF00) >> 8; in ixl_print_nvm_cmd()
3068 switch (nvma->command) { in ixl_print_nvm_cmd()
3071 nvma->offset == 0 && nvma->data_size == 1) { in ixl_print_nvm_cmd()
3081 device_printf(dev, "NVMUPD: unknown command: 0x%08x\n", nvma->command); in ixl_print_nvm_cmd()
3086 cmd_str, nvma_ptr, nvma_flags, nvma->offset, nvma->data_size); in ixl_print_nvm_cmd()
3092 struct i40e_hw *hw = &pf->hw; in ixl_handle_nvmupd_cmd()
3094 device_t dev = pf->dev; in ixl_handle_nvmupd_cmd()
3103 ifd_len = ifd->ifd_len; in ixl_handle_nvmupd_cmd()
3106 ifd->ifd_data == NULL) { in ixl_handle_nvmupd_cmd()
3112 ifd->ifd_data); in ixl_handle_nvmupd_cmd()
3117 err = copyin(ifd->ifd_data, nvma, ifd_len); in ixl_handle_nvmupd_cmd()
3125 if (pf->dbg_mask & IXL_DBG_NVMUPD) in ixl_handle_nvmupd_cmd()
3142 return (-EBUSY); in ixl_handle_nvmupd_cmd()
3145 if (nvma->data_size < 1 || nvma->data_size > 4096) { in ixl_handle_nvmupd_cmd()
3159 exp_len = nvma_size + nvma->data_size - 1; /* One byte is kept in struct */ in ixl_handle_nvmupd_cmd()
3164 err = copyin(ifd->ifd_data, nvma, ifd_len); in ixl_handle_nvmupd_cmd()
3175 status = i40e_nvmupd_command(hw, nvma, nvma->data, &perrno); in ixl_handle_nvmupd_cmd()
3178 err = copyout(nvma, ifd->ifd_data, ifd_len); in ixl_handle_nvmupd_cmd()
3187 if (status != 0 && (pf->dbg_mask & IXL_DBG_NVMUPD) != 0) in ixl_handle_nvmupd_cmd()
3192 * -EPERM is actually ERESTART, which the kernel interprets as it needing in ixl_handle_nvmupd_cmd()
3193 * to run this ioctl again. So use -EACCES for -EPERM instead. in ixl_handle_nvmupd_cmd()
3195 if (perrno == -EPERM) in ixl_handle_nvmupd_cmd()
3196 return (-EACCES); in ixl_handle_nvmupd_cmd()
3204 struct i40e_hw *hw = &pf->hw; in ixl_find_i2c_interface()
3213 & BIT(hw->port); in ixl_find_i2c_interface()
3218 return (-1); in ixl_find_i2c_interface()
3222 ixl_set_link(struct ixl_pf *pf, bool enable) in ixl_set_link() argument
3224 struct i40e_hw *hw = &pf->hw; in ixl_set_link()
3225 device_t dev = pf->dev; in ixl_set_link()
3238 hw->aq.asq_last_status); in ixl_set_link()
3252 hw->aq.asq_last_status); in ixl_set_link()
3271 switch (pf->fc) { in ixl_set_link()
3286 if (enable) { in ixl_set_link()
3297 hw->aq.asq_last_status); in ixl_set_link()
3301 aq_error = i40e_aq_set_link_restart_an(hw, enable, NULL); in ixl_set_link()
3306 hw->aq.asq_last_status); in ixl_set_link()
3316 "1000BASE-KX", in ixl_phy_type_string()
3317 "10GBASE-KX4", in ixl_phy_type_string()
3318 "10GBASE-KR", in ixl_phy_type_string()
3319 "40GBASE-KR4", in ixl_phy_type_string()
3325 "40GBASE-CR4", in ixl_phy_type_string()
3326 "10GBASE-CR1", in ixl_phy_type_string()
3332 "100BASE-TX", in ixl_phy_type_string()
3333 "1000BASE-T", in ixl_phy_type_string()
3334 "10GBASE-T", in ixl_phy_type_string()
3335 "10GBASE-SR", in ixl_phy_type_string()
3336 "10GBASE-LR", in ixl_phy_type_string()
3337 "10GBASE-SFP+Cu", in ixl_phy_type_string()
3338 "10GBASE-CR1", in ixl_phy_type_string()
3339 "40GBASE-CR4", in ixl_phy_type_string()
3340 "40GBASE-SR4", in ixl_phy_type_string()
3341 "40GBASE-LR4", in ixl_phy_type_string()
3342 "1000BASE-SX", in ixl_phy_type_string()
3343 "1000BASE-LX", in ixl_phy_type_string()
3344 "1000BASE-T Optical", in ixl_phy_type_string()
3345 "20GBASE-KR2", in ixl_phy_type_string()
3349 "25GBASE-KR", in ixl_phy_type_string()
3350 "25GBASE-CR", in ixl_phy_type_string()
3351 "25GBASE-SR", in ixl_phy_type_string()
3352 "25GBASE-LR", in ixl_phy_type_string()
3353 "25GBASE-AOC", in ixl_phy_type_string()
3354 "25GBASE-ACC", in ixl_phy_type_string()
3355 "2.5GBASE-T", in ixl_phy_type_string()
3356 "5GBASE-T" in ixl_phy_type_string()
3369 device_t dev = pf->dev; in ixl_aq_get_link_status()
3370 struct i40e_hw *hw = &pf->hw; in ixl_aq_get_link_status()
3378 link_status->command_flags = CPU_TO_LE16(I40E_AQ_LSE_ENABLE); in ixl_aq_get_link_status()
3384 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_aq_get_link_status()
3396 return ixl_phy_type_string(val - 0x1F, true); in ixl_phy_type_string_ls()
3405 device_t dev = pf->dev; in ixl_sysctl_link_status()
3455 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_phy_abilities()
3456 device_t dev = pf->dev; in ixl_sysctl_phy_abilities()
3474 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_phy_abilities()
3547 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_phy_statistics()
3548 device_t dev = pf->dev; in ixl_sysctl_phy_statistics()
3558 if (hw->mac.type == I40E_MAC_X722) { in ixl_sysctl_phy_statistics()
3564 "Auto-Negotiation (AN) Status: unavailable\n" in ixl_sysctl_phy_statistics()
3575 "Auto-Negotiation (AN) Status: %#010X\n" in ixl_sysctl_phy_statistics()
3602 struct ixl_vsi *vsi = &pf->vsi; in ixl_sysctl_sw_filter_list()
3604 device_t dev = pf->dev; in ixl_sysctl_sw_filter_list()
3619 LIST_FOREACH(f, &vsi->ftl, ftle) in ixl_sysctl_sw_filter_list()
3625 LIST_FOREACH(f, &vsi->ftl, ftle) { in ixl_sysctl_sw_filter_list()
3628 MAC_FORMAT_ARGS(f->macaddr), f->vlan, f->flags); in ixl_sysctl_sw_filter_list()
3638 if (pf->num_vfs > 0) { in ixl_sysctl_sw_filter_list()
3640 for (int i = 0; i < pf->num_vfs; i++) { in ixl_sysctl_sw_filter_list()
3641 vf = &pf->vfs[i]; in ixl_sysctl_sw_filter_list()
3642 if (!(vf->vf_flags & VF_FLAG_ENABLED)) in ixl_sysctl_sw_filter_list()
3645 vsi = &vf->vsi; in ixl_sysctl_sw_filter_list()
3647 sbuf_printf(buf, "VF-%d Filters:\n", vf->vf_num); in ixl_sysctl_sw_filter_list()
3648 LIST_FOREACH(f, &vsi->ftl, ftle) in ixl_sysctl_sw_filter_list()
3654 LIST_FOREACH(f, &vsi->ftl, ftle) { in ixl_sysctl_sw_filter_list()
3657 MAC_FORMAT_ARGS(f->macaddr), f->vlan, f->flags); in ixl_sysctl_sw_filter_list()
3680 return ((int)one->resource_type - (int)two->resource_type); in ixl_res_alloc_cmp()
3693 "S-tag", in ixl_switch_res_type_string()
3722 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_hw_res_alloc()
3723 device_t dev = pf->dev; in ixl_sysctl_hw_res_alloc()
3746 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_hw_res_alloc()
3759 " Type | Guaranteed | Total | Used | Un-allocated\n" in ixl_sysctl_hw_res_alloc()
3769 if (i < num_entries - 1) in ixl_sysctl_hw_res_alloc()
3796 * power-on; these include the EMP, Ports, PFs and VFs.
3812 seid - IXL_SW_SEID_MAC_START); in ixl_switch_element_string()
3817 seid - IXL_SW_SEID_PF_START); in ixl_switch_element_string()
3822 seid - IXL_SW_SEID_VF_START); in ixl_switch_element_string()
3859 return ((int)one->seid - (int)two->seid); in ixl_sw_cfg_elem_seid_cmp()
3866 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_switch_config()
3867 device_t dev = pf->dev; in ixl_sysctl_switch_config()
3891 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_switch_config()
3907 qsort(sw_config->element, sw_config->header.num_reported, in ixl_sysctl_switch_config()
3913 sbuf_printf(buf, "# of reported elements: %d\n", sw_config->header.num_reported); in ixl_sysctl_switch_config()
3914 sbuf_printf(buf, "total # of elements: %d\n", sw_config->header.num_total); in ixl_sysctl_switch_config()
3916 * Revision -- all elements are revision 1 for now in ixl_sysctl_switch_config()
3921 for (int i = 0; i < sw_config->header.num_reported; i++) { in ixl_sysctl_switch_config()
3922 elem = &sw_config->element[i]; in ixl_sysctl_switch_config()
3925 sbuf_printf(buf, "%4d", elem->seid); in ixl_sysctl_switch_config()
3928 elem->element_type, elem->seid)); in ixl_sysctl_switch_config()
3930 sbuf_printf(buf, "%4d", elem->uplink_seid); in ixl_sysctl_switch_config()
3933 0, elem->uplink_seid)); in ixl_sysctl_switch_config()
3935 sbuf_printf(buf, "%4d", elem->downlink_seid); in ixl_sysctl_switch_config()
3938 0, elem->downlink_seid)); in ixl_sysctl_switch_config()
3940 sbuf_printf(buf, "%8d", elem->connection_type); in ixl_sysctl_switch_config()
3941 if (i < sw_config->header.num_reported - 1) in ixl_sysctl_switch_config()
3959 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_switch_vlans()
3960 device_t dev = pf->dev; in ixl_sysctl_switch_vlans()
3961 int requested_vlan = -1; in ixl_sysctl_switch_vlans()
3966 if ((error) || (req->newptr == NULL)) in ixl_sysctl_switch_vlans()
3969 if ((hw->flags & I40E_HW_FLAG_802_1AD_CAPABLE) == 0) { in ixl_sysctl_switch_vlans()
3974 hw->switch_tag = requested_vlan; in ixl_sysctl_switch_vlans()
3977 hw->switch_tag, hw->first_tag, hw->second_tag); in ixl_sysctl_switch_vlans()
3983 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_switch_vlans()
3993 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_hkey()
3994 device_t dev = pf->dev; in ixl_sysctl_hkey()
4011 if (hw->mac.type == I40E_MAC_X722) { in ixl_sysctl_hkey()
4012 status = i40e_aq_get_rss_key(hw, pf->vsi.vsi_num, &key_data); in ixl_sysctl_hkey()
4015 i40e_stat_str(hw, status), i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_hkey()
4048 width = (rem > 0 && i == lines - 1) in ixl_sbuf_print_bytes()
4057 for (k = 0; k < (byte_stride - width); k++) in ixl_sbuf_print_bytes()
4073 if (j == width - 1) in ixl_sbuf_print_bytes()
4083 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_hlut()
4084 device_t dev = pf->dev; in ixl_sysctl_hlut()
4099 if (hw->mac.type == I40E_MAC_X722) { in ixl_sysctl_hlut()
4100 status = i40e_aq_get_rss_lut(hw, pf->vsi.vsi_num, TRUE, hlut, sizeof(hlut)); in ixl_sysctl_hlut()
4103 i40e_stat_str(hw, status), i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_hlut()
4105 for (int i = 0; i < hw->func_caps.rss_table_size >> 2; i++) { in ixl_sysctl_hlut()
4124 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_hena()
4136 * 1 - Disable link management on this port
4137 * 0 - Re-enable link management
4145 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_fw_link_management()
4146 device_t dev = pf->dev; in ixl_sysctl_fw_link_management()
4147 int requested_mode = -1; in ixl_sysctl_fw_link_management()
4153 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fw_link_management()
4167 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_fw_link_management()
4178 * Temperature 96-97 22-23
4179 * Vcc 98-99 26-27
4180 * TX power 102-103 34-35..40-41
4181 * RX power 104-105 50-51..56-57
4187 device_t dev = pf->dev; in ixl_sysctl_read_i2c_diag_data()
4192 if (req->oldptr == NULL) { in ixl_sysctl_read_i2c_diag_data()
4197 error = pf->read_i2c_byte(pf, 0, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4207 * - Internally calibrated data in ixl_sysctl_read_i2c_diag_data()
4208 * - Diagnostic monitoring is implemented in ixl_sysctl_read_i2c_diag_data()
4210 pf->read_i2c_byte(pf, 92, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4219 pf->read_i2c_byte(pf, offset, 0xA2, &output); in ixl_sysctl_read_i2c_diag_data()
4223 pf->read_i2c_byte(pf, offset, 0xA2, &output); in ixl_sysctl_read_i2c_diag_data()
4234 pf->read_i2c_byte(pf, offset, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4238 pf->read_i2c_byte(pf, offset, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4243 pf->read_i2c_byte(pf, offset, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4247 pf->read_i2c_byte(pf, offset, 0xA0, &output); in ixl_sysctl_read_i2c_diag_data()
4264 * Input: 32-bit value:
4265 * bits 0-7: device address (0xA0 or 0xA2)
4266 * bits 8-15: offset (0-255)
4267 * bits 16-31: unused
4268 * Output: 8-bit value read
4274 device_t dev = pf->dev; in ixl_sysctl_read_i2c_byte()
4275 int input = -1, error = 0; in ixl_sysctl_read_i2c_byte()
4280 if ((error) || (req->newptr == NULL)) in ixl_sysctl_read_i2c_byte()
4289 error = pf->read_i2c_byte(pf, offset, dev_addr, &output); in ixl_sysctl_read_i2c_byte()
4300 * Input: 32-bit value:
4301 * bits 0-7: device address (0xA0 or 0xA2)
4302 * bits 8-15: offset (0-255)
4303 * bits 16-23: value to write
4304 * bits 24-31: unused
4305 * Output: 8-bit value written
4311 device_t dev = pf->dev; in ixl_sysctl_write_i2c_byte()
4312 int input = -1, error = 0; in ixl_sysctl_write_i2c_byte()
4317 if ((error) || (req->newptr == NULL)) in ixl_sysctl_write_i2c_byte()
4327 error = pf->write_i2c_byte(pf, offset, dev_addr, value); in ixl_sysctl_write_i2c_byte()
4339 device_t dev = pf->dev; in ixl_get_fec_config()
4340 struct i40e_hw *hw = &pf->hw; in ixl_get_fec_config()
4352 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_get_fec_config()
4356 *is_set = !!(abilities->fec_cfg_curr_mod_ext_info & bit_pos); in ixl_get_fec_config()
4364 device_t dev = pf->dev; in ixl_set_fec_config()
4365 struct i40e_hw *hw = &pf->hw; in ixl_set_fec_config()
4371 config.fec_config = abilities->fec_cfg_curr_mod_ext_info & ~(bit_pos); in ixl_set_fec_config()
4374 if (config.fec_config != abilities->fec_cfg_curr_mod_ext_info) { in ixl_set_fec_config()
4376 config.phy_type = abilities->phy_type; in ixl_set_fec_config()
4377 config.phy_type_ext = abilities->phy_type_ext; in ixl_set_fec_config()
4378 config.link_speed = abilities->link_speed; in ixl_set_fec_config()
4379 config.eee_capability = abilities->eee_capability; in ixl_set_fec_config()
4380 config.eeer = abilities->eeer_val; in ixl_set_fec_config()
4381 config.low_power_ctrl = abilities->d3_lpan; in ixl_set_fec_config()
4388 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_set_fec_config()
4408 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_fc_ability()
4426 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_rs_ability()
4444 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_fc_request()
4462 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_rs_request()
4480 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fec_auto_enable()
4490 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_dump_debug_data()
4491 device_t dev = pf->dev; in ixl_sysctl_dump_debug_data()
4531 i40e_stat_str(hw, status), i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_sysctl_dump_debug_data()
4580 struct i40e_hw *hw = &pf->hw; in ixl_start_fw_lldp()
4585 switch (hw->aq.asq_last_status) { in ixl_start_fw_lldp()
4587 device_printf(pf->dev, in ixl_start_fw_lldp()
4591 device_printf(pf->dev, in ixl_start_fw_lldp()
4597 device_printf(pf->dev, in ixl_start_fw_lldp()
4600 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_start_fw_lldp()
4605 ixl_clear_state(&pf->state, IXL_STATE_FW_LLDP_DISABLED); in ixl_start_fw_lldp()
4612 struct i40e_hw *hw = &pf->hw; in ixl_stop_fw_lldp()
4613 device_t dev = pf->dev; in ixl_stop_fw_lldp()
4616 if (hw->func_caps.npar_enable != 0) { in ixl_stop_fw_lldp()
4622 if ((hw->flags & I40E_HW_FLAG_FW_LLDP_STOPPABLE) == 0) { in ixl_stop_fw_lldp()
4624 …"Disabling FW LLDP agent is not supported in this FW version. Please update FW to enable this feat… in ixl_stop_fw_lldp()
4630 if (hw->aq.asq_last_status != I40E_AQ_RC_EPERM) { in ixl_stop_fw_lldp()
4634 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_stop_fw_lldp()
4642 ixl_set_state(&pf->state, IXL_STATE_FW_LLDP_DISABLED); in ixl_stop_fw_lldp()
4652 state = new_state = !ixl_test_state(&pf->state, IXL_STATE_FW_LLDP_DISABLED); in ixl_sysctl_fw_lldp()
4656 if ((error) || (req->newptr == NULL)) in ixl_sysctl_fw_lldp()
4678 state = new_state = ixl_test_state(&pf->state, IXL_STATE_EEE_ENABLED); in ixl_sysctl_eee_enable()
4682 if ((sysctl_handle_status) || (req->newptr == NULL)) in ixl_sysctl_eee_enable()
4690 cmd_status = i40e_enable_eee(&pf->hw, (bool)(!!new_state)); in ixl_sysctl_eee_enable()
4695 ixl_clear_state(&pf->state, IXL_STATE_EEE_ENABLED); in ixl_sysctl_eee_enable()
4697 ixl_set_state(&pf->state, IXL_STATE_EEE_ENABLED); in ixl_sysctl_eee_enable()
4712 state = ixl_test_state(&pf->state, IXL_STATE_LINK_ACTIVE_ON_DOWN); in ixl_sysctl_set_link_active()
4715 if ((error) || (req->newptr == NULL)) in ixl_sysctl_set_link_active()
4719 ixl_clear_state(&pf->state, IXL_STATE_LINK_ACTIVE_ON_DOWN); in ixl_sysctl_set_link_active()
4721 ixl_set_state(&pf->state, IXL_STATE_LINK_ACTIVE_ON_DOWN); in ixl_sysctl_set_link_active()
4730 struct i40e_hw *hw = &pf->hw; in ixl_attach_get_link_status()
4731 device_t dev = pf->dev; in ixl_attach_get_link_status()
4734 if (((hw->aq.fw_maj_ver == 4) && (hw->aq.fw_min_ver < 33)) || in ixl_attach_get_link_status()
4735 (hw->aq.fw_maj_ver < 4)) { in ixl_attach_get_link_status()
4742 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_attach_get_link_status()
4748 hw->phy.get_link_info = TRUE; in ixl_attach_get_link_status()
4749 status = i40e_get_link_status(hw, &pf->link_up); in ixl_attach_get_link_status()
4754 i40e_aq_str(hw, hw->aq.asq_last_status)); in ixl_attach_get_link_status()
4759 ixl_set_state(&pf->state, IXL_STATE_LINK_POLLING); in ixl_attach_get_link_status()
4760 pf->link_poll_start = getsbinuptime(); in ixl_attach_get_link_status()
4763 ixl_dbg_link(pf, "%s link_up: %d\n", __func__, pf->link_up); in ixl_attach_get_link_status()
4766 if (pf->fc == -1) in ixl_attach_get_link_status()
4767 pf->fc = hw->fc.current_mode; in ixl_attach_get_link_status()
4780 if ((error) || (req->newptr == NULL)) in ixl_sysctl_do_pf_reset()
4784 ixl_set_state(&pf->state, IXL_STATE_PF_RESET_REQ); in ixl_sysctl_do_pf_reset()
4793 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_do_core_reset()
4798 if ((error) || (req->newptr == NULL)) in ixl_sysctl_do_core_reset()
4810 struct i40e_hw *hw = &pf->hw; in ixl_sysctl_do_global_reset()
4815 if ((error) || (req->newptr == NULL)) in ixl_sysctl_do_global_reset()
4825 * to MSI-X vectors.
4831 struct ixl_vsi *vsi = &pf->vsi; in ixl_sysctl_queue_interrupt_table()
4832 struct i40e_hw *hw = vsi->hw; in ixl_sysctl_queue_interrupt_table()
4833 device_t dev = pf->dev; in ixl_sysctl_queue_interrupt_table()
4837 struct ixl_rx_queue *rx_que = vsi->rx_queues; in ixl_sysctl_queue_interrupt_table()
4838 struct ixl_tx_queue *tx_que = vsi->tx_queues; in ixl_sysctl_queue_interrupt_table()
4847 for (int i = 0; i < vsi->num_rx_queues; i++) { in ixl_sysctl_queue_interrupt_table()
4848 rx_que = &vsi->rx_queues[i]; in ixl_sysctl_queue_interrupt_table()
4851 i, rx_que->msix, in ixl_sysctl_queue_interrupt_table()
4852 rd32(hw, I40E_PFINT_LNKLSTN(rx_que->msix - 1)), in ixl_sysctl_queue_interrupt_table()
4853 rd32(hw, I40E_QINT_RQCTL(rx_que->msix - 1))); in ixl_sysctl_queue_interrupt_table()
4855 for (int i = 0; i < vsi->num_tx_queues; i++) { in ixl_sysctl_queue_interrupt_table()
4856 tx_que = &vsi->tx_queues[i]; in ixl_sysctl_queue_interrupt_table()
4858 i, tx_que->msix, in ixl_sysctl_queue_interrupt_table()
4859 rd32(hw, I40E_QINT_TQCTL(tx_que->msix - 1))); in ixl_sysctl_queue_interrupt_table()
4874 struct ixl_vsi *vsi = &pf->vsi; in ixl_sysctl_debug_queue_int_ctln()
4875 struct i40e_hw *hw = vsi->hw; in ixl_sysctl_debug_queue_int_ctln()
4876 device_t dev = pf->dev; in ixl_sysctl_debug_queue_int_ctln()
4880 struct ixl_rx_queue *rx_que = vsi->rx_queues; in ixl_sysctl_debug_queue_int_ctln()
4889 for (int i = 0; i < vsi->num_rx_queues; i++) { in ixl_sysctl_debug_queue_int_ctln()
4890 rx_que = &vsi->rx_queues[i]; in ixl_sysctl_debug_queue_int_ctln()
4893 i, rx_que->msix, in ixl_sysctl_debug_queue_int_ctln()
4894 rd32(hw, I40E_PFINT_DYN_CTLN(rx_que->msix - 1))); in ixl_sysctl_debug_queue_int_ctln()