From: Jonathan Cameron <jonathan.cameron@huawei.com>
To: Pavan Chebbi <pavan.chebbi@broadcom.com>
Cc: <jgg@ziepe.ca>, <michael.chan@broadcom.com>,
<dave.jiang@intel.com>, <saeedm@nvidia.com>,
<davem@davemloft.net>, <corbet@lwn.net>, <edumazet@google.com>,
<gospo@broadcom.com>, <kuba@kernel.org>, <netdev@vger.kernel.org>,
<pabeni@redhat.com>, <andrew+netdev@lunn.ch>,
<selvin.xavier@broadcom.com>, <leon@kernel.org>,
<kalesh-anakkur.purayil@broadcom.com>
Subject: Re: [PATCH net-next v5 5/5] bnxt_fwctl: Add documentation entries
Date: Tue, 28 Oct 2025 16:46:51 +0000 [thread overview]
Message-ID: <20251028164651.00001823@huawei.com> (raw)
In-Reply-To: <20251014081033.1175053-6-pavan.chebbi@broadcom.com>
On Tue, 14 Oct 2025 01:10:33 -0700
Pavan Chebbi <pavan.chebbi@broadcom.com> wrote:
> Add bnxt_fwctl to the driver and fwctl documentation pages.
>
> Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
> Reviewed-by: Dave Jiang <dave.jiang@intel.com>
> Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Would be useful to provide a reference to userspace code that is
making use of this.
Jason / others, did we ever get the central repo for user space code
set up?
> ---
> .../userspace-api/fwctl/bnxt_fwctl.rst | 78 +++++++++++++++++++
> Documentation/userspace-api/fwctl/fwctl.rst | 1 +
> Documentation/userspace-api/fwctl/index.rst | 1 +
> 3 files changed, 80 insertions(+)
> create mode 100644 Documentation/userspace-api/fwctl/bnxt_fwctl.rst
>
> diff --git a/Documentation/userspace-api/fwctl/bnxt_fwctl.rst b/Documentation/userspace-api/fwctl/bnxt_fwctl.rst
> new file mode 100644
> index 000000000000..cbf6be4410cc
> --- /dev/null
> +++ b/Documentation/userspace-api/fwctl/bnxt_fwctl.rst
> @@ -0,0 +1,78 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +=================
> +fwctl bnxt driver
> +=================
> +
> +:Author: Pavan Chebbi
> +
> +Overview
> +========
> +
> +BNXT driver makes a fwctl service available through an auxiliary_device.
> +The bnxt_fwctl driver binds to this device and registers itself with the
> +fwctl subsystem.
> +
> +The bnxt_fwctl driver is agnostic to the device firmware internals. It
> +uses the Upper Layer Protocol (ULP) conduit provided by bnxt to send
> +HardWare Resource Manager (HWRM) commands to firmware.
> +
> +These commands can query or change firmware driven device configurations
> +and read/write registers that are useful for debugging.
> +
> +bnxt_fwctl User API
> +===================
> +
> +Each RPC request contains a message request structure (HWRM input),
> +its length, optional request timeout, and dma buffers' information
> +if the command needs any DMA. The request is then put together with
> +the request data and sent through bnxt's message queue to the firmware,
> +and the results are returned to the caller.
> +
> +A typical user application can send a FWCTL_INFO command using ioctl()
> +to discover bnxt_fwctl's RPC capabilities as shown below:
> +
> + ioctl(fd, FWCTL_INFO, &fwctl_info_msg);
> +
> +where fwctl_info_msg (of type struct fwctl_info) describes bnxt_info_msg
> +(of type struct fwctl_info_bnxt). fwctl_info_msg is set up as follows:
> +
> + size = sizeof(struct fwctl_info);
> + flags = 0;
> + device_data_len = sizeof(bnxt_info_msg);
> + out_device_data = (__aligned_u64)&bnxt_info_msg;
> +
> +The uctx_caps of bnxt_info_msg represents the capabilities as described
> +in fwctl_bnxt_commands of include/uapi/fwctl/bnxt.h
> +
> +The FW RPC itself, FWCTL_RPC can be sent using ioctl() as:
> +
> + ioctl(fd, FWCTL_RPC, &fwctl_rpc_msg);
> +
> +where fwctl_rpc_msg (of type struct fwctl_rpc) encapsulates fwctl_rpc_bnxt
> +(see bnxt_rpc_msg below). fwctl_rpc_bnxt members are set up as per the
> +requirements of specific HWRM commands described in include/bnxt/hsi.h.
> +An example for HWRM_VER_GET is shown below:
> +
> + struct fwctl_rpc_bnxt bnxt_rpc_msg;
> + struct hwrm_ver_get_output resp;
> + struct fwctl_rpc fwctl_rpc_msg;
> + struct hwrm_ver_get_input req;
> +
> + req.req_type = HWRM_VER_GET;
> + req.hwrm_intf_maj = HWRM_VERSION_MAJOR;
> + req.hwrm_intf_min = HWRM_VERSION_MINOR;
> + req.hwrm_intf_upd = HWRM_VERSION_UPDATE;
> + req.cmpl_ring = -1;
> + req.target_id = -1;
> +
> + bnxt_rpc_msg.req_len = sizeof(struct hwrm_ver_get_input);
> + bnxt_rpc_msg.num_dma = 0;
> + bnxt_rpc_msg.req = (__aligned_u64)&req;
> +
> + fwctl_rpc_msg.size = sizeof(struct fwctl_rpc);
> + fwctl_rpc_msg.scope = FWCTL_RPC_DEBUG_READ_ONLY;
> + fwctl_rpc_msg.in_len = sizeof(bnxt_rpc_msg) + sizeof(req);
> + fwctl_rpc_msg.out_len = sizeof(struct hwrm_ver_get_output);
> + fwctl_rpc_msg.in = (__aligned_u64)&bnxt_rpc_msg;
> + fwctl_rpc_msg.out = (__aligned_u64)&resp;
> diff --git a/Documentation/userspace-api/fwctl/fwctl.rst b/Documentation/userspace-api/fwctl/fwctl.rst
> index a74eab8d14c6..826817bfd54d 100644
> --- a/Documentation/userspace-api/fwctl/fwctl.rst
> +++ b/Documentation/userspace-api/fwctl/fwctl.rst
> @@ -148,6 +148,7 @@ area resulting in clashes will be resolved in favour of a kernel implementation.
> fwctl User API
> ==============
>
> +.. kernel-doc:: include/uapi/fwctl/bnxt.h
> .. kernel-doc:: include/uapi/fwctl/fwctl.h
> .. kernel-doc:: include/uapi/fwctl/mlx5.h
> .. kernel-doc:: include/uapi/fwctl/pds.h
> diff --git a/Documentation/userspace-api/fwctl/index.rst b/Documentation/userspace-api/fwctl/index.rst
> index 316ac456ad3b..8062f7629654 100644
> --- a/Documentation/userspace-api/fwctl/index.rst
> +++ b/Documentation/userspace-api/fwctl/index.rst
> @@ -10,5 +10,6 @@ to securely construct and execute RPCs inside device firmware.
> :maxdepth: 1
>
> fwctl
> + bnxt_fwctl
> fwctl-cxl
> pds_fwctl
next prev parent reply other threads:[~2025-10-28 16:46 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-14 8:10 [PATCH net-next v5 0/5] bnxt_fwctl: fwctl for Broadcom Netxtreme devices Pavan Chebbi
2025-10-14 8:10 ` [PATCH net-next v5 1/5] bnxt_en: Move common definitions to include/linux/bnxt/ Pavan Chebbi
2025-10-14 8:10 ` [PATCH net-next v5 2/5] bnxt_en: Refactor aux bus functions to be more generic Pavan Chebbi
2025-10-19 12:52 ` Leon Romanovsky
2026-01-15 9:28 ` Pavan Chebbi
2026-01-15 11:00 ` Leon Romanovsky
2026-01-15 12:21 ` Pavan Chebbi
2025-10-14 8:10 ` [PATCH net-next v5 3/5] bnxt_en: Create an aux device for fwctl Pavan Chebbi
2025-10-14 8:10 ` [PATCH net-next v5 4/5] bnxt_fwctl: Add bnxt fwctl device Pavan Chebbi
2025-10-16 0:40 ` Jakub Kicinski
2025-10-28 16:44 ` Jonathan Cameron
2025-10-14 8:10 ` [PATCH net-next v5 5/5] bnxt_fwctl: Add documentation entries Pavan Chebbi
2025-10-28 16:46 ` Jonathan Cameron [this message]
2025-10-29 13:36 ` Jason Gunthorpe
2025-11-02 10:45 ` Leon Romanovsky
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=20251028164651.00001823@huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=andrew+netdev@lunn.ch \
--cc=corbet@lwn.net \
--cc=dave.jiang@intel.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=gospo@broadcom.com \
--cc=jgg@ziepe.ca \
--cc=kalesh-anakkur.purayil@broadcom.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=michael.chan@broadcom.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pavan.chebbi@broadcom.com \
--cc=saeedm@nvidia.com \
--cc=selvin.xavier@broadcom.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.