summaryrefslogtreecommitdiffstats
path: root/usr
diff options
context:
space:
mode:
authorSebastian Siewior <bigeasy@linutronix.de>2013-04-23 07:31:39 +0000
committerDavid S. Miller <davem@davemloft.net>2013-04-25 04:11:50 -0400
commitb4727e69b81b71c6e9696185091e8256d863f9be (patch)
tree6dc2536dbd5d1e53641f701605923d2301074a51 /usr
parentaef614e13dfbdd3b9ae44ad110159f75b9029bba (diff)
net/cpsw: redo rx skb allocation in rx path
In case that we run into OOM during the allocation of the new rx-skb we don't get one and we have one skb less than we used to have. If this continues to happen then we end up with no rx-skbs at all. This patch changes the following: - if we fail to allocate the new skb, then we treat the currently completed skb as the new one and so drop the currently received data. - instead of testing multiple times if the device is gone we rely one the status field which is set to -ENOSYS in case the channel is going down and incomplete requests are purged. cpdma_chan_stop() removes most of the packages with -ENOSYS. The currently active packet which is removed has the "tear down" bit set. So if that bit is set, we send ENOSYS as well otherwise we pass the status bits which are required to figure out which of the two possible just finished. Acked-by: Mugunthan V N <mugunthanvnm@ti.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'usr')
0 files changed, 0 insertions, 0 deletions