Identify that VLAN is present in a completion and copy it along with the VLAN
ID to the user completion.

Signed-off-by: Aleksey Senin <aleks...@voltaire.com>
Reviewed-by:   Moni Shoua  <mo...@voltaire.com>
--

--- a/src/cq.c  2010-02-08 17:33:45.000000000 +0200
+++ b/src/cq.c  2010-02-10 15:12:01.000000000 +0200
@@ -61,6 +61,10 @@
 #define MLX4_CQ_DB_REQ_NOT                     (2 << 24)
 
 enum {
+       MLX4_CQE_VLAN_PRESENT_MASK      = 1 << 29,
+};
+
+enum {
        MLX4_CQE_OWNER_MASK                     = 0x80,
        MLX4_CQE_IS_SEND_MASK                   = 0x40,
        MLX4_CQE_OPCODE_MASK                    = 0x1f
@@ -86,8 +90,7 @@
        uint32_t        my_qpn;
        uint32_t        immed_rss_invalid;
        uint32_t        g_mlpath_rqpn;
-       uint8_t         sl;
-       uint8_t         reserved1;
+       uint16_t        sl_vid;
        uint16_t        rlid;
        uint32_t        reserved2;
        uint32_t        byte_cnt;
@@ -328,12 +331,19 @@
                }
 
                wc->slid           = ntohs(cqe->rlid);
-               wc->sl             = cqe->sl >> 4;
+               wc->sl             = ntohs(cqe->sl_vid) >> 12;
                g_mlpath_rqpn      = ntohl(cqe->g_mlpath_rqpn);
                wc->src_qp         = g_mlpath_rqpn & 0xffffff;
                wc->dlid_path_bits = (g_mlpath_rqpn >> 24) & 0x7f;
                wc->wc_flags      |= g_mlpath_rqpn & 0x80000000 ? IBV_WC_GRH : 
0;
-               wc->pkey_index     = ntohl(cqe->immed_rss_invalid) & 0x7f;
+
+               if (qpn & MLX4_CQE_VLAN_PRESENT_MASK) {
+                       wc->sl  =  wc->sl & 0x0f;
+                       wc->pkey_index = ntohs(cqe->sl_vid) & 0x0fff;
+                       wc->wc_flags |= IBV_WC_WITH_VLAN;
+               }
+               else
+                       wc->pkey_index = ntohl(cqe->immed_rss_invalid) & 0x7f;
        }
 
        return CQ_OK;
_______________________________________________
ewg mailing list
ewg@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to