On Thu, Feb 20, 2025 at 03:15:24PM -0800, Jacob Keller wrote:
> From: Paul Greenwalt <[email protected]>
> 
> 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 <[email protected]>
> Signed-off-by: Jacob Keller <[email protected]>
> ---
> 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/[email protected]
> ---
>  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 <[email protected]>

> ---
> base-commit: 992ee3ed6e9fdd0be83a7daa5ff738e3cf86047f
> change-id: 20250218-jk-e830-ddp-loading-fix-9efdbdfc270a
> 
> Best regards,
> -- 
> Jacob Keller <[email protected]>
> 

Reply via email to