net: Introduce sk_tx_queue_mapping
Introduce sk_tx_queue_mapping; and functions that set, test and get this value. Reset sk_tx_queue_mapping to -1 whenever the dst cache is set/reset, and in socket alloc. Setting txq to -1 and using valid txq=<0 to n-1> allows the tx path to use the value of sk_tx_queue_mapping directly instead of subtracting 1 on every tx. Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
748879776e
commit
e022f0b4a0
@@ -357,6 +357,7 @@ struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie)
|
||||
struct dst_entry *dst = sk->sk_dst_cache;
|
||||
|
||||
if (dst && dst->obsolete && dst->ops->check(dst, cookie) == NULL) {
|
||||
sk_tx_queue_clear(sk);
|
||||
sk->sk_dst_cache = NULL;
|
||||
dst_release(dst);
|
||||
return NULL;
|
||||
@@ -953,7 +954,8 @@ static void sock_copy(struct sock *nsk, const struct sock *osk)
|
||||
void *sptr = nsk->sk_security;
|
||||
#endif
|
||||
BUILD_BUG_ON(offsetof(struct sock, sk_copy_start) !=
|
||||
sizeof(osk->sk_node) + sizeof(osk->sk_refcnt));
|
||||
sizeof(osk->sk_node) + sizeof(osk->sk_refcnt) +
|
||||
sizeof(osk->sk_tx_queue_mapping));
|
||||
memcpy(&nsk->sk_copy_start, &osk->sk_copy_start,
|
||||
osk->sk_prot->obj_size - offsetof(struct sock, sk_copy_start));
|
||||
#ifdef CONFIG_SECURITY_NETWORK
|
||||
@@ -997,6 +999,7 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority,
|
||||
|
||||
if (!try_module_get(prot->owner))
|
||||
goto out_free_sec;
|
||||
sk_tx_queue_clear(sk);
|
||||
}
|
||||
|
||||
return sk;
|
||||
|
Reference in New Issue
Block a user