From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-we0-f179.google.com (mail-we0-f179.google.com [74.125.82.179]) by dpdk.org (Postfix) with ESMTP id 468655A76 for ; Fri, 20 Mar 2015 22:46:31 +0100 (CET) Received: by weop45 with SMTP id p45so91860311weo.0 for ; Fri, 20 Mar 2015 14:46:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:organization :user-agent:in-reply-to:references:mime-version :content-transfer-encoding:content-type; bh=fpbgmzAxV/mRH7bNLo1ys7fbHt9bEDVY3VmryoZL91M=; b=fxP5vvTF7dCRTbv9GyAjuvJ7fBKNwPGkoeQuY2a14oyNL/gAAxpOXV3jFGKUYjlWoX v0gmgfyJGomAL8QYVX9WwyTdfjElSrEmZzqheBBbC5khnVyuRDTqZT1hwEMI/o/4VNPU oA3nl9xANbq/bnvDwbcm31fh+5i3vRTxNVYMN7Hst8NW5IbnJYBs5/SB4+ZoDs6/Xdj6 hjcIKisghbO0ePkUlwjSvUIX8J7LVN/hxF62sS1DeD+3f7OL6ggMcd9OEuirA0zzJdFi B3q+OYzZL4C452/SZ5+zUWs9ku+I90VPyMKlA34cCtYsvCN8lkKzTpgfYWlZ04pdHd8I WyaQ== X-Gm-Message-State: ALoCoQlLvTLO0um/Y82isWThdi9p6e8WcugABlhJkt1Dpwjq571toLr1kuaSqrGI88WRva4b2tRO X-Received: by 10.180.97.226 with SMTP id ed2mr27540256wib.4.1426887991121; Fri, 20 Mar 2015 14:46:31 -0700 (PDT) Received: from xps13.localnet (136-92-190-109.dsl.ovh.fr. [109.190.92.136]) by mx.google.com with ESMTPSA id e2sm7999715wjy.46.2015.03.20.14.46.29 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Mar 2015 14:46:30 -0700 (PDT) From: Thomas Monjalon To: "Jiajia, SunX" Date: Fri, 20 Mar 2015 22:45:50 +0100 Message-ID: <11895300.1p8srIVla4@xps13> Organization: 6WIND User-Agent: KMail/4.14.4 (Linux/3.18.4-1-ARCH; KDE/4.14.4; x86_64; ; ) In-Reply-To: References: <1426781356-13999-1-git-send-email-pawelx.wodkowski@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH] ixgbe: fix buffer overrun bug in non-bulk alloc mode setup X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Mar 2015 21:46:31 -0000 2015-03-20 06:50, Jiajia, SunX: > Tested-by: Jiajia, SunX > - 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@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 > > > > 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 > > --- > > 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 >