summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhayeswang <hayeswang@realtek.com>2014-03-06 22:04:37 -0500
committerVladislav Zhurba <vzhurba@nvidia.com>2018-02-01 16:58:00 -0500
commitf239ad1f5df97cf5949b2b521702d394dd88a5b3 (patch)
tree821826e5fb2d2171ca1b8de32fd982d7d1a9f210
parentd73be1442f5268a06917adcb5bc0f8cc77461aa5 (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.c3
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
1466find_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);