Use netdev_rx_err() to report receive errors.
authorMichael Brown <mcb30@etherboot.org>
Thu, 5 Jul 2007 16:23:03 +0000 (17:23 +0100)
committerMichael Brown <mcb30@etherboot.org>
Thu, 5 Jul 2007 16:23:03 +0000 (17:23 +0100)
src/drivers/net/pnic.c
src/drivers/net/rtl8139.c

index f614a07..38b4af6 100644 (file)
@@ -128,13 +128,14 @@ static void pnic_poll ( struct net_device *netdev, unsigned int rx_quota ) {
                        break;
                iobuf = alloc_iob ( ETH_FRAME_LEN );
                if ( ! iobuf ) {
-                       printf ( "could not allocate buffer\n" );
+                       DBG ( "could not allocate buffer\n" );
+                       netdev_rx_err ( netdev, NULL, -ENOMEM );
                        break;
                }
                if ( pnic_command ( pnic, PNIC_CMD_RECV, NULL, 0,
                                    iobuf->data, ETH_FRAME_LEN, &length )
                     != PNIC_STATUS_OK ) {
-                       free_iob ( iobuf );
+                       netdev_rx_err ( netdev, iobuf, -EIO );
                        break;
                }
                iob_put ( iobuf, length );
index 90a7182..54bda07 100644 (file)
@@ -444,6 +444,7 @@ static void rtl_poll ( struct net_device *netdev, unsigned int rx_quota ) {
 
                        rx_iob = alloc_iob ( rx_len );
                        if ( ! rx_iob ) {
+                               netdev_rx_err ( netdev, NULL, -ENOMEM );
                                /* Leave packet for next call to poll() */
                                break;
                        }
@@ -464,6 +465,7 @@ static void rtl_poll ( struct net_device *netdev, unsigned int rx_quota ) {
                } else {
                        DBG ( "RX bad packet (status %#04x len %d)\n",
                              rx_status, rx_len );
+                       netdev_rx_err ( netdev, NULL, -EINVAL );
                }
                rtl->rx.offset = ( ( ( rtl->rx.offset + 4 + rx_len + 3 ) & ~3 )
                                   % RX_BUF_LEN );