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 e1cf0c08ca6fbde7d4555cbd8abfe4916f860736..bfe3e38d4b6cbd5ca5d44797d57b33d00d6d3567 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 0b646173ca22272fc5a5cca17b231f4675462a1d..fcd81866e33248fb05808fb7a15e0b1ad6046bb2 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 76216f2ef35a5159bbd6a47c8497a206ee7afc74..cec7a4b34d16f61f3352894f4a480655f8a885e1 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;
 }