From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <jingjing.wu@intel.com>
Received: from mga07.intel.com (mga07.intel.com [134.134.136.100])
 by dpdk.org (Postfix) with ESMTP id 6DC082B9C
 for <dev@dpdk.org>; Fri,  6 Jan 2017 02:21:58 +0100 (CET)
Received: from fmsmga002.fm.intel.com ([10.253.24.26])
 by orsmga105.jf.intel.com with ESMTP; 05 Jan 2017 17:21:53 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.33,323,1477983600"; d="scan'208";a="1108636334"
Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202])
 by fmsmga002.fm.intel.com with ESMTP; 05 Jan 2017 17:21:53 -0800
Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by
 fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS)
 id 14.3.248.2; Thu, 5 Jan 2017 17:21:52 -0800
Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by
 fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS)
 id 14.3.248.2; Thu, 5 Jan 2017 17:21:52 -0800
Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.20]) by
 SHSMSX104.ccr.corp.intel.com ([10.239.4.70]) with mapi id 14.03.0248.002;
 Fri, 6 Jan 2017 09:21:50 +0800
From: "Wu, Jingjing" <jingjing.wu@intel.com>
To: "Lu, Wenzhuo" <wenzhuo.lu@intel.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: "Lu, Wenzhuo" <wenzhuo.lu@intel.com>
Thread-Topic: [dpdk-dev] [PATCH v7 19/27] app/testpmd: use unicast
 promiscuous	mode on i40e
Thread-Index: AQHSZY813oUGm50LYUGFblfRQJKYwKEqqkyg
Date: Fri, 6 Jan 2017 01:21:49 +0000
Message-ID: <9BB6961774997848B5B42BEC655768F810CC3DFB@SHSMSX103.ccr.corp.intel.com>
References: <1480637533-37425-1-git-send-email-wenzhuo.lu@intel.com>
 <1483426488-117332-1-git-send-email-wenzhuo.lu@intel.com>
 <1483426488-117332-20-git-send-email-wenzhuo.lu@intel.com>
In-Reply-To: <1483426488-117332-20-git-send-email-wenzhuo.lu@intel.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.239.127.40]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Subject: Re: [dpdk-dev] [PATCH v7 19/27] app/testpmd: use unicast
 promiscuous	mode on i40e
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 06 Jan 2017 01:21:59 -0000



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wenzhuo Lu
> Sent: Tuesday, January 3, 2017 2:55 PM
> To: dev@dpdk.org
> Cc: Lu, Wenzhuo <wenzhuo.lu@intel.com>
> Subject: [dpdk-dev] [PATCH v7 19/27] app/testpmd: use unicast promiscuous
> mode on i40e
>=20
> Add testpmd CLI to set VF unicast promiscuous mode on i40e.
>=20
> Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
> ---
>  app/test-pmd/cmdline.c                      | 93 +++++++++++++++++++++++=
++++++
>  doc/guides/testpmd_app_ug/testpmd_funcs.rst |  9 +++
>  2 files changed, 102 insertions(+)
>=20
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 9a44b4f..affe9d1 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -400,6 +400,9 @@ static void cmd_help_long_parsed(void *parsed_result,
>  			"set allmulti (port_id|all) (on|off)\n"
>  			"    Set the allmulti mode on port_id, or all.\n\n"
>=20
> +			"set vf promisc (port_id) (vf_id) (on|off)\n"
> +			"    Set unicast promiscuous mode for a VF from the
> PF.\n\n"
> +
>  			"set flow_ctrl rx (on|off) tx (on|off) (high_water)"
>  			" (low_water) (pause_time) (send_xon)
> mac_ctrl_frame_fwd"
>  			" (on|off) autoneg (on|off) (port_id)\n"
> @@ -11559,6 +11562,95 @@ struct cmd_set_vf_mac_addr_result {
>  	},
>  };
>=20
> +/* VF unicast promiscuous mode configuration */
> +
> +/* Common result structure for VF unicast promiscuous mode */ struct
> +cmd_vf_promisc_result {
> +	cmdline_fixed_string_t set;
> +	cmdline_fixed_string_t vf;
> +	cmdline_fixed_string_t promisc;
> +	uint8_t port_id;
> +	uint32_t vf_id;
> +	cmdline_fixed_string_t on_off;
> +};
> +
> +/* Common CLI fields for VF unicast promiscuous mode enable disable */
> +cmdline_parse_token_string_t cmd_vf_promisc_set =3D
> +	TOKEN_STRING_INITIALIZER
> +		(struct cmd_vf_promisc_result,
> +		 set, "set");
> +cmdline_parse_token_string_t cmd_vf_promisc_vf =3D
> +	TOKEN_STRING_INITIALIZER
> +		(struct cmd_vf_promisc_result,
> +		 vf, "vf");
> +cmdline_parse_token_string_t cmd_vf_promisc_promisc =3D
> +	TOKEN_STRING_INITIALIZER
> +		(struct cmd_vf_promisc_result,
> +		 promisc, "promisc");
> +cmdline_parse_token_num_t cmd_vf_promisc_port_id =3D
> +	TOKEN_NUM_INITIALIZER
> +		(struct cmd_vf_promisc_result,
> +		 port_id, UINT8);
> +cmdline_parse_token_num_t cmd_vf_promisc_vf_id =3D
> +	TOKEN_NUM_INITIALIZER
> +		(struct cmd_vf_promisc_result,
> +		 vf_id, UINT32);
> +cmdline_parse_token_string_t cmd_vf_promisc_on_off =3D
> +	TOKEN_STRING_INITIALIZER
> +		(struct cmd_vf_promisc_result,
> +		 on_off, "on#off");
> +
> +static void
> +cmd_set_vf_promisc_parsed(
> +	void *parsed_result,
> +	__attribute__((unused)) struct cmdline *cl,
> +	__attribute__((unused)) void *data)
> +{
> +	struct cmd_vf_promisc_result *res =3D parsed_result;
> +	int ret =3D -ENOTSUP;
> +
> +	__rte_unused int is_on =3D (strcmp(res->on_off, "on") =3D=3D 0) ? 1 : 0=
;
> +
> +	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
> +		return;
> +
> +#ifdef RTE_LIBRTE_I40E_PMD
> +	ret =3D rte_pmd_i40e_set_vf_unicast_promisc(res->port_id,
> +			res->vf_id, is_on);
> +#endif
> +

It's better to wrap the command by +#ifdef RTE_LIBRTE_I40E_PMD #endif
Or at least, need to check if the port is handled i40e pmd.