[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Z7gqrJkNSNrRg6IK@mev-dev.igk.intel.com>
Date: Fri, 21 Feb 2025 08:26:36 +0100
From: Michal Swiatkowski <michal.swiatkowski@...ux.intel.com>
To: Jacob Keller <jacob.e.keller@...el.com>
Cc: Tony Nguyen <anthony.l.nguyen@...el.com>,
Przemek Kitszel <przemyslaw.kitszel@...el.com>,
Michal Swiatkowski <michal.swiatkowski@...ux.intel.com>,
intel-wired-lan@...ts.osuosl.org, netdev@...r.kernel.org,
Paul Greenwalt <paul.greenwalt@...el.com>
Subject: Re: [PATCH iwl-net v2] ice: fix Get Tx Topology AQ command error on
E830
On Thu, Feb 20, 2025 at 03:15:24PM -0800, Jacob Keller wrote:
> From: Paul Greenwalt <paul.greenwalt@...el.com>
>
> The Get Tx Topology AQ command (opcode 0x0418) has different read flag
> requriements depending on the hardware/firmware. For E810, E822, and E823
> firmware the read flag must be set, and for newer hardware (E825 and E830)
> it must not be set.
>
> This results in failure to configure Tx topology and the following warning
> message during probe:
>
> DDP package does not support Tx scheduling layers switching feature -
> please update to the latest DDP package and try again
>
> The current implementation only handles E825-C but not E830. It is
> confusing as we first check ice_is_e825c() and then set the flag in the set
> case. Finally, we check ice_is_e825c() again and set the flag for all other
> hardware in both the set and get case.
>
> Instead, notice that we always need the read flag for set, but only need
> the read flag for get on E810, E822, and E823 firmware. Fix the logic to
> check the MAC type and set the read flag in get only on the older devices
> which require it.
>
> Fixes: ba1124f58afd ("ice: Add E830 device IDs, MAC type and registers")
> Signed-off-by: Paul Greenwalt <paul.greenwalt@...el.com>
> Signed-off-by: Jacob Keller <jacob.e.keller@...el.com>
> ---
> Changes in v2:
> - Update commit message to include the warning users see
> - Rework code to set the flag for E810 and E822 instead of to *not* set it
> for E825-C and E830. We anticipate that future hardware and firmware
> versions will behave like E830.
> - Link to v1: https://lore.kernel.org/r/20250218-jk-e830-ddp-loading-fix-v1-1-47dc8e8d4ab5@intel.com
> ---
> drivers/net/ethernet/intel/ice/ice_ddp.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_ddp.c b/drivers/net/ethernet/intel/ice/ice_ddp.c
> index 03988be03729b76e96188864896527060c8c4d5b..59323c019544fc1f75dcb8a5d31e0b0c82932fe1 100644
> --- a/drivers/net/ethernet/intel/ice/ice_ddp.c
> +++ b/drivers/net/ethernet/intel/ice/ice_ddp.c
> @@ -2345,15 +2345,15 @@ ice_get_set_tx_topo(struct ice_hw *hw, u8 *buf, u16 buf_size,
> cmd->set_flags |= ICE_AQC_TX_TOPO_FLAGS_SRC_RAM |
> ICE_AQC_TX_TOPO_FLAGS_LOAD_NEW;
>
> - if (ice_is_e825c(hw))
> - desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
> + desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
> } else {
> ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_get_tx_topo);
> cmd->get_flags = ICE_AQC_TX_TOPO_GET_RAM;
> - }
>
> - if (!ice_is_e825c(hw))
> - desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
> + if (hw->mac_type == ICE_MAC_E810 ||
> + hw->mac_type == ICE_MAC_GENERIC)
> + desc.flags |= cpu_to_le16(ICE_AQ_FLAG_RD);
> + }
>
> status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd);
> if (status)
>
Thanks for fixing
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@...ux.intel.com>
> ---
> base-commit: 992ee3ed6e9fdd0be83a7daa5ff738e3cf86047f
> change-id: 20250218-jk-e830-ddp-loading-fix-9efdbdfc270a
>
> Best regards,
> --
> Jacob Keller <jacob.e.keller@...el.com>
>
Powered by blists - more mailing lists