Commit f61e5547 authored by Lennert Buytenhek's avatar Lennert Buytenhek Committed by David S. Miller

mv643xx_eth: move receive error handling out of line

Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 66e63ffb
...@@ -543,9 +543,24 @@ static int rxq_process(struct rx_queue *rxq, int budget) ...@@ -543,9 +543,24 @@ static int rxq_process(struct rx_queue *rxq, int budget)
* on, or the error summary bit is set, the packet needs * on, or the error summary bit is set, the packet needs
* to be dropped. * to be dropped.
*/ */
if (((cmd_sts & (RX_FIRST_DESC | RX_LAST_DESC)) != if ((cmd_sts & (RX_FIRST_DESC | RX_LAST_DESC | ERROR_SUMMARY))
(RX_FIRST_DESC | RX_LAST_DESC)) != (RX_FIRST_DESC | RX_LAST_DESC))
|| (cmd_sts & ERROR_SUMMARY)) { goto err;
/*
* The -4 is for the CRC in the trailer of the
* received packet
*/
skb_put(skb, byte_cnt - 2 - 4);
if (cmd_sts & LAYER_4_CHECKSUM_OK)
skb->ip_summed = CHECKSUM_UNNECESSARY;
skb->protocol = eth_type_trans(skb, mp->dev);
netif_receive_skb(skb);
continue;
err:
stats->rx_dropped++; stats->rx_dropped++;
if ((cmd_sts & (RX_FIRST_DESC | RX_LAST_DESC)) != if ((cmd_sts & (RX_FIRST_DESC | RX_LAST_DESC)) !=
...@@ -560,18 +575,6 @@ static int rxq_process(struct rx_queue *rxq, int budget) ...@@ -560,18 +575,6 @@ static int rxq_process(struct rx_queue *rxq, int budget)
stats->rx_errors++; stats->rx_errors++;
dev_kfree_skb(skb); dev_kfree_skb(skb);
} else {
/*
* The -4 is for the CRC in the trailer of the
* received packet
*/
skb_put(skb, byte_cnt - 2 - 4);
if (cmd_sts & LAYER_4_CHECKSUM_OK)
skb->ip_summed = CHECKSUM_UNNECESSARY;
skb->protocol = eth_type_trans(skb, mp->dev);
netif_receive_skb(skb);
}
} }
if (rx < budget) if (rx < budget)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment