server->smbd_conn->receive_credit_target);
seq_printf(m, "\nPending send_pending: %u ",
atomic_read(&sc->send_io.pending.count));
- seq_printf(m, "\nReceive buffers count_receive_queue: %u ",
- server->smbd_conn->count_receive_queue);
seq_printf(m, "\nMR responder_resources: %u "
"max_frmr_depth: %u mr_type: 0x%x",
server->smbd_conn->responder_resources,
struct smbdirect_socket *sc = &info->socket;
if (sc->status != SMBDIRECT_SOCKET_CONNECTED) {
- wake_up_all(&info->wait_receive_queues);
return;
}
&sc->recv_io.free.list,
struct smbdirect_recv_io, list);
list_del(&ret->list);
- info->count_receive_queue--;
info->count_get_receive_buffer++;
}
spin_unlock_irqrestore(&sc->recv_io.free.lock, flags);
spin_lock_irqsave(&sc->recv_io.free.lock, flags);
list_add_tail(&response->list, &sc->recv_io.free.list);
- info->count_receive_queue++;
info->count_put_receive_buffer++;
spin_unlock_irqrestore(&sc->recv_io.free.lock, flags);
struct smbdirect_recv_io *response;
int i;
- info->count_receive_queue = 0;
-
- init_waitqueue_head(&info->wait_receive_queues);
-
for (i = 0; i < num_buf; i++) {
response = mempool_alloc(sc->recv_io.mem.pool, GFP_KERNEL);
if (!response)
response->socket = sc;
response->sge.length = 0;
list_add_tail(&response->list, &sc->recv_io.free.list);
- info->count_receive_queue++;
}
return 0;
&sc->recv_io.free.list,
struct smbdirect_recv_io, list);
list_del(&response->list);
- info->count_receive_queue--;
mempool_free(response, sc->recv_io.mem.pool);
}
{
struct smbd_connection *info = server->smbd_conn;
struct smbdirect_socket *sc;
- struct smbdirect_socket_parameters *sp;
struct smbdirect_recv_io *response;
unsigned long flags;
return;
}
sc = &info->socket;
- sp = &sc->parameters;
log_rdma_event(INFO, "cancelling and disable disconnect_work\n");
disable_work_sync(&sc->disconnect_work);
sc->recv_io.reassembly.data_length = 0;
log_rdma_event(INFO, "free receive buffers\n");
- wait_event(info->wait_receive_queues,
- info->count_receive_queue == sp->recv_credit_max);
destroy_receive_buffers(info);
/*