diff options
author | hayeswang <hayeswang@realtek.com> | 2014-03-06 22:04:37 -0500 |
---|---|---|
committer | Vladislav Zhurba <vzhurba@nvidia.com> | 2018-02-01 16:58:00 -0500 |
commit | f239ad1f5df97cf5949b2b521702d394dd88a5b3 (patch) | |
tree | 821826e5fb2d2171ca1b8de32fd982d7d1a9f210 | |
parent | d73be1442f5268a06917adcb5bc0f8cc77461aa5 (diff) |
r8152: calculate the dropped packets for rx
Continue dealing with the remain rx packets, even though the allocation
of the skb fail. This could calculate the correct dropped packets.
Change-Id: Ic7fbe722e41b379f0bcf892356c9b00eacae82dc
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Aly Hirani <ahirani@nvidia.com>
Reviewed-on: http://git-master/r/390295
(cherry picked from commit 36eb4f48ca9366207524859b84e439c8fb0ed6f2)
Reviewed-on: http://git-master/r/396897
Reviewed-by: Preetham Chandru <pchandru@nvidia.com>
Tested-by: Preetham Chandru <pchandru@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
-rw-r--r-- | drivers/net/usb/r8152_shield.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/usb/r8152_shield.c b/drivers/net/usb/r8152_shield.c index b9811a971..9c3ca4c38 100644 --- a/drivers/net/usb/r8152_shield.c +++ b/drivers/net/usb/r8152_shield.c | |||
@@ -1454,7 +1454,7 @@ static void rx_bottom(struct r8152 *tp) | |||
1454 | skb = netdev_alloc_skb_ip_align(netdev, pkt_len); | 1454 | skb = netdev_alloc_skb_ip_align(netdev, pkt_len); |
1455 | if (!skb) { | 1455 | if (!skb) { |
1456 | stats->rx_dropped++; | 1456 | stats->rx_dropped++; |
1457 | break; | 1457 | goto find_next_rx; |
1458 | } | 1458 | } |
1459 | memcpy(skb->data, rx_data, pkt_len); | 1459 | memcpy(skb->data, rx_data, pkt_len); |
1460 | skb_put(skb, pkt_len); | 1460 | skb_put(skb, pkt_len); |
@@ -1463,6 +1463,7 @@ static void rx_bottom(struct r8152 *tp) | |||
1463 | stats->rx_packets++; | 1463 | stats->rx_packets++; |
1464 | stats->rx_bytes += pkt_len; | 1464 | stats->rx_bytes += pkt_len; |
1465 | 1465 | ||
1466 | find_next_rx: | ||
1466 | rx_data = rx_agg_align(rx_data + pkt_len + CRC_SIZE); | 1467 | rx_data = rx_agg_align(rx_data + pkt_len + CRC_SIZE); |
1467 | rx_desc = (struct rx_desc *)rx_data; | 1468 | rx_desc = (struct rx_desc *)rx_data; |
1468 | len_used = (int)(rx_data - (u8 *)agg->head); | 1469 | len_used = (int)(rx_data - (u8 *)agg->head); |