/* * The state for posted send buffers
*/ struct { /* * Memory pools for preallocating * smbdirect_send_io buffers
*/ struct { struct kmem_cache *cache;
mempool_t *pool;
} mem;
} send_io;
/* * The state for posted receive buffers
*/ struct { /* * The type of PDU we are expecting
*/ enum {
SMBDIRECT_EXPECT_NEGOTIATE_REQ = 1,
SMBDIRECT_EXPECT_NEGOTIATE_REP = 2,
SMBDIRECT_EXPECT_DATA_TRANSFER = 3,
} expected;
/* * The list of free smbdirect_recv_io * structures
*/ struct { struct list_head list;
spinlock_t lock;
} free;
/* * The list of arrived non-empty smbdirect_recv_io * structures * * This represents the reassembly queue.
*/ struct { struct list_head list;
spinlock_t lock;
wait_queue_head_t wait_queue; /* total data length of reassembly queue */ int data_length; int queue_length; /* the offset to first buffer in reassembly queue */ int first_entry_offset; /* * Indicate if we have received a full packet on the * connection This is used to identify the first SMBD * packet of a assembled payload (SMB packet) in * reassembly queue so we can return a RFC1002 length to * upper layer to indicate the length of the SMB packet * received
*/ bool full_packet_received;
} reassembly;
} recv_io;
};
/* * The SGE entries for this work request * * The first points to the packet header
*/ #define SMBDIRECT_SEND_IO_MAX_SGE 6
size_t num_sge; struct ib_sge sge[SMBDIRECT_SEND_IO_MAX_SGE];
/* * Link to the list of sibling smbdirect_send_io * messages.
*/ struct list_head sibling_list; struct ib_send_wr wr;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.