DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] i40e: cannot change mtu to enable jumbo frame
@ 2016-02-09 16:35 Julien Meunier
  2016-02-09 19:05 ` Zhu, Heqing
  2016-02-10 15:20 ` Zhang, Helin
  0 siblings, 2 replies; 6+ messages in thread
From: Julien Meunier @ 2016-02-09 16:35 UTC (permalink / raw)
  To: Zhang, Helin, dev

Hello Helin,

I tried to send jumbo frames to a i40e card. However, I observed that 
all frames are dropped. Moreover, set_mtu function is not implemented on 
i40e PMD.

 > testpmd --log-level 8 --huge-dir=/mnt/huge -n 4 -l 2,18 --socket-mem 
1024,1024 -w 0000:02:00.0 -w 0000:02:00.2 -- -i --nb-cores=1 
--nb-ports=2 --total-num-mbufs=65536

=============
Configuration
=============

+-----------+          +-------------+
|           |          |             |
| tgen      |          |             |
|           +----------+ port 0      |
|           |          |             |
|           |          |             |
|           |          |             |
|           |          |             |
|           +----------+ port 1      |
|           |          |             |
+-----------+          +-------------+

DPDK: DPDK-v2.2

==========
MTU = 1500
==========
Packet sent from a tgen
 > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))
 > len(p) = 1514

testpmd> start
PMD: i40e_rxd_to_vlan_tci(): Mbuf vlan_tci: 0, vlan_tci_outer: 0
testpmd> stop
Telling cores to stop...
Waiting for lcores to finish...
PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
PMD: i40e_update_vsi_stats(): rx_bytes:            1518
PMD: i40e_update_vsi_stats(): rx_unicast:          1
PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
PMD: i40e_dev_stats_get(): *** PF stats start ***
PMD: i40e_dev_stats_get(): rx_bytes:            1514
PMD: i40e_dev_stats_get(): rx_unicast:          1
PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
PMD: i40e_dev_stats_get(): rx_size_1522:             1
PMD: i40e_dev_stats_get(): *** PF stats end ***

   -------------- Forward statistics for port 0  --------------
   RX-packets: 1              RX-dropped: 0             RX-total: 1
   TX-packets: 0              TX-dropped: 0             TX-total: 0
 
----------------------------------------------------------------------------
PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
PMD: i40e_update_vsi_stats(): tx_bytes:            1514
PMD: i40e_update_vsi_stats(): tx_unicast:          1
PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
PMD: i40e_dev_stats_get(): *** PF stats start ***
PMD: i40e_dev_stats_get(): tx_bytes:            1514
PMD: i40e_dev_stats_get(): tx_unicast:          1
PMD: i40e_dev_stats_get(): tx_size_1522:             1
PMD: i40e_dev_stats_get(): *** PF stats end ***

   -------------- Forward statistics for port 1 --------------
   RX-packets: 0              RX-dropped: 0             RX-total: 0
   TX-packets: 1              TX-dropped: 0             TX-total: 1
 
----------------------------------------------------------------------------

   +++++ Accumulated forward statistics for all ports+++++
   RX-packets: 1              RX-dropped: 0             RX-total: 1
   TX-packets: 1              TX-dropped: 0             TX-total: 1
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=> OK

==========
MTU = 1600
==========
Packet sent
 > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))
 > len(p) = 1614

testpmd> port config mtu 0 1600
rte_eth_dev_set_mtu: Function not supported
Set MTU failed. diag=-95
testpmd> port config mtu 1 1600
rte_eth_dev_set_mtu: Function not supported
Set MTU failed. diag=-95
testpmd> start
testpmd> stop
Telling cores to stop...
Waiting for lcores to finish...
PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
PMD: i40e_update_vsi_stats(): rx_bytes:            1618
PMD: i40e_update_vsi_stats(): rx_unicast:          1
PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
PMD: i40e_dev_stats_get(): *** PF stats start ***
PMD: i40e_dev_stats_get(): rx_bytes:            1614
PMD: i40e_dev_stats_get(): rx_unicast:          1
PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
PMD: i40e_dev_stats_get(): rx_size_big:              1
PMD: i40e_dev_stats_get(): *** PF stats end ***

   -------------- Forward statistics for port 0  --------------
   RX-packets: 1              RX-dropped: 0             RX-total: 1
   TX-packets: 0              TX-dropped: 0             TX-total: 0
 
----------------------------------------------------------------------------
PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
PMD: i40e_update_vsi_stats(): tx_bytes:            0
PMD: i40e_update_vsi_stats(): tx_unicast:          0
PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
PMD: i40e_dev_stats_get(): *** PF stats start ***
PMD: i40e_dev_stats_get(): tx_bytes:            0
PMD: i40e_dev_stats_get(): tx_unicast:          0
PMD: i40e_dev_stats_get(): tx_size_big:              0
PMD: i40e_dev_stats_get(): *** PF stats end ***

   -------------- Forward statistics for port 1  --------------
   RX-packets: 0              RX-dropped: 0             RX-total: 0
   TX-packets: 0              TX-dropped: 0             TX-total: 0
 
----------------------------------------------------------------------------

   +++++ Accumulated forward statistics for all ports+++++
   RX-packets: 1              RX-dropped: 0             RX-total: 1
   TX-packets: 0              TX-dropped: 0             TX-total: 0
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Done.

=> Frame correctly received on port 0, but never forwarded or xmit on 
port 1.

Does a mtu_set function will be developed soon in order to support jumbo 
frame ?

Regards,

-- 
Julien MEUNIER
6WIND

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] i40e: cannot change mtu to enable jumbo frame
  2016-02-09 16:35 [dpdk-dev] i40e: cannot change mtu to enable jumbo frame Julien Meunier
@ 2016-02-09 19:05 ` Zhu, Heqing
  2016-02-10 10:53   ` Julien Meunier
  2016-02-10 15:20 ` Zhang, Helin
  1 sibling, 1 reply; 6+ messages in thread
From: Zhu, Heqing @ 2016-02-09 19:05 UTC (permalink / raw)
  To: Julien Meunier, Zhang, Helin, dev

Helin is still in Chinese New Year Vacation. Will the below command option help ? 

4.5.9. port config - max-pkt-len
Set the maximum packet length:

testpmd> port config all max-pkt-len (value)
This is equivalent to the --max-pkt-len command-line option.


-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Julien Meunier
Sent: Tuesday, February 9, 2016 9:36 AM
To: Zhang, Helin <helin.zhang@intel.com>; dev@dpdk.org
Subject: [dpdk-dev] i40e: cannot change mtu to enable jumbo frame

Hello Helin,

I tried to send jumbo frames to a i40e card. However, I observed that all frames are dropped. Moreover, set_mtu function is not implemented on i40e PMD.

 > testpmd --log-level 8 --huge-dir=/mnt/huge -n 4 -l 2,18 --socket-mem
1024,1024 -w 0000:02:00.0 -w 0000:02:00.2 -- -i --nb-cores=1
--nb-ports=2 --total-num-mbufs=65536

=============
Configuration
=============

+-----------+          +-------------+
|           |          |             |
| tgen      |          |             |
|           +----------+ port 0      |
|           |          |             |
|           |          |             |
|           |          |             |
|           |          |             |
|           +----------+ port 1      |
|           |          |             |
+-----------+          +-------------+

DPDK: DPDK-v2.2

==========
MTU = 1500
==========
Packet sent from a tgen
 > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))  > len(p) = 1514

testpmd> start
PMD: i40e_rxd_to_vlan_tci(): Mbuf vlan_tci: 0, vlan_tci_outer: 0
testpmd> stop
Telling cores to stop...
Waiting for lcores to finish...
PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
PMD: i40e_update_vsi_stats(): rx_bytes:            1518
PMD: i40e_update_vsi_stats(): rx_unicast:          1
PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
PMD: i40e_dev_stats_get(): *** PF stats start ***
PMD: i40e_dev_stats_get(): rx_bytes:            1514
PMD: i40e_dev_stats_get(): rx_unicast:          1
PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
PMD: i40e_dev_stats_get(): rx_size_1522:             1
PMD: i40e_dev_stats_get(): *** PF stats end ***

   -------------- Forward statistics for port 0  --------------
   RX-packets: 1              RX-dropped: 0             RX-total: 1
   TX-packets: 0              TX-dropped: 0             TX-total: 0
 
----------------------------------------------------------------------------
PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
PMD: i40e_update_vsi_stats(): tx_bytes:            1514
PMD: i40e_update_vsi_stats(): tx_unicast:          1
PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
PMD: i40e_dev_stats_get(): *** PF stats start ***
PMD: i40e_dev_stats_get(): tx_bytes:            1514
PMD: i40e_dev_stats_get(): tx_unicast:          1
PMD: i40e_dev_stats_get(): tx_size_1522:             1
PMD: i40e_dev_stats_get(): *** PF stats end ***

   -------------- Forward statistics for port 1 --------------
   RX-packets: 0              RX-dropped: 0             RX-total: 0
   TX-packets: 1              TX-dropped: 0             TX-total: 1
 
----------------------------------------------------------------------------

   +++++ Accumulated forward statistics for all ports+++++
   RX-packets: 1              RX-dropped: 0             RX-total: 1
   TX-packets: 1              TX-dropped: 0             TX-total: 1
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=> OK

==========
MTU = 1600
==========
Packet sent
 > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))  > len(p) = 1614

testpmd> port config mtu 0 1600
rte_eth_dev_set_mtu: Function not supported Set MTU failed. diag=-95
testpmd> port config mtu 1 1600
rte_eth_dev_set_mtu: Function not supported Set MTU failed. diag=-95
testpmd> start
testpmd> stop
Telling cores to stop...
Waiting for lcores to finish...
PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
PMD: i40e_update_vsi_stats(): rx_bytes:            1618
PMD: i40e_update_vsi_stats(): rx_unicast:          1
PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
PMD: i40e_dev_stats_get(): *** PF stats start ***
PMD: i40e_dev_stats_get(): rx_bytes:            1614
PMD: i40e_dev_stats_get(): rx_unicast:          1
PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
PMD: i40e_dev_stats_get(): rx_size_big:              1
PMD: i40e_dev_stats_get(): *** PF stats end ***

   -------------- Forward statistics for port 0  --------------
   RX-packets: 1              RX-dropped: 0             RX-total: 1
   TX-packets: 0              TX-dropped: 0             TX-total: 0
 
----------------------------------------------------------------------------
PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
PMD: i40e_update_vsi_stats(): tx_bytes:            0
PMD: i40e_update_vsi_stats(): tx_unicast:          0
PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
PMD: i40e_dev_stats_get(): *** PF stats start ***
PMD: i40e_dev_stats_get(): tx_bytes:            0
PMD: i40e_dev_stats_get(): tx_unicast:          0
PMD: i40e_dev_stats_get(): tx_size_big:              0
PMD: i40e_dev_stats_get(): *** PF stats end ***

   -------------- Forward statistics for port 1  --------------
   RX-packets: 0              RX-dropped: 0             RX-total: 0
   TX-packets: 0              TX-dropped: 0             TX-total: 0
 
----------------------------------------------------------------------------

   +++++ Accumulated forward statistics for all ports+++++
   RX-packets: 1              RX-dropped: 0             RX-total: 1
   TX-packets: 0              TX-dropped: 0             TX-total: 0
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Done.

=> Frame correctly received on port 0, but never forwarded or xmit on port 1.

Does a mtu_set function will be developed soon in order to support jumbo frame ?

Regards,

--
Julien MEUNIER
6WIND

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] i40e: cannot change mtu to enable jumbo frame
  2016-02-09 19:05 ` Zhu, Heqing
@ 2016-02-10 10:53   ` Julien Meunier
  2016-02-10 13:54     ` Ananyev, Konstantin
  0 siblings, 1 reply; 6+ messages in thread
From: Julien Meunier @ 2016-02-10 10:53 UTC (permalink / raw)
  To: Zhu, Heqing, Zhang, Helin, dev

On 02/09/2016 08:05 PM, Zhu, Heqing wrote:
> Helin is still in Chinese New Year Vacation. Will the below command option help ?
>
> 4.5.9. port config - max-pkt-len
> Set the maximum packet length:
>
> testpmd> port config all max-pkt-len (value)
> This is equivalent to the --max-pkt-len command-line option.
>
>
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Julien Meunier
> Sent: Tuesday, February 9, 2016 9:36 AM
> To: Zhang, Helin <helin.zhang@intel.com>; dev@dpdk.org
> Subject: [dpdk-dev] i40e: cannot change mtu to enable jumbo frame
>
> Hello Helin,
>
> I tried to send jumbo frames to a i40e card. However, I observed that all frames are dropped. Moreover, set_mtu function is not implemented on i40e PMD.
>
>   > testpmd --log-level 8 --huge-dir=/mnt/huge -n 4 -l 2,18 --socket-mem
> 1024,1024 -w 0000:02:00.0 -w 0000:02:00.2 -- -i --nb-cores=1
> --nb-ports=2 --total-num-mbufs=65536
>
> =============
> Configuration
> =============
>
> +-----------+          +-------------+
> |           |          |             |
> | tgen      |          |             |
> |           +----------+ port 0      |
> |           |          |             |
> |           |          |             |
> |           |          |             |
> |           |          |             |
> |           +----------+ port 1      |
> |           |          |             |
> +-----------+          +-------------+
>
> DPDK: DPDK-v2.2
>
> ==========
> MTU = 1500
> ==========
> Packet sent from a tgen
>   > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))  > len(p) = 1514
>
> testpmd> start
> PMD: i40e_rxd_to_vlan_tci(): Mbuf vlan_tci: 0, vlan_tci_outer: 0
> testpmd> stop
> Telling cores to stop...
> Waiting for lcores to finish...
> PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
> PMD: i40e_update_vsi_stats(): rx_bytes:            1518
> PMD: i40e_update_vsi_stats(): rx_unicast:          1
> PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
> PMD: i40e_dev_stats_get(): *** PF stats start ***
> PMD: i40e_dev_stats_get(): rx_bytes:            1514
> PMD: i40e_dev_stats_get(): rx_unicast:          1
> PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
> PMD: i40e_dev_stats_get(): rx_size_1522:             1
> PMD: i40e_dev_stats_get(): *** PF stats end ***
>
>     -------------- Forward statistics for port 0  --------------
>     RX-packets: 1              RX-dropped: 0             RX-total: 1
>     TX-packets: 0              TX-dropped: 0             TX-total: 0
>
> ----------------------------------------------------------------------------
> PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
> PMD: i40e_update_vsi_stats(): tx_bytes:            1514
> PMD: i40e_update_vsi_stats(): tx_unicast:          1
> PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
> PMD: i40e_dev_stats_get(): *** PF stats start ***
> PMD: i40e_dev_stats_get(): tx_bytes:            1514
> PMD: i40e_dev_stats_get(): tx_unicast:          1
> PMD: i40e_dev_stats_get(): tx_size_1522:             1
> PMD: i40e_dev_stats_get(): *** PF stats end ***
>
>     -------------- Forward statistics for port 1 --------------
>     RX-packets: 0              RX-dropped: 0             RX-total: 0
>     TX-packets: 1              TX-dropped: 0             TX-total: 1
>
> ----------------------------------------------------------------------------
>
>     +++++ Accumulated forward statistics for all ports+++++
>     RX-packets: 1              RX-dropped: 0             RX-total: 1
>     TX-packets: 1              TX-dropped: 0             TX-total: 1
>
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> => OK
>
> ==========
> MTU = 1600
> ==========
> Packet sent
>   > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))  > len(p) = 1614
>
> testpmd> port config mtu 0 1600
> rte_eth_dev_set_mtu: Function not supported Set MTU failed. diag=-95
> testpmd> port config mtu 1 1600
> rte_eth_dev_set_mtu: Function not supported Set MTU failed. diag=-95
> testpmd> start
> testpmd> stop
> Telling cores to stop...
> Waiting for lcores to finish...
> PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
> PMD: i40e_update_vsi_stats(): rx_bytes:            1618
> PMD: i40e_update_vsi_stats(): rx_unicast:          1
> PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
> PMD: i40e_dev_stats_get(): *** PF stats start ***
> PMD: i40e_dev_stats_get(): rx_bytes:            1614
> PMD: i40e_dev_stats_get(): rx_unicast:          1
> PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
> PMD: i40e_dev_stats_get(): rx_size_big:              1
> PMD: i40e_dev_stats_get(): *** PF stats end ***
>
>     -------------- Forward statistics for port 0  --------------
>     RX-packets: 1              RX-dropped: 0             RX-total: 1
>     TX-packets: 0              TX-dropped: 0             TX-total: 0
>
> ----------------------------------------------------------------------------
> PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
> PMD: i40e_update_vsi_stats(): tx_bytes:            0
> PMD: i40e_update_vsi_stats(): tx_unicast:          0
> PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
> PMD: i40e_dev_stats_get(): *** PF stats start ***
> PMD: i40e_dev_stats_get(): tx_bytes:            0
> PMD: i40e_dev_stats_get(): tx_unicast:          0
> PMD: i40e_dev_stats_get(): tx_size_big:              0
> PMD: i40e_dev_stats_get(): *** PF stats end ***
>
>     -------------- Forward statistics for port 1  --------------
>     RX-packets: 0              RX-dropped: 0             RX-total: 0
>     TX-packets: 0              TX-dropped: 0             TX-total: 0
>
> ----------------------------------------------------------------------------
>
>     +++++ Accumulated forward statistics for all ports+++++
>     RX-packets: 1              RX-dropped: 0             RX-total: 1
>     TX-packets: 0              TX-dropped: 0             TX-total: 0
>
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> Done.
>
> => Frame correctly received on port 0, but never forwarded or xmit on port 1.
>
> Does a mtu_set function will be developed soon in order to support jumbo frame ?
>
> Regards,
>
> --
> Julien MEUNIER
> 6WIND
>

On testpmd, this command enables jumbo frame, you are right.

However, all ports need to be stopped: jumbo frame cannot be enabled at 
runtime through the DPDK API on i40e PMD. Other Intel PMD, like ixgbe, 
support this feature with the set_mtu API. Why not on i40e ?

Regards,

-- 
Julien MEUNIER
6WIND

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] i40e: cannot change mtu to enable jumbo frame
  2016-02-10 10:53   ` Julien Meunier
@ 2016-02-10 13:54     ` Ananyev, Konstantin
  0 siblings, 0 replies; 6+ messages in thread
From: Ananyev, Konstantin @ 2016-02-10 13:54 UTC (permalink / raw)
  To: Julien Meunier, Zhu, Heqing, Zhang, Helin, dev

> 
> On 02/09/2016 08:05 PM, Zhu, Heqing wrote:
> > Helin is still in Chinese New Year Vacation. Will the below command option help ?
> >
> > 4.5.9. port config - max-pkt-len
> > Set the maximum packet length:
> >
> > testpmd> port config all max-pkt-len (value)
> > This is equivalent to the --max-pkt-len command-line option.
> >
> >
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Julien Meunier
> > Sent: Tuesday, February 9, 2016 9:36 AM
> > To: Zhang, Helin <helin.zhang@intel.com>; dev@dpdk.org
> > Subject: [dpdk-dev] i40e: cannot change mtu to enable jumbo frame
> >
> > Hello Helin,
> >
> > I tried to send jumbo frames to a i40e card. However, I observed that all frames are dropped. Moreover, set_mtu function is not
> implemented on i40e PMD.
> >
> >   > testpmd --log-level 8 --huge-dir=/mnt/huge -n 4 -l 2,18 --socket-mem
> > 1024,1024 -w 0000:02:00.0 -w 0000:02:00.2 -- -i --nb-cores=1
> > --nb-ports=2 --total-num-mbufs=65536
> >
> > =============
> > Configuration
> > =============
> >
> > +-----------+          +-------------+
> > |           |          |             |
> > | tgen      |          |             |
> > |           +----------+ port 0      |
> > |           |          |             |
> > |           |          |             |
> > |           |          |             |
> > |           |          |             |
> > |           +----------+ port 1      |
> > |           |          |             |
> > +-----------+          +-------------+
> >
> > DPDK: DPDK-v2.2
> >
> > ==========
> > MTU = 1500
> > ==========
> > Packet sent from a tgen
> >   > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))  > len(p) = 1514
> >
> > testpmd> start
> > PMD: i40e_rxd_to_vlan_tci(): Mbuf vlan_tci: 0, vlan_tci_outer: 0
> > testpmd> stop
> > Telling cores to stop...
> > Waiting for lcores to finish...
> > PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
> > PMD: i40e_update_vsi_stats(): rx_bytes:            1518
> > PMD: i40e_update_vsi_stats(): rx_unicast:          1
> > PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
> > PMD: i40e_dev_stats_get(): *** PF stats start ***
> > PMD: i40e_dev_stats_get(): rx_bytes:            1514
> > PMD: i40e_dev_stats_get(): rx_unicast:          1
> > PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
> > PMD: i40e_dev_stats_get(): rx_size_1522:             1
> > PMD: i40e_dev_stats_get(): *** PF stats end ***
> >
> >     -------------- Forward statistics for port 0  --------------
> >     RX-packets: 1              RX-dropped: 0             RX-total: 1
> >     TX-packets: 0              TX-dropped: 0             TX-total: 0
> >
> > ----------------------------------------------------------------------------
> > PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
> > PMD: i40e_update_vsi_stats(): tx_bytes:            1514
> > PMD: i40e_update_vsi_stats(): tx_unicast:          1
> > PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
> > PMD: i40e_dev_stats_get(): *** PF stats start ***
> > PMD: i40e_dev_stats_get(): tx_bytes:            1514
> > PMD: i40e_dev_stats_get(): tx_unicast:          1
> > PMD: i40e_dev_stats_get(): tx_size_1522:             1
> > PMD: i40e_dev_stats_get(): *** PF stats end ***
> >
> >     -------------- Forward statistics for port 1 --------------
> >     RX-packets: 0              RX-dropped: 0             RX-total: 0
> >     TX-packets: 1              TX-dropped: 0             TX-total: 1
> >
> > ----------------------------------------------------------------------------
> >
> >     +++++ Accumulated forward statistics for all ports+++++
> >     RX-packets: 1              RX-dropped: 0             RX-total: 1
> >     TX-packets: 1              TX-dropped: 0             TX-total: 1
> >
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >
> > => OK
> >
> > ==========
> > MTU = 1600
> > ==========
> > Packet sent
> >   > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))  > len(p) = 1614
> >
> > testpmd> port config mtu 0 1600
> > rte_eth_dev_set_mtu: Function not supported Set MTU failed. diag=-95
> > testpmd> port config mtu 1 1600
> > rte_eth_dev_set_mtu: Function not supported Set MTU failed. diag=-95
> > testpmd> start
> > testpmd> stop
> > Telling cores to stop...
> > Waiting for lcores to finish...
> > PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
> > PMD: i40e_update_vsi_stats(): rx_bytes:            1618
> > PMD: i40e_update_vsi_stats(): rx_unicast:          1
> > PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
> > PMD: i40e_dev_stats_get(): *** PF stats start ***
> > PMD: i40e_dev_stats_get(): rx_bytes:            1614
> > PMD: i40e_dev_stats_get(): rx_unicast:          1
> > PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
> > PMD: i40e_dev_stats_get(): rx_size_big:              1
> > PMD: i40e_dev_stats_get(): *** PF stats end ***
> >
> >     -------------- Forward statistics for port 0  --------------
> >     RX-packets: 1              RX-dropped: 0             RX-total: 1
> >     TX-packets: 0              TX-dropped: 0             TX-total: 0
> >
> > ----------------------------------------------------------------------------
> > PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
> > PMD: i40e_update_vsi_stats(): tx_bytes:            0
> > PMD: i40e_update_vsi_stats(): tx_unicast:          0
> > PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
> > PMD: i40e_dev_stats_get(): *** PF stats start ***
> > PMD: i40e_dev_stats_get(): tx_bytes:            0
> > PMD: i40e_dev_stats_get(): tx_unicast:          0
> > PMD: i40e_dev_stats_get(): tx_size_big:              0
> > PMD: i40e_dev_stats_get(): *** PF stats end ***
> >
> >     -------------- Forward statistics for port 1  --------------
> >     RX-packets: 0              RX-dropped: 0             RX-total: 0
> >     TX-packets: 0              TX-dropped: 0             TX-total: 0
> >
> > ----------------------------------------------------------------------------
> >
> >     +++++ Accumulated forward statistics for all ports+++++
> >     RX-packets: 1              RX-dropped: 0             RX-total: 1
> >     TX-packets: 0              TX-dropped: 0             TX-total: 0
> >
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >
> > Done.
> >
> > => Frame correctly received on port 0, but never forwarded or xmit on port 1.
> >
> > Does a mtu_set function will be developed soon in order to support jumbo frame ?
> >
> > Regards,
> >
> > --
> > Julien MEUNIER
> > 6WIND
> >
> 
> On testpmd, this command enables jumbo frame, you are right.
> 
> However, all ports need to be stopped: jumbo frame cannot be enabled at
> runtime through the DPDK API on i40e PMD. Other Intel PMD, like ixgbe,
> support this feature with the set_mtu API. Why not on i40e ?


Yes, as I know mtu-set is not implemented on i40e and some other devices ...
Patches are welcome, I suppose :)
Though note that even with ixgbe you can't set new mtu if it is bigger then
related mempool's buffer size and scattered_rx is not enabled.
And to enable scattered_rx, you'll need to stop and re-configure device anyway. 
Konstantin

> 
> Regards,
> 
> --
> Julien MEUNIER
> 6WIND

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] i40e: cannot change mtu to enable jumbo frame
  2016-02-09 16:35 [dpdk-dev] i40e: cannot change mtu to enable jumbo frame Julien Meunier
  2016-02-09 19:05 ` Zhu, Heqing
@ 2016-02-10 15:20 ` Zhang, Helin
  2016-02-12 14:08   ` Julien Meunier
  1 sibling, 1 reply; 6+ messages in thread
From: Zhang, Helin @ 2016-02-10 15:20 UTC (permalink / raw)
  To: Julien Meunier, dev



> -----Original Message-----
> From: Julien Meunier [mailto:julien.meunier@6wind.com]
> Sent: Wednesday, February 10, 2016 12:36 AM
> To: Zhang, Helin <helin.zhang@intel.com>; dev@dpdk.org
> Subject: i40e: cannot change mtu to enable jumbo frame
> 
> Hello Helin,
> 
> I tried to send jumbo frames to a i40e card. However, I observed that all frames
> are dropped. Moreover, set_mtu function is not implemented on i40e PMD.
> 
>  > testpmd --log-level 8 --huge-dir=/mnt/huge -n 4 -l 2,18 --socket-mem
> 1024,1024 -w 0000:02:00.0 -w 0000:02:00.2 -- -i --nb-cores=1
> --nb-ports=2 --total-num-mbufs=65536
> 
> =============
> Configuration
> =============
> 
> +-----------+          +-------------+
> |           |          |             |
> | tgen      |          |             |
> |           +----------+ port 0      |
> |           |          |             |
> |           |          |             |
> |           |          |             |
> |           |          |             |
> |           +----------+ port 1      |
> |           |          |             |
> +-----------+          +-------------+
> 
> DPDK: DPDK-v2.2
> 
> ==========
> MTU = 1500
> ==========
> Packet sent from a tgen
>  > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))  >
> len(p) = 1514
> 
> testpmd> start
> PMD: i40e_rxd_to_vlan_tci(): Mbuf vlan_tci: 0, vlan_tci_outer: 0
> testpmd> stop
> Telling cores to stop...
> Waiting for lcores to finish...
> PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
> PMD: i40e_update_vsi_stats(): rx_bytes:            1518
> PMD: i40e_update_vsi_stats(): rx_unicast:          1
> PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
> PMD: i40e_dev_stats_get(): *** PF stats start ***
> PMD: i40e_dev_stats_get(): rx_bytes:            1514
> PMD: i40e_dev_stats_get(): rx_unicast:          1
> PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
> PMD: i40e_dev_stats_get(): rx_size_1522:             1
> PMD: i40e_dev_stats_get(): *** PF stats end ***
> 
>    -------------- Forward statistics for port 0  --------------
>    RX-packets: 1              RX-dropped: 0             RX-total: 1
>    TX-packets: 0              TX-dropped: 0             TX-total: 0
> 
> ----------------------------------------------------------------------------
> PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
> PMD: i40e_update_vsi_stats(): tx_bytes:            1514
> PMD: i40e_update_vsi_stats(): tx_unicast:          1
> PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
> PMD: i40e_dev_stats_get(): *** PF stats start ***
> PMD: i40e_dev_stats_get(): tx_bytes:            1514
> PMD: i40e_dev_stats_get(): tx_unicast:          1
> PMD: i40e_dev_stats_get(): tx_size_1522:             1
> PMD: i40e_dev_stats_get(): *** PF stats end ***
> 
>    -------------- Forward statistics for port 1 --------------
>    RX-packets: 0              RX-dropped: 0             RX-total: 0
>    TX-packets: 1              TX-dropped: 0             TX-total: 1
> 
> ----------------------------------------------------------------------------
> 
>    +++++ Accumulated forward statistics for all ports+++++
>    RX-packets: 1              RX-dropped: 0             RX-total: 1
>    TX-packets: 1              TX-dropped: 0             TX-total: 1
> 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++
> 
> => OK
> 
> ==========
> MTU = 1600
> ==========
> Packet sent
>  > p = Ether / IP / UDP / Raw(MTU + HDR(Ethernet)- HDR(IP) - HDR(UDP))  >
> len(p) = 1614
> 
> testpmd> port config mtu 0 1600
> rte_eth_dev_set_mtu: Function not supported Set MTU failed. diag=-95
> testpmd> port config mtu 1 1600
> rte_eth_dev_set_mtu: Function not supported Set MTU failed. diag=-95
> testpmd> start
> testpmd> stop
> Telling cores to stop...
> Waiting for lcores to finish...
> PMD: i40e_update_vsi_stats(): *** VSI[13] stats start ***
> PMD: i40e_update_vsi_stats(): rx_bytes:            1618
> PMD: i40e_update_vsi_stats(): rx_unicast:          1
> PMD: i40e_update_vsi_stats(): *** VSI[13] stats end ***
> PMD: i40e_dev_stats_get(): *** PF stats start ***
> PMD: i40e_dev_stats_get(): rx_bytes:            1614
> PMD: i40e_dev_stats_get(): rx_unicast:          1
> PMD: i40e_dev_stats_get(): rx_unknown_protocol: 1
> PMD: i40e_dev_stats_get(): rx_size_big:              1
> PMD: i40e_dev_stats_get(): *** PF stats end ***
> 
>    -------------- Forward statistics for port 0  --------------
>    RX-packets: 1              RX-dropped: 0             RX-total: 1
>    TX-packets: 0              TX-dropped: 0             TX-total: 0
> 
> ----------------------------------------------------------------------------
> PMD: i40e_update_vsi_stats(): *** VSI[14] stats start ***
> PMD: i40e_update_vsi_stats(): tx_bytes:            0
> PMD: i40e_update_vsi_stats(): tx_unicast:          0
> PMD: i40e_update_vsi_stats(): *** VSI[14] stats end ***
> PMD: i40e_dev_stats_get(): *** PF stats start ***
> PMD: i40e_dev_stats_get(): tx_bytes:            0
> PMD: i40e_dev_stats_get(): tx_unicast:          0
> PMD: i40e_dev_stats_get(): tx_size_big:              0
> PMD: i40e_dev_stats_get(): *** PF stats end ***
> 
>    -------------- Forward statistics for port 1  --------------
>    RX-packets: 0              RX-dropped: 0             RX-total: 0
>    TX-packets: 0              TX-dropped: 0             TX-total: 0
> 
> ----------------------------------------------------------------------------
> 
>    +++++ Accumulated forward statistics for all ports+++++
>    RX-packets: 1              RX-dropped: 0             RX-total: 1
>    TX-packets: 0              TX-dropped: 0             TX-total: 0
> 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++
> 
> Done.
> 
> => Frame correctly received on port 0, but never forwarded or xmit on port 1.
> 
> Does a mtu_set function will be developed soon in order to support jumbo
> frame ?
Yes, we will implement soon later.
Could you help to try with max_pkt_len in port config for now?

Regards,
Helin

> 
> Regards,
> 
> --
> Julien MEUNIER
> 6WIND

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] i40e: cannot change mtu to enable jumbo frame
  2016-02-10 15:20 ` Zhang, Helin
@ 2016-02-12 14:08   ` Julien Meunier
  0 siblings, 0 replies; 6+ messages in thread
From: Julien Meunier @ 2016-02-12 14:08 UTC (permalink / raw)
  To: Zhang, Helin, dev

On 02/10/2016 04:20 PM, Zhang, Helin wrote:
>
>
>> -----Original Message-----
>> From: Julien Meunier [mailto:julien.meunier@6wind.com]
>> Sent: Wednesday, February 10, 2016 12:36 AM
>> To: Zhang, Helin <helin.zhang@intel.com>; dev@dpdk.org
>> Subject: i40e: cannot change mtu to enable jumbo frame
>> [...]
>> Does a mtu_set function will be developed soon in order to support jumbo
>> frame ?
> Yes, we will implement soon later.
> Could you help to try with max_pkt_len in port config for now?
>
> Regards,
> Helin
>

Hi,

When I stop ports, change max_pkt_len and restart ports, jumbo frame are 
accepted. I was able to forward 9k frames on a i40e card.

I wrote a quick and dirty patch in order to add minimal support of MTU 
for my test. I did not carefully study the impacts... Please advice.

---
i40e: add support of mtu configuration

Add support of MTU configuration.
Ports are stopped and then started in order to force
re-initialization of RX queues.

NOTE: This patch is still experimental.

Signed-off-by: Julien Meunier <julien.meunier@6wind.com>
---
  drivers/net/i40e/i40e_ethdev.c | 33 +++++++++++++++++++++++++++++++++
  1 file changed, 33 insertions(+)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 750206b..b4d6912 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -296,6 +296,7 @@ static int i40e_dev_queue_stats_mapping_set(struct 
rte_eth_dev *dev,
  					    uint8_t is_rx);
  static void i40e_dev_info_get(struct rte_eth_dev *dev,
  			      struct rte_eth_dev_info *dev_info);
+static int i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
  static int i40e_vlan_filter_set(struct rte_eth_dev *dev,
  				uint16_t vlan_id,
  				int on);
@@ -439,6 +440,7 @@ static const struct eth_dev_ops i40e_eth_dev_ops = {
  	.xstats_reset                 = i40e_dev_stats_reset,
  	.queue_stats_mapping_set      = i40e_dev_queue_stats_mapping_set,
  	.dev_infos_get                = i40e_dev_info_get,
+	.mtu_set                      = i40e_dev_mtu_set,
  	.vlan_filter_set              = i40e_vlan_filter_set,
  	.vlan_tpid_set                = i40e_vlan_tpid_set,
  	.vlan_offload_set             = i40e_vlan_offload_set,
@@ -4681,6 +4683,37 @@ i40e_dev_rxtx_init(struct i40e_pf *pf)
  }

  static int
+i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
+{
+	struct rte_eth_dev_info dev_info;
+	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	uint32_t frame_size = mtu + ETHER_HDR_LEN + ETHER_CRC_LEN;
+
+	i40e_dev_info_get(dev, &dev_info);
+
+	if ((frame_size < ETHER_MIN_MTU) || (frame_size > 
dev_info.max_rx_pktlen)) {
+		PMD_DRV_LOG(ERR, "Invalid MTU\n");
+		return I40E_ERR_PARAM;
+	}
+
+	i40e_dev_stop(dev);
+	hw->adapter_stopped = 1;
+
+	/* switch to jumbo mode if needed */
+	if (frame_size > ETHER_MAX_LEN)
+		dev->data->dev_conf.rxmode.jumbo_frame = 1;
+	else
+		dev->data->dev_conf.rxmode.jumbo_frame = 0;
+
+	dev->data->dev_conf.rxmode.max_rx_pkt_len = frame_size;
+
+	i40e_dev_start(dev);
+	hw->adapter_stopped = 0;
+
+	return 0;
+}
+
+static int
  i40e_vmdq_setup(struct rte_eth_dev *dev)
  {
  	struct rte_eth_conf *conf = &dev->data->dev_conf;
-- 

Regards,
-- 
Julien MEUNIER
6WIND

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-02-12 14:08 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-09 16:35 [dpdk-dev] i40e: cannot change mtu to enable jumbo frame Julien Meunier
2016-02-09 19:05 ` Zhu, Heqing
2016-02-10 10:53   ` Julien Meunier
2016-02-10 13:54     ` Ananyev, Konstantin
2016-02-10 15:20 ` Zhang, Helin
2016-02-12 14:08   ` Julien Meunier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).