• Sebastian Siewior's avatar
    net/cpsw: redo rx skb allocation in rx path · b4727e69
    Sebastian Siewior authored
    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: default avatarMugunthan V N <mugunthanvnm@ti.com>
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b4727e69
cpsw.c 53.3 KB