/* The open entry point is called when a network interface is made active by the system (IFF_UP). At this point all resources needed for transmit and receive operations are allocated, the interrupt handler is registered with the OS, the watchdog timer is started, and the stack is notified that the interface is ready.  */
static int ixgb_open(struct net_device *netdev)
/* The open entry point is called when a network interface is made active by the system (IFF_UP). At this point all resources needed for transmit and receive operations are allocated, the interrupt handler is registered with the OS, the watchdog timer is started, and the stack is notified that the interface is ready.  */
static int ixgb_open(struct net_device *netdev)
{
	struct ixgb_adapter *adapter = netdev_priv(netdev);
	int err;
	err = ixgb_setup_tx_resources(adapter);
	if (err)
		goto err_setup_tx;
	netif_carrier_off(netdev);
	err = ixgb_setup_rx_resources(adapter);
	if (err)
		goto err_setup_rx;
	err = ixgb_up(adapter);
	if (err)
		goto err_up;
	netif_start_queue(netdev);
	return 0;
err_up:
	ixgb_free_rx_resources(adapter);
err_setup_rx:
	ixgb_free_tx_resources(adapter);
err_setup_tx:
	ixgb_reset(adapter);
	return err;
}