net: Split up BCKSUM_FLAGS
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 10 Nov 2017 21:07:58 +0000 (16:07 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Nov 2017 15:46:56 +0000 (10:46 -0500)
Those flags were for more than block checksums - Btso was in there, which
isn't a checksum.

This clarifies the use of the block checksum flags, including being
explicit about when we are using the flag for transport layer checksum
offload.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/net/mlx4/en_tx.c
kern/include/net/ip.h
kern/include/ns.h
kern/src/ns/allocb.c

index c9da268..ab51ae1 100644 (file)
@@ -872,8 +872,7 @@ netdev_tx_t mlx4_send_packet(struct block *block, struct mlx4_en_priv *priv,
 
        /* Prepare ctrl segement apart opcode+ownership */
        tx_desc->ctrl.srcrb_flags = priv->ctrl_flags;
-       if (likely(block->flag & BCKSUM_FLAGS)) {
-               assert(block->flag & (Budpck | Btcpck));
+       if (likely(block->flag & BLOCK_TRANS_TX_CSUM)) {
                tx_desc->ctrl.srcrb_flags |= cpu_to_be32(MLX4_WQE_CTRL_IP_CSUM |
                                                         MLX4_WQE_CTRL_TCP_UDP_CSUM);
                ring->tx_csum++;
index 2c1f42d..844ea70 100644 (file)
@@ -686,7 +686,7 @@ extern uint32_t restrict_mtu(uint8_t * unused_uint8_p_t, uint32_t);
  * protocol-independent manner, hence the tx_csum_offset. */
 static inline void ptclcsum_finalize(struct block *bp, unsigned int feat)
 {
-       unsigned int flag = bp->flag & BCKSUM_FLAGS;
+       unsigned int flag = bp->flag & BLOCK_TRANS_TX_CSUM;
        uint8_t *csum_store;
 
        if (flag && (flag & feat) != flag) {
@@ -698,7 +698,7 @@ static inline void ptclcsum_finalize(struct block *bp, unsigned int feat)
                hnputs((uint16_t *)csum_store,
                       ptclcsum(bp, bp->transport_offset,
                                BLEN(bp) - bp->transport_offset));
-               bp->flag &= ~BCKSUM_FLAGS;
+               bp->flag &= ~BLOCK_TRANS_TX_CSUM;
        }
 }
 
index 21a8984..883ba31 100644 (file)
@@ -359,13 +359,15 @@ enum {
 
 enum {
        BFREE = (1 << 1),
-       Bipck = (1 << NS_IPCK_SHIFT),   /* ip checksum */
-       Budpck = (1 << NS_UDPCK_SHIFT), /* udp checksum */
-       Btcpck = (1 << NS_TCPCK_SHIFT), /* tcp checksum */
-       Bpktck = (1 << NS_PKTCK_SHIFT), /* packet checksum */
-       Btso = (1 << NS_TSO_SHIFT),     /* TSO */
+       Bipck = (1 << NS_IPCK_SHIFT),   /* ip checksum (rx) */
+       Budpck = (1 << NS_UDPCK_SHIFT), /* udp checksum (rx), needed (tx) */
+       Btcpck = (1 << NS_TCPCK_SHIFT), /* tcp checksum (rx), needed (tx) */
+       Bpktck = (1 << NS_PKTCK_SHIFT), /* packet checksum (rx, maybe) */
+       Btso = (1 << NS_TSO_SHIFT),             /* TSO desired (tx) */
 };
-#define BCKSUM_FLAGS (Bipck|Budpck|Btcpck|Bpktck|Btso)
+#define BLOCK_META_FLAGS (Bipck | Budpck | Btcpck | Bpktck | Btso)
+#define BLOCK_TRANS_TX_CSUM (Budpck | Btcpck)
+#define BLOCK_RX_CSUM (Bipck | Budpck | Btcpck)
 
 struct extra_bdata {
        uintptr_t base;
index 57c4bd9..1b199a1 100644 (file)
@@ -182,7 +182,7 @@ int block_append_extra(struct block *b, uintptr_t base, uint32_t off,
  * over. */
 void block_copy_metadata(struct block *new_b, struct block *old_b)
 {
-       new_b->flag |= (old_b->flag & BCKSUM_FLAGS);
+       new_b->flag |= (old_b->flag & BLOCK_META_FLAGS);
        new_b->tx_csum_offset = old_b->tx_csum_offset;
        new_b->mss = old_b->mss;
        new_b->network_offset = old_b->network_offset;
@@ -191,7 +191,7 @@ void block_copy_metadata(struct block *new_b, struct block *old_b)
 
 void block_reset_metadata(struct block *b)
 {
-       b->flag &= ~BCKSUM_FLAGS;
+       b->flag &= ~BLOCK_META_FLAGS;
        b->tx_csum_offset = 0;
        b->mss = 0;
        b->network_offset = 0;