kernel/wr-nic: fix a memory leakage under heavy load
When the switch is loaded, some PTP outgoing frames get discarded, so we
never get back the timestamp interrupt. By round-robin'ing the slots,
we get back to the "busy" one, which holds an skb structure that must be
released.
Without this freeing, the skb remains in the output queue of the
socket, and after a while we get EAGAIN in send() because the buffer
is full (400 frames, more or less). And the ptp port is stuck until we
reopen the socket.
This diagnosis exposed the fact that it's not an overflow of pending
descriptors, so I change the message from
descriptor overflow: tx timestamp pending
to
discarding tx frame that got no timestamp
Finally, this is pr_warn, not pr_err as we now know it's expected.
Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Showing
Please
register
or
sign in
to comment