From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id D112D5A40 for ; Fri, 5 Jun 2015 10:16:16 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP; 05 Jun 2015 01:16:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,557,1427785200"; d="scan'208";a="705776184" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by orsmga001.jf.intel.com with ESMTP; 05 Jun 2015 01:16:15 -0700 Received: from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com [10.239.29.89]) by shvmail01.sh.intel.com with ESMTP id t558GCuk025951; Fri, 5 Jun 2015 16:16:12 +0800 Received: from shecgisg004.sh.intel.com (localhost [127.0.0.1]) by shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id t558G9pE030799; Fri, 5 Jun 2015 16:16:11 +0800 Received: (from wujingji@localhost) by shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id t558G9Gg030795; Fri, 5 Jun 2015 16:16:09 +0800 From: Jingjing Wu To: dev@dpdk.org Date: Fri, 5 Jun 2015 16:16:03 +0800 Message-Id: <1433492166-30758-2-git-send-email-jingjing.wu@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1433492166-30758-1-git-send-email-jingjing.wu@intel.com> References: <1433231760-30315-1-git-send-email-jingjing.wu@intel.com> <1433492166-30758-1-git-send-email-jingjing.wu@intel.com> Subject: [dpdk-dev] [PATCH v3 1/4] ethdev: rename rte_eth_vmdq_mirror_conf X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Jun 2015 08:16:17 -0000 rename rte_eth_vmdq_mirror_conf to rte_eth_mirror_conf and move the maximum rule id check from ethdev level to driver Signed-off-by: Jingjing Wu --- app/test-pmd/cmdline.c | 22 +++++++++++----------- drivers/net/ixgbe/ixgbe_ethdev.c | 11 +++++++---- drivers/net/ixgbe/ixgbe_ethdev.h | 4 +++- lib/librte_ether/rte_ethdev.c | 18 ++---------------- lib/librte_ether/rte_ethdev.h | 19 ++++++++++--------- 5 files changed, 33 insertions(+), 41 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index f01db2a..d693bde 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -6604,11 +6604,11 @@ cmd_set_mirror_mask_parsed(void *parsed_result, { int ret,nb_item,i; struct cmd_set_mirror_mask_result *res = parsed_result; - struct rte_eth_vmdq_mirror_conf mr_conf; + struct rte_eth_mirror_conf mr_conf; - memset(&mr_conf,0,sizeof(struct rte_eth_vmdq_mirror_conf)); + memset(&mr_conf, 0, sizeof(struct rte_eth_mirror_conf)); - unsigned int vlan_list[ETH_VMDQ_MAX_VLAN_FILTERS]; + unsigned int vlan_list[ETH_MIRROR_MAX_VLANS]; mr_conf.dst_pool = res->dstpool_id; @@ -6618,11 +6618,11 @@ cmd_set_mirror_mask_parsed(void *parsed_result, } else if(!strcmp(res->what, "vlan-mirror")) { mr_conf.rule_type_mask = ETH_VMDQ_VLAN_MIRROR; nb_item = parse_item_list(res->value, "core", - ETH_VMDQ_MAX_VLAN_FILTERS,vlan_list,1); + ETH_MIRROR_MAX_VLANS, vlan_list, 1); if (nb_item <= 0) return; - for(i=0; i < nb_item; i++) { + for (i = 0; i < nb_item; i++) { if (vlan_list[i] > ETHER_MAX_VLAN_ID) { printf("Invalid vlan_id: must be < 4096\n"); return; @@ -6634,10 +6634,10 @@ cmd_set_mirror_mask_parsed(void *parsed_result, } if(!strcmp(res->on, "on")) - ret = rte_eth_mirror_rule_set(res->port_id,&mr_conf, + ret = rte_eth_mirror_rule_set(res->port_id, &mr_conf, res->rule_id, 1); else - ret = rte_eth_mirror_rule_set(res->port_id,&mr_conf, + ret = rte_eth_mirror_rule_set(res->port_id, &mr_conf, res->rule_id, 0); if(ret < 0) printf("mirror rule add error: (%s)\n", strerror(-ret)); @@ -6711,9 +6711,9 @@ cmd_set_mirror_link_parsed(void *parsed_result, { int ret; struct cmd_set_mirror_link_result *res = parsed_result; - struct rte_eth_vmdq_mirror_conf mr_conf; + struct rte_eth_mirror_conf mr_conf; - memset(&mr_conf,0,sizeof(struct rte_eth_vmdq_mirror_conf)); + memset(&mr_conf, 0, sizeof(struct rte_eth_mirror_conf)); if(!strcmp(res->what, "uplink-mirror")) { mr_conf.rule_type_mask = ETH_VMDQ_UPLINK_MIRROR; }else if(!strcmp(res->what, "downlink-mirror")) @@ -6722,10 +6722,10 @@ cmd_set_mirror_link_parsed(void *parsed_result, mr_conf.dst_pool = res->dstpool_id; if(!strcmp(res->on, "on")) - ret = rte_eth_mirror_rule_set(res->port_id,&mr_conf, + ret = rte_eth_mirror_rule_set(res->port_id, &mr_conf, res->rule_id, 1); else - ret = rte_eth_mirror_rule_set(res->port_id,&mr_conf, + ret = rte_eth_mirror_rule_set(res->port_id, &mr_conf, res->rule_id, 0); /* check the return value and print it if is < 0 */ diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 0d9f9b2..9e767fa 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -209,7 +209,7 @@ static int ixgbe_set_pool_tx(struct rte_eth_dev *dev,uint16_t pool,uint8_t on); static int ixgbe_set_pool_vlan_filter(struct rte_eth_dev *dev, uint16_t vlan, uint64_t pool_mask,uint8_t vlan_on); static int ixgbe_mirror_rule_set(struct rte_eth_dev *dev, - struct rte_eth_vmdq_mirror_conf *mirror_conf, + struct rte_eth_mirror_conf *mirror_conf, uint8_t rule_id, uint8_t on); static int ixgbe_mirror_rule_reset(struct rte_eth_dev *dev, uint8_t rule_id); @@ -3388,7 +3388,7 @@ ixgbe_set_pool_vlan_filter(struct rte_eth_dev *dev, uint16_t vlan, static int ixgbe_mirror_rule_set(struct rte_eth_dev *dev, - struct rte_eth_vmdq_mirror_conf *mirror_conf, + struct rte_eth_mirror_conf *mirror_conf, uint8_t rule_id, uint8_t on) { uint32_t mr_ctl,vlvf; @@ -3412,7 +3412,10 @@ ixgbe_mirror_rule_set(struct rte_eth_dev *dev, IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); if (ixgbe_vmdq_mode_check(hw) < 0) - return (-ENOTSUP); + return -ENOTSUP; + + if (rule_id >= IXGBE_MAX_MIRROR_RULES) + return -EINVAL; /* Check if vlan mask is valid */ if ((mirror_conf->rule_type_mask & ETH_VMDQ_VLAN_MIRROR) && (on)) { @@ -3526,7 +3529,7 @@ ixgbe_mirror_rule_reset(struct rte_eth_dev *dev, uint8_t rule_id) return (-ENOTSUP); memset(&mr_info->mr_conf[rule_id], 0, - sizeof(struct rte_eth_vmdq_mirror_conf)); + sizeof(struct rte_eth_mirror_conf)); /* clear PFVMCTL register */ IXGBE_WRITE_REG(hw, IXGBE_MRCTL(rule_id), mr_ctl); diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_ethdev.h index 19237b8..755b674 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.h +++ b/drivers/net/ixgbe/ixgbe_ethdev.h @@ -177,8 +177,10 @@ struct ixgbe_uta_info { uint32_t uta_shadow[IXGBE_MAX_UTA]; }; +#define IXGBE_MAX_MIRROR_RULES 4 /* Maximum nb. of mirror rules. */ + struct ixgbe_mirror_info { - struct rte_eth_vmdq_mirror_conf mr_conf[ETH_VMDQ_NUM_MIRROR_RULE]; + struct rte_eth_mirror_conf mr_conf[IXGBE_MAX_MIRROR_RULES]; /**< store PF mirror rules configuration*/ }; diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index 024fe8b..43c7295 100644 --- a/lib/librte_ether/rte_ethdev.c +++ b/lib/librte_ether/rte_ethdev.c @@ -3034,7 +3034,7 @@ int rte_eth_set_vf_rate_limit(uint8_t port_id, uint16_t vf, uint16_t tx_rate, int rte_eth_mirror_rule_set(uint8_t port_id, - struct rte_eth_vmdq_mirror_conf *mirror_conf, + struct rte_eth_mirror_conf *mirror_conf, uint8_t rule_id, uint8_t on) { struct rte_eth_dev *dev = &rte_eth_devices[port_id]; @@ -3051,7 +3051,7 @@ rte_eth_mirror_rule_set(uint8_t port_id, if (mirror_conf->dst_pool >= ETH_64_POOLS) { PMD_DEBUG_TRACE("Invalid dst pool, pool id must" - "be 0-%d\n",ETH_64_POOLS - 1); + "be 0-%d\n", ETH_64_POOLS - 1); return -EINVAL; } @@ -3062,13 +3062,6 @@ rte_eth_mirror_rule_set(uint8_t port_id, return -EINVAL; } - if(rule_id >= ETH_VMDQ_NUM_MIRROR_RULE) - { - PMD_DEBUG_TRACE("Invalid rule_id, rule_id must be 0-%d\n", - ETH_VMDQ_NUM_MIRROR_RULE - 1); - return -EINVAL; - } - dev = &rte_eth_devices[port_id]; FUNC_PTR_OR_ERR_RET(*dev->dev_ops->mirror_rule_set, -ENOTSUP); @@ -3085,13 +3078,6 @@ rte_eth_mirror_rule_reset(uint8_t port_id, uint8_t rule_id) return -ENODEV; } - if(rule_id >= ETH_VMDQ_NUM_MIRROR_RULE) - { - PMD_DEBUG_TRACE("Invalid rule_id, rule_id must be 0-%d\n", - ETH_VMDQ_NUM_MIRROR_RULE-1); - return -EINVAL; - } - dev = &rte_eth_devices[port_id]; FUNC_PTR_OR_ERR_RET(*dev->dev_ops->mirror_rule_reset, -ENOTSUP); diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index 16dbe00..ae22fea 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -467,8 +467,8 @@ struct rte_eth_rss_conf { #define ETH_VMDQ_ACCEPT_BROADCAST 0x0008 /**< accept broadcast packets. */ #define ETH_VMDQ_ACCEPT_MULTICAST 0x0010 /**< multicast promiscuous. */ -/* Definitions used for VMDQ mirror rules setting */ -#define ETH_VMDQ_NUM_MIRROR_RULE 4 /**< Maximum nb. of mirror rules. . */ +/** Maximum nb. of vlan per mirror rule */ +#define ETH_MIRROR_MAX_VLANS 64 #define ETH_VMDQ_POOL_MIRROR 0x0001 /**< Virtual Pool Mirroring. */ #define ETH_VMDQ_UPLINK_MIRROR 0x0002 /**< Uplink Port Mirroring. */ @@ -480,18 +480,19 @@ struct rte_eth_rss_conf { */ struct rte_eth_vlan_mirror { uint64_t vlan_mask; /**< mask for valid VLAN ID. */ - uint16_t vlan_id[ETH_VMDQ_MAX_VLAN_FILTERS]; - /** VLAN ID list for vlan mirror. */ + /** VLAN ID list for vlan mirroring. */ + uint16_t vlan_id[ETH_MIRROR_MAX_VLANS]; }; /** * A structure used to configure traffic mirror of an Ethernet port. */ -struct rte_eth_vmdq_mirror_conf { +struct rte_eth_mirror_conf { uint8_t rule_type_mask; /**< Mirroring rule type mask we want to set */ - uint8_t dst_pool; /**< Destination pool for this mirror rule. */ + uint8_t dst_pool; /**< Destination pool for this mirror rule. */ uint64_t pool_mask; /**< Bitmap of pool for pool mirroring */ - struct rte_eth_vlan_mirror vlan; /**< VLAN ID setting for VLAN mirroring */ + /** VLAN ID setting for VLAN mirroring. */ + struct rte_eth_vlan_mirror vlan; }; /** @@ -1211,7 +1212,7 @@ typedef int (*eth_set_vf_rate_limit_t)(struct rte_eth_dev *dev, /**< @internal Set VF TX rate */ typedef int (*eth_mirror_rule_set_t)(struct rte_eth_dev *dev, - struct rte_eth_vmdq_mirror_conf *mirror_conf, + struct rte_eth_mirror_conf *mirror_conf, uint8_t rule_id, uint8_t on); /**< @internal Add a traffic mirroring rule on an Ethernet device */ @@ -3168,7 +3169,7 @@ rte_eth_dev_set_vf_vlan_filter(uint8_t port, uint16_t vlan_id, * - (-EINVAL) if the mr_conf information is not correct. */ int rte_eth_mirror_rule_set(uint8_t port_id, - struct rte_eth_vmdq_mirror_conf *mirror_conf, + struct rte_eth_mirror_conf *mirror_conf, uint8_t rule_id, uint8_t on); -- 1.9.3