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 3161691C9 for ; Mon, 4 Jan 2016 19:12:37 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP; 04 Jan 2016 10:12:36 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,521,1444719600"; d="scan'208";a="853329738" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by orsmga001.jf.intel.com with ESMTP; 04 Jan 2016 10:12:35 -0800 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.104]) by IRSMSX106.ger.corp.intel.com ([169.254.8.88]) with mapi id 14.03.0248.002; Mon, 4 Jan 2016 18:12:34 +0000 From: "Ananyev, Konstantin" To: "Tan, Jianfeng" , "dev@dpdk.org" Thread-Topic: [PATCH 07/12] pmd/ixgbe: add dev_ptype_info_get implementation Thread-Index: AQHRQ9KtT1reNMkDlkmNjhxJVzQHIJ7rryPQ Date: Mon, 4 Jan 2016 18:12:33 +0000 Message-ID: <2601191342CEEE43887BDE71AB97725836AE130F@irsmsx105.ger.corp.intel.com> References: <1451544799-70776-1-git-send-email-jianfeng.tan@intel.com> <1451544799-70776-8-git-send-email-jianfeng.tan@intel.com> In-Reply-To: <1451544799-70776-8-git-send-email-jianfeng.tan@intel.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMmIyOGQ4YjQtZmM0ZC00NGI2LWE1OTQtZDdiYmU3MzE5YjU3IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjQuMTAuMTkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiaGMrTUNxVXdRbjQrTG5PXC85ckV3VmF1anNyTEdYZlVYdVpmK2Y3d2kzeU09In0= x-ctpclassification: CTP_IC x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 07/12] pmd/ixgbe: add dev_ptype_info_get implementation 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: Mon, 04 Jan 2016 18:12:37 -0000 > -----Original Message----- > From: Tan, Jianfeng > Sent: Thursday, December 31, 2015 6:53 AM > To: dev@dpdk.org > Cc: Zhang, Helin; Ananyev, Konstantin; Tan, Jianfeng > Subject: [PATCH 07/12] pmd/ixgbe: add dev_ptype_info_get implementation >=20 > Signed-off-by: Jianfeng Tan > --- > drivers/net/ixgbe/ixgbe_ethdev.c | 50 ++++++++++++++++++++++++++++++++++= ++++++ > drivers/net/ixgbe/ixgbe_ethdev.h | 2 ++ > drivers/net/ixgbe/ixgbe_rxtx.c | 5 +++- > 3 files changed, 56 insertions(+), 1 deletion(-) >=20 > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_e= thdev.c > index 4c4c6df..de5c3a9 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -166,6 +166,8 @@ static int ixgbe_dev_queue_stats_mapping_set(struct r= te_eth_dev *eth_dev, > uint8_t is_rx); > static void ixgbe_dev_info_get(struct rte_eth_dev *dev, > struct rte_eth_dev_info *dev_info); > +static int ixgbe_dev_ptype_info_get(struct rte_eth_dev *dev, > + uint32_t ptype_mask, uint32_t ptypes[]); > static void ixgbevf_dev_info_get(struct rte_eth_dev *dev, > struct rte_eth_dev_info *dev_info); > static int ixgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); > @@ -428,6 +430,7 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops =3D= { > .xstats_reset =3D ixgbe_dev_xstats_reset, > .queue_stats_mapping_set =3D ixgbe_dev_queue_stats_mapping_set, > .dev_infos_get =3D ixgbe_dev_info_get, > + .dev_ptype_info_get =3D ixgbe_dev_ptype_info_get, > .mtu_set =3D ixgbe_dev_mtu_set, > .vlan_filter_set =3D ixgbe_vlan_filter_set, > .vlan_tpid_set =3D ixgbe_vlan_tpid_set, > @@ -512,6 +515,7 @@ static const struct eth_dev_ops ixgbevf_eth_dev_ops = =3D { > .xstats_reset =3D ixgbevf_dev_stats_reset, > .dev_close =3D ixgbevf_dev_close, > .dev_infos_get =3D ixgbevf_dev_info_get, > + .dev_ptype_info_get =3D ixgbe_dev_ptype_info_get, > .mtu_set =3D ixgbevf_dev_set_mtu, > .vlan_filter_set =3D ixgbevf_vlan_filter_set, > .vlan_strip_queue_set =3D ixgbevf_vlan_strip_queue_set, > @@ -2829,6 +2833,52 @@ ixgbe_dev_info_get(struct rte_eth_dev *dev, struct= rte_eth_dev_info *dev_info) > dev_info->flow_type_rss_offloads =3D IXGBE_RSS_OFFLOAD_ALL; > } >=20 > +static int > +ixgbe_dev_ptype_info_get(struct rte_eth_dev *dev, uint32_t ptype_mask, > + uint32_t ptypes[]) > +{ > + int num =3D 0; > + > + if ((dev->rx_pkt_burst =3D=3D ixgbe_recv_pkts) > + || (dev->rx_pkt_burst =3D=3D ixgbe_recv_pkts_lro_single_alloc) > + || (dev->rx_pkt_burst =3D=3D ixgbe_recv_pkts_lro_bulk_alloc) > + || (dev->rx_pkt_burst =3D=3D ixgbe_recv_pkts_bulk_alloc) > + ) { As I remember vector RX for ixgbe sets up packet_type properly too. > + /* refers to ixgbe_rxd_pkt_info_to_pkt_type() */ > + if ((ptype_mask & RTE_PTYPE_L2_MASK) =3D=3D RTE_PTYPE_L2_MASK) > + ptypes[num++] =3D RTE_PTYPE_L2_ETHER; > + > + if ((ptype_mask & RTE_PTYPE_L3_MASK) =3D=3D RTE_PTYPE_L3_MASK) { > + ptypes[num++] =3D RTE_PTYPE_L3_IPV4; > + ptypes[num++] =3D RTE_PTYPE_L3_IPV4_EXT; > + ptypes[num++] =3D RTE_PTYPE_L3_IPV6; > + ptypes[num++] =3D RTE_PTYPE_L3_IPV6_EXT; > + } > + > + if ((ptype_mask & RTE_PTYPE_L4_MASK) =3D=3D RTE_PTYPE_L4_MASK) { > + ptypes[num++] =3D RTE_PTYPE_L4_SCTP; > + ptypes[num++] =3D RTE_PTYPE_L4_TCP; > + ptypes[num++] =3D RTE_PTYPE_L4_UDP; > + } > + > + if ((ptype_mask & RTE_PTYPE_TUNNEL_MASK) =3D=3D RTE_PTYPE_TUNNEL_MASK) > + ptypes[num++] =3D RTE_PTYPE_TUNNEL_IP; > + > + if ((ptype_mask & RTE_PTYPE_INNER_L3_MASK) =3D=3D RTE_PTYPE_INNER_L3_M= ASK) { > + ptypes[num++] =3D RTE_PTYPE_INNER_L3_IPV6; > + ptypes[num++] =3D RTE_PTYPE_INNER_L3_IPV6_EXT; > + } > + > + if ((ptype_mask & RTE_PTYPE_INNER_L4_MASK) =3D=3D RTE_PTYPE_INNER_L4_M= ASK) { > + ptypes[num++] =3D RTE_PTYPE_INNER_L4_TCP; > + ptypes[num++] =3D RTE_PTYPE_INNER_L4_UDP; > + } > + } else > + num =3D -ENOTSUP; > + > + return num; > +} > + > static void > ixgbevf_dev_info_get(struct rte_eth_dev *dev, > struct rte_eth_dev_info *dev_info) > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_e= thdev.h > index d26771a..2479830 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.h > +++ b/drivers/net/ixgbe/ixgbe_ethdev.h > @@ -379,6 +379,8 @@ void ixgbevf_dev_rxtx_start(struct rte_eth_dev *dev); > uint16_t ixgbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, > uint16_t nb_pkts); >=20 > +uint16_t ixgbe_recv_pkts_bulk_alloc(void *rx_queue, struct rte_mbuf **rx= _pkts, > + uint16_t nb_pkts); > uint16_t ixgbe_recv_pkts_lro_single_alloc(void *rx_queue, > struct rte_mbuf **rx_pkts, uint16_t nb_pkts); > uint16_t ixgbe_recv_pkts_lro_bulk_alloc(void *rx_queue, > diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxt= x.c > index 52a263c..d324099 100644 > --- a/drivers/net/ixgbe/ixgbe_rxtx.c > +++ b/drivers/net/ixgbe/ixgbe_rxtx.c > @@ -899,6 +899,9 @@ end_of_tx: > #define IXGBE_PACKET_TYPE_MAX 0X80 > #define IXGBE_PACKET_TYPE_MASK 0X7F > #define IXGBE_PACKET_TYPE_SHIFT 0X04 > +/* > + * @note: fix ixgbe_dev_ptype_info_get() if any change here. > + */ > static inline uint32_t > ixgbe_rxd_pkt_info_to_pkt_type(uint16_t pkt_info) > { > @@ -1247,7 +1250,7 @@ rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_p= kts, > } >=20 > /* split requests into chunks of size RTE_PMD_IXGBE_RX_MAX_BURST */ > -static uint16_t > +uint16_t > ixgbe_recv_pkts_bulk_alloc(void *rx_queue, struct rte_mbuf **rx_pkts, > uint16_t nb_pkts) > { > -- > 2.1.4