Don't destory qp from interrupt context - do it in work queue
Signed-off-by: Amir Vadai <amirv@mellanox.co.il>
int destructed_already;
int sdp_disconnect;
- /* Data below will be reset on error */
+ struct sdp_buf *rx_ring;
+ struct sdp_buf *tx_ring;
+
/* rdma specific */
- struct rdma_cm_id *id;
struct ib_qp *qp;
struct ib_cq *cq;
struct ib_mr *mr;
+ /* Data below will be reset on error */
+ struct rdma_cm_id *id;
struct ib_device *ib_device;
/* SDP specific */
- struct sdp_buf *rx_ring;
struct ib_recv_wr rx_wr;
unsigned rx_head;
unsigned rx_tail;
int remote_credits;
int poll_cq;
- struct sdp_buf *tx_ring;
unsigned tx_head;
unsigned tx_tail;
struct ib_send_wr tx_wr;
if (!(sk->sk_shutdown & RCV_SHUTDOWN) || !sk_stream_memory_free(sk))
sdp_set_error(sk, rc);
- sdp_destroy_qp(ssk);
-
memset((void *)&ssk->id, 0, sizeof(*ssk) - offsetof(typeof(*ssk), id));
sk->sk_state_change(sk);