···142142 const struct dp_upcall_info *,143143 uint32_t cutlen);144144145145-/* Must be called with rcu_read_lock. */146146-static struct datapath *get_dp_rcu(struct net *net, int dp_ifindex)147147-{148148- struct net_device *dev = dev_get_by_index_rcu(net, dp_ifindex);149149-150150- if (dev) {151151- struct vport *vport = ovs_internal_dev_get_vport(dev);152152- if (vport)153153- return vport->dp;154154- }155155-156156- return NULL;157157-}158158-159159-/* The caller must hold either ovs_mutex or rcu_read_lock to keep the160160- * returned dp pointer valid.161161- */162162-static inline struct datapath *get_dp(struct net *net, int dp_ifindex)163163-{164164- struct datapath *dp;165165-166166- WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_ovsl_is_held());167167- rcu_read_lock();168168- dp = get_dp_rcu(net, dp_ifindex);169169- rcu_read_unlock();170170-171171- return dp;172172-}173173-174145/* Must be called with rcu_read_lock or ovs_mutex. */175146const char *ovs_dp_name(const struct datapath *dp)176147{
+31
net/openvswitch/datapath.h
···3030#include "conntrack.h"3131#include "flow.h"3232#include "flow_table.h"3333+#include "vport-internal_dev.h"33343435#define DP_MAX_PORTS USHRT_MAX3536#define DP_VPORT_HASH_BUCKETS 1024···189188{190189 ASSERT_OVSL();191190 return ovs_lookup_vport(dp, port_no);191191+}192192+193193+/* Must be called with rcu_read_lock. */194194+static inline struct datapath *get_dp_rcu(struct net *net, int dp_ifindex)195195+{196196+ struct net_device *dev = dev_get_by_index_rcu(net, dp_ifindex);197197+198198+ if (dev) {199199+ struct vport *vport = ovs_internal_dev_get_vport(dev);200200+201201+ if (vport)202202+ return vport->dp;203203+ }204204+205205+ return NULL;206206+}207207+208208+/* The caller must hold either ovs_mutex or rcu_read_lock to keep the209209+ * returned dp pointer valid.210210+ */211211+static inline struct datapath *get_dp(struct net *net, int dp_ifindex)212212+{213213+ struct datapath *dp;214214+215215+ WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_ovsl_is_held());216216+ rcu_read_lock();217217+ dp = get_dp_rcu(net, dp_ifindex);218218+ rcu_read_unlock();219219+220220+ return dp;192221}193222194223extern struct notifier_block ovs_dp_device_notifier;