projects
/
cascardo
/
ovs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
netdev-dpdk: vhost-user: Fix sending packets to queues not enabled by guest.
[cascardo/ovs.git]
/
datapath
/
vport.c
diff --git
a/datapath/vport.c
b/datapath/vport.c
index
0951cbb
..
7fd9858
100644
(file)
--- a/
datapath/vport.c
+++ b/
datapath/vport.c
@@
-113,7
+113,7
@@
static struct hlist_head *hash_bucket(const struct net *net, const char *name)
return &dev_table[hash & (VPORT_HASH_BUCKETS - 1)];
}
return &dev_table[hash & (VPORT_HASH_BUCKETS - 1)];
}
-int ovs_vport_ops_register(struct vport_ops *ops)
+int
__
ovs_vport_ops_register(struct vport_ops *ops)
{
int err = -EEXIST;
struct vport_ops *o;
{
int err = -EEXIST;
struct vport_ops *o;
@@
-129,7
+129,7
@@
errout:
ovs_unlock();
return err;
}
ovs_unlock();
return err;
}
-EXPORT_SYMBOL_GPL(ovs_vport_ops_register);
+EXPORT_SYMBOL_GPL(
__
ovs_vport_ops_register);
void ovs_vport_ops_unregister(struct vport_ops *ops)
{
void ovs_vport_ops_unregister(struct vport_ops *ops)
{
@@
-298,8
+298,8
@@
int ovs_vport_set_options(struct vport *vport, struct nlattr *options)
*
* @vport: vport to delete.
*
*
* @vport: vport to delete.
*
- * Detaches @vport from its datapath and destroys it.
It is possible to fail
- *
for reasons such as lack of memory. ovs_mutex must be
held.
+ * Detaches @vport from its datapath and destroys it.
ovs_mutex must be
+ * held.
*/
void ovs_vport_del(struct vport *vport)
{
*/
void ovs_vport_del(struct vport *vport)
{
@@
-494,6
+494,15
@@
int ovs_vport_receive(struct vport *vport, struct sk_buff *skb,
OVS_CB(skb)->input_vport = vport;
OVS_CB(skb)->mru = 0;
OVS_CB(skb)->input_vport = vport;
OVS_CB(skb)->mru = 0;
+ if (unlikely(dev_net(skb->dev) != ovs_dp_get_net(vport->dp))) {
+ u32 mark;
+
+ mark = skb->mark;
+ skb_scrub_packet(skb, true);
+ skb->mark = mark;
+ tun_info = NULL;
+ }
+
ovs_skb_init_inner_protocol(skb);
skb_clear_ovs_gso_cb(skb);
/* Extract flow from 'skb' into 'key'. */
ovs_skb_init_inner_protocol(skb);
skb_clear_ovs_gso_cb(skb);
/* Extract flow from 'skb' into 'key'. */