From: "Jiajia, SunX" <sunx.jiajia@intel.com>
To: Thomas Monjalon <thomas.monjalon@6wind.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH] ixgbe: fix buffer overrun bug in non-bulk alloc mode setup
Date: Mon, 23 Mar 2015 02:10:22 +0000 [thread overview]
Message-ID: <F21F274FCF2C0948830A3ED0034529772D463D@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <11895300.1p8srIVla4@xps13>
Hi Thomas,
> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Saturday, March 21, 2015 5:46 AM
> To: Jiajia, SunX
> Cc: dev@dpdk.org; Wodkowski, PawelX
> Subject: Re: [dpdk-dev] [PATCH] ixgbe: fix buffer overrun bug in non-
> bulk alloc mode setup
>
> 2015-03-20 06:50, Jiajia, SunX:
> > Tested-by: Jiajia, SunX <sunx.jiajia@intel.com>
> > - Tested Commit: fe4810a01e57645ad92577d628f562791408ce21
>
> This commit id is related to a PDF doc change.
I verify this issue based on this commit id which is not the commit id I found,
Sorry for making you confused. BTW, I found this issue in the
dpdk-2.0.0-rc2, which commit id is 1a5994ac2ce11c112d9eed69c08311b31ac7f3d2.
>
> > - OS: Fedora20 3.11.10-301.fc20.x86_64
> > - GCC: gcc version 4.8.3
> > - CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
> > - NIC: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network
> Connection [8086:10fb]
> > - Target x86_64-native-linuxapp-gcc
> > - Total 22 cases, 22 passed, 0 failed
>
> It seems this test is related to bonding, not ixgbe buffer overrun in
> non-bulk alloc mode.
Because I found this issue when doing the test of bonding, so I think doing
Bonding test should work on verifying this issue.
>
> > TOPO:
> > * Connections ports between tester/ixia and DUT
> > - TESTER(Or IXIA)-------DUT
> > - portA------------------port0
> > - portB------------------port1
> > - portC------------------port2
> > - portD------------------port3
> >
> > Test Setup#1 for Functional test
> > ================================
> >
> > Tester has 4 ports(portA--portD), and DUT has 4 ports(port0--port3),
> then connect portA to port0, portB to port1, portC to port2, portD to
> port3.
> >
> >
> >
> > - Case: Basic bonding--Create bonded devices and slaves
> > Description:
> > Use Setup#1.
> > Create bonded device and add some ports as salve of bonded
> device,
> > Then removed slaves or added slaves or change the bonding
> primary slave
> > Or change bonding mode and so on.
> > Expected test result:
> > Verify the basic functions are normal.
> >
> > - Case: Basic bonding--MAC Address Test
> > Description:
> > Use Setup#1.
> > Create bonded device and add some ports as slaves of bonded
> device,
> > Check that the changes of the bonded device and slave
> MAC
> > Expected test result:
> > Verify the behavior of bonded device and slave according
> to the mode.
> >
> > - Case: Basic bonding--Device Promiscuous Mode Test
> > Description:
> > Use Setup#1.
> > Create bonded device and add some ports as slaves of bonded
> device,
> > Set promiscuous mode on or off, then send packets to the
> bonded device
> > Or slaves.
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves
> according to the mode.
> >
> > - Case: Mode 0(Round Robin) TX/RX test
> > Description:
> > Use Setup#1.
> > Create bonded device with mode 0 and add 3 ports as slaves
> of bonded device,
> > Forward packets between bonded device and unbounded
> device, start to forward,
> > And send packets to unbound device or slaves.
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 0.
> >
> > - Case: Mode 0(Round Robin) Bring one slave link down
> > Description:
> > Use Setup#1.
> > Create bonded device with mode 0 and add 3 ports as slaves
> of bonded device,
> > Forward packets between bonded device and unbounded
> device, start to forward,
> > Bring the link on either port 0, 1 or 2 down. And send
> packets to unbound
> > device or slaves.
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 0.
> >
> > - Case: Mode 0(Round Robin) Bring all slave links down
> > Description:
> > Use Setup#1.
> > Create bonded device with mode 0 and add 3 ports as slaves
> of bonded device,
> > Forward packets between bonded device and unbounded
> device, start to forward,
> > Bring the links down on all bonded ports. And send
> packets to unbound
> > device or slaves.
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 0.
> >
> > - Case: Mode 1(Active Backup) TX/RX Test
> > Description:
> > Use Setup#1.
> > Create bonded device with mode 1 and add 3 ports as slaves
> of bonded device,
> > Forward packets between bonded device and unbounded
> device, start to forward,
> > And send packets to unbound device or slaves.
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 1.
> >
> > - Case: Mode 1(Active Backup) Change active slave, RX/TX test
> > Description:
> > Use Setup#1.
> > Continuing from previous test case.Change the active slave
> port from port0
> > to port1.Verify that the bonded device's MAC has changed
> to slave1's MAC.
> >
> > testpmd> set bonding primary 1 4
> >
> > Repeat the transmission and reception(TX/RX) test verify
> that data is now
> > transmitted and received through the new active slave and
> no longer through
> > port0
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 1.
> >
> > - Case: Mode 1(Active Backup) Link up/down active eth dev
> > Description:
> > Use Setup#1.
> >
> > Bring link between port A and port0 down. If tester is
> ixia, can use
> > IxExplorer to set the "Simulate Cable Disconnect" at the
> port property.
> > Verify that the active slave has been changed from port0.
> Repeat the
> > transmission and reception test verify that data is now
> transmitted and
> > received through the new active slave and no longer
> through port0
> >
> > Bring port0 to link down at the remote end.Verify the
> active slave has been changed from port0.
> > send 100 packets to port3.
> >
> > testpmd> show port stats 4----(Verify port3 have 100 rx
> packets,meanwhile
> > port4 have 100 tx packets,the current primary port have 100
> tx packets,and port0
> > doesn`t have any packet)
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 1.
> >
> > - Case: Mode 1(Active Backup) Bring all slave links down
> > Description:
> > Use Setup#1.
> > Bring all slave ports of bonded port down.
> > Verify that bonded callback for link down is called and
> no active slaves.
> > Verify that data cannot be sent or received through
> bonded port. Send 100 packets
> > to port3 and verify that bonded port can't TX 100 packets.
> >
> > Bring port 0-2 to link down at the remote end. Verify
> port4 has been link down and has no active slave.
> > Send 100 rx packets to port3.
> >
> > testpmd> show port stats 4----(Verify port3 have 100 rx
> packets,meanwhile
> > port4 doesn`t have any packet)
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 1.
> >
> > - Case: Mode 2(Balance XOR) TX Load Balance test
> > Description:
> > Use Setup#1.
> > Bonded port will activate each slave eth dev based on the
> following hash function:
> >
> > ((dst_mac XOR src_mac) % (number of slave ports))
> >
> > Send 300 packets from IXIA port D to non-bonded
> port(port3),and verify these packets
> > will be forwarded to bonded device. The bonded device
> will transimit these packets to all slaves.
> > Verify that each slave receive correct number of packets
> according to the policy. The total number
> > of packets which received by slave should be equal as 300
> packets.
> >
> > Create 3 streams in the IXIA,which streams source MAC are
> 00:00:03:00:0F:00,
> > 00:00:03:00:0F:01,00:00:03:00:0F:02 respectively (make
> sure generate different value by
> > the policy ((dst_mac XOR src_mac) % (number of slave
> ports)) ) and dest MAC all is
> > 90:E2:BA:4A:54:80(this value should been your unbonded
> port address). Respectively
> > send 100 packets to port3 by the 3 streams.
> >
> > testpmd> show port stats all----(Verify port3 have 300 rx
> packets,
> > port4 have 300 tx packets,and port 0-2 have 100 tx
> packets respectively)
> >
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 2.
> >
> > - Case: Mode 2(Balance XOR) TX Load Balance Link down
> > Description:
> > Use Setup#1.
> > ring link down of one slave.
> > Send 300 packets from non-bonded port(port3), and verify
> these
> > packets will be forwarded to bonded device.
> > Verify that each active slave receive correct number of
> packets
> > (according to the mode policy), and the down slave will
> not receive packets.
> > Link down slave 0 at the remote end.Create 3 streams in the
> IXIA like case13.
> > Then respectively send 100 packets to port3 by the 3
> streams.
> >
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 2.
> >
> > - Case: Mode 2(Balance XOR) Bring all slave links down
> > Description:
> > Use Setup#1.
> > Bring all slave links down.
> > Verify that bonded callback for link down is called.
> > Verify no packet can be sent.
> >
> > Bring all slaves to link down at the remote end.Create
> > 3 streams in the IXIA like case13.Then respectively send
> 100 packets
> > to port3 by the 3 streams.
> >
> > testpmd> show port info 4----(Verify bonding port has been
> linked down)
> > testpmd> show port stats all----(Verify port3 have 300 rx
> packets,meanwhile
> > port 0,1,2 and 4 don`t have
> any packet)
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 2.
> >
> >
> > - Case: Mode 2(Balance XOR) Layer 3+4 forwarding
> > Description:
> > Use Setup#1.
> > Use "xmit_hash_policy()" to change to this forwarding mode
> > Create a stream of traffic which will exercise all slave
> ports using the transmit policy
> >
> > ((SRC_PORT XOR DST_PORT) XOR ((SRC_IP XOR DST_IP) AND
> 0xffff) % # of Slaves
> >
> > Transmit data through bonded device, verify TX packet count
> for each slave port is as expected
> >
> > Create 3 streams on a port which is mapped with unbonded
> port 3 at the IXIA end.
> > And set different IP by the transmit policy.Then send 100
> packets on each stream.
> >
> > testpmd> show port stats all----(Verify port3 have 300 rx
> packets,
> > meanwhile port4 have 300 rx packets, port 0-2
> have 100 tx packets respectively)
> >
> > Add Vlan tag in the previouse 3 streams. Everthing else
> remains the same.
> > Then send 100 packets on each stream. Verify the packet
> statics is the same as above.
> >
> > testpmd> show port stats all----(Verify port3
> > have 300 rx packets,meanwhile port4 have 300 rx
> packets,port 0-2 have 100 tx packets respecitvely)
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 2.
> >
> > - Case: Mode 2(Balance XOR) RX test
> > Description:
> > Use Setup#1.
> > Send 100 packets to each bonded slaves(port0,1,2)
> > Verify that each slave receives 100 packets and the bonded
> device receive a total 300 packets.
> > Verify that the bonded device forwards 300 packets to the
> non-bonded port(port4).
> >
> > Send 100 packets to port0,1,2 respectively.
> >
> > testpmd> show port stats all----(Verify port0,1,2
> have 100 tx packets respectively
> > and port4 have 300 rx packets,and port3 have
> 300 tx packets)
> >
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 2.
> >
> > - Case: Mode 3(Broadcast) TX/RX Test
> > Description:
> > Use Setup#1.
> > Add ports 0-2 as slave devices to the bonded port 4. Make
> all slaves
> > to be active slaves on bonded device.
> >
> > RX: Send a packet stream(100 packets) from port A on the
> traffic
> > generator to be forwarded through the bonded port4 to
> port3.
> > Verify the sum of the packets transmitted from the
> traffic generator
> > portA is equal the total received packets on port0,
> port4 and portD(Traffic generator).
> >
> > testpmd> show port stats all---(Verify port0 receive
> 100 packets,
> > and port4 receive 100 packets, and port3
> transmit 100 packets)
> >
> > TX: Send a packet stream(100 packets) from portD on the
> traffic generator
> > to be forwarded through port3 to the bonded port4.
> Verify the sum of
> > the packets(100packets) transmitted from the traffic
> generator port is equal the total
> > received packets on port4, portA and transmitted to
> port0.
> >
> > testpmd> show port stats all---(Verify port3 RX 100 packets,
> > and port0,1,2 TX 100 packets,port4 has 300 TX
> packets)
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 3.
> >
> >
> > - Case: Mode 3(Broadcast) Bring one slave link down
> > Description:
> > Use Setup#1.
> > Bring one slave port link down. Send 100 packets through
> portD to port3,
> > then port3 forwards to bondede device(port4), verify that
> the bonded device
> > and other slaves TX the correct number of packets(100
> packets for each port).
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 3.
> >
> > - Case: Mode 3(Broadcast) Bring all slave links down
> > Description:
> > Use Setup#1.
> > Bring all slave ports of bonded port down
> > Verify that bonded callback for link down is called
> > Verify that data cannot be sent or received through bonded
> port.
> > Expected test result:
> > Verify the RX/TX status of bonded device and slaves in
> mode 3.
> >
> > - Case: Mode 5(Transmit load balance) basic test
> >
> =======================================================================
> =====
> >
> > Use Setup#1
> >
> > Create bonded device. Add first slave - port 0. Verify default bonded
> device has default mode 5.
> > Verify bonded device MAC address is that of primary slave. Add
> another slaves port 1 and 2 to
> > the bonded device. Verify that their MAC are different.
> >
> > Bring the primary slave down. Verify if bonding interface
> reconfigured itself. The next port
> > (in this scenario port 1) should became a primary one but the MAC
> should not be changed - should
> > still be the MAC of port 0.
> >
> > Bring a slave of bonding device down. Verify if bonding interface
> reconfigured itself.
> >
> > Bring the portA, portB and portC down. Verify the bonded device will
> link down.
> >
> > Set bonded device promiscuous mode to be off. Verify only the
> promiscuous state of primary
> > interface will be off.
> >
> >
> > - Case: Mode 5(Transmit load balance) TX/RX test
> >
> =======================================================================
> =====
> >
> > Use Setup#1
> >
> > Create a bonded device(port4 in this scenario). Add port 0-2 as
> slaves of bonding port4. Make
> > packets to transmit between port3 and port4. Then start to forward
> streams.
> >
> > TX: Prepare a packet stream which will send packets in 5 minutes.
> Send this stream from portD
> > to port3. Verify that port3 will receive all packets---no missed
> packets and no error packets.
> > Port 0-2 transmitting packets will be represented as packet0, packet1
> and packet2 respectively
> > and their average packets will be represented as mean. Then verify
> port 0-2 will meet the situation:
> > mean = (packet0 + packet1 + packet2)/3, packet0, packet1 and packet2
> will be higher than 90% of mean
> > and lower than 110% of mean. Then the test of port0, port1 and port2
> balancing are finished positive.
> >
> > RX: A continuation of TX testing setup. Prepare 3 packet streams and
> each stream has 100 packets.
> > Respectively, send these streams from portA, portB and portC. Verify
> only the primary slave port0 will
> > receive 100 packets, and port3 will transmit 100 packets.
> >
> >
> > - Case: Mode 5(Transmit load balance) Bring one slave link down
> >
> =======================================================================
> =====
> >
> > Use Setup#1
> >
> > Create a bonded device(port4 in this scenario). Add port0, port1 and
> port2 as slaves of bonding port4.
> > Make packets to transmit between port3 and port4. Then start to
> forward streams.
> >
> > TX: Prepare a packet stream which will send packets in 5 minutes.
> Bringing port0 link down in the remote
> > end. Send this stream from portD to port3. After the time of 5
> minutes is out, verify that port3 will receive
> > all packets---no missed packets and no error packets. Port 1-2
> transmitting packets will be represented as
> > packet1 and packet2 respectively and their average packets will be
> represented as mean. Then verify port1 and
> > port2 will meet the situation:
> > mean = (packet1 + packet2)/2, packet1 and packet2 will be higher than
> 90% of mean and lower than 110% of mean.
> > Then the test of port1 and port2 balancing are finished positive.
> >
> > RX: Prepare 3 packet streams and each stream has 100 packets.
> Respectively, send these streams from portA, portB
> > and portC. Verify the primary port(port0 this scenario) will receive
> 100 packets, and port1 and port2 will receive
> > nothing, and port3 will transmit 100 packets.
> >
> >
> > - Case: Mode 5(Transmit load balance) Bring all slaves link down
> >
> =======================================================================
> ======
> >
> > Use Setup#1
> >
> > First, set the same setup as case 30. Second, bring all slaves link
> down.
> >
> > TX: Prepare 1 packet stream which will have 300 packets. Send this
> stream from portD to port3. Verify port0,
> > port1 and port2 will transmit nothing.
> >
> > RX: Prepare 3 packet streams and each stream has 100 packets.
> Respectively, send these streams from portA,
> > portB and portC. Verify port0, port1 and port2 will receive nothing.
> >
> > > -----Original Message-----
> > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Pawel
> Wodkowski
> > > Sent: Friday, March 20, 2015 12:09 AM
> > > To: dev@dpdk.org
> > > Cc: Wodkowski, PawelX
> > > Subject: [dpdk-dev] [PATCH] ixgbe: fix buffer overrun bug in non-
> bulk
> > > alloc mode setup
> > >
> > > From: Pawel Wodkowski <pawelx.wdkowski@intel.com>
> > >
> > > When bulk alloc is enabled at compile time but preconditions for
> > > it are not met at runtime the ixgbe_reset_rx_queue() function
> > > overrides rxq->sw_ring not allocated elements.
> > >
> > > Fixes: 01fa1d6 ("ixgbe: unify Rx setup")
> > > Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
> > > ---
> > > lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 4 ++--
> > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> > > b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> > > index 42f0aa5..dddc12f 100644
> > > --- a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> > > +++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
> > > @@ -2111,8 +2111,8 @@ ixgbe_reset_rx_queue(struct ixgbe_hw *hw,
> struct
> > > ixgbe_rx_queue *rxq)
> > > * entries is always allocated
> > > */
> > > memset(&rxq->fake_mbuf, 0x0, sizeof(rxq->fake_mbuf));
> > > - for (i = 0; i < RTE_PMD_IXGBE_RX_MAX_BURST; ++i) {
> > > - rxq->sw_ring[rxq->nb_rx_desc + i].mbuf = &rxq->fake_mbuf;
> > > + for (i = rxq->nb_rx_desc; i < len; ++i) {
> > > + rxq->sw_ring[i].mbuf = &rxq->fake_mbuf;
> > > }
> > >
> > > rxq->rx_nb_avail = 0;
> > > --
> > > 1.9.1
> >
>
prev parent reply other threads:[~2015-03-23 2:11 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-19 16:09 Pawel Wodkowski
2015-03-19 17:02 ` De Lara Guarch, Pablo
2015-03-19 19:42 ` Ananyev, Konstantin
2015-03-20 21:46 ` Thomas Monjalon
2015-03-20 6:50 ` Jiajia, SunX
2015-03-20 21:45 ` Thomas Monjalon
2015-03-23 2:10 ` Jiajia, SunX [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=F21F274FCF2C0948830A3ED0034529772D463D@SHSMSX104.ccr.corp.intel.com \
--to=sunx.jiajia@intel.com \
--cc=dev@dpdk.org \
--cc=thomas.monjalon@6wind.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).