IB/hfi1: Set hdr_type when tx req is allocated
authorKaike Wan <kaike.wan@intel.com>
Mon, 9 Oct 2017 19:38:26 +0000 (12:38 -0700)
committerDoug Ledford <dledford@redhat.com>
Wed, 18 Oct 2017 14:13:00 +0000 (10:13 -0400)
Setting the protocol type should be part of initializing the tx request.
For UC and RC, the current protocol type is part of the qp priv structure.
For ud requests, it needs to be adjusted dynamically, based on the AV
posted with the WQE. This patch will simplify the initialization of the
tx request.

Fixes: 5b6cabb0db77 ("IB/hfi1: Add 16B RC/UC support")
Reviewed-by: Don Hiatt <don.hiatt@intel.com>
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hfi1/rc.c
drivers/infiniband/hw/hfi1/uc.c
drivers/infiniband/hw/hfi1/verbs_txreq.h

index e1cf0c0..bfe3e38 100644 (file)
@@ -276,7 +276,6 @@ int hfi1_make_rc_req(struct rvt_qp *qp, struct hfi1_pkt_state *ps)
        if (IS_ERR(ps->s_txreq))
                goto bail_no_tx;
 
-       ps->s_txreq->phdr.hdr.hdr_type = priv->hdr_type;
        if (priv->hdr_type == HFI1_PKT_TYPE_9B) {
                /* header size in 32-bit words LRH+BTH = (8+12)/4. */
                hwords = 5;
index 0b64617..fcd8186 100644 (file)
@@ -93,7 +93,6 @@ int hfi1_make_uc_req(struct rvt_qp *qp, struct hfi1_pkt_state *ps)
                goto done_free_tx;
        }
 
-       ps->s_txreq->phdr.hdr.hdr_type = priv->hdr_type;
        if (priv->hdr_type == HFI1_PKT_TYPE_9B) {
                /* header size in 32-bit words LRH+BTH = (8+12)/4. */
                hwords = 5;
index 76216f2..cec7a4b 100644 (file)
@@ -92,6 +92,8 @@ static inline struct verbs_txreq *get_txreq(struct hfi1_ibdev *dev,
        tx->psc = priv->s_sendcontext;
        /* so that we can test if the sdma decriptors are there */
        tx->txreq.num_desc = 0;
+       /* Set the header type */
+       tx->phdr.hdr.hdr_type = priv->hdr_type;
        return tx;
 }