OpenWrt – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | --- a/drivers/net/ethernet/korina.c |
2 | +++ b/drivers/net/ethernet/korina.c |
||
3 | @@ -363,59 +363,60 @@ static int korina_rx(struct net_device * |
||
4 | if ((KORINA_RBSIZE - (u32)DMA_COUNT(rd->control)) == 0) |
||
5 | break; |
||
6 | |||
7 | - /* Update statistics counters */ |
||
8 | - if (devcs & ETH_RX_CRC) |
||
9 | - dev->stats.rx_crc_errors++; |
||
10 | - if (devcs & ETH_RX_LOR) |
||
11 | - dev->stats.rx_length_errors++; |
||
12 | - if (devcs & ETH_RX_LE) |
||
13 | - dev->stats.rx_length_errors++; |
||
14 | - if (devcs & ETH_RX_OVR) |
||
15 | - dev->stats.rx_fifo_errors++; |
||
16 | - if (devcs & ETH_RX_CV) |
||
17 | - dev->stats.rx_frame_errors++; |
||
18 | - if (devcs & ETH_RX_CES) |
||
19 | - dev->stats.rx_length_errors++; |
||
20 | - if (devcs & ETH_RX_MP) |
||
21 | - dev->stats.multicast++; |
||
22 | + /* check that this is a whole packet |
||
23 | + * WARNING: DMA_FD bit incorrectly set |
||
24 | + * in Rc32434 (errata ref #077) */ |
||
25 | + if (!(devcs & ETH_RX_LD)) |
||
26 | + goto next; |
||
27 | |||
28 | - if ((devcs & ETH_RX_LD) != ETH_RX_LD) { |
||
29 | - /* check that this is a whole packet |
||
30 | - * WARNING: DMA_FD bit incorrectly set |
||
31 | - * in Rc32434 (errata ref #077) */ |
||
32 | + if (!(devcs & ETH_RX_ROK)) { |
||
33 | + /* Update statistics counters */ |
||
34 | dev->stats.rx_errors++; |
||
35 | dev->stats.rx_dropped++; |
||
36 | - } else if ((devcs & ETH_RX_ROK)) { |
||
37 | - pkt_len = RCVPKT_LENGTH(devcs); |
||
38 | + if (devcs & ETH_RX_CRC) |
||
39 | + dev->stats.rx_crc_errors++; |
||
40 | + if (devcs & ETH_RX_LE) |
||
41 | + dev->stats.rx_length_errors++; |
||
42 | + if (devcs & ETH_RX_OVR) |
||
43 | + dev->stats.rx_fifo_errors++; |
||
44 | + if (devcs & ETH_RX_CV) |
||
45 | + dev->stats.rx_frame_errors++; |
||
46 | + if (devcs & ETH_RX_CES) |
||
47 | + dev->stats.rx_frame_errors++; |
||
48 | |||
49 | - /* must be the (first and) last |
||
50 | - * descriptor then */ |
||
51 | - pkt_buf = (u8 *)lp->rx_skb[lp->rx_next_done]->data; |
||
52 | - |
||
53 | - /* invalidate the cache */ |
||
54 | - dma_cache_inv((unsigned long)pkt_buf, pkt_len - 4); |
||
55 | - |
||
56 | - /* Malloc up new buffer. */ |
||
57 | - skb_new = netdev_alloc_skb_ip_align(dev, KORINA_RBSIZE); |
||
58 | - |
||
59 | - if (!skb_new) |
||
60 | - break; |
||
61 | - /* Do not count the CRC */ |
||
62 | - skb_put(skb, pkt_len - 4); |
||
63 | - skb->protocol = eth_type_trans(skb, dev); |
||
64 | - |
||
65 | - /* Pass the packet to upper layers */ |
||
66 | - netif_receive_skb(skb); |
||
67 | - dev->stats.rx_packets++; |
||
68 | - dev->stats.rx_bytes += pkt_len; |
||
69 | - |
||
70 | - /* Update the mcast stats */ |
||
71 | - if (devcs & ETH_RX_MP) |
||
72 | - dev->stats.multicast++; |
||
73 | - |
||
74 | - lp->rx_skb[lp->rx_next_done] = skb_new; |
||
75 | + goto next; |
||
76 | } |
||
77 | |||
78 | + pkt_len = RCVPKT_LENGTH(devcs); |
||
79 | + |
||
80 | + /* must be the (first and) last |
||
81 | + * descriptor then */ |
||
82 | + pkt_buf = (u8 *)lp->rx_skb[lp->rx_next_done]->data; |
||
83 | + |
||
84 | + /* invalidate the cache */ |
||
85 | + dma_cache_inv((unsigned long)pkt_buf, pkt_len - 4); |
||
86 | + |
||
87 | + /* Malloc up new buffer. */ |
||
88 | + skb_new = netdev_alloc_skb_ip_align(dev, KORINA_RBSIZE); |
||
89 | + |
||
90 | + if (!skb_new) |
||
91 | + break; |
||
92 | + /* Do not count the CRC */ |
||
93 | + skb_put(skb, pkt_len - 4); |
||
94 | + skb->protocol = eth_type_trans(skb, dev); |
||
95 | + |
||
96 | + /* Pass the packet to upper layers */ |
||
97 | + netif_receive_skb(skb); |
||
98 | + dev->stats.rx_packets++; |
||
99 | + dev->stats.rx_bytes += pkt_len; |
||
100 | + |
||
101 | + /* Update the mcast stats */ |
||
102 | + if (devcs & ETH_RX_MP) |
||
103 | + dev->stats.multicast++; |
||
104 | + |
||
105 | + lp->rx_skb[lp->rx_next_done] = skb_new; |
||
106 | + |
||
107 | +next: |
||
108 | rd->devcs = 0; |
||
109 | |||
110 | /* Restore descriptor's curr_addr */ |