goto bad_desc;
        }
 
-       if (hwdescr->dmac_cmd_status & 0xfefe) {
+       if (hwdescr->dmac_cmd_status & 0xfcf4) {
                pr_err("%s: bad status, cmd_status=x%08x\n",
                               card->netdev->name,
                               hwdescr->dmac_cmd_status);
        if (no_more_packets) {
                netif_rx_complete(netdev);
                spider_net_rx_irq_on(card);
+               card->ignore_rx_ramfull = 0;
                return 0;
        }
 
        case SPIDER_NET_GRFBFLLINT: /* fallthrough */
        case SPIDER_NET_GRFAFLLINT: /* fallthrough */
        case SPIDER_NET_GRMFLLINT:
-               if (netif_msg_intr(card) && net_ratelimit())
-                       pr_err("Spider RX RAM full, incoming packets "
-                              "might be discarded!\n");
                /* Could happen when rx chain is full */
-               spider_net_resync_head_ptr(card);
-               spider_net_refill_rx_chain(card);
-               spider_net_enable_rxdmac(card);
-               card->num_rx_ints ++;
-               netif_rx_schedule(card->netdev);
+               if (card->ignore_rx_ramfull == 0) {
+                       card->ignore_rx_ramfull = 1;
+                       spider_net_resync_head_ptr(card);
+                       spider_net_refill_rx_chain(card);
+                       spider_net_enable_rxdmac(card);
+                       card->num_rx_ints ++;
+                       netif_rx_schedule(card->netdev);
+               }
                show_error = 0;
                break;
 
 
        netdev->irq = card->pdev->irq;
        card->num_rx_ints = 0;
+       card->ignore_rx_ramfull = 0;
 
        dn = pci_device_to_OF_node(card->pdev);
        if (!dn)