return rxe_wr_opcode_info[opcode].mask[qp->ibqp.qp_type];
 }
 
-static inline int rxe_xmit_packet(struct rxe_dev *rxe, struct rxe_qp *qp,
-                                 struct rxe_pkt_info *pkt, struct sk_buff *skb)
+static inline int rxe_xmit_packet(struct rxe_qp *qp, struct rxe_pkt_info *pkt,
+                                 struct sk_buff *skb)
 {
        int err;
        int is_request = pkt->mask & RXE_REQ_MASK;
+       struct rxe_dev *rxe = to_rdev(qp->ibqp.device);
 
        if ((is_request && (qp->req.state != QP_STATE_READY)) ||
            (!is_request && (qp->resp.state != QP_STATE_READY))) {
 
        save_state(wqe, qp, &rollback_wqe, &rollback_psn);
        update_wqe_state(qp, wqe, &pkt);
        update_wqe_psn(qp, wqe, &pkt, payload);
-       ret = rxe_xmit_packet(to_rdev(qp->ibqp.device), qp, &pkt, skb);
+       ret = rxe_xmit_packet(qp, &pkt, skb);
        if (ret) {
                qp->need_req_skb = 1;
 
 
 static enum resp_states read_reply(struct rxe_qp *qp,
                                   struct rxe_pkt_info *req_pkt)
 {
-       struct rxe_dev *rxe = to_rdev(qp->ibqp.device);
        struct rxe_pkt_info ack_pkt;
        struct sk_buff *skb;
        int mtu = qp->mtu;
        p = payload_addr(&ack_pkt) + payload + bth_pad(&ack_pkt);
        *p = ~icrc;
 
-       err = rxe_xmit_packet(rxe, qp, &ack_pkt, skb);
+       err = rxe_xmit_packet(qp, &ack_pkt, skb);
        if (err) {
                pr_err("Failed sending RDMA reply.\n");
                return RESPST_ERR_RNR;
        int err = 0;
        struct rxe_pkt_info ack_pkt;
        struct sk_buff *skb;
-       struct rxe_dev *rxe = to_rdev(qp->ibqp.device);
 
        skb = prepare_ack_packet(qp, pkt, &ack_pkt, IB_OPCODE_RC_ACKNOWLEDGE,
                                 0, psn, syndrome, NULL);
                goto err1;
        }
 
-       err = rxe_xmit_packet(rxe, qp, &ack_pkt, skb);
+       err = rxe_xmit_packet(qp, &ack_pkt, skb);
        if (err)
                pr_err_ratelimited("Failed sending ack\n");
 
        int rc = 0;
        struct rxe_pkt_info ack_pkt;
        struct sk_buff *skb;
-       struct rxe_dev *rxe = to_rdev(qp->ibqp.device);
        struct resp_res *res;
 
        skb = prepare_ack_packet(qp, pkt, &ack_pkt,
        res->last_psn  = ack_pkt.psn;
        res->cur_psn   = ack_pkt.psn;
 
-       rc = rxe_xmit_packet(rxe, qp, &ack_pkt, skb);
+       rc = rxe_xmit_packet(qp, &ack_pkt, skb);
        if (rc) {
                pr_err_ratelimited("Failed sending ack\n");
                rxe_drop_ref(qp);
                if (res) {
                        skb_get(res->atomic.skb);
                        /* Resend the result. */
-                       rc = rxe_xmit_packet(to_rdev(qp->ibqp.device), qp,
-                                            pkt, res->atomic.skb);
+                       rc = rxe_xmit_packet(qp, pkt, res->atomic.skb);
                        if (rc) {
                                pr_err("Failed resending result. This flow is not handled - skb ignored\n");
                                rc = RESPST_CLEANUP;