From patchwork Thu Oct 22 10:06:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 81780 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9C3AAA04DD; Thu, 22 Oct 2020 12:06:39 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 20493A9A2; Thu, 22 Oct 2020 12:06:38 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [67.231.154.164]) by dpdk.org (Postfix) with ESMTP id 1B3F3697A for ; Thu, 22 Oct 2020 12:06:36 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.110.50.150]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id B1DCF20054; Thu, 22 Oct 2020 10:06:34 +0000 (UTC) Received: from us4-mdac16-47.at1.mdlocal (unknown [10.110.50.130]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id AD60F800A3; Thu, 22 Oct 2020 10:06:34 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.110.49.32]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 3016110004F; Thu, 22 Oct 2020 10:06:34 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id BA243280066; Thu, 22 Oct 2020 10:06:33 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 22 Oct 2020 11:06:30 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 22 Oct 2020 11:06:30 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 09MA6Tjp016217; Thu, 22 Oct 2020 11:06:29 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 92EBE1613AB; Thu, 22 Oct 2020 11:06:29 +0100 (BST) From: Andrew Rybchenko To: Wenzhuo Lu , Beilei Xing , Bernard Iremonger , Ray Kinsella , Neil Horman , Jeff Guo , Haiyue Wang , Thomas Monjalon , Ferruh Yigit , "Andrew Rybchenko" CC: Date: Thu, 22 Oct 2020 11:06:18 +0100 Message-ID: <1603361181-21556-2-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1603361181-21556-1-git-send-email-arybchenko@solarflare.com> References: <1603361181-21556-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25740.003 X-TM-AS-Result: No-0.655700-8.000000-10 X-TMASE-MatchedRID: dARgauwPvtY9iUkW1yvq0f3HILfxLV/9Y/L2/AZJAWSYkF7ZtFfCU4wW IRmLVWq53v4RdHcIbAVTvVffeIwvQ+fzx0Vh6/WW9cb9iRwZHB8/pOSL72dTfwdkFovAReUoaUX s6FguVy32Y1WiB0k/cUPuLVtGa0Wt3WMxx3WjnrQgCPGiZqtI8PG6GRFYrbYYAv57j5eT9BaqYd YiN26X15ZhwmzAftiW45Fz6YkDvMn5aaD8UJf+6/KUR83BvqIt9teeW6UfkyCgIq+y9WmmQkJmf ftVAWC9DVELee0AwpBg/8NXjeivnBOlf9nbYOCmboe6sMfg+k8vwhrmqJxTuybe2WcL8TpUsGA1 p74N3HUECycSLz9pMMl5wdxp72wTloOuGcWob3QtMfCdg6KRDVRXlDwI7HfGn7jOJQ+rgvGgamF X7Xb1bjOtNXnfF05TSPAO7ilgMEb2O6qBs+mx8VtTO+xodboGAp+UH372RZW8YDH/UBNnm/i/QO HQsjAJwaEJiZ/MeXhs61VNJJOBu4qEDaEbYNOrIwk7p1qp3JbnEl/YQBxicHv3ioAd9KrSiPBjM XUOM08rW7sCnBP/vIAy6p60ZV62fJ5/bZ6npdiujVRFkkVsm3+a/qPPEVLb0WeWWceJMgmDHhUH s1rzy3OsB991ihzp3QPpj3wcz8m18wdpgPjGdVGEGIYNTOzoHVqHjVCEsfnaCFv/7N2kFPDsnHB TQS9kyoRE4tv/7I7j/Qm+fSvAAma0vgPD7M1vmFd/HOChTo8= X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--0.655700-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25740.003 X-MDID: 1603361194-JtgvcezRIqH2 X-PPE-DISP: 1603361194;JtgvcezRIqH2 Subject: [dpdk-dev] [PATCH 1/3] ethdev: remove API to config L2 tunnel EtherType X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Remove rte_eth_dev_l2_tunnel_eth_type_conf() and corresponding ethdev driver operation. Signed-off-by: Andrew Rybchenko Acked-by: Haiyue Wang Acked-by: Jeff Guo --- app/test-pmd/cmdline.c | 122 -------------------- doc/guides/nics/features.rst | 1 - doc/guides/rel_notes/deprecation.rst | 2 +- doc/guides/rel_notes/release_20_11.rst | 3 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 - drivers/net/ixgbe/ixgbe_ethdev.c | 30 ----- lib/librte_ethdev/rte_ethdev.c | 24 ---- lib/librte_ethdev/rte_ethdev.h | 19 --- lib/librte_ethdev/rte_ethdev_driver.h | 6 - lib/librte_ethdev/version.map | 1 - 10 files changed, 4 insertions(+), 208 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 2a363be41f..8e76ec62a2 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -843,10 +843,6 @@ static void cmd_help_long_parsed(void *parsed_result, "port (port_id) (rxq|txq) (queue_id) setup\n" " Setup a rx/tx queue of port X.\n\n" - "port config (port_id|all) l2-tunnel E-tag ether-type" - " (value)\n" - " Set the value of E-tag ether-type.\n\n" - "port config (port_id|all) l2-tunnel E-tag" " (enable|disable)\n" " Enable/disable the E-tag support.\n\n" @@ -10679,51 +10675,6 @@ cmdline_parse_inst_t cmd_mcast_addr = { * only support E-tag now. */ -/* Ether type config */ -struct cmd_config_l2_tunnel_eth_type_result { - cmdline_fixed_string_t port; - cmdline_fixed_string_t config; - cmdline_fixed_string_t all; - portid_t id; - cmdline_fixed_string_t l2_tunnel; - cmdline_fixed_string_t l2_tunnel_type; - cmdline_fixed_string_t eth_type; - uint16_t eth_type_val; -}; - -cmdline_parse_token_string_t cmd_config_l2_tunnel_eth_type_port = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_eth_type_result, - port, "port"); -cmdline_parse_token_string_t cmd_config_l2_tunnel_eth_type_config = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_eth_type_result, - config, "config"); -cmdline_parse_token_string_t cmd_config_l2_tunnel_eth_type_all_str = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_eth_type_result, - all, "all"); -cmdline_parse_token_num_t cmd_config_l2_tunnel_eth_type_id = - TOKEN_NUM_INITIALIZER - (struct cmd_config_l2_tunnel_eth_type_result, - id, UINT16); -cmdline_parse_token_string_t cmd_config_l2_tunnel_eth_type_l2_tunnel = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_eth_type_result, - l2_tunnel, "l2-tunnel"); -cmdline_parse_token_string_t cmd_config_l2_tunnel_eth_type_l2_tunnel_type = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_eth_type_result, - l2_tunnel_type, "E-tag"); -cmdline_parse_token_string_t cmd_config_l2_tunnel_eth_type_eth_type = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_eth_type_result, - eth_type, "ether-type"); -cmdline_parse_token_num_t cmd_config_l2_tunnel_eth_type_eth_type_val = - TOKEN_NUM_INITIALIZER - (struct cmd_config_l2_tunnel_eth_type_result, - eth_type_val, UINT16); - static enum rte_eth_tunnel_type str2fdir_l2_tunnel_type(char *string) { @@ -10743,77 +10694,6 @@ str2fdir_l2_tunnel_type(char *string) return RTE_TUNNEL_TYPE_NONE; } -/* ether type config for all ports */ -static void -cmd_config_l2_tunnel_eth_type_all_parsed - (void *parsed_result, - __rte_unused struct cmdline *cl, - __rte_unused void *data) -{ - struct cmd_config_l2_tunnel_eth_type_result *res = parsed_result; - struct rte_eth_l2_tunnel_conf entry; - portid_t pid; - - entry.l2_tunnel_type = str2fdir_l2_tunnel_type(res->l2_tunnel_type); - entry.ether_type = res->eth_type_val; - - RTE_ETH_FOREACH_DEV(pid) { - rte_eth_dev_l2_tunnel_eth_type_conf(pid, &entry); - } -} - -cmdline_parse_inst_t cmd_config_l2_tunnel_eth_type_all = { - .f = cmd_config_l2_tunnel_eth_type_all_parsed, - .data = NULL, - .help_str = "port config all l2-tunnel E-tag ether-type ", - .tokens = { - (void *)&cmd_config_l2_tunnel_eth_type_port, - (void *)&cmd_config_l2_tunnel_eth_type_config, - (void *)&cmd_config_l2_tunnel_eth_type_all_str, - (void *)&cmd_config_l2_tunnel_eth_type_l2_tunnel, - (void *)&cmd_config_l2_tunnel_eth_type_l2_tunnel_type, - (void *)&cmd_config_l2_tunnel_eth_type_eth_type, - (void *)&cmd_config_l2_tunnel_eth_type_eth_type_val, - NULL, - }, -}; - -/* ether type config for a specific port */ -static void -cmd_config_l2_tunnel_eth_type_specific_parsed( - void *parsed_result, - __rte_unused struct cmdline *cl, - __rte_unused void *data) -{ - struct cmd_config_l2_tunnel_eth_type_result *res = - parsed_result; - struct rte_eth_l2_tunnel_conf entry; - - if (port_id_is_invalid(res->id, ENABLED_WARN)) - return; - - entry.l2_tunnel_type = str2fdir_l2_tunnel_type(res->l2_tunnel_type); - entry.ether_type = res->eth_type_val; - - rte_eth_dev_l2_tunnel_eth_type_conf(res->id, &entry); -} - -cmdline_parse_inst_t cmd_config_l2_tunnel_eth_type_specific = { - .f = cmd_config_l2_tunnel_eth_type_specific_parsed, - .data = NULL, - .help_str = "port config l2-tunnel E-tag ether-type ", - .tokens = { - (void *)&cmd_config_l2_tunnel_eth_type_port, - (void *)&cmd_config_l2_tunnel_eth_type_config, - (void *)&cmd_config_l2_tunnel_eth_type_id, - (void *)&cmd_config_l2_tunnel_eth_type_l2_tunnel, - (void *)&cmd_config_l2_tunnel_eth_type_l2_tunnel_type, - (void *)&cmd_config_l2_tunnel_eth_type_eth_type, - (void *)&cmd_config_l2_tunnel_eth_type_eth_type_val, - NULL, - }, -}; - /* Enable/disable l2 tunnel */ struct cmd_config_l2_tunnel_en_dis_result { cmdline_fixed_string_t port; @@ -17514,8 +17394,6 @@ cmdline_parse_ctx_t main_ctx[] = { (cmdline_parse_inst_t *)&cmd_set_port_meter_stats_mask, (cmdline_parse_inst_t *)&cmd_show_port_meter_stats, (cmdline_parse_inst_t *)&cmd_mcast_addr, - (cmdline_parse_inst_t *)&cmd_config_l2_tunnel_eth_type_all, - (cmdline_parse_inst_t *)&cmd_config_l2_tunnel_eth_type_specific, (cmdline_parse_inst_t *)&cmd_config_l2_tunnel_en_dis_all, (cmdline_parse_inst_t *)&cmd_config_l2_tunnel_en_dis_specific, (cmdline_parse_inst_t *)&cmd_config_e_tag_insertion_en, diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst index 16e00b8f64..37cd26d84a 100644 --- a/doc/guides/nics/features.rst +++ b/doc/guides/nics/features.rst @@ -943,6 +943,5 @@ Other dev ops not represented by a Feature * ``uc_all_hash_table_set`` * ``udp_tunnel_port_add`` * ``udp_tunnel_port_del`` -* ``l2_tunnel_eth_type_conf`` * ``l2_tunnel_offload_set`` * ``tx_pkt_prepare`` diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index e9905c8d74..38706775f5 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -100,7 +100,7 @@ Deprecation Notices * ethdev: The legacy L2 tunnel filtering API is deprecated as the rest of the legacy filtering API. - The functions ``rte_eth_dev_l2_tunnel_eth_type_conf`` and + The function ``rte_eth_dev_l2_tunnel_offload_set`` which were not marked as deprecated, will be removed in DPDK 20.11. diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst index 14f83f7206..3165307de9 100644 --- a/doc/guides/rel_notes/release_20_11.rst +++ b/doc/guides/rel_notes/release_20_11.rst @@ -471,6 +471,9 @@ API Changes * ethdev: Removed the legacy filter API, including ``rte_eth_dev_filter_supported()`` and ``rte_eth_dev_filter_ctrl()``. +* ethdev: Removed the legacy L2 tunnel configuration API, including + ``rte_eth_dev_l2_tunnel_eth_type_conf()``. + * vhost: Moved vDPA APIs from experimental to stable. * vhost: Add a new function ``rte_vhost_crypto_driver_start`` to be called diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 1564c25f5e..e6439719d1 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -2342,10 +2342,6 @@ These threshold options are also available from the command-line. port config - E-tag ~~~~~~~~~~~~~~~~~~~ -Set the value of ether-type for E-tag:: - - testpmd> port config (port_id|all) l2-tunnel E-tag ether-type (value) - Enable/disable the E-tag support:: testpmd> port config (port_id|all) l2-tunnel E-tag (enable|disable) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index af36175380..4918517b92 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -348,8 +348,6 @@ static int ixgbe_timesync_write_time(struct rte_eth_dev *dev, const struct timespec *timestamp); static void ixgbevf_dev_interrupt_handler(void *param); -static int ixgbe_dev_l2_tunnel_eth_type_conf - (struct rte_eth_dev *dev, struct rte_eth_l2_tunnel_conf *l2_tunnel); static int ixgbe_dev_l2_tunnel_offload_set (struct rte_eth_dev *dev, struct rte_eth_l2_tunnel_conf *l2_tunnel, @@ -564,7 +562,6 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops = { .timesync_adjust_time = ixgbe_timesync_adjust_time, .timesync_read_time = ixgbe_timesync_read_time, .timesync_write_time = ixgbe_timesync_write_time, - .l2_tunnel_eth_type_conf = ixgbe_dev_l2_tunnel_eth_type_conf, .l2_tunnel_offload_set = ixgbe_dev_l2_tunnel_offload_set, .udp_tunnel_port_add = ixgbe_dev_udp_tunnel_port_add, .udp_tunnel_port_del = ixgbe_dev_udp_tunnel_port_del, @@ -7538,33 +7535,6 @@ ixgbe_update_e_tag_eth_type(struct ixgbe_hw *hw, return 0; } -/* Config l2 tunnel ether type */ -static int -ixgbe_dev_l2_tunnel_eth_type_conf(struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel) -{ - int ret = 0; - struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); - struct ixgbe_l2_tn_info *l2_tn_info = - IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private); - - if (l2_tunnel == NULL) - return -EINVAL; - - switch (l2_tunnel->l2_tunnel_type) { - case RTE_L2_TUNNEL_TYPE_E_TAG: - l2_tn_info->e_tag_ether_type = l2_tunnel->ether_type; - ret = ixgbe_update_e_tag_eth_type(hw, l2_tunnel->ether_type); - break; - default: - PMD_DRV_LOG(ERR, "Invalid tunnel type"); - ret = -EINVAL; - break; - } - - return ret; -} - /* Enable e-tag tunnel */ static int ixgbe_e_tag_enable(struct ixgbe_hw *hw) diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index aa030fd4fc..e5d0a18feb 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -5317,30 +5317,6 @@ rte_eth_dev_get_dcb_info(uint16_t port_id, return eth_err(port_id, (*dev->dev_ops->get_dcb_info)(dev, dcb_info)); } -int -rte_eth_dev_l2_tunnel_eth_type_conf(uint16_t port_id, - struct rte_eth_l2_tunnel_conf *l2_tunnel) -{ - struct rte_eth_dev *dev; - - RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); - if (l2_tunnel == NULL) { - RTE_ETHDEV_LOG(ERR, "Invalid l2_tunnel parameter\n"); - return -EINVAL; - } - - if (l2_tunnel->l2_tunnel_type >= RTE_TUNNEL_TYPE_MAX) { - RTE_ETHDEV_LOG(ERR, "Invalid tunnel type\n"); - return -EINVAL; - } - - dev = &rte_eth_devices[port_id]; - RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->l2_tunnel_eth_type_conf, - -ENOTSUP); - return eth_err(port_id, (*dev->dev_ops->l2_tunnel_eth_type_conf)(dev, - l2_tunnel)); -} - int rte_eth_dev_l2_tunnel_offload_set(uint16_t port_id, struct rte_eth_l2_tunnel_conf *l2_tunnel, diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index c51faa9c5b..dda75a82b3 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -4627,25 +4627,6 @@ __rte_experimental int rte_eth_read_clock(uint16_t port_id, uint64_t *clock); -/** - * Config l2 tunnel ether type of an Ethernet device for filtering specific - * tunnel packets by ether type. - * - * @param port_id - * The port identifier of the Ethernet device. - * @param l2_tunnel - * l2 tunnel configuration. - * - * @return - * - (0) if successful. - * - (-ENODEV) if port identifier is invalid. - * - (-EIO) if device is removed. - * - (-ENOTSUP) if hardware doesn't support tunnel type. - */ -int -rte_eth_dev_l2_tunnel_eth_type_conf(uint16_t port_id, - struct rte_eth_l2_tunnel_conf *l2_tunnel); - /** * Enable/disable l2 tunnel offload functions. Include, * 1, The ability of parsing a type of l2 tunnel of an Ethernet device. diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h index d830789ff6..a69793dcb1 100644 --- a/lib/librte_ethdev/rte_ethdev_driver.h +++ b/lib/librte_ethdev/rte_ethdev_driver.h @@ -465,10 +465,6 @@ typedef int (*eth_get_module_eeprom_t)(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *info); /**< @internal Retrieve plugin module eeprom data */ -typedef int (*eth_l2_tunnel_eth_type_conf_t) - (struct rte_eth_dev *dev, struct rte_eth_l2_tunnel_conf *l2_tunnel); -/**< @internal config l2 tunnel ether type */ - typedef int (*eth_l2_tunnel_offload_set_t) (struct rte_eth_dev *dev, struct rte_eth_l2_tunnel_conf *l2_tunnel, @@ -853,8 +849,6 @@ struct eth_dev_ops { eth_udp_tunnel_port_add_t udp_tunnel_port_add; /** Add UDP tunnel port. */ eth_udp_tunnel_port_del_t udp_tunnel_port_del; /** Del UDP tunnel port. */ - eth_l2_tunnel_eth_type_conf_t l2_tunnel_eth_type_conf; - /** Config ether type of l2 tunnel. */ eth_l2_tunnel_offload_set_t l2_tunnel_offload_set; /** Enable/disable l2 tunnel offload functions. */ diff --git a/lib/librte_ethdev/version.map b/lib/librte_ethdev/version.map index fe628736c0..63f077a3eb 100644 --- a/lib/librte_ethdev/version.map +++ b/lib/librte_ethdev/version.map @@ -30,7 +30,6 @@ DPDK_21 { rte_eth_dev_get_vlan_offload; rte_eth_dev_info_get; rte_eth_dev_is_valid_port; - rte_eth_dev_l2_tunnel_eth_type_conf; rte_eth_dev_l2_tunnel_offload_set; rte_eth_dev_logtype; rte_eth_dev_mac_addr_add; From patchwork Thu Oct 22 10:06:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 81782 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 802DAA04DD; Thu, 22 Oct 2020 12:07:21 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5EE4BA9BE; Thu, 22 Oct 2020 12:06:45 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [67.231.154.164]) by dpdk.org (Postfix) with ESMTP id 94617697A for ; Thu, 22 Oct 2020 12:06:36 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.110.50.143]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 3CD642007F; Thu, 22 Oct 2020 10:06:35 +0000 (UTC) Received: from us4-mdac16-41.at1.mdlocal (unknown [10.110.48.12]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 3A35C8009B; Thu, 22 Oct 2020 10:06:35 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.110.49.32]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 9073F4006C; Thu, 22 Oct 2020 10:06:34 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 3EB93280066; Thu, 22 Oct 2020 10:06:34 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 22 Oct 2020 11:06:30 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 22 Oct 2020 11:06:30 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 09MA6Ub6016241; Thu, 22 Oct 2020 11:06:30 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 2A2141613A9; Thu, 22 Oct 2020 11:06:30 +0100 (BST) From: Andrew Rybchenko To: Wenzhuo Lu , Beilei Xing , Bernard Iremonger , Ray Kinsella , Neil Horman , Jeff Guo , Haiyue Wang , Thomas Monjalon , Ferruh Yigit , "Andrew Rybchenko" CC: Date: Thu, 22 Oct 2020 11:06:19 +0100 Message-ID: <1603361181-21556-3-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1603361181-21556-1-git-send-email-arybchenko@solarflare.com> References: <1603361181-21556-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25740.003 X-TM-AS-Result: No-1.303200-8.000000-10 X-TMASE-MatchedRID: 5yZJ/5Gq0Ko9iUkW1yvq0f3HILfxLV/9Y/L2/AZJAWSYkF7ZtFfCU4wW IRmLVWq53v4RdHcIbAVTvVffeIwvQ+fzx0Vh6/WW9cb9iRwZHB8/pOSL72dTfwdkFovAReUoaUX s6FguVy0e27BljbjQOzNvFE2ADjNdd6jj40W1ZXie0367q1uQ1DVfUuzvrtym9C4tEnGKigm+mF UWJD5GAsJlOk77WC/aVaWjHXteqEDDZy3oQ855+uhsg0dmQfnGmdrHMkUHHq+Rjx4hNpIk+IGVP 6OXoWthQUcXtdsNWkmq/gIZRi7EGPK0W8FfkszHL1wE1KWC9ipMAJQusk2FzuLsQIDmr3S54oay bjkzQTqvz4gHulv0IDuw9HCxyNRD2FxiXqD0ZK9EVqQW9Bvtqd1eFEoaE12nfkiy7TTogYZwAiA 05LuVdnfHHPReh1/fVhsUE+BTS8KZka9ZOnvpYOW9J5hJgRQsp2Uv2mII686hpj2O74VkxDQW+a V0tF9ejOC4Alahhl0bpUdatwnXBlTNH/IEdCNmKrDHzH6zmUWByxVkfd04JOy9vsxhLmze3odgO mVqnG6PeXBZDCu6JSVYqCLe3qlcVNXcbc1LI59wju9EALAXQsTttHDRkM91e/eKgB30qtJ5aDrw OGgSSRVCy5LiwCBzRIEO7cekbUuO/RKAtU9lGachFrOB9kan+x+d6uPTzEPFGJYC5I0rDKPFjJE Fr+olwXCBO/GKkVqOhzOa6g8KrQLPZWyi9EAM+Q+4L443lFQvNPXX0JtW7p+xDYliF2LbKzpWGi lfGnAPXLxHfxLeXVRHOSKs7RDUXmH0pBaurgG+4xOvsJAknn7cGd19dSFd X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--1.303200-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25740.003 X-MDID: 1603361195-ALlWzw_yAWED X-PPE-DISP: 1603361195;ALlWzw_yAWED Subject: [dpdk-dev] [PATCH 2/3] ethdev: remove L2 tunnel offload control API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Remove rte_eth_dev_l2_tunnel_offload_set() and corresponding ethdev driver operation. Signed-off-by: Andrew Rybchenko Acked-by: Haiyue Wang Acked-by: Jeff Guo --- app/test-pmd/cmdline.c | 455 -------------------- doc/guides/nics/features.rst | 2 - doc/guides/rel_notes/deprecation.rst | 6 - doc/guides/rel_notes/release_20_11.rst | 3 +- doc/guides/testpmd_app_ug/testpmd_funcs.rst | 7 - drivers/net/ixgbe/ixgbe_ethdev.c | 333 -------------- lib/librte_ethdev/rte_ethdev.c | 32 -- lib/librte_ethdev/rte_ethdev.h | 30 -- lib/librte_ethdev/rte_ethdev_driver.h | 9 - lib/librte_ethdev/version.map | 1 - 10 files changed, 2 insertions(+), 876 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 8e76ec62a2..84db81cf31 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -650,20 +650,6 @@ static void cmd_help_long_parsed(void *parsed_result, "set link-down port (port_id)\n" " Set link down for a port.\n\n" - "E-tag set insertion on port-tag-id (value)" - " port (port_id) vf (vf_id)\n" - " Enable E-tag insertion for a VF on a port\n\n" - - "E-tag set insertion off port (port_id) vf (vf_id)\n" - " Disable E-tag insertion for a VF on a port\n\n" - - "E-tag set stripping (on|off) port (port_id)\n" - " Enable/disable E-tag stripping on a port\n\n" - - "E-tag set forwarding (on|off) port (port_id)\n" - " Enable/disable E-tag based forwarding" - " on a port\n\n" - "ddp add (port_id) (profile_path[,backup_profile_path])\n" " Load a profile package on a port\n\n" @@ -843,10 +829,6 @@ static void cmd_help_long_parsed(void *parsed_result, "port (port_id) (rxq|txq) (queue_id) setup\n" " Setup a rx/tx queue of port X.\n\n" - "port config (port_id|all) l2-tunnel E-tag" - " (enable|disable)\n" - " Enable/disable the E-tag support.\n\n" - "port config (port_id) pctype mapping reset\n" " Reset flow type to pctype mapping on a port\n\n" @@ -10671,437 +10653,6 @@ cmdline_parse_inst_t cmd_mcast_addr = { }, }; -/* l2 tunnel config - * only support E-tag now. - */ - -static enum rte_eth_tunnel_type -str2fdir_l2_tunnel_type(char *string) -{ - uint32_t i = 0; - - static const struct { - char str[32]; - enum rte_eth_tunnel_type type; - } l2_tunnel_type_str[] = { - {"E-tag", RTE_L2_TUNNEL_TYPE_E_TAG}, - }; - - for (i = 0; i < RTE_DIM(l2_tunnel_type_str); i++) { - if (!strcmp(l2_tunnel_type_str[i].str, string)) - return l2_tunnel_type_str[i].type; - } - return RTE_TUNNEL_TYPE_NONE; -} - -/* Enable/disable l2 tunnel */ -struct cmd_config_l2_tunnel_en_dis_result { - cmdline_fixed_string_t port; - cmdline_fixed_string_t config; - cmdline_fixed_string_t all; - portid_t id; - cmdline_fixed_string_t l2_tunnel; - cmdline_fixed_string_t l2_tunnel_type; - cmdline_fixed_string_t en_dis; -}; - -cmdline_parse_token_string_t cmd_config_l2_tunnel_en_dis_port = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_en_dis_result, - port, "port"); -cmdline_parse_token_string_t cmd_config_l2_tunnel_en_dis_config = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_en_dis_result, - config, "config"); -cmdline_parse_token_string_t cmd_config_l2_tunnel_en_dis_all_str = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_en_dis_result, - all, "all"); -cmdline_parse_token_num_t cmd_config_l2_tunnel_en_dis_id = - TOKEN_NUM_INITIALIZER - (struct cmd_config_l2_tunnel_en_dis_result, - id, UINT16); -cmdline_parse_token_string_t cmd_config_l2_tunnel_en_dis_l2_tunnel = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_en_dis_result, - l2_tunnel, "l2-tunnel"); -cmdline_parse_token_string_t cmd_config_l2_tunnel_en_dis_l2_tunnel_type = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_en_dis_result, - l2_tunnel_type, "E-tag"); -cmdline_parse_token_string_t cmd_config_l2_tunnel_en_dis_en_dis = - TOKEN_STRING_INITIALIZER - (struct cmd_config_l2_tunnel_en_dis_result, - en_dis, "enable#disable"); - -/* enable/disable l2 tunnel for all ports */ -static void -cmd_config_l2_tunnel_en_dis_all_parsed( - void *parsed_result, - __rte_unused struct cmdline *cl, - __rte_unused void *data) -{ - struct cmd_config_l2_tunnel_en_dis_result *res = parsed_result; - struct rte_eth_l2_tunnel_conf entry; - portid_t pid; - uint8_t en; - - entry.l2_tunnel_type = str2fdir_l2_tunnel_type(res->l2_tunnel_type); - - if (!strcmp("enable", res->en_dis)) - en = 1; - else - en = 0; - - RTE_ETH_FOREACH_DEV(pid) { - rte_eth_dev_l2_tunnel_offload_set(pid, - &entry, - ETH_L2_TUNNEL_ENABLE_MASK, - en); - } -} - -cmdline_parse_inst_t cmd_config_l2_tunnel_en_dis_all = { - .f = cmd_config_l2_tunnel_en_dis_all_parsed, - .data = NULL, - .help_str = "port config all l2-tunnel E-tag enable|disable", - .tokens = { - (void *)&cmd_config_l2_tunnel_en_dis_port, - (void *)&cmd_config_l2_tunnel_en_dis_config, - (void *)&cmd_config_l2_tunnel_en_dis_all_str, - (void *)&cmd_config_l2_tunnel_en_dis_l2_tunnel, - (void *)&cmd_config_l2_tunnel_en_dis_l2_tunnel_type, - (void *)&cmd_config_l2_tunnel_en_dis_en_dis, - NULL, - }, -}; - -/* enable/disable l2 tunnel for a port */ -static void -cmd_config_l2_tunnel_en_dis_specific_parsed( - void *parsed_result, - __rte_unused struct cmdline *cl, - __rte_unused void *data) -{ - struct cmd_config_l2_tunnel_en_dis_result *res = - parsed_result; - struct rte_eth_l2_tunnel_conf entry; - - if (port_id_is_invalid(res->id, ENABLED_WARN)) - return; - - entry.l2_tunnel_type = str2fdir_l2_tunnel_type(res->l2_tunnel_type); - - if (!strcmp("enable", res->en_dis)) - rte_eth_dev_l2_tunnel_offload_set(res->id, - &entry, - ETH_L2_TUNNEL_ENABLE_MASK, - 1); - else - rte_eth_dev_l2_tunnel_offload_set(res->id, - &entry, - ETH_L2_TUNNEL_ENABLE_MASK, - 0); -} - -cmdline_parse_inst_t cmd_config_l2_tunnel_en_dis_specific = { - .f = cmd_config_l2_tunnel_en_dis_specific_parsed, - .data = NULL, - .help_str = "port config l2-tunnel E-tag enable|disable", - .tokens = { - (void *)&cmd_config_l2_tunnel_en_dis_port, - (void *)&cmd_config_l2_tunnel_en_dis_config, - (void *)&cmd_config_l2_tunnel_en_dis_id, - (void *)&cmd_config_l2_tunnel_en_dis_l2_tunnel, - (void *)&cmd_config_l2_tunnel_en_dis_l2_tunnel_type, - (void *)&cmd_config_l2_tunnel_en_dis_en_dis, - NULL, - }, -}; - -/* E-tag configuration */ - -/* Common result structure for all E-tag configuration */ -struct cmd_config_e_tag_result { - cmdline_fixed_string_t e_tag; - cmdline_fixed_string_t set; - cmdline_fixed_string_t insertion; - cmdline_fixed_string_t stripping; - cmdline_fixed_string_t forwarding; - cmdline_fixed_string_t filter; - cmdline_fixed_string_t add; - cmdline_fixed_string_t del; - cmdline_fixed_string_t on; - cmdline_fixed_string_t off; - cmdline_fixed_string_t on_off; - cmdline_fixed_string_t port_tag_id; - uint32_t port_tag_id_val; - cmdline_fixed_string_t e_tag_id; - uint16_t e_tag_id_val; - cmdline_fixed_string_t dst_pool; - uint8_t dst_pool_val; - cmdline_fixed_string_t port; - portid_t port_id; - cmdline_fixed_string_t vf; - uint8_t vf_id; -}; - -/* Common CLI fields for all E-tag configuration */ -cmdline_parse_token_string_t cmd_config_e_tag_e_tag = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - e_tag, "E-tag"); -cmdline_parse_token_string_t cmd_config_e_tag_set = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - set, "set"); -cmdline_parse_token_string_t cmd_config_e_tag_insertion = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - insertion, "insertion"); -cmdline_parse_token_string_t cmd_config_e_tag_stripping = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - stripping, "stripping"); -cmdline_parse_token_string_t cmd_config_e_tag_forwarding = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - forwarding, "forwarding"); -cmdline_parse_token_string_t cmd_config_e_tag_filter = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - filter, "filter"); -cmdline_parse_token_string_t cmd_config_e_tag_add = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - add, "add"); -cmdline_parse_token_string_t cmd_config_e_tag_del = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - del, "del"); -cmdline_parse_token_string_t cmd_config_e_tag_on = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - on, "on"); -cmdline_parse_token_string_t cmd_config_e_tag_off = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - off, "off"); -cmdline_parse_token_string_t cmd_config_e_tag_on_off = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - on_off, "on#off"); -cmdline_parse_token_string_t cmd_config_e_tag_port_tag_id = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - port_tag_id, "port-tag-id"); -cmdline_parse_token_num_t cmd_config_e_tag_port_tag_id_val = - TOKEN_NUM_INITIALIZER - (struct cmd_config_e_tag_result, - port_tag_id_val, UINT32); -cmdline_parse_token_string_t cmd_config_e_tag_e_tag_id = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - e_tag_id, "e-tag-id"); -cmdline_parse_token_num_t cmd_config_e_tag_e_tag_id_val = - TOKEN_NUM_INITIALIZER - (struct cmd_config_e_tag_result, - e_tag_id_val, UINT16); -cmdline_parse_token_string_t cmd_config_e_tag_dst_pool = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - dst_pool, "dst-pool"); -cmdline_parse_token_num_t cmd_config_e_tag_dst_pool_val = - TOKEN_NUM_INITIALIZER - (struct cmd_config_e_tag_result, - dst_pool_val, UINT8); -cmdline_parse_token_string_t cmd_config_e_tag_port = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - port, "port"); -cmdline_parse_token_num_t cmd_config_e_tag_port_id = - TOKEN_NUM_INITIALIZER - (struct cmd_config_e_tag_result, - port_id, UINT16); -cmdline_parse_token_string_t cmd_config_e_tag_vf = - TOKEN_STRING_INITIALIZER - (struct cmd_config_e_tag_result, - vf, "vf"); -cmdline_parse_token_num_t cmd_config_e_tag_vf_id = - TOKEN_NUM_INITIALIZER - (struct cmd_config_e_tag_result, - vf_id, UINT8); - -/* E-tag insertion configuration */ -static void -cmd_config_e_tag_insertion_en_parsed( - void *parsed_result, - __rte_unused struct cmdline *cl, - __rte_unused void *data) -{ - struct cmd_config_e_tag_result *res = - parsed_result; - struct rte_eth_l2_tunnel_conf entry; - - if (port_id_is_invalid(res->port_id, ENABLED_WARN)) - return; - - entry.l2_tunnel_type = RTE_L2_TUNNEL_TYPE_E_TAG; - entry.tunnel_id = res->port_tag_id_val; - entry.vf_id = res->vf_id; - rte_eth_dev_l2_tunnel_offload_set(res->port_id, - &entry, - ETH_L2_TUNNEL_INSERTION_MASK, - 1); -} - -static void -cmd_config_e_tag_insertion_dis_parsed( - void *parsed_result, - __rte_unused struct cmdline *cl, - __rte_unused void *data) -{ - struct cmd_config_e_tag_result *res = - parsed_result; - struct rte_eth_l2_tunnel_conf entry; - - if (port_id_is_invalid(res->port_id, ENABLED_WARN)) - return; - - entry.l2_tunnel_type = RTE_L2_TUNNEL_TYPE_E_TAG; - entry.vf_id = res->vf_id; - - rte_eth_dev_l2_tunnel_offload_set(res->port_id, - &entry, - ETH_L2_TUNNEL_INSERTION_MASK, - 0); -} - -cmdline_parse_inst_t cmd_config_e_tag_insertion_en = { - .f = cmd_config_e_tag_insertion_en_parsed, - .data = NULL, - .help_str = "E-tag ... : E-tag insertion enable", - .tokens = { - (void *)&cmd_config_e_tag_e_tag, - (void *)&cmd_config_e_tag_set, - (void *)&cmd_config_e_tag_insertion, - (void *)&cmd_config_e_tag_on, - (void *)&cmd_config_e_tag_port_tag_id, - (void *)&cmd_config_e_tag_port_tag_id_val, - (void *)&cmd_config_e_tag_port, - (void *)&cmd_config_e_tag_port_id, - (void *)&cmd_config_e_tag_vf, - (void *)&cmd_config_e_tag_vf_id, - NULL, - }, -}; - -cmdline_parse_inst_t cmd_config_e_tag_insertion_dis = { - .f = cmd_config_e_tag_insertion_dis_parsed, - .data = NULL, - .help_str = "E-tag ... : E-tag insertion disable", - .tokens = { - (void *)&cmd_config_e_tag_e_tag, - (void *)&cmd_config_e_tag_set, - (void *)&cmd_config_e_tag_insertion, - (void *)&cmd_config_e_tag_off, - (void *)&cmd_config_e_tag_port, - (void *)&cmd_config_e_tag_port_id, - (void *)&cmd_config_e_tag_vf, - (void *)&cmd_config_e_tag_vf_id, - NULL, - }, -}; - -/* E-tag stripping configuration */ -static void -cmd_config_e_tag_stripping_parsed( - void *parsed_result, - __rte_unused struct cmdline *cl, - __rte_unused void *data) -{ - struct cmd_config_e_tag_result *res = - parsed_result; - struct rte_eth_l2_tunnel_conf entry; - - if (port_id_is_invalid(res->port_id, ENABLED_WARN)) - return; - - entry.l2_tunnel_type = RTE_L2_TUNNEL_TYPE_E_TAG; - - if (!strcmp(res->on_off, "on")) - rte_eth_dev_l2_tunnel_offload_set - (res->port_id, - &entry, - ETH_L2_TUNNEL_STRIPPING_MASK, - 1); - else - rte_eth_dev_l2_tunnel_offload_set - (res->port_id, - &entry, - ETH_L2_TUNNEL_STRIPPING_MASK, - 0); -} - -cmdline_parse_inst_t cmd_config_e_tag_stripping_en_dis = { - .f = cmd_config_e_tag_stripping_parsed, - .data = NULL, - .help_str = "E-tag ... : E-tag stripping enable/disable", - .tokens = { - (void *)&cmd_config_e_tag_e_tag, - (void *)&cmd_config_e_tag_set, - (void *)&cmd_config_e_tag_stripping, - (void *)&cmd_config_e_tag_on_off, - (void *)&cmd_config_e_tag_port, - (void *)&cmd_config_e_tag_port_id, - NULL, - }, -}; - -/* E-tag forwarding configuration */ -static void -cmd_config_e_tag_forwarding_parsed( - void *parsed_result, - __rte_unused struct cmdline *cl, - __rte_unused void *data) -{ - struct cmd_config_e_tag_result *res = parsed_result; - struct rte_eth_l2_tunnel_conf entry; - - if (port_id_is_invalid(res->port_id, ENABLED_WARN)) - return; - - entry.l2_tunnel_type = RTE_L2_TUNNEL_TYPE_E_TAG; - - if (!strcmp(res->on_off, "on")) - rte_eth_dev_l2_tunnel_offload_set - (res->port_id, - &entry, - ETH_L2_TUNNEL_FORWARDING_MASK, - 1); - else - rte_eth_dev_l2_tunnel_offload_set - (res->port_id, - &entry, - ETH_L2_TUNNEL_FORWARDING_MASK, - 0); -} - -cmdline_parse_inst_t cmd_config_e_tag_forwarding_en_dis = { - .f = cmd_config_e_tag_forwarding_parsed, - .data = NULL, - .help_str = "E-tag ... : E-tag forwarding enable/disable", - .tokens = { - (void *)&cmd_config_e_tag_e_tag, - (void *)&cmd_config_e_tag_set, - (void *)&cmd_config_e_tag_forwarding, - (void *)&cmd_config_e_tag_on_off, - (void *)&cmd_config_e_tag_port, - (void *)&cmd_config_e_tag_port_id, - NULL, - }, -}; - /* vf vlan anti spoof configuration */ /* Common result structure for vf vlan anti spoof */ @@ -17394,12 +16945,6 @@ cmdline_parse_ctx_t main_ctx[] = { (cmdline_parse_inst_t *)&cmd_set_port_meter_stats_mask, (cmdline_parse_inst_t *)&cmd_show_port_meter_stats, (cmdline_parse_inst_t *)&cmd_mcast_addr, - (cmdline_parse_inst_t *)&cmd_config_l2_tunnel_en_dis_all, - (cmdline_parse_inst_t *)&cmd_config_l2_tunnel_en_dis_specific, - (cmdline_parse_inst_t *)&cmd_config_e_tag_insertion_en, - (cmdline_parse_inst_t *)&cmd_config_e_tag_insertion_dis, - (cmdline_parse_inst_t *)&cmd_config_e_tag_stripping_en_dis, - (cmdline_parse_inst_t *)&cmd_config_e_tag_forwarding_en_dis, (cmdline_parse_inst_t *)&cmd_set_vf_vlan_anti_spoof, (cmdline_parse_inst_t *)&cmd_set_vf_mac_anti_spoof, (cmdline_parse_inst_t *)&cmd_set_vf_vlan_stripq, diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst index 37cd26d84a..98ad7d0822 100644 --- a/doc/guides/nics/features.rst +++ b/doc/guides/nics/features.rst @@ -938,10 +938,8 @@ Other dev ops not represented by a Feature * ``vlan_strip_queue_set`` * ``vlan_pvid_set`` * ``rx_queue_count`` -* ``l2_tunnel_offload_set`` * ``uc_hash_table_set`` * ``uc_all_hash_table_set`` * ``udp_tunnel_port_add`` * ``udp_tunnel_port_del`` -* ``l2_tunnel_offload_set`` * ``tx_pkt_prepare`` diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index 38706775f5..a348138757 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -98,12 +98,6 @@ Deprecation Notices and the related structures (``rte_fdir_*`` and ``rte_eth_fdir_*``), will be removed in DPDK 20.11. -* ethdev: The legacy L2 tunnel filtering API is deprecated as the rest of - the legacy filtering API. - The function - ``rte_eth_dev_l2_tunnel_offload_set`` which were not marked as deprecated, - will be removed in DPDK 20.11. - * ethdev: New offload flags ``DEV_RX_OFFLOAD_FLOW_MARK`` will be added in 19.11. This will allow application to enable or disable PMDs from updating ``rte_mbuf::hash::fdir``. diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst index 3165307de9..82d392dec8 100644 --- a/doc/guides/rel_notes/release_20_11.rst +++ b/doc/guides/rel_notes/release_20_11.rst @@ -472,7 +472,8 @@ API Changes ``rte_eth_dev_filter_supported()`` and ``rte_eth_dev_filter_ctrl()``. * ethdev: Removed the legacy L2 tunnel configuration API, including - ``rte_eth_dev_l2_tunnel_eth_type_conf()``. + ``rte_eth_dev_l2_tunnel_eth_type_conf()`` and + ``rte_eth_dev_l2_tunnel_offload_set()``.. * vhost: Moved vDPA APIs from experimental to stable. diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index e6439719d1..edcb4d2d17 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -2339,13 +2339,6 @@ Where the threshold type can be: These threshold options are also available from the command-line. -port config - E-tag -~~~~~~~~~~~~~~~~~~~ - -Enable/disable the E-tag support:: - - testpmd> port config (port_id|all) l2-tunnel E-tag (enable|disable) - port config pctype mapping ~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 4918517b92..9c91b8cde8 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -348,12 +348,6 @@ static int ixgbe_timesync_write_time(struct rte_eth_dev *dev, const struct timespec *timestamp); static void ixgbevf_dev_interrupt_handler(void *param); -static int ixgbe_dev_l2_tunnel_offload_set - (struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel, - uint32_t mask, - uint8_t en); - static int ixgbe_dev_udp_tunnel_port_add(struct rte_eth_dev *dev, struct rte_eth_udp_tunnel *udp_tunnel); static int ixgbe_dev_udp_tunnel_port_del(struct rte_eth_dev *dev, @@ -562,7 +556,6 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops = { .timesync_adjust_time = ixgbe_timesync_adjust_time, .timesync_read_time = ixgbe_timesync_read_time, .timesync_write_time = ixgbe_timesync_write_time, - .l2_tunnel_offload_set = ixgbe_dev_l2_tunnel_offload_set, .udp_tunnel_port_add = ixgbe_dev_udp_tunnel_port_add, .udp_tunnel_port_del = ixgbe_dev_udp_tunnel_port_del, .tm_ops_get = ixgbe_tm_ops_get, @@ -7555,74 +7548,6 @@ ixgbe_e_tag_enable(struct ixgbe_hw *hw) return 0; } -/* Enable l2 tunnel */ -static int -ixgbe_dev_l2_tunnel_enable(struct rte_eth_dev *dev, - enum rte_eth_tunnel_type l2_tunnel_type) -{ - int ret = 0; - struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); - struct ixgbe_l2_tn_info *l2_tn_info = - IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private); - - switch (l2_tunnel_type) { - case RTE_L2_TUNNEL_TYPE_E_TAG: - l2_tn_info->e_tag_en = TRUE; - ret = ixgbe_e_tag_enable(hw); - break; - default: - PMD_DRV_LOG(ERR, "Invalid tunnel type"); - ret = -EINVAL; - break; - } - - return ret; -} - -/* Disable e-tag tunnel */ -static int -ixgbe_e_tag_disable(struct ixgbe_hw *hw) -{ - uint32_t etag_etype; - - if (hw->mac.type != ixgbe_mac_X550 && - hw->mac.type != ixgbe_mac_X550EM_x && - hw->mac.type != ixgbe_mac_X550EM_a) { - return -ENOTSUP; - } - - etag_etype = IXGBE_READ_REG(hw, IXGBE_ETAG_ETYPE); - etag_etype &= ~IXGBE_ETAG_ETYPE_VALID; - IXGBE_WRITE_REG(hw, IXGBE_ETAG_ETYPE, etag_etype); - IXGBE_WRITE_FLUSH(hw); - - return 0; -} - -/* Disable l2 tunnel */ -static int -ixgbe_dev_l2_tunnel_disable(struct rte_eth_dev *dev, - enum rte_eth_tunnel_type l2_tunnel_type) -{ - int ret = 0; - struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); - struct ixgbe_l2_tn_info *l2_tn_info = - IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private); - - switch (l2_tunnel_type) { - case RTE_L2_TUNNEL_TYPE_E_TAG: - l2_tn_info->e_tag_en = FALSE; - ret = ixgbe_e_tag_disable(hw); - break; - default: - PMD_DRV_LOG(ERR, "Invalid tunnel type"); - ret = -EINVAL; - break; - } - - return ret; -} - static int ixgbe_e_tag_filter_del(struct rte_eth_dev *dev, struct rte_eth_l2_tunnel_conf *l2_tunnel) @@ -7870,264 +7795,6 @@ ixgbe_e_tag_forwarding_en_dis(struct rte_eth_dev *dev, bool en) return ret; } -/* Enable l2 tunnel forwarding */ -static int -ixgbe_dev_l2_tunnel_forwarding_enable - (struct rte_eth_dev *dev, - enum rte_eth_tunnel_type l2_tunnel_type) -{ - struct ixgbe_l2_tn_info *l2_tn_info = - IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private); - int ret = 0; - - switch (l2_tunnel_type) { - case RTE_L2_TUNNEL_TYPE_E_TAG: - l2_tn_info->e_tag_fwd_en = TRUE; - ret = ixgbe_e_tag_forwarding_en_dis(dev, 1); - break; - default: - PMD_DRV_LOG(ERR, "Invalid tunnel type"); - ret = -EINVAL; - break; - } - - return ret; -} - -/* Disable l2 tunnel forwarding */ -static int -ixgbe_dev_l2_tunnel_forwarding_disable - (struct rte_eth_dev *dev, - enum rte_eth_tunnel_type l2_tunnel_type) -{ - struct ixgbe_l2_tn_info *l2_tn_info = - IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private); - int ret = 0; - - switch (l2_tunnel_type) { - case RTE_L2_TUNNEL_TYPE_E_TAG: - l2_tn_info->e_tag_fwd_en = FALSE; - ret = ixgbe_e_tag_forwarding_en_dis(dev, 0); - break; - default: - PMD_DRV_LOG(ERR, "Invalid tunnel type"); - ret = -EINVAL; - break; - } - - return ret; -} - -static int -ixgbe_e_tag_insertion_en_dis(struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel, - bool en) -{ - struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); - int ret = 0; - uint32_t vmtir, vmvir; - struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); - - if (l2_tunnel->vf_id >= pci_dev->max_vfs) { - PMD_DRV_LOG(ERR, - "VF id %u should be less than %u", - l2_tunnel->vf_id, - pci_dev->max_vfs); - return -EINVAL; - } - - if (hw->mac.type != ixgbe_mac_X550 && - hw->mac.type != ixgbe_mac_X550EM_x && - hw->mac.type != ixgbe_mac_X550EM_a) { - return -ENOTSUP; - } - - if (en) - vmtir = l2_tunnel->tunnel_id; - else - vmtir = 0; - - IXGBE_WRITE_REG(hw, IXGBE_VMTIR(l2_tunnel->vf_id), vmtir); - - vmvir = IXGBE_READ_REG(hw, IXGBE_VMVIR(l2_tunnel->vf_id)); - vmvir &= ~IXGBE_VMVIR_TAGA_MASK; - if (en) - vmvir |= IXGBE_VMVIR_TAGA_ETAG_INSERT; - IXGBE_WRITE_REG(hw, IXGBE_VMVIR(l2_tunnel->vf_id), vmvir); - - return ret; -} - -/* Enable l2 tunnel tag insertion */ -static int -ixgbe_dev_l2_tunnel_insertion_enable(struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel) -{ - int ret = 0; - - switch (l2_tunnel->l2_tunnel_type) { - case RTE_L2_TUNNEL_TYPE_E_TAG: - ret = ixgbe_e_tag_insertion_en_dis(dev, l2_tunnel, 1); - break; - default: - PMD_DRV_LOG(ERR, "Invalid tunnel type"); - ret = -EINVAL; - break; - } - - return ret; -} - -/* Disable l2 tunnel tag insertion */ -static int -ixgbe_dev_l2_tunnel_insertion_disable - (struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel) -{ - int ret = 0; - - switch (l2_tunnel->l2_tunnel_type) { - case RTE_L2_TUNNEL_TYPE_E_TAG: - ret = ixgbe_e_tag_insertion_en_dis(dev, l2_tunnel, 0); - break; - default: - PMD_DRV_LOG(ERR, "Invalid tunnel type"); - ret = -EINVAL; - break; - } - - return ret; -} - -static int -ixgbe_e_tag_stripping_en_dis(struct rte_eth_dev *dev, - bool en) -{ - int ret = 0; - uint32_t qde; - struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); - - if (hw->mac.type != ixgbe_mac_X550 && - hw->mac.type != ixgbe_mac_X550EM_x && - hw->mac.type != ixgbe_mac_X550EM_a) { - return -ENOTSUP; - } - - qde = IXGBE_READ_REG(hw, IXGBE_QDE); - if (en) - qde |= IXGBE_QDE_STRIP_TAG; - else - qde &= ~IXGBE_QDE_STRIP_TAG; - qde &= ~IXGBE_QDE_READ; - qde |= IXGBE_QDE_WRITE; - IXGBE_WRITE_REG(hw, IXGBE_QDE, qde); - - return ret; -} - -/* Enable l2 tunnel tag stripping */ -static int -ixgbe_dev_l2_tunnel_stripping_enable - (struct rte_eth_dev *dev, - enum rte_eth_tunnel_type l2_tunnel_type) -{ - int ret = 0; - - switch (l2_tunnel_type) { - case RTE_L2_TUNNEL_TYPE_E_TAG: - ret = ixgbe_e_tag_stripping_en_dis(dev, 1); - break; - default: - PMD_DRV_LOG(ERR, "Invalid tunnel type"); - ret = -EINVAL; - break; - } - - return ret; -} - -/* Disable l2 tunnel tag stripping */ -static int -ixgbe_dev_l2_tunnel_stripping_disable - (struct rte_eth_dev *dev, - enum rte_eth_tunnel_type l2_tunnel_type) -{ - int ret = 0; - - switch (l2_tunnel_type) { - case RTE_L2_TUNNEL_TYPE_E_TAG: - ret = ixgbe_e_tag_stripping_en_dis(dev, 0); - break; - default: - PMD_DRV_LOG(ERR, "Invalid tunnel type"); - ret = -EINVAL; - break; - } - - return ret; -} - -/* Enable/disable l2 tunnel offload functions */ -static int -ixgbe_dev_l2_tunnel_offload_set - (struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel, - uint32_t mask, - uint8_t en) -{ - int ret = 0; - - if (l2_tunnel == NULL) - return -EINVAL; - - ret = -EINVAL; - if (mask & ETH_L2_TUNNEL_ENABLE_MASK) { - if (en) - ret = ixgbe_dev_l2_tunnel_enable( - dev, - l2_tunnel->l2_tunnel_type); - else - ret = ixgbe_dev_l2_tunnel_disable( - dev, - l2_tunnel->l2_tunnel_type); - } - - if (mask & ETH_L2_TUNNEL_INSERTION_MASK) { - if (en) - ret = ixgbe_dev_l2_tunnel_insertion_enable( - dev, - l2_tunnel); - else - ret = ixgbe_dev_l2_tunnel_insertion_disable( - dev, - l2_tunnel); - } - - if (mask & ETH_L2_TUNNEL_STRIPPING_MASK) { - if (en) - ret = ixgbe_dev_l2_tunnel_stripping_enable( - dev, - l2_tunnel->l2_tunnel_type); - else - ret = ixgbe_dev_l2_tunnel_stripping_disable( - dev, - l2_tunnel->l2_tunnel_type); - } - - if (mask & ETH_L2_TUNNEL_FORWARDING_MASK) { - if (en) - ret = ixgbe_dev_l2_tunnel_forwarding_enable( - dev, - l2_tunnel->l2_tunnel_type); - else - ret = ixgbe_dev_l2_tunnel_forwarding_disable( - dev, - l2_tunnel->l2_tunnel_type); - } - - return ret; -} - static int ixgbe_update_vxlan_port(struct ixgbe_hw *hw, uint16_t port) diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index e5d0a18feb..c8f25f7c89 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -5317,38 +5317,6 @@ rte_eth_dev_get_dcb_info(uint16_t port_id, return eth_err(port_id, (*dev->dev_ops->get_dcb_info)(dev, dcb_info)); } -int -rte_eth_dev_l2_tunnel_offload_set(uint16_t port_id, - struct rte_eth_l2_tunnel_conf *l2_tunnel, - uint32_t mask, - uint8_t en) -{ - struct rte_eth_dev *dev; - - RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); - - if (l2_tunnel == NULL) { - RTE_ETHDEV_LOG(ERR, "Invalid l2_tunnel parameter\n"); - return -EINVAL; - } - - if (l2_tunnel->l2_tunnel_type >= RTE_TUNNEL_TYPE_MAX) { - RTE_ETHDEV_LOG(ERR, "Invalid tunnel type\n"); - return -EINVAL; - } - - if (mask == 0) { - RTE_ETHDEV_LOG(ERR, "Mask should have a value\n"); - return -EINVAL; - } - - dev = &rte_eth_devices[port_id]; - RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->l2_tunnel_offload_set, - -ENOTSUP); - return eth_err(port_id, (*dev->dev_ops->l2_tunnel_offload_set)(dev, - l2_tunnel, mask, en)); -} - static void eth_dev_adjust_nb_desc(uint16_t *nb_desc, const struct rte_eth_desc_lim *desc_lim) diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index dda75a82b3..ca694b793e 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -4627,36 +4627,6 @@ __rte_experimental int rte_eth_read_clock(uint16_t port_id, uint64_t *clock); -/** - * Enable/disable l2 tunnel offload functions. Include, - * 1, The ability of parsing a type of l2 tunnel of an Ethernet device. - * Filtering, forwarding and offloading this type of tunnel packets depend on - * this ability. - * 2, Stripping the l2 tunnel tag. - * 3, Insertion of the l2 tunnel tag. - * 4, Forwarding the packets based on the l2 tunnel tag. - * - * @param port_id - * The port identifier of the Ethernet device. - * @param l2_tunnel - * l2 tunnel parameters. - * @param mask - * Indicate the offload function. - * @param en - * Enable or disable this function. - * - * @return - * - (0) if successful. - * - (-ENODEV) if port identifier is invalid. - * - (-EIO) if device is removed. - * - (-ENOTSUP) if hardware doesn't support tunnel type. - */ -int -rte_eth_dev_l2_tunnel_offload_set(uint16_t port_id, - struct rte_eth_l2_tunnel_conf *l2_tunnel, - uint32_t mask, - uint8_t en); - /** * Get the port id from device name. The device name should be specified * as below: diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h index a69793dcb1..0eacfd8425 100644 --- a/lib/librte_ethdev/rte_ethdev_driver.h +++ b/lib/librte_ethdev/rte_ethdev_driver.h @@ -465,13 +465,6 @@ typedef int (*eth_get_module_eeprom_t)(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *info); /**< @internal Retrieve plugin module eeprom data */ -typedef int (*eth_l2_tunnel_offload_set_t) - (struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel, - uint32_t mask, - uint8_t en); -/**< @internal enable/disable the l2 tunnel offload functions */ - /** * Feature filter types */ @@ -849,8 +842,6 @@ struct eth_dev_ops { eth_udp_tunnel_port_add_t udp_tunnel_port_add; /** Add UDP tunnel port. */ eth_udp_tunnel_port_del_t udp_tunnel_port_del; /** Del UDP tunnel port. */ - eth_l2_tunnel_offload_set_t l2_tunnel_offload_set; - /** Enable/disable l2 tunnel offload functions. */ eth_set_queue_rate_limit_t set_queue_rate_limit; /**< Set queue rate limit. */ diff --git a/lib/librte_ethdev/version.map b/lib/librte_ethdev/version.map index 63f077a3eb..d3f5410806 100644 --- a/lib/librte_ethdev/version.map +++ b/lib/librte_ethdev/version.map @@ -30,7 +30,6 @@ DPDK_21 { rte_eth_dev_get_vlan_offload; rte_eth_dev_info_get; rte_eth_dev_is_valid_port; - rte_eth_dev_l2_tunnel_offload_set; rte_eth_dev_logtype; rte_eth_dev_mac_addr_add; rte_eth_dev_mac_addr_remove; From patchwork Thu Oct 22 10:06:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 81783 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D7AB2A04DD; Thu, 22 Oct 2020 12:07:38 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 14FBCA9C4; Thu, 22 Oct 2020 12:06:47 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [67.231.154.164]) by dpdk.org (Postfix) with ESMTP id 14EB4A9A1 for ; Thu, 22 Oct 2020 12:06:37 +0200 (CEST) Received: from mx1-us1.ppe-hosted.com (unknown [10.110.50.137]) by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id A2D8120061; Thu, 22 Oct 2020 10:06:35 +0000 (UTC) Received: from us4-mdac16-63.at1.mdlocal (unknown [10.110.50.156]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id A1A676009B; Thu, 22 Oct 2020 10:06:35 +0000 (UTC) X-Virus-Scanned: Proofpoint Essentials engine Received: from mx1-us1.ppe-hosted.com (unknown [10.110.49.32]) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 2514B220064; Thu, 22 Oct 2020 10:06:35 +0000 (UTC) Received: from webmail.solarflare.com (uk.solarflare.com [193.34.186.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id E186E280064; Thu, 22 Oct 2020 10:06:34 +0000 (UTC) Received: from ukex01.SolarFlarecom.com (10.17.10.4) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 22 Oct 2020 11:06:30 +0100 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 22 Oct 2020 11:06:30 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 09MA6Uw8016255; Thu, 22 Oct 2020 11:06:30 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 9C64F1613A9; Thu, 22 Oct 2020 11:06:30 +0100 (BST) From: Andrew Rybchenko To: Jeff Guo , Haiyue Wang , "Thomas Monjalon" , Ferruh Yigit , Andrew Rybchenko CC: Date: Thu, 22 Oct 2020 11:06:20 +0100 Message-ID: <1603361181-21556-4-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1603361181-21556-1-git-send-email-arybchenko@solarflare.com> References: <1603361181-21556-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.6.1012-25740.003 X-TM-AS-Result: No-1.732800-8.000000-10 X-TMASE-MatchedRID: rfk8EwZrOGm/kNGHVZrslklR2DE0NRdaeXZz1at5bOyKsTAa7Oe+YljI 3zmoXKKDIH2zryPqfYNw5T4Iaj538mJZXQNDzktSIAjxomarSPDYuVu0X/rOkBgxf9+T3i9bMFd dv+pLbreyiHjoKzXSzd5KdQvCHJZD5P8SrHH0jQTGL//8mlodAzB4tWHctlhIIYP4Wne9kdSi8Q AEcW7yzPTN0R3MdTGf8RldOeM/YZtY1B7Vsu7x2bixxDRpftwPx+jrF7TzRS0UE18jzz932mXge MJEe5CmDGa/pWDW//LhB5Iilm/06R8TzIzimOwPC24oEZ6SpSlR8RAUGq/SZw6lMloQ7G5h/UqU lKCT/t7MqMlNBsbqQn/bhc6YWDmRUh74nilwu20l7lxpy+ppNnu5mF0Ni82eV2enmgmQuBZhrvp bMU1/eOQDw6tgd3AMZ9iVj/KhX/RSnoQc5vb5zuQdkM7ndBLCO8/z8zQ+NO3AvpLE+mvX8g== X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10-1.732800-8.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.6.1012-25740.003 X-MDID: 1603361195-9aQq-fQSOWQD X-PPE-DISP: 1603361195;9aQq-fQSOWQD Subject: [dpdk-dev] [PATCH 3/3] ethdev: move L2 tunnel config structure to ixgbe driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" net/ixgbe driver is the only user of the struct rte_eth_l2_tunnel_conf. Move it to the driver and use ixgbe_ prefix instead of rte_eth_. Signed-off-by: Andrew Rybchenko Acked-by: Haiyue Wang --- drivers/net/ixgbe/ixgbe_ethdev.c | 12 ++++----- drivers/net/ixgbe/ixgbe_ethdev.h | 16 ++++++++++-- drivers/net/ixgbe/ixgbe_flow.c | 42 ++++++++++++++++---------------- lib/librte_ethdev/rte_eth_ctrl.h | 11 --------- 4 files changed, 41 insertions(+), 40 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 9c91b8cde8..23baa5e9c5 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -7550,7 +7550,7 @@ ixgbe_e_tag_enable(struct ixgbe_hw *hw) static int ixgbe_e_tag_filter_del(struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel) + struct ixgbe_l2_tunnel_conf *l2_tunnel) { int ret = 0; struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -7586,7 +7586,7 @@ ixgbe_e_tag_filter_del(struct rte_eth_dev *dev, static int ixgbe_e_tag_filter_add(struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel) + struct ixgbe_l2_tunnel_conf *l2_tunnel) { int ret = 0; struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -7690,7 +7690,7 @@ ixgbe_remove_l2_tn_filter(struct ixgbe_l2_tn_info *l2_tn_info, /* Add l2 tunnel filter */ int ixgbe_dev_l2_tunnel_filter_add(struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel, + struct ixgbe_l2_tunnel_conf *l2_tunnel, bool restore) { int ret; @@ -7747,7 +7747,7 @@ ixgbe_dev_l2_tunnel_filter_add(struct rte_eth_dev *dev, /* Delete l2 tunnel filter */ int ixgbe_dev_l2_tunnel_filter_del(struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel) + struct ixgbe_l2_tunnel_conf *l2_tunnel) { int ret; struct ixgbe_l2_tn_info *l2_tn_info = @@ -8169,7 +8169,7 @@ ixgbe_l2_tn_filter_restore(struct rte_eth_dev *dev) struct ixgbe_l2_tn_info *l2_tn_info = IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private); struct ixgbe_l2_tn_filter *node; - struct rte_eth_l2_tunnel_conf l2_tn_conf; + struct ixgbe_l2_tunnel_conf l2_tn_conf; TAILQ_FOREACH(node, &l2_tn_info->l2_tn_list, entries) { l2_tn_conf.l2_tunnel_type = node->key.l2_tn_type; @@ -8276,7 +8276,7 @@ ixgbe_clear_all_l2_tn_filter(struct rte_eth_dev *dev) struct ixgbe_l2_tn_info *l2_tn_info = IXGBE_DEV_PRIVATE_TO_L2_TN_INFO(dev->data->dev_private); struct ixgbe_l2_tn_filter *l2_tn_filter; - struct rte_eth_l2_tunnel_conf l2_tn_conf; + struct ixgbe_l2_tunnel_conf l2_tn_conf; int ret = 0; while ((l2_tn_filter = TAILQ_FIRST(&l2_tn_info->l2_tn_list))) { diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_ethdev.h index a4f7d184b5..ff0ab78f5d 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.h +++ b/drivers/net/ixgbe/ixgbe_ethdev.h @@ -678,13 +678,25 @@ int ixgbe_add_del_ethertype_filter(struct rte_eth_dev *dev, int ixgbe_syn_filter_set(struct rte_eth_dev *dev, struct rte_eth_syn_filter *filter, bool add); + +/** + * l2 tunnel configuration. + */ +struct ixgbe_l2_tunnel_conf { + enum rte_eth_tunnel_type l2_tunnel_type; + uint16_t ether_type; /* ether type in l2 header */ + uint32_t tunnel_id; /* port tag id for e-tag */ + uint16_t vf_id; /* VF id for tag insertion */ + uint32_t pool; /* destination pool for tag based forwarding */ +}; + int ixgbe_dev_l2_tunnel_filter_add(struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel, + struct ixgbe_l2_tunnel_conf *l2_tunnel, bool restore); int ixgbe_dev_l2_tunnel_filter_del(struct rte_eth_dev *dev, - struct rte_eth_l2_tunnel_conf *l2_tunnel); + struct ixgbe_l2_tunnel_conf *l2_tunnel); void ixgbe_filterlist_init(void); void ixgbe_filterlist_flush(void); /* diff --git a/drivers/net/ixgbe/ixgbe_flow.c b/drivers/net/ixgbe/ixgbe_flow.c index 6b3dea46ee..dff04c462c 100644 --- a/drivers/net/ixgbe/ixgbe_flow.c +++ b/drivers/net/ixgbe/ixgbe_flow.c @@ -72,7 +72,7 @@ struct ixgbe_fdir_rule_ele { /* l2_tunnel filter list structure */ struct ixgbe_eth_l2_tunnel_conf_ele { TAILQ_ENTRY(ixgbe_eth_l2_tunnel_conf_ele) entries; - struct rte_eth_l2_tunnel_conf filter_info; + struct ixgbe_l2_tunnel_conf filter_info; }; /* rss filter list structure */ struct ixgbe_rss_conf_ele { @@ -1197,7 +1197,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], - struct rte_eth_l2_tunnel_conf *filter, + struct ixgbe_l2_tunnel_conf *filter, struct rte_flow_error *error) { const struct rte_flow_item *item; @@ -1231,7 +1231,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, /* The first not void item should be e-tag. */ item = next_no_void_pattern(pattern, NULL); if (item->type != RTE_FLOW_ITEM_TYPE_E_TAG) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Not supported by L2 tunnel filter"); @@ -1239,7 +1239,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, } if (!item->spec || !item->mask) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Not supported by L2 tunnel filter"); return -rte_errno; @@ -1261,7 +1261,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, e_tag_mask->in_ecid_e || e_tag_mask->ecid_e || e_tag_mask->rsvd_grp_ecid_b != rte_cpu_to_be_16(0x3FFF)) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Not supported by L2 tunnel filter"); @@ -1278,7 +1278,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, /* check if the next not void item is END */ item = next_no_void_pattern(pattern, item); if (item->type != RTE_FLOW_ITEM_TYPE_END) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Not supported by L2 tunnel filter"); @@ -1288,7 +1288,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, /* parse attr */ /* must be input direction */ if (!attr->ingress) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ATTR_INGRESS, attr, "Only support ingress."); @@ -1297,7 +1297,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, /* not supported */ if (attr->egress) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ATTR_EGRESS, attr, "Not support egress."); @@ -1306,7 +1306,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, /* not supported */ if (attr->transfer) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ATTR_TRANSFER, attr, "No support for transfer."); @@ -1315,7 +1315,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, /* not supported */ if (attr->priority) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY, attr, "Not support priority."); @@ -1326,7 +1326,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, act = next_no_void_action(actions, NULL); if (act->type != RTE_FLOW_ACTION_TYPE_VF && act->type != RTE_FLOW_ACTION_TYPE_PF) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, act, "Not supported action."); @@ -1343,7 +1343,7 @@ cons_parse_l2_tn_filter(struct rte_eth_dev *dev, /* check if the next not void item is END */ act = next_no_void_action(actions, act); if (act->type != RTE_FLOW_ACTION_TYPE_END) { - memset(filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, act, "Not supported action."); @@ -1358,7 +1358,7 @@ ixgbe_parse_l2_tn_filter(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], - struct rte_eth_l2_tunnel_conf *l2_tn_filter, + struct ixgbe_l2_tunnel_conf *l2_tn_filter, struct rte_flow_error *error) { int ret = 0; @@ -1372,7 +1372,7 @@ ixgbe_parse_l2_tn_filter(struct rte_eth_dev *dev, if (hw->mac.type != ixgbe_mac_X550 && hw->mac.type != ixgbe_mac_X550EM_x && hw->mac.type != ixgbe_mac_X550EM_a) { - memset(l2_tn_filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(l2_tn_filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, NULL, "Not supported by L2 tunnel filter"); @@ -3023,7 +3023,7 @@ ixgbe_flow_create(struct rte_eth_dev *dev, struct rte_eth_ethertype_filter ethertype_filter; struct rte_eth_syn_filter syn_filter; struct ixgbe_fdir_rule fdir_rule; - struct rte_eth_l2_tunnel_conf l2_tn_filter; + struct ixgbe_l2_tunnel_conf l2_tn_filter; struct ixgbe_hw_fdir_info *fdir_info = IXGBE_DEV_PRIVATE_TO_FDIR_INFO(dev->data->dev_private); struct ixgbe_rte_flow_rss_conf rss_conf; @@ -3211,7 +3211,7 @@ ixgbe_flow_create(struct rte_eth_dev *dev, goto out; } - memset(&l2_tn_filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(&l2_tn_filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); ret = ixgbe_parse_l2_tn_filter(dev, attr, pattern, actions, &l2_tn_filter, error); if (!ret) { @@ -3225,7 +3225,7 @@ ixgbe_flow_create(struct rte_eth_dev *dev, } rte_memcpy(&l2_tn_filter_ptr->filter_info, &l2_tn_filter, - sizeof(struct rte_eth_l2_tunnel_conf)); + sizeof(struct ixgbe_l2_tunnel_conf)); TAILQ_INSERT_TAIL(&filter_l2_tunnel_list, l2_tn_filter_ptr, entries); flow->rule = l2_tn_filter_ptr; @@ -3282,7 +3282,7 @@ ixgbe_flow_validate(struct rte_eth_dev *dev, struct rte_eth_ntuple_filter ntuple_filter; struct rte_eth_ethertype_filter ethertype_filter; struct rte_eth_syn_filter syn_filter; - struct rte_eth_l2_tunnel_conf l2_tn_filter; + struct ixgbe_l2_tunnel_conf l2_tn_filter; struct ixgbe_fdir_rule fdir_rule; struct ixgbe_rte_flow_rss_conf rss_conf; int ret; @@ -3311,7 +3311,7 @@ ixgbe_flow_validate(struct rte_eth_dev *dev, if (!ret) return 0; - memset(&l2_tn_filter, 0, sizeof(struct rte_eth_l2_tunnel_conf)); + memset(&l2_tn_filter, 0, sizeof(struct ixgbe_l2_tunnel_conf)); ret = ixgbe_parse_l2_tn_filter(dev, attr, pattern, actions, &l2_tn_filter, error); if (!ret) @@ -3337,7 +3337,7 @@ ixgbe_flow_destroy(struct rte_eth_dev *dev, struct rte_eth_ethertype_filter ethertype_filter; struct rte_eth_syn_filter syn_filter; struct ixgbe_fdir_rule fdir_rule; - struct rte_eth_l2_tunnel_conf l2_tn_filter; + struct ixgbe_l2_tunnel_conf l2_tn_filter; struct ixgbe_ntuple_filter_ele *ntuple_filter_ptr; struct ixgbe_ethertype_filter_ele *ethertype_filter_ptr; struct ixgbe_eth_syn_filter_ele *syn_filter_ptr; @@ -3407,7 +3407,7 @@ ixgbe_flow_destroy(struct rte_eth_dev *dev, l2_tn_filter_ptr = (struct ixgbe_eth_l2_tunnel_conf_ele *) pmd_flow->rule; rte_memcpy(&l2_tn_filter, &l2_tn_filter_ptr->filter_info, - sizeof(struct rte_eth_l2_tunnel_conf)); + sizeof(struct ixgbe_l2_tunnel_conf)); ret = ixgbe_dev_l2_tunnel_filter_del(dev, &l2_tn_filter); if (!ret) { TAILQ_REMOVE(&filter_l2_tunnel_list, diff --git a/lib/librte_ethdev/rte_eth_ctrl.h b/lib/librte_ethdev/rte_eth_ctrl.h index 012e8059ad..1cca522fa3 100644 --- a/lib/librte_ethdev/rte_eth_ctrl.h +++ b/lib/librte_ethdev/rte_eth_ctrl.h @@ -486,17 +486,6 @@ struct rte_eth_fdir_stats { uint32_t best_cnt; /**< Number of filters in best effort spaces. */ }; -/** - * l2 tunnel configuration. - */ -struct rte_eth_l2_tunnel_conf { - enum rte_eth_tunnel_type l2_tunnel_type; - uint16_t ether_type; /* ether type in l2 header */ - uint32_t tunnel_id; /* port tag id for e-tag */ - uint16_t vf_id; /* VF id for tag insertion */ - uint32_t pool; /* destination pool for tag based forwarding */ -}; - #ifdef __cplusplus } #endif