mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 11:33:28 +02:00
smb: client: split out smbd_ib_post_send()
This is like smb_direct_post_send() in the server and will simplify porting the smbdirect_send_batch and credit related logic from the server. Cc: <stable@vger.kernel.org> # 6.18.x Cc: Steve French <smfrench@gmail.com> Cc: Tom Talpey <tom@talpey.com> Cc: Long Li <longli@microsoft.com> Cc: Namjae Jeon <linkinjeon@kernel.org> Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Signed-off-by: Stefan Metzmacher <metze@samba.org> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
bb848d205f
commit
bf30515cae
|
|
@ -1101,11 +1101,26 @@ static int manage_keep_alive_before_sending(struct smbdirect_socket *sc)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int smbd_ib_post_send(struct smbdirect_socket *sc,
|
||||
struct ib_send_wr *wr)
|
||||
{
|
||||
int ret;
|
||||
|
||||
atomic_inc(&sc->send_io.pending.count);
|
||||
ret = ib_post_send(sc->ib.qp, wr, NULL);
|
||||
if (ret) {
|
||||
pr_err("failed to post send: %d\n", ret);
|
||||
smbd_disconnect_rdma_connection(sc);
|
||||
ret = -EAGAIN;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Post the send request */
|
||||
static int smbd_post_send(struct smbdirect_socket *sc,
|
||||
struct smbdirect_send_io *request)
|
||||
{
|
||||
int rc, i;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < request->num_sge; i++) {
|
||||
log_rdma_send(INFO,
|
||||
|
|
@ -1126,15 +1141,7 @@ static int smbd_post_send(struct smbdirect_socket *sc,
|
|||
request->wr.num_sge = request->num_sge;
|
||||
request->wr.opcode = IB_WR_SEND;
|
||||
request->wr.send_flags = IB_SEND_SIGNALED;
|
||||
|
||||
rc = ib_post_send(sc->ib.qp, &request->wr, NULL);
|
||||
if (rc) {
|
||||
log_rdma_send(ERR, "ib_post_send failed rc=%d\n", rc);
|
||||
smbd_disconnect_rdma_connection(sc);
|
||||
rc = -EAGAIN;
|
||||
}
|
||||
|
||||
return rc;
|
||||
return smbd_ib_post_send(sc, &request->wr);
|
||||
}
|
||||
|
||||
static int wait_for_credits(struct smbdirect_socket *sc,
|
||||
|
|
@ -1280,12 +1287,6 @@ static int smbd_post_send_iter(struct smbdirect_socket *sc,
|
|||
le32_to_cpu(packet->data_length),
|
||||
le32_to_cpu(packet->remaining_data_length));
|
||||
|
||||
/*
|
||||
* Now that we got a local and a remote credit
|
||||
* we add us as pending
|
||||
*/
|
||||
atomic_inc(&sc->send_io.pending.count);
|
||||
|
||||
rc = smbd_post_send(sc, request);
|
||||
if (!rc)
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user