[dpdk-dev] [PATCH v4 05/12] pmd/fm10k: add dev_ptype_info_get implementation

Tan, Jianfeng jianfeng.tan at intel.com
Thu Mar 3 07:03:55 CET 2016


Hi,

On 3/3/2016 4:11 AM, Chen, Jing D wrote:
> Hi,
>
> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Jianfeng Tan
> Sent: Thursday, February 25, 2016 6:09 PM
> To: dev at dpdk.org
> Subject: [dpdk-dev] [PATCH v4 05/12] pmd/fm10k: add dev_ptype_info_get implementation
>
> Signed-off-by: Jianfeng Tan <jianfeng.tan at intel.com>
> ---
>   drivers/net/fm10k/fm10k_ethdev.c   | 50 ++++++++++++++++++++++++++++++++++++++
>   drivers/net/fm10k/fm10k_rxtx.c     |  3 +++
>   drivers/net/fm10k/fm10k_rxtx_vec.c |  3 +++
>   3 files changed, 56 insertions(+)
>
> diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
> index 421266b..429cbdd 100644
> --- a/drivers/net/fm10k/fm10k_ethdev.c
> +++ b/drivers/net/fm10k/fm10k_ethdev.c
> @@ -1335,6 +1335,55 @@ fm10k_dev_infos_get(struct rte_eth_dev *dev,
>   	};
>   }
>   
> +#ifdef RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE
> +static const uint32_t *
> +fm10k_dev_ptype_info_get(struct rte_eth_dev *dev) {
> +	if (dev->rx_pkt_burst == fm10k_recv_pkts ||
> +	    dev->rx_pkt_burst == fm10k_recv_scattered_pkts) {
> +		static uint32_t ptypes[] = {
> +			/* refers to rx_desc_to_ol_flags() */
> +			RTE_PTYPE_L2_ETHER,
> +			RTE_PTYPE_L3_IPV4,
> +			RTE_PTYPE_L3_IPV4_EXT,
> +			RTE_PTYPE_L3_IPV6,
> +			RTE_PTYPE_L3_IPV6_EXT,
> +			RTE_PTYPE_L4_TCP,
> +			RTE_PTYPE_L4_UDP,
> +			RTE_PTYPE_UNKNOWN
> +		};
> +
> +		return ptypes;
> +	} else if (dev->rx_pkt_burst == fm10k_recv_pkts_vec ||
> +		   dev->rx_pkt_burst == fm10k_recv_scattered_pkts_vec) {
> +		static uint32_t ptypes_vec[] = {
> +			/* refers to fm10k_desc_to_pktype_v() */
> +			RTE_PTYPE_L3_IPV4,
> +			RTE_PTYPE_L3_IPV4_EXT,
> +			RTE_PTYPE_L3_IPV6,
> +			RTE_PTYPE_L3_IPV6_EXT,
> +			RTE_PTYPE_L4_TCP,
> +			RTE_PTYPE_L4_UDP,
> +			RTE_PTYPE_TUNNEL_GENEVE,
> +			RTE_PTYPE_TUNNEL_NVGRE,
> +			RTE_PTYPE_TUNNEL_VXLAN,
> +			RTE_PTYPE_TUNNEL_GRE,
> +			RTE_PTYPE_UNKNOWN
> +		};
> +
> +		return ptypes_vec;
> +	}
> +
> +	return NULL;
> +}
> May I know when " fm10k_dev_ptype_info_get " will be called? In fm10k, the actual
> Rx/tx func will be decided after port is started.

Thank you for pointing out this. It's indeed an issue here. And it makes 
no difference when all rx functions fill the same ptypes, which, 
unfortunately, does not apply to all PMDs. According to my analysis, 
only in fm10k's case, we should call ptype_info_get after dev_start(), 
and for other PMDs, it can called just after rx_queue_setup. So in all, 
I need to add this as a caution in API declaration.

__details__

eth_cxgbe_dev_init

eth_igb_dev_init
eth_igbvf_dev_init
eth_igb_rx_init <- eth_igb_start (makes no difference, rx functins fill 
same ptypes)
eth_igbvf_rx_init <- igbvf_dev_start (makes no difference, rx functins 
fill same ptypes)

eth_enicpmd_dev_init

fm10k_set_rx_function <- fm10k_dev_rx_init <- fm10k_dev_start

eth_i40e_dev_init
i40evf_dev_init
i40e_set_rx_function <- eth_i40e_dev_init
                                      <- i40evf_dev_init
                                      <- i40e_dev_rx_init <- 
i40e_dev_rxtx_init <- i40e_dev_start (makes no difference, rx functins 
fill same ptypes)
                                      <- i40evf_rx_init <- 
i40evf_dev_start (makes no difference, rx functins fill same ptypes)

ixgbe_set_rx_function <- eth_ixgbe_dev_init
                                        <- ixgbe_dev_rx_init <- 
ixgbe_dev_start (makes no difference, rx functions fill same ptypes)
                                        <- ixgbevf_dev_rx_init

mlx4_rx_queue_setup
mlx4_dev_set_mtu (makes no difference, rx functions fill same ptypes)

mlx5_rx_queue_setup
mlx5_dev_set_mtu (makes no difference, rx functions fill same ptypes)

nfp_net_init

eth_vmxnet3_dev_init

Thanks,
Jianfeng





More information about the dev mailing list