mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-22 04:31:58 +08:00
mptcp: drop SK_RECLAIM_* macros
After commit 4890b686f4
("net: keep sk->sk_forward_alloc as small as
possible"), the MPTCP protocol is the last SK_RECLAIM_CHUNK and
SK_RECLAIM_THRESHOLD users.
Update the MPTCP reclaim schema to match the core/TCP one and drop the
mentioned macros. This additionally clean the MPTCP code a bit.
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4aaa1685f7
commit
d24141fe7b
@ -181,8 +181,8 @@ static void mptcp_rmem_uncharge(struct sock *sk, int size)
|
|||||||
reclaimable = msk->rmem_fwd_alloc - sk_unused_reserved_mem(sk);
|
reclaimable = msk->rmem_fwd_alloc - sk_unused_reserved_mem(sk);
|
||||||
|
|
||||||
/* see sk_mem_uncharge() for the rationale behind the following schema */
|
/* see sk_mem_uncharge() for the rationale behind the following schema */
|
||||||
if (unlikely(reclaimable >= SK_RECLAIM_THRESHOLD))
|
if (unlikely(reclaimable >= PAGE_SIZE))
|
||||||
__mptcp_rmem_reclaim(sk, SK_RECLAIM_CHUNK);
|
__mptcp_rmem_reclaim(sk, reclaimable);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mptcp_rfree(struct sk_buff *skb)
|
static void mptcp_rfree(struct sk_buff *skb)
|
||||||
@ -961,25 +961,6 @@ static bool mptcp_frag_can_collapse_to(const struct mptcp_sock *msk,
|
|||||||
df->data_seq + df->data_len == msk->write_seq;
|
df->data_seq + df->data_len == msk->write_seq;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __mptcp_mem_reclaim_partial(struct sock *sk)
|
|
||||||
{
|
|
||||||
int reclaimable = mptcp_sk(sk)->rmem_fwd_alloc - sk_unused_reserved_mem(sk);
|
|
||||||
|
|
||||||
lockdep_assert_held_once(&sk->sk_lock.slock);
|
|
||||||
|
|
||||||
if (reclaimable > (int)PAGE_SIZE)
|
|
||||||
__mptcp_rmem_reclaim(sk, reclaimable - 1);
|
|
||||||
|
|
||||||
sk_mem_reclaim(sk);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mptcp_mem_reclaim_partial(struct sock *sk)
|
|
||||||
{
|
|
||||||
mptcp_data_lock(sk);
|
|
||||||
__mptcp_mem_reclaim_partial(sk);
|
|
||||||
mptcp_data_unlock(sk);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dfrag_uncharge(struct sock *sk, int len)
|
static void dfrag_uncharge(struct sock *sk, int len)
|
||||||
{
|
{
|
||||||
sk_mem_uncharge(sk, len);
|
sk_mem_uncharge(sk, len);
|
||||||
@ -999,7 +980,6 @@ static void __mptcp_clean_una(struct sock *sk)
|
|||||||
{
|
{
|
||||||
struct mptcp_sock *msk = mptcp_sk(sk);
|
struct mptcp_sock *msk = mptcp_sk(sk);
|
||||||
struct mptcp_data_frag *dtmp, *dfrag;
|
struct mptcp_data_frag *dtmp, *dfrag;
|
||||||
bool cleaned = false;
|
|
||||||
u64 snd_una;
|
u64 snd_una;
|
||||||
|
|
||||||
/* on fallback we just need to ignore snd_una, as this is really
|
/* on fallback we just need to ignore snd_una, as this is really
|
||||||
@ -1022,7 +1002,6 @@ static void __mptcp_clean_una(struct sock *sk)
|
|||||||
}
|
}
|
||||||
|
|
||||||
dfrag_clear(sk, dfrag);
|
dfrag_clear(sk, dfrag);
|
||||||
cleaned = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dfrag = mptcp_rtx_head(sk);
|
dfrag = mptcp_rtx_head(sk);
|
||||||
@ -1044,7 +1023,6 @@ static void __mptcp_clean_una(struct sock *sk)
|
|||||||
dfrag->already_sent -= delta;
|
dfrag->already_sent -= delta;
|
||||||
|
|
||||||
dfrag_uncharge(sk, delta);
|
dfrag_uncharge(sk, delta);
|
||||||
cleaned = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* all retransmitted data acked, recovery completed */
|
/* all retransmitted data acked, recovery completed */
|
||||||
@ -1052,9 +1030,6 @@ static void __mptcp_clean_una(struct sock *sk)
|
|||||||
msk->recovery = false;
|
msk->recovery = false;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (cleaned && tcp_under_memory_pressure(sk))
|
|
||||||
__mptcp_mem_reclaim_partial(sk);
|
|
||||||
|
|
||||||
if (snd_una == READ_ONCE(msk->snd_nxt) &&
|
if (snd_una == READ_ONCE(msk->snd_nxt) &&
|
||||||
snd_una == READ_ONCE(msk->write_seq)) {
|
snd_una == READ_ONCE(msk->write_seq)) {
|
||||||
if (mptcp_timer_pending(sk) && !mptcp_data_fin_enabled(msk))
|
if (mptcp_timer_pending(sk) && !mptcp_data_fin_enabled(msk))
|
||||||
@ -1206,12 +1181,6 @@ static struct sk_buff *mptcp_alloc_tx_skb(struct sock *sk, struct sock *ssk, boo
|
|||||||
{
|
{
|
||||||
gfp_t gfp = data_lock_held ? GFP_ATOMIC : sk->sk_allocation;
|
gfp_t gfp = data_lock_held ? GFP_ATOMIC : sk->sk_allocation;
|
||||||
|
|
||||||
if (unlikely(tcp_under_memory_pressure(sk))) {
|
|
||||||
if (data_lock_held)
|
|
||||||
__mptcp_mem_reclaim_partial(sk);
|
|
||||||
else
|
|
||||||
mptcp_mem_reclaim_partial(sk);
|
|
||||||
}
|
|
||||||
return __mptcp_alloc_tx_skb(sk, ssk, gfp);
|
return __mptcp_alloc_tx_skb(sk, ssk, gfp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user