mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 03:00:53 +07:00
vxlan: combine VXLAN_FLOWBASED into VXLAN_COLLECT_METADATA
IFLA_VXLAN_FLOWBASED is useless without IFLA_VXLAN_COLLECT_METADATA, so combine them into single IFLA_VXLAN_COLLECT_METADATA flag. 'flowbased' doesn't convey real meaning of the vxlan tunnel mode. This mode can be used by routing, tc+bpf and ovs. Only ovs is strictly flow based, so 'collect metadata' is a better name for this tunnel mode. Signed-off-by: Alexei Starovoitov <ast@plumgrid.com> Acked-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e03c512841
commit
da8b43c0e1
@ -1141,7 +1141,7 @@ static void vxlan_rcv(struct vxlan_sock *vs, struct sk_buff *skb,
|
|||||||
union vxlan_addr *remote_ip;
|
union vxlan_addr *remote_ip;
|
||||||
|
|
||||||
/* For flow based devices, map all packets to VNI 0 */
|
/* For flow based devices, map all packets to VNI 0 */
|
||||||
if (vs->flags & VXLAN_F_FLOW_BASED)
|
if (vs->flags & VXLAN_F_COLLECT_METADATA)
|
||||||
vni = 0;
|
vni = 0;
|
||||||
|
|
||||||
/* Is this VNI defined? */
|
/* Is this VNI defined? */
|
||||||
@ -1183,7 +1183,7 @@ static void vxlan_rcv(struct vxlan_sock *vs, struct sk_buff *skb,
|
|||||||
|
|
||||||
skb_reset_network_header(skb);
|
skb_reset_network_header(skb);
|
||||||
/* In flow-based mode, GBP is carried in dst_metadata */
|
/* In flow-based mode, GBP is carried in dst_metadata */
|
||||||
if (!(vs->flags & VXLAN_F_FLOW_BASED))
|
if (!(vs->flags & VXLAN_F_COLLECT_METADATA))
|
||||||
skb->mark = md->gbp;
|
skb->mark = md->gbp;
|
||||||
|
|
||||||
if (oip6)
|
if (oip6)
|
||||||
@ -2129,7 +2129,7 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vxlan->flags & VXLAN_F_FLOW_BASED &&
|
if (vxlan->flags & VXLAN_F_COLLECT_METADATA &&
|
||||||
info && info->mode == IP_TUNNEL_INFO_TX) {
|
info && info->mode == IP_TUNNEL_INFO_TX) {
|
||||||
vxlan_xmit_one(skb, dev, NULL, false);
|
vxlan_xmit_one(skb, dev, NULL, false);
|
||||||
return NETDEV_TX_OK;
|
return NETDEV_TX_OK;
|
||||||
@ -2462,7 +2462,6 @@ static const struct nla_policy vxlan_policy[IFLA_VXLAN_MAX + 1] = {
|
|||||||
[IFLA_VXLAN_RSC] = { .type = NLA_U8 },
|
[IFLA_VXLAN_RSC] = { .type = NLA_U8 },
|
||||||
[IFLA_VXLAN_L2MISS] = { .type = NLA_U8 },
|
[IFLA_VXLAN_L2MISS] = { .type = NLA_U8 },
|
||||||
[IFLA_VXLAN_L3MISS] = { .type = NLA_U8 },
|
[IFLA_VXLAN_L3MISS] = { .type = NLA_U8 },
|
||||||
[IFLA_VXLAN_FLOWBASED] = { .type = NLA_U8 },
|
|
||||||
[IFLA_VXLAN_COLLECT_METADATA] = { .type = NLA_U8 },
|
[IFLA_VXLAN_COLLECT_METADATA] = { .type = NLA_U8 },
|
||||||
[IFLA_VXLAN_PORT] = { .type = NLA_U16 },
|
[IFLA_VXLAN_PORT] = { .type = NLA_U16 },
|
||||||
[IFLA_VXLAN_UDP_CSUM] = { .type = NLA_U8 },
|
[IFLA_VXLAN_UDP_CSUM] = { .type = NLA_U8 },
|
||||||
@ -2814,10 +2813,6 @@ static int vxlan_newlink(struct net *src_net, struct net_device *dev,
|
|||||||
if (data[IFLA_VXLAN_LIMIT])
|
if (data[IFLA_VXLAN_LIMIT])
|
||||||
conf.addrmax = nla_get_u32(data[IFLA_VXLAN_LIMIT]);
|
conf.addrmax = nla_get_u32(data[IFLA_VXLAN_LIMIT]);
|
||||||
|
|
||||||
if (data[IFLA_VXLAN_FLOWBASED] &&
|
|
||||||
nla_get_u8(data[IFLA_VXLAN_FLOWBASED]))
|
|
||||||
conf.flags |= VXLAN_F_FLOW_BASED;
|
|
||||||
|
|
||||||
if (data[IFLA_VXLAN_COLLECT_METADATA] &&
|
if (data[IFLA_VXLAN_COLLECT_METADATA] &&
|
||||||
nla_get_u8(data[IFLA_VXLAN_COLLECT_METADATA]))
|
nla_get_u8(data[IFLA_VXLAN_COLLECT_METADATA]))
|
||||||
conf.flags |= VXLAN_F_COLLECT_METADATA;
|
conf.flags |= VXLAN_F_COLLECT_METADATA;
|
||||||
@ -2903,7 +2898,7 @@ static size_t vxlan_get_size(const struct net_device *dev)
|
|||||||
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_RSC */
|
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_RSC */
|
||||||
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_L2MISS */
|
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_L2MISS */
|
||||||
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_L3MISS */
|
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_L3MISS */
|
||||||
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_FLOWBASED */
|
nla_total_size(sizeof(__u8)) + /* IFLA_VXLAN_COLLECT_METADATA */
|
||||||
nla_total_size(sizeof(__u32)) + /* IFLA_VXLAN_AGEING */
|
nla_total_size(sizeof(__u32)) + /* IFLA_VXLAN_AGEING */
|
||||||
nla_total_size(sizeof(__u32)) + /* IFLA_VXLAN_LIMIT */
|
nla_total_size(sizeof(__u32)) + /* IFLA_VXLAN_LIMIT */
|
||||||
nla_total_size(sizeof(struct ifla_vxlan_port_range)) +
|
nla_total_size(sizeof(struct ifla_vxlan_port_range)) +
|
||||||
@ -2970,8 +2965,8 @@ static int vxlan_fill_info(struct sk_buff *skb, const struct net_device *dev)
|
|||||||
!!(vxlan->flags & VXLAN_F_L2MISS)) ||
|
!!(vxlan->flags & VXLAN_F_L2MISS)) ||
|
||||||
nla_put_u8(skb, IFLA_VXLAN_L3MISS,
|
nla_put_u8(skb, IFLA_VXLAN_L3MISS,
|
||||||
!!(vxlan->flags & VXLAN_F_L3MISS)) ||
|
!!(vxlan->flags & VXLAN_F_L3MISS)) ||
|
||||||
nla_put_u8(skb, IFLA_VXLAN_FLOWBASED,
|
nla_put_u8(skb, IFLA_VXLAN_COLLECT_METADATA,
|
||||||
!!(vxlan->flags & VXLAN_F_FLOW_BASED)) ||
|
!!(vxlan->flags & VXLAN_F_COLLECT_METADATA)) ||
|
||||||
nla_put_u32(skb, IFLA_VXLAN_AGEING, vxlan->cfg.age_interval) ||
|
nla_put_u32(skb, IFLA_VXLAN_AGEING, vxlan->cfg.age_interval) ||
|
||||||
nla_put_u32(skb, IFLA_VXLAN_LIMIT, vxlan->cfg.addrmax) ||
|
nla_put_u32(skb, IFLA_VXLAN_LIMIT, vxlan->cfg.addrmax) ||
|
||||||
nla_put_be16(skb, IFLA_VXLAN_PORT, vxlan->cfg.dst_port) ||
|
nla_put_be16(skb, IFLA_VXLAN_PORT, vxlan->cfg.dst_port) ||
|
||||||
|
@ -181,7 +181,6 @@ struct vxlan_dev {
|
|||||||
#define VXLAN_F_GBP 0x800
|
#define VXLAN_F_GBP 0x800
|
||||||
#define VXLAN_F_REMCSUM_NOPARTIAL 0x1000
|
#define VXLAN_F_REMCSUM_NOPARTIAL 0x1000
|
||||||
#define VXLAN_F_COLLECT_METADATA 0x2000
|
#define VXLAN_F_COLLECT_METADATA 0x2000
|
||||||
#define VXLAN_F_FLOW_BASED 0x4000
|
|
||||||
|
|
||||||
/* Flags that are used in the receive path. These flags must match in
|
/* Flags that are used in the receive path. These flags must match in
|
||||||
* order for a socket to be shareable
|
* order for a socket to be shareable
|
||||||
@ -190,8 +189,7 @@ struct vxlan_dev {
|
|||||||
VXLAN_F_UDP_ZERO_CSUM6_RX | \
|
VXLAN_F_UDP_ZERO_CSUM6_RX | \
|
||||||
VXLAN_F_REMCSUM_RX | \
|
VXLAN_F_REMCSUM_RX | \
|
||||||
VXLAN_F_REMCSUM_NOPARTIAL | \
|
VXLAN_F_REMCSUM_NOPARTIAL | \
|
||||||
VXLAN_F_COLLECT_METADATA | \
|
VXLAN_F_COLLECT_METADATA)
|
||||||
VXLAN_F_FLOW_BASED)
|
|
||||||
|
|
||||||
struct net_device *vxlan_dev_create(struct net *net, const char *name,
|
struct net_device *vxlan_dev_create(struct net *net, const char *name,
|
||||||
u8 name_assign_type, struct vxlan_config *conf);
|
u8 name_assign_type, struct vxlan_config *conf);
|
||||||
|
@ -382,7 +382,6 @@ enum {
|
|||||||
IFLA_VXLAN_REMCSUM_RX,
|
IFLA_VXLAN_REMCSUM_RX,
|
||||||
IFLA_VXLAN_GBP,
|
IFLA_VXLAN_GBP,
|
||||||
IFLA_VXLAN_REMCSUM_NOPARTIAL,
|
IFLA_VXLAN_REMCSUM_NOPARTIAL,
|
||||||
IFLA_VXLAN_FLOWBASED,
|
|
||||||
IFLA_VXLAN_COLLECT_METADATA,
|
IFLA_VXLAN_COLLECT_METADATA,
|
||||||
__IFLA_VXLAN_MAX
|
__IFLA_VXLAN_MAX
|
||||||
};
|
};
|
||||||
|
@ -90,7 +90,7 @@ static struct vport *vxlan_tnl_create(const struct vport_parms *parms)
|
|||||||
int err;
|
int err;
|
||||||
struct vxlan_config conf = {
|
struct vxlan_config conf = {
|
||||||
.no_share = true,
|
.no_share = true,
|
||||||
.flags = VXLAN_F_FLOW_BASED | VXLAN_F_COLLECT_METADATA,
|
.flags = VXLAN_F_COLLECT_METADATA,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!options) {
|
if (!options) {
|
||||||
|
Loading…
Reference in New Issue
Block a user