projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
pinsched: Avoid uninitialized variable warning.
[openvswitch]
/
datapath
/
tunnel.c
diff --git
a/datapath/tunnel.c
b/datapath/tunnel.c
index aae3f3d911484b8f15474e1ac42a26dcb879aec5..1e402931e8f874cca1c64fb6c69e70bbb6d4981d 100644
(file)
--- a/
datapath/tunnel.c
+++ b/
datapath/tunnel.c
@@
-166,11
+166,11
@@
static unsigned int *find_port_pool(const struct tnl_mutable_config *mutable)
}
struct port_lookup_key {
}
struct port_lookup_key {
+ const struct tnl_mutable_config *mutable;
+ __be64 key;
u32 tunnel_type;
__be32 saddr;
__be32 daddr;
u32 tunnel_type;
__be32 saddr;
__be32 daddr;
- __be32 key;
- const struct tnl_mutable_config *mutable;
};
/*
};
/*
@@
-192,7
+192,8
@@
static int port_cmp(const struct tbl_node *node, void *target)
static u32 port_hash(struct port_lookup_key *k)
{
static u32 port_hash(struct port_lookup_key *k)
{
- return jhash_3words(k->key, k->saddr, k->daddr, k->tunnel_type);
+ u32 x = jhash_3words(k->saddr, k->daddr, k->tunnel_type, 0);
+ return jhash_2words(k->key >> 32, k->key, x);
}
static u32 mutable_hash(const struct tnl_mutable_config *mutable)
}
static u32 mutable_hash(const struct tnl_mutable_config *mutable)
@@
-247,7
+248,6
@@
static int add_port(struct vport *vport)
err = tbl_insert(port_table, &tnl_vport->tbl_node, mutable_hash(tnl_vport->mutable));
if (err) {
err = tbl_insert(port_table, &tnl_vport->tbl_node, mutable_hash(tnl_vport->mutable));
if (err) {
- (*find_port_pool(tnl_vport->mutable))--;
check_table_empty();
return err;
}
check_table_empty();
return err;
}
@@
-278,6
+278,7
@@
static int move_port(struct vport *vport, struct tnl_mutable_config *new_mutable
err = tbl_insert(port_table, &tnl_vport->tbl_node, hash);
if (err) {
err = tbl_insert(port_table, &tnl_vport->tbl_node, hash);
if (err) {
+ (*find_port_pool(tnl_vport->mutable))--;
check_table_empty();
return err;
}
check_table_empty();
return err;
}
@@
-305,7
+306,7
@@
static int del_port(struct vport *vport)
return 0;
}
return 0;
}
-struct vport *tnl_find_port(__be32 saddr, __be32 daddr, __be
32
key,
+struct vport *tnl_find_port(__be32 saddr, __be32 daddr, __be
64
key,
int tunnel_type,
const struct tnl_mutable_config **mutable)
{
int tunnel_type,
const struct tnl_mutable_config **mutable)
{
@@
-598,7
+599,7
@@
static void ipv6_build_icmp(struct sk_buff *skb, struct sk_buff *nskb,
#endif /* IPv6 */
bool tnl_frag_needed(struct vport *vport, const struct tnl_mutable_config *mutable,
#endif /* IPv6 */
bool tnl_frag_needed(struct vport *vport, const struct tnl_mutable_config *mutable,
- struct sk_buff *skb, unsigned int mtu, __be
32
flow_key)
+ struct sk_buff *skb, unsigned int mtu, __be
64
flow_key)
{
unsigned int eth_hdr_len = ETH_HLEN;
unsigned int total_length = 0, header_length = 0, payload_length;
{
unsigned int eth_hdr_len = ETH_HLEN;
unsigned int total_length = 0, header_length = 0, payload_length;
@@
-1044,7
+1045,7
@@
static struct sk_buff *handle_offloads(struct sk_buff *skb,
*/
if (skb_headroom(skb) < min_headroom) {
skb = check_headroom(skb, min_headroom);
*/
if (skb_headroom(skb) < min_headroom) {
skb = check_headroom(skb, min_headroom);
- if (
unlikely(IS_ERR(skb)
)) {
+ if (
IS_ERR(skb
)) {
err = PTR_ERR(skb);
goto error;
}
err = PTR_ERR(skb);
goto error;
}
@@
-1052,7
+1053,7
@@
static struct sk_buff *handle_offloads(struct sk_buff *skb,
nskb = skb_gso_segment(skb, 0);
kfree_skb(skb);
nskb = skb_gso_segment(skb, 0);
kfree_skb(skb);
- if (
unlikely(IS_ERR(nskb)
)) {
+ if (
IS_ERR(nskb
)) {
err = PTR_ERR(nskb);
goto error;
}
err = PTR_ERR(nskb);
goto error;
}
@@
-1060,7
+1061,7
@@
static struct sk_buff *handle_offloads(struct sk_buff *skb,
skb = nskb;
} else {
skb = check_headroom(skb, min_headroom);
skb = nskb;
} else {
skb = check_headroom(skb, min_headroom);
- if (
unlikely(IS_ERR(skb)
)) {
+ if (
IS_ERR(skb
)) {
err = PTR_ERR(skb);
goto error;
}
err = PTR_ERR(skb);
goto error;
}
@@
-1198,7
+1199,7
@@
int tnl_send(struct vport *vport, struct sk_buff *skb)
/* Offloading */
skb = handle_offloads(skb, mutable, rt);
/* Offloading */
skb = handle_offloads(skb, mutable, rt);
- if (
unlikely(IS_ERR(skb)
))
+ if (
IS_ERR(skb
))
goto error;
/* MTU */
goto error;
/* MTU */