equal
deleted
inserted
replaced
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. */ |