Skip to content

Commit

Permalink
mv643xx_eth: move receive error handling out of line
Browse files Browse the repository at this point in the history
Signed-off-by: Lennert Buytenhek <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
Lennert Buytenhek authored and davem330 committed Nov 20, 2008
1 parent 66e63ff commit f61e554
Showing 1 changed file with 29 additions and 26 deletions.
55 changes: 29 additions & 26 deletions drivers/net/mv643xx_eth.c
Original file line number Diff line number Diff line change
Expand Up @@ -543,35 +543,38 @@ static int rxq_process(struct rx_queue *rxq, int budget)
* on, or the error summary bit is set, the packet needs
* to be dropped.
*/
if (((cmd_sts & (RX_FIRST_DESC | RX_LAST_DESC)) !=
(RX_FIRST_DESC | RX_LAST_DESC))
|| (cmd_sts & ERROR_SUMMARY)) {
stats->rx_dropped++;

if ((cmd_sts & (RX_FIRST_DESC | RX_LAST_DESC)) !=
(RX_FIRST_DESC | RX_LAST_DESC)) {
if (net_ratelimit())
dev_printk(KERN_ERR, &mp->dev->dev,
"received packet spanning "
"multiple descriptors\n");
}
if ((cmd_sts & (RX_FIRST_DESC | RX_LAST_DESC | ERROR_SUMMARY))
!= (RX_FIRST_DESC | RX_LAST_DESC))
goto err;

if (cmd_sts & ERROR_SUMMARY)
stats->rx_errors++;
/*
* The -4 is for the CRC in the trailer of the
* received packet
*/
skb_put(skb, byte_cnt - 2 - 4);

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 (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++;

if ((cmd_sts & (RX_FIRST_DESC | RX_LAST_DESC)) !=
(RX_FIRST_DESC | RX_LAST_DESC)) {
if (net_ratelimit())
dev_printk(KERN_ERR, &mp->dev->dev,
"received packet spanning "
"multiple descriptors\n");
}

if (cmd_sts & ERROR_SUMMARY)
stats->rx_errors++;

dev_kfree_skb(skb);
}

if (rx < budget)
Expand Down

0 comments on commit f61e554

Please sign in to comment.