RDMA/vmw_pvrdma: Report network header type in WC
authorAditya Sarwade <asarwade@vmware.com>
Tue, 29 Aug 2017 22:51:29 +0000 (15:51 -0700)
committerDoug Ledford <dledford@redhat.com>
Thu, 31 Aug 2017 12:35:08 +0000 (08:35 -0400)
We should report the network header type in the work completion so that
the kernel can infer the right RoCE type headers.

Reviewed-by: Bryan Tan <bryantan@vmware.com>
Signed-off-by: Aditya Sarwade <asarwade@vmware.com>
Signed-off-by: Adit Ranadive <aditr@vmware.com>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c
include/uapi/rdma/vmw_pvrdma-abi.h

index 90aa326fd7c0974e0c5a70eb5d2b46f50d03c490..8a12dc73b68ef2906c426ef68f357ae2c71bb810 100644 (file)
@@ -389,6 +389,7 @@ retry:
        wc->dlid_path_bits = cqe->dlid_path_bits;
        wc->port_num = cqe->port_num;
        wc->vendor_err = cqe->vendor_err;
+       wc->network_hdr_type = cqe->network_hdr_type;
 
        /* Update shared ring state */
        pvrdma_idx_ring_inc(&cq->ring_state->rx.cons_head, cq->ibcq.cqe);
index c8c1d2d6df4d52ad84315727ec69849b9daa32ee..c6569b0032ecb2d06612b76d9e5dab09389f38fc 100644 (file)
@@ -125,7 +125,8 @@ enum pvrdma_wc_flags {
        PVRDMA_WC_IP_CSUM_OK            = 1 << 3,
        PVRDMA_WC_WITH_SMAC             = 1 << 4,
        PVRDMA_WC_WITH_VLAN             = 1 << 5,
-       PVRDMA_WC_FLAGS_MAX             = PVRDMA_WC_WITH_VLAN,
+       PVRDMA_WC_WITH_NETWORK_HDR_TYPE = 1 << 6,
+       PVRDMA_WC_FLAGS_MAX             = PVRDMA_WC_WITH_NETWORK_HDR_TYPE,
 };
 
 struct pvrdma_alloc_ucontext_resp {
@@ -283,7 +284,8 @@ struct pvrdma_cqe {
        __u8 dlid_path_bits;
        __u8 port_num;
        __u8 smac[6];
-       __u8 reserved2[7]; /* Pad to next power of 2 (64). */
+       __u8 network_hdr_type;
+       __u8 reserved2[6]; /* Pad to next power of 2 (64). */
 };
 
 #endif /* __VMW_PVRDMA_ABI_H__ */