From nobody Wed Jun 17 06:11:41 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 661943264DA for ; Mon, 27 Apr 2026 15:18:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303083; cv=none; b=qVhJaQaUhbf5FUzVyFgdU7Su67dFjYK+GcU2hzSdTmiRfA/jlaLTUrzGhPy82ZkIUN9MZvzBnIFnXfNEUmgiIFZ2ituDxWpr2Z0jf2EwL9tuYB7StrV4+EwGIb/nUYXD9dADdhny2vtK+oI4F7XPZWXW73dERCjU9KXcHnYPGVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303083; c=relaxed/simple; bh=eI7uK9JgIZGXm+y6YPkBJPVNHd21oGhz4Zduel6JvOw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eSNKuT/cku4L0TDUMAhNVbIN3vgTec3/wel/MB9mdHhjlGRgj/VeP+wfMRDNRb0NzZMzDacSWIRPQmy+s+BonQJfFd2V1ocdNZmoLUg7e0znqXjT4WYCiYLfKmDRDmE8q8HMJwap2QI0dgqqxuyXDu/9Grp1bhFeELmCQHCM0JU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=npWhnlGK; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="npWhnlGK" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-824b03d9787so715203b3a.2 for ; Mon, 27 Apr 2026 08:18:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777303082; x=1777907882; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bzp2ryRQt9RDlOVSqTdsO/fnm73ORdbk3rSWRNH/Bqs=; b=npWhnlGKTkMcxt/XXencm/3AwOElSCJ9sIjk/ooQDe0Qvj8SUwVPqnwPN8JONjHi3i a/VHJZyDj9t3qQA8d7US/VBwIrELclUFutskEkOXdXrQJec0vsdb3vjqz2wTlOiOoSJB YWacyX7flocG3WDarFTKWqMMQ/crMwhq05RIzfeWDqQhSQ8r5OFbTtJYwmYAIwd1vU5F hG2JHBOWJs1ho8gSaTL7AbhnPk6G3ZfVsK9T8haKa5bSovlHwYrwOvoYhT+0qiAKGyzA R71MRmSmiQIN/fTJpxk28XnC62i++5WCZuvOnKdT7i6hfMBRzFLkZKAYzto1tqPBn4pZ sPBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777303082; x=1777907882; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=bzp2ryRQt9RDlOVSqTdsO/fnm73ORdbk3rSWRNH/Bqs=; b=fhxrWD0d2fkMt9s6jsWyoB4xVrABgoipn6IITH4z96lqNu+ms6M0crCB4N0+LAQ5T0 w3UvN5uub/1RV1KTadkuAMofDsUHZmBU8ssfIPa6WFsc2aw13VmvnqjTi7y53F2ugZvr nMP19b+o6g8x2Azqjyuhl2QkvoAQnPLbEwyYp+mDH+C0fyFqKMJxDJVze7hy/vHVMYl5 us3V4ygMN30rnHTb3hS3Mp9zEKqgwmhkGd0d7zbhBuk7/LWuYrHCRe6+8ptCa7nW+pi8 E3rJRr/YEieDaG8EA02uTff/tMfUYuV113vikBhOgGgjmc30FmlyYCzUgN4qsmvrJ8Nh DOCw== X-Forwarded-Encrypted: i=1; AFNElJ/bAvSUzrz2XIvgJtdqwZCJeTxf50oufUBS2JvsYlfwmyxLN4iy5rfWZ5Hpi5KJwjXjZlO0/8gYOSwkWoM=@vger.kernel.org X-Gm-Message-State: AOJu0Yy9yoWEh2CbTDCUqwoBWnHvQ+V9WHXRlWKUUecNmDtLZ/sUhQRf kmTHBCJuBd9dLXKicy72dYapQt+h7Qj/t5CP5SGTikM32cWLlvA/9I69 X-Gm-Gg: AeBDieuX0afIlMs9sZfOV7diMo8Lqg5olt3RsHzmlA3kAu5a7a9+5uLdGPtlXf3sM6p gDE2f3He3NBABTBeid0TePiTAMMZC3XRL58yl+UOi8ceph4TY41Zyi2HBQSOSMtk046YXYQS0EK we06E+XTj5ryAWff3fxsoLMWHb2pp1VJ9uhap13xrLMwD8Nr9nolMFBUaYiYD2ECELLBjJO0EeW XyXOASiGwfBLu6tEc70Fh7OJGnDD16KpDU9koPPLzzk9pLhvdludybdaSSJ/zMTAZlASY6JOyf4 vbJpGNguJgwve5z0SPeqs36Uegn8WOJeaDAD8MEIqFCK2+BX3jlu9CepE0LE76k11N7+ir2OWjz 7rjpLPP7yvWUKI9lh7/YVX6HlmlxbBKH8MLopb2BHP2PcfU7AnX5E7xd18XQCKzc6omcImScwhA i3IvB0NUxb2V5ukXoAzvVoLZE0CxEEc/bYAlU29NWscVfkUGaFKyE/YG49w/1YKp+hb53Kto9Rb XScxv3rzUZoIZ8cnhVUYXluY5AdoBSh3MXWqQ== X-Received: by 2002:a05:6a00:bd86:b0:82f:1da:9781 with SMTP id d2e1a72fcca58-82f8c2c243emr23308200b3a.0.1777303081703; Mon, 27 Apr 2026 08:18:01 -0700 (PDT) Received: from fedora ([2401:4900:d824:7468:545f:3159:76d5:30ff]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ec06cbfsm37652931b3a.58.2026.04.27.08.17.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Apr 2026 08:18:01 -0700 (PDT) From: Ayush Mukkanwar To: gregkh@linuxfoundation.org Cc: error27@gmail.com, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, ayushmukkanwar@gmail.com Subject: [PATCH v5 1/4] staging: octeon: ethernet-mem: replace pr_warn with dev_warn in free functions Date: Mon, 27 Apr 2026 20:45:52 +0530 Message-ID: <20260427151556.91153-2-ayushmukkanwar@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260427151556.91153-1-ayushmukkanwar@gmail.com> References: <20260427151556.91153-1-ayushmukkanwar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace pr_warn() calls with dev_warn() in the hardware pool free functions (cvm_oct_free_hw_skbuff and cvm_oct_free_hw_memory) to include device information in log messages. The struct device pointer is passed from cvm_oct_remove() through cvm_oct_mem_empty_fpa() to the internal free functions. Signed-off-by: Ayush Mukkanwar --- drivers/staging/octeon/ethernet-mem.c | 30 +++++++++++++++------------ drivers/staging/octeon/ethernet-mem.h | 2 +- drivers/staging/octeon/ethernet.c | 6 +++--- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/drivers/staging/octeon/ethernet-mem.c b/drivers/staging/octeon= /ethernet-mem.c index 532594957ebc..501a2f7487c1 100644 --- a/drivers/staging/octeon/ethernet-mem.c +++ b/drivers/staging/octeon/ethernet-mem.c @@ -40,11 +40,13 @@ static int cvm_oct_fill_hw_skbuff(int pool, int size, i= nt elements) =20 /** * cvm_oct_free_hw_skbuff- free hardware pool skbuffs + * @dev: Device for logging * @pool: Pool to allocate an skbuff for * @size: Size of the buffer needed for the pool * @elements: Number of buffers to allocate */ -static void cvm_oct_free_hw_skbuff(int pool, int size, int elements) +static void cvm_oct_free_hw_skbuff(struct device *dev, + int pool, int size, int elements) { char *memory; =20 @@ -59,11 +61,11 @@ static void cvm_oct_free_hw_skbuff(int pool, int size, = int elements) } while (memory); =20 if (elements < 0) - pr_warn("Freeing of pool %u had too many skbuffs (%d)\n", - pool, elements); + dev_warn(dev, "Freeing of pool %u had too many skbuffs (%d)\n", + pool, elements); else if (elements > 0) - pr_warn("Freeing of pool %u is missing %d skbuffs\n", - pool, elements); + dev_warn(dev, "Freeing of pool %u is missing %d skbuffs\n", + pool, elements); } =20 /** @@ -107,11 +109,13 @@ static int cvm_oct_fill_hw_memory(int pool, int size,= int elements) =20 /** * cvm_oct_free_hw_memory - Free memory allocated by cvm_oct_fill_hw_memory + * @dev: Device for logging * @pool: FPA pool to free * @size: Size of each buffer in the pool * @elements: Number of buffers that should be in the pool */ -static void cvm_oct_free_hw_memory(int pool, int size, int elements) +static void cvm_oct_free_hw_memory(struct device *dev, + int pool, int size, int elements) { char *memory; char *fpa; @@ -127,11 +131,11 @@ static void cvm_oct_free_hw_memory(int pool, int size= , int elements) } while (fpa); =20 if (elements < 0) - pr_warn("Freeing of pool %u had too many buffers (%d)\n", - pool, elements); + dev_warn(dev, "Freeing of pool %u had too many buffers (%d)\n", + pool, elements); else if (elements > 0) - pr_warn("Warning: Freeing of pool %u is missing %d buffers\n", - pool, elements); + dev_warn(dev, "Freeing of pool %u is missing %d buffers\n", + pool, elements); } =20 int cvm_oct_mem_fill_fpa(int pool, int size, int elements) @@ -145,10 +149,10 @@ int cvm_oct_mem_fill_fpa(int pool, int size, int elem= ents) return freed; } =20 -void cvm_oct_mem_empty_fpa(int pool, int size, int elements) +void cvm_oct_mem_empty_fpa(struct device *dev, int pool, int size, int ele= ments) { if (pool =3D=3D CVMX_FPA_PACKET_POOL) - cvm_oct_free_hw_skbuff(pool, size, elements); + cvm_oct_free_hw_skbuff(dev, pool, size, elements); else - cvm_oct_free_hw_memory(pool, size, elements); + cvm_oct_free_hw_memory(dev, pool, size, elements); } diff --git a/drivers/staging/octeon/ethernet-mem.h b/drivers/staging/octeon= /ethernet-mem.h index 692dcdb7154d..591e0bbb6f10 100644 --- a/drivers/staging/octeon/ethernet-mem.h +++ b/drivers/staging/octeon/ethernet-mem.h @@ -6,4 +6,4 @@ */ =20 int cvm_oct_mem_fill_fpa(int pool, int size, int elements); -void cvm_oct_mem_empty_fpa(int pool, int size, int elements); +void cvm_oct_mem_empty_fpa(struct device *dev, int pool, int size, int ele= ments); diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/eth= ernet.c index eadb74fc14c8..9eed0a89a2f3 100644 --- a/drivers/staging/octeon/ethernet.c +++ b/drivers/staging/octeon/ethernet.c @@ -958,12 +958,12 @@ static void cvm_oct_remove(struct platform_device *pd= ev) cvmx_ipd_free_ptr(); =20 /* Free the HW pools */ - cvm_oct_mem_empty_fpa(CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SIZE, + cvm_oct_mem_empty_fpa(&pdev->dev, CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_P= OOL_SIZE, num_packet_buffers); - cvm_oct_mem_empty_fpa(CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SIZE, + cvm_oct_mem_empty_fpa(&pdev->dev, CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SI= ZE, num_packet_buffers); if (CVMX_FPA_OUTPUT_BUFFER_POOL !=3D CVMX_FPA_PACKET_POOL) - cvm_oct_mem_empty_fpa(CVMX_FPA_OUTPUT_BUFFER_POOL, + cvm_oct_mem_empty_fpa(&pdev->dev, CVMX_FPA_OUTPUT_BUFFER_POOL, CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, 128); } =20 --=20 2.53.0 From nobody Wed Jun 17 06:11:41 2026 Received: from mail-pg1-f169.google.com (mail-pg1-f169.google.com [209.85.215.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5731A32B981 for ; Mon, 27 Apr 2026 15:18:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303087; cv=none; b=WoTKEN2uCe8gnPxCs39ZiWAcC4PgMQzsmk12NVyhKxaw/RPhiSYgxpVg1vCuFWt4oSxBCtbA1YQNGBv31RPzII820OndIcws4t0yN8vdWskd16YPWMP8k6hYa5S1ecl0X/jl/Don2ne3Yj1FXtxVJOP8F44wLb8nwqLTqsnDh4I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303087; c=relaxed/simple; bh=5iwJhQYYbwsxuTbKD8nCPs9tkmq0GQfZLkUvDMAr7J4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FjvxHui/JyXeRv39fEY7EmwWnDxwPmrjhU6Wdz9KnhQvSRuzGQrFAFPdOgGMHm63xyW2/waCOAdiVbjoJfWWPaI5gP0qtUpZ+Wmbmghr/ko9d33JfDCHvpHrJKjX2MaKnQQzS3ZuLP+2XCf1pJ2HQBJU/o8la7CI0tTH7130EJg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cCBMN6tn; arc=none smtp.client-ip=209.85.215.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cCBMN6tn" Received: by mail-pg1-f169.google.com with SMTP id 41be03b00d2f7-c7979304c0cso301967a12.0 for ; Mon, 27 Apr 2026 08:18:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777303086; x=1777907886; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jR/dnlHtCukrPdxSjUklKCl3P9S0GVej8h4yO/skypk=; b=cCBMN6tnfYrR2TjAitEV5VEKePrL1UQYovNTlxufzp/V37YikxFMGQOZ9xcPi778cq M2wkKaxL3LrUXxZFGnU2M7xhYWiC7rqL2HNf7iSRseUHIqEBZbucb1PBrkddie28OptG N62rM1pnaijp1PJmN1UzYruAYBMAb3LMeqFYDmEPsAi+Y0vuqLXXJwpOhijFYx4oY3Q8 H/oLF3K9TNl5rk8dlVP0Kk5TMObDiH3EW9gPBMGxyqUOV4iPwEglMzs7qf7eT28Vq4UU vq5TTh1LcooKOrreA1/GpAyZtHac+rm5ViIoV35EEWpFKNRgW23suZp51doRx6cFSiBH ZZzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777303086; x=1777907886; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=jR/dnlHtCukrPdxSjUklKCl3P9S0GVej8h4yO/skypk=; b=eaJr0goL0pm9NS+0bJdPvlipB+MI7dYAQVKWSgmYRGD4HHjNslGOkz1XzvsIiFdNp2 SLxtIjmI/5+44+05XL0P9UDjGtoIg7tdHqIFpe7aGiAX224yCcPd4NgtGy/loqhzvPQs Z23mrm6jzGnzANUpsCBwQjuDNp2KY5BqCB9rufJHHrfaM4CMW+ECFcR8WTl9CCkPytEi 5EzBQKpLpOWQSfZIIOP9k+4TlHRgFPVl6rEWUa0tCQd1kFIuhvir3WEWaLuu6bQureGv u3M8ApabV5jZL8o7yZJmfCcQzCKHX5/0DI3oJDTutaRd2PkQa8ZU03qAEQ/icRtfL1to 141w== X-Forwarded-Encrypted: i=1; AFNElJ8wdWm/F1Pkx3LecaI461AEGHIBC7FYXvA8sMtELr2Xv9wgv0LHc6pl7O/tmJ5IxsnP5aKJjS0UrZbgYCA=@vger.kernel.org X-Gm-Message-State: AOJu0YzH6RJbIgkKPeUobWFsXbRt4fvKKIYYYTfI1/5RmvwudbO0nP6g JAQ+bCLstdY5OFaeeXlbzYLU0V6XJvBQWOIDpCnWV5DHVMnVUju4qpkf X-Gm-Gg: AeBDietbwbUkaKqdhMELClrI8B/YJhCfC6YhLRjsIRZ/jWclcu1XzrLlfhSYl8y26gn +xTiBWi/4ri6jU4iNkkukAEmLJt2PcR2c13Gj2nIk9hJT78O054B6LKkXWQfrVDIMhLEJMfOIVz NUS6kD8p7E5brJ/1b2jcDp8TRV4ofXnl5TYeH40yXZ2t+8gsao9uB/1WE8bDiCdJi/3L5lYl8RL MgFKJXOApyigMhcp8UIFu7Qyyj6n7eKHZOvHL6sJCLr1iTFORqtmCcO+UCQIHV6Qxif9FBSbJ6h +89PYbG/8s99CKzutkUHZw4GuK09d+aP/TrK5SdyNJujRZpF52WyP5F3QULJfksLyOsKanSr+5P U8MuVCTkDskyavQegMy+7K6n0wTOQ6QrttNEgxFiRsWa0u6iD5xgYfj/g/NS0C3tn34OBf5ZHG0 6sSVjVCVdc2DEYdbaYZn1FiRzUJhVHHHTrAdE2akd7Vv5PbI5FeHaSJaI6yXmQm2vZ5V/YGv62K ucU4HmXVaGT4grYICKGyrSt/HAkSzzBltlZaA== X-Received: by 2002:a05:6a21:1bc8:b0:3a3:2819:5d41 with SMTP id adf61e73a8af0-3a32819819bmr10513908637.5.1777303085373; Mon, 27 Apr 2026 08:18:05 -0700 (PDT) Received: from fedora ([2401:4900:d824:7468:545f:3159:76d5:30ff]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ec06cbfsm37652931b3a.58.2026.04.27.08.18.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Apr 2026 08:18:05 -0700 (PDT) From: Ayush Mukkanwar To: gregkh@linuxfoundation.org Cc: error27@gmail.com, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, ayushmukkanwar@gmail.com Subject: [PATCH v5 2/4] staging: octeon: replace pr_warn with dev_warn in fill path Date: Mon, 27 Apr 2026 20:45:53 +0530 Message-ID: <20260427151556.91153-3-ayushmukkanwar@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260427151556.91153-1-ayushmukkanwar@gmail.com> References: <20260427151556.91153-1-ayushmukkanwar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace pr_warn() with dev_warn() in cvm_oct_fill_hw_memory() to include device information in log messages. To make the device pointer accessible from the workqueue callback, introduce struct octeon_ethernet_platform to hold both a struct device pointer and the delayed_work. This replaces the static global cvm_oct_rx_refill_work. The struct is allocated with devm_kzalloc() in probe() and stored via platform_set_drvdata(). The worker retrieves it using container_of(). Add a struct device pointer to oct_rx_group and thread it through cvm_oct_rx_initialize() to support the NAPI poll refill path. Signed-off-by: Ayush Mukkanwar --- drivers/staging/octeon/ethernet-mem.c | 12 +++++---- drivers/staging/octeon/ethernet-mem.h | 2 +- drivers/staging/octeon/ethernet-rx.c | 6 +++-- drivers/staging/octeon/ethernet-rx.h | 6 ++--- drivers/staging/octeon/ethernet.c | 39 ++++++++++++++++++--------- 5 files changed, 42 insertions(+), 23 deletions(-) diff --git a/drivers/staging/octeon/ethernet-mem.c b/drivers/staging/octeon= /ethernet-mem.c index 501a2f7487c1..f182698dd057 100644 --- a/drivers/staging/octeon/ethernet-mem.c +++ b/drivers/staging/octeon/ethernet-mem.c @@ -70,13 +70,15 @@ static void cvm_oct_free_hw_skbuff(struct device *dev, =20 /** * cvm_oct_fill_hw_memory - fill a hardware pool with memory. + * @dev: Device for logging * @pool: Pool to populate * @size: Size of each buffer in the pool * @elements: Number of buffers to allocate * * Returns the actual number of buffers allocated. */ -static int cvm_oct_fill_hw_memory(int pool, int size, int elements) +static int cvm_oct_fill_hw_memory(struct device *dev, int pool, int size, + int elements) { char *memory; char *fpa; @@ -95,8 +97,8 @@ static int cvm_oct_fill_hw_memory(int pool, int size, int= elements) */ memory =3D kmalloc(size + 256, GFP_ATOMIC); if (unlikely(!memory)) { - pr_warn("Unable to allocate %u bytes for FPA pool %d\n", - elements * size, pool); + dev_warn(dev, "Unable to allocate %u bytes for FPA pool %d\n", + elements * size, pool); break; } fpa =3D (char *)(((unsigned long)memory + 256) & ~0x7fUL); @@ -138,14 +140,14 @@ static void cvm_oct_free_hw_memory(struct device *dev, pool, elements); } =20 -int cvm_oct_mem_fill_fpa(int pool, int size, int elements) +int cvm_oct_mem_fill_fpa(struct device *dev, int pool, int size, int eleme= nts) { int freed; =20 if (pool =3D=3D CVMX_FPA_PACKET_POOL) freed =3D cvm_oct_fill_hw_skbuff(pool, size, elements); else - freed =3D cvm_oct_fill_hw_memory(pool, size, elements); + freed =3D cvm_oct_fill_hw_memory(dev, pool, size, elements); return freed; } =20 diff --git a/drivers/staging/octeon/ethernet-mem.h b/drivers/staging/octeon= /ethernet-mem.h index 591e0bbb6f10..edfc93b2b23b 100644 --- a/drivers/staging/octeon/ethernet-mem.h +++ b/drivers/staging/octeon/ethernet-mem.h @@ -5,5 +5,5 @@ * Copyright (c) 2003-2007 Cavium Networks */ =20 -int cvm_oct_mem_fill_fpa(int pool, int size, int elements); +int cvm_oct_mem_fill_fpa(struct device *dev, int pool, int size, int eleme= nts); void cvm_oct_mem_empty_fpa(struct device *dev, int pool, int size, int ele= ments); diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/= ethernet-rx.c index d0b43d50b83c..a2f4e52d69f3 100644 --- a/drivers/staging/octeon/ethernet-rx.c +++ b/drivers/staging/octeon/ethernet-rx.c @@ -35,6 +35,7 @@ static struct oct_rx_group { int irq; int group; struct napi_struct napi; + struct device *dev; } oct_rx_group[16]; =20 /** @@ -397,7 +398,7 @@ static int cvm_oct_poll(struct oct_rx_group *rx_group, = int budget) /* Restore the scratch area */ cvmx_scratch_write64(CVMX_SCR_SCRATCH, old_scratch); } - cvm_oct_rx_refill_pool(0); + cvm_oct_rx_refill_pool(rx_group->dev, 0); =20 return rx_count; } @@ -448,7 +449,7 @@ void cvm_oct_poll_controller(struct net_device *dev) } #endif =20 -void cvm_oct_rx_initialize(void) +void cvm_oct_rx_initialize(struct device *dev) { int i; struct net_device *dev_for_napi =3D NULL; @@ -475,6 +476,7 @@ void cvm_oct_rx_initialize(void) =20 oct_rx_group[i].irq =3D OCTEON_IRQ_WORKQ0 + i; oct_rx_group[i].group =3D i; + oct_rx_group[i].dev =3D dev; =20 /* Register an IRQ handler to receive POW interrupts */ ret =3D request_irq(oct_rx_group[i].irq, cvm_oct_do_interrupt, 0, diff --git a/drivers/staging/octeon/ethernet-rx.h b/drivers/staging/octeon/= ethernet-rx.h index ff6482fa20d6..636ee7d549f6 100644 --- a/drivers/staging/octeon/ethernet-rx.h +++ b/drivers/staging/octeon/ethernet-rx.h @@ -6,10 +6,10 @@ */ =20 void cvm_oct_poll_controller(struct net_device *dev); -void cvm_oct_rx_initialize(void); +void cvm_oct_rx_initialize(struct device *dev); void cvm_oct_rx_shutdown(void); =20 -static inline void cvm_oct_rx_refill_pool(int fill_threshold) +static inline void cvm_oct_rx_refill_pool(struct device *dev, int fill_thr= eshold) { int number_to_free; int num_freed; @@ -20,7 +20,7 @@ static inline void cvm_oct_rx_refill_pool(int fill_thresh= old) if (number_to_free > fill_threshold) { cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, -number_to_free); - num_freed =3D cvm_oct_mem_fill_fpa(CVMX_FPA_PACKET_POOL, + num_freed =3D cvm_oct_mem_fill_fpa(dev, CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SIZE, number_to_free); if (num_freed !=3D number_to_free) { diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/eth= ernet.c index 9eed0a89a2f3..a7ac29c0a4ca 100644 --- a/drivers/staging/octeon/ethernet.c +++ b/drivers/staging/octeon/ethernet.c @@ -104,11 +104,15 @@ struct net_device *cvm_oct_device[TOTAL_NUMBER_OF_POR= TS]; =20 u64 cvm_oct_tx_poll_interval; =20 -static void cvm_oct_rx_refill_worker(struct work_struct *work); -static DECLARE_DELAYED_WORK(cvm_oct_rx_refill_work, cvm_oct_rx_refill_work= er); +struct octeon_ethernet_platform { + struct device *dev; + struct delayed_work rx_refill_work; +}; =20 static void cvm_oct_rx_refill_worker(struct work_struct *work) { + struct octeon_ethernet_platform *plt =3D container_of(work, + struct octeon_ethernet_platform, rx_refill_work.work); /* * FPA 0 may have been drained, try to refill it if we need * more than num_packet_buffers / 2, otherwise normal receive @@ -116,10 +120,10 @@ static void cvm_oct_rx_refill_worker(struct work_stru= ct *work) * could be received so cvm_oct_napi_poll would never be * invoked to do the refill. */ - cvm_oct_rx_refill_pool(num_packet_buffers / 2); + cvm_oct_rx_refill_pool(plt->dev, num_packet_buffers / 2); =20 if (!atomic_read(&cvm_oct_poll_queue_stopping)) - schedule_delayed_work(&cvm_oct_rx_refill_work, HZ); + schedule_delayed_work(&plt->rx_refill_work, HZ); } =20 static void cvm_oct_periodic_worker(struct work_struct *work) @@ -138,16 +142,16 @@ static void cvm_oct_periodic_worker(struct work_struc= t *work) schedule_delayed_work(&priv->port_periodic_work, HZ); } =20 -static void cvm_oct_configure_common_hw(void) +static void cvm_oct_configure_common_hw(struct device *dev) { /* Setup the FPA */ cvmx_fpa_enable(); - cvm_oct_mem_fill_fpa(CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SIZE, + cvm_oct_mem_fill_fpa(dev, CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SIZE, num_packet_buffers); - cvm_oct_mem_fill_fpa(CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SIZE, + cvm_oct_mem_fill_fpa(dev, CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SIZE, num_packet_buffers); if (CVMX_FPA_OUTPUT_BUFFER_POOL !=3D CVMX_FPA_PACKET_POOL) - cvm_oct_mem_fill_fpa(CVMX_FPA_OUTPUT_BUFFER_POOL, + cvm_oct_mem_fill_fpa(dev, CVMX_FPA_OUTPUT_BUFFER_POOL, CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, 1024); =20 #ifdef __LITTLE_ENDIAN @@ -678,6 +682,15 @@ static int cvm_oct_probe(struct platform_device *pdev) int qos; struct device_node *pip; int mtu_overhead =3D ETH_HLEN + ETH_FCS_LEN; + struct octeon_ethernet_platform *plt; + + plt =3D devm_kzalloc(&pdev->dev, sizeof(*plt), GFP_KERNEL); + if (!plt) + return -ENOMEM; + + plt->dev =3D &pdev->dev; + INIT_DELAYED_WORK(&plt->rx_refill_work, cvm_oct_rx_refill_worker); + platform_set_drvdata(pdev, plt); =20 #if IS_ENABLED(CONFIG_VLAN_8021Q) mtu_overhead +=3D VLAN_HLEN; @@ -689,7 +702,7 @@ static int cvm_oct_probe(struct platform_device *pdev) return -EINVAL; } =20 - cvm_oct_configure_common_hw(); + cvm_oct_configure_common_hw(&pdev->dev); =20 cvmx_helper_initialize_packet_io_global(); =20 @@ -912,26 +925,28 @@ static int cvm_oct_probe(struct platform_device *pdev) } =20 cvm_oct_tx_initialize(); - cvm_oct_rx_initialize(); + cvm_oct_rx_initialize(&pdev->dev); =20 /* * 150 uS: about 10 1500-byte packets at 1GE. */ cvm_oct_tx_poll_interval =3D 150 * (octeon_get_clock_rate() / 1000000); =20 - schedule_delayed_work(&cvm_oct_rx_refill_work, HZ); + schedule_delayed_work(&plt->rx_refill_work, HZ); =20 return 0; } =20 static void cvm_oct_remove(struct platform_device *pdev) { + struct octeon_ethernet_platform *plt =3D platform_get_drvdata(pdev); int port; =20 cvmx_ipd_disable(); =20 atomic_inc_return(&cvm_oct_poll_queue_stopping); - cancel_delayed_work_sync(&cvm_oct_rx_refill_work); + + cancel_delayed_work_sync(&plt->rx_refill_work); =20 cvm_oct_rx_shutdown(); cvm_oct_tx_shutdown(); --=20 2.53.0 From nobody Wed Jun 17 06:11:41 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8AF3C2727EB for ; Mon, 27 Apr 2026 15:18:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303091; cv=none; b=HFl6bkRlrno+jpS+GBGBLovBA9HTvXzNm8Ym7LS+3phwywKLrXiWnO5W/DiqrqUWdK0C6ZvczU+s+SMUVHg9Q5XSP92tLFQv0wh4zD+FWWQ+EJs+Gd2uuMIyG0LF7J6F/gOEtjSzzFw/dx9LgtRC3wGtnElG6b0BL9t3LgGx2Xw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303091; c=relaxed/simple; bh=SeLHWJSm3VQuJCEeSaRLCqVnoUtA8KmutbSxFLsMJII=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P2ghUK/p3uczqexSoQzCEoUlXU/uL3SDdyh9ZtEJq7EssnI6YmEu8AJDVV3qaC1kH62Ffp46h6i77c+09G474iOcTu25lFOqsl/ltjSzZFeknYSgJvHmdLDUcB9t467rtigzZg75116rKw5gGo/m/lkDWhw54VcTcwzRP20YY5M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IBKkbxV8; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IBKkbxV8" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-82f1fbe6899so398011b3a.0 for ; Mon, 27 Apr 2026 08:18:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777303089; x=1777907889; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PeeYoJchmIwBM/6rDWjV5/Iw+D5ZiU05N5VNWiTx3CM=; b=IBKkbxV8EiZOimCAOVAJdcF+LFQaa93CAPrUKiSKNKZQct3Ir/Lm11J+niAk/kn8BJ iEQqiOpYA3HmN20iVAB0PxlUCjx4K4bHChObyhR88ujOp6K6c6wjetjIgDlNa8bHwyx3 7PkfenB+rPPbXDQW9XwbGc5wgwxG1ON3hPKVOoQLHiho8HlrcldzFJf+jDOJxrxvW2nw lBYCLlZaziy41DWrSHqhEX5yZmSIn4Om9inCl8elFUOwdqw8L+reS5AlGneWN51Zobuv Mi/dVyLeYGwQhj+H2mOEzRvBAh2j+fKiZwTawFXU0FBlUeVxBQVJqt1W72XJAe97U8Eh Fjvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777303089; x=1777907889; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=PeeYoJchmIwBM/6rDWjV5/Iw+D5ZiU05N5VNWiTx3CM=; b=mRIjOYfjXPp0Af7tF9nV5QJb13eWlK8WMwjlxiRyBYy2HjyFeVWpBwkBzrQl1qpdia ZcxPWBzlRuyXRV4AZnuFjUWgeAYVK77bE30n6X8f7gHop7RmTVTZVSfmx5yKasUiQqh7 1fgaJKnGfyxzBBLPLkZEJX8JUuuGu3jUzFktAQg5ptBQj+viW9w7H/OscVaCKCU78emo 1z/bKia9V0TomFaQEghm511MIeDWyjzXeTGQcEKKSoRvhnQqM5/oxZlNMbe0p0oiT4ld FBFcLfe1q3PLtd6TbwOnUq2wwkCZun+3DqALPNK442ssnKAiTgrQ+67bP41HOtrvKfGF 3sgQ== X-Forwarded-Encrypted: i=1; AFNElJ/ouFz+3gsjnVwSTgcWtj47xnVDhQmE58Ax7pNJUslFjHhvXYRuUAd6NIeKrYL4YBSwa3F3XKm5H5kubGI=@vger.kernel.org X-Gm-Message-State: AOJu0YzFGaXflnRKJBwQHpluw4wq996Nqhfv+sZOl3dbNzATVCEay1kI 4M/fxzd0lJqWPSh60fXfR5XQ8fZYsRAK9lsKnTSU312mVQwOHoQhTr4+ X-Gm-Gg: AeBDiet4bU7mpyjGji04xEKPy01ExNq0eU1d2XiOanZgMfU59Kdh1selKBlKCh5JF5G SLoahlFiUl6K5KuCk1IOn2Bu+eS4NRr8B44aduzZqXnmYC7wKjG8A82ciXZvm0+GBADp1VRsy5d rYfHxSAiS7pO+B/xJZz+AhWBwntHplkYvbR5/2UF8xdJQWNouGsF6/FO0MbLZTAq/8plXwyubgK frjVQgGvEXEBDtKQ/W6NlxJ9ZcA/Oq1FEg/ReZqJpaMjjBFDQBv0gOLMVLvCvf4daUMtFK7llGa vpDTyb+AdWPIrL7LsL0XveOeLsWgeQtOZKw9t/jzHXKvWbmSaF/H6iMQzT4Si3XlJ+v5AEDLtqn zgjgAHINgfjG72FG7GSqBiAN7F+vKqcYdyAuMWA4lJoys0NQcXy3ca11eKYKUCba3Nj7GJlIffP fKRR/kNcoEXnQotESc2CtkxN3+PyS04LBrcidai5cGT9BqYZVeTj6gCVadDI6cKPau1ag5O1d8N SSPIpB8p79bQUWtTxzLsatrBrc= X-Received: by 2002:a05:6a21:1b81:b0:39b:80f2:7809 with SMTP id adf61e73a8af0-3a08d8dffffmr26783979637.7.1777303088668; Mon, 27 Apr 2026 08:18:08 -0700 (PDT) Received: from fedora ([2401:4900:d824:7468:545f:3159:76d5:30ff]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ec06cbfsm37652931b3a.58.2026.04.27.08.18.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Apr 2026 08:18:08 -0700 (PDT) From: Ayush Mukkanwar To: gregkh@linuxfoundation.org Cc: error27@gmail.com, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, ayushmukkanwar@gmail.com Subject: [PATCH v5 3/4] staging: octeon: ethernet: replace pr_err and pr_info with dev_err and netdev_err Date: Mon, 27 Apr 2026 20:45:54 +0530 Message-ID: <20260427151556.91153-4-ayushmukkanwar@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260427151556.91153-1-ayushmukkanwar@gmail.com> References: <20260427151556.91153-1-ayushmukkanwar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace pr_err() and pr_info() calls in cvm_oct_probe() with dev_err(), netdev_err(), and netdev_info() to include device information in log messages. Use dev_err() where no net_device is available (allocation failures), and netdev_err()/netdev_info() where a net_device exists. Signed-off-by: Ayush Mukkanwar --- drivers/staging/octeon/ethernet.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/eth= ernet.c index a7ac29c0a4ca..7c3cfd9efa7e 100644 --- a/drivers/staging/octeon/ethernet.c +++ b/drivers/staging/octeon/ethernet.c @@ -698,7 +698,7 @@ static int cvm_oct_probe(struct platform_device *pdev) =20 pip =3D pdev->dev.of_node; if (!pip) { - pr_err("Error: No 'pip' in /aliases\n"); + dev_err(&pdev->dev, "No 'pip' in /aliases\n"); return -EINVAL; } =20 @@ -796,16 +796,16 @@ static int cvm_oct_probe(struct platform_device *pdev) dev->max_mtu =3D OCTEON_MAX_MTU - mtu_overhead; =20 if (register_netdev(dev) < 0) { - pr_err("Failed to register ethernet device for POW\n"); + netdev_err(dev, "Failed to register ethernet device for POW\n"); free_netdev(dev); } else { cvm_oct_device[CVMX_PIP_NUM_INPUT_PORTS] =3D dev; - pr_info("%s: POW send group %d, receive group %d\n", - dev->name, pow_send_group, - pow_receive_group); + netdev_info(dev, "POW send group %d, receive group %d\n", + pow_send_group, + pow_receive_group); } } else { - pr_err("Failed to allocate ethernet device for POW\n"); + dev_err(&pdev->dev, "Failed to allocate ethernet device for POW\n"); } } =20 @@ -825,8 +825,8 @@ static int cvm_oct_probe(struct platform_device *pdev) struct net_device *dev =3D alloc_etherdev(sizeof(struct octeon_ethernet)); if (!dev) { - pr_err("Failed to allocate ethernet device for port %d\n", - port); + dev_err(&pdev->dev, "Failed to allocate ethernet device for port %d\n", + port); continue; } =20 @@ -910,8 +910,8 @@ static int cvm_oct_probe(struct platform_device *pdev) if (!dev->netdev_ops) { free_netdev(dev); } else if (register_netdev(dev) < 0) { - pr_err("Failed to register ethernet device for interface %d, port %d\n= ", - interface, priv->port); + netdev_err(dev, "Failed to register ethernet device for interface %d, = port %d\n", + interface, priv->port); free_netdev(dev); } else { cvm_oct_device[priv->port] =3D dev; --=20 2.53.0 From nobody Wed Jun 17 06:11:41 2026 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D657A329E6A for ; Mon, 27 Apr 2026 15:18:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303095; cv=none; b=MJXoFgmdNiozEogeG46d20ijOVQx7/XPI5z355WgcmDzZBD07WnpaGw1ShhtolSt0uri0ZxGM9+H0xy0wbvAsDPmU5/flc6rMgGeChYoYfS0hzgYWL5OPl2+AUwcyJ6Jh7M4pHtlXF5/vpDnCbg3mANP7KR7xDSR9QCZi66tcKw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303095; c=relaxed/simple; bh=K0LimqIiSqrHSUtLwoPv3cQGCgKfxCZALm+gQtdqAbM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qjGZ+6J0N+Xu8gU0APwYN+zKCNb0JU5WR2T4bkgN7Ov+izkcLPIHNDBtV3xo3RrYhbN13nn5DuCY4yig5oLSxUhmCUm+KfpYTcz6KT7kQ3Z9CedDVTiJaUjUbmJ08cF+s/pSfOd5vOOctI/FYPxMMa69an/Wqvodzd1IvCEpBp0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nGCGdI0t; arc=none smtp.client-ip=209.85.210.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nGCGdI0t" Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-824acdfb73dso516503b3a.2 for ; Mon, 27 Apr 2026 08:18:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777303093; x=1777907893; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1F9ROGKgvLVsMpv8CKey1oFnOTJMM8x5mbzOlOICtYU=; b=nGCGdI0tKX5HdsXnTCXksQTkqFaxWteDALGAXnzKqQOxvi/zLke3y0whxeKDl3PyB0 yj1S8Fd0RqgwIXf/CSsJvnsUoxL5OSZ296qviar008dUXb8M2DqiXtGt2wejSk9rwS5L Xk6blGfm1CIs7oaIXiT4uDzcJgUK4FqwwTkEtDLm80tGU7YgA5BmwIdCN9gTDGpgQyh/ v1RaTv1Kahy/WCrKlT8ms/4bVfLUjHxxV6n2OLKqPkNOKxwRSbPaQDba0TV1Y20DzjFm UIhVHnT+RqxJOdwSWb6olU6Bt8r3bdkXOMHSMaooyKM5AyzxipuPzFVdEnBbtUqjW6Aw +cFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777303093; x=1777907893; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1F9ROGKgvLVsMpv8CKey1oFnOTJMM8x5mbzOlOICtYU=; b=oHFQhKAx3kQi+fHRewLsGJP4ahUWeFdgnzQU+pLqu9JZMkHMb9tUExwGvNrppwOMzb FxClDb3QfzG9vp/Sc3lR4ChF89HZzQTYnAt4IEM82YuZpkVaRQ0TfRUylGvsqIF2LFEJ x2NMMvRedIsbU3gdkDdtwL+BMp8ZoKRXvrd+npvfBOfn6C4YxXDjnK0o3XgOF7xoiq1L FV45tfwl9qNHU6h3Y8Dq4YvbmMJG+98zx5sTWf/qfZvKNJfPMAED/ZXU/8ou1qtgFPZ3 918DUBdkfKnF09AkrQo5ar4cNmT54zsFLme7VKeauIB7yEzxx2qAEagJSx3Ah25WiPAi ql6w== X-Forwarded-Encrypted: i=1; AFNElJ8gECcEcdQfzGmI8pqU1T8nFQll7TdOprnGSJMc9NkWXUs1zT8Ql3U1E8kcNSW3+RQRMwG9s5TNMT1JbBw=@vger.kernel.org X-Gm-Message-State: AOJu0YzOrQOkC+pmegvgLfGd9yE9F9dCYtcA4fx8CrmvAgHocMGIe/t2 1hfgd1i0Fm6fBeEHjPYOvTBBFTIGEoAKMeic9K0TFFkIIQo7nKbMaYcs X-Gm-Gg: AeBDietqY9SyVOFKF9+NWN3Fx/b/riHGfr4dCtrUV6U6kbuEYIiIlsedrOLxpt3SPTm EHorCPISN5y7RjaqDc80ICT+2rbip6zPZgne2GdG4qh9qSLSDS6lWUhH06zACSkaZ2sjK3/eA/W I34wqQnjcPd7nDz+cSGaf7amT7YKH94ClEbo0ViukFLJEuay7PrONfRF0vkKOKMrH2MA8sDO1hk Er8mSPWlySxy1Dy/YTyAxVNTE7teK0jOVPCiSyamWVWs+r3CjX1/LOhgib2LQj2eG5qk2SwXa15 8K1xdcj5TJBXP8GhhYBn78oH6am5Ez0UGYhm7lgDDzRnfR2d1S604uje7quJqGFabX8IYzPPNTN Sr+5yYTreT+Fz0uwF+wzhAl1HAe5w1ygIv+x/BXBayjmaeVaaps3yKNI01Jhm0lOptxxY8+2Ic6 swzKwIHJE4Mvo1g8tvf6b4rdzgWIgw6dp5a0dLHuyzE31DiO84qv0qSTPribV9DRHQts2nVAIxD eIuyZlg6L4PWvt3baSa3dOQtAI= X-Received: by 2002:a05:6a00:bd86:b0:824:9f50:83c7 with SMTP id d2e1a72fcca58-82f8c2bd514mr23153459b3a.0.1777303092994; Mon, 27 Apr 2026 08:18:12 -0700 (PDT) Received: from fedora ([2401:4900:d824:7468:545f:3159:76d5:30ff]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8ec06cbfsm37652931b3a.58.2026.04.27.08.18.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Apr 2026 08:18:12 -0700 (PDT) From: Ayush Mukkanwar To: gregkh@linuxfoundation.org Cc: error27@gmail.com, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, ayushmukkanwar@gmail.com Subject: [PATCH v5 4/4] staging: octeon: refactor to per-device state and pass platform_device Date: Mon, 27 Apr 2026 20:45:55 +0530 Message-ID: <20260427151556.91153-5-ayushmukkanwar@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260427151556.91153-1-ayushmukkanwar@gmail.com> References: <20260427151556.91153-1-ayushmukkanwar@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move the static oct_rx_group array from ethernet-rx.c into the octeon_ethernet_platform structure to associate receive group state with the platform device. Pass struct platform_device instead of struct device through the ethernet-mem and ethernet-rx call chains, extracting &pdev->dev only at the point of use in dev_warn() calls. Move struct oct_rx_group and struct octeon_ethernet_platform definitions into octeon-ethernet.h so they are shared across compilation units. Signed-off-by: Ayush Mukkanwar --- drivers/staging/octeon/ethernet-mem.c | 34 ++++++++-------- drivers/staging/octeon/ethernet-mem.h | 8 +++- drivers/staging/octeon/ethernet-rx.c | 51 ++++++++++++------------ drivers/staging/octeon/ethernet-rx.h | 11 +++-- drivers/staging/octeon/ethernet.c | 29 ++++++-------- drivers/staging/octeon/octeon-ethernet.h | 18 ++++++++- 6 files changed, 83 insertions(+), 68 deletions(-) diff --git a/drivers/staging/octeon/ethernet-mem.c b/drivers/staging/octeon= /ethernet-mem.c index f182698dd057..c9b439aaf23f 100644 --- a/drivers/staging/octeon/ethernet-mem.c +++ b/drivers/staging/octeon/ethernet-mem.c @@ -5,13 +5,13 @@ * Copyright (c) 2003-2010 Cavium Networks */ =20 +#include #include #include #include =20 #include "octeon-ethernet.h" #include "ethernet-mem.h" -#include "ethernet-defines.h" =20 /** * cvm_oct_fill_hw_skbuff - fill the supplied hardware pool with skbuffs @@ -40,12 +40,12 @@ static int cvm_oct_fill_hw_skbuff(int pool, int size, i= nt elements) =20 /** * cvm_oct_free_hw_skbuff- free hardware pool skbuffs - * @dev: Device for logging + * @pdev: Platform device for logging * @pool: Pool to allocate an skbuff for * @size: Size of the buffer needed for the pool * @elements: Number of buffers to allocate */ -static void cvm_oct_free_hw_skbuff(struct device *dev, +static void cvm_oct_free_hw_skbuff(struct platform_device *pdev, int pool, int size, int elements) { char *memory; @@ -61,23 +61,23 @@ static void cvm_oct_free_hw_skbuff(struct device *dev, } while (memory); =20 if (elements < 0) - dev_warn(dev, "Freeing of pool %u had too many skbuffs (%d)\n", + dev_warn(&pdev->dev, "Freeing of pool %u had too many skbuffs (%d)\n", pool, elements); else if (elements > 0) - dev_warn(dev, "Freeing of pool %u is missing %d skbuffs\n", + dev_warn(&pdev->dev, "Freeing of pool %u is missing %d skbuffs\n", pool, elements); } =20 /** * cvm_oct_fill_hw_memory - fill a hardware pool with memory. - * @dev: Device for logging + * @pdev: Platform device for logging * @pool: Pool to populate * @size: Size of each buffer in the pool * @elements: Number of buffers to allocate * * Returns the actual number of buffers allocated. */ -static int cvm_oct_fill_hw_memory(struct device *dev, int pool, int size, +static int cvm_oct_fill_hw_memory(struct platform_device *pdev, int pool, = int size, int elements) { char *memory; @@ -97,7 +97,7 @@ static int cvm_oct_fill_hw_memory(struct device *dev, int= pool, int size, */ memory =3D kmalloc(size + 256, GFP_ATOMIC); if (unlikely(!memory)) { - dev_warn(dev, "Unable to allocate %u bytes for FPA pool %d\n", + dev_warn(&pdev->dev, "Unable to allocate %u bytes for FPA pool %d\n", elements * size, pool); break; } @@ -111,12 +111,12 @@ static int cvm_oct_fill_hw_memory(struct device *dev,= int pool, int size, =20 /** * cvm_oct_free_hw_memory - Free memory allocated by cvm_oct_fill_hw_memory - * @dev: Device for logging + * @pdev: Platform device for logging * @pool: FPA pool to free * @size: Size of each buffer in the pool * @elements: Number of buffers that should be in the pool */ -static void cvm_oct_free_hw_memory(struct device *dev, +static void cvm_oct_free_hw_memory(struct platform_device *pdev, int pool, int size, int elements) { char *memory; @@ -133,28 +133,28 @@ static void cvm_oct_free_hw_memory(struct device *dev, } while (fpa); =20 if (elements < 0) - dev_warn(dev, "Freeing of pool %u had too many buffers (%d)\n", + dev_warn(&pdev->dev, "Freeing of pool %u had too many buffers (%d)\n", pool, elements); else if (elements > 0) - dev_warn(dev, "Freeing of pool %u is missing %d buffers\n", + dev_warn(&pdev->dev, "Freeing of pool %u is missing %d buffers\n", pool, elements); } =20 -int cvm_oct_mem_fill_fpa(struct device *dev, int pool, int size, int eleme= nts) +int cvm_oct_mem_fill_fpa(struct platform_device *pdev, int pool, int size,= int elements) { int freed; =20 if (pool =3D=3D CVMX_FPA_PACKET_POOL) freed =3D cvm_oct_fill_hw_skbuff(pool, size, elements); else - freed =3D cvm_oct_fill_hw_memory(dev, pool, size, elements); + freed =3D cvm_oct_fill_hw_memory(pdev, pool, size, elements); return freed; } =20 -void cvm_oct_mem_empty_fpa(struct device *dev, int pool, int size, int ele= ments) +void cvm_oct_mem_empty_fpa(struct platform_device *pdev, int pool, int siz= e, int elements) { if (pool =3D=3D CVMX_FPA_PACKET_POOL) - cvm_oct_free_hw_skbuff(dev, pool, size, elements); + cvm_oct_free_hw_skbuff(pdev, pool, size, elements); else - cvm_oct_free_hw_memory(dev, pool, size, elements); + cvm_oct_free_hw_memory(pdev, pool, size, elements); } diff --git a/drivers/staging/octeon/ethernet-mem.h b/drivers/staging/octeon= /ethernet-mem.h index edfc93b2b23b..9279bb0de2db 100644 --- a/drivers/staging/octeon/ethernet-mem.h +++ b/drivers/staging/octeon/ethernet-mem.h @@ -5,5 +5,9 @@ * Copyright (c) 2003-2007 Cavium Networks */ =20 -int cvm_oct_mem_fill_fpa(struct device *dev, int pool, int size, int eleme= nts); -void cvm_oct_mem_empty_fpa(struct device *dev, int pool, int size, int ele= ments); +struct platform_device; + +int cvm_oct_mem_fill_fpa(struct platform_device *pdev, int pool, int size, + int elements); +void cvm_oct_mem_empty_fpa(struct platform_device *pdev, int pool, int siz= e, + int elements); diff --git a/drivers/staging/octeon/ethernet-rx.c b/drivers/staging/octeon/= ethernet-rx.c index a2f4e52d69f3..1afaafbcaf19 100644 --- a/drivers/staging/octeon/ethernet-rx.c +++ b/drivers/staging/octeon/ethernet-rx.c @@ -5,6 +5,7 @@ * Copyright (c) 2003-2010 Cavium Networks */ =20 +#include #include #include #include @@ -31,13 +32,6 @@ =20 static atomic_t oct_rx_ready =3D ATOMIC_INIT(0); =20 -static struct oct_rx_group { - int irq; - int group; - struct napi_struct napi; - struct device *dev; -} oct_rx_group[16]; - /** * cvm_oct_do_interrupt - interrupt handler. * @irq: Interrupt number. @@ -398,7 +392,7 @@ static int cvm_oct_poll(struct oct_rx_group *rx_group, = int budget) /* Restore the scratch area */ cvmx_scratch_write64(CVMX_SCR_SCRATCH, old_scratch); } - cvm_oct_rx_refill_pool(rx_group->dev, 0); + cvm_oct_rx_refill_pool(rx_group->pdev, 0); =20 return rx_count; } @@ -435,24 +429,28 @@ static int cvm_oct_napi_poll(struct napi_struct *napi= , int budget) */ void cvm_oct_poll_controller(struct net_device *dev) { + struct platform_device *pdev =3D to_platform_device(dev->dev.parent); + struct octeon_ethernet_platform *plt =3D platform_get_drvdata(pdev); int i; =20 if (!atomic_read(&oct_rx_ready)) return; =20 - for (i =3D 0; i < ARRAY_SIZE(oct_rx_group); i++) { + for (i =3D 0; i < ARRAY_SIZE(plt->rx_group); i++) { if (!(pow_receive_groups & BIT(i))) continue; =20 - cvm_oct_poll(&oct_rx_group[i], 16); + cvm_oct_poll(&plt->rx_group[i], 16); } } #endif =20 -void cvm_oct_rx_initialize(struct device *dev) +void cvm_oct_rx_initialize(struct platform_device *pdev) { int i; struct net_device *dev_for_napi =3D NULL; + struct octeon_ethernet_platform *plt =3D platform_get_drvdata(pdev); + struct oct_rx_group *rx_group =3D plt->rx_group; =20 for (i =3D 0; i < TOTAL_NUMBER_OF_PORTS; i++) { if (cvm_oct_device[i]) { @@ -464,28 +462,28 @@ void cvm_oct_rx_initialize(struct device *dev) if (!dev_for_napi) panic("No net_devices were allocated."); =20 - for (i =3D 0; i < ARRAY_SIZE(oct_rx_group); i++) { + for (i =3D 0; i < ARRAY_SIZE(plt->rx_group); i++) { int ret; =20 if (!(pow_receive_groups & BIT(i))) continue; =20 - netif_napi_add_weight(dev_for_napi, &oct_rx_group[i].napi, + netif_napi_add_weight(dev_for_napi, &rx_group[i].napi, cvm_oct_napi_poll, rx_napi_weight); - napi_enable(&oct_rx_group[i].napi); + napi_enable(&rx_group[i].napi); =20 - oct_rx_group[i].irq =3D OCTEON_IRQ_WORKQ0 + i; - oct_rx_group[i].group =3D i; - oct_rx_group[i].dev =3D dev; + rx_group[i].irq =3D OCTEON_IRQ_WORKQ0 + i; + rx_group[i].group =3D i; + rx_group[i].pdev =3D pdev; =20 /* Register an IRQ handler to receive POW interrupts */ - ret =3D request_irq(oct_rx_group[i].irq, cvm_oct_do_interrupt, 0, - "Ethernet", &oct_rx_group[i].napi); + ret =3D request_irq(rx_group[i].irq, cvm_oct_do_interrupt, 0, + "Ethernet", &rx_group[i].napi); if (ret) panic("Could not acquire Ethernet IRQ %d\n", - oct_rx_group[i].irq); + rx_group[i].irq); =20 - disable_irq_nosync(oct_rx_group[i].irq); + disable_irq_nosync(rx_group[i].irq); =20 /* Enable POW interrupt when our port has at least one packet */ if (OCTEON_IS_MODEL(OCTEON_CN68XX)) { @@ -517,16 +515,17 @@ void cvm_oct_rx_initialize(struct device *dev) /* Schedule NAPI now. This will indirectly enable the * interrupt. */ - napi_schedule(&oct_rx_group[i].napi); + napi_schedule(&rx_group[i].napi); } atomic_inc(&oct_rx_ready); } =20 -void cvm_oct_rx_shutdown(void) +void cvm_oct_rx_shutdown(struct platform_device *pdev) { + struct octeon_ethernet_platform *plt =3D platform_get_drvdata(pdev); int i; =20 - for (i =3D 0; i < ARRAY_SIZE(oct_rx_group); i++) { + for (i =3D 0; i < ARRAY_SIZE(plt->rx_group); i++) { if (!(pow_receive_groups & BIT(i))) continue; =20 @@ -537,8 +536,8 @@ void cvm_oct_rx_shutdown(void) cvmx_write_csr(CVMX_POW_WQ_INT_THRX(i), 0); =20 /* Free the interrupt handler */ - free_irq(oct_rx_group[i].irq, &oct_rx_group[i].napi); + free_irq(plt->rx_group[i].irq, &plt->rx_group[i].napi); =20 - netif_napi_del(&oct_rx_group[i].napi); + netif_napi_del(&plt->rx_group[i].napi); } } diff --git a/drivers/staging/octeon/ethernet-rx.h b/drivers/staging/octeon/= ethernet-rx.h index 636ee7d549f6..6093694326cb 100644 --- a/drivers/staging/octeon/ethernet-rx.h +++ b/drivers/staging/octeon/ethernet-rx.h @@ -5,11 +5,14 @@ * Copyright (c) 2003-2007 Cavium Networks */ =20 +struct platform_device; + void cvm_oct_poll_controller(struct net_device *dev); -void cvm_oct_rx_initialize(struct device *dev); -void cvm_oct_rx_shutdown(void); +void cvm_oct_rx_initialize(struct platform_device *pdev); +void cvm_oct_rx_shutdown(struct platform_device *pdev); =20 -static inline void cvm_oct_rx_refill_pool(struct device *dev, int fill_thr= eshold) +static inline void cvm_oct_rx_refill_pool(struct platform_device *pdev, + int fill_threshold) { int number_to_free; int num_freed; @@ -20,7 +23,7 @@ static inline void cvm_oct_rx_refill_pool(struct device *= dev, int fill_threshold if (number_to_free > fill_threshold) { cvmx_fau_atomic_add32(FAU_NUM_PACKET_BUFFERS_TO_FREE, -number_to_free); - num_freed =3D cvm_oct_mem_fill_fpa(dev, CVMX_FPA_PACKET_POOL, + num_freed =3D cvm_oct_mem_fill_fpa(pdev, CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SIZE, number_to_free); if (num_freed !=3D number_to_free) { diff --git a/drivers/staging/octeon/ethernet.c b/drivers/staging/octeon/eth= ernet.c index 7c3cfd9efa7e..02984a27523c 100644 --- a/drivers/staging/octeon/ethernet.c +++ b/drivers/staging/octeon/ethernet.c @@ -104,11 +104,6 @@ struct net_device *cvm_oct_device[TOTAL_NUMBER_OF_PORT= S]; =20 u64 cvm_oct_tx_poll_interval; =20 -struct octeon_ethernet_platform { - struct device *dev; - struct delayed_work rx_refill_work; -}; - static void cvm_oct_rx_refill_worker(struct work_struct *work) { struct octeon_ethernet_platform *plt =3D container_of(work, @@ -120,7 +115,7 @@ static void cvm_oct_rx_refill_worker(struct work_struct= *work) * could be received so cvm_oct_napi_poll would never be * invoked to do the refill. */ - cvm_oct_rx_refill_pool(plt->dev, num_packet_buffers / 2); + cvm_oct_rx_refill_pool(plt->pdev, num_packet_buffers / 2); =20 if (!atomic_read(&cvm_oct_poll_queue_stopping)) schedule_delayed_work(&plt->rx_refill_work, HZ); @@ -142,16 +137,16 @@ static void cvm_oct_periodic_worker(struct work_struc= t *work) schedule_delayed_work(&priv->port_periodic_work, HZ); } =20 -static void cvm_oct_configure_common_hw(struct device *dev) +static void cvm_oct_configure_common_hw(struct platform_device *pdev) { /* Setup the FPA */ cvmx_fpa_enable(); - cvm_oct_mem_fill_fpa(dev, CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SIZE, + cvm_oct_mem_fill_fpa(pdev, CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SIZ= E, num_packet_buffers); - cvm_oct_mem_fill_fpa(dev, CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SIZE, + cvm_oct_mem_fill_fpa(pdev, CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SIZE, num_packet_buffers); if (CVMX_FPA_OUTPUT_BUFFER_POOL !=3D CVMX_FPA_PACKET_POOL) - cvm_oct_mem_fill_fpa(dev, CVMX_FPA_OUTPUT_BUFFER_POOL, + cvm_oct_mem_fill_fpa(pdev, CVMX_FPA_OUTPUT_BUFFER_POOL, CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, 1024); =20 #ifdef __LITTLE_ENDIAN @@ -688,7 +683,7 @@ static int cvm_oct_probe(struct platform_device *pdev) if (!plt) return -ENOMEM; =20 - plt->dev =3D &pdev->dev; + plt->pdev =3D pdev; INIT_DELAYED_WORK(&plt->rx_refill_work, cvm_oct_rx_refill_worker); platform_set_drvdata(pdev, plt); =20 @@ -702,7 +697,7 @@ static int cvm_oct_probe(struct platform_device *pdev) return -EINVAL; } =20 - cvm_oct_configure_common_hw(&pdev->dev); + cvm_oct_configure_common_hw(pdev); =20 cvmx_helper_initialize_packet_io_global(); =20 @@ -925,7 +920,7 @@ static int cvm_oct_probe(struct platform_device *pdev) } =20 cvm_oct_tx_initialize(); - cvm_oct_rx_initialize(&pdev->dev); + cvm_oct_rx_initialize(pdev); =20 /* * 150 uS: about 10 1500-byte packets at 1GE. @@ -948,7 +943,7 @@ static void cvm_oct_remove(struct platform_device *pdev) =20 cancel_delayed_work_sync(&plt->rx_refill_work); =20 - cvm_oct_rx_shutdown(); + cvm_oct_rx_shutdown(pdev); cvm_oct_tx_shutdown(); =20 cvmx_pko_disable(); @@ -973,12 +968,12 @@ static void cvm_oct_remove(struct platform_device *pd= ev) cvmx_ipd_free_ptr(); =20 /* Free the HW pools */ - cvm_oct_mem_empty_fpa(&pdev->dev, CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_P= OOL_SIZE, + cvm_oct_mem_empty_fpa(pdev, CVMX_FPA_PACKET_POOL, CVMX_FPA_PACKET_POOL_SI= ZE, num_packet_buffers); - cvm_oct_mem_empty_fpa(&pdev->dev, CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SI= ZE, + cvm_oct_mem_empty_fpa(pdev, CVMX_FPA_WQE_POOL, CVMX_FPA_WQE_POOL_SIZE, num_packet_buffers); if (CVMX_FPA_OUTPUT_BUFFER_POOL !=3D CVMX_FPA_PACKET_POOL) - cvm_oct_mem_empty_fpa(&pdev->dev, CVMX_FPA_OUTPUT_BUFFER_POOL, + cvm_oct_mem_empty_fpa(pdev, CVMX_FPA_OUTPUT_BUFFER_POOL, CVMX_FPA_OUTPUT_BUFFER_POOL_SIZE, 128); } =20 diff --git a/drivers/staging/octeon/octeon-ethernet.h b/drivers/staging/oct= eon/octeon-ethernet.h index a6140705706f..57e4029a13d0 100644 --- a/drivers/staging/octeon/octeon-ethernet.h +++ b/drivers/staging/octeon/octeon-ethernet.h @@ -11,6 +11,7 @@ #ifndef OCTEON_ETHERNET_H #define OCTEON_ETHERNET_H =20 +#include #include #include =20 @@ -70,8 +71,21 @@ struct octeon_ethernet { u64 link_info; /* Called periodically to check link status */ void (*poll)(struct net_device *dev); - struct delayed_work port_periodic_work; - struct device_node *of_node; + struct delayed_work port_periodic_work; + struct device_node *of_node; +}; + +struct oct_rx_group { + int irq; + int group; + struct napi_struct napi; + struct platform_device *pdev; +}; + +struct octeon_ethernet_platform { + struct platform_device *pdev; + struct delayed_work rx_refill_work; + struct oct_rx_group rx_group[16]; }; =20 int cvm_oct_free_work(void *work_queue_entry); --=20 2.53.0