Lines Matching +full:mac +full:- +full:address1
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright(c) 2013 - 2021 Intel Corporation. */
15 * i40e_set_mac_type - Sets MAC type
18 * This function sets the mac type of the adapter based on the
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()
66 hw_dbg(hw, "i40e_set_mac_type found mac: %d, returns: %d\n", 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()
199 if (hw->aq.asq.len) in i40e_check_asq_alive()
200 return !!(rd32(hw, hw->aq.asq.len) & in i40e_check_asq_alive()
226 cmd->driver_unloading = cpu_to_le32(I40E_AQ_DRIVER_UNLOADING); in i40e_aq_queue_shutdown()
264 cmd_resp->vsi_id = in i40e_aq_get_set_rss_lut()
268 cmd_resp->vsi_id |= cpu_to_le16((u16)I40E_AQC_SET_RSS_LUT_VSI_VALID); in i40e_aq_get_set_rss_lut()
271 cmd_resp->flags |= cpu_to_le16((u16) in i40e_aq_get_set_rss_lut()
276 cmd_resp->flags |= cpu_to_le16((u16) in i40e_aq_get_set_rss_lut()
350 cmd_resp->vsi_id = in i40e_aq_get_set_rss_key()
354 cmd_resp->vsi_id |= cpu_to_le16((u16)I40E_AQC_SET_RSS_KEY_VSI_VALID); in i40e_aq_get_set_rss_key()
390 /* The i40e_ptype_lookup table is used to convert from the 8-bit ptype in the
391 * hardware to a bit-field that can be used by SW to more easily determine the
397 * We store the PTYPE in the top byte of the bit field - this is just so that
433 /* Lookup table mapping in the 8-bit HW PTYPE to the bit field for decoding */
468 /* IPv4 --> IPv4 */
477 /* IPv4 --> IPv6 */
486 /* IPv4 --> GRE/NAT */
489 /* IPv4 --> GRE/NAT --> IPv4 */
498 /* IPv4 --> GRE/NAT --> IPv6 */
507 /* IPv4 --> GRE/NAT --> MAC */
510 /* IPv4 --> GRE/NAT --> MAC --> IPv4 */
519 /* IPv4 --> GRE/NAT -> MAC --> IPv6 */
528 /* IPv4 --> GRE/NAT --> MAC/VLAN */
531 /* IPv4 ---> GRE/NAT -> MAC/VLAN --> IPv4 */
540 /* IPv4 -> GRE/NAT -> MAC/VLAN --> IPv6 */
558 /* IPv6 --> IPv4 */
567 /* IPv6 --> IPv6 */
576 /* IPv6 --> GRE/NAT */
579 /* IPv6 --> GRE/NAT -> IPv4 */
588 /* IPv6 --> GRE/NAT -> IPv6 */
597 /* IPv6 --> GRE/NAT -> MAC */
600 /* IPv6 --> GRE/NAT -> MAC -> IPv4 */
609 /* IPv6 --> GRE/NAT -> MAC -> IPv6 */
618 /* IPv6 --> GRE/NAT -> MAC/VLAN */
621 /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv4 */
630 /* IPv6 --> GRE/NAT -> MAC/VLAN --> IPv6 */
644 * i40e_init_shared_code - Initialize the shared code
647 * This assigns the MAC type and PHY code and inits the NVM.
662 switch (hw->mac.type) { in i40e_init_shared_code()
667 return -ENODEV; in i40e_init_shared_code()
670 hw->phy.get_link_info = true; in i40e_init_shared_code()
675 hw->port = (u8)port; in i40e_init_shared_code()
680 hw->pf_id = (u8)(func_rid & 0xff); in i40e_init_shared_code()
682 hw->pf_id = (u8)(func_rid & 0x7); in i40e_init_shared_code()
689 * i40e_aq_mac_address_read - Retrieve the MAC addresses
692 * @addrs: the requestor's mac addr store
711 *flags = le16_to_cpu(cmd_data->command_flags); in i40e_aq_mac_address_read()
717 * i40e_aq_mac_address_write - Change the MAC addresses
719 * @flags: indicates which MAC to be written
734 cmd_data->command_flags = cpu_to_le16(flags); in i40e_aq_mac_address_write()
735 cmd_data->mac_sah = cpu_to_le16((u16)mac_addr[0] << 8 | mac_addr[1]); in i40e_aq_mac_address_write()
736 cmd_data->mac_sal = cpu_to_le32(((u32)mac_addr[2] << 24) | in i40e_aq_mac_address_write()
747 * i40e_get_mac_addr - get MAC address
749 * @mac_addr: pointer to MAC address
751 * Reads the adapter's MAC address from register
768 * i40e_get_port_mac_addr - get Port MAC address
770 * @mac_addr: pointer to Port MAC address
772 * Reads the adapter's Port MAC address
787 status = -EINVAL; in i40e_get_port_mac_addr()
793 * i40e_pre_tx_queue_cfg - pre tx queue configure
803 u32 abs_queue_idx = hw->func_caps.base_queue + queue; in i40e_pre_tx_queue_cfg()
825 * i40e_read_pba_string - Reads part number string from EEPROM
862 pba_size--; in i40e_read_pba_string()
865 return -EINVAL; in i40e_read_pba_string()
884 * i40e_get_media_type - Gets media type
891 switch (hw->phy.link_info.phy_type) { in i40e_get_media_type()
943 * i40e_poll_globr - Poll for Global Reset completion
962 return -EIO; in i40e_poll_globr()
968 * i40e_pf_reset - Reset the PF
1002 return -EIO; in i40e_pf_reset()
1021 return -EIO; in i40e_pf_reset()
1029 if (hw->revision_id == 0) in i40e_pf_reset()
1036 for (; cnt; cnt--) { in i40e_pf_reset()
1047 return -EIO; in i40e_pf_reset()
1050 return -EIO; in i40e_pf_reset()
1060 * i40e_clear_hw - clear out any left over hw state
1090 num_queues = (j - base_queue) + 1; in i40e_clear_hw()
1100 num_vfs = (j - i) + 1; in i40e_clear_hw()
1107 for (i = 0; i < num_pf_int - 2; i++) in i40e_clear_hw()
1113 for (i = 0; i < num_pf_int - 2; i++) in i40e_clear_hw()
1118 for (i = 0; i < num_vf_int - 2; i++) in i40e_clear_hw()
1153 * i40e_clear_pxe_mode - clear pxe operations mode
1157 * like descriptor fetch/write-back mode.
1166 /* Clear single descriptor fetch/write-back mode */ in i40e_clear_pxe_mode()
1169 if (hw->revision_id == 0) { in i40e_clear_pxe_mode()
1178 * i40e_led_is_mine - helper to find matching led
1189 if (!I40E_IS_X710TL_DEVICE(hw->device_id) && in i40e_led_is_mine()
1190 !hw->func_caps.led[idx]) in i40e_led_is_mine()
1200 (port != hw->port)) in i40e_led_is_mine()
1216 * i40e_led_get - return current on/off mode
1229 /* as per the documentation GPIO 22-29 are the LED in i40e_led_get()
1247 * i40e_led_set - set new on/off mode
1264 /* as per the documentation GPIO 22-29 are the LED in i40e_led_set()
1273 if (I40E_IS_X710TL_DEVICE(hw->device_id)) { in i40e_led_set()
1325 return -EINVAL; in i40e_aq_get_phy_capabilities()
1346 switch (hw->aq.asq_last_status) { in i40e_aq_get_phy_capabilities()
1348 status = -EIO; in i40e_aq_get_phy_capabilities()
1353 status = -EIO; in i40e_aq_get_phy_capabilities()
1360 } while ((hw->aq.asq_last_status == I40E_AQ_RC_EAGAIN) && in i40e_aq_get_phy_capabilities()
1367 if (hw->mac.type == I40E_MAC_XL710 && in i40e_aq_get_phy_capabilities()
1368 hw->aq.api_maj_ver == I40E_FW_API_VERSION_MAJOR && in i40e_aq_get_phy_capabilities()
1369 hw->aq.api_min_ver >= I40E_MINOR_VER_GET_LINK_INFO_XL710) { in i40e_aq_get_phy_capabilities()
1372 hw->phy.phy_types = le32_to_cpu(abilities->phy_type); in i40e_aq_get_phy_capabilities()
1373 hw->phy.phy_types |= in i40e_aq_get_phy_capabilities()
1374 ((u64)abilities->phy_type_ext << 32); in i40e_aq_get_phy_capabilities()
1403 return -EINVAL; in i40e_aq_set_phy_config()
1421 enum i40e_fc_mode fc_mode = hw->fc.requested_mode; in i40e_set_fc_status()
1441 config.abilities = abilities->abilities & ~(I40E_AQ_PHY_FLAG_PAUSE_TX) & in i40e_set_fc_status()
1446 if (config.abilities == abilities->abilities) in i40e_set_fc_status()
1453 config.phy_type = abilities->phy_type; in i40e_set_fc_status()
1454 config.phy_type_ext = abilities->phy_type_ext; in i40e_set_fc_status()
1455 config.link_speed = abilities->link_speed; in i40e_set_fc_status()
1456 config.eee_capability = abilities->eee_capability; in i40e_set_fc_status()
1457 config.eeer = abilities->eeer_val; in i40e_set_fc_status()
1458 config.low_power_ctrl = abilities->d3_lpan; in i40e_set_fc_status()
1459 config.fec_config = abilities->fec_cfg_curr_mod_ext_info & in i40e_set_fc_status()
1527 cmd->rx_cnt = 0x2; in i40e_aq_clear_pxe_mode()
1542 * Sets up the link and restarts the Auto-Negotiation over the link.
1556 cmd->command = I40E_AQ_PHY_RESTART_AN; in i40e_aq_set_link_restart_an()
1558 cmd->command |= I40E_AQ_PHY_LINK_ENABLE; in i40e_aq_set_link_restart_an()
1560 cmd->command &= ~I40E_AQ_PHY_LINK_ENABLE; in i40e_aq_set_link_restart_an()
1571 * @link: pointer to link status structure - optional
1583 struct i40e_link_status *hw_link_info = &hw->phy.link_info; in i40e_aq_get_link_info()
1594 resp->command_flags = cpu_to_le16(command_flags); in i40e_aq_get_link_info()
1602 hw->phy.link_info_old = *hw_link_info; in i40e_aq_get_link_info()
1605 hw_link_info->phy_type = (enum i40e_aq_phy_type)resp->phy_type; in i40e_aq_get_link_info()
1606 hw->phy.media_type = i40e_get_media_type(hw); in i40e_aq_get_link_info()
1607 hw_link_info->link_speed = (enum i40e_aq_link_speed)resp->link_speed; in i40e_aq_get_link_info()
1608 hw_link_info->link_info = resp->link_info; in i40e_aq_get_link_info()
1609 hw_link_info->an_info = resp->an_info; in i40e_aq_get_link_info()
1610 hw_link_info->fec_info = resp->config & (I40E_AQ_CONFIG_FEC_KR_ENA | in i40e_aq_get_link_info()
1612 hw_link_info->ext_info = resp->ext_info; in i40e_aq_get_link_info()
1613 hw_link_info->loopback = resp->loopback & I40E_AQ_LOOPBACK_MASK; in i40e_aq_get_link_info()
1614 hw_link_info->max_frame_size = le16_to_cpu(resp->max_frame_size); in i40e_aq_get_link_info()
1615 hw_link_info->pacing = resp->config & I40E_AQ_CONFIG_PACING_MASK; in i40e_aq_get_link_info()
1618 tx_pause = !!(resp->an_info & I40E_AQ_LINK_PAUSE_TX); in i40e_aq_get_link_info()
1619 rx_pause = !!(resp->an_info & I40E_AQ_LINK_PAUSE_RX); in i40e_aq_get_link_info()
1621 hw->fc.current_mode = I40E_FC_FULL; in i40e_aq_get_link_info()
1623 hw->fc.current_mode = I40E_FC_TX_PAUSE; in i40e_aq_get_link_info()
1625 hw->fc.current_mode = I40E_FC_RX_PAUSE; in i40e_aq_get_link_info()
1627 hw->fc.current_mode = I40E_FC_NONE; in i40e_aq_get_link_info()
1629 if (resp->config & I40E_AQ_CONFIG_CRC_ENA) in i40e_aq_get_link_info()
1630 hw_link_info->crc_enable = true; in i40e_aq_get_link_info()
1632 hw_link_info->crc_enable = false; in i40e_aq_get_link_info()
1634 if (resp->command_flags & cpu_to_le16(I40E_AQ_LSE_IS_ENABLED)) in i40e_aq_get_link_info()
1635 hw_link_info->lse_enable = true; in i40e_aq_get_link_info()
1637 hw_link_info->lse_enable = false; in i40e_aq_get_link_info()
1639 if ((hw->mac.type == I40E_MAC_XL710) && in i40e_aq_get_link_info()
1640 (hw->aq.fw_maj_ver < 4 || (hw->aq.fw_maj_ver == 4 && in i40e_aq_get_link_info()
1641 hw->aq.fw_min_ver < 40)) && hw_link_info->phy_type == 0xE) in i40e_aq_get_link_info()
1642 hw_link_info->phy_type = I40E_PHY_TYPE_10GBASE_SFPP_CU; in i40e_aq_get_link_info()
1644 if (hw->flags & I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE && in i40e_aq_get_link_info()
1645 hw->mac.type != I40E_MAC_X722) { in i40e_aq_get_link_info()
1648 memcpy(&tmp, resp->link_type, sizeof(tmp)); in i40e_aq_get_link_info()
1649 hw->phy.phy_types = le32_to_cpu(tmp); in i40e_aq_get_link_info()
1650 hw->phy.phy_types |= ((u64)resp->link_type_ext << 32); in i40e_aq_get_link_info()
1658 hw->phy.get_link_info = false; in i40e_aq_get_link_info()
1684 cmd->event_mask = cpu_to_le16(mask); in i40e_aq_set_phy_int_mask()
1708 if (hw->nvm.version <= I40E_LEGACY_LOOPBACK_NVM_VER) in i40e_aq_set_mac_loopback()
1709 cmd->lb_mode = cpu_to_le16(I40E_AQ_LB_MAC_LOCAL_LEGACY); in i40e_aq_set_mac_loopback()
1711 cmd->lb_mode = cpu_to_le16(I40E_AQ_LB_MAC_LOCAL); in i40e_aq_set_mac_loopback()
1736 cmd->command_flags = cmd_flags; in i40e_aq_set_phy_debug()
1754 return (aq->api_maj_ver > maj || in i40e_is_aq_api_ver_ge()
1755 (aq->api_maj_ver == maj && aq->api_min_ver >= min)); in i40e_is_aq_api_ver_ge()
1781 cmd->uplink_seid = cpu_to_le16(vsi_ctx->uplink_seid); in i40e_aq_add_vsi()
1782 cmd->connection_type = vsi_ctx->connection_type; in i40e_aq_add_vsi()
1783 cmd->vf_id = vsi_ctx->vf_num; in i40e_aq_add_vsi()
1784 cmd->vsi_flags = cpu_to_le16(vsi_ctx->flags); in i40e_aq_add_vsi()
1788 status = i40e_asq_send_command_atomic(hw, &desc, &vsi_ctx->info, in i40e_aq_add_vsi()
1789 sizeof(vsi_ctx->info), in i40e_aq_add_vsi()
1795 vsi_ctx->seid = le16_to_cpu(resp->seid); in i40e_aq_add_vsi()
1796 vsi_ctx->vsi_number = le16_to_cpu(resp->vsi_number); in i40e_aq_add_vsi()
1797 vsi_ctx->vsis_allocated = le16_to_cpu(resp->vsi_used); in i40e_aq_add_vsi()
1798 vsi_ctx->vsis_unallocated = le16_to_cpu(resp->vsi_free); in i40e_aq_add_vsi()
1823 cmd->promiscuous_flags = cpu_to_le16(I40E_AQC_SET_VSI_DEFAULT); in i40e_aq_set_default_vsi()
1824 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_DEFAULT); in i40e_aq_set_default_vsi()
1825 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_default_vsi()
1851 cmd->promiscuous_flags = cpu_to_le16(0); in i40e_aq_clear_default_vsi()
1852 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_DEFAULT); in i40e_aq_clear_default_vsi()
1853 cmd->seid = cpu_to_le16(seid); in i40e_aq_clear_default_vsi()
1884 if (rx_only_promisc && i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) in i40e_aq_set_vsi_unicast_promiscuous()
1888 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_unicast_promiscuous()
1890 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST); in i40e_aq_set_vsi_unicast_promiscuous()
1891 if (i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) in i40e_aq_set_vsi_unicast_promiscuous()
1892 cmd->valid_flags |= in i40e_aq_set_vsi_unicast_promiscuous()
1895 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_unicast_promiscuous()
1924 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_multicast_promiscuous()
1926 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_MULTICAST); in i40e_aq_set_vsi_multicast_promiscuous()
1928 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_multicast_promiscuous()
1938 * @enable: set MAC L2 layer unicast promiscuous enable/disable for a given VLAN
1939 * @vid: The VLAN tag filter - capture any multicast packet with this VLAN tag
1959 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_mc_promisc_on_vlan()
1960 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_MULTICAST); in i40e_aq_set_vsi_mc_promisc_on_vlan()
1961 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_mc_promisc_on_vlan()
1962 cmd->vlan_tag = cpu_to_le16(vid | I40E_AQC_SET_VSI_VLAN_VALID); in i40e_aq_set_vsi_mc_promisc_on_vlan()
1974 * @enable: set MAC L2 layer unicast promiscuous enable/disable for a given VLAN
1975 * @vid: The VLAN tag filter - capture any unicast packet with this VLAN tag
1994 if (i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) in i40e_aq_set_vsi_uc_promisc_on_vlan()
1998 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_uc_promisc_on_vlan()
1999 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_UNICAST); in i40e_aq_set_vsi_uc_promisc_on_vlan()
2000 if (i40e_is_aq_api_ver_ge(&hw->aq, 1, 5)) in i40e_aq_set_vsi_uc_promisc_on_vlan()
2001 cmd->valid_flags |= in i40e_aq_set_vsi_uc_promisc_on_vlan()
2003 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_uc_promisc_on_vlan()
2004 cmd->vlan_tag = cpu_to_le16(vid | I40E_AQC_SET_VSI_VLAN_VALID); in i40e_aq_set_vsi_uc_promisc_on_vlan()
2017 * @vid: The VLAN tag filter - capture any broadcast packet with this VLAN tag
2036 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_bc_promisc_on_vlan()
2037 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_BROADCAST); in i40e_aq_set_vsi_bc_promisc_on_vlan()
2038 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_bc_promisc_on_vlan()
2039 cmd->vlan_tag = cpu_to_le16(vid | I40E_AQC_SET_VSI_VLAN_VALID); in i40e_aq_set_vsi_bc_promisc_on_vlan()
2068 cmd->promiscuous_flags in i40e_aq_set_vsi_broadcast()
2071 cmd->promiscuous_flags in i40e_aq_set_vsi_broadcast()
2074 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_BROADCAST); in i40e_aq_set_vsi_broadcast()
2075 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_broadcast()
2082 * i40e_aq_set_vsi_vlan_promisc - control the VLAN promiscuous setting
2085 * @enable: set MAC L2 layer unicast promiscuous enable/disable for a given VLAN
2103 cmd->promiscuous_flags = cpu_to_le16(flags); in i40e_aq_set_vsi_vlan_promisc()
2104 cmd->valid_flags = cpu_to_le16(I40E_AQC_SET_VSI_PROMISC_VLAN); in i40e_aq_set_vsi_vlan_promisc()
2105 cmd->seid = cpu_to_le16(seid); in i40e_aq_set_vsi_vlan_promisc()
2113 * i40e_aq_get_vsi_params - get VSI configuration info
2133 cmd->uplink_seid = cpu_to_le16(vsi_ctx->seid); in i40e_aq_get_vsi_params()
2137 status = i40e_asq_send_command(hw, &desc, &vsi_ctx->info, in i40e_aq_get_vsi_params()
2138 sizeof(vsi_ctx->info), NULL); in i40e_aq_get_vsi_params()
2143 vsi_ctx->seid = le16_to_cpu(resp->seid); in i40e_aq_get_vsi_params()
2144 vsi_ctx->vsi_number = le16_to_cpu(resp->vsi_number); in i40e_aq_get_vsi_params()
2145 vsi_ctx->vsis_allocated = le16_to_cpu(resp->vsi_used); in i40e_aq_get_vsi_params()
2146 vsi_ctx->vsis_unallocated = le16_to_cpu(resp->vsi_free); in i40e_aq_get_vsi_params()
2174 cmd->uplink_seid = cpu_to_le16(vsi_ctx->seid); in i40e_aq_update_vsi_params()
2178 status = i40e_asq_send_command_atomic(hw, &desc, &vsi_ctx->info, in i40e_aq_update_vsi_params()
2179 sizeof(vsi_ctx->info), in i40e_aq_update_vsi_params()
2182 vsi_ctx->vsis_allocated = le16_to_cpu(resp->vsi_used); in i40e_aq_update_vsi_params()
2183 vsi_ctx->vsis_unallocated = le16_to_cpu(resp->vsi_free); in i40e_aq_update_vsi_params()
2213 scfg->seid = cpu_to_le16(*start_seid); in i40e_aq_get_switch_config()
2216 *start_seid = le16_to_cpu(scfg->seid); in i40e_aq_get_switch_config()
2244 scfg->flags = cpu_to_le16(flags); in i40e_aq_set_switch_config()
2245 scfg->valid_flags = cpu_to_le16(valid_flags); in i40e_aq_set_switch_config()
2246 scfg->mode = mode; in i40e_aq_set_switch_config()
2247 if (hw->flags & I40E_HW_FLAG_802_1AD_CAPABLE) { in i40e_aq_set_switch_config()
2248 scfg->switch_tag = cpu_to_le16(hw->switch_tag); in i40e_aq_set_switch_config()
2249 scfg->first_tag = cpu_to_le16(hw->first_tag); in i40e_aq_set_switch_config()
2250 scfg->second_tag = cpu_to_le16(hw->second_tag); in i40e_aq_set_switch_config()
2286 *fw_major_version = le16_to_cpu(resp->fw_major); in i40e_aq_get_firmware_version()
2288 *fw_minor_version = le16_to_cpu(resp->fw_minor); in i40e_aq_get_firmware_version()
2290 *fw_build = le32_to_cpu(resp->fw_build); in i40e_aq_get_firmware_version()
2292 *api_major_version = le16_to_cpu(resp->api_major); in i40e_aq_get_firmware_version()
2294 *api_minor_version = le16_to_cpu(resp->api_minor); in i40e_aq_get_firmware_version()
2319 return -EINVAL; in i40e_aq_send_driver_version()
2324 cmd->driver_major_ver = dv->major_version; in i40e_aq_send_driver_version()
2325 cmd->driver_minor_ver = dv->minor_version; in i40e_aq_send_driver_version()
2326 cmd->driver_build_ver = dv->build_version; in i40e_aq_send_driver_version()
2327 cmd->driver_subbuild_ver = dv->subbuild_version; in i40e_aq_send_driver_version()
2330 while (len < sizeof(dv->driver_string) && in i40e_aq_send_driver_version()
2331 (dv->driver_string[len] < 0x80) && in i40e_aq_send_driver_version()
2332 dv->driver_string[len]) in i40e_aq_send_driver_version()
2334 status = i40e_asq_send_command(hw, &desc, dv->driver_string, in i40e_aq_send_driver_version()
2341 * i40e_get_link_status - get status of the HW network link
2354 if (hw->phy.get_link_info) { in i40e_get_link_status()
2362 *link_up = hw->phy.link_info.link_info & I40E_AQ_LINK_UP; in i40e_get_link_status()
2368 * i40e_update_link_info - update status of the HW network link
2381 if ((hw->phy.link_info.link_info & I40E_AQ_MEDIA_AVAILABLE) && in i40e_update_link_info()
2382 ((hw->phy.link_info.link_info & I40E_AQ_LINK_UP) || in i40e_update_link_info()
2383 !(hw->phy.link_info_old.link_info & I40E_AQ_LINK_UP))) { in i40e_update_link_info()
2391 hw->phy.link_info.req_fec_info = in i40e_update_link_info()
2395 hw->phy.link_info.req_fec_info = in i40e_update_link_info()
2400 memcpy(hw->phy.link_info.module_type, &abilities.module_type, in i40e_update_link_info()
2401 sizeof(hw->phy.link_info.module_type)); in i40e_update_link_info()
2408 * i40e_aq_add_veb - Insert a VEB between the VSI and the MAC
2410 * @uplink_seid: the MAC or other gizmo SEID
2437 return -EINVAL; in i40e_aq_add_veb()
2441 cmd->uplink_seid = cpu_to_le16(uplink_seid); in i40e_aq_add_veb()
2442 cmd->downlink_seid = cpu_to_le16(downlink_seid); in i40e_aq_add_veb()
2443 cmd->enable_tcs = enabled_tc; in i40e_aq_add_veb()
2455 cmd->veb_flags = cpu_to_le16(veb_flags); in i40e_aq_add_veb()
2460 *veb_seid = le16_to_cpu(resp->veb_seid); in i40e_aq_add_veb()
2466 * i40e_aq_get_veb_parameters - Retrieve VEB parameters
2492 return -EINVAL; in i40e_aq_get_veb_parameters()
2496 cmd_resp->seid = cpu_to_le16(veb_seid); in i40e_aq_get_veb_parameters()
2503 *switch_id = le16_to_cpu(cmd_resp->switch_id); in i40e_aq_get_veb_parameters()
2505 *statistic_index = le16_to_cpu(cmd_resp->statistic_index); in i40e_aq_get_veb_parameters()
2507 *vebs_used = le16_to_cpu(cmd_resp->vebs_used); in i40e_aq_get_veb_parameters()
2509 *vebs_free = le16_to_cpu(cmd_resp->vebs_free); in i40e_aq_get_veb_parameters()
2511 u16 flags = le16_to_cpu(cmd_resp->veb_flags); in i40e_aq_get_veb_parameters()
2528 * @seid: VSI for the mac address
2538 (struct i40e_aqc_macvlan *)&desc->params.raw; in i40e_prepare_add_macvlan()
2546 cmd->num_addresses = cpu_to_le16(count); in i40e_prepare_add_macvlan()
2547 cmd->seid[0] = cpu_to_le16(I40E_AQC_MACVLAN_CMD_SEID_VALID | seid); in i40e_prepare_add_macvlan()
2548 cmd->seid[1] = 0; in i40e_prepare_add_macvlan()
2549 cmd->seid[2] = 0; in i40e_prepare_add_macvlan()
2556 desc->flags |= cpu_to_le16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD)); in i40e_prepare_add_macvlan()
2558 desc->flags |= cpu_to_le16((u16)I40E_AQ_FLAG_LB); in i40e_prepare_add_macvlan()
2566 * @seid: VSI for the mac address
2571 * Add MAC/VLAN addresses to the HW filtering
2582 return -EINVAL; in i40e_aq_add_macvlan()
2593 * @seid: VSI for the mac address
2599 * Add MAC/VLAN addresses to the HW filtering.
2601 * to avoid race conditions in access to hw->aq.asq_last_status.
2615 return -EINVAL; in i40e_aq_add_macvlan_v2()
2626 * @seid: VSI for the mac address
2631 * Remove MAC/VLAN addresses from the HW filtering
2645 return -EINVAL; in i40e_aq_remove_macvlan()
2651 cmd->num_addresses = cpu_to_le16(count); in i40e_aq_remove_macvlan()
2652 cmd->seid[0] = cpu_to_le16(I40E_AQC_MACVLAN_CMD_SEID_VALID | seid); in i40e_aq_remove_macvlan()
2653 cmd->seid[1] = 0; in i40e_aq_remove_macvlan()
2654 cmd->seid[2] = 0; in i40e_aq_remove_macvlan()
2669 * @seid: VSI for the mac address
2675 * Remove MAC/VLAN addresses from the HW filtering.
2677 * to avoid race conditions in access to hw->aq.asq_last_status.
2692 return -EINVAL; in i40e_aq_remove_macvlan_v2()
2699 cmd->num_addresses = cpu_to_le16(count); in i40e_aq_remove_macvlan_v2()
2700 cmd->seid[0] = cpu_to_le16(I40E_AQC_MACVLAN_CMD_SEID_VALID | seid); in i40e_aq_remove_macvlan_v2()
2701 cmd->seid[1] = 0; in i40e_aq_remove_macvlan_v2()
2702 cmd->seid[2] = 0; in i40e_aq_remove_macvlan_v2()
2713 * i40e_mirrorrule_op - Internal helper function to add/delete mirror rule
2747 cmd->seid = cpu_to_le16(sw_seid); in i40e_mirrorrule_op()
2748 cmd->rule_type = cpu_to_le16(rule_type & in i40e_mirrorrule_op()
2750 cmd->num_entries = cpu_to_le16(count); in i40e_mirrorrule_op()
2752 cmd->destination = cpu_to_le16(id); in i40e_mirrorrule_op()
2763 hw->aq.asq_last_status == I40E_AQ_RC_ENOSPC) { in i40e_mirrorrule_op()
2765 *rule_id = le16_to_cpu(resp->rule_id); in i40e_mirrorrule_op()
2767 *rules_used = le16_to_cpu(resp->mirror_rules_used); in i40e_mirrorrule_op()
2769 *rules_free = le16_to_cpu(resp->mirror_rules_free); in i40e_mirrorrule_op()
2775 * i40e_aq_add_mirrorrule - add a mirror rule
2798 return -EINVAL; in i40e_aq_add_mirrorrule()
2807 * i40e_aq_delete_mirrorrule - delete a mirror rule
2834 return -EINVAL; in i40e_aq_delete_mirrorrule()
2846 * @v_opcode: opcodes for VF-PF communication
2864 cmd->id = cpu_to_le32(vfid); in i40e_aq_send_msg_to_vf()
2899 return -EINVAL; in i40e_aq_debug_read_register()
2903 cmd_resp->address = cpu_to_le32(reg_addr); in i40e_aq_debug_read_register()
2908 *reg_val = ((u64)le32_to_cpu(cmd_resp->value_high) << 32) | in i40e_aq_debug_read_register()
2909 (u64)le32_to_cpu(cmd_resp->value_low); in i40e_aq_debug_read_register()
2935 cmd->address = cpu_to_le32(reg_addr); in i40e_aq_debug_write_register()
2936 cmd->value_high = cpu_to_le32((u32)(reg_val >> 32)); in i40e_aq_debug_write_register()
2937 cmd->value_low = cpu_to_le32((u32)(reg_val & 0xFFFFFFFF)); in i40e_aq_debug_write_register()
2968 cmd_resp->resource_id = cpu_to_le16(resource); in i40e_aq_request_resource()
2969 cmd_resp->access_type = cpu_to_le16(access); in i40e_aq_request_resource()
2970 cmd_resp->resource_number = cpu_to_le32(sdp_number); in i40e_aq_request_resource()
2979 if (!status || hw->aq.asq_last_status == I40E_AQ_RC_EBUSY) in i40e_aq_request_resource()
2980 *timeout = le32_to_cpu(cmd_resp->timeout); in i40e_aq_request_resource()
3006 cmd->resource_id = cpu_to_le16(resource); in i40e_aq_release_resource()
3007 cmd->resource_number = cpu_to_le32(sdp_number); in i40e_aq_release_resource()
3038 status = -EINVAL; in i40e_aq_read_nvm()
3046 cmd->command_flags |= I40E_AQ_NVM_LAST_CMD; in i40e_aq_read_nvm()
3047 cmd->module_pointer = module_pointer; in i40e_aq_read_nvm()
3048 cmd->offset = cpu_to_le32(offset); in i40e_aq_read_nvm()
3049 cmd->length = cpu_to_le16(length); in i40e_aq_read_nvm()
3083 status = -EINVAL; in i40e_aq_erase_nvm()
3091 cmd->command_flags |= I40E_AQ_NVM_LAST_CMD; in i40e_aq_erase_nvm()
3092 cmd->module_pointer = module_pointer; in i40e_aq_erase_nvm()
3093 cmd->offset = cpu_to_le32(offset); in i40e_aq_erase_nvm()
3094 cmd->length = cpu_to_le16(length); in i40e_aq_erase_nvm()
3127 p = &hw->dev_caps; in i40e_parse_discover_capabilities()
3129 p = &hw->func_caps; in i40e_parse_discover_capabilities()
3134 id = le16_to_cpu(cap->id); in i40e_parse_discover_capabilities()
3135 number = le32_to_cpu(cap->number); in i40e_parse_discover_capabilities()
3136 logical_id = le32_to_cpu(cap->logical_id); in i40e_parse_discover_capabilities()
3137 phys_id = le32_to_cpu(cap->phys_id); in i40e_parse_discover_capabilities()
3138 major_rev = cap->major_rev; in i40e_parse_discover_capabilities()
3142 p->switch_mode = number; in i40e_parse_discover_capabilities()
3145 p->management_mode = number; in i40e_parse_discover_capabilities()
3147 p->mng_protocols_over_mctp = logical_id; in i40e_parse_discover_capabilities()
3150 p->mng_protocols_over_mctp); in i40e_parse_discover_capabilities()
3152 p->mng_protocols_over_mctp = 0; in i40e_parse_discover_capabilities()
3156 p->npar_enable = number; in i40e_parse_discover_capabilities()
3159 p->os2bmc = number; in i40e_parse_discover_capabilities()
3162 p->valid_functions = number; in i40e_parse_discover_capabilities()
3166 p->sr_iov_1_1 = true; in i40e_parse_discover_capabilities()
3169 p->num_vfs = number; in i40e_parse_discover_capabilities()
3170 p->vf_base_id = logical_id; in i40e_parse_discover_capabilities()
3174 p->vmdq = true; in i40e_parse_discover_capabilities()
3178 p->evb_802_1_qbg = true; in i40e_parse_discover_capabilities()
3182 p->evb_802_1_qbh = true; in i40e_parse_discover_capabilities()
3185 p->num_vsis = number; in i40e_parse_discover_capabilities()
3189 p->dcb = true; in i40e_parse_discover_capabilities()
3190 p->enabled_tcmap = logical_id; in i40e_parse_discover_capabilities()
3191 p->maxtc = phys_id; in i40e_parse_discover_capabilities()
3196 p->fcoe = true; in i40e_parse_discover_capabilities()
3200 p->iscsi = true; in i40e_parse_discover_capabilities()
3203 p->rss = true; in i40e_parse_discover_capabilities()
3204 p->rss_table_size = number; in i40e_parse_discover_capabilities()
3205 p->rss_table_entry_width = logical_id; in i40e_parse_discover_capabilities()
3208 p->num_rx_qp = number; in i40e_parse_discover_capabilities()
3209 p->base_queue = phys_id; in i40e_parse_discover_capabilities()
3212 p->num_tx_qp = number; in i40e_parse_discover_capabilities()
3213 p->base_queue = phys_id; in i40e_parse_discover_capabilities()
3216 p->num_msix_vectors = number; in i40e_parse_discover_capabilities()
3219 p->num_msix_vectors); in i40e_parse_discover_capabilities()
3222 p->num_msix_vectors_vf = number; in i40e_parse_discover_capabilities()
3227 p->flex10_enable = true; in i40e_parse_discover_capabilities()
3228 p->flex10_capable = true; in i40e_parse_discover_capabilities()
3233 p->flex10_enable = true; in i40e_parse_discover_capabilities()
3235 p->flex10_capable = true; in i40e_parse_discover_capabilities()
3237 p->flex10_mode = logical_id; in i40e_parse_discover_capabilities()
3238 p->flex10_status = phys_id; in i40e_parse_discover_capabilities()
3242 p->mgmt_cem = true; in i40e_parse_discover_capabilities()
3246 p->iwarp = true; in i40e_parse_discover_capabilities()
3250 p->led[phys_id] = true; in i40e_parse_discover_capabilities()
3254 p->sdp[phys_id] = true; in i40e_parse_discover_capabilities()
3258 p->mdio_port_num = phys_id; in i40e_parse_discover_capabilities()
3259 p->mdio_port_mode = logical_id; in i40e_parse_discover_capabilities()
3264 p->ieee_1588 = true; in i40e_parse_discover_capabilities()
3267 p->fd = true; in i40e_parse_discover_capabilities()
3268 p->fd_filters_guaranteed = number; in i40e_parse_discover_capabilities()
3269 p->fd_filters_best_effort = logical_id; in i40e_parse_discover_capabilities()
3272 p->wr_csr_prot = (u64)number; in i40e_parse_discover_capabilities()
3273 p->wr_csr_prot |= (u64)logical_id << 32; in i40e_parse_discover_capabilities()
3277 p->sec_rev_disabled = true; in i40e_parse_discover_capabilities()
3279 p->update_disabled = true; in i40e_parse_discover_capabilities()
3286 if (p->fcoe) in i40e_parse_discover_capabilities()
3292 if (p->npar_enable || p->flex10_enable) in i40e_parse_discover_capabilities()
3293 p->fcoe = false; in i40e_parse_discover_capabilities()
3296 hw->num_ports = 0; in i40e_parse_discover_capabilities()
3306 hw->num_ports++; in i40e_parse_discover_capabilities()
3316 if (hw->mac.type == I40E_MAC_X722) { in i40e_parse_discover_capabilities()
3324 hw->num_ports = 4; in i40e_parse_discover_capabilities()
3329 valid_functions = p->valid_functions; in i40e_parse_discover_capabilities()
3337 /* partition id is 1-based, and functions are evenly spread in i40e_parse_discover_capabilities()
3340 if (hw->num_ports != 0) { in i40e_parse_discover_capabilities()
3341 hw->partition_id = (hw->pf_id / hw->num_ports) + 1; in i40e_parse_discover_capabilities()
3342 hw->num_partitions = num_functions / hw->num_ports; in i40e_parse_discover_capabilities()
3348 p->rx_buf_chain_len = I40E_MAX_CHAINED_RX_BUFFERS; in i40e_parse_discover_capabilities()
3357 * @list_type_opc: capabilities type to discover - pass in the command opcode
3375 status = -EINVAL; in i40e_aq_discover_capabilities()
3391 i40e_parse_discover_capabilities(hw, buff, le32_to_cpu(cmd->count), in i40e_aq_discover_capabilities()
3423 status = -EINVAL; in i40e_aq_update_nvm()
3431 cmd->command_flags |= I40E_AQ_NVM_LAST_CMD; in i40e_aq_update_nvm()
3432 if (hw->mac.type == I40E_MAC_X722) { in i40e_aq_update_nvm()
3434 cmd->command_flags |= in i40e_aq_update_nvm()
3438 cmd->command_flags |= in i40e_aq_update_nvm()
3442 cmd->module_pointer = module_pointer; in i40e_aq_update_nvm()
3443 cmd->offset = cpu_to_le32(offset); in i40e_aq_update_nvm()
3444 cmd->length = cpu_to_le16(length); in i40e_aq_update_nvm()
3480 status = -EINVAL; in i40e_aq_rearrange_nvm()
3484 cmd->command_flags |= rearrange_nvm; in i40e_aq_rearrange_nvm()
3517 return -EINVAL; in i40e_aq_get_lldp_mib()
3523 cmd->type = mib_type & I40E_AQ_LLDP_MIB_TYPE_MASK; in i40e_aq_get_lldp_mib()
3524 cmd->type |= ((bridge_type << I40E_AQ_LLDP_BRIDGE_TYPE_SHIFT) & in i40e_aq_get_lldp_mib()
3536 *local_len = le16_to_cpu(resp->local_len); in i40e_aq_get_lldp_mib()
3538 *remote_len = le16_to_cpu(resp->remote_len); in i40e_aq_get_lldp_mib()
3545 * i40e_aq_set_lldp_mib - Set the LLDP MIB
3565 return -EINVAL; in i40e_aq_set_lldp_mib()
3575 cmd->type = mib_type; in i40e_aq_set_lldp_mib()
3576 cmd->length = cpu_to_le16(buff_size); in i40e_aq_set_lldp_mib()
3577 cmd->address_high = cpu_to_le32(upper_32_bits((uintptr_t)buff)); in i40e_aq_set_lldp_mib()
3578 cmd->address_low = cpu_to_le32(lower_32_bits((uintptr_t)buff)); in i40e_aq_set_lldp_mib()
3605 cmd->command |= I40E_AQ_LLDP_MIB_UPDATE_DISABLE; in i40e_aq_cfg_lldp_mib_change_event()
3631 if (!(hw->flags & I40E_HW_FLAG_FW_LLDP_PERSISTENT)) { in i40e_aq_restore_lldp()
3634 return -ENODEV; in i40e_aq_restore_lldp()
3640 cmd->command |= I40E_AQ_LLDP_AGENT_RESTORE; in i40e_aq_restore_lldp()
3645 *setting = cmd->command & 1; in i40e_aq_restore_lldp()
3671 cmd->command |= I40E_AQ_LLDP_AGENT_SHUTDOWN; in i40e_aq_stop_lldp()
3674 if (hw->flags & I40E_HW_FLAG_FW_LLDP_PERSISTENT) in i40e_aq_stop_lldp()
3675 cmd->command |= I40E_AQ_LLDP_AGENT_STOP_PERSIST; in i40e_aq_stop_lldp()
3704 cmd->command = I40E_AQ_LLDP_AGENT_START; in i40e_aq_start_lldp()
3707 if (hw->flags & I40E_HW_FLAG_FW_LLDP_PERSISTENT) in i40e_aq_start_lldp()
3708 cmd->command |= I40E_AQ_LLDP_AGENT_START_PERSIST; in i40e_aq_start_lldp()
3735 if (!(hw->flags & I40E_HW_FLAG_FW_LLDP_STOPPABLE)) in i40e_aq_set_dcb_parameters()
3736 return -ENODEV; in i40e_aq_set_dcb_parameters()
3742 cmd->valid_flags = I40E_DCB_VALID; in i40e_aq_set_dcb_parameters()
3743 cmd->command = I40E_AQ_DCB_SET_AGENT; in i40e_aq_set_dcb_parameters()
3767 return -EINVAL; in i40e_aq_get_cee_dcb_config()
3804 cmd->udp_port = cpu_to_le16(udp_port); in i40e_aq_add_udp_tunnel()
3805 cmd->protocol_type = protocol_index; in i40e_aq_add_udp_tunnel()
3810 *filter_index = resp->index; in i40e_aq_add_udp_tunnel()
3831 cmd->index = index; in i40e_aq_del_udp_tunnel()
3839 * i40e_aq_delete_element - Delete switch element
3855 return -EINVAL; in i40e_aq_delete_element()
3859 cmd->seid = cpu_to_le16(seid); in i40e_aq_delete_element()
3868 * i40e_aq_dcb_updated - DCB Updated Command
3890 * i40e_aq_tx_sched_cmd - generic Tx scheduler AQ command handler
3929 return -EINVAL; in i40e_aq_tx_sched_cmd()
3943 cmd->vsi_seid = cpu_to_le16(seid); in i40e_aq_tx_sched_cmd()
3951 * i40e_aq_config_vsi_bw_limit - Configure VSI BW Limit
3970 cmd->vsi_seid = cpu_to_le16(seid); in i40e_aq_config_vsi_bw_limit()
3971 cmd->credit = cpu_to_le16(credit); in i40e_aq_config_vsi_bw_limit()
3972 cmd->max_credit = max_credit; in i40e_aq_config_vsi_bw_limit()
3980 * i40e_aq_config_vsi_tc_bw - Config VSI BW Allocation per TC
3997 * i40e_aq_config_switch_comp_ets - Enable/Disable/Modify ETS on the port
4016 * i40e_aq_config_switch_comp_bw_config - Config Switch comp BW Alloc per TC
4034 * i40e_aq_query_vsi_bw_config - Query VSI BW configuration
4052 * i40e_aq_query_vsi_ets_sla_config - Query VSI BW configuration per TC
4070 * i40e_aq_query_switch_comp_ets_config - Query Switch comp BW config per TC
4088 * i40e_aq_query_port_ets_config - Query Physical Port ETS configuration
4106 * i40e_aq_query_switch_comp_bw_config - Query Switch comp BW configuration
4144 switch (settings->fcoe_filt_num) { in i40e_validate_filter_settings()
4152 fcoe_filt_size <<= (u32)settings->fcoe_filt_num; in i40e_validate_filter_settings()
4155 return -EINVAL; in i40e_validate_filter_settings()
4158 switch (settings->fcoe_cntx_num) { in i40e_validate_filter_settings()
4164 fcoe_cntx_size <<= (u32)settings->fcoe_cntx_num; in i40e_validate_filter_settings()
4167 return -EINVAL; in i40e_validate_filter_settings()
4171 switch (settings->pe_filt_num) { in i40e_validate_filter_settings()
4185 return -EINVAL; in i40e_validate_filter_settings()
4188 switch (settings->pe_cntx_num) { in i40e_validate_filter_settings()
4201 return -EINVAL; in i40e_validate_filter_settings()
4209 return -EINVAL; in i40e_validate_filter_settings()
4231 return -EINVAL; in i40e_set_filter_control()
4243 val |= ((u32)settings->pe_filt_num << I40E_PFQF_CTL_0_PEHSIZE_SHIFT) & in i40e_set_filter_control()
4247 val |= ((u32)settings->pe_cntx_num << I40E_PFQF_CTL_0_PEDSIZE_SHIFT) & in i40e_set_filter_control()
4252 val |= ((u32)settings->fcoe_filt_num << in i40e_set_filter_control()
4257 val |= ((u32)settings->fcoe_cntx_num << in i40e_set_filter_control()
4263 if (settings->hash_lut_size == I40E_HASH_LUT_SIZE_512) in i40e_set_filter_control()
4269 if (settings->enable_fdir) in i40e_set_filter_control()
4271 if (settings->enable_ethtype) in i40e_set_filter_control()
4273 if (settings->enable_macvlan) in i40e_set_filter_control()
4282 * i40e_aq_add_rem_control_packet_filter - Add or Remove Control Packet Filter
4284 * @mac_addr: MAC address to use in the filter
4313 return -EINVAL; in i40e_aq_add_rem_control_packet_filter()
4318 cmd->queue = cpu_to_le16(queue); in i40e_aq_add_rem_control_packet_filter()
4325 ether_addr_copy(cmd->mac, mac_addr); in i40e_aq_add_rem_control_packet_filter()
4327 cmd->etype = cpu_to_le16(ethtype); in i40e_aq_add_rem_control_packet_filter()
4328 cmd->flags = cpu_to_le16(flags); in i40e_aq_add_rem_control_packet_filter()
4329 cmd->seid = cpu_to_le16(vsi_seid); in i40e_aq_add_rem_control_packet_filter()
4334 stats->mac_etype_used = le16_to_cpu(resp->mac_etype_used); in i40e_aq_add_rem_control_packet_filter()
4335 stats->etype_used = le16_to_cpu(resp->etype_used); in i40e_aq_add_rem_control_packet_filter()
4336 stats->mac_etype_free = le16_to_cpu(resp->mac_etype_free); in i40e_aq_add_rem_control_packet_filter()
4337 stats->etype_free = le16_to_cpu(resp->etype_free); in i40e_aq_add_rem_control_packet_filter()
4344 * i40e_add_filter_to_drop_tx_flow_control_frames- filter to drop flow control
4388 return -EINVAL; in i40e_aq_alternate_read()
4391 cmd_resp->address0 = cpu_to_le32(reg_addr0); in i40e_aq_alternate_read()
4392 cmd_resp->address1 = cpu_to_le32(reg_addr1); in i40e_aq_alternate_read()
4397 *reg_val0 = le32_to_cpu(cmd_resp->data0); in i40e_aq_alternate_read()
4400 *reg_val1 = le32_to_cpu(cmd_resp->data1); in i40e_aq_alternate_read()
4423 cmd->vsi_seid = cpu_to_le16(seid); in i40e_aq_suspend_port_tx()
4450 * i40e_set_pci_config_data - store PCI bus info
4458 hw->bus.type = i40e_bus_type_pci_express; in i40e_set_pci_config_data()
4462 hw->bus.width = i40e_bus_width_pcie_x1; in i40e_set_pci_config_data()
4465 hw->bus.width = i40e_bus_width_pcie_x2; in i40e_set_pci_config_data()
4468 hw->bus.width = i40e_bus_width_pcie_x4; in i40e_set_pci_config_data()
4471 hw->bus.width = i40e_bus_width_pcie_x8; in i40e_set_pci_config_data()
4474 hw->bus.width = i40e_bus_width_unknown; in i40e_set_pci_config_data()
4480 hw->bus.speed = i40e_bus_speed_2500; in i40e_set_pci_config_data()
4483 hw->bus.speed = i40e_bus_speed_5000; in i40e_set_pci_config_data()
4486 hw->bus.speed = i40e_bus_speed_8000; in i40e_set_pci_config_data()
4489 hw->bus.speed = i40e_bus_speed_unknown; in i40e_set_pci_config_data()
4524 return -EINVAL; in i40e_aq_debug_dump()
4533 cmd->cluster_id = cluster_id; in i40e_aq_debug_dump()
4534 cmd->table_id = table_id; in i40e_aq_debug_dump()
4535 cmd->idx = cpu_to_le32(start_index); in i40e_aq_debug_dump()
4544 *ret_next_table = resp->table_id; in i40e_aq_debug_dump()
4546 *ret_next_index = le32_to_cpu(resp->idx); in i40e_aq_debug_dump()
4572 (I40E_ALT_STRUCT_DWORDS_PER_PF * hw->pf_id); in i40e_read_bw_from_alt_ram()
4575 (I40E_ALT_STRUCT_DWORDS_PER_PF * hw->pf_id); in i40e_read_bw_from_alt_ram()
4641 u8 port_num = (u8)hw->func_caps.mdio_port_num; in i40e_read_phy_register_clause22()
4642 int status = -EIO; in i40e_read_phy_register_clause22()
4659 retry--; in i40e_read_phy_register_clause22()
4686 u8 port_num = (u8)hw->func_caps.mdio_port_num; in i40e_write_phy_register_clause22()
4687 int status = -EIO; in i40e_write_phy_register_clause22()
4708 retry--; in i40e_write_phy_register_clause22()
4727 u8 port_num = hw->func_caps.mdio_port_num; in i40e_read_phy_register_clause45()
4728 int status = -EIO; in i40e_read_phy_register_clause45()
4747 retry--; in i40e_read_phy_register_clause45()
4762 status = -EIO; in i40e_read_phy_register_clause45()
4772 retry--; in i40e_read_phy_register_clause45()
4801 u8 port_num = hw->func_caps.mdio_port_num; in i40e_write_phy_register_clause45()
4802 int status = -EIO; in i40e_write_phy_register_clause45()
4821 retry--; in i40e_write_phy_register_clause45()
4838 status = -EIO; in i40e_write_phy_register_clause45()
4848 retry--; in i40e_write_phy_register_clause45()
4870 switch (hw->device_id) { in i40e_write_phy_register()
4887 status = -EIO; in i40e_write_phy_register()
4909 switch (hw->device_id) { in i40e_read_phy_register()
4926 status = -EIO; in i40e_read_phy_register()
4942 u8 port_num = hw->func_caps.mdio_port_num; in i40e_get_phy_address()
5023 * i40e_led_get_reg - read LED register
5037 if (hw->flags & I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE) { in i40e_led_get_reg()
5057 * i40e_led_set_reg - write LED register
5070 if (hw->flags & I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE) { in i40e_led_set_reg()
5091 * i40e_led_get_phy - return current on/off mode
5109 if (hw->flags & I40E_HW_FLAG_AQ_PHY_ACCESS_CAPABLE) { in i40e_led_get_phy()
5192 * i40e_aq_rx_ctl_read_register - use FW to read from an Rx control register
5211 return -EINVAL; in i40e_aq_rx_ctl_read_register()
5215 cmd_resp->address = cpu_to_le32(reg_addr); in i40e_aq_rx_ctl_read_register()
5220 *reg_val = le32_to_cpu(cmd_resp->value); in i40e_aq_rx_ctl_read_register()
5226 * i40e_read_rx_ctl - read from an Rx control register
5237 use_register = (((hw->aq.api_maj_ver == 1) && in i40e_read_rx_ctl()
5238 (hw->aq.api_min_ver < 5)) || in i40e_read_rx_ctl()
5239 (hw->mac.type == I40E_MAC_X722)); in i40e_read_rx_ctl()
5243 if (hw->aq.asq_last_status == I40E_AQ_RC_EAGAIN && retry) { in i40e_read_rx_ctl()
5245 retry--; in i40e_read_rx_ctl()
5250 /* if the AQ access failed, try the old-fashioned way */ in i40e_read_rx_ctl()
5278 cmd->address = cpu_to_le32(reg_addr); in i40e_aq_rx_ctl_write_register()
5279 cmd->value = cpu_to_le32(reg_val); in i40e_aq_rx_ctl_write_register()
5287 * i40e_write_rx_ctl - write to an Rx control register
5298 use_register = (((hw->aq.api_maj_ver == 1) && in i40e_write_rx_ctl()
5299 (hw->aq.api_min_ver < 5)) || in i40e_write_rx_ctl()
5300 (hw->mac.type == I40E_MAC_X722)); in i40e_write_rx_ctl()
5305 if (hw->aq.asq_last_status == I40E_AQ_RC_EAGAIN && retry) { in i40e_write_rx_ctl()
5307 retry--; in i40e_write_rx_ctl()
5312 /* if the AQ access failed, try the old-fashioned way */ in i40e_write_rx_ctl()
5318 * i40e_mdio_if_number_selection - MDIO I/F number selection
5328 if (set_mdio && cmd->phy_interface == I40E_AQ_PHY_REG_ACCESS_EXTERNAL) { in i40e_mdio_if_number_selection()
5329 if (hw->flags & I40E_HW_FLAG_AQ_PHY_ACCESS_EXTENDED) in i40e_mdio_if_number_selection()
5330 cmd->cmd_flags |= in i40e_mdio_if_number_selection()
5371 cmd->phy_interface = phy_select; in i40e_aq_set_phy_register_ext()
5372 cmd->dev_address = dev_addr; in i40e_aq_set_phy_register_ext()
5373 cmd->reg_address = cpu_to_le32(reg_addr); in i40e_aq_set_phy_register_ext()
5374 cmd->reg_value = cpu_to_le32(reg_val); in i40e_aq_set_phy_register_ext()
5379 cmd->cmd_flags = I40E_AQ_PHY_REG_ACCESS_DONT_CHANGE_QSFP_PAGE; in i40e_aq_set_phy_register_ext()
5416 cmd->phy_interface = phy_select; in i40e_aq_get_phy_register_ext()
5417 cmd->dev_address = dev_addr; in i40e_aq_get_phy_register_ext()
5418 cmd->reg_address = cpu_to_le32(reg_addr); in i40e_aq_get_phy_register_ext()
5423 cmd->cmd_flags = I40E_AQ_PHY_REG_ACCESS_DONT_CHANGE_QSFP_PAGE; in i40e_aq_get_phy_register_ext()
5427 *reg_val = le32_to_cpu(cmd->reg_value); in i40e_aq_get_phy_register_ext()
5433 * i40e_aq_write_ddp - Write dynamic device personalization (ddp)
5463 cmd->profile_track_id = cpu_to_le32(track_id); in i40e_aq_write_ddp()
5469 *error_offset = le32_to_cpu(resp->error_offset); in i40e_aq_write_ddp()
5471 *error_info = le32_to_cpu(resp->error_info); in i40e_aq_write_ddp()
5478 * i40e_aq_get_ddp_list - Read dynamic device personalization (ddp)
5502 cmd->flags = flags; in i40e_aq_get_ddp_list()
5526 for (i = 0; i < pkg_hdr->segment_count; i++) { in i40e_find_segment_in_package()
5529 pkg_hdr->segment_offset[i]); in i40e_find_segment_in_package()
5531 if (segment->type == segment_type) in i40e_find_segment_in_package()
5544 count = p->device_table_count; \
5545 nvm = (u32 *)&p->device_table[count]; \
5571 if (profile->header.type != SEGMENT_TYPE_I40E) in i40e_find_section_in_profile()
5576 for (i = 0; i < sec_tbl->section_count; i++) { in i40e_find_section_in_profile()
5577 sec_off = sec_tbl->section_offset[i]; in i40e_find_section_in_profile()
5579 if (sec->section.type == section_type) in i40e_find_section_in_profile()
5587 * i40e_ddp_exec_aq_section - Execute generic AQ for DDP
5599 i40e_fill_default_direct_cmd_desc(&desc, aq->opcode); in i40e_ddp_exec_aq_section()
5600 desc.flags |= cpu_to_le16(aq->flags); in i40e_ddp_exec_aq_section()
5601 memcpy(desc.params.raw, aq->param, sizeof(desc.params.raw)); in i40e_ddp_exec_aq_section()
5603 msglen = aq->datalen; in i40e_ddp_exec_aq_section()
5610 msg = &aq->data[0]; in i40e_ddp_exec_aq_section()
5618 aq->opcode, status); in i40e_ddp_exec_aq_section()
5623 memcpy(aq->param, desc.params.raw, sizeof(desc.params.raw)); in i40e_ddp_exec_aq_section()
5651 return -EOPNOTSUPP; in i40e_validate_profile()
5654 dev_cnt = profile->device_table_count; in i40e_validate_profile()
5656 vendor_dev_id = profile->device_table[i].vendor_dev_id; in i40e_validate_profile()
5658 hw->device_id == (vendor_dev_id & 0xFFFF)) in i40e_validate_profile()
5664 return -ENODEV; in i40e_validate_profile()
5670 for (i = 0; i < sec_tbl->section_count; i++) { in i40e_validate_profile()
5671 sec_off = sec_tbl->section_offset[i]; in i40e_validate_profile()
5674 if (sec->section.type == SECTION_TYPE_MMIO || in i40e_validate_profile()
5675 sec->section.type == SECTION_TYPE_AQ || in i40e_validate_profile()
5676 sec->section.type == SECTION_TYPE_RB_AQ) { in i40e_validate_profile()
5678 "Not a roll-back package\n"); in i40e_validate_profile()
5679 return -EOPNOTSUPP; in i40e_validate_profile()
5682 if (sec->section.type == SECTION_TYPE_RB_AQ || in i40e_validate_profile()
5683 sec->section.type == SECTION_TYPE_RB_MMIO) { in i40e_validate_profile()
5686 return -EOPNOTSUPP; in i40e_validate_profile()
5721 for (i = 0; i < sec_tbl->section_count; i++) { in i40e_write_profile()
5722 sec_off = sec_tbl->section_offset[i]; in i40e_write_profile()
5725 if (sec->section.type == SECTION_TYPE_AQ) { in i40e_write_profile()
5731 i, ddp_aq->opcode); in i40e_write_profile()
5734 sec->section.type = SECTION_TYPE_RB_AQ; in i40e_write_profile()
5737 /* Skip any non-mmio sections */ in i40e_write_profile()
5738 if (sec->section.type != SECTION_TYPE_MMIO) in i40e_write_profile()
5741 section_size = sec->section.size + in i40e_write_profile()
5784 for (i = sec_tbl->section_count - 1; i >= 0; i--) { in i40e_rollback_profile()
5785 sec_off = sec_tbl->section_offset[i]; in i40e_rollback_profile()
5788 /* Skip any non-rollback sections */ in i40e_rollback_profile()
5789 if (sec->section.type != SECTION_TYPE_RB_MMIO) in i40e_rollback_profile()
5792 section_size = sec->section.size + in i40e_rollback_profile()
5795 /* Write roll-back MMIO section */ in i40e_rollback_profile()
5828 sec->tbl_size = 1; in i40e_add_pinfo_to_list()
5829 sec->data_end = sizeof(struct i40e_profile_section_header) + in i40e_add_pinfo_to_list()
5831 sec->section.type = SECTION_TYPE_INFO; in i40e_add_pinfo_to_list()
5832 sec->section.offset = sizeof(struct i40e_profile_section_header); in i40e_add_pinfo_to_list()
5833 sec->section.size = sizeof(struct i40e_profile_info); in i40e_add_pinfo_to_list()
5835 sec->section.offset); in i40e_add_pinfo_to_list()
5836 pinfo->track_id = track_id; in i40e_add_pinfo_to_list()
5837 pinfo->version = profile->version; in i40e_add_pinfo_to_list()
5838 pinfo->op = I40E_DDP_ADD_TRACKID; in i40e_add_pinfo_to_list()
5839 memcpy(pinfo->name, profile->name, I40E_DDP_NAME_SIZE); in i40e_add_pinfo_to_list()
5841 status = i40e_aq_write_ddp(hw, (void *)sec, sec->data_end, in i40e_add_pinfo_to_list()
5876 cmd->num_filters = filter_count; in i40e_aq_add_cloud_filters()
5877 cmd->seid = cpu_to_le16(seid); in i40e_aq_add_cloud_filters()
5914 cmd->num_filters = filter_count; in i40e_aq_add_cloud_filters_bb()
5915 cmd->seid = cpu_to_le16(seid); in i40e_aq_add_cloud_filters_bb()
5916 cmd->big_buffer_flag = I40E_AQC_ADD_CLOUD_CMD_BB; in i40e_aq_add_cloud_filters_bb()
5970 cmd->num_filters = filter_count; in i40e_aq_rem_cloud_filters()
5971 cmd->seid = cpu_to_le16(seid); in i40e_aq_rem_cloud_filters()
6008 cmd->num_filters = filter_count; in i40e_aq_rem_cloud_filters_bb()
6009 cmd->seid = cpu_to_le16(seid); in i40e_aq_rem_cloud_filters_bb()
6010 cmd->big_buffer_flag = I40E_AQC_ADD_CLOUD_CMD_BB; in i40e_aq_rem_cloud_filters_bb()