summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/emulex
diff options
context:
space:
mode:
authorVasundhara Volam <vasundhara.volam@emulex.com>2014-03-11 18:53:07 +0530
committerDavid S. Miller <davem@davemloft.net>2014-03-12 16:19:48 -0400
commita5243dabb95c51a4b2dce3f7e4f3ced57d2c5742 (patch)
tree416c8a35ee1b59920365dcb4ab0cc06e5b24ed3c /drivers/net/ethernet/emulex
parent46ee9c143211231d5d81840b28d1b869c0860aa7 (diff)
downloadlinux-stable-a5243dabb95c51a4b2dce3f7e4f3ced57d2c5742.tar.gz
linux-stable-a5243dabb95c51a4b2dce3f7e4f3ced57d2c5742.tar.bz2
linux-stable-a5243dabb95c51a4b2dce3f7e4f3ced57d2c5742.zip
be2net: Create multiple TXQs on RSS capable multi-channel BE3-R interfaces
Currently the driver creates only a single TXQ on any BE3-R multi-channel interface. This patch changes this and creates multiple TXQs on RSS-capable multi-channel BE3-R interfaces. This change helps improve the TX pps performance on the affected interface. Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com> Signed-off-by: Sathya Perla <sathya.perla@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/emulex')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index eaf08917f341..fc44bb331717 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -3209,9 +3209,13 @@ static void BEx_get_resources(struct be_adapter *adapter,
res->max_mcast_mac = BE_MAX_MC;
- /* For BE3 1Gb ports, F/W does not properly support multiple TXQs */
- if (BE2_chip(adapter) || use_sriov || be_is_mc(adapter) ||
- !be_physfn(adapter) || (adapter->port_num > 1))
+ /* 1) For BE3 1Gb ports, FW does not support multiple TXQs
+ * 2) Create multiple TX rings on a BE3-R multi-channel interface
+ * *only* if it is RSS-capable.
+ */
+ if (BE2_chip(adapter) || use_sriov || (adapter->port_num > 1) ||
+ !be_physfn(adapter) || (be_is_mc(adapter) &&
+ !(adapter->function_caps & BE_FUNCTION_CAPS_RSS)))
res->max_tx_qs = 1;
else
res->max_tx_qs = BE3_MAX_TX_QS;