From patchwork Thu Sep 24 15:00:15 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Madalin Bucur X-Patchwork-Id: 522387 X-Patchwork-Delegate: scottwood@freescale.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id B85831401F6 for ; Fri, 25 Sep 2015 01:23:47 +1000 (AEST) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 9D9A31A2B5D for ; Fri, 25 Sep 2015 01:23:47 +1000 (AEST) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0139.outbound.protection.outlook.com [207.46.100.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 199C11A0719 for ; Fri, 25 Sep 2015 01:17:57 +1000 (AEST) Received: from BN3PR0301CA0069.namprd03.prod.outlook.com (10.160.152.165) by CY1PR0301MB1274.namprd03.prod.outlook.com (10.161.214.22) with Microsoft SMTP Server (TLS) id 15.1.274.16; Thu, 24 Sep 2015 15:02:42 +0000 Received: from BY2FFO11FD021.protection.gbl (2a01:111:f400:7c0c::101) by BN3PR0301CA0069.outlook.office365.com (2a01:111:e400:401e::37) with Microsoft SMTP Server (TLS) id 15.1.274.16 via Frontend Transport; Thu, 24 Sep 2015 15:02:41 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; Received-SPF: Fail (protection.outlook.com: domain of freescale.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BY2FFO11FD021.mail.protection.outlook.com (10.1.15.210) with Microsoft SMTP Server (TLS) id 15.1.274.4 via Frontend Transport; Thu, 24 Sep 2015 15:02:41 +0000 Received: from fsr-fed1764-003.ea.freescale.net (fsr-fed1764-003.ea.freescale.net [10.171.73.45]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id t8OF2Fko018660; Thu, 24 Sep 2015 08:02:37 -0700 From: Madalin Bucur To: Subject: [v3 4/8] dpaa_eth: add driver's Tx queue selection mechanism Date: Thu, 24 Sep 2015 18:00:15 +0300 Message-ID: <1443106819-5549-5-git-send-email-madalin.bucur@freescale.com> X-Mailer: git-send-email 1.8.2.3 In-Reply-To: <1443106819-5549-1-git-send-email-madalin.bucur@freescale.com> References: <1443106819-5549-1-git-send-email-madalin.bucur@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD021; 1:yKs/haRG3xODc9YC375/3EMAcQ3LgYzqjATXW6tHCCn9B5urtuaQqAT9BMuJya/f5TzjgjqEzZ0R9xJMXCvMFkruxl8KKRdfZVCrQEJrNCz45S3bGSV8lurCA18ujyGa1VNuZTEDI+2WHkVLWIM2G/eZGVesdGUsTUMcm+SVXT3rQGzkFdhHT0Xw2exMh6OPCJWRf0qrFo+nFQHnvaRcz6tTtED9Sn0EF1XqYU0OOOdbPJsNi1rUIKu67Q5sYnFltLNmUbVbTHPJHLp5zYbvA5SbctXGGOKop5eIM2aMc3sMGVwiKs8bjwZmFGOu6+UmZe8mCV7g8Ez/vZuev4fhWu5ygwyKciqt6XcvCRC4x4Dod/rLOJyKnddW2k1kQqgOgIVuNYyUe37TB9h25Bhp6g== X-Forefront-Antispam-Report: CIP:192.88.158.2; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(43066003)(575784001)(77096005)(189998001)(86362001)(76176999)(69596002)(4001540100001)(50986999)(97736004)(81156007)(5001830100001)(68736005)(62966003)(6806005)(36756003)(104016004)(107886002)(110136002)(5001960100002)(77156002)(2950100001)(11100500001)(85426001)(5003940100001)(64706001)(229853001)(87936001)(19580395003)(19580405001)(48376002)(5007970100001)(105606002)(5001860100001)(53806999)(47776003)(50466002)(2351001)(46102003)(106466001)(33646002)(50226001)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:CY1PR0301MB1274; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1274; 2:956f0+xJ7lKFV6ASWNp6z4f77EqBK4xvo7iBxPBMcbkeFRr8/+QJzaLt0vduWfzW9IUB6nwXTUKxaM/19VBXdqRvjTac0wGQMVDj5lYRpuutvhVssZyz4Z5Z+e8qcM4PVmm4OPTNa82c5x+Zembtu9Pcr+x7kHw4e4SlTo/o+Bg=; 3:K8sSeoefJsW6zp+6eidzIhFbIXGFNhfpfVV16S49wrS7UcFDC3vCrTa5kGsVllggopna1VZRcGNr2fOKsYcOUb0qXPR0yABa9z0ybsqvjNONk0eMvn7dca+rNPhsgi6NTHvo3jVUC+x4sK/9sz3aMtuLAUS/0Lwz2Wa6/TqIrYcjMT+beKKajQPlvlghDCIYLy1Heuutt/Y8CsM2/u6nSh9QJi9ZtFYmUyJC44imNvA=; 25:DrWc9FPhTm4TFhKnfodtuJt4UDhFTC5LB/uWdpT4V0h7djVJKNrxQD1K4eeZgizs+Fba9YFlDGwgigdFdEJeVLRG8Rq1EqKyUQsUAPM+XcLnE5ujv0wpuhyazDumV4BVZCtunez9TN2bSAcxQhLNpmzrsLt9OnT6fd1DjDF7A8JSg9STYWO3cg0aJY6AgMcwiRWm/s8+y4vMpwpC7QNVZlcgVnzUfWqIdn/edXMAxW0dkP7n6qi+VF7SQQdfslI4mDkZSrsJAEP7DPGRKYRJ+Q== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB1274; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1274; 20:Go499Q7M1N3sNORyXMeK0whdyrYkdKFQF282ksqD/iwqYbGVq3lub1pnYQD3lFTy0b3f/jN8WtXCSr4Zrx3Tg1GNbICnuciu3LlaFSYBF9ZKLTvsgcbywx89Uf3ayUp1hWVJ8SxDtm+Jio4B4qK9Wc09zGQ0Nm5ams48mRXgHLYAS2ipFWuAivFddDyFSucgPljd0/8MkQgUpZ7sCqQCrB13hIDwnOkvddTiPXUGjBZvUTnF3JPklDoFWDE7OpEAD8uivM0R/P954NHMTCd/WxtGtA0z4gK699wjsaFZWP7BY4qsRsnOsM/WX/Q8kYKOrYgbj7W/gHoPAa7eQ51nn6/uYoGT9mVyOiUlwD/1Ldo=; 4:grydGivD8BXIvA/GmSguK9zmxeC3q4VSyfdli0LUjn9bOfIofXr5Kx/fdz8sPwmkmBivc83J3uRivVenWx79suVjxGt41UDY3PuEkeqPFF0mCioLylKU52iBgk5SeoSRNnx1/e9JupdHPfuj8DbCsI27EXFfye7Zawe7Ev4+BBxoIUViFAEEoLpDm9XPe1VlHvQTqpVzRvwnU5WEFv9V8hiRhCkLXudtcA+KONRQ46Gh9CxY9SDvVQRCEcOAzumHuGCQPcEMGzAT24hxbLrn+M3Jh3pF+12QblHq3fCn3HPbrFy9EmJvrJlEDnXumDyEarcy1s57l2vC1UmjbrIkFigR6ltWvRlbEl+h9YRrtmM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(520078)(3002001); SRVR:CY1PR0301MB1274; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0301MB1274; X-Forefront-PRVS: 070912876F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB1274; 23:D6WCONntWkYoorvX0Ads/HRRccf53p7kGnh3avU?= =?us-ascii?Q?SbOFx1/ebMCeFMw0G9sN2Lq3FlYTYjzVsUkNy8SwDivtCFKyHd/ZEeZjEvc0?= =?us-ascii?Q?9LKzWYNe06Gvy8CsVaxR9rRseglGKe0pHm7/sXACpF1J68Hzp3AQ3wcl3/QV?= =?us-ascii?Q?ypefSlZMscTGoZgYs/dus940SkIxVjxD2/YwoAikKgewgxYhBnv2g7vXCJy2?= =?us-ascii?Q?T4il1mp2Hm5HzY0RlhI9fMoTbNgfeUQs7wGVNXaJ69tfQj5OTVgwRsGx7qKc?= =?us-ascii?Q?uwkf/GVOdz2sJyJf9eu8ogWjARKSECvH3naVmetgQ0MCIy+aUGFsHkFGYocE?= =?us-ascii?Q?aA0VH6e7hBaMzZE6fZ8UTVq1iRYIlDBzi1RMbIRq14AK0upyTlLwuTl2LSaW?= =?us-ascii?Q?FVqXf1AhMai9i7yIBYLn5kw34KfigRT93lHHhoaWjEIIkA0xsyd15H4oT7+0?= =?us-ascii?Q?rQGMhBbLDrujEaVSdJokZdLE5rotn6kYskVT/vx/+e1LkfgIbJ0wBuBLeFAT?= =?us-ascii?Q?f5OxQ7ekuiTppyX0Y9RxmNgpnR9IiRW+rJr6uh1q6dmum7GwMMTkwRPLyRf/?= =?us-ascii?Q?or/Y1sou7yGbELmJhyhBv4HGwifjfuSiwWkOxJuerQquaye/IpyFzQFieb+p?= =?us-ascii?Q?bo/DJumFaDES3UEjb83bgmXi91s7MZZLe86LcyhGQgOKKMj3MVTHSysFpN2i?= =?us-ascii?Q?yfbQIge6dzUv/OueIat3Ukheiv9IDkaDmSUWjCGKjfWwBHQU91oadQWPtJId?= =?us-ascii?Q?JHyFP0kqIxgiO5ojHpK1CJKpI/pMTzxdRS7g+2RKL3vpaCSCWW1QuE5CBeHf?= =?us-ascii?Q?2ubvum/5PUZ1lmE80VGq860TTL2pImV86tpCaM9LsmvaIKHID2FhmJgDk6Y9?= =?us-ascii?Q?EVttlEgz9RbgSB/B8PN04oqwbkbZqtn0CtJybh/YNmeER0rjyk7PbIjoxji8?= =?us-ascii?Q?BdGWgZqqTFptpmsJ0KrH03fgDkRwM1hRLQ12rw9n2VZNP6jay0XQwTJr8EUC?= =?us-ascii?Q?pTl/X/QeREvbAI6i5wKDDjG2whbeJ2tv+zPzFfvbzZ+UormlcbmMhnLO1ujz?= =?us-ascii?Q?OlvSud58dKT4oU41chNAvlXYzohF1jKu/BRk78Bt+8U7a3UUfqRarJoU/Qk+?= =?us-ascii?Q?Tg5q+H01IhxJ4+Eal+NIU7Fci3louE++zqmP6VXbHg+edejsSR8ei71biqiO?= =?us-ascii?Q?01JVhr87fzhGZrsgGO8d2SMre9o1JWQ2ZC4DjZ24/rci1/3Pvu+XCTZC+zBK?= =?us-ascii?Q?pdHkMfL1QqGrP8i09+7zFxXme3kA7obsje128I9SN3y8eaYJZf+6ivtLXyRd?= =?us-ascii?Q?tby1tRF0kh4kpxPOf9hGgg7cQvBDaVOhx3KL1JiaQAqR3?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB1274; 5:brn0wBo7bJJSNGciZccL5iY4huKWq7KAJeUzyupm71pesxYYiYkK1ag24q3z+IdTZCpRgs+ny5rDDkFQBI0EW2g/lVdk2YFXSGwtxOoGbt/mqTY0luVIQyaph5d0uBFVkh3Q1PPRp0x94rn5ePxeaQ==; 24:LjHUrlzJGlmRyE+WNrkhMaE1bFDRw+SzP6apd/Ke5TnKbvRJlTFL/++gX5IOVHQsV41Xxu/E8CzWCWP51jEh+yi8KH8lphbqJw7JUGl8V9E=; 20:FSSIEQqlkNHMoR6WJWneDVh0NwiovqUaCnmZ1fzHcMRp+o8SqLQqnCTWGDsDgJYFtppfzvNP51KfWFhCrqsUMA== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Sep 2015 15:02:41.2246 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB1274 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: madalin.bucur@freescale.com Cc: pebolle@tiscali.nl, f.fainelli@gmail.com, roy.pledge@freescale.com, linux-kernel@vger.kernel.org, ppc@mindchasers.com, stsp@list.ru, igal.liberman@freescale.com, scottwood@freescale.com, joe@perches.com, linuxppc-dev@lists.ozlabs.org, davem@davemloft.net, Madalin Bucur Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Allow the selection of the transmission queue based on the CPU id. Signed-off-by: Madalin Bucur --- drivers/net/ethernet/freescale/dpaa/Kconfig | 10 ++++++++++ drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 3 +++ drivers/net/ethernet/freescale/dpaa/dpaa_eth.h | 6 ++++++ drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.c | 8 ++++++++ drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.h | 4 ++++ 5 files changed, 31 insertions(+) diff --git a/drivers/net/ethernet/freescale/dpaa/Kconfig b/drivers/net/ethernet/freescale/dpaa/Kconfig index 022d5aa..2577aac 100644 --- a/drivers/net/ethernet/freescale/dpaa/Kconfig +++ b/drivers/net/ethernet/freescale/dpaa/Kconfig @@ -11,6 +11,16 @@ menuconfig FSL_DPAA_ETH if FSL_DPAA_ETH +config FSL_DPAA_ETH_USE_NDO_SELECT_QUEUE + bool "Use driver's Tx queue selection mechanism" + default y + ---help--- + The DPAA Ethernet driver defines a ndo_select_queue() callback for optimal selection + of the egress FQ. That will override the XPS support for this netdevice. + If for whatever reason you want to be in control of the egress FQ-to-CPU selection and mapping, + or simply don't want to use the driver's ndo_select_queue() callback, then unselect this + and use the standard XPS support instead. + config FSL_DPAA_ETH_FRIENDLY_IF_NAME bool "Use fmX-macY names for the DPAA interfaces" default y diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c index 85e2bdf..a04c0aa 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c @@ -393,6 +393,9 @@ static const struct net_device_ops dpa_private_ops = { .ndo_get_stats64 = dpa_get_stats64, .ndo_set_mac_address = dpa_set_mac_address, .ndo_validate_addr = eth_validate_addr, +#ifdef CONFIG_FSL_DPAA_ETH_USE_NDO_SELECT_QUEUE + .ndo_select_queue = dpa_select_queue, +#endif .ndo_change_mtu = dpa_change_mtu, .ndo_set_rx_mode = dpa_set_rx_mode, .ndo_init = dpa_ndo_init, diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h index 96553fd..349e052 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h @@ -419,9 +419,15 @@ static inline void _dpa_assign_wq(struct dpa_fq *fq) } } +#ifdef CONFIG_FSL_DPAA_ETH_USE_NDO_SELECT_QUEUE +/* Use in lieu of skb_get_queue_mapping() */ +#define dpa_get_queue_mapping(skb) \ + raw_smp_processor_id() +#else /* Use the queue selected by XPS */ #define dpa_get_queue_mapping(skb) \ skb_get_queue_mapping(skb) +#endif static inline void _dpa_bp_free_pf(void *addr) { diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.c index b36cbca..89f3b1f 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.c @@ -593,6 +593,14 @@ bool dpa_bpid2pool_use(int bpid) return false; } +#ifdef CONFIG_FSL_DPAA_ETH_USE_NDO_SELECT_QUEUE +u16 dpa_select_queue(struct net_device *net_dev, struct sk_buff *skb, + void *accel_priv, select_queue_fallback_t fallback) +{ + return dpa_get_queue_mapping(skb); +} +#endif + struct dpa_fq *dpa_fq_alloc(struct device *dev, const struct fqid_cell *fqids, struct list_head *list, diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.h b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.h index 9df8f14..2e9471d 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.h +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth_common.h @@ -70,6 +70,10 @@ struct dpa_bp *dpa_bpid2pool(int bpid); void dpa_bpid2pool_map(int bpid, struct dpa_bp *dpa_bp); bool dpa_bpid2pool_use(int bpid); void dpa_bp_drain(struct dpa_bp *bp); +#ifdef CONFIG_FSL_DPAA_ETH_USE_NDO_SELECT_QUEUE +u16 dpa_select_queue(struct net_device *net_dev, struct sk_buff *skb, + void *accel_priv, select_queue_fallback_t fallback); +#endif struct dpa_fq *dpa_fq_alloc(struct device *dev, const struct fqid_cell *fqids, struct list_head *list,