From: Padmanabh Ratnakar Date: Fri, 25 Nov 2011 07:08:19 +0000 (+0530) Subject: be2net: Fix non utilization of RX queues X-Git-Tag: v2.6.39-400.9.0~821^2~1 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=00032d4f2e41579f7b32ee633d2e0354906f827b;p=users%2Fjedix%2Flinux-maple.git be2net: Fix non utilization of RX queues 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 --- diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index e5a1ff2f814d..f8db41898448 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c @@ -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; }