devices/e1000/e1000_main-2.6.22-ethercat.c
changeset 2589 2b9c78543663
parent 2050 a3e59f2a8589
equal deleted inserted replaced
2415:af21f0bdc7c9 2589:2b9c78543663
  1171 		e1000_get_hw_control(adapter);
  1171 		e1000_get_hw_control(adapter);
  1172 
  1172 
  1173 	// offer device to EtherCAT master module
  1173 	// offer device to EtherCAT master module
  1174 	adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);
  1174 	adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);
  1175 	if (adapter->ecdev) {
  1175 	if (adapter->ecdev) {
  1176 		if (ecdev_open(adapter->ecdev)) {
  1176 		err = ecdev_open(adapter->ecdev);
       
  1177 		if (err) {
  1177 			ecdev_withdraw(adapter->ecdev);
  1178 			ecdev_withdraw(adapter->ecdev);
  1178 			goto err_register;
  1179 			goto err_register;
  1179 		}
  1180 		}
  1180 	} else {
  1181 	} else {
  1181 		/* tell the stack to leave us alone until e1000_open() is called */
  1182 		/* tell the stack to leave us alone until e1000_open() is called */
  2402 
  2403 
  2403 	if (!adapter->netdev && netif_running(netdev)) {
  2404 	if (!adapter->netdev && netif_running(netdev)) {
  2404 		/* No need to loop, because 82542 supports only 1 queue */
  2405 		/* No need to loop, because 82542 supports only 1 queue */
  2405 		struct e1000_rx_ring *ring = &adapter->rx_ring[0];
  2406 		struct e1000_rx_ring *ring = &adapter->rx_ring[0];
  2406 		e1000_configure_rx(adapter);
  2407 		e1000_configure_rx(adapter);
  2407 		if (adapter->ecdev) { 
  2408 		if (adapter->ecdev) {
  2408 			/* fill rx ring completely! */
  2409 			/* fill rx ring completely! */
  2409 			adapter->alloc_rx_buf(adapter, ring, ring->count);
  2410 			adapter->alloc_rx_buf(adapter, ring, ring->count);
  2410 		} else {
  2411 		} else {
  2411             /* this one leaves the last ring element unallocated! */
  2412             /* this one leaves the last ring element unallocated! */
  2412 			adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring));
  2413 			adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring));
  3289 
  3290 
  3290 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
  3291 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size)
  3291 {
  3292 {
  3292 	struct e1000_adapter *adapter = netdev_priv(netdev);
  3293 	struct e1000_adapter *adapter = netdev_priv(netdev);
  3293 	struct e1000_tx_ring *tx_ring = adapter->tx_ring;
  3294 	struct e1000_tx_ring *tx_ring = adapter->tx_ring;
       
  3295 
       
  3296 	if (adapter->ecdev) {
       
  3297 		return -EBUSY;
       
  3298 	}
  3294 
  3299 
  3295 	netif_stop_queue(netdev);
  3300 	netif_stop_queue(netdev);
  3296 	/* Herbert's original patch had:
  3301 	/* Herbert's original patch had:
  3297 	 *  smp_mb__after_netif_stop_queue();
  3302 	 *  smp_mb__after_netif_stop_queue();
  3298 	 * but since that doesn't exist yet, just open code it. */
  3303 	 * but since that doesn't exist yet, just open code it. */