Sebastien Boeuf
40dc3e7c10
net_util: Introduce virtio-net control queue handling code
...
This code is ported from the net_util.rs in virtio-devices. The point
being to move it to the net_util crate so that it can later be reused
from vhost-user-net backend.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2021-05-19 18:21:47 +02:00
dependabot[bot]
4449b0d3c2
build: Bump pnet from 0.27.2 to 0.28.0
...
Bumps [pnet](https://github.com/libpnet/libpnet ) from 0.27.2 to 0.28.0.
- [Release notes](https://github.com/libpnet/libpnet/releases )
- [Commits](https://github.com/libpnet/libpnet/compare/v0.27.2...v0.28.0 )
Signed-off-by: dependabot[bot] <support@github.com>
2021-05-17 10:43:21 +02:00
dependabot[bot]
252963190b
build: Bump serde from 1.0.125 to 1.0.126
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.125 to 1.0.126.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.125...v1.0.126 )
Signed-off-by: dependabot[bot] <support@github.com>
2021-05-13 09:22:55 +00:00
Rob Bradford
496ceed1d0
misc: Remove unnecessary "extern crate"
...
Now all crates use edition = "2018" then the majority of the "extern
crate" statements can be removed. Only those for importing macros need
to remain.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-05-12 17:26:11 +02:00
Rob Bradford
c03fe508c1
net_get, net_util: Move crate to rust 2018 edition
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-05-12 17:26:11 +02:00
Rob Bradford
b8f5911c4e
misc: Remove unused errors from public interface
...
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-05-11 13:37:19 +02:00
Rob Bradford
f0b64547c2
net_gen, net_util: Regenerate bindings
...
Regernating the bindings required some minor changes to accomodate
changes around the accessing of unions.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-05-07 14:31:57 +02:00
dependabot-preview[bot]
1bad026377
build(deps): bump libc from 0.2.93 to 0.2.94
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.93 to 0.2.94.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.93...0.2.94 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-28 07:02:14 +00:00
Rob Bradford
b945a341b3
net_util: Don't always set the tap offload
...
Setting the tap offload should only be done based on the features that
are acked by the guest. Therefore it is incorrect to set these upon
opening the tap.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-04-26 18:40:05 +02:00
Rob Bradford
5784285894
net_util: queue_pair: Handle tap write returning EAGAIN/EWOULDBLOCK
...
If the tap file descriptor is not writable then try again later. Update
the RX side to match the test on std::io::ErrorKind::WouldBlock
Fixes : #2517
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-04-22 15:58:27 +01:00
dependabot-preview[bot]
23411d45ba
build(deps): bump libc from 0.2.92 to 0.2.93
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.92 to 0.2.93.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.92...0.2.93 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-06 17:03:25 +00:00
Bo Chen
32ad4982dd
virtio-devices: Add rate limiter for the RX queue of virtio-net
...
Fixes : #1286
Signed-off-by: Bo Chen <chen.bo@intel.com>
2021-03-30 19:47:43 +02:00
Bo Chen
b176ddfe2a
virtio-devices, vmm: Add rate limiter for the TX queue of virtio-net
...
Partially fixes : #1286
Signed-off-by: Bo Chen <chen.bo@intel.com>
2021-03-30 19:47:43 +02:00
dependabot-preview[bot]
b8311cac38
build(deps): bump libc from 0.2.91 to 0.2.92
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.91 to 0.2.92.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.91...0.2.92 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-30 12:09:56 +00:00
Gaelan Steele
d72d7fd93c
net_util: make constructor fields match struct
...
Statisfies nightly clippy.
Signed-off-by: Gaelan Steele <gbs@canishe.com>
2021-03-29 09:55:29 +02:00
Rob Bradford
eb18ea61f4
net_util: Address Rust 1.51.0 clippy issue (redundant_slicing)
...
error: redundant slicing of the whole range
--> net_util/src/mac.rs:60:35
|
60 | bytes[..].copy_from_slice(&src[..]);
| ^^^^^^^^ help: use the original slice instead: `src`
|
= note: `-D clippy::redundant-slicing` implied by `-D warnings`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_slicing
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-03-26 11:32:09 +00:00
Sebastien Boeuf
63304d0be7
net_util: Check descriptor size
...
There is no point in queueing an empty descriptor in the list of iovecs.
Let's simply ignore such case and avoid some unnecessary processing.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2021-03-24 11:41:05 +01:00
dependabot-preview[bot]
874ffe60ca
build(deps): bump serde from 1.0.124 to 1.0.125
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.124 to 1.0.125.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.124...v1.0.125 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-23 07:28:35 +00:00
dependabot-preview[bot]
e9793020c2
build(deps): bump libc from 0.2.90 to 0.2.91
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.90 to 0.2.91.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.90...0.2.91 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-23 06:56:04 +00:00
dependabot-preview[bot]
e39924d45a
build(deps): bump libc from 0.2.89 to 0.2.90
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.89 to 0.2.90.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.89...0.2.90 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-18 21:29:25 +00:00
dependabot-preview[bot]
c85fba0c43
build(deps): bump libc from 0.2.88 to 0.2.89
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.88 to 0.2.89.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.88...0.2.89 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-15 23:40:01 +00:00
dependabot-preview[bot]
54e1796da6
build(deps): bump serde from 1.0.123 to 1.0.124
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.123 to 1.0.124.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.123...v1.0.124 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-07 23:09:32 +00:00
dependabot-preview[bot]
ccfa34d066
build(deps): bump libc from 0.2.87 to 0.2.88
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.87 to 0.2.88.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.87...0.2.88 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-05 18:39:37 +00:00
dependabot-preview[bot]
d433ae1656
build(deps): bump libc from 0.2.86 to 0.2.87
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.86 to 0.2.87.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.86...0.2.87 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-03-02 11:14:57 +00:00
dependabot-preview[bot]
e31c2be60a
build(deps): bump serde_json from 1.0.63 to 1.0.64
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.63 to 1.0.64.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.63...v1.0.64 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-28 18:35:17 +00:00
dependabot-preview[bot]
fb853a50b1
build(deps): bump serde_json from 1.0.62 to 1.0.63
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.62 to 1.0.63.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.62...v1.0.63 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-26 13:00:32 +00:00
Rob Bradford
c1be41bfbf
net_util: Replace use of rand crate with libc::getrandom()
...
The rand crate provides a full cross platform true cryptographic random
number implementation. As such it brings it lots of othe dependencies
and increases our binary size and compile time. This is excessive for
generating a MAC address.
From the cargo tree output:
│ │ ├── rand v0.8.3
│ │ │ ├── libc v0.2.86
│ │ │ ├── rand_chacha v0.3.0
│ │ │ │ ├── ppv-lite86 v0.2.10
│ │ │ │ └── rand_core v0.6.0
│ │ │ │ └── getrandom v0.2.0
│ │ │ │ ├── cfg-if v0.1.10
│ │ │ │ └── libc v0.2.86
│ │ │ └── rand_core v0.6.0 (*)
And cargo bloat:
0.0% 0.4% 40.4KiB rand_chacha rand_chacha::guts::refill_wide::impl_sse2
0.0% 0.4% 40.0KiB rand_chacha rand_chacha::guts::refill_wide::impl_ssse3
0.0% 0.3% 37.6KiB rand_chacha rand_chacha::guts::refill_wide::impl_avx
0.0% 0.3% 37.2KiB rand_chacha rand_chacha::guts::refill_wide::impl_sse41
0.0% 0.2% 26.1KiB rand_chacha rand_chacha::guts::refill_wide::impl_avx2
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-02-23 11:07:48 +00:00
Sebastien Boeuf
4ed0e1a3c8
net_util: Simplify TX/RX queue handling
...
The main idea behind this commit is to remove all the complexity
associated with TX/RX handling for virtio-net. By using writev() and
readv() syscalls, we could get rid of intermediate buffers for both
queues.
The complexity regarding the TAP registration has been simplified as
well. The RX queue is only processed when some data are ready to be
read from TAP. The event related to the RX queue getting more
descriptors only serves the purpose to register the TAP file if it's not
already.
With all these simplifications, the code is more readable but more
performant as well. We can see an improvement of 10% for a single
queue device.
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
2021-02-22 10:39:23 +00:00
dependabot-preview[bot]
6d63018d9f
build(deps): bump vm-memory from 0.4.0 to 0.5.0
...
Bumps [vm-memory](https://github.com/rust-vmm/vm-memory ) from 0.4.0 to 0.5.0.
- [Release notes](https://github.com/rust-vmm/vm-memory/releases )
- [Changelog](https://github.com/rust-vmm/vm-memory/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-vmm/vm-memory/compare/v0.4.0...v0.5.0 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-10 11:30:05 +00:00
dependabot-preview[bot]
aa3d5cfbfe
build(deps): bump libc from 0.2.85 to 0.2.86
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.85 to 0.2.86.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.85...0.2.86 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-08 16:19:06 +00:00
dependabot-preview[bot]
69d1186ccb
build(deps): bump serde_json from 1.0.61 to 1.0.62
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.61 to 1.0.62.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.61...v1.0.62 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-06 10:01:35 +00:00
dependabot-preview[bot]
89008a49cf
build(deps): bump libc from 0.2.84 to 0.2.85
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.84 to 0.2.85.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.84...0.2.85 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-02 07:47:41 +00:00
dependabot-preview[bot]
1df952726a
build(deps): bump libc from 0.2.83 to 0.2.84
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.83 to 0.2.84.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-29 06:21:38 +00:00
Bo Chen
6664e5a6e7
net_util, virtio-devices, vmm: Accept multiple TAP fds
...
This patch enables multi-queue support for creating virtio-net devices by
accepting multiple TAP fds, e.g. '--net fds=3:7'.
Fixes : #2164
Signed-off-by: Bo Chen <chen.bo@intel.com>
2021-01-28 09:11:39 +00:00
Rob Bradford
5db9b0ec99
net_util: Support supplying flags to open_tap() helper
...
This helper can open a TAP device and configure the interface on it. If
the device needs to be opened multiple times for MQ then it also handles
that correctly.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-01-28 09:11:39 +00:00
dependabot-preview[bot]
36360c7630
build(deps): bump libc from 0.2.82 to 0.2.83
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.82 to 0.2.83.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.82...0.2.83 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-28 06:30:03 +00:00
dependabot-preview[bot]
50a89c6808
build(deps): bump rand from 0.8.2 to 0.8.3
...
Bumps [rand](https://github.com/rust-random/rand ) from 0.8.2 to 0.8.3.
- [Release notes](https://github.com/rust-random/rand/releases )
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-27 13:26:04 +00:00
dependabot-preview[bot]
192d69d601
build(deps): bump log from 0.4.13 to 0.4.14
...
Bumps [log](https://github.com/rust-lang/log ) from 0.4.13 to 0.4.14.
- [Release notes](https://github.com/rust-lang/log/releases )
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/log/compare/0.4.13...0.4.14 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-27 12:48:52 +00:00
dependabot-preview[bot]
0655f25da4
build(deps): bump serde from 1.0.121 to 1.0.123
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.121 to 1.0.123.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.121...v1.0.123 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-26 10:49:12 +00:00
Rob Bradford
0c60fa8268
net_util: tests: Avoid trying to create TAP devices simultaneously
...
The unit tests ask the Linux kernel to generate a TAP device name on
demand by passing in a format string. I suspect, but haven't been able
to confirm that there might be a rare race that triggers when creating
lots of devices in a short period of time. This is appearing in our unit
test as the occassional flake of the test_tap_read() which although it
has successfully created the device it fails to set the IP address on it
when looking it back up by it's name.
Since this is the most frequent cause of failures on our CI use a lock
to ensure that multiple TAP devices are not created simultaneously.
Fixes : #2135
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-01-26 10:42:02 +01:00
dependabot-preview[bot]
fa5b5fd602
build(deps): bump serde from 1.0.120 to 1.0.121
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.120 to 1.0.121.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.120...v1.0.121 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-24 16:21:11 +00:00
dependabot-preview[bot]
79a2afe44e
build(deps): bump serde from 1.0.119 to 1.0.120
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.119 to 1.0.120.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.119...v1.0.120 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-19 08:19:23 +00:00
dependabot-preview[bot]
6b424b5f6b
build(deps): bump rand from 0.8.1 to 0.8.2
...
Bumps [rand](https://github.com/rust-random/rand ) from 0.8.1 to 0.8.2.
- [Release notes](https://github.com/rust-random/rand/releases )
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand/compare/0.8.1...0.8.2 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-13 10:41:29 +00:00
dependabot-preview[bot]
d26866e018
build(deps): bump libc from 0.2.81 to 0.2.82
...
Bumps [libc](https://github.com/rust-lang/libc ) from 0.2.81 to 0.2.82.
- [Release notes](https://github.com/rust-lang/libc/releases )
- [Commits](https://github.com/rust-lang/libc/compare/0.2.81...0.2.82 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-12 07:06:21 +00:00
dependabot-preview[bot]
ab456affb3
build(deps): bump log from 0.4.11 to 0.4.13
...
Bumps [log](https://github.com/rust-lang/log ) from 0.4.11 to 0.4.13.
- [Release notes](https://github.com/rust-lang/log/releases )
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/log/compare/0.4.11...0.4.13 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-11 12:49:34 +00:00
dependabot-preview[bot]
858f64b3dc
build(deps): bump rand from 0.8.0 to 0.8.1
...
Bumps [rand](https://github.com/rust-random/rand ) from 0.8.0 to 0.8.1.
- [Release notes](https://github.com/rust-random/rand/releases )
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand/compare/0.8.0...0.8.1 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-04 16:36:19 +00:00
Rob Bradford
a4134f6b25
net_util: Remove unit error from Result
...
error: this returns a `Result<_, ()>
--> net_util/src/mac.rs:68:5
|
68 | pub fn from_bytes(src: &[u8]) -> Result<MacAddr, ()> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `-D clippy::result-unit-err` implied by `-D warnings`
= help: use a custom Error type instead
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#result_unit_err
Replace with std::io::Error like other locations in the same file.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2021-01-04 13:46:37 +01:00
dependabot-preview[bot]
f9a3476016
build(deps): bump serde_json from 1.0.60 to 1.0.61
...
Bumps [serde_json](https://github.com/serde-rs/json ) from 1.0.60 to 1.0.61.
- [Release notes](https://github.com/serde-rs/json/releases )
- [Commits](https://github.com/serde-rs/json/compare/v1.0.60...v1.0.61 )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-01 11:12:19 +00:00
dependabot-preview[bot]
3074b178bd
build(deps): bump rand from 0.7.3 to 0.8.0
...
Bumps [rand](https://github.com/rust-random/rand ) from 0.7.3 to 0.8.0.
- [Release notes](https://github.com/rust-random/rand/releases )
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-random/rand/commits )
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-29 20:13:28 +00:00
Rob Bradford
385d734847
net_util: Add API for creating a Tap from an fd
...
Ultimately this will allow the creation of a virtio-net device that is
backed by a file descriptor.
This function ensures that the TAP device is correctly setup with
offloading and non-blocking.
Signed-off-by: Rob Bradford <robert.bradford@intel.com>
2020-12-17 22:51:30 +01:00