From patchwork Tue Apr 4 06:17:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Amit Pundir X-Patchwork-Id: 96681 Delivered-To: patch@linaro.org Received: by 10.140.89.233 with SMTP id v96csp48184qgd; Mon, 3 Apr 2017 23:17:59 -0700 (PDT) X-Received: by 10.84.239.8 with SMTP id w8mr26478948plk.73.1491286679526; Mon, 03 Apr 2017 23:17:59 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a9si746909pgf.57.2017.04.03.23.17.59; Mon, 03 Apr 2017 23:17:59 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751846AbdDDGR6 (ORCPT + 6 others); Tue, 4 Apr 2017 02:17:58 -0400 Received: from mail-pg0-f41.google.com ([74.125.83.41]:35885 "EHLO mail-pg0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750962AbdDDGR6 (ORCPT ); Tue, 4 Apr 2017 02:17:58 -0400 Received: by mail-pg0-f41.google.com with SMTP id g2so140804544pge.3 for ; Mon, 03 Apr 2017 23:17:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=svPl+qa3WWfj1THCd0+ysyLD3KrIs6wEKjnI4EF1Qok=; b=Tr2iYfubOn1rfdvrgnoQd7JhDXlbSdJMEcedeWSdbSazMiVCGR0r8a0OB0r7rJckKB gmSkQODDhVaB7n/FtZ4wHEpSPUwusx+iyJuJtZo07HfeK12DlPkWM4xLCh9dNqv4ByRg eWbnH8TLiC4jeBrNWOQOzK3juDpVci1KA32hg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=svPl+qa3WWfj1THCd0+ysyLD3KrIs6wEKjnI4EF1Qok=; b=iePjh+qNj3TZcVS2qQo7h5m0QeKuX2WzDcxzX5S9yaN3sgNLpPGVFzk6SEF/mxHlL9 qchIVCnXZz/uXIJ6oCvtWIKAF94eIqES8yVkIBU2iO9M2MLC2twpp6ZYGtae6relQPi9 rcCg0XIu4MjDCCPZo+8sGT2UnO0N/Nsmyhy2FCz/qIBADHTq8RSuzuh8cXR3GbPe0MTP iLb7fHJ9vUaBBpr69dIsBCtD0ph40UPqfOdUpwb4Tcnt41g6IbtHaXEg7k9RIgHOCRGs Lh7NqXua5hnJtY6wjeQaViEP+Jf7jQOgTJs7XMOv9gy7lfGHttTY1SkDh5RdO6MH64yM Cz9g== X-Gm-Message-State: AFeK/H2ya6JOpkDYl6UOyBJspHtMuJUJC9J9C0Eq4AHaVOdVk7TMD+nz/+IVCVwtM0A6UF85 X-Received: by 10.99.217.17 with SMTP id r17mr22245818pgg.140.1491286677611; Mon, 03 Apr 2017 23:17:57 -0700 (PDT) Received: from localhost.localdomain ([106.51.240.246]) by smtp.gmail.com with ESMTPSA id l126sm29224804pfl.56.2017.04.03.23.17.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 03 Apr 2017 23:17:56 -0700 (PDT) From: Amit Pundir To: gregkh@linuxfoundation.org Cc: stable@vger.kernel.org, =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= , "David S . Miller" Subject: [PATCH 19/33] net: add devm version of alloc_etherdev_mqs function Date: Tue, 4 Apr 2017 11:47:33 +0530 Message-Id: <1491286653-31193-10-git-send-email-amit.pundir@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1491286653-31193-1-git-send-email-amit.pundir@linaro.org> References: <1491286653-31193-1-git-send-email-amit.pundir@linaro.org> MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Rafał Miłecki This patch adds devm_alloc_etherdev_mqs function and devm_alloc_etherdev macro. These can be used for simpler netdev allocation without having to care about calling free_netdev. Thanks to this change drivers, their error paths and removal paths may get simpler by a bit. Signed-off-by: Rafał Miłecki Signed-off-by: David S. Miller (cherry picked from commit 40be0dda0725886b623d67868db3219a2e74683b) Signed-off-by: Amit Pundir --- include/linux/etherdevice.h | 5 +++++ net/ethernet/eth.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) -- 2.7.4 diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 6fec9e8..83ae88c 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h @@ -54,6 +54,11 @@ struct net_device *alloc_etherdev_mqs(int sizeof_priv, unsigned int txqs, #define alloc_etherdev(sizeof_priv) alloc_etherdev_mq(sizeof_priv, 1) #define alloc_etherdev_mq(sizeof_priv, count) alloc_etherdev_mqs(sizeof_priv, count, count) +struct net_device *devm_alloc_etherdev_mqs(struct device *dev, int sizeof_priv, + unsigned int txqs, + unsigned int rxqs); +#define devm_alloc_etherdev(dev, sizeof_priv) devm_alloc_etherdev_mqs(dev, sizeof_priv, 1, 1) + struct sk_buff **eth_gro_receive(struct sk_buff **head, struct sk_buff *skb); int eth_gro_complete(struct sk_buff *skb, int nhoff); diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 24d7aff..fbf1de9 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -391,6 +391,34 @@ struct net_device *alloc_etherdev_mqs(int sizeof_priv, unsigned int txqs, } EXPORT_SYMBOL(alloc_etherdev_mqs); +static void devm_free_netdev(struct device *dev, void *res) +{ + free_netdev(*(struct net_device **)res); +} + +struct net_device *devm_alloc_etherdev_mqs(struct device *dev, int sizeof_priv, + unsigned int txqs, unsigned int rxqs) +{ + struct net_device **dr; + struct net_device *netdev; + + dr = devres_alloc(devm_free_netdev, sizeof(*dr), GFP_KERNEL); + if (!dr) + return NULL; + + netdev = alloc_etherdev_mqs(sizeof_priv, txqs, rxqs); + if (!netdev) { + devres_free(dr); + return NULL; + } + + *dr = netdev; + devres_add(dev, dr); + + return netdev; +} +EXPORT_SYMBOL(devm_alloc_etherdev_mqs); + ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len) { return scnprintf(buf, PAGE_SIZE, "%*phC\n", len, addr);