mirror of https://gitee.com/openkylin/linux.git
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. Signed-off-by: Hayes Wang <hayeswang@realtek.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0c3121fcf1
commit
5e2f7485d2
|
@ -1456,7 +1456,7 @@ static void rx_bottom(struct r8152 *tp)
|
||||||
skb = netdev_alloc_skb_ip_align(netdev, pkt_len);
|
skb = netdev_alloc_skb_ip_align(netdev, pkt_len);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
stats->rx_dropped++;
|
stats->rx_dropped++;
|
||||||
break;
|
goto find_next_rx;
|
||||||
}
|
}
|
||||||
memcpy(skb->data, rx_data, pkt_len);
|
memcpy(skb->data, rx_data, pkt_len);
|
||||||
skb_put(skb, pkt_len);
|
skb_put(skb, pkt_len);
|
||||||
|
@ -1465,6 +1465,7 @@ static void rx_bottom(struct r8152 *tp)
|
||||||
stats->rx_packets++;
|
stats->rx_packets++;
|
||||||
stats->rx_bytes += pkt_len;
|
stats->rx_bytes += pkt_len;
|
||||||
|
|
||||||
|
find_next_rx:
|
||||||
rx_data = rx_agg_align(rx_data + pkt_len + CRC_SIZE);
|
rx_data = rx_agg_align(rx_data + pkt_len + CRC_SIZE);
|
||||||
rx_desc = (struct rx_desc *)rx_data;
|
rx_desc = (struct rx_desc *)rx_data;
|
||||||
len_used = (int)(rx_data - (u8 *)agg->head);
|
len_used = (int)(rx_data - (u8 *)agg->head);
|
||||||
|
|
Loading…
Reference in New Issue