equal
deleted
inserted
replaced
315 { |
315 { |
316 struct e1000_hw *hw = &adapter->hw; |
316 struct e1000_hw *hw = &adapter->hw; |
317 |
317 |
318 if (adapter->ecdev) |
318 if (adapter->ecdev) |
319 return; |
319 return; |
320 |
320 |
321 ew32(IMS, IMS_ENABLE_MASK); |
321 ew32(IMS, IMS_ENABLE_MASK); |
322 E1000_WRITE_FLUSH(); |
322 E1000_WRITE_FLUSH(); |
323 } |
323 } |
324 |
324 |
325 static void e1000_update_mng_vlan(struct e1000_adapter *adapter) |
325 static void e1000_update_mng_vlan(struct e1000_adapter *adapter) |
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; |
2093 |
2096 |
2094 if (!adapter->netdev && netif_running(netdev)) { |
2097 if (!adapter->netdev && netif_running(netdev)) { |
2095 /* No need to loop, because 82542 supports only 1 queue */ |
2098 /* No need to loop, because 82542 supports only 1 queue */ |
2096 struct e1000_rx_ring *ring = &adapter->rx_ring[0]; |
2099 struct e1000_rx_ring *ring = &adapter->rx_ring[0]; |
2097 e1000_configure_rx(adapter); |
2100 e1000_configure_rx(adapter); |
2098 if (adapter->ecdev) { |
2101 if (adapter->ecdev) { |
2099 /* fill rx ring completely! */ |
2102 /* fill rx ring completely! */ |
2100 adapter->alloc_rx_buf(adapter, ring, ring->count); |
2103 adapter->alloc_rx_buf(adapter, ring, ring->count); |
2101 } else { |
2104 } else { |
2102 /* this one leaves the last ring element unallocated! */ |
2105 /* this one leaves the last ring element unallocated! */ |
2103 adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); |
2106 adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); |
2296 |
2299 |
2297 adapter->tx_fifo_head = 0; |
2300 adapter->tx_fifo_head = 0; |
2298 atomic_set(&adapter->tx_fifo_stall, 0); |
2301 atomic_set(&adapter->tx_fifo_stall, 0); |
2299 if (!adapter->ecdev) netif_wake_queue(netdev); |
2302 if (!adapter->ecdev) netif_wake_queue(netdev); |
2300 } else if (!test_bit(__E1000_DOWN, &adapter->flags)) { |
2303 } else if (!test_bit(__E1000_DOWN, &adapter->flags)) { |
2301 if (!adapter->ecdev) |
2304 if (!adapter->ecdev) |
2302 mod_timer(&adapter->tx_fifo_stall_timer, jiffies + 1); |
2305 mod_timer(&adapter->tx_fifo_stall_timer, jiffies + 1); |
2303 } |
2306 } |
2304 } |
2307 } |
2305 } |
2308 } |
2306 |
2309 |
2970 |
2973 |
2971 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size) |
2974 static int __e1000_maybe_stop_tx(struct net_device *netdev, int size) |
2972 { |
2975 { |
2973 struct e1000_adapter *adapter = netdev_priv(netdev); |
2976 struct e1000_adapter *adapter = netdev_priv(netdev); |
2974 struct e1000_tx_ring *tx_ring = adapter->tx_ring; |
2977 struct e1000_tx_ring *tx_ring = adapter->tx_ring; |
|
2978 |
|
2979 if (adapter->ecdev) { |
|
2980 return -EBUSY; |
|
2981 } |
2975 |
2982 |
2976 netif_stop_queue(netdev); |
2983 netif_stop_queue(netdev); |
2977 /* Herbert's original patch had: |
2984 /* Herbert's original patch had: |
2978 * smp_mb__after_netif_stop_queue(); |
2985 * smp_mb__after_netif_stop_queue(); |
2979 * but since that doesn't exist yet, just open code it. */ |
2986 * but since that doesn't exist yet, just open code it. */ |