2015-03-20 06:50, Jiajia, SunX:
> Tested-by: Jiajia, SunX <sunx.jiajia at intel.com>
> - Tested Commit: fe4810a01e57645ad92577d628f562791408ce21

This commit id is related to a PDF doc change.

> - 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.

> 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 at dpdk.org] On Behalf Of Pawel Wodkowski
> > Sent: Friday, March 20, 2015 12:09 AM
> > To: dev at 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 at 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 at 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
> 


Reply via email to