diff options
author | Daniel Borkmann <dborkman@redhat.com> | 2014-01-15 16:25:35 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-01-16 16:17:11 -0800 |
commit | 87a2fd286adf35a87cf6cb30fa80a0726eb74f76 (patch) | |
tree | 0510e7dda15901deb3f4432f41c48539f40baf8c /net/phonet/socket.c | |
parent | 902fefb82ef72a50c78cb4a20cc954b037a98d1c (diff) |
packet: don't unconditionally schedule() in case of MSG_DONTWAIT
In tpacket_snd(), when we've discovered a first frame that is
not in status TP_STATUS_SEND_REQUEST, and return a NULL buffer,
we exit the send routine in case of MSG_DONTWAIT, since we've
finished traversing the mmaped send ring buffer and don't care
about pending frames.
While doing so, we still unconditionally call an expensive
schedule() in the packet_current_frame() "error" path, which
is unnecessary in this case since it's enough to just quit
the function.
Also, in case MSG_DONTWAIT is not set, we should rather test
for need_resched() first and do schedule() only if necessary
since meanwhile pending frames could already have finished
processing and called skb destructor.
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/phonet/socket.c')
0 files changed, 0 insertions, 0 deletions