|
@@ -1695,6 +1695,12 @@ static inline void sk_set_txhash(struct sock *sk)
|
|
|
sk->sk_txhash = 1;
|
|
|
}
|
|
|
|
|
|
+static inline void sk_rethink_txhash(struct sock *sk)
|
|
|
+{
|
|
|
+ if (sk->sk_txhash)
|
|
|
+ sk_set_txhash(sk);
|
|
|
+}
|
|
|
+
|
|
|
static inline struct dst_entry *
|
|
|
__sk_dst_get(struct sock *sk)
|
|
|
{
|
|
@@ -1719,6 +1725,8 @@ static inline void dst_negative_advice(struct sock *sk)
|
|
|
{
|
|
|
struct dst_entry *ndst, *dst = __sk_dst_get(sk);
|
|
|
|
|
|
+ sk_rethink_txhash(sk);
|
|
|
+
|
|
|
if (dst && dst->ops->negative_advice) {
|
|
|
ndst = dst->ops->negative_advice(dst);
|
|
|
|