diff options
Diffstat (limited to 'net/openvswitch')
-rw-r--r-- | net/openvswitch/datapath.c | 10 | ||||
-rw-r--r-- | net/openvswitch/flow.c | 13 | ||||
-rw-r--r-- | net/openvswitch/vport.c | 3 |
3 files changed, 10 insertions, 16 deletions
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index 9dc537df46c4..e87a26506dba 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c | |||
@@ -158,11 +158,10 @@ static struct hlist_head *vport_hash_bucket(const struct datapath *dp, | |||
158 | struct vport *ovs_lookup_vport(const struct datapath *dp, u16 port_no) | 158 | struct vport *ovs_lookup_vport(const struct datapath *dp, u16 port_no) |
159 | { | 159 | { |
160 | struct vport *vport; | 160 | struct vport *vport; |
161 | struct hlist_node *n; | ||
162 | struct hlist_head *head; | 161 | struct hlist_head *head; |
163 | 162 | ||
164 | head = vport_hash_bucket(dp, port_no); | 163 | head = vport_hash_bucket(dp, port_no); |
165 | hlist_for_each_entry_rcu(vport, n, head, dp_hash_node) { | 164 | hlist_for_each_entry_rcu(vport, head, dp_hash_node) { |
166 | if (vport->port_no == port_no) | 165 | if (vport->port_no == port_no) |
167 | return vport; | 166 | return vport; |
168 | } | 167 | } |
@@ -1386,9 +1385,9 @@ static void __dp_destroy(struct datapath *dp) | |||
1386 | 1385 | ||
1387 | for (i = 0; i < DP_VPORT_HASH_BUCKETS; i++) { | 1386 | for (i = 0; i < DP_VPORT_HASH_BUCKETS; i++) { |
1388 | struct vport *vport; | 1387 | struct vport *vport; |
1389 | struct hlist_node *node, *n; | 1388 | struct hlist_node *n; |
1390 | 1389 | ||
1391 | hlist_for_each_entry_safe(vport, node, n, &dp->ports[i], dp_hash_node) | 1390 | hlist_for_each_entry_safe(vport, n, &dp->ports[i], dp_hash_node) |
1392 | if (vport->port_no != OVSP_LOCAL) | 1391 | if (vport->port_no != OVSP_LOCAL) |
1393 | ovs_dp_detach_port(vport); | 1392 | ovs_dp_detach_port(vport); |
1394 | } | 1393 | } |
@@ -1825,10 +1824,9 @@ static int ovs_vport_cmd_dump(struct sk_buff *skb, struct netlink_callback *cb) | |||
1825 | rcu_read_lock(); | 1824 | rcu_read_lock(); |
1826 | for (i = bucket; i < DP_VPORT_HASH_BUCKETS; i++) { | 1825 | for (i = bucket; i < DP_VPORT_HASH_BUCKETS; i++) { |
1827 | struct vport *vport; | 1826 | struct vport *vport; |
1828 | struct hlist_node *n; | ||
1829 | 1827 | ||
1830 | j = 0; | 1828 | j = 0; |
1831 | hlist_for_each_entry_rcu(vport, n, &dp->ports[i], dp_hash_node) { | 1829 | hlist_for_each_entry_rcu(vport, &dp->ports[i], dp_hash_node) { |
1832 | if (j >= skip && | 1830 | if (j >= skip && |
1833 | ovs_vport_cmd_fill_info(vport, skb, | 1831 | ovs_vport_cmd_fill_info(vport, skb, |
1834 | NETLINK_CB(cb->skb).portid, | 1832 | NETLINK_CB(cb->skb).portid, |
diff --git a/net/openvswitch/flow.c b/net/openvswitch/flow.c index c3294cebc4f2..20605ecf100b 100644 --- a/net/openvswitch/flow.c +++ b/net/openvswitch/flow.c | |||
@@ -299,10 +299,10 @@ void ovs_flow_tbl_destroy(struct flow_table *table) | |||
299 | for (i = 0; i < table->n_buckets; i++) { | 299 | for (i = 0; i < table->n_buckets; i++) { |
300 | struct sw_flow *flow; | 300 | struct sw_flow *flow; |
301 | struct hlist_head *head = flex_array_get(table->buckets, i); | 301 | struct hlist_head *head = flex_array_get(table->buckets, i); |
302 | struct hlist_node *node, *n; | 302 | struct hlist_node *n; |
303 | int ver = table->node_ver; | 303 | int ver = table->node_ver; |
304 | 304 | ||
305 | hlist_for_each_entry_safe(flow, node, n, head, hash_node[ver]) { | 305 | hlist_for_each_entry_safe(flow, n, head, hash_node[ver]) { |
306 | hlist_del_rcu(&flow->hash_node[ver]); | 306 | hlist_del_rcu(&flow->hash_node[ver]); |
307 | ovs_flow_free(flow); | 307 | ovs_flow_free(flow); |
308 | } | 308 | } |
@@ -332,7 +332,6 @@ struct sw_flow *ovs_flow_tbl_next(struct flow_table *table, u32 *bucket, u32 *la | |||
332 | { | 332 | { |
333 | struct sw_flow *flow; | 333 | struct sw_flow *flow; |
334 | struct hlist_head *head; | 334 | struct hlist_head *head; |
335 | struct hlist_node *n; | ||
336 | int ver; | 335 | int ver; |
337 | int i; | 336 | int i; |
338 | 337 | ||
@@ -340,7 +339,7 @@ struct sw_flow *ovs_flow_tbl_next(struct flow_table *table, u32 *bucket, u32 *la | |||
340 | while (*bucket < table->n_buckets) { | 339 | while (*bucket < table->n_buckets) { |
341 | i = 0; | 340 | i = 0; |
342 | head = flex_array_get(table->buckets, *bucket); | 341 | head = flex_array_get(table->buckets, *bucket); |
343 | hlist_for_each_entry_rcu(flow, n, head, hash_node[ver]) { | 342 | hlist_for_each_entry_rcu(flow, head, hash_node[ver]) { |
344 | if (i < *last) { | 343 | if (i < *last) { |
345 | i++; | 344 | i++; |
346 | continue; | 345 | continue; |
@@ -367,11 +366,10 @@ static void flow_table_copy_flows(struct flow_table *old, struct flow_table *new | |||
367 | for (i = 0; i < old->n_buckets; i++) { | 366 | for (i = 0; i < old->n_buckets; i++) { |
368 | struct sw_flow *flow; | 367 | struct sw_flow *flow; |
369 | struct hlist_head *head; | 368 | struct hlist_head *head; |
370 | struct hlist_node *n; | ||
371 | 369 | ||
372 | head = flex_array_get(old->buckets, i); | 370 | head = flex_array_get(old->buckets, i); |
373 | 371 | ||
374 | hlist_for_each_entry(flow, n, head, hash_node[old_ver]) | 372 | hlist_for_each_entry(flow, head, hash_node[old_ver]) |
375 | ovs_flow_tbl_insert(new, flow); | 373 | ovs_flow_tbl_insert(new, flow); |
376 | } | 374 | } |
377 | old->keep_flows = true; | 375 | old->keep_flows = true; |
@@ -766,14 +764,13 @@ struct sw_flow *ovs_flow_tbl_lookup(struct flow_table *table, | |||
766 | struct sw_flow_key *key, int key_len) | 764 | struct sw_flow_key *key, int key_len) |
767 | { | 765 | { |
768 | struct sw_flow *flow; | 766 | struct sw_flow *flow; |
769 | struct hlist_node *n; | ||
770 | struct hlist_head *head; | 767 | struct hlist_head *head; |
771 | u32 hash; | 768 | u32 hash; |
772 | 769 | ||
773 | hash = ovs_flow_hash(key, key_len); | 770 | hash = ovs_flow_hash(key, key_len); |
774 | 771 | ||
775 | head = find_bucket(table, hash); | 772 | head = find_bucket(table, hash); |
776 | hlist_for_each_entry_rcu(flow, n, head, hash_node[table->node_ver]) { | 773 | hlist_for_each_entry_rcu(flow, head, hash_node[table->node_ver]) { |
777 | 774 | ||
778 | if (flow->hash == hash && | 775 | if (flow->hash == hash && |
779 | !memcmp(&flow->key, key, key_len)) { | 776 | !memcmp(&flow->key, key, key_len)) { |
diff --git a/net/openvswitch/vport.c b/net/openvswitch/vport.c index 70af0bedbac4..ba717cc038b3 100644 --- a/net/openvswitch/vport.c +++ b/net/openvswitch/vport.c | |||
@@ -86,9 +86,8 @@ struct vport *ovs_vport_locate(struct net *net, const char *name) | |||
86 | { | 86 | { |
87 | struct hlist_head *bucket = hash_bucket(net, name); | 87 | struct hlist_head *bucket = hash_bucket(net, name); |
88 | struct vport *vport; | 88 | struct vport *vport; |
89 | struct hlist_node *node; | ||
90 | 89 | ||
91 | hlist_for_each_entry_rcu(vport, node, bucket, hash_node) | 90 | hlist_for_each_entry_rcu(vport, bucket, hash_node) |
92 | if (!strcmp(name, vport->ops->get_name(vport)) && | 91 | if (!strcmp(name, vport->ops->get_name(vport)) && |
93 | net_eq(ovs_dp_get_net(vport->dp), net)) | 92 | net_eq(ovs_dp_get_net(vport->dp), net)) |
94 | return vport; | 93 | return vport; |