equal
deleted
inserted
replaced
267 int irq_flags = IRQF_SHARED; |
267 int irq_flags = IRQF_SHARED; |
268 int err; |
268 int err; |
269 |
269 |
270 if (adapter->ecdev) |
270 if (adapter->ecdev) |
271 return 0; |
271 return 0; |
272 |
272 |
273 if (hw->mac_type >= e1000_82571) { |
273 if (hw->mac_type >= e1000_82571) { |
274 adapter->have_msi = !pci_enable_msi(adapter->pdev); |
274 adapter->have_msi = !pci_enable_msi(adapter->pdev); |
275 if (adapter->have_msi) { |
275 if (adapter->have_msi) { |
276 handler = e1000_intr_msi; |
276 handler = e1000_intr_msi; |
277 irq_flags = 0; |
277 irq_flags = 0; |
329 { |
329 { |
330 struct e1000_hw *hw = &adapter->hw; |
330 struct e1000_hw *hw = &adapter->hw; |
331 |
331 |
332 if (adapter->ecdev) |
332 if (adapter->ecdev) |
333 return; |
333 return; |
334 |
334 |
335 ew32(IMS, IMS_ENABLE_MASK); |
335 ew32(IMS, IMS_ENABLE_MASK); |
336 E1000_WRITE_FLUSH(); |
336 E1000_WRITE_FLUSH(); |
337 } |
337 } |
338 |
338 |
339 static void e1000_update_mng_vlan(struct e1000_adapter *adapter) |
339 static void e1000_update_mng_vlan(struct e1000_adapter *adapter) |
1246 e1000_get_hw_control(adapter); |
1246 e1000_get_hw_control(adapter); |
1247 |
1247 |
1248 // offer device to EtherCAT master module |
1248 // offer device to EtherCAT master module |
1249 adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE); |
1249 adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE); |
1250 if (adapter->ecdev) { |
1250 if (adapter->ecdev) { |
1251 if (ecdev_open(adapter->ecdev)) { |
1251 err = ecdev_open(adapter->ecdev); |
|
1252 if (err) { |
1252 ecdev_withdraw(adapter->ecdev); |
1253 ecdev_withdraw(adapter->ecdev); |
1253 goto err_register; |
1254 goto err_register; |
1254 } |
1255 } |
1255 } else { |
1256 } else { |
1256 /* tell the stack to leave us alone until e1000_open() is called */ |
1257 /* tell the stack to leave us alone until e1000_open() is called */ |
1529 goto err_req_irq; |
1530 goto err_req_irq; |
1530 |
1531 |
1531 /* From here on the code is the same as e1000_up() */ |
1532 /* From here on the code is the same as e1000_up() */ |
1532 clear_bit(__E1000_DOWN, &adapter->flags); |
1533 clear_bit(__E1000_DOWN, &adapter->flags); |
1533 |
1534 |
1534 napi_enable(&adapter->napi); |
1535 if (!adapter->ecdev) { |
1535 |
1536 napi_enable(&adapter->napi); |
1536 e1000_irq_enable(adapter); |
1537 |
1537 |
1538 e1000_irq_enable(adapter); |
1538 netif_start_queue(netdev); |
1539 |
|
1540 netif_start_queue(netdev); |
|
1541 } |
1539 |
1542 |
1540 /* fire a link status change interrupt to start the watchdog */ |
1543 /* fire a link status change interrupt to start the watchdog */ |
1541 ew32(ICS, E1000_ICS_LSC); |
1544 ew32(ICS, E1000_ICS_LSC); |
1542 |
1545 |
1543 return E1000_SUCCESS; |
1546 return E1000_SUCCESS; |
2438 |
2441 |
2439 if (!adapter->netdev && netif_running(netdev)) { |
2442 if (!adapter->netdev && netif_running(netdev)) { |
2440 /* No need to loop, because 82542 supports only 1 queue */ |
2443 /* No need to loop, because 82542 supports only 1 queue */ |
2441 struct e1000_rx_ring *ring = &adapter->rx_ring[0]; |
2444 struct e1000_rx_ring *ring = &adapter->rx_ring[0]; |
2442 e1000_configure_rx(adapter); |
2445 e1000_configure_rx(adapter); |
2443 if (adapter->ecdev) { |
2446 if (adapter->ecdev) { |
2444 /* fill rx ring completely! */ |
2447 /* fill rx ring completely! */ |
2445 adapter->alloc_rx_buf(adapter, ring, ring->count); |
2448 adapter->alloc_rx_buf(adapter, ring, ring->count); |
2446 } else { |
2449 } else { |
2447 /* this one leaves the last ring element unallocated! */ |
2450 /* this one leaves the last ring element unallocated! */ |
2448 adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); |
2451 adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); |
3334 |
3337 |
3335 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size) |
3338 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size) |
3336 { |
3339 { |
3337 struct e1000_adapter *adapter = netdev_priv(netdev); |
3340 struct e1000_adapter *adapter = netdev_priv(netdev); |
3338 struct e1000_tx_ring *tx_ring = adapter->tx_ring; |
3341 struct e1000_tx_ring *tx_ring = adapter->tx_ring; |
|
3342 |
|
3343 if (adapter->ecdev) { |
|
3344 return -EBUSY; |
|
3345 } |
3339 |
3346 |
3340 netif_stop_queue(netdev); |
3347 netif_stop_queue(netdev); |
3341 /* Herbert's original patch had: |
3348 /* Herbert's original patch had: |
3342 * smp_mb__after_netif_stop_queue(); |
3349 * smp_mb__after_netif_stop_queue(); |
3343 * but since that doesn't exist yet, just open code it. */ |
3350 * but since that doesn't exist yet, just open code it. */ |