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 );
rx_iob = alloc_iob ( rx_len );
if ( ! rx_iob ) {
+ netdev_rx_err ( netdev, NULL, -ENOMEM );
/* Leave packet for next call to poll() */
break;
}
} 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 );