devices/e1000/e1000_main-2.6.32-ethercat.c
changeset 2589 2b9c78543663
parent 2213 be3291de22e3
equal deleted inserted replaced
2415:af21f0bdc7c9 2589:2b9c78543663
  1080 	e1000_reset(adapter);
  1080 	e1000_reset(adapter);
  1081 
  1081 
  1082 	// offer device to EtherCAT master module
  1082 	// offer device to EtherCAT master module
  1083 	adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);
  1083 	adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);
  1084 	if (adapter->ecdev) {
  1084 	if (adapter->ecdev) {
  1085 		if (ecdev_open(adapter->ecdev)) {
  1085 		err = ecdev_open(adapter->ecdev);
       
  1086 		if (err) {
  1086 			ecdev_withdraw(adapter->ecdev);
  1087 			ecdev_withdraw(adapter->ecdev);
  1087 			goto err_register;
  1088 			goto err_register;
  1088 		}
  1089 		}
  1089 	} else {
  1090 	} else {
  1090 		strcpy(netdev->name, "eth%d");
  1091 		strcpy(netdev->name, "eth%d");
  1330 		goto err_req_irq;
  1331 		goto err_req_irq;
  1331 
  1332 
  1332 	/* From here on the code is the same as e1000_up() */
  1333 	/* From here on the code is the same as e1000_up() */
  1333 	clear_bit(__E1000_DOWN, &adapter->flags);
  1334 	clear_bit(__E1000_DOWN, &adapter->flags);
  1334 
  1335 
  1335 	napi_enable(&adapter->napi);
  1336 	if (!adapter->ecdev) {
  1336 
  1337 		napi_enable(&adapter->napi);
  1337 	e1000_irq_enable(adapter);
  1338 
  1338 
  1339 		e1000_irq_enable(adapter);
  1339 	netif_start_queue(netdev);
  1340 
       
  1341 		netif_start_queue(netdev);
       
  1342 	}
  1340 
  1343 
  1341 	/* fire a link status change interrupt to start the watchdog */
  1344 	/* fire a link status change interrupt to start the watchdog */
  1342 	ew32(ICS, E1000_ICS_LSC);
  1345 	ew32(ICS, E1000_ICS_LSC);
  1343 
  1346 
  1344 	return E1000_SUCCESS;
  1347 	return E1000_SUCCESS;
  2086 
  2089 
  2087 	if (!adapter->netdev && netif_running(netdev)) {
  2090 	if (!adapter->netdev && netif_running(netdev)) {
  2088 		/* No need to loop, because 82542 supports only 1 queue */
  2091 		/* No need to loop, because 82542 supports only 1 queue */
  2089 		struct e1000_rx_ring *ring = &adapter->rx_ring[0];
  2092 		struct e1000_rx_ring *ring = &adapter->rx_ring[0];
  2090 		e1000_configure_rx(adapter);
  2093 		e1000_configure_rx(adapter);
  2091 		if (adapter->ecdev) { 
  2094 		if (adapter->ecdev) {
  2092 			/* fill rx ring completely! */
  2095 			/* fill rx ring completely! */
  2093 			adapter->alloc_rx_buf(adapter, ring, ring->count);
  2096 			adapter->alloc_rx_buf(adapter, ring, ring->count);
  2094 		} else {
  2097 		} else {
  2095             /* this one leaves the last ring element unallocated! */
  2098             /* this one leaves the last ring element unallocated! */
  2096 			adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring));
  2099 			adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring));
  2289 
  2292 
  2290 			adapter->tx_fifo_head = 0;
  2293 			adapter->tx_fifo_head = 0;
  2291 			atomic_set(&adapter->tx_fifo_stall, 0);
  2294 			atomic_set(&adapter->tx_fifo_stall, 0);
  2292 			if (!adapter->ecdev) netif_wake_queue(netdev);
  2295 			if (!adapter->ecdev) netif_wake_queue(netdev);
  2293 		} else if (!test_bit(__E1000_DOWN, &adapter->flags)) {
  2296 		} else if (!test_bit(__E1000_DOWN, &adapter->flags)) {
  2294 			if (!adapter->ecdev) 
  2297 			if (!adapter->ecdev)
  2295 				mod_timer(&adapter->tx_fifo_stall_timer, jiffies + 1);
  2298 				mod_timer(&adapter->tx_fifo_stall_timer, jiffies + 1);
  2296 		}
  2299 		}
  2297 	}
  2300 	}
  2298 }
  2301 }
  2299 
  2302 
  2946 
  2949 
  2947 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
  2950 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
  2948 {
  2951 {
  2949 	struct e1000_adapter *adapter = netdev_priv(netdev);
  2952 	struct e1000_adapter *adapter = netdev_priv(netdev);
  2950 	struct e1000_tx_ring *tx_ring = adapter->tx_ring;
  2953 	struct e1000_tx_ring *tx_ring = adapter->tx_ring;
       
  2954 
       
  2955 	if (adapter->ecdev) {
       
  2956 		return -EBUSY;
       
  2957 	}
  2951 
  2958 
  2952 	netif_stop_queue(netdev);
  2959 	netif_stop_queue(netdev);
  2953 	/* Herbert's original patch had:
  2960 	/* Herbert's original patch had:
  2954 	 *  smp_mb__after_netif_stop_queue();
  2961 	 *  smp_mb__after_netif_stop_queue();
  2955 	 * but since that doesn't exist yet, just open code it. */
  2962 	 * but since that doesn't exist yet, just open code it. */