break;
case SDP_MID_RDMARDCOMPL:
{
- struct sdp_rrch *rrch = (struct sdp_rrch *)(h+1);
- sdp_dbg_data(sk, "RdmaRdCompl message arrived\n");
- sdp_handle_rdma_read_compl(ssk, ntohl(h->mseq_ack),
- ntohl(rrch->len));
__kfree_skb(skb);
} break;
case SDP_MID_SENDSM:
ntohl(h->mseq), ntohl(h->mseq_ack));
ssk->srcavail_cancel_mseq = ntohl(h->mseq);
}
+
+
+ if (h->mid == SDP_MID_RDMARDCOMPL) {
+ struct sdp_rrch *rrch = (struct sdp_rrch *)(h+1);
+ sdp_dbg_data(sk, "RdmaRdCompl message arrived\n");
+ sdp_handle_rdma_read_compl(ssk, ntohl(h->mseq_ack),
+ ntohl(rrch->len));
+ }
+
skb_queue_tail(&ssk->rx_ctl_q, skb);
return 0;
break;
}
- if (ssk->rx_sa) {
+ if (ssk->rx_sa && (tx_sa->bytes_acked < tx_sa->bytes_sent)) {
sdp_dbg_data(sk, "Crossing SrcAvail - aborting this\n");
tx_sa->abort_flags |= TX_SA_CROSS_SEND;
SDPSTATS_COUNTER_INC(zcopy_cross_send);
goto out;
}
- if (mseq_ack < ssk->tx_sa->mseq) {
+ if (ssk->tx_sa->mseq > mseq_ack) {
sdp_dbg_data(sk, "SendSM arrived for old SrcAvail. "
"SendSM mseq_ack: 0x%x, SrcAvail mseq: 0x%x\n",
mseq_ack, ssk->tx_sa->mseq);
goto out;
}
- if (ssk->tx_sa->mseq < mseq_ack) {
+ if (ssk->tx_sa->mseq > mseq_ack) {
sdp_dbg_data(sk, "RdmaRdCompl arrived for old SrcAvail. "
"SendSM mseq_ack: 0x%x, SrcAvail mseq: 0x%x\n",
mseq_ack, ssk->tx_sa->mseq);