826 if (rdes0 & 0x8000) {
827
828
829 db->stats.rx_errors++;
830 if (rdes0 & 1)
831 db->stats.rx_fifo_errors++;
832 if (rdes0 & 2)
833 db->stats.rx_crc_errors++;
834 if (rdes0 & 0x80)
835 db->stats.rx_length_errors++;
836 }
837
838 if ( !(rdes0 & 0x8000) ||
839 ((db->cr6_data & CR6_PM) && (rxlen>6)) ) {
840 skb = rxptr->rx_skb_ptr;
841
842
843
844 if ( (rxlen < RX_COPY_SIZE) &&
845 ( (skb = dev_alloc_skb(rxlen + 2) )
846 != NULL) ) {
847
848 skb_reserve(skb, 2);
849 memcpy(skb_put(skb, rxlen),
850 skb_tail_pointer(rxptr->rx_skb_ptr),
851 rxlen);
852 uli526x_reuse_skb(db, rxptr->rx_skb_ptr);
853 } else
854 skb_put(skb, rxlen);
855
856 skb->protocol = eth_type_trans(skb, dev);
857 netif_rx(skb);
858 dev->last_rx = jiffies;
859 db->stats.rx_packets++;
860 db->stats.rx_bytes += rxlen;
861
862 } else {
863
864 ULI526X_DBUG(0, "Reuse SK buffer, rdes0", rdes0);
865 uli526x_reuse_skb(db, rxptr->rx_skb_ptr);
866 }