net/mlx4_en: RX csum, remove redundant branches and checks
authorTariq Toukan <tariqt@mellanox.com>
Thu, 28 Dec 2017 14:26:08 +0000 (16:26 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 28 Dec 2017 17:24:05 +0000 (12:24 -0500)
Do not check IPv6 bit in cqe status if CONFIG_IPV6 is not enabled.
Function check_csum() is reached only with IPv4 or IPv6 set (if enabled),
if IPv6 is not set (or is not enabled) it is redundant to test the
IPv4 bit.

Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_rx.c

index 85e28efcda33951124ed21059f4e6e6bc3a93a75..680bd3fbaa60da0eb1770846a2efcd4f9b8427ff 100644 (file)
@@ -617,6 +617,10 @@ static int get_fixed_ipv6_csum(__wsum hw_checksum, struct sk_buff *skb,
        return 0;
 }
 #endif
+
+/* We reach this function only after checking that any of
+ * the (IPv4 | IPv6) bits are set in cqe->status.
+ */
 static int check_csum(struct mlx4_cqe *cqe, struct sk_buff *skb, void *va,
                      netdev_features_t dev_features)
 {
@@ -632,13 +636,11 @@ static int check_csum(struct mlx4_cqe *cqe, struct sk_buff *skb, void *va,
                hdr += sizeof(struct vlan_hdr);
        }
 
-       if (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPV4))
-               return get_fixed_ipv4_csum(hw_checksum, skb, hdr);
 #if IS_ENABLED(CONFIG_IPV6)
        if (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPV6))
                return get_fixed_ipv6_csum(hw_checksum, skb, hdr);
 #endif
-       return 0;
+       return get_fixed_ipv4_csum(hw_checksum, skb, hdr);
 }
 
 int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int budget)
@@ -830,7 +832,11 @@ xdp_drop_no_cnt:
                        } else {
                                if (priv->flags & MLX4_EN_FLAG_RX_CSUM_NON_TCP_UDP &&
                                    (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPV4 |
+#if IS_ENABLED(CONFIG_IPV6)
                                                               MLX4_CQE_STATUS_IPV6))) {
+#else
+                                                              0))) {
+#endif
                                        if (check_csum(cqe, skb, va, dev->features)) {
                                                goto csum_none;
                                        } else {