diff options
author | Vasundhara Volam <vasundhara.volam@emulex.com> | 2014-03-11 18:53:07 +0530 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-03-12 16:19:48 -0400 |
commit | a5243dabb95c51a4b2dce3f7e4f3ced57d2c5742 (patch) | |
tree | 416c8a35ee1b59920365dcb4ab0cc06e5b24ed3c /drivers/net/ethernet/emulex | |
parent | 46ee9c143211231d5d81840b28d1b869c0860aa7 (diff) | |
download | linux-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.c | 10 |
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; |