Submit all the rx buffers, even though a error occurs. Otherwise the buffers which are not submitted would be lost until next rtl_start_rx() is called. Besides, the fail buffer could be re-submitted later. Signed-off-by: Hayes Wang <hayeswang@xxxxxxxxxxx> --- drivers/net/usb/r8152.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index ad62994..5e0386f 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -1993,10 +1993,16 @@ static int rtl_start_rx(struct r8152 *tp) INIT_LIST_HEAD(&tp->rx_done); for (i = 0; i < RTL8152_MAX_RX; i++) { + int rr; + INIT_LIST_HEAD(&tp->rx_info[i].list); - ret = r8152_submit_rx(tp, &tp->rx_info[i], GFP_KERNEL); - if (ret) - break; + + rr = r8152_submit_rx(tp, &tp->rx_info[i], GFP_KERNEL); + if (rr) + netif_err(tp, rx_err, tp->netdev, + "Couldn't submit rx[%d], ret = %d\n", i, rr); + if (!ret) + ret = rr; } return ret; -- 1.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html