From: Dan Nowlin <dan.now...@intel.com>

In E830, regarding the Get Tx Topology AQ command, there is a change in
the way that the RD bit must be set. For E830, the RD bit must be
cleared. Setting the RD bit for the E830 device was causing the Get Tx
Topology command to fail.

Fix it to clear RD bit for E830 device.

Signed-off-by: Dan Nowlin <dan.now...@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com>
---
 drivers/net/ice/base/ice_ddp.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ice/base/ice_ddp.c b/drivers/net/ice/base/ice_ddp.c
index d5d81db949..f82e5a387f 100644
--- a/drivers/net/ice/base/ice_ddp.c
+++ b/drivers/net/ice/base/ice_ddp.c
@@ -2298,11 +2298,16 @@ ice_get_set_tx_topo(struct ice_hw *hw, u8 *buf, u16 
buf_size,
                if (buf)
                        cmd->set_flags |= ICE_AQC_TX_TOPO_FLAGS_SRC_RAM |
                                          ICE_AQC_TX_TOPO_FLAGS_LOAD_NEW;
+
+               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_e830(hw))
+                       desc.flags |= CPU_TO_LE16(ICE_AQ_FLAG_RD);
        }
-       desc.flags |= CPU_TO_LE16(ICE_AQ_FLAG_RD);
+
        status = ice_aq_send_cmd(hw, &desc, buf, buf_size, cd);
        if (status)
                return status;
-- 
2.43.0

Reply via email to