ASF (fastpath) jumbo frame limitation

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

ASF (fastpath) jumbo frame limitation

769 Views
viktarpalstsiuk
Contributor II

Software and Tools Information Center > QorIQ SDK 1.6 Documentation > Linux Configuration > Application Specific Fastpath User Manual > Product Description says

Limitations:

Jumbo Packets are not supported.

Is it sufficient for T1042 Ethernet switching application?

Is there any way to overcome this limitation?

1 Reply

325 Views
yipingwang
NXP TechSupport
NXP TechSupport

Hello Viktar Palstsiuk,


The SDK development team is working on ASF fragmentation and Jumbo feature now.

Actually the Jumbo Frame limitation is caused by ASF fragmentation limitation.

So I think the workaround of use Jumbo Frame in ASF is using higher "MTU" to avoid fragmentation.

The default MAXFRM is 1522, allowing for MTUs up to 1500. If higher "MTU" is used, MAXFRM is also needs to be configured as jumbo-sized(size of MTU+22), but in your system probably you only need JUMBO frame only in some specific case and for other cases MTU is always 1500, this would causes a lot of memory being wasted. Because usually there are no statically-defined buffer pools in the device-tree,the DPAA Ethernet driver will conservatively allocate all new skbuffs large enough to accomodate MAXFRM, plus some DPAA-private room. (Note that it's from these buffer pools that FMan will draw its buffers for Rx frames.)

Probably you need this function modifying RX buffer size dynamically according to the MTU size, which is adjusted according to the packet size. I have discussed this topic with other customers previously.


The DPAA Linux Device driver sets up buffer pools for use by the FMAN for receiving packages. The driver may allocate a pool dynamically, or it can use static configuration information from the device tree.  Each dpa-ethernet node may, optionally, have a "fsl,bman-buffer-pools" property. This property consists of an array of phandles, each one pointing at a buffer pool node. The buffer pool nodes are contained within the bman-portals node. Here is an example:

buffer-pool@1 {

compatible = "fsl,t1040-bpool", "fsl,bpool";

fsl,bpid = <1>;

fsl,bpool-ethernet-cfg = <0 256 0 192 0 0x40000000>;

};

buffer-pool@2 {

compatible = "fsl,t1040-bpool", "fsl,bpool";

fsl,bpid = <2>;

fsl,bpool-ethernet-cfg = <0 100 0 1728 0 0xa0000000>;

};

Each buffer pool node has a compatible property which declares it as a buffer pool, plus

an fsl,bpid property which defines the bpid for the pool. There is also an optional

"fsl,bpool-ethernet-cfg" property. This has the format:

<count size base_address>

ethernet@1 {

compatible = "fsl,t1040-dpa-ethernet-init",

"fsl,dpa-ethernet-init";

fsl,bman-buffer-pools = <&bp1 &bp2>;

fsl,qman-frame-queues-rx = <10 1 11 1>;

fsl,qman-frame-queues-tx = <12 1 13 1>;

fsl,fman-mac = <&enet1>;

};

The FMAN driver will choose an appropriate buffer pool according to the coming ethernet frame size.


Have a great day,
Yiping

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------