From: Simon Horman <horms@kernel.org>
To: Fan Gong <gongfan1@huawei.com>
Cc: Zhu Yikai <zhuyikai1@h-partners.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Andrew Lunn <andrew+netdev@lunn.ch>,
linux-doc@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
Bjorn Helgaas <helgaas@kernel.org>, luosifu <luosifu@huawei.com>,
Xin Guo <guoxin09@huawei.com>,
Shen Chenyang <shenchenyang1@hisilicon.com>,
Zhou Shuai <zhoushuai28@huawei.com>, Wu Like <wulike1@huawei.com>,
Shi Jing <shijing34@huawei.com>,
Fu Guiming <fuguiming@h-partners.com>,
Meny Yossefi <meny.yossefi@huawei.com>,
Gur Stavi <gur.stavi@huawei.com>, Lee Trager <lee@trager.us>,
Michael Ellerman <mpe@ellerman.id.au>,
Vadim Fedorenko <vadim.fedorenko@linux.dev>,
Suman Ghosh <sumang@marvell.com>,
Przemek Kitszel <przemyslaw.kitszel@intel.com>,
Joe Damato <jdamato@fastly.com>,
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Subject: Re: [PATCH net-next v10 1/8] hinic3: Async Event Queue interfaces
Date: Tue, 22 Jul 2025 15:36:29 +0100 [thread overview]
Message-ID: <20250722143629.GL2459@horms.kernel.org> (raw)
In-Reply-To: <bea50c6c329c5ffb77cfe059e07eeed187619346.1753152592.git.zhuyikai1@h-partners.com>
On Tue, Jul 22, 2025 at 03:18:40PM +0800, Fan Gong wrote:
> Add async event queue interfaces initialization.
> It allows driver to handle async events reported by HW.
>
> Co-developed-by: Xin Guo <guoxin09@huawei.com>
> Signed-off-by: Xin Guo <guoxin09@huawei.com>
> Co-developed-by: Zhu Yikai <zhuyikai1@h-partners.com>
> Signed-off-by: Zhu Yikai <zhuyikai1@h-partners.com>
> Signed-off-by: Fan Gong <gongfan1@huawei.com>
...
> diff --git a/drivers/net/ethernet/huawei/hinic3/hinic3_eqs.c b/drivers/net/ethernet/huawei/hinic3/hinic3_eqs.c
...
> +int hinic3_aeq_register_cb(struct hinic3_hwdev *hwdev,
> + enum hinic3_aeq_type event,
> + hinic3_aeq_event_cb hwe_cb)
> +{
> + struct hinic3_aeqs *aeqs;
> + unsigned long *cb_state;
cb_state is set but otherwise unused in this function.
Probably it should be removed.
Flagged by GCC 15.1.0 and Clang 20.1.8 builds with
KCFLAGS=-Wunused-but-set-variable
> +
> + aeqs = hwdev->aeqs;
> + cb_state = &aeqs->aeq_cb_state[event];
> + aeqs->aeq_cb[event] = hwe_cb;
> + spin_lock_init(&aeqs->aeq_lock);
> +
> + return 0;
> +}
> +
> +void hinic3_aeq_unregister_cb(struct hinic3_hwdev *hwdev,
> + enum hinic3_aeq_type event)
> +{
> + struct hinic3_aeqs *aeqs;
> + unsigned long *cb_state;
Ditto.
> +
> + aeqs = hwdev->aeqs;
> + cb_state = &aeqs->aeq_cb_state[event];
> +
> + spin_lock_bh(&aeqs->aeq_lock);
> + aeqs->aeq_cb[event] = NULL;
> + spin_unlock_bh(&aeqs->aeq_lock);
> +}
...
> +static void aeq_event_handler(struct hinic3_aeqs *aeqs, u32 aeqe,
> + const struct hinic3_aeq_elem *aeqe_pos)
> +{
> + struct hinic3_hwdev *hwdev = aeqs->hwdev;
> + u8 data[HINIC3_AEQE_DATA_SIZE], size;
> + enum hinic3_aeq_type event;
> + hinic3_aeq_event_cb hwe_cb;
> + unsigned long *cb_state;
Ditto.
> +
> + if (EQ_ELEM_DESC_GET(aeqe, SRC))
> + return;
> +
> + event = EQ_ELEM_DESC_GET(aeqe, TYPE);
> + if (event >= HINIC3_MAX_AEQ_EVENTS) {
> + dev_warn(hwdev->dev, "Aeq unknown event:%d\n", event);
> + return;
> + }
> +
> + memcpy(data, aeqe_pos->aeqe_data, HINIC3_AEQE_DATA_SIZE);
> + hinic3_cmdq_buf_swab32(data, HINIC3_AEQE_DATA_SIZE);
> + size = EQ_ELEM_DESC_GET(aeqe, SIZE);
> + cb_state = &aeqs->aeq_cb_state[event];
> +
> + spin_lock_bh(&aeqs->aeq_lock);
> + hwe_cb = aeqs->aeq_cb[event];
> + if (hwe_cb)
> + hwe_cb(aeqs->hwdev, data, size);
> + spin_unlock_bh(&aeqs->aeq_lock);
> +}
...
> +static void eq_calc_page_size_and_num(struct hinic3_eq *eq, u32 elem_size)
> +{
> + u32 max_pages, min_page_size, page_size, total_size;
> +
> + /* No need for complicated arithmetics. All values must be power of 2.
arithmetic
> + * Multiplications give power of 2 and divisions give power of 2 without
> + * remainder.
> + */
> + max_pages = HINIC3_EQ_MAX_PAGES;
> + min_page_size = HINIC3_MIN_PAGE_SIZE;
> + total_size = eq->eq_len * elem_size;
> +
> + if (total_size <= max_pages * min_page_size)
> + page_size = min_page_size;
> + else
> + page_size = total_size / max_pages;
> +
> + hinic3_queue_pages_init(&eq->qpages, eq->eq_len, page_size, elem_size);
> +}
...
next prev parent reply other threads:[~2025-07-22 14:36 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-22 7:18 [PATCH net-next v10 0/8] net: hinic3: Add a driver for Huawei 3rd gen NIC - management interfaces Fan Gong
2025-07-22 7:18 ` [PATCH net-next v10 1/8] hinic3: Async Event Queue interfaces Fan Gong
2025-07-22 14:36 ` Simon Horman [this message]
2025-07-23 8:19 ` Simon Horman
2025-07-24 13:45 ` Fan Gong
2025-07-25 15:27 ` Simon Horman
2025-07-31 10:49 ` Fan Gong
2025-07-31 13:39 ` Simon Horman
2025-07-31 14:09 ` Simon Horman
2025-07-31 12:58 ` Gur Stavi
2025-07-31 14:04 ` Simon Horman
2025-07-31 18:34 ` Gur Stavi
2025-07-31 20:31 ` Simon Horman
2025-07-23 11:34 ` kernel test robot
2025-07-22 7:18 ` [PATCH net-next v10 2/8] hinic3: Complete " Fan Gong
2025-07-23 10:03 ` Simon Horman
2025-07-22 7:18 ` [PATCH net-next v10 3/8] hinic3: Command Queue framework Fan Gong
2025-07-22 7:18 ` [PATCH net-next v10 4/8] hinic3: Command Queue interfaces Fan Gong
2025-07-22 7:18 ` [PATCH net-next v10 5/8] hinic3: TX & RX Queue coalesce interfaces Fan Gong
2025-07-22 7:18 ` [PATCH net-next v10 6/8] hinic3: Mailbox framework Fan Gong
2025-07-23 10:35 ` Simon Horman
2025-07-22 7:18 ` [PATCH net-next v10 7/8] hinic3: Mailbox management interfaces Fan Gong
2025-07-23 10:51 ` Simon Horman
2025-07-22 7:18 ` [PATCH net-next v10 8/8] hinic3: Interrupt request configuration Fan Gong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250722143629.GL2459@horms.kernel.org \
--to=horms@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=christophe.jaillet@wanadoo.fr \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=fuguiming@h-partners.com \
--cc=gongfan1@huawei.com \
--cc=guoxin09@huawei.com \
--cc=gur.stavi@huawei.com \
--cc=helgaas@kernel.org \
--cc=jdamato@fastly.com \
--cc=kuba@kernel.org \
--cc=lee@trager.us \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luosifu@huawei.com \
--cc=meny.yossefi@huawei.com \
--cc=mpe@ellerman.id.au \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=shenchenyang1@hisilicon.com \
--cc=shijing34@huawei.com \
--cc=sumang@marvell.com \
--cc=vadim.fedorenko@linux.dev \
--cc=wulike1@huawei.com \
--cc=zhoushuai28@huawei.com \
--cc=zhuyikai1@h-partners.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.