|
@@ -926,19 +926,8 @@ spider_net_pass_skb_up(struct spider_net_descr *descr,
|
|
|
|
|
|
data_status = descr->data_status;
|
|
data_status = descr->data_status;
|
|
data_error = descr->data_error;
|
|
data_error = descr->data_error;
|
|
-
|
|
|
|
netdev = card->netdev;
|
|
netdev = card->netdev;
|
|
|
|
|
|
- /* the cases we'll throw away the packet immediately */
|
|
|
|
- if (data_error & SPIDER_NET_DESTROY_RX_FLAGS) {
|
|
|
|
- if (netif_msg_rx_err(card))
|
|
|
|
- pr_err("error in received descriptor found, "
|
|
|
|
- "data_status=x%08x, data_error=x%08x\n",
|
|
|
|
- data_status, data_error);
|
|
|
|
- card->spider_stats.rx_desc_error++;
|
|
|
|
- return 0;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
skb = descr->skb;
|
|
skb = descr->skb;
|
|
skb->dev = netdev;
|
|
skb->dev = netdev;
|
|
skb_put(skb, descr->valid_size);
|
|
skb_put(skb, descr->valid_size);
|
|
@@ -1037,6 +1026,18 @@ spider_net_decode_one_descr(struct spider_net_card *card)
|
|
goto refill;
|
|
goto refill;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* The cases we'll throw away the packet immediately */
|
|
|
|
+ if (descr->data_error & SPIDER_NET_DESTROY_RX_FLAGS) {
|
|
|
|
+ if (netif_msg_rx_err(card))
|
|
|
|
+ pr_err("%s: error in received descriptor found, "
|
|
|
|
+ "data_status=x%08x, data_error=x%08x\n",
|
|
|
|
+ card->netdev->name,
|
|
|
|
+ descr->data_status, descr->data_error);
|
|
|
|
+ card->spider_stats.rx_desc_error++;
|
|
|
|
+ dev_kfree_skb_irq(descr->skb);
|
|
|
|
+ goto refill;
|
|
|
|
+ }
|
|
|
|
+
|
|
/* ok, we've got a packet in descr */
|
|
/* ok, we've got a packet in descr */
|
|
result = spider_net_pass_skb_up(descr, card);
|
|
result = spider_net_pass_skb_up(descr, card);
|
|
refill:
|
|
refill:
|