devices/e1000/e1000_main-3.0-ethercat.c
changeset 2589 2b9c78543663
parent 2395 f7451c2c274f
equal deleted inserted replaced
2415:af21f0bdc7c9 2589:2b9c78543663
  1207 	e1000_reset(adapter);
  1207 	e1000_reset(adapter);
  1208 
  1208 
  1209  	// offer device to EtherCAT master module
  1209  	// offer device to EtherCAT master module
  1210 	adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);
  1210 	adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);
  1211 	if (adapter->ecdev) {
  1211 	if (adapter->ecdev) {
  1212 		if (ecdev_open(adapter->ecdev)) {
  1212 		err = ecdev_open(adapter->ecdev);
       
  1213 		if (err) {
  1213 			ecdev_withdraw(adapter->ecdev);
  1214 			ecdev_withdraw(adapter->ecdev);
  1214 			goto err_register;
  1215 			goto err_register;
  1215 		}
  1216 		}
  1216 	} else {
  1217 	} else {
  1217 		strcpy(netdev->name, "eth%d");
  1218 		strcpy(netdev->name, "eth%d");
  1421 		goto err_req_irq;
  1422 		goto err_req_irq;
  1422 
  1423 
  1423 	/* From here on the code is the same as e1000_up() */
  1424 	/* From here on the code is the same as e1000_up() */
  1424 	clear_bit(__E1000_DOWN, &adapter->flags);
  1425 	clear_bit(__E1000_DOWN, &adapter->flags);
  1425 
  1426 
  1426 	napi_enable(&adapter->napi);
  1427 	if (!adapter->ecdev) {
  1427 
  1428 		napi_enable(&adapter->napi);
  1428 	e1000_irq_enable(adapter);
  1429 
  1429 
  1430 		e1000_irq_enable(adapter);
  1430 	netif_start_queue(netdev);
  1431 
       
  1432 		netif_start_queue(netdev);
       
  1433 	}
  1431 
  1434 
  1432 	/* fire a link status change interrupt to start the watchdog */
  1435 	/* fire a link status change interrupt to start the watchdog */
  1433 	ew32(ICS, E1000_ICS_LSC);
  1436 	ew32(ICS, E1000_ICS_LSC);
  1434 
  1437 
  1435 	return E1000_SUCCESS;
  1438 	return E1000_SUCCESS;
  3101 
  3104 
  3102 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
  3105 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
  3103 {
  3106 {
  3104 	struct e1000_adapter *adapter = netdev_priv(netdev);
  3107 	struct e1000_adapter *adapter = netdev_priv(netdev);
  3105 	struct e1000_tx_ring *tx_ring = adapter->tx_ring;
  3108 	struct e1000_tx_ring *tx_ring = adapter->tx_ring;
       
  3109 
       
  3110 	if (adapter->ecdev) {
       
  3111 		return -EBUSY;
       
  3112 	}
  3106 
  3113 
  3107 	netif_stop_queue(netdev);
  3114 	netif_stop_queue(netdev);
  3108 	/* Herbert's original patch had:
  3115 	/* Herbert's original patch had:
  3109 	 *  smp_mb__after_netif_stop_queue();
  3116 	 *  smp_mb__after_netif_stop_queue();
  3110 	 * but since that doesn't exist yet, just open code it. */
  3117 	 * but since that doesn't exist yet, just open code it. */