From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 03C3E7F34 for ; Thu, 30 Oct 2014 00:17:32 +0100 (CET) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP; 29 Oct 2014 16:20:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,280,1413270000"; d="scan'208";a="613739613" Received: from pgsmsx101.gar.corp.intel.com ([10.221.44.78]) by fmsmga001.fm.intel.com with ESMTP; 29 Oct 2014 16:26:16 -0700 Received: from pgsmsx105.gar.corp.intel.com (10.221.44.96) by PGSMSX101.gar.corp.intel.com (10.221.44.78) with Microsoft SMTP Server (TLS) id 14.3.195.1; Thu, 30 Oct 2014 07:26:15 +0800 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by pgsmsx105.gar.corp.intel.com (10.221.44.96) with Microsoft SMTP Server (TLS) id 14.3.195.1; Thu, 30 Oct 2014 07:26:14 +0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.202]) by shsmsx102.ccr.corp.intel.com ([169.254.2.156]) with mapi id 14.03.0195.001; Thu, 30 Oct 2014 07:26:14 +0800 From: "Xie, Huawei" To: "Ouyang, Changchun" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v2 3/5] vhost: enable promisc mode and config VMDQ offload register for multicast feature Thread-Index: AQHP8ZiWaTe6iUB4qUqeWNzwnR/mzZxHupLA Date: Wed, 29 Oct 2014 23:26:14 +0000 Message-ID: References: <1408932572-10343-1-git-send-email-changchun.ouyang@intel.com> <1414381533-30370-1-git-send-email-changchun.ouyang@intel.com> <1414381533-30370-4-git-send-email-changchun.ouyang@intel.com> In-Reply-To: <1414381533-30370-4-git-send-email-changchun.ouyang@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 v2 3/5] vhost: enable promisc mode and config VMDQ offload register for multicast feature 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: Wed, 29 Oct 2014 23:17:34 -0000 > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ouyang Changchun > Sent: Sunday, October 26, 2014 8:46 PM > To: dev@dpdk.org > Subject: [dpdk-dev] [PATCH v2 3/5] vhost: enable promisc mode and config > VMDQ offload register for multicast feature >=20 > This patch is to let vhost receive and forward multicast and broadcast pa= ckets, > add promiscuous option into command line; and set VMDQ RX mode as: > ETH_VMDQ_ACCEPT_BROADCAST|ETH_VMDQ_ACCEPT_MULTICAST if promisc > mode is on. >=20 > Signed-off-by: Changchun Ouyang > --- > examples/vhost/main.c | 25 ++++++++++++++++++++++--- > lib/librte_vhost/virtio-net.c | 4 +++- > 2 files changed, 25 insertions(+), 4 deletions(-) >=20 > diff --git a/examples/vhost/main.c b/examples/vhost/main.c > index 291128e..c4947f7 100644 > --- a/examples/vhost/main.c > +++ b/examples/vhost/main.c > @@ -161,6 +161,9 @@ > /* mask of enabled ports */ > static uint32_t enabled_port_mask =3D 0; >=20 > +/* Ports set in promiscuous mode off by default. */ comment is confusing > +static uint32_t promiscuous_on; > + > /*Number of switching cores enabled*/ > static uint32_t num_switching_cores =3D 0; Don't initialize static variables to zero/NULL >=20 > @@ -274,6 +277,7 @@ static struct rte_eth_conf vmdq_conf_default =3D { > .enable_default_pool =3D 0, > .default_pool =3D 0, > .nb_pool_maps =3D 0, > + .rx_mode =3D 0, > .pool_map =3D {{0, 0},}, > }, > }, Same as above, do we need to initialize static var? > @@ -364,13 +368,15 @@ static inline int > get_eth_conf(struct rte_eth_conf *eth_conf, uint32_t num_devices) > { > struct rte_eth_vmdq_rx_conf conf; > + struct rte_eth_vmdq_rx_conf *def_conf =3D > + &vmdq_conf_default.rx_adv_conf.vmdq_rx_conf; > unsigned i; >=20 > memset(&conf, 0, sizeof(conf)); > conf.nb_queue_pools =3D (enum rte_eth_nb_pools)num_devices; > conf.nb_pool_maps =3D num_devices; > - conf.enable_loop_back =3D > - > vmdq_conf_default.rx_adv_conf.vmdq_rx_conf.enable_loop_back; > + conf.enable_loop_back =3D def_conf->enable_loop_back; > + conf.rx_mode =3D def_conf->rx_mode; >=20 > for (i =3D 0; i < conf.nb_pool_maps; i++) { > conf.pool_map[i].vlan_id =3D vlan_tags[ i ]; > @@ -468,6 +474,9 @@ port_init(uint8_t port) > return retval; > } >=20 > + if (promiscuous_on) > + rte_eth_promiscuous_enable(port); > + > rte_eth_macaddr_get(port, &vmdq_ports_eth_addr[port]); > RTE_LOG(INFO, VHOST_PORT, "Max virtio devices supported: %u\n", > num_devices); > RTE_LOG(INFO, VHOST_PORT, "Port %u > MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8 > @@ -598,7 +607,8 @@ us_vhost_parse_args(int argc, char **argv) > }; >=20 > /* Parse command line */ > - while ((opt =3D getopt_long(argc, argv, "p:",long_option, > &option_index)) !=3D EOF) { > + while ((opt =3D getopt_long(argc, argv, "p:P", > + long_option, &option_index)) !=3D EOF) { > switch (opt) { > /* Portmask */ > case 'p': > @@ -610,6 +620,15 @@ us_vhost_parse_args(int argc, char **argv) > } > break; >=20 > + case 'P': > + promiscuous_on =3D 1; > + > vmdq_conf_default.rx_adv_conf.vmdq_rx_conf.rx_mode =3D > + ETH_VMDQ_ACCEPT_BROADCAST | > + ETH_VMDQ_ACCEPT_MULTICAST; > + rte_vhost_feature_enable(1ULL << > VIRTIO_NET_F_CTRL_RX); Alignment? > + > + break; > + > case 0: > /* Enable/disable vm2vm comms. */ > if (!strncmp(long_option[option_index].name, "vm2vm", > diff --git a/lib/librte_vhost/virtio-net.c b/lib/librte_vhost/virtio-net.= c > index 27ba175..744156c 100644 > --- a/lib/librte_vhost/virtio-net.c > +++ b/lib/librte_vhost/virtio-net.c > @@ -68,7 +68,9 @@ static struct virtio_net_device_ops const *notify_ops; > static struct virtio_net_config_ll *ll_root; >=20 > /* Features supported by this application. RX merge buffers are enabled = by > default. */ > -#define VHOST_SUPPORTED_FEATURES (1ULL << VIRTIO_NET_F_MRG_RXBUF) > +#define VHOST_SUPPORTED_FEATURES ((1ULL << VIRTIO_NET_F_MRG_RXBUF) > | \ > + (1ULL << VIRTIO_NET_F_CTRL_RX)) > + > static uint64_t VHOST_FEATURES =3D VHOST_SUPPORTED_FEATURES; >=20 > /* Line size for reading maps file. */ > -- > 1.8.4.2