Commit Graph

1133 Commits

Author SHA1 Message Date
Gleb Natapov
20d2725ed9 core: shared_ptr add noexcept
Add missing noexcepts. Those on constructors are needed to be able to
store shared pointers in growable containers efficiently.
2015-01-12 17:29:02 +02:00
Avi Kivity
94ffb2c948 net: add missing includes to byteorder.hh 2015-01-12 14:11:56 +02:00
Pekka Enberg
4dd4fa67c1 configure.py: Fix error hadling when no rule is found
There's a typo in configure.py which causes the "no rule found" handler
to die.

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
2015-01-12 11:24:02 +02:00
Gleb Natapov
bef054f8c8 net: rename udp_v4 to ipv4_udp for consistency with other l4 protocols 2015-01-11 12:29:05 +02:00
Avi Kivity
37026f8c5f Merge branch 'gleb/net' of ssh://github.com/cloudius-systems/seastar-dev
Network stack inversion: tcp, from Gleb.

TCP now does not transmit on a user write; instead it signals that
packets can be generated to the IP layer.  When the IP layer is polled,
it will poll TCP in turn and generate packets.  This improves batching.
2015-01-11 12:26:39 +02:00
Gleb Natapov
32b42af49f net: register l3 poller for tcp connections
This patch change tcp to register a poller so that l3 can poll tcp for
a packet instead of pushing packets from tcp to ipv4. This pushes
networking tx path inversion a little bit closer to an application.
2015-01-11 10:48:32 +02:00
Gleb Natapov
d5c309c74e net: provide poller registration API between l3 and l4
Both push and pull methods will be supported between l3 and l4 after
this patch.
2015-01-11 10:17:48 +02:00
Gleb Natapov
2b340b80ce net: unfuturize packet fragmentation
Since sending of a single packet does not involve futures anymore we can
simplify this code.
2015-01-11 10:17:48 +02:00
Avi Kivity
4c59fe6436 xen: ensure _xenstore member is initialized early enough
Thanks clang.
2015-01-08 18:44:23 +02:00
Avi Kivity
062f621aa0 net: wrap toeplitz hash initializer in more braces
Nagging by clang.
2015-01-08 18:43:49 +02:00
Avi Kivity
0aaea57838 tests: fix missing do in do/while(0) in timertest
Thanks clang.
2015-01-08 18:36:51 +02:00
Gleb Natapov
13c1324d45 net: provide some statistics via collectd
Provide batching and overall send/received packet stats.
2015-01-08 17:41:26 +02:00
Gleb Natapov
51fb18aba0 net: remove unused variable from virtio 2015-01-08 16:45:01 +02:00
Amnon Heiman
5002f0f10e README: boost is needed for ubuntu compilation 2015-01-08 16:44:59 +02:00
Takuya ASADA
902b5b00a4 Make pollable_fd::_s as private variable
We can use pollable_fd::writeable/readable instead.

Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com>
2015-01-08 12:07:16 +02:00
Gleb Natapov
b824790798 net: move udp_v4 from network_stack into ipv4 class
ipv4 class manages tcp and icmp, but for some reason udp is managed by
network_stack. Fix this and make all L4 protocol handling to be the same.
2015-01-08 11:33:19 +02:00
Avi Kivity
65d4969504 build: limit link concurrency
The linker can easily overwhelm a desktop, limit linker concurrency to
preserve some interactiveness.
2015-01-08 11:21:04 +02:00
Avi Kivity
c95e452a3a Merge branch 'directory'
Directory listing support, using subscription<sstring> to represent the
stream of file names produced by the directory lister running in parallel
with the directory consumer.
2015-01-08 11:14:52 +02:00
Avi Kivity
4fd5ab936b tests: add directory_test
Lists the current directory, testing open_directory() / list_directory().
2015-01-08 11:09:27 +02:00
Avi Kivity
3be04e7009 reactor: implement open_directory(), list_directory()
open_directory() is similar to open_file_dma() with just the O_ flags adjusted.

list_directory() returns a subscription(), so that both the producer and
the consumer can be asynchronous.
2015-01-08 11:09:25 +02:00
Avi Kivity
f26e74b1ff Merge branch 'takuya/tcp-clientv16' of github.com:cloudius-systems/seastar-dev
TCP client, from Takuya.

Reviewed-by: Asias He <asias@cloudius-systems.com>
2015-01-08 10:46:35 +02:00
Takuya ASADA
46d8b24626 Add tcp_client test
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com>
2015-01-08 01:26:36 +09:00
Takuya ASADA
e9e1ed7977 Implement TCP client on native-stack 2015-01-08 01:26:36 +09:00
Takuya ASADA
7b3b9e5a46 Implement TCP client on posix-stack
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com>
2015-01-08 01:26:36 +09:00
Takuya ASADA
b9a2541c7e Add reactor::connect(), client_socket definition and network stack stub code
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com>
2015-01-08 01:26:36 +09:00
Takuya ASADA
2118fe5a09 Add l4connid::hash() 2015-01-08 01:26:36 +09:00
Takuya ASADA
9c2ca3d6b6 return correct option size when new SYN packet sending
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com>
2015-01-08 01:26:36 +09:00
Takuya ASADA
7730ef29cd Add readable()/writeable() method on pollable_fd 2015-01-08 01:26:36 +09:00
Takuya ASADA
24820543ff Add reactor::posix_connect()
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com>
2015-01-08 01:26:30 +09:00
Takuya ASADA
d3e83dde8b Add file_desc::getsockopt() 2015-01-07 23:48:53 +09:00
Takuya ASADA
ff39f8c93e Initialize _snd.initial/next on tcb constructor 2015-01-07 23:48:41 +09:00
Avi Kivity
8101c1f2a6 stream/subscription: fix build error in stream::close() 2015-01-07 15:12:23 +02:00
Pekka Enberg
fa8d120d70 core: Fix shared_ptr pointer casts
Fix compilation errors in the shared_ptr pointer cast functions and
update shared_ptr constructor to take shared_ptr_count_base.

Suggested by Avi.

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
2015-01-07 13:50:59 +02:00
Takuya ASADA
c01e9dc8d6 Add file_desc::connect()
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com>
2015-01-06 22:54:38 +09:00
Avi Kivity
a5802e36a2 Merge branch 'gleb/net' of github.com:cloudius-systems/seastar-dev
Network tx path inversion, from Gleb:

"Instead of pushing packets from upper layers towards HW those patches
change networking stack to do the opposite: HW polls upper layers for
packets to send. There are several advantages to this approach. First
one is that now, instead of getting packets one by one HW will get them
in bulks. Another is that packet queueing happens closer to an application
layer where sender can be stopped more accurately without dropping packets."
2015-01-06 15:48:03 +02:00
Gleb Natapov
8d4e6b832a net: implement bulk sending interface for dpdk 2015-01-06 15:24:10 +02:00
Gleb Natapov
aae617f9f5 net: revert whatever is left from "virtio: batch transmitted packets" commit.
Revert remains of commit 503f1bf4 since there is no need to batch
packets inside virtio any more. Upper layer does it already.
2015-01-06 15:24:10 +02:00
Gleb Natapov
72324f02e2 net: implement bulk sending interface for virtio 2015-01-06 15:24:10 +02:00
Gleb Natapov
77bd21c387 net: implement bulk sending interface for proxy queue
Take advantage of the bulk interface to send several packets simultaneity
with one submit_to() to remote cpu.
2015-01-06 15:24:10 +02:00
Gleb Natapov
c98bdf5137 net: limit native udp send buffer size
Currently udp sender my send whenever it has data and if it does
this faster than packets can be transmitted we will run out of memory.
This patch limits how much outstanding data each native udp channel may
have.
2015-01-06 15:24:10 +02:00
Gleb Natapov
0fd014fc35 net: add add completion callback between l3 and l4
L4 will provide the callback to be called by L3 after the packet is
handled to lower layers for transmission. L4 will know that it can queue
more data from user at this point. The patch also change send function
that can no longer block to return void instead of future<>.
2015-01-06 15:24:10 +02:00
Gleb Natapov
e80fa4af7d net: drop top level 'remaining' from ipv4::send()
It is not needed.
2015-01-06 15:24:10 +02:00
Gleb Natapov
12bce3f4fc net: make interface get packets from l3
Instead of l3 (arp/ipv4) pushing packets into interface's queue, make
them register functions that interface can use to ask l3 for packets.
2015-01-06 15:24:10 +02:00
Gleb Natapov
e5d0adb339 net: make qp poll for tx packets from networking stack
Packets are accumulated in interface's packet queue. The queue is polled
by qp to see if there is something to send.
2015-01-06 15:24:10 +02:00
Gleb Natapov
865d95c0f1 net: provide bulk sending interface for qp
Implement it as calls to send() in a loop for now. Each device will
get proper implementation later.
2015-01-06 15:24:10 +02:00
Gleb Natapov
3f483b22bc future: add missing std::forward() in do_until_continued() 2015-01-06 14:43:34 +02:00
Avi Kivity
66eea763bf shared_ptr: add comparison operators 2015-01-05 13:24:07 +02:00
Avi Kivity
7a317f78a2 shared_ptr: be friend to self
Needed for converting constructor.
2015-01-05 13:24:06 +02:00
Avi Kivity
f2e25b8442 Merge branch 'shared_ptr'
Split shared_ptr into a traditional polymorphic shared_ptr implementation,
and a lighter-weight, non polymorphic lw_shared_ptr.
2015-01-05 11:29:35 +02:00
Avi Kivity
c7d7494a65 shared_ptr: add some documentation 2015-01-05 10:39:35 +02:00