Source
static int nvme_tcp_recv_data(struct nvme_tcp_queue *queue, struct sk_buff *skb,
// SPDX-License-Identifier: GPL-2.0
/*
* NVMe over Fabrics TCP host.
* Copyright (c) 2018 Lightbits Labs. All rights reserved.
*/
struct nvme_tcp_queue;
enum nvme_tcp_send_state {
NVME_TCP_SEND_CMD_PDU = 0,
NVME_TCP_SEND_H2C_PDU,
NVME_TCP_SEND_DATA,
NVME_TCP_SEND_DDGST,
};
struct nvme_tcp_request {
struct nvme_request req;
void *pdu;
struct nvme_tcp_queue *queue;
u32 data_len;
u32 pdu_len;
u32 pdu_sent;
u16 ttag;
struct list_head entry;
__le32 ddgst;
struct bio *curr_bio;
struct iov_iter iter;
/* send state */
size_t offset;
size_t data_sent;
enum nvme_tcp_send_state state;
};
enum nvme_tcp_queue_flags {
NVME_TCP_Q_ALLOCATED = 0,
NVME_TCP_Q_LIVE = 1,
};
enum nvme_tcp_recv_state {
NVME_TCP_RECV_PDU = 0,
NVME_TCP_RECV_DATA,
NVME_TCP_RECV_DDGST,
};
struct nvme_tcp_ctrl;
struct nvme_tcp_queue {
struct socket *sock;
struct work_struct io_work;