From: Michal Krawczyk <mk@semihalf.com>
To: dev@dpdk.org
Cc: gtzalik@amazon.com, igorch@amazon.com,
Michal Krawczyk <mk@semihalf.com>,
Marcin Wojtas <mw@semihalf.com>,
Evgeny Schemeilin <evgenys@amazon.com>
Subject: [dpdk-dev] [PATCH 16/20] net/ena/base: convert values to u32 before shifting
Date: Thu, 17 Sep 2020 07:30:31 +0200 [thread overview]
Message-ID: <20200917053035.1889989-17-mk@semihalf.com> (raw)
In-Reply-To: <20200917053035.1889989-1-mk@semihalf.com>
When filling out meta descriptor, all values should be converted to the
desired type (u32 in case of the meta descriptor) to prevent losing the
data.
For example, io_sq->phase is of type u8. If
ENA_ETH_IO_TX_META_DESC_PHASE_SHIFT would be greater then 8, all data
would be lost.
Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Reviewed-by: Igor Chauskin <igorch@amazon.com>
Reviewed-by: Guy Tzalik <gtzalik@amazon.com>
---
drivers/net/ena/base/ena_eth_com.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ena/base/ena_eth_com.c b/drivers/net/ena/base/ena_eth_com.c
index b6821a7917..766643f47b 100644
--- a/drivers/net/ena/base/ena_eth_com.c
+++ b/drivers/net/ena/base/ena_eth_com.c
@@ -278,7 +278,7 @@ static int ena_com_create_meta(struct ena_com_io_sq *io_sq,
meta_desc->len_ctrl |= ENA_ETH_IO_TX_META_DESC_EXT_VALID_MASK;
/* bits 0-9 of the mss */
- meta_desc->word2 |= (ena_meta->mss <<
+ meta_desc->word2 |= ((u32)ena_meta->mss <<
ENA_ETH_IO_TX_META_DESC_MSS_LO_SHIFT) &
ENA_ETH_IO_TX_META_DESC_MSS_LO_MASK;
/* bits 10-13 of the mss */
@@ -288,7 +288,7 @@ static int ena_com_create_meta(struct ena_com_io_sq *io_sq,
/* Extended meta desc */
meta_desc->len_ctrl |= ENA_ETH_IO_TX_META_DESC_ETH_META_TYPE_MASK;
- meta_desc->len_ctrl |= (io_sq->phase <<
+ meta_desc->len_ctrl |= ((u32)io_sq->phase <<
ENA_ETH_IO_TX_META_DESC_PHASE_SHIFT) &
ENA_ETH_IO_TX_META_DESC_PHASE_MASK;
@@ -301,7 +301,7 @@ static int ena_com_create_meta(struct ena_com_io_sq *io_sq,
ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_SHIFT) &
ENA_ETH_IO_TX_META_DESC_L3_HDR_OFF_MASK;
- meta_desc->word2 |= (ena_meta->l4_hdr_len <<
+ meta_desc->word2 |= ((u32)ena_meta->l4_hdr_len <<
ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_SHIFT) &
ENA_ETH_IO_TX_META_DESC_L4_HDR_LEN_IN_WORDS_MASK;
@@ -434,16 +434,16 @@ int ena_com_prepare_tx(struct ena_com_io_sq *io_sq,
if (!have_meta)
desc->len_ctrl |= ENA_ETH_IO_TX_DESC_FIRST_MASK;
- desc->buff_addr_hi_hdr_sz |= (header_len <<
+ desc->buff_addr_hi_hdr_sz |= ((u32)header_len <<
ENA_ETH_IO_TX_DESC_HEADER_LENGTH_SHIFT) &
ENA_ETH_IO_TX_DESC_HEADER_LENGTH_MASK;
- desc->len_ctrl |= (io_sq->phase << ENA_ETH_IO_TX_DESC_PHASE_SHIFT) &
+ desc->len_ctrl |= ((u32)io_sq->phase << ENA_ETH_IO_TX_DESC_PHASE_SHIFT) &
ENA_ETH_IO_TX_DESC_PHASE_MASK;
desc->len_ctrl |= ENA_ETH_IO_TX_DESC_COMP_REQ_MASK;
/* Bits 0-9 */
- desc->meta_ctrl |= (ena_tx_ctx->req_id <<
+ desc->meta_ctrl |= ((u32)ena_tx_ctx->req_id <<
ENA_ETH_IO_TX_DESC_REQ_ID_LO_SHIFT) &
ENA_ETH_IO_TX_DESC_REQ_ID_LO_MASK;
@@ -491,7 +491,7 @@ int ena_com_prepare_tx(struct ena_com_io_sq *io_sq,
memset(desc, 0x0, sizeof(struct ena_eth_io_tx_desc));
- desc->len_ctrl |= (io_sq->phase <<
+ desc->len_ctrl |= ((u32)io_sq->phase <<
ENA_ETH_IO_TX_DESC_PHASE_SHIFT) &
ENA_ETH_IO_TX_DESC_PHASE_MASK;
}
--
2.25.1
next prev parent reply other threads:[~2020-09-17 5:33 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-17 5:30 [dpdk-dev] [PATCH 00/20] Upgrade HAL and add ENI metrics support Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 01/20] net/ena/base: use min/max macros with type conversion Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 02/20] net/ena/base: specify operations of rte_delay Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 03/20] net/ena/base: support 'resource busy' admin status Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 04/20] net/ena/base: exponential delay in polling functions Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 05/20] net/ena/base: fix release of wait event Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 06/20] net/ena/base: remove MMIOWB_NOT_DEFINED ifdef Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 07/20] net/ena/base: rework setup of accelerated LLQ mode Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 08/20] net/ena/base: add ENI stats Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 09/20] net/ena/base: split RSS function and hash getters Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 10/20] net/ena/base: do not use hardcoded RSS key buffer size Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 11/20] net/ena/base: check for RSS key configuration support Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 12/20] net/ena/base: minor style adjustments Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 13/20] net/ena/base: add missing unlikely Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 14/20] net/ena/base: store admin stats as u64 Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 15/20] net/ena/base: add check for meta desc being NULL Michal Krawczyk
2020-09-17 5:30 ` Michal Krawczyk [this message]
2020-09-17 5:30 ` [dpdk-dev] [PATCH 17/20] net/ena/base: simplify loop copying Rx descs Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 18/20] net/ena/base: update generation date and commit Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 19/20] net/ena: lock dynamic usages of the admin queue Michal Krawczyk
2020-09-17 5:30 ` [dpdk-dev] [PATCH 20/20] net/ena: expose ENI stats as additional xstats Michal Krawczyk
2020-09-17 17:02 ` [dpdk-dev] [PATCH 00/20] Upgrade HAL and add ENI metrics support Stephen Hemminger
2020-09-22 12:24 ` Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200917053035.1889989-17-mk@semihalf.com \
--to=mk@semihalf.com \
--cc=dev@dpdk.org \
--cc=evgenys@amazon.com \
--cc=gtzalik@amazon.com \
--cc=igorch@amazon.com \
--cc=mw@semihalf.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).