devices/e1000/e1000_main-2.6.18-ethercat.c
changeset 2589 2b9c78543663
parent 1325 16aacb421bd4
equal deleted inserted replaced
2415:af21f0bdc7c9 2589:2b9c78543663
   981 		e1000_get_hw_control(adapter);
   981 		e1000_get_hw_control(adapter);
   982 
   982 
   983 	// offer device to EtherCAT master module
   983 	// offer device to EtherCAT master module
   984 	adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);
   984 	adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);
   985 	if (adapter->ecdev) {
   985 	if (adapter->ecdev) {
   986 		if (ecdev_open(adapter->ecdev)) {
   986 		err = ecdev_open(adapter->ecdev);
       
   987 		if (err) {
   987 			ecdev_withdraw(adapter->ecdev);
   988 			ecdev_withdraw(adapter->ecdev);
   988 			goto err_register;
   989 			goto err_register;
   989 		}
   990 		}
   990 	} else {
   991 	} else {
   991 		strcpy(netdev->name, "eth%d");
   992 		strcpy(netdev->name, "eth%d");
  2176 
  2177 
  2177 	if (!adapter->ecdev && netif_running(netdev)) {
  2178 	if (!adapter->ecdev && netif_running(netdev)) {
  2178 		/* No need to loop, because 82542 supports only 1 queue */
  2179 		/* No need to loop, because 82542 supports only 1 queue */
  2179 		struct e1000_rx_ring *ring = &adapter->rx_ring[0];
  2180 		struct e1000_rx_ring *ring = &adapter->rx_ring[0];
  2180 		e1000_configure_rx(adapter);
  2181 		e1000_configure_rx(adapter);
  2181 		if (adapter->ecdev) { 
  2182 		if (adapter->ecdev) {
  2182 			/* fill rx ring completely! */
  2183 			/* fill rx ring completely! */
  2183 			adapter->alloc_rx_buf(adapter, ring, ring->count);
  2184 			adapter->alloc_rx_buf(adapter, ring, ring->count);
  2184 		} else {
  2185 		} else {
  2185             /* this one leaves the last ring element unallocated! */
  2186             /* this one leaves the last ring element unallocated! */
  2186 			adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring));
  2187 			adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring));