be2net: post full RXQ on interface enable
authorSuresh Reddy <Suresh.Reddy@avagotech.com>
Wed, 6 May 2015 09:30:36 +0000 (05:30 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sat, 9 May 2015 20:27:03 +0000 (16:27 -0400)
When an RXQ is created in be_open(), the driver currently posts only
64 buffers. This sometimes results in packet drops when there is a traffic
burst as soon as the interface is enabled.
This patch fixes this problem by posting the full RXQ on interface enable.

Signed-off-by: Suresh Reddy <Suresh.Reddy@avagotech.com>
Signed-off-by: Sathya Perla <sathya.perla@avagotech.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be_main.c

index 770779ec4714900545ff003fd2444e21ee61eb67..09c3faf7dff958b4f6be5b339e310038dbeea4c3 100644 (file)
@@ -3326,9 +3326,12 @@ static int be_rx_qs_create(struct be_adapter *adapter)
 
        memcpy(rss->rss_hkey, rss_key, RSS_HASH_KEY_LEN);
 
-       /* First time posting */
+       /* Post 1 less than RXQ-len to avoid head being equal to tail,
+        * which is a queue empty condition
+        */
        for_all_rx_queues(adapter, rxo, i)
-               be_post_rx_frags(rxo, GFP_KERNEL, MAX_RX_POST);
+               be_post_rx_frags(rxo, GFP_KERNEL, RX_Q_LEN - 1);
+
        return 0;
 }