equal
deleted
inserted
replaced
670 } |
670 } |
671 |
671 |
672 netdev->tx_queue_len = adapter->tx_queue_len; |
672 netdev->tx_queue_len = adapter->tx_queue_len; |
673 adapter->link_speed = 0; |
673 adapter->link_speed = 0; |
674 adapter->link_duplex = 0; |
674 adapter->link_duplex = 0; |
675 |
675 |
676 if (!adapter->ecdev) { |
676 if (!adapter->ecdev) { |
677 netif_carrier_off(netdev); |
677 netif_carrier_off(netdev); |
678 netif_stop_queue(netdev); |
678 netif_stop_queue(netdev); |
679 } |
679 } |
680 |
680 |
1241 e1000_get_hw_control(adapter); |
1241 e1000_get_hw_control(adapter); |
1242 |
1242 |
1243 // offer device to EtherCAT master module |
1243 // offer device to EtherCAT master module |
1244 adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE); |
1244 adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE); |
1245 if (adapter->ecdev) { |
1245 if (adapter->ecdev) { |
1246 if (ecdev_open(adapter->ecdev)) { |
1246 err = ecdev_open(adapter->ecdev); |
|
1247 if (err) { |
1247 ecdev_withdraw(adapter->ecdev); |
1248 ecdev_withdraw(adapter->ecdev); |
1248 goto err_register; |
1249 goto err_register; |
1249 } |
1250 } |
1250 } else { |
1251 } else { |
1251 /* tell the stack to leave us alone until e1000_open() is called */ |
1252 /* tell the stack to leave us alone until e1000_open() is called */ |
1542 |
1543 |
1543 /* From here on the code is the same as e1000_up() */ |
1544 /* From here on the code is the same as e1000_up() */ |
1544 clear_bit(__E1000_DOWN, &adapter->flags); |
1545 clear_bit(__E1000_DOWN, &adapter->flags); |
1545 |
1546 |
1546 #ifdef CONFIG_E1000_NAPI |
1547 #ifdef CONFIG_E1000_NAPI |
1547 napi_enable(&adapter->napi); |
1548 if (!adapter->ecdev) { |
|
1549 napi_enable(&adapter->napi); |
|
1550 } |
1548 #endif |
1551 #endif |
1549 |
1552 |
1550 e1000_irq_enable(adapter); |
1553 e1000_irq_enable(adapter); |
1551 |
1554 |
1552 /* fire a link status change interrupt to start the watchdog */ |
1555 /* fire a link status change interrupt to start the watchdog */ |
2465 |
2468 |
2466 if (!adapter->netdev && netif_running(netdev)) { |
2469 if (!adapter->netdev && netif_running(netdev)) { |
2467 /* No need to loop, because 82542 supports only 1 queue */ |
2470 /* No need to loop, because 82542 supports only 1 queue */ |
2468 struct e1000_rx_ring *ring = &adapter->rx_ring[0]; |
2471 struct e1000_rx_ring *ring = &adapter->rx_ring[0]; |
2469 e1000_configure_rx(adapter); |
2472 e1000_configure_rx(adapter); |
2470 if (adapter->ecdev) { |
2473 if (adapter->ecdev) { |
2471 /* fill rx ring completely! */ |
2474 /* fill rx ring completely! */ |
2472 adapter->alloc_rx_buf(adapter, ring, ring->count); |
2475 adapter->alloc_rx_buf(adapter, ring, ring->count); |
2473 } else { |
2476 } else { |
2474 /* this one leaves the last ring element unallocated! */ |
2477 /* this one leaves the last ring element unallocated! */ |
2475 adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); |
2478 adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); |
3367 |
3370 |
3368 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size) |
3371 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size) |
3369 { |
3372 { |
3370 struct e1000_adapter *adapter = netdev_priv(netdev); |
3373 struct e1000_adapter *adapter = netdev_priv(netdev); |
3371 struct e1000_tx_ring *tx_ring = adapter->tx_ring; |
3374 struct e1000_tx_ring *tx_ring = adapter->tx_ring; |
|
3375 |
|
3376 if (adapter->ecdev) { |
|
3377 return -EBUSY; |
|
3378 } |
3372 |
3379 |
3373 netif_stop_queue(netdev); |
3380 netif_stop_queue(netdev); |
3374 /* Herbert's original patch had: |
3381 /* Herbert's original patch had: |
3375 * smp_mb__after_netif_stop_queue(); |
3382 * smp_mb__after_netif_stop_queue(); |
3376 * but since that doesn't exist yet, just open code it. */ |
3383 * but since that doesn't exist yet, just open code it. */ |
3922 e1000_intr_msi(int irq, void *data) |
3929 e1000_intr_msi(int irq, void *data) |
3923 { |
3930 { |
3924 struct net_device *netdev = data; |
3931 struct net_device *netdev = data; |
3925 struct e1000_adapter *adapter = netdev_priv(netdev); |
3932 struct e1000_adapter *adapter = netdev_priv(netdev); |
3926 struct e1000_hw *hw = &adapter->hw; |
3933 struct e1000_hw *hw = &adapter->hw; |
3927 |
3934 |
3928 int i; |
3935 int i; |
3929 |
3936 |
3930 if (adapter->ecdev) { |
3937 if (adapter->ecdev) { |
3931 #ifdef CONFIG_E1000_NAPI |
3938 #ifdef CONFIG_E1000_NAPI |
3932 int ec_work_done = 0; |
3939 int ec_work_done = 0; |
4101 if (hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2) |
4108 if (hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2) |
4102 e1000_irq_enable(adapter); |
4109 e1000_irq_enable(adapter); |
4103 |
4110 |
4104 #endif |
4111 #endif |
4105 } |
4112 } |
4106 |
4113 |
4107 return IRQ_HANDLED; |
4114 return IRQ_HANDLED; |
4108 } |
4115 } |
4109 |
4116 |
4110 #ifdef CONFIG_E1000_NAPI |
4117 #ifdef CONFIG_E1000_NAPI |
4111 /** |
4118 /** |