diff mbox

[dpdk-dev,RFC] Clang errors with bit fields and setting value of ~0.

Message ID 1417278816-24011-1-git-send-email-keith.wiles@windriver.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Wiles, Roger Keith Nov. 29, 2014, 4:33 p.m. UTC
error: implicit truncation from 'int' to bitfield
      changes value from -1 to 127 [-Werror,-Wbitfield-constant-conversion]
                        tx_offload_mask.l2_len = ~0;
Converted to use correct bit values
						tx_offload_mask.l2_len = 0x7f;

Signer-off-by: Keith Wiles <keith.wiles@windriver.com>
---
 lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

Comments

Olivier Matz Dec. 1, 2014, 10:38 a.m. UTC | #1
Hi Keith,

On 11/29/2014 05:33 PM, Keith Wiles wrote:
> error: implicit truncation from 'int' to bitfield
>       changes value from -1 to 127 [-Werror,-Wbitfield-constant-conversion]
>                         tx_offload_mask.l2_len = ~0;
> Converted to use correct bit values
> 						tx_offload_mask.l2_len = 0x7f;
> 
> Signer-off-by: Keith Wiles <keith.wiles@windriver.com>
> ---
>  lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 28 ++++++++++++++--------------
>  1 file changed, 14 insertions(+), 14 deletions(-)
> 

I just submitted a patch that fixes the same issue without having
to know the size of the bitfield.

http://dpdk.org/ml/archives/dev/2014-December/009112.html

Regards,
Olivier
diff mbox

Patch

diff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
index 8559ef6..de5ae09 100644
--- a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
+++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c
@@ -381,7 +381,7 @@  ixgbe_set_xmit_ctx(struct igb_tx_queue* txq,
 	mss_l4len_idx |= (ctx_idx << IXGBE_ADVTXD_IDX_SHIFT);
 
 	if (ol_flags & PKT_TX_VLAN_PKT) {
-		tx_offload_mask.vlan_tci = ~0;
+		tx_offload_mask.vlan_tci = 0xFFFF;
 	}
 
 	/* check if TCP segmentation required for this packet */
@@ -391,17 +391,17 @@  ixgbe_set_xmit_ctx(struct igb_tx_queue* txq,
 			IXGBE_ADVTXD_TUCMD_L4T_TCP |
 			IXGBE_ADVTXD_DTYP_CTXT | IXGBE_ADVTXD_DCMD_DEXT;
 
-		tx_offload_mask.l2_len = ~0;
-		tx_offload_mask.l3_len = ~0;
-		tx_offload_mask.l4_len = ~0;
-		tx_offload_mask.tso_segsz = ~0;
+		tx_offload_mask.l2_len = 0x7f;
+		tx_offload_mask.l3_len = 0x1ff;
+		tx_offload_mask.l4_len = 0xff;
+		tx_offload_mask.tso_segsz = 0xffff;
 		mss_l4len_idx |= tx_offload.tso_segsz << IXGBE_ADVTXD_MSS_SHIFT;
 		mss_l4len_idx |= tx_offload.l4_len << IXGBE_ADVTXD_L4LEN_SHIFT;
 	} else { /* no TSO, check if hardware checksum is needed */
 		if (ol_flags & PKT_TX_IP_CKSUM) {
 			type_tucmd_mlhl = IXGBE_ADVTXD_TUCMD_IPV4;
-			tx_offload_mask.l2_len = ~0;
-			tx_offload_mask.l3_len = ~0;
+			tx_offload_mask.l2_len = 0x7f;
+			tx_offload_mask.l3_len = 0x1ff;
 		}
 
 		switch (ol_flags & PKT_TX_L4_MASK) {
@@ -409,23 +409,23 @@  ixgbe_set_xmit_ctx(struct igb_tx_queue* txq,
 			type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_UDP |
 				IXGBE_ADVTXD_DTYP_CTXT | IXGBE_ADVTXD_DCMD_DEXT;
 			mss_l4len_idx |= sizeof(struct udp_hdr) << IXGBE_ADVTXD_L4LEN_SHIFT;
-			tx_offload_mask.l2_len = ~0;
-			tx_offload_mask.l3_len = ~0;
+			tx_offload_mask.l2_len = 0x7f;
+			tx_offload_mask.l3_len = 0x1ff;
 			break;
 		case PKT_TX_TCP_CKSUM:
 			type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_TCP |
 				IXGBE_ADVTXD_DTYP_CTXT | IXGBE_ADVTXD_DCMD_DEXT;
 			mss_l4len_idx |= sizeof(struct tcp_hdr) << IXGBE_ADVTXD_L4LEN_SHIFT;
-			tx_offload_mask.l2_len = ~0;
-			tx_offload_mask.l3_len = ~0;
-			tx_offload_mask.l4_len = ~0;
+			tx_offload_mask.l2_len = 0x7f;
+			tx_offload_mask.l3_len = 0x1ff;
+			tx_offload_mask.l4_len = 0xff;
 			break;
 		case PKT_TX_SCTP_CKSUM:
 			type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_SCTP |
 				IXGBE_ADVTXD_DTYP_CTXT | IXGBE_ADVTXD_DCMD_DEXT;
 			mss_l4len_idx |= sizeof(struct sctp_hdr) << IXGBE_ADVTXD_L4LEN_SHIFT;
-			tx_offload_mask.l2_len = ~0;
-			tx_offload_mask.l3_len = ~0;
+			tx_offload_mask.l2_len = 0x7f;
+			tx_offload_mask.l3_len = 0x1ff;
 			break;
 		default:
 			type_tucmd_mlhl |= IXGBE_ADVTXD_TUCMD_L4T_RSV |