Re: [Intel-wired-lan] [PATCH iwl-net v2] ice: fix posted write support for sideband queue operations

Jakub Ramaseuski <[email protected]>
Newsgroups org.osuosl.intel-wired-lan,org.kernel.vger.netdev
Message-ID <[email protected]>
On Thu, Mar 19, 2026 at 12:15 PM Przemyslaw Korba <[email protected]> wrote:
>
> On E830, PTP time adjustment commands sent via
> SBQ don't generate completion responses, causing the driver to
> timeout waiting and return -EIO, when trying:
>
> phc_ctl eth8 get adj 2 get
> dmesg: ice 0000:1a:00.0: PTP failed to adjust time, err -5
>
> Add support for posted mode not to wait for completion response.
>
> Fixes: 8f5ee3c477a8 ("ice: add support for sideband messages")
> Signed-off-by: Przemyslaw Korba <[email protected]>
> ---
> v2:
> - change "postpone" to "posted"
> - init struct with {} instead of {0}
> v1:
> https://lore.kernel.org/intel-wired-lan/[email protected]/
>
>  drivers/net/ethernet/intel/ice/ice_common.c   | 7 ++++++-
>  drivers/net/ethernet/intel/ice/ice_controlq.c | 4 ++++
>  drivers/net/ethernet/intel/ice/ice_controlq.h | 1 +
>  3 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c
> index 8866902efb91..c89c6ca1281b 100644
> --- a/drivers/net/ethernet/intel/ice/ice_common.c
> +++ b/drivers/net/ethernet/intel/ice/ice_common.c
> @@ -1765,6 +1765,7 @@ int ice_sbq_rw_reg(struct ice_hw *hw, struct ice_sbq_msg_input *in, u16 flags)
>  {
>         struct ice_sbq_cmd_desc desc = {0};
>         struct ice_sbq_msg_req msg = {0};
> +       struct ice_sq_cd cd = {};
>         u16 msg_len;
>         int status;
>
> @@ -1785,10 +1786,14 @@ int ice_sbq_rw_reg(struct ice_hw *hw, struct ice_sbq_msg_input *in, u16 flags)
>                  */
>                 msg_len -= sizeof(msg.data);
>
> +       if (in->opcode == ice_sbq_msg_wr)
> +               cd.posted = 1;
> +
>         desc.flags = cpu_to_le16(flags);
>         desc.opcode = cpu_to_le16(ice_sbq_opc_neigh_dev_req);
>         desc.param0.cmd_len = cpu_to_le16(msg_len);
> -       status = ice_sbq_send_cmd(hw, &desc, &msg, msg_len, NULL);
> +       status = ice_sbq_send_cmd(hw, &desc, &msg, msg_len, &cd);
> +
>         if (!status && !in->opcode)
>                 in->data = le32_to_cpu
>                         (((struct ice_sbq_msg_cmpl *)&msg)->data);
> diff --git a/drivers/net/ethernet/intel/ice/ice_controlq.c b/drivers/net/ethernet/intel/ice/ice_controlq.c
> index dcb837cadd18..a6008dc77fa4 100644
> --- a/drivers/net/ethernet/intel/ice/ice_controlq.c
> +++ b/drivers/net/ethernet/intel/ice/ice_controlq.c
> @@ -1086,6 +1086,10 @@ ice_sq_send_cmd(struct ice_hw *hw, struct ice_ctl_q_info *cq,
>         wr32(hw, cq->sq.tail, cq->sq.next_to_use);
>         ice_flush(hw);
>
> +       /* If the message is posted, don't wait for completion. */
> +       if (cd && cd->posted)
> +               goto sq_send_command_error;
> +
>         /* Wait for the command to complete. If it finishes within the
>          * timeout, copy the descriptor back to temp.
>          */
> diff --git a/drivers/net/ethernet/intel/ice/ice_controlq.h b/drivers/net/ethernet/intel/ice/ice_controlq.h
> index 788040dd662e..c50d6fcbacba 100644
> --- a/drivers/net/ethernet/intel/ice/ice_controlq.h
> +++ b/drivers/net/ethernet/intel/ice/ice_controlq.h
> @@ -77,6 +77,7 @@ struct ice_ctl_q_ring {
>  /* sq transaction details */
>  struct ice_sq_cd {
>         struct libie_aq_desc *wb_desc;
> +       u8 posted : 1;
>  };
>
>  /* rq event information */
>
> base-commit: acd2abc52dea91c3bc3d1b6dd8a92b9631d48bbf
> --
> 2.43.0
>
This is actually a valid fix to a,
885c5e57924dc0 ("ice: fix 'adjust' timer programming for E830 devices"),
which allows the E830 HW to continue in the function 
and then invoke the following: (with some ice_debug() messages enabled)

[ 2946.907728] ice 0000:6c:00.0: Failed to send message to PHY, err -5
[ 2946.907731] ice 0000:6c:00.0: Failed to prepare PHY ports for timer command 2, err -5
[ 2946.907733] ice 0000:6c:00.0: PTP failed to adjust time, err -5

But the patchwork lists it as Changes Requested. Any idea what happened with it?

Tested-by: Jakub Ramaseuski <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.