IB/mlx5: Add support for CSUM in RX flow
authorErez Shitrit <erezsh@mellanox.com>
Sun, 21 Feb 2016 14:27:18 +0000 (16:27 +0200)
committerDoug Ledford <dledford@redhat.com>
Tue, 1 Mar 2016 15:57:15 +0000 (10:57 -0500)
The driver checks the csum from the HW when completion arrived and marks
it in the wc->wc_flags field for the ulp drivers.
These is for packets from type IB_WC_RECV only.

Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/mlx5/cq.c

index fd1de31e0611cbbd3d8691e595677d8e182f3198..5ece9a89f7c28b0734974d3a2f1601410a506ed6 100644 (file)
@@ -207,7 +207,10 @@ static void handle_responder(struct ib_wc *wc, struct mlx5_cqe64 *cqe,
                break;
        case MLX5_CQE_RESP_SEND:
                wc->opcode   = IB_WC_RECV;
-               wc->wc_flags = 0;
+               wc->wc_flags = IB_WC_IP_CSUM_OK;
+               if (unlikely(!((cqe->hds_ip_ext & CQE_L3_OK) &&
+                              (cqe->hds_ip_ext & CQE_L4_OK))))
+                       wc->wc_flags = 0;
                break;
        case MLX5_CQE_RESP_SEND_IMM:
                wc->opcode      = IB_WC_RECV;