openvswitch: export get_dp() API.
authorAndy Zhou <azhou@ovn.org>
Fri, 10 Nov 2017 20:09:41 +0000 (12:09 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 13 Nov 2017 01:37:07 +0000 (10:37 +0900)
Later patches will invoke get_dp() outside of datapath.c. Export it.

Signed-off-by: Andy Zhou <azhou@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/openvswitch/datapath.c
net/openvswitch/datapath.h

index 4d38ac0..6e09803 100644 (file)
@@ -142,35 +142,6 @@ static int queue_userspace_packet(struct datapath *dp, struct sk_buff *,
                                  const struct dp_upcall_info *,
                                  uint32_t cutlen);
 
-/* Must be called with rcu_read_lock. */
-static struct datapath *get_dp_rcu(struct net *net, int dp_ifindex)
-{
-       struct net_device *dev = dev_get_by_index_rcu(net, dp_ifindex);
-
-       if (dev) {
-               struct vport *vport = ovs_internal_dev_get_vport(dev);
-               if (vport)
-                       return vport->dp;
-       }
-
-       return NULL;
-}
-
-/* The caller must hold either ovs_mutex or rcu_read_lock to keep the
- * returned dp pointer valid.
- */
-static inline struct datapath *get_dp(struct net *net, int dp_ifindex)
-{
-       struct datapath *dp;
-
-       WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_ovsl_is_held());
-       rcu_read_lock();
-       dp = get_dp_rcu(net, dp_ifindex);
-       rcu_read_unlock();
-
-       return dp;
-}
-
 /* Must be called with rcu_read_lock or ovs_mutex. */
 const char *ovs_dp_name(const struct datapath *dp)
 {
index 4a104ef..954c4ed 100644 (file)
@@ -30,6 +30,7 @@
 #include "conntrack.h"
 #include "flow.h"
 #include "flow_table.h"
+#include "vport-internal_dev.h"
 
 #define DP_MAX_PORTS           USHRT_MAX
 #define DP_VPORT_HASH_BUCKETS  1024
@@ -190,6 +191,36 @@ static inline struct vport *ovs_vport_ovsl(const struct datapath *dp, int port_n
        return ovs_lookup_vport(dp, port_no);
 }
 
+/* Must be called with rcu_read_lock. */
+static inline struct datapath *get_dp_rcu(struct net *net, int dp_ifindex)
+{
+       struct net_device *dev = dev_get_by_index_rcu(net, dp_ifindex);
+
+       if (dev) {
+               struct vport *vport = ovs_internal_dev_get_vport(dev);
+
+               if (vport)
+                       return vport->dp;
+       }
+
+       return NULL;
+}
+
+/* The caller must hold either ovs_mutex or rcu_read_lock to keep the
+ * returned dp pointer valid.
+ */
+static inline struct datapath *get_dp(struct net *net, int dp_ifindex)
+{
+       struct datapath *dp;
+
+       WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_ovsl_is_held());
+       rcu_read_lock();
+       dp = get_dp_rcu(net, dp_ifindex);
+       rcu_read_unlock();
+
+       return dp;
+}
+
 extern struct notifier_block ovs_dp_device_notifier;
 extern struct genl_family dp_vport_genl_family;