Instead of erasing tx descriptor and later set all fields using or, use set for the first value of each field of the descriptor.
Signed-off-by: Shai Brandes <[email protected]> Reviewed-by: Amit Bernstein <[email protected]> Reviewed-by: Yosef Raisman <[email protected]> --- drivers/net/ena/base/ena_eth_com.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/net/ena/base/ena_eth_com.c b/drivers/net/ena/base/ena_eth_com.c index c6668238e5..c4fee7bb3c 100644 --- a/drivers/net/ena/base/ena_eth_com.c +++ b/drivers/net/ena/base/ena_eth_com.c @@ -516,26 +516,25 @@ int ena_com_prepare_tx(struct ena_com_io_sq *io_sq, desc = get_sq_desc(io_sq); if (unlikely(!desc)) return ENA_COM_FAULT; - memset(desc, 0x0, sizeof(struct ena_eth_io_tx_desc)); + + desc->len_ctrl = ENA_FIELD_PREP((u32)io_sq->phase, + ENA_ETH_IO_TX_DESC_PHASE_MASK, + ENA_ETH_IO_TX_DESC_PHASE_SHIFT); /* Set first desc when we don't have meta descriptor */ if (!have_meta) desc->len_ctrl |= ENA_ETH_IO_TX_DESC_FIRST_MASK; - desc->buff_addr_hi_hdr_sz |= ENA_FIELD_PREP((u32)header_len, - ENA_ETH_IO_TX_DESC_HEADER_LENGTH_MASK, - ENA_ETH_IO_TX_DESC_HEADER_LENGTH_SHIFT); - - desc->len_ctrl |= ENA_FIELD_PREP((u32)io_sq->phase, - ENA_ETH_IO_TX_DESC_PHASE_MASK, - ENA_ETH_IO_TX_DESC_PHASE_SHIFT); + desc->buff_addr_hi_hdr_sz = ENA_FIELD_PREP((u32)header_len, + ENA_ETH_IO_TX_DESC_HEADER_LENGTH_MASK, + ENA_ETH_IO_TX_DESC_HEADER_LENGTH_SHIFT); desc->len_ctrl |= ENA_ETH_IO_TX_DESC_COMP_REQ_MASK; /* Bits 0-9 */ - desc->meta_ctrl |= ENA_FIELD_PREP((u32)ena_tx_ctx->req_id, - ENA_ETH_IO_TX_DESC_REQ_ID_LO_MASK, - ENA_ETH_IO_TX_DESC_REQ_ID_LO_SHIFT); + desc->meta_ctrl = ENA_FIELD_PREP((u32)ena_tx_ctx->req_id, + ENA_ETH_IO_TX_DESC_REQ_ID_LO_MASK, + ENA_ETH_IO_TX_DESC_REQ_ID_LO_SHIFT); desc->meta_ctrl |= ENA_FIELD_PREP(ena_tx_ctx->df, ENA_ETH_IO_TX_DESC_DF_MASK, -- 2.17.1

