Lines Matching refs:dst

108 u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old);
118 static inline bool dst_metrics_read_only(const struct dst_entry *dst) in dst_metrics_read_only() argument
120 return dst->_metrics & DST_METRICS_READ_ONLY; in dst_metrics_read_only()
123 static inline void dst_metrics_set_force_overwrite(struct dst_entry *dst) in dst_metrics_set_force_overwrite() argument
125 dst->_metrics |= DST_METRICS_FORCE_OVERWRITE; in dst_metrics_set_force_overwrite()
128 void __dst_destroy_metrics_generic(struct dst_entry *dst, unsigned long old);
130 static inline void dst_destroy_metrics_generic(struct dst_entry *dst) in dst_destroy_metrics_generic() argument
132 unsigned long val = dst->_metrics; in dst_destroy_metrics_generic()
134 __dst_destroy_metrics_generic(dst, val); in dst_destroy_metrics_generic()
137 static inline u32 *dst_metrics_write_ptr(struct dst_entry *dst) in dst_metrics_write_ptr() argument
139 unsigned long p = dst->_metrics; in dst_metrics_write_ptr()
144 return dst->ops->cow_metrics(dst, p); in dst_metrics_write_ptr()
151 static inline void dst_init_metrics(struct dst_entry *dst, in dst_init_metrics() argument
155 dst->_metrics = ((unsigned long) src_metrics) | in dst_init_metrics()
170 static inline u32 *dst_metrics_ptr(struct dst_entry *dst) in dst_metrics_ptr() argument
172 return DST_METRICS_PTR(dst); in dst_metrics_ptr()
176 dst_metric_raw(const struct dst_entry *dst, const int metric) in dst_metric_raw() argument
178 u32 *p = DST_METRICS_PTR(dst); in dst_metric_raw()
184 dst_metric(const struct dst_entry *dst, const int metric) in dst_metric() argument
189 return dst_metric_raw(dst, metric); in dst_metric()
193 dst_metric_advmss(const struct dst_entry *dst) in dst_metric_advmss() argument
195 u32 advmss = dst_metric_raw(dst, RTAX_ADVMSS); in dst_metric_advmss()
198 advmss = dst->ops->default_advmss(dst); in dst_metric_advmss()
203 static inline void dst_metric_set(struct dst_entry *dst, int metric, u32 val) in dst_metric_set() argument
205 u32 *p = dst_metrics_write_ptr(dst); in dst_metric_set()
212 dst_feature(const struct dst_entry *dst, u32 feature) in dst_feature() argument
214 return dst_metric(dst, RTAX_FEATURES) & feature; in dst_feature()
217 static inline u32 dst_mtu(const struct dst_entry *dst) in dst_mtu() argument
219 return dst->ops->mtu(dst); in dst_mtu()
223 static inline unsigned long dst_metric_rtt(const struct dst_entry *dst, int metric) in dst_metric_rtt() argument
225 return msecs_to_jiffies(dst_metric(dst, metric)); in dst_metric_rtt()
229 dst_allfrag(const struct dst_entry *dst) in dst_allfrag() argument
231 int ret = dst_feature(dst, RTAX_FEATURE_ALLFRAG); in dst_allfrag()
236 dst_metric_locked(const struct dst_entry *dst, int metric) in dst_metric_locked() argument
238 return dst_metric(dst, RTAX_LOCK) & (1<<metric); in dst_metric_locked()
241 static inline void dst_hold(struct dst_entry *dst) in dst_hold() argument
248 atomic_inc(&dst->__refcnt); in dst_hold()
251 static inline void dst_use(struct dst_entry *dst, unsigned long time) in dst_use() argument
253 dst_hold(dst); in dst_use()
254 dst->__use++; in dst_use()
255 dst->lastuse = time; in dst_use()
258 static inline void dst_use_noref(struct dst_entry *dst, unsigned long time) in dst_use_noref() argument
260 dst->__use++; in dst_use_noref()
261 dst->lastuse = time; in dst_use_noref()
264 static inline struct dst_entry *dst_clone(struct dst_entry *dst) in dst_clone() argument
266 if (dst) in dst_clone()
267 atomic_inc(&dst->__refcnt); in dst_clone()
268 return dst; in dst_clone()
271 void dst_release(struct dst_entry *dst);
322 static inline bool dst_hold_safe(struct dst_entry *dst) in dst_hold_safe() argument
324 if (dst->flags & DST_NOCACHE) in dst_hold_safe()
325 return atomic_inc_not_zero(&dst->__refcnt); in dst_hold_safe()
326 dst_hold(dst); in dst_hold_safe()
339 struct dst_entry *dst = skb_dst(skb); in skb_dst_force_safe() local
341 if (!dst_hold_safe(dst)) in skb_dst_force_safe()
342 dst = NULL; in skb_dst_force_safe()
344 skb->_skb_refdst = (unsigned long)dst; in skb_dst_force_safe()
410 void __dst_free(struct dst_entry *dst);
411 struct dst_entry *dst_destroy(struct dst_entry *dst);
413 static inline void dst_free(struct dst_entry *dst) in dst_free() argument
415 if (dst->obsolete > 0) in dst_free()
417 if (!atomic_read(&dst->__refcnt)) { in dst_free()
418 dst = dst_destroy(dst); in dst_free()
419 if (!dst) in dst_free()
422 __dst_free(dst); in dst_free()
427 struct dst_entry *dst = container_of(head, struct dst_entry, rcu_head); in dst_rcu_free() local
428 dst_free(dst); in dst_rcu_free()
431 static inline void dst_confirm(struct dst_entry *dst) in dst_confirm() argument
433 dst->pending_confirm = 1; in dst_confirm()
436 static inline int dst_neigh_output(struct dst_entry *dst, struct neighbour *n, in dst_neigh_output() argument
441 if (dst->pending_confirm) { in dst_neigh_output()
444 dst->pending_confirm = 0; in dst_neigh_output()
457 static inline struct neighbour *dst_neigh_lookup(const struct dst_entry *dst, const void *daddr) in dst_neigh_lookup() argument
459 struct neighbour *n = dst->ops->neigh_lookup(dst, NULL, daddr); in dst_neigh_lookup()
463 static inline struct neighbour *dst_neigh_lookup_skb(const struct dst_entry *dst, in dst_neigh_lookup_skb() argument
466 struct neighbour *n = dst->ops->neigh_lookup(dst, skb, NULL); in dst_neigh_lookup_skb()
472 struct dst_entry *dst = skb_dst(skb); in dst_link_failure() local
473 if (dst && dst->ops && dst->ops->link_failure) in dst_link_failure()
474 dst->ops->link_failure(skb); in dst_link_failure()
477 static inline void dst_set_expires(struct dst_entry *dst, int timeout) in dst_set_expires() argument
484 if (dst->expires == 0 || time_before(expires, dst->expires)) in dst_set_expires()
485 dst->expires = expires; in dst_set_expires()
504 static inline struct dst_entry *dst_check(struct dst_entry *dst, u32 cookie) in dst_check() argument
506 if (dst->obsolete) in dst_check()
507 dst = dst->ops->check(dst, cookie); in dst_check()
508 return dst; in dst_check()
539 static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst) in dst_xfrm() argument
554 static inline struct xfrm_state *dst_xfrm(const struct dst_entry *dst) in dst_xfrm() argument
556 return dst->xfrm; in dst_xfrm()