Commit 277e4ab7 authored by Trond Myklebust's avatar Trond Myklebust

SUNRPC: Simplify TCP receive code by switching to using iterators

Most of this code should also be reusable with other socket types.
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 9d96acbc
...@@ -31,15 +31,16 @@ struct sock_xprt { ...@@ -31,15 +31,16 @@ struct sock_xprt {
* State of TCP reply receive * State of TCP reply receive
*/ */
struct { struct {
__be32 fraghdr, struct {
__be32 fraghdr,
xid, xid,
calldir; calldir;
} __attribute__((packed));
u32 offset, u32 offset,
len; len;
unsigned long copied, unsigned long copied;
flags;
} recv; } recv;
/* /*
...@@ -76,21 +77,9 @@ struct sock_xprt { ...@@ -76,21 +77,9 @@ struct sock_xprt {
void (*old_error_report)(struct sock *); void (*old_error_report)(struct sock *);
}; };
/*
* TCP receive state flags
*/
#define TCP_RCV_LAST_FRAG (1UL << 0)
#define TCP_RCV_COPY_FRAGHDR (1UL << 1)
#define TCP_RCV_COPY_XID (1UL << 2)
#define TCP_RCV_COPY_DATA (1UL << 3)
#define TCP_RCV_READ_CALLDIR (1UL << 4)
#define TCP_RCV_COPY_CALLDIR (1UL << 5)
/* /*
* TCP RPC flags * TCP RPC flags
*/ */
#define TCP_RPC_REPLY (1UL << 6)
#define XPRT_SOCK_CONNECTING 1U #define XPRT_SOCK_CONNECTING 1U
#define XPRT_SOCK_DATA_READY (2) #define XPRT_SOCK_DATA_READY (2)
#define XPRT_SOCK_UPD_TIMEOUT (3) #define XPRT_SOCK_UPD_TIMEOUT (3)
......
...@@ -497,16 +497,6 @@ TRACE_EVENT(xs_tcp_data_ready, ...@@ -497,16 +497,6 @@ TRACE_EVENT(xs_tcp_data_ready,
__get_str(port), __entry->err, __entry->total) __get_str(port), __entry->err, __entry->total)
); );
#define rpc_show_sock_xprt_flags(flags) \
__print_flags(flags, "|", \
{ TCP_RCV_LAST_FRAG, "TCP_RCV_LAST_FRAG" }, \
{ TCP_RCV_COPY_FRAGHDR, "TCP_RCV_COPY_FRAGHDR" }, \
{ TCP_RCV_COPY_XID, "TCP_RCV_COPY_XID" }, \
{ TCP_RCV_COPY_DATA, "TCP_RCV_COPY_DATA" }, \
{ TCP_RCV_READ_CALLDIR, "TCP_RCV_READ_CALLDIR" }, \
{ TCP_RCV_COPY_CALLDIR, "TCP_RCV_COPY_CALLDIR" }, \
{ TCP_RPC_REPLY, "TCP_RPC_REPLY" })
TRACE_EVENT(xs_tcp_data_recv, TRACE_EVENT(xs_tcp_data_recv,
TP_PROTO(struct sock_xprt *xs), TP_PROTO(struct sock_xprt *xs),
...@@ -516,7 +506,6 @@ TRACE_EVENT(xs_tcp_data_recv, ...@@ -516,7 +506,6 @@ TRACE_EVENT(xs_tcp_data_recv,
__string(addr, xs->xprt.address_strings[RPC_DISPLAY_ADDR]) __string(addr, xs->xprt.address_strings[RPC_DISPLAY_ADDR])
__string(port, xs->xprt.address_strings[RPC_DISPLAY_PORT]) __string(port, xs->xprt.address_strings[RPC_DISPLAY_PORT])
__field(u32, xid) __field(u32, xid)
__field(unsigned long, flags)
__field(unsigned long, copied) __field(unsigned long, copied)
__field(unsigned int, reclen) __field(unsigned int, reclen)
__field(unsigned long, offset) __field(unsigned long, offset)
...@@ -526,15 +515,13 @@ TRACE_EVENT(xs_tcp_data_recv, ...@@ -526,15 +515,13 @@ TRACE_EVENT(xs_tcp_data_recv,
__assign_str(addr, xs->xprt.address_strings[RPC_DISPLAY_ADDR]); __assign_str(addr, xs->xprt.address_strings[RPC_DISPLAY_ADDR]);
__assign_str(port, xs->xprt.address_strings[RPC_DISPLAY_PORT]); __assign_str(port, xs->xprt.address_strings[RPC_DISPLAY_PORT]);
__entry->xid = be32_to_cpu(xs->recv.xid); __entry->xid = be32_to_cpu(xs->recv.xid);
__entry->flags = xs->recv.flags;
__entry->copied = xs->recv.copied; __entry->copied = xs->recv.copied;
__entry->reclen = xs->recv.len; __entry->reclen = xs->recv.len;
__entry->offset = xs->recv.offset; __entry->offset = xs->recv.offset;
), ),
TP_printk("peer=[%s]:%s xid=0x%08x flags=%s copied=%lu reclen=%u offset=%lu", TP_printk("peer=[%s]:%s xid=0x%08x copied=%lu reclen=%u offset=%lu",
__get_str(addr), __get_str(port), __entry->xid, __get_str(addr), __get_str(port), __entry->xid,
rpc_show_sock_xprt_flags(__entry->flags),
__entry->copied, __entry->reclen, __entry->offset) __entry->copied, __entry->reclen, __entry->offset)
); );
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment