devices/ccat/netdev.c
branchstable-1.5
changeset 2568 2f3078ec9ffb
parent 2567 d70aad2f131f
child 2569 720172a7563f
equal deleted inserted replaced
2567:d70aad2f131f 2568:2f3078ec9ffb
   318 		priv->kfree_skb_any = ecdev_kfree_skb_any;
   318 		priv->kfree_skb_any = ecdev_kfree_skb_any;
   319 		priv->start_queue = ecdev_nop;
   319 		priv->start_queue = ecdev_nop;
   320 		priv->stop_queue = ecdev_nop;
   320 		priv->stop_queue = ecdev_nop;
   321 		priv->tx_fifo_full = ecdev_tx_fifo_full;
   321 		priv->tx_fifo_full = ecdev_tx_fifo_full;
   322 		priv->unregister = unregister_ecdev;
   322 		priv->unregister = unregister_ecdev;
       
   323 
       
   324 		priv->carrier_off(netdev);
   323 		if (ecdev_open(priv->ecdev)) {
   325 		if (ecdev_open(priv->ecdev)) {
   324 			pr_info("unable to register network device.\n");
   326 			pr_info("unable to register network device.\n");
   325 			ecdev_withdraw(priv->ecdev);
   327 			ecdev_withdraw(priv->ecdev);
   326 			ccat_eth_priv_free_dma(priv);
   328 			ccat_eth_priv_free_dma(priv);
   327 			free_netdev(netdev);
   329 			free_netdev(netdev);
   337 	priv->kfree_skb_any = dev_kfree_skb_any;
   339 	priv->kfree_skb_any = dev_kfree_skb_any;
   338 	priv->start_queue = netif_start_queue;
   340 	priv->start_queue = netif_start_queue;
   339 	priv->stop_queue = netif_stop_queue;
   341 	priv->stop_queue = netif_stop_queue;
   340 	priv->tx_fifo_full = ccat_eth_tx_fifo_full;
   342 	priv->tx_fifo_full = ccat_eth_tx_fifo_full;
   341 	priv->unregister = unregister_netdev;
   343 	priv->unregister = unregister_netdev;
       
   344 
       
   345 	priv->carrier_off(netdev);
   342 	if (register_netdev(netdev)) {
   346 	if (register_netdev(netdev)) {
   343 		pr_info("unable to register network device.\n");
   347 		pr_info("unable to register network device.\n");
   344 		ccat_eth_priv_free_dma(priv);
   348 		ccat_eth_priv_free_dma(priv);
   345 		free_netdev(netdev);
   349 		free_netdev(netdev);
   346 		return NULL;
   350 		return NULL;
   359 
   363 
   360 static int ccat_eth_open(struct net_device *dev)
   364 static int ccat_eth_open(struct net_device *dev)
   361 {
   365 {
   362 	struct ccat_eth_priv *const priv = netdev_priv(dev);
   366 	struct ccat_eth_priv *const priv = netdev_priv(dev);
   363 
   367 
   364 	priv->carrier_off(dev);
       
   365 	hrtimer_init(&priv->poll_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
   368 	hrtimer_init(&priv->poll_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
   366 	priv->poll_timer.function = poll_timer_callback;
   369 	priv->poll_timer.function = poll_timer_callback;
   367 	hrtimer_start(&priv->poll_timer, ktime_set(0, 100000),
   370 	hrtimer_start(&priv->poll_timer, ktime_set(0, 100000),
   368 		      HRTIMER_MODE_REL);
   371 		      HRTIMER_MODE_REL);
   369 	return 0;
   372 	return 0;