Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F105820826
D14816.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D14816.diff
View Options
Index: head/sys/netinet/tcp_offload.h
===================================================================
--- head/sys/netinet/tcp_offload.h
+++ head/sys/netinet/tcp_offload.h
@@ -45,6 +45,7 @@
int tcp_offload_output(struct tcpcb *);
void tcp_offload_rcvd(struct tcpcb *);
void tcp_offload_ctloutput(struct tcpcb *, int, int);
+void tcp_offload_tcp_info(struct tcpcb *, struct tcp_info *);
void tcp_offload_detach(struct tcpcb *);
#endif
Index: head/sys/netinet/tcp_offload.c
===================================================================
--- head/sys/netinet/tcp_offload.c
+++ head/sys/netinet/tcp_offload.c
@@ -168,6 +168,17 @@
}
void
+tcp_offload_tcp_info(struct tcpcb *tp, struct tcp_info *ti)
+{
+ struct toedev *tod = tp->tod;
+
+ KASSERT(tod != NULL, ("%s: tp->tod is NULL, tp %p", __func__, tp));
+ INP_WLOCK_ASSERT(tp->t_inpcb);
+
+ tod->tod_tcp_info(tod, tp, ti);
+}
+
+void
tcp_offload_detach(struct tcpcb *tp)
{
struct toedev *tod = tp->tod;
Index: head/sys/netinet/tcp_usrreq.c
===================================================================
--- head/sys/netinet/tcp_usrreq.c
+++ head/sys/netinet/tcp_usrreq.c
@@ -1393,11 +1393,15 @@
ti->tcpi_snd_nxt = tp->snd_nxt;
ti->tcpi_snd_mss = tp->t_maxseg;
ti->tcpi_rcv_mss = tp->t_maxseg;
- if (tp->t_flags & TF_TOE)
- ti->tcpi_options |= TCPI_OPT_TOE;
ti->tcpi_snd_rexmitpack = tp->t_sndrexmitpack;
ti->tcpi_rcv_ooopack = tp->t_rcvoopack;
ti->tcpi_snd_zerowin = tp->t_sndzerowin;
+#ifdef TCP_OFFLOAD
+ if (tp->t_flags & TF_TOE) {
+ ti->tcpi_options |= TCPI_OPT_TOE;
+ tcp_offload_tcp_info(tp, ti);
+ }
+#endif
}
/*
Index: head/sys/netinet/toecore.h
===================================================================
--- head/sys/netinet/toecore.h
+++ head/sys/netinet/toecore.h
@@ -38,6 +38,7 @@
struct tcpopt;
struct tcphdr;
struct in_conninfo;
+struct tcp_info;
struct toedev {
TAILQ_ENTRY(toedev) link; /* glue for toedev_list */
@@ -101,6 +102,10 @@
/* TCP socket option */
void (*tod_ctloutput)(struct toedev *, struct tcpcb *, int, int);
+
+ /* Update software state */
+ void (*tod_tcp_info)(struct toedev *, struct tcpcb *,
+ struct tcp_info *);
};
#include <sys/eventhandler.h>
Index: head/sys/netinet/toecore.c
===================================================================
--- head/sys/netinet/toecore.c
+++ head/sys/netinet/toecore.c
@@ -182,6 +182,14 @@
return;
}
+static void
+toedev_tcp_info(struct toedev *tod __unused, struct tcpcb *tp __unused,
+ struct tcp_info *ti __unused)
+{
+
+ return;
+}
+
/*
* Inform one or more TOE devices about a listening socket.
*/
@@ -271,6 +279,7 @@
tod->tod_syncache_respond = toedev_syncache_respond;
tod->tod_offload_socket = toedev_offload_socket;
tod->tod_ctloutput = toedev_ctloutput;
+ tod->tod_tcp_info = toedev_tcp_info;
}
/*
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Dec 22, 5:08 AM (18 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15550805
Default Alt Text
D14816.diff (2 KB)
Attached To
Mode
D14816: TCP_INFO for offloaded connections.
Attached
Detach File
Event Timeline
Log In to Comment