Browse Source

be2net: post full RXQ on interface enable

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>
Suresh Reddy 10 years ago
parent
commit
b02e60c86e
1 changed files with 5 additions and 2 deletions
  1. 5 2
      drivers/net/ethernet/emulex/benet/be_main.c

+ 5 - 2
drivers/net/ethernet/emulex/benet/be_main.c

@@ -3326,9 +3326,12 @@ static int be_rx_qs_create(struct be_adapter *adapter)
 
 
 	memcpy(rss->rss_hkey, rss_key, RSS_HASH_KEY_LEN);
 	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)
 	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;
 	return 0;
 }
 }