{"id":806678,"url":"http://patchwork.ozlabs.org/api/1.0/patches/806678/?format=json","project":{"id":7,"url":"http://patchwork.ozlabs.org/api/1.0/projects/7/?format=json","name":"Linux network development","link_name":"netdev","list_id":"netdev.vger.kernel.org","list_email":"netdev@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<1503942035-24924-4-git-send-email-michael.chan@broadcom.com>","date":"2017-08-28T17:40:27","name":"[net-next,03/11] bnxt_en: assign CPU affinity hints to bnxt_en IRQs","commit_ref":null,"pull_url":null,"state":"accepted","archived":true,"hash":"d48f13fcf34af2c73b570ba7e82fb760b40818c0","submitter":{"id":68365,"url":"http://patchwork.ozlabs.org/api/1.0/people/68365/?format=json","name":"Michael Chan","email":"michael.chan@broadcom.com"},"delegate":{"id":34,"url":"http://patchwork.ozlabs.org/api/1.0/users/34/?format=json","username":"davem","first_name":"David","last_name":"Miller","email":"davem@davemloft.net"},"mbox":"http://patchwork.ozlabs.org/project/netdev/patch/1503942035-24924-4-git-send-email-michael.chan@broadcom.com/mbox/","series":[{"id":225,"url":"http://patchwork.ozlabs.org/api/1.0/series/225/?format=json","date":"2017-08-28T17:40:24","name":"bnxt_en: Updates.","version":1,"mbox":"http://patchwork.ozlabs.org/series/225/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/806678/checks/","tags":{},"headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=broadcom.com header.i=@broadcom.com\n\theader.b=\"AiCd9HdO\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xgzZg2zvjz9sP5\n\tfor <patchwork-incoming@ozlabs.org>;\n\tTue, 29 Aug 2017 03:40:59 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751464AbdH1Rk4 (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tMon, 28 Aug 2017 13:40:56 -0400","from mail-qt0-f178.google.com ([209.85.216.178]:33350 \"EHLO\n\tmail-qt0-f178.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751304AbdH1Rkx (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Mon, 28 Aug 2017 13:40:53 -0400","by mail-qt0-f178.google.com with SMTP id e2so5348213qta.0\n\tfor <netdev@vger.kernel.org>; Mon, 28 Aug 2017 10:40:52 -0700 (PDT)","from localhost.dhcp.broadcom.net ([192.19.255.250])\n\tby smtp.gmail.com with ESMTPSA id\n\t20sm592006qtu.52.2017.08.28.10.40.50\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tMon, 28 Aug 2017 10:40:51 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=broadcom.com; s=google;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=f+YlBSvaJBHh6y1XcuQIvDX1BIT8deST7HmzvP3vrTg=;\n\tb=AiCd9HdORpqdbsfO7gheakHMTO0T01UJO68Durfu2EDaYCmWBBI37tfx73qoFZaqOw\n\tp2wjyWJCvfih9uavGpozAGa//MzZ+MQxqvxzhWDJq+4AkrWXUIkAZWCQSfVJuX+Njo2I\n\t9wSV5HZqJRJWFJrsqfVi8rA6ansL7qF3SnjNw=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=f+YlBSvaJBHh6y1XcuQIvDX1BIT8deST7HmzvP3vrTg=;\n\tb=T4MJ1c5xAdcXvq50cwHJXszgFHbhjAsWhhBqQ2G1MdNxcBFmeVhyKlIBnCBVWbrMSZ\n\tzIIPFegNT6pZePpzS2KIoAqc30Xs/I5yvk8gEqQXxE3BXFzU3//lcZq/RB/IHs2o6cJS\n\tYNo6lnvsbPPZgQynnNnE1m3XYw6drJ/i5deVWb4wjdN0C3EezhzAlg/XbrA6Ih3956VC\n\tdqoek6wgNVgMlRWhVD3NS6LoyS2H7ZcxnTjLQuYnecfpP83E0LaxIbmYPswVqsyUnqkM\n\tLu0K4gyXTeAgrtZH128DezvxNX8XKbLPqFgMIaeWbflJ5zLglqRQkcMMPqAU9E2Ab+Pt\n\tSTGA==","X-Gm-Message-State":"AHYfb5hDsLLqQ0f8kNf5X7dp7vixL+KmdftjXD8g2DrKxmjBIPc/IU9A\n\tZ75ehjZPt+ETHPu1","X-Received":"by 10.200.23.37 with SMTP id w34mr2078583qtj.164.1503942051985; \n\tMon, 28 Aug 2017 10:40:51 -0700 (PDT)","From":"Michael Chan <michael.chan@broadcom.com>","To":"davem@davemloft.net","Cc":"netdev@vger.kernel.org,\n\tVasundhara Volam <vasundhara-v.volam@broadcom.com>","Subject":"[PATCH net-next 03/11] bnxt_en: assign CPU affinity hints to\n\tbnxt_en IRQs","Date":"Mon, 28 Aug 2017 13:40:27 -0400","Message-Id":"<1503942035-24924-4-git-send-email-michael.chan@broadcom.com>","X-Mailer":"git-send-email 1.8.3.1","In-Reply-To":"<1503942035-24924-1-git-send-email-michael.chan@broadcom.com>","References":"<1503942035-24924-1-git-send-email-michael.chan@broadcom.com>","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"},"content":"From: Vasundhara Volam <vasundhara-v.volam@broadcom.com>\n\nThis patch provides hints to irqbalance to map bnxt_en device IRQs\nto specific CPU cores. cpumask_local_spread() is used, which first\nmaps IRQs to near NUMA cores; when those cores are exhausted, IRQs\nare mapped to far NUMA cores.\n\nSigned-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>\nSigned-off-by: Michael Chan <michael.chan@broadcom.com>\n---\n drivers/net/ethernet/broadcom/bnxt/bnxt.c | 25 ++++++++++++++++++++++++-\n drivers/net/ethernet/broadcom/bnxt/bnxt.h |  4 +++-\n 2 files changed, 27 insertions(+), 2 deletions(-)","diff":"diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c\nindex 4b0a807..9657bfb 100644\n--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c\n+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c\n@@ -49,6 +49,7 @@\n #include <linux/aer.h>\n #include <linux/bitmap.h>\n #include <linux/cpu_rmap.h>\n+#include <linux/cpumask.h>\n \n #include \"bnxt_hsi.h\"\n #include \"bnxt.h\"\n@@ -5554,8 +5555,15 @@ static void bnxt_free_irq(struct bnxt *bp)\n \n \tfor (i = 0; i < bp->cp_nr_rings; i++) {\n \t\tirq = &bp->irq_tbl[i];\n-\t\tif (irq->requested)\n+\t\tif (irq->requested) {\n+\t\t\tif (irq->have_cpumask) {\n+\t\t\t\tirq_set_affinity_hint(irq->vector, NULL);\n+\t\t\t\tfree_cpumask_var(irq->cpu_mask);\n+\t\t\t\tirq->have_cpumask = 0;\n+\t\t\t}\n \t\t\tfree_irq(irq->vector, bp->bnapi[i]);\n+\t\t}\n+\n \t\tirq->requested = 0;\n \t}\n }\n@@ -5588,6 +5596,21 @@ static int bnxt_request_irq(struct bnxt *bp)\n \t\t\tbreak;\n \n \t\tirq->requested = 1;\n+\n+\t\tif (zalloc_cpumask_var(&irq->cpu_mask, GFP_KERNEL)) {\n+\t\t\tint numa_node = dev_to_node(&bp->pdev->dev);\n+\n+\t\t\tirq->have_cpumask = 1;\n+\t\t\tcpumask_set_cpu(cpumask_local_spread(i, numa_node),\n+\t\t\t\t\tirq->cpu_mask);\n+\t\t\trc = irq_set_affinity_hint(irq->vector, irq->cpu_mask);\n+\t\t\tif (rc) {\n+\t\t\t\tnetdev_warn(bp->dev,\n+\t\t\t\t\t    \"Set affinity failed, IRQ = %d\\n\",\n+\t\t\t\t\t    irq->vector);\n+\t\t\t\tbreak;\n+\t\t\t}\n+\t\t}\n \t}\n \treturn rc;\n }\ndiff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h\nindex 568516f..801c0f7 100644\n--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h\n+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h\n@@ -701,8 +701,10 @@ struct bnxt_napi {\n struct bnxt_irq {\n \tirq_handler_t\thandler;\n \tunsigned int\tvector;\n-\tu8\t\trequested;\n+\tu8\t\trequested:1;\n+\tu8\t\thave_cpumask:1;\n \tchar\t\tname[IFNAMSIZ + 2];\n+\tcpumask_var_t\tcpu_mask;\n };\n \n #define HWRM_RING_ALLOC_TX\t0x1\n","prefixes":["net-next","03/11"]}