* [PATCH net-next 0/3] be2net: patch set @ 2015-03-26 7:05 Sathya Perla 2015-03-26 7:05 ` [PATCH net-next 1/3] be2net: assign CPU affinity hints to be2net IRQs Sathya Perla ` (3 more replies) 0 siblings, 4 replies; 9+ messages in thread From: Sathya Perla @ 2015-03-26 7:05 UTC (permalink / raw) To: netdev Hi David, this patch set includes 2 feature additions to the be2net driver: Patch 1 sets up cpu affinity hints for be2net irqs using the cpumask_set_cpu_local_first() API that first picks the near numa cores and when they are exhausted, selects the far numa cores. Patch 2 setups up xps queue mapping for be2net's TXQs to avoid, by default, TX lock contention. Patch 3 just bumps up the driver version. Pls consider applying this patch set to the net-next queue. Thanks! Padmanabh Ratnakar (1): be2net: assign CPU affinity hints to be2net IRQs Sathya Perla (2): be2net: setup xps queue mapping be2net: bump up the driver version to 10.6.0.1 drivers/net/ethernet/emulex/benet/be.h | 4 +++- drivers/net/ethernet/emulex/benet/be_main.c | 27 +++++++++++++++++++++------ 2 files changed, 24 insertions(+), 7 deletions(-) -- 2.2.0 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net-next 1/3] be2net: assign CPU affinity hints to be2net IRQs 2015-03-26 7:05 [PATCH net-next 0/3] be2net: patch set Sathya Perla @ 2015-03-26 7:05 ` Sathya Perla 2015-03-26 7:05 ` [PATCH net-next 2/3] be2net: setup xps queue mapping Sathya Perla ` (2 subsequent siblings) 3 siblings, 0 replies; 9+ messages in thread From: Sathya Perla @ 2015-03-26 7:05 UTC (permalink / raw) To: netdev From: Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com> This patch provides hints to irqbalance to map be2net IRQs to specific CPU cores. cpumask_set_cpu_local_first() is used, which first maps IRQs to near NUMA cores; when those cores are exhausted, IRQs are mapped to far NUMA cores. Signed-off-by: Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com> Signed-off-by: Sathya Perla <sathya.perla@emulex.com> --- drivers/net/ethernet/emulex/benet/be.h | 2 ++ drivers/net/ethernet/emulex/benet/be_main.c | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h index eb39673..a2fe1f3 100644 --- a/drivers/net/ethernet/emulex/benet/be.h +++ b/drivers/net/ethernet/emulex/benet/be.h @@ -30,6 +30,7 @@ #include <linux/firmware.h> #include <linux/slab.h> #include <linux/u64_stats_sync.h> +#include <linux/cpumask.h> #include "be_hw.h" #include "be_roce.h" @@ -183,6 +184,7 @@ struct be_eq_obj { u16 spurious_intr; struct napi_struct napi; struct be_adapter *adapter; + cpumask_var_t affinity_mask; #ifdef CONFIG_NET_RX_BUSY_POLL #define BE_EQ_IDLE 0 diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index d8df78b..3541207 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -2342,6 +2342,7 @@ static void be_evt_queues_destroy(struct be_adapter *adapter) napi_hash_del(&eqo->napi); netif_napi_del(&eqo->napi); } + free_cpumask_var(eqo->affinity_mask); be_queue_free(adapter, &eqo->q); } } @@ -2357,6 +2358,11 @@ static int be_evt_queues_create(struct be_adapter *adapter) adapter->cfg_num_qs); for_all_evt_queues(adapter, eqo, i) { + if (!zalloc_cpumask_var(&eqo->affinity_mask, GFP_KERNEL)) + return -ENOMEM; + cpumask_set_cpu_local_first(i, dev_to_node(&adapter->pdev->dev), + eqo->affinity_mask); + netif_napi_add(adapter->netdev, &eqo->napi, be_poll, BE_NAPI_WEIGHT); napi_hash_add(&eqo->napi); @@ -3028,6 +3034,8 @@ static int be_msix_register(struct be_adapter *adapter) status = request_irq(vec, be_msix, 0, eqo->desc, eqo); if (status) goto err_msix; + + irq_set_affinity_hint(vec, eqo->affinity_mask); } return 0; @@ -3072,7 +3080,7 @@ static void be_irq_unregister(struct be_adapter *adapter) { struct net_device *netdev = adapter->netdev; struct be_eq_obj *eqo; - int i; + int i, vec; if (!adapter->isr_registered) return; @@ -3084,8 +3092,11 @@ static void be_irq_unregister(struct be_adapter *adapter) } /* MSIx */ - for_all_evt_queues(adapter, eqo, i) - free_irq(be_msix_vec_get(adapter, eqo), eqo); + for_all_evt_queues(adapter, eqo, i) { + vec = be_msix_vec_get(adapter, eqo); + irq_set_affinity_hint(vec, NULL); + free_irq(vec, eqo); + } done: adapter->isr_registered = false; -- 2.2.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH net-next 2/3] be2net: setup xps queue mapping 2015-03-26 7:05 [PATCH net-next 0/3] be2net: patch set Sathya Perla 2015-03-26 7:05 ` [PATCH net-next 1/3] be2net: assign CPU affinity hints to be2net IRQs Sathya Perla @ 2015-03-26 7:05 ` Sathya Perla 2015-03-26 7:05 ` [PATCH net-next 3/3] be2net: bump up the driver version to 10.6.0.1 Sathya Perla 2015-03-29 19:34 ` [PATCH net-next 0/3] be2net: patch set David Miller 3 siblings, 0 replies; 9+ messages in thread From: Sathya Perla @ 2015-03-26 7:05 UTC (permalink / raw) To: netdev This patch sets up xps queue mapping on load, so that TX traffic is steered to the queue whose irqs are being processed by the current cpu. This helps in avoiding TX lock contention. Signed-off-by: Sathya Perla <sathya.perla@emulex.com> --- drivers/net/ethernet/emulex/benet/be_main.c | 10 +++++++--- 1 file 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 3541207..5ff7fba 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -2454,8 +2454,9 @@ static void be_tx_queues_destroy(struct be_adapter *adapter) static int be_tx_qs_create(struct be_adapter *adapter) { - struct be_queue_info *cq, *eq; + struct be_queue_info *cq; struct be_tx_obj *txo; + struct be_eq_obj *eqo; int status, i; adapter->num_tx_qs = min(adapter->num_evt_qs, be_max_txqs(adapter)); @@ -2473,8 +2474,8 @@ static int be_tx_qs_create(struct be_adapter *adapter) /* If num_evt_qs is less than num_tx_qs, then more than * one txq share an eq */ - eq = &adapter->eq_obj[i % adapter->num_evt_qs].q; - status = be_cmd_cq_create(adapter, cq, eq, false, 3); + eqo = &adapter->eq_obj[i % adapter->num_evt_qs]; + status = be_cmd_cq_create(adapter, cq, &eqo->q, false, 3); if (status) return status; @@ -2486,6 +2487,9 @@ static int be_tx_qs_create(struct be_adapter *adapter) status = be_cmd_txq_create(adapter, txo); if (status) return status; + + netif_set_xps_queue(adapter->netdev, eqo->affinity_mask, + eqo->idx); } dev_info(&adapter->pdev->dev, "created %d TX queue(s)\n", -- 2.2.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH net-next 3/3] be2net: bump up the driver version to 10.6.0.1 2015-03-26 7:05 [PATCH net-next 0/3] be2net: patch set Sathya Perla 2015-03-26 7:05 ` [PATCH net-next 1/3] be2net: assign CPU affinity hints to be2net IRQs Sathya Perla 2015-03-26 7:05 ` [PATCH net-next 2/3] be2net: setup xps queue mapping Sathya Perla @ 2015-03-26 7:05 ` Sathya Perla 2015-03-29 19:34 ` [PATCH net-next 0/3] be2net: patch set David Miller 3 siblings, 0 replies; 9+ messages in thread From: Sathya Perla @ 2015-03-26 7:05 UTC (permalink / raw) To: netdev Signed-off-by: Sathya Perla <sathya.perla@emulex.com> --- drivers/net/ethernet/emulex/benet/be.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/emulex/benet/be.h b/drivers/net/ethernet/emulex/benet/be.h index a2fe1f3..4b0494b 100644 --- a/drivers/net/ethernet/emulex/benet/be.h +++ b/drivers/net/ethernet/emulex/benet/be.h @@ -35,7 +35,7 @@ #include "be_hw.h" #include "be_roce.h" -#define DRV_VER "10.4u" +#define DRV_VER "10.6.0.1" #define DRV_NAME "be2net" #define BE_NAME "Emulex BladeEngine2" #define BE3_NAME "Emulex BladeEngine3" -- 2.2.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH net-next 0/3] be2net: patch set 2015-03-26 7:05 [PATCH net-next 0/3] be2net: patch set Sathya Perla ` (2 preceding siblings ...) 2015-03-26 7:05 ` [PATCH net-next 3/3] be2net: bump up the driver version to 10.6.0.1 Sathya Perla @ 2015-03-29 19:34 ` David Miller 3 siblings, 0 replies; 9+ messages in thread From: David Miller @ 2015-03-29 19:34 UTC (permalink / raw) To: sathya.perla; +Cc: netdev From: Sathya Perla <sathya.perla@emulex.com> Date: Thu, 26 Mar 2015 03:05:07 -0400 > Hi David, this patch set includes 2 feature additions to the be2net driver: > > Patch 1 sets up cpu affinity hints for be2net irqs using the > cpumask_set_cpu_local_first() API that first picks the near numa cores > and when they are exhausted, selects the far numa cores. > > Patch 2 setups up xps queue mapping for be2net's TXQs to avoid, > by default, TX lock contention. > > Patch 3 just bumps up the driver version. > > Pls consider applying this patch set to the net-next queue. Thanks! Series applied, thanks. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net-next 0/3] be2net: patch set @ 2015-03-04 5:44 Sathya Perla 2015-03-04 20:59 ` David Miller 0 siblings, 1 reply; 9+ messages in thread From: Sathya Perla @ 2015-03-04 5:44 UTC (permalink / raw) To: netdev Hi Dave, the following patch set includes three feature additions relating to SR-IOV to be2net. Patch 1 avoid creating a non-RSS default RXQ when FW allows it. This prevents wasting one RXQ for each VF. Patch 2 adds support for evenly distributing all queue & filter resources across VFs. The FW informs the driver as to which resources are distributable. Patch 3 implements the sriov_configure PCI method to allow runtime enablement of VFs via sysfs. Pls consider applying this patch-set to the net-next tree. Thanks! Vasundhara Volam (3): be2net: avoid creating the non-RSS default RXQ if FW allows to be2net: re-distribute SRIOV resources allowed by FW be2net: implement .sriov_configure() PCI callback drivers/net/ethernet/emulex/benet/be.h | 9 +- drivers/net/ethernet/emulex/benet/be_cmds.c | 114 +++++++---- drivers/net/ethernet/emulex/benet/be_cmds.h | 23 ++- drivers/net/ethernet/emulex/benet/be_ethtool.c | 2 +- drivers/net/ethernet/emulex/benet/be_main.c | 260 +++++++++++++++++-------- 5 files changed, 285 insertions(+), 123 deletions(-) -- 2.2.0 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net-next 0/3] be2net: patch set 2015-03-04 5:44 Sathya Perla @ 2015-03-04 20:59 ` David Miller 0 siblings, 0 replies; 9+ messages in thread From: David Miller @ 2015-03-04 20:59 UTC (permalink / raw) To: sathya.perla; +Cc: netdev From: Sathya Perla <sathya.perla@emulex.com> Date: Wed, 4 Mar 2015 00:44:31 -0500 > Hi Dave, the following patch set includes three feature additions relating > to SR-IOV to be2net. > > Patch 1 avoid creating a non-RSS default RXQ when FW allows it. > This prevents wasting one RXQ for each VF. > > Patch 2 adds support for evenly distributing all queue & filter resources > across VFs. The FW informs the driver as to which resources are distributable. > > Patch 3 implements the sriov_configure PCI method to allow runtime > enablement of VFs via sysfs. > > Pls consider applying this patch-set to the net-next tree. Thanks! Series applied, thanks. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH net-next 0/3] be2net: patch set @ 2014-08-01 12:17 Sathya Perla 2014-08-02 22:59 ` David Miller 0 siblings, 1 reply; 9+ messages in thread From: Sathya Perla @ 2014-08-01 12:17 UTC (permalink / raw) To: netdev Patch 1 fixes a regression caused by a previous commit on net-next. Old versions of BE3 FW may not support cmds to re-provision (and hence optimize) resources/queues in SR-IOV config. Do not treat this FW cmd failure as fatal and fail the function initialization. Instead, just enable SR-IOV with the resources provided by the FW. Patch 2 ignores a VF mac address setting if the new mac is already active on the VF. Patch 3 adds support to delete a FW-dump via ethtool on Lancer adapters. Please consider applying this patch-set to the net-next tree. Thanks! Kalesh AP (1): be2net: support deleting FW dump via ethtool (only for Lancer) Sathya Perla (1): be2net: ignore get/set profile FW cmd failures Vasundhara Volam (1): be2net: ignore VF mac address setting for the same mac drivers/net/ethernet/emulex/benet/be.h | 2 + drivers/net/ethernet/emulex/benet/be_cmds.c | 48 ++++++++++++++- drivers/net/ethernet/emulex/benet/be_cmds.h | 10 +++ drivers/net/ethernet/emulex/benet/be_ethtool.c | 17 +++--- drivers/net/ethernet/emulex/benet/be_main.c | 75 ++++++++++++++---------- 5 files changed, 109 insertions(+), 43 deletions(-) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH net-next 0/3] be2net: patch set 2014-08-01 12:17 Sathya Perla @ 2014-08-02 22:59 ` David Miller 0 siblings, 0 replies; 9+ messages in thread From: David Miller @ 2014-08-02 22:59 UTC (permalink / raw) To: sathya.perla; +Cc: netdev From: Sathya Perla <sathya.perla@emulex.com> Date: Fri, 1 Aug 2014 17:47:29 +0530 > Patch 1 fixes a regression caused by a previous commit on net-next. > Old versions of BE3 FW may not support cmds to re-provision (and hence > optimize) resources/queues in SR-IOV config. Do not treat this FW cmd > failure as fatal and fail the function initialization. Instead, just > enable SR-IOV with the resources provided by the FW. > > Patch 2 ignores a VF mac address setting if the new mac is already active > on the VF. > > Patch 3 adds support to delete a FW-dump via ethtool on Lancer adapters. > > Please consider applying this patch-set to the net-next tree. Thanks! Series applied, thank you. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2015-03-29 19:25 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-03-26 7:05 [PATCH net-next 0/3] be2net: patch set Sathya Perla 2015-03-26 7:05 ` [PATCH net-next 1/3] be2net: assign CPU affinity hints to be2net IRQs Sathya Perla 2015-03-26 7:05 ` [PATCH net-next 2/3] be2net: setup xps queue mapping Sathya Perla 2015-03-26 7:05 ` [PATCH net-next 3/3] be2net: bump up the driver version to 10.6.0.1 Sathya Perla 2015-03-29 19:34 ` [PATCH net-next 0/3] be2net: patch set David Miller -- strict thread matches above, loose matches on Subject: below -- 2015-03-04 5:44 Sathya Perla 2015-03-04 20:59 ` David Miller 2014-08-01 12:17 Sathya Perla 2014-08-02 22:59 ` David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).