Lines Matching +full:ocp +full:- +full:retry +full:- +full:delay
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright(c) 2013 - 2021 Intel Corporation. */
6 #include <linux/delay.h>
15 * i40e_set_mac_type - Sets MAC type
25 if (hw->vendor_id == PCI_VENDOR_ID_INTEL) { in i40e_set_mac_type()
26 switch (hw->device_id) { in i40e_set_mac_type()
47 hw->mac.type = I40E_MAC_XL710; in i40e_set_mac_type()
56 hw->mac.type = I40E_MAC_X722; in i40e_set_mac_type()
59 hw->mac.type = I40E_MAC_GENERIC; in i40e_set_mac_type()
63 status = -ENODEV; in i40e_set_mac_type()
67 hw->mac.type, status); in i40e_set_mac_type()
72 * i40e_aq_str - convert AQ err code to a string
127 snprintf(hw->err_str, sizeof(hw->err_str), "%d", aq_err); in i40e_aq_str()
128 return hw->err_str; in i40e_aq_str()
145 u32 effective_mask = hw->debug_mask & mask; in i40e_debug_aq()
153 len = le16_to_cpu(aq_desc->datalen); in i40e_debug_aq()
157 le16_to_cpu(aq_desc->opcode), in i40e_debug_aq()
158 le16_to_cpu(aq_desc->flags), in i40e_debug_aq()
159 le16_to_cpu(aq_desc->datalen), in i40e_debug_aq()
160 le16_to_cpu(aq_desc->retval)); in i40e_debug_aq()
163 le32_to_cpu(aq_desc->cookie_high), in i40e_debug_aq()
164 le32_to_cpu(aq_desc->cookie_low)); in i40e_debug_aq()
167 le32_to_cpu(aq_desc->params.internal.param0), in i40e_debug_aq()
168 le32_to_cpu(aq_desc->params.internal.param1)); in i40e_debug_aq()
171 le32_to_cpu(aq_desc->params.external.addr_high), in i40e_debug_aq()
172 le32_to_cpu(aq_desc->params.external.addr_low)); in i40e_debug_aq()
182 hw->bus.bus_id, in i40e_debug_aq()
183 hw->bus.device, in i40e_debug_aq()
184 hw->bus.func); in i40e_debug_aq()
200 if (!hw->aq.asq.count) in i40e_check_asq_alive()
226 cmd->driver_unloading = cpu_to_le32(I40E_AQ_DRIVER_UNLOADING); in i40e_aq_queue_shutdown()
267 cmd_resp->vsi_id = cpu_to_le16(vsi_id); in i40e_aq_get_set_rss_lut()
276 cmd_resp->flags = cpu_to_le16(flags); in i40e_aq_get_set_rss_lut()
348 cmd_resp->vsi_id = cpu_to_le16(vsi_id); in i40e_aq_get_set_rss_key()
385 * i40e_init_shared_code - Initialize the shared code
403 switch (hw->mac.type) { in i40e_init_shared_code()
408 return -ENODEV; in i40e_init_shared_code()
411 hw->phy.get_link_info = true; in i40e_init_shared_code()
416 hw->port = (u8)port; in i40e_init_shared_code()
421 hw->pf_id = (u8)(func_rid & 0xff); in i40e_init_shared_code()
423 hw->pf_id = (u8)(func_rid & 0x7); in i40e_init_shared_code()
430 * i40e_aq_mac_address_read - Retrieve the MAC addresses
452 *flags = le16_to_cpu(cmd_data->command_flags); in i40e_aq_mac_address_read()
458 * i40e_aq_mac_address_write - Change the MAC addresses
475 cmd_data->command_flags = cpu_to_le16(flags); in i40e_aq_mac_address_write()
476 cmd_data->mac_sah = cpu_to_le16((u16)mac_addr[0] << 8 | mac_addr[1]); in i40e_aq_mac_address_write()
477 cmd_data->mac_sal = cpu_to_le32(((u32)mac_addr[2] << 24) | in i40e_aq_mac_address_write()
488 * i40e_get_mac_addr - get MAC address
509 * i40e_get_port_mac_addr - get Port MAC address
528 status = -EINVAL; in i40e_get_port_mac_addr()
534 * i40e_pre_tx_queue_cfg - pre tx queue configure
544 u32 abs_queue_idx = hw->func_caps.base_queue + queue; in i40e_pre_tx_queue_cfg()
566 * i40e_get_pba_string - Reads part number string from EEPROM
571 * to i40e_hw->pba_id field.
608 pba_size--; in i40e_get_pba_string()
618 hw->pba_id = ptr; in i40e_get_pba_string()
624 devm_kfree(i40e_hw_to_dev(hw), hw->pba_id); in i40e_get_pba_string()
625 hw->pba_id = NULL; in i40e_get_pba_string()
635 * i40e_get_media_type - Gets media type
642 switch (hw->phy.link_info.phy_type) { in i40e_get_media_type()
694 * i40e_poll_globr - Poll for Global Reset completion
696 * @retry_limit: how many times to retry before failure
713 return -EIO; in i40e_poll_globr()
719 * i40e_pf_reset - Reset the PF
733 * The grst delay value is in 100ms units, and we'll wait a in i40e_pf_reset()
752 return -EIO; in i40e_pf_reset()
771 return -EIO; in i40e_pf_reset()
779 if (hw->revision_id == 0) in i40e_pf_reset()
786 for (; cnt; cnt--) { in i40e_pf_reset()
797 return -EIO; in i40e_pf_reset()
800 return -EIO; in i40e_pf_reset()
810 * i40e_clear_hw - clear out any left over hw state
836 num_queues = (j - base_queue) + 1; in i40e_clear_hw()
844 num_vfs = (j - i) + 1; in i40e_clear_hw()
851 for (i = 0; i < num_pf_int - 2; i++) in i40e_clear_hw()
857 for (i = 0; i < num_pf_int - 2; i++) in i40e_clear_hw()
862 for (i = 0; i < num_vf_int - 2; i++) in i40e_clear_hw()
897 * i40e_clear_pxe_mode - clear pxe operations mode
901 * like descriptor fetch/write-back mode.
910 /* Clear single descriptor fetch/write-back mode */ in i40e_clear_pxe_mode()
913 if (hw->revision_id == 0) { in i40e_clear_pxe_mode()
922 * i40e_led_is_mine - helper to find matching led
933 if (!I40E_IS_X710TL_DEVICE(hw->device_id) && in i40e_led_is_mine()
934 !hw->func_caps.led[idx]) in i40e_led_is_mine()
943 (port != hw->port)) in i40e_led_is_mine()
959 * i40e_led_get - return current on/off mode
972 /* as per the documentation GPIO 22-29 are the LED in i40e_led_get()
989 * i40e_led_set - set new on/off mode
1006 /* as per the documentation GPIO 22-29 are the LED in i40e_led_set()
1015 if (I40E_IS_X710TL_DEVICE(hw->device_id)) { in i40e_led_set()
1067 return -EINVAL; in i40e_aq_get_phy_capabilities()
1088 switch (hw->aq.asq_last_status) { in i40e_aq_get_phy_capabilities()
1090 status = -EIO; in i40e_aq_get_phy_capabilities()
1095 status = -EIO; in i40e_aq_get_phy_capabilities()
1102 } while ((hw->aq.asq_last_status == I40E_AQ_RC_EAGAIN) && in i40e_aq_get_phy_capabilities()
1109 if (hw->mac.type == I40E_MAC_XL710 && in i40e_aq_get_phy_capabilities()
1114 hw->phy.phy_types = le32_to_cpu(abilities->phy_type); in i40e_aq_get_phy_capabilities()
1115 hw->phy.phy_types |= in i40e_aq_get_phy_capabilities()
1116 ((u64)abilities->phy_type_ext << 32); in i40e_aq_get_phy_capabilities()
1145 return -EINVAL; in i40e_aq_set_phy_config()
1163 enum i40e_fc_mode fc_mode = hw->fc.requested_mode; in i40e_set_fc_status()
1183 config.abilities = abilities->abilities & ~(I40E_AQ_PHY_FLAG_PAUSE_TX) & in i40e_set_fc_status()
1188 if (config.abilities == abilities->abilities) in i40e_set_fc_status()
1195 config.phy_type = abilities->phy_type; in i40e_set_fc_status()
1196 config.phy_type_ext = abilities->phy_type_ext; in i40e_set_fc_status()
1197 config.link_speed = abilities->link_speed; in i40e_set_fc_status()
1198 config.eee_capability = abilities->eee_capability; in i40e_set_fc_status()
1199 config.eeer = abilities->eeer_val; in i40e_set_fc_status()
1200 config.low_power_ctrl = abilities->d3_lpan; in i40e_set_fc_status()
1201 config.fec_config = abilities->fec_cfg_curr_mod_ext_info & in i40e_set_fc_status()
1269 cmd->rx_cnt = 0x2; in i40e_aq_clear_pxe_mode()
1284 * Sets up the link and restarts the Auto-Negotiation over the link.
1298 cmd->command = I40E_AQ_PHY_RESTART_AN; in i40e_aq_set_link_restart_an()
1300 cmd->command |= I40E_AQ_PHY_LINK_ENABLE; in i40e_aq_set_link_restart_an()
1302 cmd->command &= ~I40E_AQ_PHY_LINK_ENABLE; in i40e_aq_set_link_restart_an()
1313 * @link: pointer to link status structure - optional
1325 struct i40e_link_status *hw_link_info = &hw->phy.link_info; in i40e_aq_get_link_info()
1336 resp->command_flags = cpu_to_le16(command_flags); in i40e_aq_get_link_info()
1344 hw->phy.link_info_old = *hw_link_info; in i40e_aq_get_link_info()
1347 hw_link_info->phy_type = (enum i40e_aq_phy_type)resp->phy_type; in i40e_aq_get_link_info()
1348 hw->phy.media_type = i40e_get_media_type(hw); in i40e_aq_get_link_info()
1349 hw_link_info->link_speed = (enum i40e_aq_link_speed)resp->link_speed; in i40e_aq_get_link_info()
1350 hw_link_info->link_info = resp->link_info; in i40e_aq_get_link_info()
1351 hw_link_info->an_info = resp->an_info; in i40e_aq_get_link_info()
1352 hw_link_info->fec_info = resp->config & (I40E_AQ_CONFIG_FEC_KR_ENA | in i40e_aq_get_link_info()
1354 hw_link_info->ext_info = resp->ext_info; in i40e_aq_get_link_info()
1355 hw_link_info->loopback = resp->loopback & I40E_AQ_LOOPBACK_MASK; in i40e_aq_get_link_info()
1356 hw_link_info->max_frame_size = le16_to_cpu(resp->max_frame_size); in i40e_aq_get_link_info()
1357 hw_link_info->pacing = resp->config & I40E_AQ_CONFIG_PACING_MASK; in i40e_aq_get_link_info()
1360 tx_pause = !!(resp->an_info & I40E_AQ_LINK_PAUSE_TX); in i40e_aq_get_link_info()
1361 rx_pause = !!(resp->an_info & I40E_AQ_LINK_PAUSE_RX); in i40e_aq_get_link_info()
1363 hw->fc.current_mode = I40E_FC_FULL; in i40e_aq_get_link_info()
1365 hw->fc.current_mode = I40E_FC_TX_PAUSE; in i40e_aq_get_link_info()
1367 hw->fc.current_mode = I40E_FC_RX_PAUSE; in i40e_aq_get_link_info()
1369 hw->fc.current_mode = I40E_FC_NONE; in i40e_aq_get_link_info()
1371 if (resp->config & I40E_AQ_CONFIG_CRC_ENA) in i40e_aq_get_link_info()
1372 hw_link_info->crc_enable = true; in i40e_aq_get_link_info()
1374 hw_link_info->crc_enable = false; in i40e_aq_get_link_info()
1376 if (resp->command_flags & cpu_to_le16(I40E_AQ_LSE_IS_ENABLED)) in i40e_aq_get_link_info()
1377 hw_link_info->lse_enable = true; in i40e_aq_get_link_info()
1379 hw_link_info->lse_enable = false; in i40e_aq_get_link_info()
1381 if (hw->mac.type == I40E_MAC_XL710 && i40e_is_fw_ver_lt(hw, 4, 40) && in i40e_aq_get_link_info()
1382 hw_link_info->phy_type == 0xE) in i40e_aq_get_link_info()
1383 hw_link_info->phy_type = I40E_PHY_TYPE_10GBASE_SFPP_CU; in i40e_aq_get_link_info()
1385 if (test_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps) && in i40e_aq_get_link_info()
1386 hw->mac.type != I40E_MAC_X722) { in i40e_aq_get_link_info()
1389 memcpy(&tmp, resp->link_type, sizeof(tmp)); in i40e_aq_get_link_info()
1390 hw->phy.phy_types = le32_to_cpu(tmp); in i40e_aq_get_link_info()
1391 hw->phy.phy_types |= ((u64)resp->link_type_ext << 32); in i40e_aq_get_link_info()
1399 hw->phy.get_link_info = false; in i40e_aq_get_link_info()
1425 cmd->event_mask = cpu_to_le16(mask); in i40e_aq_set_phy_int_mask()
1449 if (hw->nvm.version <= I40E_LEGACY_LOOPBACK_NVM_VER) in i40e_aq_set_mac_loopback()
1450 cmd->lb_mode = cpu_to_le16(I40E_AQ_LB_MAC_LOCAL_LEGACY); in i40e_aq_set_mac_loopback()
1452 cmd->lb_mode = cpu_to_le16(I40E_AQ_LB_MAC_LOCAL); in i40e_aq_set_mac_loopback()
1477 cmd->command_flags = cmd_flags; in i40e_aq_set_phy_debug()
1507 cmd->uplink_seid = cpu_to_le16(vsi_ctx->uplink_seid); in i40e_aq_add_vsi()
1508 cmd->connection_type = vsi_ctx->connection_type; in i40e_aq_add_vsi()
1509 cmd->vf_id = vsi_ctx->vf_num; in i40e_aq_add_vsi()
1510 cmd->vsi_flags = cpu_to_le16(vsi_ctx->flags); in i40e_aq_add_vsi()
1514 status = i40e_asq_send_command_atomic(hw, &desc, &vsi_ctx->info, in i40e_aq_add_vsi()
1515 sizeof(vsi_ctx->info), in i40e_aq_add_vsi()
1521 vsi_ctx->seid = le16_to_cpu(resp->seid); in i40e_aq_add_vsi()
1522 vsi_ctx->vsi_number = le16_to_cpu(resp->vsi_number); in i40e_aq_add_vsi()
1523 vsi_ctx->vsis_allocated = le16_to_cpu(resp->vsi_used); in i40e_aq_add_vsi()
1524 vsi_ctx->vsis_unallocated = le16_to_cpu(resp->vsi_free); in i40e_aq_add_vsi()
1549 cmd->promiscuous_flags = cpu_to_le16(I40E_AQC_SET_VSI_DEFAULT); in i40e_aq_set_default_vsi()
1550 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_DEFAULT); in i40e_aq_set_default_vsi()
1551 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_default_vsi()
1577 cmd->promiscuous_flags = cpu_to_le16(0); in i40e_aq_clear_default_vsi()
1578 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_DEFAULT); in i40e_aq_clear_default_vsi()
1579 cmd->seid = cpu_to_le16(seid); in i40e_aq_clear_default_vsi()
1614 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_unicast_promiscuous()
1616 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST); in i40e_aq_set_vsi_unicast_promiscuous()
1618 cmd->valid_flags |= in i40e_aq_set_vsi_unicast_promiscuous()
1621 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_unicast_promiscuous()
1650 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_multicast_promiscuous()
1652 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_MULTICAST); in i40e_aq_set_vsi_multicast_promiscuous()
1654 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_multicast_promiscuous()
1665 * @vid: The VLAN tag filter - capture any multicast packet with this VLAN tag
1685 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_mc_promisc_on_vlan()
1686 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_MULTICAST); in i40e_aq_set_vsi_mc_promisc_on_vlan()
1687 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_mc_promisc_on_vlan()
1688 cmd->vlan_tag = cpu_to_le16(vid | I40E_AQC_SET_VSI_VLAN_VALID); in i40e_aq_set_vsi_mc_promisc_on_vlan()
1701 * @vid: The VLAN tag filter - capture any unicast packet with this VLAN tag
1724 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_uc_promisc_on_vlan()
1725 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST); in i40e_aq_set_vsi_uc_promisc_on_vlan()
1727 cmd->valid_flags |= in i40e_aq_set_vsi_uc_promisc_on_vlan()
1729 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_uc_promisc_on_vlan()
1730 cmd->vlan_tag = cpu_to_le16(vid | I40E_AQC_SET_VSI_VLAN_VALID); in i40e_aq_set_vsi_uc_promisc_on_vlan()
1743 * @vid: The VLAN tag filter - capture any broadcast packet with this VLAN tag
1762 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_bc_promisc_on_vlan()
1763 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_BROADCAST); in i40e_aq_set_vsi_bc_promisc_on_vlan()
1764 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_bc_promisc_on_vlan()
1765 cmd->vlan_tag = cpu_to_le16(vid | I40E_AQC_SET_VSI_VLAN_VALID); in i40e_aq_set_vsi_bc_promisc_on_vlan()
1794 cmd->promiscuous_flags in i40e_aq_set_vsi_broadcast()
1797 cmd->promiscuous_flags in i40e_aq_set_vsi_broadcast()
1800 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_BROADCAST); in i40e_aq_set_vsi_broadcast()
1801 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_broadcast()
1808 * i40e_aq_get_vsi_params - get VSI configuration info
1828 cmd->uplink_seid = cpu_to_le16(vsi_ctx->seid); in i40e_aq_get_vsi_params()
1832 status = i40e_asq_send_command(hw, &desc, &vsi_ctx->info, in i40e_aq_get_vsi_params()
1833 sizeof(vsi_ctx->info), NULL); in i40e_aq_get_vsi_params()
1838 vsi_ctx->seid = le16_to_cpu(resp->seid); in i40e_aq_get_vsi_params()
1839 vsi_ctx->vsi_number = le16_to_cpu(resp->vsi_number); in i40e_aq_get_vsi_params()
1840 vsi_ctx->vsis_allocated = le16_to_cpu(resp->vsi_used); in i40e_aq_get_vsi_params()
1841 vsi_ctx->vsis_unallocated = le16_to_cpu(resp->vsi_free); in i40e_aq_get_vsi_params()
1869 cmd->uplink_seid = cpu_to_le16(vsi_ctx->seid); in i40e_aq_update_vsi_params()
1873 status = i40e_asq_send_command_atomic(hw, &desc, &vsi_ctx->info, in i40e_aq_update_vsi_params()
1874 sizeof(vsi_ctx->info), in i40e_aq_update_vsi_params()
1877 vsi_ctx->vsis_allocated = le16_to_cpu(resp->vsi_used); in i40e_aq_update_vsi_params()
1878 vsi_ctx->vsis_unallocated = le16_to_cpu(resp->vsi_free); in i40e_aq_update_vsi_params()
1908 scfg->seid = cpu_to_le16(*start_seid); in i40e_aq_get_switch_config()
1911 *start_seid = le16_to_cpu(scfg->seid); in i40e_aq_get_switch_config()
1939 scfg->flags = cpu_to_le16(flags); in i40e_aq_set_switch_config()
1940 scfg->valid_flags = cpu_to_le16(valid_flags); in i40e_aq_set_switch_config()
1941 scfg->mode = mode; in i40e_aq_set_switch_config()
1942 if (test_bit(I40E_HW_CAP_802_1AD, hw->caps)) { in i40e_aq_set_switch_config()
1943 scfg->switch_tag = cpu_to_le16(hw->switch_tag); in i40e_aq_set_switch_config()
1944 scfg->first_tag = cpu_to_le16(hw->first_tag); in i40e_aq_set_switch_config()
1945 scfg->second_tag = cpu_to_le16(hw->second_tag); in i40e_aq_set_switch_config()
1981 *fw_major_version = le16_to_cpu(resp->fw_major); in i40e_aq_get_firmware_version()
1983 *fw_minor_version = le16_to_cpu(resp->fw_minor); in i40e_aq_get_firmware_version()
1985 *fw_build = le32_to_cpu(resp->fw_build); in i40e_aq_get_firmware_version()
1987 *api_major_version = le16_to_cpu(resp->api_major); in i40e_aq_get_firmware_version()
1989 *api_minor_version = le16_to_cpu(resp->api_minor); in i40e_aq_get_firmware_version()
2014 return -EINVAL; in i40e_aq_send_driver_version()
2019 cmd->driver_major_ver = dv->major_version; in i40e_aq_send_driver_version()
2020 cmd->driver_minor_ver = dv->minor_version; in i40e_aq_send_driver_version()
2021 cmd->driver_build_ver = dv->build_version; in i40e_aq_send_driver_version()
2022 cmd->driver_subbuild_ver = dv->subbuild_version; in i40e_aq_send_driver_version()
2025 while (len < sizeof(dv->driver_string) && in i40e_aq_send_driver_version()
2026 (dv->driver_string[len] < 0x80) && in i40e_aq_send_driver_version()
2027 dv->driver_string[len]) in i40e_aq_send_driver_version()
2029 status = i40e_asq_send_command(hw, &desc, dv->driver_string, in i40e_aq_send_driver_version()
2036 * i40e_get_link_status - get status of the HW network link
2049 if (hw->phy.get_link_info) { in i40e_get_link_status()
2057 *link_up = hw->phy.link_info.link_info & I40E_AQ_LINK_UP; in i40e_get_link_status()
2063 * i40e_update_link_info - update status of the HW network link
2076 if ((hw->phy.link_info.link_info & I40E_AQ_MEDIA_AVAILABLE) && in i40e_update_link_info()
2077 ((hw->phy.link_info.link_info & I40E_AQ_LINK_UP) || in i40e_update_link_info()
2078 !(hw->phy.link_info_old.link_info & I40E_AQ_LINK_UP))) { in i40e_update_link_info()
2086 hw->phy.link_info.req_fec_info = in i40e_update_link_info()
2090 hw->phy.link_info.req_fec_info = in i40e_update_link_info()
2095 memcpy(hw->phy.link_info.module_type, &abilities.module_type, in i40e_update_link_info()
2096 sizeof(hw->phy.link_info.module_type)); in i40e_update_link_info()
2103 * i40e_aq_add_veb - Insert a VEB between the VSI and the MAC
2132 return -EINVAL; in i40e_aq_add_veb()
2136 cmd->uplink_seid = cpu_to_le16(uplink_seid); in i40e_aq_add_veb()
2137 cmd->downlink_seid = cpu_to_le16(downlink_seid); in i40e_aq_add_veb()
2138 cmd->enable_tcs = enabled_tc; in i40e_aq_add_veb()
2150 cmd->veb_flags = cpu_to_le16(veb_flags); in i40e_aq_add_veb()
2155 *veb_seid = le16_to_cpu(resp->veb_seid); in i40e_aq_add_veb()
2161 * i40e_aq_get_veb_parameters - Retrieve VEB parameters
2187 return -EINVAL; in i40e_aq_get_veb_parameters()
2191 cmd_resp->seid = cpu_to_le16(veb_seid); in i40e_aq_get_veb_parameters()
2198 *switch_id = le16_to_cpu(cmd_resp->switch_id); in i40e_aq_get_veb_parameters()
2200 *statistic_index = le16_to_cpu(cmd_resp->statistic_index); in i40e_aq_get_veb_parameters()
2202 *vebs_used = le16_to_cpu(cmd_resp->vebs_used); in i40e_aq_get_veb_parameters()
2204 *vebs_free = le16_to_cpu(cmd_resp->vebs_free); in i40e_aq_get_veb_parameters()
2206 u16 flags = le16_to_cpu(cmd_resp->veb_flags); in i40e_aq_get_veb_parameters()
2233 (struct i40e_aqc_macvlan *)&desc->params.raw; in i40e_prepare_add_macvlan()
2241 cmd->num_addresses = cpu_to_le16(count); in i40e_prepare_add_macvlan()
2242 cmd->seid[0] = cpu_to_le16(I40E_AQC_MACVLAN_CMD_SEID_VALID | seid); in i40e_prepare_add_macvlan()
2243 cmd->seid[1] = 0; in i40e_prepare_add_macvlan()
2244 cmd->seid[2] = 0; in i40e_prepare_add_macvlan()
2251 desc->flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD)); in i40e_prepare_add_macvlan()
2253 desc->flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB); in i40e_prepare_add_macvlan()
2277 return -EINVAL; in i40e_aq_add_macvlan()
2296 * to avoid race conditions in access to hw->aq.asq_last_status.
2310 return -EINVAL; in i40e_aq_add_macvlan_v2()
2340 return -EINVAL; in i40e_aq_remove_macvlan()
2346 cmd->num_addresses = cpu_to_le16(count); in i40e_aq_remove_macvlan()
2347 cmd->seid[0] = cpu_to_le16(I40E_AQC_MACVLAN_CMD_SEID_VALID | seid); in i40e_aq_remove_macvlan()
2348 cmd->seid[1] = 0; in i40e_aq_remove_macvlan()
2349 cmd->seid[2] = 0; in i40e_aq_remove_macvlan()
2372 * to avoid race conditions in access to hw->aq.asq_last_status.
2387 return -EINVAL; in i40e_aq_remove_macvlan_v2()
2394 cmd->num_addresses = cpu_to_le16(count); in i40e_aq_remove_macvlan_v2()
2395 cmd->seid[0] = cpu_to_le16(I40E_AQC_MACVLAN_CMD_SEID_VALID | seid); in i40e_aq_remove_macvlan_v2()
2396 cmd->seid[1] = 0; in i40e_aq_remove_macvlan_v2()
2397 cmd->seid[2] = 0; in i40e_aq_remove_macvlan_v2()
2411 * @v_opcode: opcodes for VF-PF communication
2429 cmd->id = cpu_to_le32(vfid); in i40e_aq_send_msg_to_vf()
2464 return -EINVAL; in i40e_aq_debug_read_register()
2468 cmd_resp->address = cpu_to_le32(reg_addr); in i40e_aq_debug_read_register()
2473 *reg_val = ((u64)le32_to_cpu(cmd_resp->value_high) << 32) | in i40e_aq_debug_read_register()
2474 (u64)le32_to_cpu(cmd_resp->value_low); in i40e_aq_debug_read_register()
2500 cmd->address = cpu_to_le32(reg_addr); in i40e_aq_debug_write_register()
2501 cmd->value_high = cpu_to_le32((u32)(reg_val >> 32)); in i40e_aq_debug_write_register()
2502 cmd->value_low = cpu_to_le32((u32)(reg_val & 0xFFFFFFFF)); in i40e_aq_debug_write_register()
2533 cmd_resp->resource_id = cpu_to_le16(resource); in i40e_aq_request_resource()
2534 cmd_resp->access_type = cpu_to_le16(access); in i40e_aq_request_resource()
2535 cmd_resp->resource_number = cpu_to_le32(sdp_number); in i40e_aq_request_resource()
2544 if (!status || hw->aq.asq_last_status == I40E_AQ_RC_EBUSY) in i40e_aq_request_resource()
2545 *timeout = le32_to_cpu(cmd_resp->timeout); in i40e_aq_request_resource()
2571 cmd->resource_id = cpu_to_le16(resource); in i40e_aq_release_resource()
2572 cmd->resource_number = cpu_to_le32(sdp_number); in i40e_aq_release_resource()
2603 status = -EINVAL; in i40e_aq_read_nvm()
2611 cmd->command_flags |= I40E_AQ_NVM_LAST_CMD; in i40e_aq_read_nvm()
2612 cmd->module_pointer = module_pointer; in i40e_aq_read_nvm()
2613 cmd->offset = cpu_to_le32(offset); in i40e_aq_read_nvm()
2614 cmd->length = cpu_to_le16(length); in i40e_aq_read_nvm()
2648 status = -EINVAL; in i40e_aq_erase_nvm()
2656 cmd->command_flags |= I40E_AQ_NVM_LAST_CMD; in i40e_aq_erase_nvm()
2657 cmd->module_pointer = module_pointer; in i40e_aq_erase_nvm()
2658 cmd->offset = cpu_to_le32(offset); in i40e_aq_erase_nvm()
2659 cmd->length = cpu_to_le16(length); in i40e_aq_erase_nvm()
2692 p = &hw->dev_caps; in i40e_parse_discover_capabilities()
2694 p = &hw->func_caps; in i40e_parse_discover_capabilities()
2699 id = le16_to_cpu(cap->id); in i40e_parse_discover_capabilities()
2700 number = le32_to_cpu(cap->number); in i40e_parse_discover_capabilities()
2701 logical_id = le32_to_cpu(cap->logical_id); in i40e_parse_discover_capabilities()
2702 phys_id = le32_to_cpu(cap->phys_id); in i40e_parse_discover_capabilities()
2703 major_rev = cap->major_rev; in i40e_parse_discover_capabilities()
2707 p->switch_mode = number; in i40e_parse_discover_capabilities()
2710 p->management_mode = number; in i40e_parse_discover_capabilities()
2712 p->mng_protocols_over_mctp = logical_id; in i40e_parse_discover_capabilities()
2715 p->mng_protocols_over_mctp); in i40e_parse_discover_capabilities()
2717 p->mng_protocols_over_mctp = 0; in i40e_parse_discover_capabilities()
2721 p->npar_enable = number; in i40e_parse_discover_capabilities()
2724 p->os2bmc = number; in i40e_parse_discover_capabilities()
2727 p->valid_functions = number; in i40e_parse_discover_capabilities()
2731 p->sr_iov_1_1 = true; in i40e_parse_discover_capabilities()
2734 p->num_vfs = number; in i40e_parse_discover_capabilities()
2735 p->vf_base_id = logical_id; in i40e_parse_discover_capabilities()
2739 p->vmdq = true; in i40e_parse_discover_capabilities()
2743 p->evb_802_1_qbg = true; in i40e_parse_discover_capabilities()
2747 p->evb_802_1_qbh = true; in i40e_parse_discover_capabilities()
2750 p->num_vsis = number; in i40e_parse_discover_capabilities()
2754 p->dcb = true; in i40e_parse_discover_capabilities()
2755 p->enabled_tcmap = logical_id; in i40e_parse_discover_capabilities()
2756 p->maxtc = phys_id; in i40e_parse_discover_capabilities()
2761 p->fcoe = true; in i40e_parse_discover_capabilities()
2765 p->iscsi = true; in i40e_parse_discover_capabilities()
2768 p->rss = true; in i40e_parse_discover_capabilities()
2769 p->rss_table_size = number; in i40e_parse_discover_capabilities()
2770 p->rss_table_entry_width = logical_id; in i40e_parse_discover_capabilities()
2773 p->num_rx_qp = number; in i40e_parse_discover_capabilities()
2774 p->base_queue = phys_id; in i40e_parse_discover_capabilities()
2777 p->num_tx_qp = number; in i40e_parse_discover_capabilities()
2778 p->base_queue = phys_id; in i40e_parse_discover_capabilities()
2781 p->num_msix_vectors = number; in i40e_parse_discover_capabilities()
2784 p->num_msix_vectors); in i40e_parse_discover_capabilities()
2787 p->num_msix_vectors_vf = number; in i40e_parse_discover_capabilities()
2792 p->flex10_enable = true; in i40e_parse_discover_capabilities()
2793 p->flex10_capable = true; in i40e_parse_discover_capabilities()
2798 p->flex10_enable = true; in i40e_parse_discover_capabilities()
2800 p->flex10_capable = true; in i40e_parse_discover_capabilities()
2802 p->flex10_mode = logical_id; in i40e_parse_discover_capabilities()
2803 p->flex10_status = phys_id; in i40e_parse_discover_capabilities()
2807 p->mgmt_cem = true; in i40e_parse_discover_capabilities()
2811 p->iwarp = true; in i40e_parse_discover_capabilities()
2815 p->led[phys_id] = true; in i40e_parse_discover_capabilities()
2819 p->sdp[phys_id] = true; in i40e_parse_discover_capabilities()
2823 p->mdio_port_num = phys_id; in i40e_parse_discover_capabilities()
2824 p->mdio_port_mode = logical_id; in i40e_parse_discover_capabilities()
2829 p->ieee_1588 = true; in i40e_parse_discover_capabilities()
2832 p->fd = true; in i40e_parse_discover_capabilities()
2833 p->fd_filters_guaranteed = number; in i40e_parse_discover_capabilities()
2834 p->fd_filters_best_effort = logical_id; in i40e_parse_discover_capabilities()
2837 p->wr_csr_prot = (u64)number; in i40e_parse_discover_capabilities()
2838 p->wr_csr_prot |= (u64)logical_id << 32; in i40e_parse_discover_capabilities()
2842 p->sec_rev_disabled = true; in i40e_parse_discover_capabilities()
2844 p->update_disabled = true; in i40e_parse_discover_capabilities()
2851 if (p->fcoe) in i40e_parse_discover_capabilities()
2857 if (p->npar_enable || p->flex10_enable) in i40e_parse_discover_capabilities()
2858 p->fcoe = false; in i40e_parse_discover_capabilities()
2861 hw->num_ports = 0; in i40e_parse_discover_capabilities()
2871 hw->num_ports++; in i40e_parse_discover_capabilities()
2874 /* OCP cards case: if a mezz is removed the Ethernet port is at in i40e_parse_discover_capabilities()
2876 * needed in order to check if we are dealing with OCP card. in i40e_parse_discover_capabilities()
2881 if (hw->mac.type == I40E_MAC_X722) { in i40e_parse_discover_capabilities()
2889 hw->num_ports = 4; in i40e_parse_discover_capabilities()
2894 valid_functions = p->valid_functions; in i40e_parse_discover_capabilities()
2902 /* partition id is 1-based, and functions are evenly spread in i40e_parse_discover_capabilities()
2905 if (hw->num_ports != 0) { in i40e_parse_discover_capabilities()
2906 hw->partition_id = (hw->pf_id / hw->num_ports) + 1; in i40e_parse_discover_capabilities()
2907 hw->num_partitions = num_functions / hw->num_ports; in i40e_parse_discover_capabilities()
2913 p->rx_buf_chain_len = I40E_MAX_CHAINED_RX_BUFFERS; in i40e_parse_discover_capabilities()
2922 * @list_type_opc: capabilities type to discover - pass in the command opcode
2940 status = -EINVAL; in i40e_aq_discover_capabilities()
2956 i40e_parse_discover_capabilities(hw, buff, le32_to_cpu(cmd->count), in i40e_aq_discover_capabilities()
2988 status = -EINVAL; in i40e_aq_update_nvm()
2996 cmd->command_flags |= I40E_AQ_NVM_LAST_CMD; in i40e_aq_update_nvm()
2997 if (hw->mac.type == I40E_MAC_X722) { in i40e_aq_update_nvm()
2999 cmd->command_flags |= in i40e_aq_update_nvm()
3003 cmd->command_flags |= in i40e_aq_update_nvm()
3007 cmd->module_pointer = module_pointer; in i40e_aq_update_nvm()
3008 cmd->offset = cpu_to_le32(offset); in i40e_aq_update_nvm()
3009 cmd->length = cpu_to_le16(length); in i40e_aq_update_nvm()
3047 return -EINVAL; in i40e_aq_get_lldp_mib()
3053 cmd->type = mib_type & I40E_AQ_LLDP_MIB_TYPE_MASK; in i40e_aq_get_lldp_mib()
3054 cmd->type |= FIELD_PREP(I40E_AQ_LLDP_BRIDGE_TYPE_MASK, bridge_type); in i40e_aq_get_lldp_mib()
3065 *local_len = le16_to_cpu(resp->local_len); in i40e_aq_get_lldp_mib()
3067 *remote_len = le16_to_cpu(resp->remote_len); in i40e_aq_get_lldp_mib()
3074 * i40e_aq_set_lldp_mib - Set the LLDP MIB
3094 return -EINVAL; in i40e_aq_set_lldp_mib()
3104 cmd->type = mib_type; in i40e_aq_set_lldp_mib()
3105 cmd->length = cpu_to_le16(buff_size); in i40e_aq_set_lldp_mib()
3106 cmd->address_high = cpu_to_le32(upper_32_bits((uintptr_t)buff)); in i40e_aq_set_lldp_mib()
3107 cmd->address_low = cpu_to_le32(lower_32_bits((uintptr_t)buff)); in i40e_aq_set_lldp_mib()
3134 cmd->command |= I40E_AQ_LLDP_MIB_UPDATE_DISABLE; in i40e_aq_cfg_lldp_mib_change_event()
3162 cmd->command |= I40E_AQ_LLDP_AGENT_SHUTDOWN; in i40e_aq_stop_lldp()
3165 if (test_bit(I40E_HW_CAP_FW_LLDP_PERSISTENT, hw->caps)) in i40e_aq_stop_lldp()
3166 cmd->command |= I40E_AQ_LLDP_AGENT_STOP_PERSIST; in i40e_aq_stop_lldp()
3195 cmd->command = I40E_AQ_LLDP_AGENT_START; in i40e_aq_start_lldp()
3198 if (test_bit(I40E_HW_CAP_FW_LLDP_PERSISTENT, hw->caps)) in i40e_aq_start_lldp()
3199 cmd->command |= I40E_AQ_LLDP_AGENT_START_PERSIST; in i40e_aq_start_lldp()
3226 if (!test_bit(I40E_HW_CAP_FW_LLDP_STOPPABLE, hw->caps)) in i40e_aq_set_dcb_parameters()
3227 return -ENODEV; in i40e_aq_set_dcb_parameters()
3233 cmd->valid_flags = I40E_DCB_VALID; in i40e_aq_set_dcb_parameters()
3234 cmd->command = I40E_AQ_DCB_SET_AGENT; in i40e_aq_set_dcb_parameters()
3258 return -EINVAL; in i40e_aq_get_cee_dcb_config()
3295 cmd->udp_port = cpu_to_le16(udp_port); in i40e_aq_add_udp_tunnel()
3296 cmd->protocol_type = protocol_index; in i40e_aq_add_udp_tunnel()
3301 *filter_index = resp->index; in i40e_aq_add_udp_tunnel()
3322 cmd->index = index; in i40e_aq_del_udp_tunnel()
3330 * i40e_aq_delete_element - Delete switch element
3346 return -EINVAL; in i40e_aq_delete_element()
3350 cmd->seid = cpu_to_le16(seid); in i40e_aq_delete_element()
3359 * i40e_aq_dcb_updated - DCB Updated Command
3381 * i40e_aq_tx_sched_cmd - generic Tx scheduler AQ command handler
3420 return -EINVAL; in i40e_aq_tx_sched_cmd()
3434 cmd->vsi_seid = cpu_to_le16(seid); in i40e_aq_tx_sched_cmd()
3442 * i40e_aq_config_vsi_bw_limit - Configure VSI BW Limit
3461 cmd->vsi_seid = cpu_to_le16(seid); in i40e_aq_config_vsi_bw_limit()
3462 cmd->credit = cpu_to_le16(credit); in i40e_aq_config_vsi_bw_limit()
3463 cmd->max_credit = max_credit; in i40e_aq_config_vsi_bw_limit()
3471 * i40e_aq_config_vsi_tc_bw - Config VSI BW Allocation per TC
3488 * i40e_aq_config_switch_comp_ets - Enable/Disable/Modify ETS on the port
3507 * i40e_aq_config_switch_comp_bw_config - Config Switch comp BW Alloc per TC
3525 * i40e_aq_query_vsi_bw_config - Query VSI BW configuration
3543 * i40e_aq_query_vsi_ets_sla_config - Query VSI BW configuration per TC
3561 * i40e_aq_query_switch_comp_ets_config - Query Switch comp BW config per TC
3579 * i40e_aq_query_port_ets_config - Query Physical Port ETS configuration
3597 * i40e_aq_query_switch_comp_bw_config - Query Switch comp BW configuration
3635 switch (settings->fcoe_filt_num) { in i40e_validate_filter_settings()
3643 fcoe_filt_size <<= (u32)settings->fcoe_filt_num; in i40e_validate_filter_settings()
3646 return -EINVAL; in i40e_validate_filter_settings()
3649 switch (settings->fcoe_cntx_num) { in i40e_validate_filter_settings()
3655 fcoe_cntx_size <<= (u32)settings->fcoe_cntx_num; in i40e_validate_filter_settings()
3658 return -EINVAL; in i40e_validate_filter_settings()
3662 switch (settings->pe_filt_num) { in i40e_validate_filter_settings()
3676 return -EINVAL; in i40e_validate_filter_settings()
3679 switch (settings->pe_cntx_num) { in i40e_validate_filter_settings()
3692 return -EINVAL; in i40e_validate_filter_settings()
3699 return -EINVAL; in i40e_validate_filter_settings()
3721 return -EINVAL; in i40e_set_filter_control()
3733 val |= FIELD_PREP(I40E_PFQF_CTL_0_PEHSIZE_MASK, settings->pe_filt_num); in i40e_set_filter_control()
3736 val |= FIELD_PREP(I40E_PFQF_CTL_0_PEDSIZE_MASK, settings->pe_cntx_num); in i40e_set_filter_control()
3741 settings->fcoe_filt_num); in i40e_set_filter_control()
3745 settings->fcoe_cntx_num); in i40e_set_filter_control()
3749 if (settings->hash_lut_size == I40E_HASH_LUT_SIZE_512) in i40e_set_filter_control()
3754 if (settings->enable_fdir) in i40e_set_filter_control()
3756 if (settings->enable_ethtype) in i40e_set_filter_control()
3758 if (settings->enable_macvlan) in i40e_set_filter_control()
3767 * i40e_aq_add_rem_control_packet_filter - Add or Remove Control Packet Filter
3798 return -EINVAL; in i40e_aq_add_rem_control_packet_filter()
3803 cmd->queue = cpu_to_le16(queue); in i40e_aq_add_rem_control_packet_filter()
3810 ether_addr_copy(cmd->mac, mac_addr); in i40e_aq_add_rem_control_packet_filter()
3812 cmd->etype = cpu_to_le16(ethtype); in i40e_aq_add_rem_control_packet_filter()
3813 cmd->flags = cpu_to_le16(flags); in i40e_aq_add_rem_control_packet_filter()
3814 cmd->seid = cpu_to_le16(vsi_seid); in i40e_aq_add_rem_control_packet_filter()
3819 stats->mac_etype_used = le16_to_cpu(resp->mac_etype_used); in i40e_aq_add_rem_control_packet_filter()
3820 stats->etype_used = le16_to_cpu(resp->etype_used); in i40e_aq_add_rem_control_packet_filter()
3821 stats->mac_etype_free = le16_to_cpu(resp->mac_etype_free); in i40e_aq_add_rem_control_packet_filter()
3822 stats->etype_free = le16_to_cpu(resp->etype_free); in i40e_aq_add_rem_control_packet_filter()
3829 * i40e_add_filter_to_drop_tx_flow_control_frames- filter to drop flow control
3873 return -EINVAL; in i40e_aq_alternate_read()
3876 cmd_resp->address0 = cpu_to_le32(reg_addr0); in i40e_aq_alternate_read()
3877 cmd_resp->address1 = cpu_to_le32(reg_addr1); in i40e_aq_alternate_read()
3882 *reg_val0 = le32_to_cpu(cmd_resp->data0); in i40e_aq_alternate_read()
3885 *reg_val1 = le32_to_cpu(cmd_resp->data1); in i40e_aq_alternate_read()
3908 cmd->vsi_seid = cpu_to_le16(seid); in i40e_aq_suspend_port_tx()
3935 * i40e_set_pci_config_data - store PCI bus info
3943 hw->bus.type = i40e_bus_type_pci_express; in i40e_set_pci_config_data()
3947 hw->bus.width = i40e_bus_width_pcie_x1; in i40e_set_pci_config_data()
3950 hw->bus.width = i40e_bus_width_pcie_x2; in i40e_set_pci_config_data()
3953 hw->bus.width = i40e_bus_width_pcie_x4; in i40e_set_pci_config_data()
3956 hw->bus.width = i40e_bus_width_pcie_x8; in i40e_set_pci_config_data()
3959 hw->bus.width = i40e_bus_width_unknown; in i40e_set_pci_config_data()
3965 hw->bus.speed = i40e_bus_speed_2500; in i40e_set_pci_config_data()
3968 hw->bus.speed = i40e_bus_speed_5000; in i40e_set_pci_config_data()
3971 hw->bus.speed = i40e_bus_speed_8000; in i40e_set_pci_config_data()
3974 hw->bus.speed = i40e_bus_speed_unknown; in i40e_set_pci_config_data()
4009 return -EINVAL; in i40e_aq_debug_dump()
4018 cmd->cluster_id = cluster_id; in i40e_aq_debug_dump()
4019 cmd->table_id = table_id; in i40e_aq_debug_dump()
4020 cmd->idx = cpu_to_le32(start_index); in i40e_aq_debug_dump()
4029 *ret_next_table = resp->table_id; in i40e_aq_debug_dump()
4031 *ret_next_index = le32_to_cpu(resp->idx); in i40e_aq_debug_dump()
4057 (I40E_ALT_STRUCT_DWORDS_PER_PF * hw->pf_id); in i40e_read_bw_from_alt_ram()
4060 (I40E_ALT_STRUCT_DWORDS_PER_PF * hw->pf_id); in i40e_read_bw_from_alt_ram()
4126 u8 port_num = (u8)hw->func_caps.mdio_port_num; in i40e_read_phy_register_clause22()
4127 int status = -EIO; in i40e_read_phy_register_clause22()
4129 u16 retry = 1000; in i40e_read_phy_register_clause22() local
4144 retry--; in i40e_read_phy_register_clause22()
4145 } while (retry); in i40e_read_phy_register_clause22()
4170 u8 port_num = (u8)hw->func_caps.mdio_port_num; in i40e_write_phy_register_clause22()
4171 int status = -EIO; in i40e_write_phy_register_clause22()
4173 u16 retry = 1000; in i40e_write_phy_register_clause22() local
4192 retry--; in i40e_write_phy_register_clause22()
4193 } while (retry); in i40e_write_phy_register_clause22()
4211 u8 port_num = hw->func_caps.mdio_port_num; in i40e_read_phy_register_clause45()
4212 int status = -EIO; in i40e_read_phy_register_clause45()
4214 u16 retry = 1000; in i40e_read_phy_register_clause45() local
4231 retry--; in i40e_read_phy_register_clause45()
4232 } while (retry); in i40e_read_phy_register_clause45()
4246 status = -EIO; in i40e_read_phy_register_clause45()
4247 retry = 1000; in i40e_read_phy_register_clause45()
4256 retry--; in i40e_read_phy_register_clause45()
4257 } while (retry); in i40e_read_phy_register_clause45()
4284 u8 port_num = hw->func_caps.mdio_port_num; in i40e_write_phy_register_clause45()
4285 int status = -EIO; in i40e_write_phy_register_clause45()
4286 u16 retry = 1000; in i40e_write_phy_register_clause45() local
4304 retry--; in i40e_write_phy_register_clause45()
4305 } while (retry); in i40e_write_phy_register_clause45()
4321 status = -EIO; in i40e_write_phy_register_clause45()
4322 retry = 1000; in i40e_write_phy_register_clause45()
4331 retry--; in i40e_write_phy_register_clause45()
4332 } while (retry); in i40e_write_phy_register_clause45()
4347 u8 port_num = hw->func_caps.mdio_port_num; in i40e_get_phy_address()
4354 * i40e_led_get_reg - read LED register
4368 if (test_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps)) { in i40e_led_get_reg()
4388 * i40e_led_set_reg - write LED register
4401 if (test_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps)) { in i40e_led_set_reg()
4422 * i40e_led_get_phy - return current on/off mode
4440 if (test_bit(I40E_HW_CAP_AQ_PHY_ACCESS, hw->caps)) { in i40e_led_get_phy()
4523 * i40e_aq_rx_ctl_read_register - use FW to read from an Rx control register
4542 return -EINVAL; in i40e_aq_rx_ctl_read_register()
4546 cmd_resp->address = cpu_to_le32(reg_addr); in i40e_aq_rx_ctl_read_register()
4551 *reg_val = le32_to_cpu(cmd_resp->value); in i40e_aq_rx_ctl_read_register()
4557 * i40e_read_rx_ctl - read from an Rx control register
4565 int retry = 5; in i40e_read_rx_ctl() local
4568 if (i40e_is_aq_api_ver_lt(hw, 1, 5) || hw->mac.type == I40E_MAC_X722) in i40e_read_rx_ctl()
4574 if (hw->aq.asq_last_status == I40E_AQ_RC_EAGAIN && retry) { in i40e_read_rx_ctl()
4576 retry--; in i40e_read_rx_ctl()
4581 /* if the AQ access failed, try the old-fashioned way */ in i40e_read_rx_ctl()
4609 cmd->address = cpu_to_le32(reg_addr); in i40e_aq_rx_ctl_write_register()
4610 cmd->value = cpu_to_le32(reg_val); in i40e_aq_rx_ctl_write_register()
4618 * i40e_write_rx_ctl - write to an Rx control register
4627 int retry = 5; in i40e_write_rx_ctl() local
4629 if (i40e_is_aq_api_ver_lt(hw, 1, 5) || hw->mac.type == I40E_MAC_X722) in i40e_write_rx_ctl()
4636 if (hw->aq.asq_last_status == I40E_AQ_RC_EAGAIN && retry) { in i40e_write_rx_ctl()
4638 retry--; in i40e_write_rx_ctl()
4643 /* if the AQ access failed, try the old-fashioned way */ in i40e_write_rx_ctl()
4649 * i40e_mdio_if_number_selection - MDIO I/F number selection
4660 cmd->phy_interface != I40E_AQ_PHY_REG_ACCESS_EXTERNAL) in i40e_mdio_if_number_selection()
4663 if (test_bit(I40E_HW_CAP_AQ_PHY_ACCESS_EXTENDED, hw->caps)) { in i40e_mdio_if_number_selection()
4664 cmd->cmd_flags |= in i40e_mdio_if_number_selection()
4703 cmd->phy_interface = phy_select; in i40e_aq_set_phy_register_ext()
4704 cmd->dev_address = dev_addr; in i40e_aq_set_phy_register_ext()
4705 cmd->reg_address = cpu_to_le32(reg_addr); in i40e_aq_set_phy_register_ext()
4706 cmd->reg_value = cpu_to_le32(reg_val); in i40e_aq_set_phy_register_ext()
4711 cmd->cmd_flags = I40E_AQ_PHY_REG_ACCESS_DONT_CHANGE_QSFP_PAGE; in i40e_aq_set_phy_register_ext()
4748 cmd->phy_interface = phy_select; in i40e_aq_get_phy_register_ext()
4749 cmd->dev_address = dev_addr; in i40e_aq_get_phy_register_ext()
4750 cmd->reg_address = cpu_to_le32(reg_addr); in i40e_aq_get_phy_register_ext()
4755 cmd->cmd_flags = I40E_AQ_PHY_REG_ACCESS_DONT_CHANGE_QSFP_PAGE; in i40e_aq_get_phy_register_ext()
4759 *reg_val = le32_to_cpu(cmd->reg_value); in i40e_aq_get_phy_register_ext()
4765 * i40e_aq_write_ddp - Write dynamic device personalization (ddp)
4795 cmd->profile_track_id = cpu_to_le32(track_id); in i40e_aq_write_ddp()
4801 *error_offset = le32_to_cpu(resp->error_offset); in i40e_aq_write_ddp()
4803 *error_info = le32_to_cpu(resp->error_info); in i40e_aq_write_ddp()
4810 * i40e_aq_get_ddp_list - Read dynamic device personalization (ddp)
4834 cmd->flags = flags; in i40e_aq_get_ddp_list()
4858 for (i = 0; i < pkg_hdr->segment_count; i++) { in i40e_find_segment_in_package()
4861 pkg_hdr->segment_offset[i]); in i40e_find_segment_in_package()
4863 if (segment->type == segment_type) in i40e_find_segment_in_package()
4876 count = p->device_table_count; \
4877 nvm = (u32 *)&p->device_table[count]; \
4886 * i40e_ddp_exec_aq_section - Execute generic AQ for DDP
4898 i40e_fill_default_direct_cmd_desc(&desc, aq->opcode); in i40e_ddp_exec_aq_section()
4899 desc.flags |= cpu_to_le16(aq->flags); in i40e_ddp_exec_aq_section()
4900 memcpy(desc.params.raw, aq->param, sizeof(desc.params.raw)); in i40e_ddp_exec_aq_section()
4902 msglen = aq->datalen; in i40e_ddp_exec_aq_section()
4909 msg = &aq->data[0]; in i40e_ddp_exec_aq_section()
4917 aq->opcode, status); in i40e_ddp_exec_aq_section()
4922 memcpy(aq->param, desc.params.raw, sizeof(desc.params.raw)); in i40e_ddp_exec_aq_section()
4950 return -EOPNOTSUPP; in i40e_validate_profile()
4953 dev_cnt = profile->device_table_count; in i40e_validate_profile()
4955 vendor_dev_id = profile->device_table[i].vendor_dev_id; in i40e_validate_profile()
4957 hw->device_id == (vendor_dev_id & 0xFFFF)) in i40e_validate_profile()
4963 return -ENODEV; in i40e_validate_profile()
4969 for (i = 0; i < sec_tbl->section_count; i++) { in i40e_validate_profile()
4970 sec_off = sec_tbl->section_offset[i]; in i40e_validate_profile()
4973 if (sec->section.type == SECTION_TYPE_MMIO || in i40e_validate_profile()
4974 sec->section.type == SECTION_TYPE_AQ || in i40e_validate_profile()
4975 sec->section.type == SECTION_TYPE_RB_AQ) { in i40e_validate_profile()
4977 "Not a roll-back package\n"); in i40e_validate_profile()
4978 return -EOPNOTSUPP; in i40e_validate_profile()
4981 if (sec->section.type == SECTION_TYPE_RB_AQ || in i40e_validate_profile()
4982 sec->section.type == SECTION_TYPE_RB_MMIO) { in i40e_validate_profile()
4985 return -EOPNOTSUPP; in i40e_validate_profile()
5020 for (i = 0; i < sec_tbl->section_count; i++) { in i40e_write_profile()
5021 sec_off = sec_tbl->section_offset[i]; in i40e_write_profile()
5024 if (sec->section.type == SECTION_TYPE_AQ) { in i40e_write_profile()
5030 i, ddp_aq->opcode); in i40e_write_profile()
5033 sec->section.type = SECTION_TYPE_RB_AQ; in i40e_write_profile()
5036 /* Skip any non-mmio sections */ in i40e_write_profile()
5037 if (sec->section.type != SECTION_TYPE_MMIO) in i40e_write_profile()
5040 section_size = sec->section.size + in i40e_write_profile()
5083 for (i = sec_tbl->section_count - 1; i >= 0; i--) { in i40e_rollback_profile()
5084 sec_off = sec_tbl->section_offset[i]; in i40e_rollback_profile()
5087 /* Skip any non-rollback sections */ in i40e_rollback_profile()
5088 if (sec->section.type != SECTION_TYPE_RB_MMIO) in i40e_rollback_profile()
5091 section_size = sec->section.size + in i40e_rollback_profile()
5094 /* Write roll-back MMIO section */ in i40e_rollback_profile()
5136 cmd->num_filters = filter_count; in i40e_aq_add_cloud_filters()
5137 cmd->seid = cpu_to_le16(seid); in i40e_aq_add_cloud_filters()
5174 cmd->num_filters = filter_count; in i40e_aq_add_cloud_filters_bb()
5175 cmd->seid = cpu_to_le16(seid); in i40e_aq_add_cloud_filters_bb()
5176 cmd->big_buffer_flag = I40E_AQC_ADD_CLOUD_CMD_BB; in i40e_aq_add_cloud_filters_bb()
5229 cmd->num_filters = filter_count; in i40e_aq_rem_cloud_filters()
5230 cmd->seid = cpu_to_le16(seid); in i40e_aq_rem_cloud_filters()
5267 cmd->num_filters = filter_count; in i40e_aq_rem_cloud_filters_bb()
5268 cmd->seid = cpu_to_le16(seid); in i40e_aq_rem_cloud_filters_bb()
5269 cmd->big_buffer_flag = I40E_AQC_ADD_CLOUD_CMD_BB; in i40e_aq_rem_cloud_filters_bb()