]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
be2net: Fix non utilization of RX queues
authorPadmanabh Ratnakar <padmanabh.ratnakar@emulex.com>
Fri, 25 Nov 2011 07:08:19 +0000 (12:38 +0530)
committerMaxim Uvarov <maxim.uvarov@oracle.com>
Thu, 8 Dec 2011 23:36:13 +0000 (15:36 -0800)
When non power of two MSIX vectors are given to driver, some RX queues
are not utilized. Program RSS table in such a way that all queues
are utilized.

Signed-off-by: Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com>
drivers/net/benet/be_main.c

index e5a1ff2f814d96e3b2d543dff510babf09592537..f8db4189844808c484c3d8a95b226f6fdc053706 100644 (file)
@@ -2311,8 +2311,8 @@ static int be_close(struct net_device *netdev)
 static int be_rx_queues_setup(struct be_adapter *adapter)
 {
        struct be_rx_obj *rxo;
-       int rc, i;
-       u8 rsstable[MAX_RSS_QS];
+       int rc, i, j;
+       u8 rsstable[128];
 
        for_all_rx_queues(adapter, rxo, i) {
                rc = be_cmd_rxq_create(adapter, &rxo->q, rxo->cq.id,
@@ -2324,11 +2324,15 @@ static int be_rx_queues_setup(struct be_adapter *adapter)
        }
 
        if (be_multi_rxq(adapter)) {
-               for_all_rss_queues(adapter, rxo, i)
-                       rsstable[i] = rxo->rss_id;
+               for (j = 0; j < 128; j += adapter->num_rx_qs - 1) {
+                       for_all_rss_queues(adapter, rxo, i) {
+                               if ((j + i) >= 128)
+                                       break;
+                               rsstable[j + i] = rxo->rss_id;
+                       }
+               }
+               rc = be_cmd_rss_config(adapter, rsstable, 128);
 
-               rc = be_cmd_rss_config(adapter, rsstable,
-                       adapter->num_rx_qs - 1);
                if (rc)
                        return rc;
        }