net: bundle all offloads in a single struct
The set_offload() argument list is already pretty long and we are going to introduce soon a bunch of additional offloads. Replace the offload arguments with a single struct and update all the relevant call-sites. No functional changes intended. Signed-off-by: Paolo Abeni <pabeni@redhat.com> Tested-by: Lei Yang <leiyang@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Message-ID: <a9d4dd043b8c71b791e9ff05e17ef06072d9714e.1758549625.git.pabeni@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
81e3121bef
commit
e5fd02d825
13 changed files with 59 additions and 49 deletions
|
|
@ -540,14 +540,13 @@ bool qemu_has_vnet_hdr_len(NetClientState *nc, int len)
|
|||
return nc->info->has_vnet_hdr_len(nc, len);
|
||||
}
|
||||
|
||||
void qemu_set_offload(NetClientState *nc, int csum, int tso4, int tso6,
|
||||
int ecn, int ufo, int uso4, int uso6)
|
||||
void qemu_set_offload(NetClientState *nc, const NetOffloads *ol)
|
||||
{
|
||||
if (!nc || !nc->info->set_offload) {
|
||||
return;
|
||||
}
|
||||
|
||||
nc->info->set_offload(nc, csum, tso4, tso6, ecn, ufo, uso4, uso6);
|
||||
nc->info->set_offload(nc, ol);
|
||||
}
|
||||
|
||||
int qemu_get_vnet_hdr_len(NetClientState *nc)
|
||||
|
|
|
|||
|
|
@ -366,8 +366,7 @@ static void netmap_set_vnet_hdr_len(NetClientState *nc, int len)
|
|||
}
|
||||
}
|
||||
|
||||
static void netmap_set_offload(NetClientState *nc, int csum, int tso4, int tso6,
|
||||
int ecn, int ufo, int uso4, int uso6)
|
||||
static void netmap_set_offload(NetClientState *nc, const NetOffloads *ol)
|
||||
{
|
||||
NetmapState *s = DO_UPCAST(NetmapState, nc, nc);
|
||||
|
||||
|
|
|
|||
|
|
@ -239,8 +239,7 @@ int tap_fd_set_vnet_be(int fd, int is_be)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
void tap_fd_set_offload(int fd, int csum, int tso4,
|
||||
int tso6, int ecn, int ufo, int uso4, int uso6)
|
||||
void tap_fd_set_offload(int fd, const NetOffloads *ol)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -244,8 +244,7 @@ int tap_fd_set_vnet_be(int fd, int is_be)
|
|||
abort();
|
||||
}
|
||||
|
||||
void tap_fd_set_offload(int fd, int csum, int tso4,
|
||||
int tso6, int ecn, int ufo, int uso4, int uso6)
|
||||
void tap_fd_set_offload(int fd, const NetOffloads *ol)
|
||||
{
|
||||
unsigned int offload = 0;
|
||||
|
||||
|
|
@ -254,20 +253,24 @@ void tap_fd_set_offload(int fd, int csum, int tso4,
|
|||
return;
|
||||
}
|
||||
|
||||
if (csum) {
|
||||
if (ol->csum) {
|
||||
offload |= TUN_F_CSUM;
|
||||
if (tso4)
|
||||
if (ol->tso4) {
|
||||
offload |= TUN_F_TSO4;
|
||||
if (tso6)
|
||||
}
|
||||
if (ol->tso6) {
|
||||
offload |= TUN_F_TSO6;
|
||||
if ((tso4 || tso6) && ecn)
|
||||
}
|
||||
if ((ol->tso4 || ol->tso6) && ol->ecn) {
|
||||
offload |= TUN_F_TSO_ECN;
|
||||
if (ufo)
|
||||
}
|
||||
if (ol->ufo) {
|
||||
offload |= TUN_F_UFO;
|
||||
if (uso4) {
|
||||
}
|
||||
if (ol->uso4) {
|
||||
offload |= TUN_F_USO4;
|
||||
}
|
||||
if (uso6) {
|
||||
if (ol->uso6) {
|
||||
offload |= TUN_F_USO6;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include "tap_int.h"
|
||||
#include "qemu/ctype.h"
|
||||
#include "qemu/cutils.h"
|
||||
#include "net/net.h"
|
||||
|
||||
#include <sys/ethernet.h>
|
||||
#include <sys/sockio.h>
|
||||
|
|
@ -240,8 +241,7 @@ int tap_fd_set_vnet_be(int fd, int is_be)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
void tap_fd_set_offload(int fd, int csum, int tso4,
|
||||
int tso6, int ecn, int ufo, int uso4, int uso6)
|
||||
void tap_fd_set_offload(int fd, const NetOffloads *ol)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,8 +66,7 @@ int tap_fd_set_vnet_be(int fd, int is_be)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
void tap_fd_set_offload(int fd, int csum, int tso4,
|
||||
int tso6, int ecn, int ufo, int uso4, int uso6)
|
||||
void tap_fd_set_offload(int fd, const NetOffloads *ol)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -285,15 +285,14 @@ static int tap_set_vnet_be(NetClientState *nc, bool is_be)
|
|||
return tap_fd_set_vnet_be(s->fd, is_be);
|
||||
}
|
||||
|
||||
static void tap_set_offload(NetClientState *nc, int csum, int tso4,
|
||||
int tso6, int ecn, int ufo, int uso4, int uso6)
|
||||
static void tap_set_offload(NetClientState *nc, const NetOffloads *ol)
|
||||
{
|
||||
TAPState *s = DO_UPCAST(TAPState, nc, nc);
|
||||
if (s->fd < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
tap_fd_set_offload(s->fd, csum, tso4, tso6, ecn, ufo, uso4, uso6);
|
||||
tap_fd_set_offload(s->fd, ol);
|
||||
}
|
||||
|
||||
static void tap_exit_notify(Notifier *notifier, void *data)
|
||||
|
|
@ -391,6 +390,7 @@ static TAPState *net_tap_fd_init(NetClientState *peer,
|
|||
int fd,
|
||||
int vnet_hdr)
|
||||
{
|
||||
NetOffloads ol = {};
|
||||
NetClientState *nc;
|
||||
TAPState *s;
|
||||
|
||||
|
|
@ -404,7 +404,7 @@ static TAPState *net_tap_fd_init(NetClientState *peer,
|
|||
s->has_ufo = tap_probe_has_ufo(s->fd);
|
||||
s->has_uso = tap_probe_has_uso(s->fd);
|
||||
s->enabled = true;
|
||||
tap_set_offload(&s->nc, 0, 0, 0, 0, 0, 0, 0);
|
||||
tap_set_offload(&s->nc, &ol);
|
||||
/*
|
||||
* Make sure host header length is set correctly in tap:
|
||||
* it might have been modified by another instance of qemu.
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#define NET_TAP_INT_H
|
||||
|
||||
#include "qapi/qapi-types-net.h"
|
||||
#include "net/net.h"
|
||||
|
||||
int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
|
||||
int vnet_hdr_required, int mq_required, Error **errp);
|
||||
|
|
@ -37,8 +38,7 @@ void tap_set_sndbuf(int fd, const NetdevTapOptions *tap, Error **errp);
|
|||
int tap_probe_vnet_hdr(int fd, Error **errp);
|
||||
int tap_probe_has_ufo(int fd);
|
||||
int tap_probe_has_uso(int fd);
|
||||
void tap_fd_set_offload(int fd, int csum, int tso4, int tso6, int ecn, int ufo,
|
||||
int uso4, int uso6);
|
||||
void tap_fd_set_offload(int fd, const NetOffloads *ol);
|
||||
void tap_fd_set_vnet_hdr_len(int fd, int len);
|
||||
int tap_fd_set_vnet_le(int fd, int vnet_is_le);
|
||||
int tap_fd_set_vnet_be(int fd, int vnet_is_be);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue