Bug 760724

Summary: bnx2: Increase max rx ring size from 1K to 2K
Product: Red Hat Enterprise Linux 6 Reporter: Brian Maly <bmaly>
Component: kernelAssignee: Neil Horman <nhorman>
Status: CLOSED DUPLICATE QA Contact: Red Hat Kernel QE team <kernel-qe>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.3CC: nhorman
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-12-13 20:07:25 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Brian Maly 2011-12-06 20:38:49 UTC
Description of problem:

On IBM HS22 hardware we appear to run out of rx
ringbuffer at times, the interface stops receiving and rx_fw_discards starts
climbing. We are running 9000MTU, heavy IO and heavy CPU.

Version-Release number of selected component (if applicable):
RHEL6.0
RHEL6.1
RHEL6.2

How reproducible:

Reproduces in about 12hrs or less usually. 

Steps to Reproduce:
1. set nic MTU to 9000
2. run heavy I/O load over NIC, heavy CPU load as well
3. watch for rx dropped rframes, rx_fw_discards starts rising
  
Actual results:


Expected results:


Additional info:


The following upstream commit resolves the issue:



Author: Michael Chan <mchan>  2010-10-18 10:30:54
Committer: David S. Miller <davem>  2010-10-21 06:09:47
Parent: 3511c9132f8b1e1b5634e41a3331c44b0c13be70 (net_sched: remove the unused parameter of qdisc_create_dflt())
Child:  f4e8ab7cc4e819011ca6325e54383b3da7a5d130 (smsc95xx: generate random MAC address once, not every ifup)
Branches: master, remotes/origin/master
Follows: v2.6.36-rc7
Precedes: v2.6.37-rc1

    bnx2: Increase max rx ring size from 1K to 2K
    
    A number of customers are reporting packet loss under certain workloads
    (e.g. heavy bursts of small packets) with flow control disabled.  A larger
    rx ring helps to prevent these losses.
    
    No change in default rx ring size and memory consumption.
    
    Signed-off-by: Andy Gospodarek <andy>
    Acked-by: John Feeney <jfeeney>
    Signed-off-by: Michael Chan <mchan>
    Signed-off-by: David S. Miller <davem>

------------------------------ drivers/net/bnx2.h ------------------------------
index 4f44db6..bf4c342 100644
@@ -6502,8 +6502,8 @@ struct l2_fhdr {
 #define TX_DESC_CNT  (BCM_PAGE_SIZE / sizeof(struct tx_bd))
 #define MAX_TX_DESC_CNT (TX_DESC_CNT - 1)
 
-#define MAX_RX_RINGS	4
-#define MAX_RX_PG_RINGS	16
+#define MAX_RX_RINGS	8
+#define MAX_RX_PG_RINGS	32
 #define RX_DESC_CNT  (BCM_PAGE_SIZE / sizeof(struct rx_bd))
 #define MAX_RX_DESC_CNT (RX_DESC_CNT - 1)
 #define MAX_TOTAL_RX_DESC_CNT (MAX_RX_DESC_CNT * MAX_RX_RINGS)

Comment 1 Brian Maly 2011-12-06 20:41:21 UTC
This fix does not seem to be in the -220 kernel, however its in the RHEL5 kernel. See bz640026.

Comment 3 Neil Horman 2011-12-07 11:50:34 UTC
I expect I'll roll this into a larger bnx2 update for 6.3

Comment 4 Neil Horman 2011-12-13 20:07:25 UTC
I've put this in my tree, and will be releasing it with the 6.3 bnx2 update as tracked by bz720428

*** This bug has been marked as a duplicate of bug 720428 ***