mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 06:12:08 +00:00
[I/OAT]: Structure changes for TCP recv offload to I/OAT
Adds an async_wait_queue and some additional fields to tcp_sock, and a dma_cookie_t to sk_buff. Signed-off-by: Chris Leech <christopher.leech@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
de5506e155
commit
97fc2f0848
@ -29,6 +29,7 @@
|
||||
#include <linux/net.h>
|
||||
#include <linux/textsearch.h>
|
||||
#include <net/checksum.h>
|
||||
#include <linux/dmaengine.h>
|
||||
|
||||
#define HAVE_ALLOC_SKB /* For the drivers to know */
|
||||
#define HAVE_ALIGNABLE_SKB /* Ditto 8) */
|
||||
@ -285,6 +286,9 @@ struct sk_buff {
|
||||
__u16 tc_verd; /* traffic control verdict */
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_NET_DMA
|
||||
dma_cookie_t dma_cookie;
|
||||
#endif
|
||||
|
||||
|
||||
/* These elements must be at the end, see alloc_skb() for details. */
|
||||
|
@ -18,6 +18,7 @@
|
||||
#define _LINUX_TCP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/dmaengine.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
struct tcphdr {
|
||||
@ -233,6 +234,13 @@ struct tcp_sock {
|
||||
struct iovec *iov;
|
||||
int memory;
|
||||
int len;
|
||||
#ifdef CONFIG_NET_DMA
|
||||
/* members for async copy */
|
||||
struct dma_chan *dma_chan;
|
||||
int wakeup;
|
||||
struct dma_pinned_list *pinned_list;
|
||||
dma_cookie_t dma_cookie;
|
||||
#endif
|
||||
} ucopy;
|
||||
|
||||
__u32 snd_wl1; /* Sequence for window update */
|
||||
|
@ -132,6 +132,7 @@ struct sock_common {
|
||||
* @sk_receive_queue: incoming packets
|
||||
* @sk_wmem_alloc: transmit queue bytes committed
|
||||
* @sk_write_queue: Packet sending queue
|
||||
* @sk_async_wait_queue: DMA copied packets
|
||||
* @sk_omem_alloc: "o" is "option" or "other"
|
||||
* @sk_wmem_queued: persistent queue size
|
||||
* @sk_forward_alloc: space allocated forward
|
||||
@ -205,6 +206,7 @@ struct sock {
|
||||
atomic_t sk_omem_alloc;
|
||||
struct sk_buff_head sk_receive_queue;
|
||||
struct sk_buff_head sk_write_queue;
|
||||
struct sk_buff_head sk_async_wait_queue;
|
||||
int sk_wmem_queued;
|
||||
int sk_forward_alloc;
|
||||
gfp_t sk_allocation;
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include <linux/cache.h>
|
||||
#include <linux/percpu.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/dmaengine.h>
|
||||
|
||||
#include <net/inet_connection_sock.h>
|
||||
#include <net/inet_timewait_sock.h>
|
||||
@ -817,6 +818,12 @@ static inline void tcp_prequeue_init(struct tcp_sock *tp)
|
||||
tp->ucopy.len = 0;
|
||||
tp->ucopy.memory = 0;
|
||||
skb_queue_head_init(&tp->ucopy.prequeue);
|
||||
#ifdef CONFIG_NET_DMA
|
||||
tp->ucopy.dma_chan = NULL;
|
||||
tp->ucopy.wakeup = 0;
|
||||
tp->ucopy.pinned_list = NULL;
|
||||
tp->ucopy.dma_cookie = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Packet is added to VJ-style prequeue for processing in process
|
||||
|
@ -832,6 +832,9 @@ struct sock *sk_clone(const struct sock *sk, const gfp_t priority)
|
||||
atomic_set(&newsk->sk_omem_alloc, 0);
|
||||
skb_queue_head_init(&newsk->sk_receive_queue);
|
||||
skb_queue_head_init(&newsk->sk_write_queue);
|
||||
#ifdef CONFIG_NET_DMA
|
||||
skb_queue_head_init(&newsk->sk_async_wait_queue);
|
||||
#endif
|
||||
|
||||
rwlock_init(&newsk->sk_dst_lock);
|
||||
rwlock_init(&newsk->sk_callback_lock);
|
||||
@ -1383,6 +1386,9 @@ void sock_init_data(struct socket *sock, struct sock *sk)
|
||||
skb_queue_head_init(&sk->sk_receive_queue);
|
||||
skb_queue_head_init(&sk->sk_write_queue);
|
||||
skb_queue_head_init(&sk->sk_error_queue);
|
||||
#ifdef CONFIG_NET_DMA
|
||||
skb_queue_head_init(&sk->sk_async_wait_queue);
|
||||
#endif
|
||||
|
||||
sk->sk_send_head = NULL;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user