* [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).