All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vadim Fedorenko <vadim.fedorenko@linux.dev>
To: Fan Gong <gongfan1@huawei.com>, Zhu Yikai <zhuyikai1@h-partners.com>
Cc: 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>,
	Simon Horman <horms@kernel.org>,
	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>,
	Meny Yossefi <meny.yossefi@huawei.com>,
	Gur Stavi <gur.stavi@huawei.com>, Lee Trager <lee@trager.us>,
	Michael Ellerman <mpe@ellerman.id.au>,
	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 v01 04/12] hinic3: HW capability initialization
Date: Tue, 26 Aug 2025 15:17:28 +0100	[thread overview]
Message-ID: <66f3bae8-a386-4205-97b2-7c75bc2ac378@linux.dev> (raw)
In-Reply-To: <b0c4ffc4ed52ca0921dc029e6f2fc8459a5df933.1756195078.git.zhuyikai1@h-partners.com>

On 26/08/2025 10:05, Fan Gong wrote:
> Use mailbox to get device capability for initializing driver capability.
> 
> 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>
> ---
>   .../ethernet/huawei/hinic3/hinic3_hw_cfg.c    | 66 +++++++++++++++++++
>   .../ethernet/huawei/hinic3/hinic3_hw_cfg.h    |  1 +
>   .../ethernet/huawei/hinic3/hinic3_hw_intf.h   | 42 ++++++++++++
>   .../net/ethernet/huawei/hinic3/hinic3_hwdev.c |  6 ++
>   4 files changed, 115 insertions(+)
> 
> diff --git a/drivers/net/ethernet/huawei/hinic3/hinic3_hw_cfg.c b/drivers/net/ethernet/huawei/hinic3/hinic3_hw_cfg.c
> index e7ef450c4971..24b929690f64 100644
> --- a/drivers/net/ethernet/huawei/hinic3/hinic3_hw_cfg.c
> +++ b/drivers/net/ethernet/huawei/hinic3/hinic3_hw_cfg.c
> @@ -8,6 +8,67 @@
>   #include "hinic3_hwif.h"
>   #include "hinic3_mbox.h"
>   
> +#define HINIC3_CFG_MAX_QP  256
> +
> +static void parse_pub_res_cap(struct hinic3_hwdev *hwdev,
> +			      struct hinic3_dev_cap *cap,
> +			      const struct cfg_cmd_dev_cap *dev_cap,
> +			      enum hinic3_func_type type)
> +{
> +	cap->port_id = dev_cap->port_id;
> +	cap->supp_svcs_bitmap = dev_cap->svc_cap_en;
> +}
> +
> +static void parse_l2nic_res_cap(struct hinic3_hwdev *hwdev,
> +				struct hinic3_dev_cap *cap,
> +				const struct cfg_cmd_dev_cap *dev_cap,
> +				enum hinic3_func_type type)
> +{
> +	struct hinic3_nic_service_cap *nic_svc_cap = &cap->nic_svc_cap;
> +
> +	nic_svc_cap->max_sqs = min(dev_cap->nic_max_sq_id + 1,
> +				   HINIC3_CFG_MAX_QP);
> +}
> +
> +static void parse_dev_cap(struct hinic3_hwdev *hwdev,
> +			  const struct cfg_cmd_dev_cap *dev_cap,
> +			  enum hinic3_func_type type)
> +{
> +	struct hinic3_dev_cap *cap = &hwdev->cfg_mgmt->cap;
> +
> +	/* Public resource */
> +	parse_pub_res_cap(hwdev, cap, dev_cap, type);
> +
> +	/* L2 NIC resource */
> +	if (hinic3_support_nic(hwdev))
> +		parse_l2nic_res_cap(hwdev, cap, dev_cap, type);
> +}

Could you please prepend local functions with the scope (hinic3) to be
consistent with naming? Some of functions have pretty common name and
may potentially overlap with some core functions.

> +
> +static int get_cap_from_fw(struct hinic3_hwdev *hwdev,
> +			   enum hinic3_func_type type)
> +{
> +	struct mgmt_msg_params msg_params = {};
> +	struct cfg_cmd_dev_cap dev_cap = {};
> +	int err;
> +
> +	dev_cap.func_id = hinic3_global_func_id(hwdev);
> +
> +	mgmt_msg_params_init_default(&msg_params, &dev_cap, sizeof(dev_cap));
> +
> +	err = hinic3_send_mbox_to_mgmt(hwdev, MGMT_MOD_CFGM,
> +				       CFG_CMD_GET_DEV_CAP, &msg_params);
> +	if (err || dev_cap.head.status) {
> +		dev_err(hwdev->dev,
> +			"Failed to get capability from FW, err: %d, status: 0x%x\n",
> +			err, dev_cap.head.status);
> +		return -EIO;
> +	}
> +
> +	parse_dev_cap(hwdev, &dev_cap, type);
> +
> +	return 0;
> +}
> +
>   static int hinic3_init_irq_info(struct hinic3_hwdev *hwdev)
>   {
>   	struct hinic3_cfg_mgmt_info *cfg_mgmt = hwdev->cfg_mgmt;
> @@ -180,6 +241,11 @@ void hinic3_free_irq(struct hinic3_hwdev *hwdev, u32 irq_id)
>   	mutex_unlock(&irq_info->irq_mutex);
>   }
>   
> +int init_capability(struct hinic3_hwdev *hwdev)
> +{
> +	return get_cap_from_fw(hwdev, HINIC3_FUNC_TYPE_VF);
> +}
> +
>   bool hinic3_support_nic(struct hinic3_hwdev *hwdev)
>   {
>   	return hwdev->cfg_mgmt->cap.supp_svcs_bitmap &
> diff --git a/drivers/net/ethernet/huawei/hinic3/hinic3_hw_cfg.h b/drivers/net/ethernet/huawei/hinic3/hinic3_hw_cfg.h
> index 5978cbd56fb2..8900b40e3c42 100644
> --- a/drivers/net/ethernet/huawei/hinic3/hinic3_hw_cfg.h
> +++ b/drivers/net/ethernet/huawei/hinic3/hinic3_hw_cfg.h
> @@ -49,6 +49,7 @@ int hinic3_alloc_irqs(struct hinic3_hwdev *hwdev, u16 num,
>   		      struct msix_entry *alloc_arr, u16 *act_num);
>   void hinic3_free_irq(struct hinic3_hwdev *hwdev, u32 irq_id);
>   
> +int init_capability(struct hinic3_hwdev *hwdev);

and especially non-static functions has to be prefixed with the
scope, please

>   bool hinic3_support_nic(struct hinic3_hwdev *hwdev);
>   u16 hinic3_func_max_qnum(struct hinic3_hwdev *hwdev);
>   u8 hinic3_physical_port_id(struct hinic3_hwdev *hwdev);

[...]

  reply	other threads:[~2025-08-26 14:18 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-26  9:05 [PATCH net-next v01 00/12] net: hinic3: Add a driver for Huawei 3rd gen NIC - sw and hw initialization Fan Gong
2025-08-26  9:05 ` [PATCH net-next v01 01/12] hinic3: HW initialization Fan Gong
2025-08-26 11:37   ` Vadim Fedorenko
2025-08-26 19:52   ` ALOK TIWARI
2025-08-26  9:05 ` [PATCH net-next v01 02/12] hinic3: HW management interfaces Fan Gong
2025-08-26  9:05 ` [PATCH net-next v01 03/12] hinic3: HW common function initialization Fan Gong
2025-08-26  9:05 ` [PATCH net-next v01 04/12] hinic3: HW capability initialization Fan Gong
2025-08-26 14:17   ` Vadim Fedorenko [this message]
2025-08-26  9:05 ` [PATCH net-next v01 05/12] hinic3: Command Queue flush interfaces Fan Gong
2025-08-26  9:05 ` [PATCH net-next v01 06/12] hinic3: Nic_io initialization Fan Gong
2025-08-26 15:49   ` Vadim Fedorenko
2025-08-26  9:05 ` [PATCH net-next v01 07/12] hinic3: Queue pair resource initialization Fan Gong
2025-08-26 16:08   ` Vadim Fedorenko
2025-08-26 20:05   ` ALOK TIWARI
2025-08-26  9:05 ` [PATCH net-next v01 08/12] hinic3: Queue pair context initialization Fan Gong
2025-08-26 16:42   ` Vadim Fedorenko
2025-08-26  9:05 ` [PATCH net-next v01 09/12] hinic3: Tx & Rx configuration Fan Gong
2025-08-26  9:05 ` [PATCH net-next v01 10/12] hinic3: Add Rss function Fan Gong
2025-08-26 17:06   ` Vadim Fedorenko
2025-08-26 17:49     ` Jakub Kicinski
2025-08-26 17:54   ` Eric Dumazet
2025-08-27  9:50     ` Fan Gong
2025-08-26  9:05 ` [PATCH net-next v01 11/12] hinic3: Add port management Fan Gong
2025-08-26  9:05 ` [PATCH net-next v01 12/12] hinic3: Fix missing napi->dev in netif_queue_set_napi 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=66f3bae8-a386-4205-97b2-7c75bc2ac378@linux.dev \
    --to=vadim.fedorenko@linux.dev \
    --cc=andrew+netdev@lunn.ch \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gongfan1@huawei.com \
    --cc=guoxin09@huawei.com \
    --cc=gur.stavi@huawei.com \
    --cc=helgaas@kernel.org \
    --cc=horms@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=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.