From: Jakub Kicinski <kuba@kernel.org>
To: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Cc: donald.hunter@gmail.com, davem@davemloft.net,
edumazet@google.com, pabeni@redhat.com, horms@kernel.org,
vadim.fedorenko@linux.dev, jiri@resnulli.us,
anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com,
andrew+netdev@lunn.ch, aleksandr.loktionov@intel.com,
corbet@lwn.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, intel-wired-lan@lists.osuosl.org,
linux-rdma@vger.kernel.org, linux-doc@vger.kernel.org,
Milena Olech <milena.olech@intel.com>
Subject: Re: [Intel-wired-lan] [PATCH net-next v4 2/3] dpll: add reference sync get/set
Date: Thu, 29 May 2025 17:56:27 -0700 [thread overview]
Message-ID: <20250529175627.4e6a3b07@kernel.org> (raw)
In-Reply-To: <20250523172650.1517164-3-arkadiusz.kubalewski@intel.com>
On Fri, 23 May 2025 19:26:49 +0200 Arkadiusz Kubalewski wrote:
> +static int
> +dpll_pin_ref_sync_state_set(struct dpll_pin *pin,
> + unsigned long ref_sync_pin_idx,
> + const enum dpll_pin_state state,
> + struct netlink_ext_ack *extack)
> +
> +{
> + struct dpll_pin_ref *ref, *failed;
> + const struct dpll_pin_ops *ops;
> + enum dpll_pin_state old_state;
> + struct dpll_pin *ref_sync_pin;
> + struct dpll_device *dpll;
> + unsigned long i;
> + int ret;
> +
> + ref_sync_pin = xa_find(&pin->ref_sync_pins, &ref_sync_pin_idx,
> + ULONG_MAX, XA_PRESENT);
> + if (!ref_sync_pin) {
> + NL_SET_ERR_MSG(extack, "reference sync pin not found");
> + return -EINVAL;
> + }
> + if (!dpll_pin_available(ref_sync_pin)) {
> + NL_SET_ERR_MSG(extack, "reference sync pin not available");
> + return -EINVAL;
> + }
> + ref = dpll_xa_ref_dpll_first(&pin->dpll_refs);
> + ASSERT_NOT_NULL(ref);
why the assert? The next line will crash very.. "informatively"
if ref is NULL 🤷️
> +static int
> +dpll_pin_ref_sync_set(struct dpll_pin *pin, struct nlattr *nest,
> + struct netlink_ext_ack *extack)
> +{
> + struct nlattr *tb[DPLL_A_PIN_MAX + 1];
> + enum dpll_pin_state state;
> + u32 sync_pin_id;
> +
> + nla_parse_nested(tb, DPLL_A_PIN_MAX, nest,
> + dpll_reference_sync_nl_policy, extack);
> + if (!tb[DPLL_A_PIN_ID]) {
NL_REQ_ATTR_CHECK(), please
if (NL_REQ_ATTR_CHECK(extack, nest, tb, DPLL_A_PIN_ID) ||
NL_REQ_ATTR_CHECK(extack, nest, tb, DPLL_A_PIN_STATE))
return -EINVAL;
it will set ATTR_MISS metadata for you. Not 100% sure if Python YNL
can decode miss attrs in nests but that's a SMOP :) C YNL can do it.
> + NL_SET_ERR_MSG(extack, "sync pin id expected");
> + return -EINVAL;
> + }
> + sync_pin_id = nla_get_u32(tb[DPLL_A_PIN_ID]);
> +
> + if (!tb[DPLL_A_PIN_STATE]) {
> + NL_SET_ERR_MSG(extack, "sync pin state expected");
> + return -EINVAL;
> + }
> + state = nla_get_u32(tb[DPLL_A_PIN_STATE]);
> +
> + return dpll_pin_ref_sync_state_set(pin, sync_pin_id, state, extack);
> +}
WARNING: multiple messages have this Message-ID (diff)
From: Jakub Kicinski <kuba@kernel.org>
To: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Cc: donald.hunter@gmail.com, davem@davemloft.net,
edumazet@google.com, pabeni@redhat.com, horms@kernel.org,
vadim.fedorenko@linux.dev, jiri@resnulli.us,
anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com,
andrew+netdev@lunn.ch, aleksandr.loktionov@intel.com,
corbet@lwn.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, intel-wired-lan@lists.osuosl.org,
linux-rdma@vger.kernel.org, linux-doc@vger.kernel.org,
Milena Olech <milena.olech@intel.com>
Subject: Re: [PATCH net-next v4 2/3] dpll: add reference sync get/set
Date: Thu, 29 May 2025 17:56:27 -0700 [thread overview]
Message-ID: <20250529175627.4e6a3b07@kernel.org> (raw)
In-Reply-To: <20250523172650.1517164-3-arkadiusz.kubalewski@intel.com>
On Fri, 23 May 2025 19:26:49 +0200 Arkadiusz Kubalewski wrote:
> +static int
> +dpll_pin_ref_sync_state_set(struct dpll_pin *pin,
> + unsigned long ref_sync_pin_idx,
> + const enum dpll_pin_state state,
> + struct netlink_ext_ack *extack)
> +
> +{
> + struct dpll_pin_ref *ref, *failed;
> + const struct dpll_pin_ops *ops;
> + enum dpll_pin_state old_state;
> + struct dpll_pin *ref_sync_pin;
> + struct dpll_device *dpll;
> + unsigned long i;
> + int ret;
> +
> + ref_sync_pin = xa_find(&pin->ref_sync_pins, &ref_sync_pin_idx,
> + ULONG_MAX, XA_PRESENT);
> + if (!ref_sync_pin) {
> + NL_SET_ERR_MSG(extack, "reference sync pin not found");
> + return -EINVAL;
> + }
> + if (!dpll_pin_available(ref_sync_pin)) {
> + NL_SET_ERR_MSG(extack, "reference sync pin not available");
> + return -EINVAL;
> + }
> + ref = dpll_xa_ref_dpll_first(&pin->dpll_refs);
> + ASSERT_NOT_NULL(ref);
why the assert? The next line will crash very.. "informatively"
if ref is NULL 🤷️
> +static int
> +dpll_pin_ref_sync_set(struct dpll_pin *pin, struct nlattr *nest,
> + struct netlink_ext_ack *extack)
> +{
> + struct nlattr *tb[DPLL_A_PIN_MAX + 1];
> + enum dpll_pin_state state;
> + u32 sync_pin_id;
> +
> + nla_parse_nested(tb, DPLL_A_PIN_MAX, nest,
> + dpll_reference_sync_nl_policy, extack);
> + if (!tb[DPLL_A_PIN_ID]) {
NL_REQ_ATTR_CHECK(), please
if (NL_REQ_ATTR_CHECK(extack, nest, tb, DPLL_A_PIN_ID) ||
NL_REQ_ATTR_CHECK(extack, nest, tb, DPLL_A_PIN_STATE))
return -EINVAL;
it will set ATTR_MISS metadata for you. Not 100% sure if Python YNL
can decode miss attrs in nests but that's a SMOP :) C YNL can do it.
> + NL_SET_ERR_MSG(extack, "sync pin id expected");
> + return -EINVAL;
> + }
> + sync_pin_id = nla_get_u32(tb[DPLL_A_PIN_ID]);
> +
> + if (!tb[DPLL_A_PIN_STATE]) {
> + NL_SET_ERR_MSG(extack, "sync pin state expected");
> + return -EINVAL;
> + }
> + state = nla_get_u32(tb[DPLL_A_PIN_STATE]);
> +
> + return dpll_pin_ref_sync_state_set(pin, sync_pin_id, state, extack);
> +}
next prev parent reply other threads:[~2025-05-30 0:56 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-23 17:26 [Intel-wired-lan] [PATCH net-next v4 0/3] dpll: add Reference SYNC feature Arkadiusz Kubalewski
2025-05-23 17:26 ` Arkadiusz Kubalewski
2025-05-23 17:26 ` [Intel-wired-lan] [PATCH net-next v4 1/3] dpll: add reference-sync netlink attribute Arkadiusz Kubalewski
2025-05-23 17:26 ` Arkadiusz Kubalewski
2025-05-26 9:42 ` [Intel-wired-lan] " Jiri Pirko
2025-05-26 9:42 ` Jiri Pirko
2025-05-28 7:24 ` [Intel-wired-lan] " Paolo Abeni
2025-05-28 7:24 ` Paolo Abeni
2025-05-30 0:49 ` [Intel-wired-lan] " Jakub Kicinski
2025-05-30 0:49 ` Jakub Kicinski
2025-06-10 3:49 ` [Intel-wired-lan] " Kubalewski, Arkadiusz
2025-06-10 3:49 ` Kubalewski, Arkadiusz
2025-05-23 17:26 ` [Intel-wired-lan] [PATCH net-next v4 2/3] dpll: add reference sync get/set Arkadiusz Kubalewski
2025-05-23 17:26 ` Arkadiusz Kubalewski
2025-05-26 9:41 ` [Intel-wired-lan] " Jiri Pirko
2025-05-26 9:41 ` Jiri Pirko
2025-05-30 0:56 ` Jakub Kicinski [this message]
2025-05-30 0:56 ` Jakub Kicinski
2025-05-23 17:26 ` [Intel-wired-lan] [PATCH net-next v4 3/3] ice: add ref-sync dpll pins Arkadiusz Kubalewski
2025-05-23 17:26 ` Arkadiusz Kubalewski
-- strict thread matches above, loose matches on Subject: below --
2025-05-25 1:05 [Intel-wired-lan] [PATCH net-next v4 2/3] dpll: add reference sync get/set kernel test robot
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=20250529175627.4e6a3b07@kernel.org \
--to=kuba@kernel.org \
--cc=aleksandr.loktionov@intel.com \
--cc=andrew+netdev@lunn.ch \
--cc=anthony.l.nguyen@intel.com \
--cc=arkadiusz.kubalewski@intel.com \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=jiri@resnulli.us \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=milena.olech@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=vadim.fedorenko@linux.dev \
/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.