Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec497b32 authored by Peter Meerwald's avatar Peter Meerwald Committed by David S. Miller
Browse files

netdev: bfin_mac: handler RX status errors

parent fe92afed
Loading
Loading
Loading
Loading
+14 −3
Original line number Original line Diff line number Diff line
@@ -980,12 +980,25 @@ static int bfin_mac_hard_start_xmit(struct sk_buff *skb,
	return NETDEV_TX_OK;
	return NETDEV_TX_OK;
}
}


#define RX_ERROR_MASK (RX_LONG | RX_ALIGN | RX_CRC | RX_LEN | \
	RX_FRAG | RX_ADDR | RX_DMAO | RX_PHY | RX_LATE | RX_RANGE)

static void bfin_mac_rx(struct net_device *dev)
static void bfin_mac_rx(struct net_device *dev)
{
{
	struct sk_buff *skb, *new_skb;
	struct sk_buff *skb, *new_skb;
	unsigned short len;
	unsigned short len;
	struct bfin_mac_local *lp __maybe_unused = netdev_priv(dev);
	struct bfin_mac_local *lp __maybe_unused = netdev_priv(dev);


	/* check if frame status word reports an error condition
	 * we which case we simply drop the packet
	 */
	if (current_rx_ptr->status.status_word & RX_ERROR_MASK) {
		printk(KERN_NOTICE DRV_NAME
		       ": rx: receive error - packet dropped\n");
		dev->stats.rx_dropped++;
		goto out;
	}

	/* allocate a new skb for next time receive */
	/* allocate a new skb for next time receive */
	skb = current_rx_ptr->skb;
	skb = current_rx_ptr->skb;


@@ -1024,11 +1037,9 @@ static void bfin_mac_rx(struct net_device *dev)
	netif_rx(skb);
	netif_rx(skb);
	dev->stats.rx_packets++;
	dev->stats.rx_packets++;
	dev->stats.rx_bytes += len;
	dev->stats.rx_bytes += len;
out:
	current_rx_ptr->status.status_word = 0x00000000;
	current_rx_ptr->status.status_word = 0x00000000;
	current_rx_ptr = current_rx_ptr->next;
	current_rx_ptr = current_rx_ptr->next;

out:
	return;
}
}


/* interrupt routine to handle rx and error signal */
/* interrupt routine to handle rx and error signal */