Hi David

From: David Marchand [mailto:david.march...@6wind.com]
Sent: Wednesday, September 17, 2014 10:03 PM
To: Zhang, Helin
Cc: dev at dpdk.org
Subject: Re: [dpdk-dev] i40e: Steps and required configurations of how to 
achieve the best performance!

On Wed, Sep 17, 2014 at 10:50 AM, Zhang, Helin <helin.zhang at 
intel.com<mailto:helin.zhang at intel.com>> wrote:
For the ?extended tag?, it was defined in PCIe spec, but actually not all BIOS 
implements it. Enabling it in BIOS or at runtime are two choices of doing the 
same thing. I don?t think it can be configured per PCI device in BIOS, so we 
don?t need to do that per PCI device in DPDK. Right? Actually we don?t want to 
touch PCIe settings in DPDK code, that?s why we want to let BIOS config as it 
is by default. If no better choice, we can do it in DPDK by changing 
configurations.

- Ok, then if we can make a runtime decision (at dpdk level), there is no need 
for bios configuration and there is no need for a build option.
Why don't we get rid of this option ?

[Helin] Initially, we want to do that for BIOS, if specific BIOS does not 
implement it. That way it needs to be initialized once during initialization 
for each PCI device. Sure, that might not be the best option, but it is the 
easiest way. For Linux end users, the best option could be using ?setpci? 
command. It can enable ?extended_tag? per PCI device.

As far as the per-device runtime configuration is concerned, I want to make 
sure this pci configuration will not break other "igb_uio" pci devices.
If Intel can tell for sure this won't break other devices, then fine, we can go 
and enable this for all "igb_uio" pci devices.

[Helin] It is in PCIe specification, and enable it can provide better 
performance generally. But I cannot confirm that it would not break any other 
devices, as I don?t validate all devices. If you really concern it, ?setpci? 
can be the best option for you. We can add a script for that later.

- By the way, there is also the CONFIG_MAX_READ_REQUEST_SIZE option that seems 
to be disabled (or at least its value 0 seems to tell so).
What is its purpose ?

[Helin] Yes, it was added for performance tuning long long ago. But now it 
seems contribute nothing or too few for the performance number, so I just skip 
it. The default value does nothing on PCIe registers, just keep it as is.


For ?CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n? by default, we want to support 32 
bytes rx descriptors by default. Two reasons:
One is 32 bytes rx descriptors can provide more powerful features, and more 
offload features.
The other is Linux PF host use 32 bytes rx descriptor by default which might 
not able to be changed, to support Linux PF host, it would be better to use 32 
bytes rx descriptors in DPDK VF by default.

Ok, good to know.

Thanks.

--
David Marchand

Regards,
Helin

Reply via email to