Commit 7fabca4d authored by Mark Einon's avatar Mark Einon Committed by Greg Kroah-Hartman

staging: et131x: Create et131x_[dis|en]able_txrx() calls

In et131x_netdev.c, a series of calls to enable and diasble the rx/tx engine and queue are being used in several different places.
Create two functions to encapsulate these calls, and replace many calls with just the one.
Signed-off-by: default avatarMark Einon <mark.einon@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 268420aa
...@@ -83,6 +83,8 @@ void et1310_setup_device_for_unicast(struct et131x_adapter *adapter); ...@@ -83,6 +83,8 @@ void et1310_setup_device_for_unicast(struct et131x_adapter *adapter);
/* et131x_netdev.c */ /* et131x_netdev.c */
struct net_device *et131x_device_alloc(void); struct net_device *et131x_device_alloc(void);
void et131x_enable_txrx(struct net_device *netdev);
void et131x_disable_txrx(struct net_device *netdev);
/* et1310_pm.c */ /* et1310_pm.c */
void et1310_enable_phy_coma(struct et131x_adapter *adapter); void et1310_enable_phy_coma(struct et131x_adapter *adapter);
......
...@@ -136,6 +136,45 @@ static struct net_device_stats *et131x_stats(struct net_device *netdev) ...@@ -136,6 +136,45 @@ static struct net_device_stats *et131x_stats(struct net_device *netdev)
return stats; return stats;
} }
/**
* et131x_enable_txrx - Enable tx/rx queues
* @netdev: device to be enabled
*/
void et131x_enable_txrx(struct net_device *netdev)
{
struct et131x_adapter *adapter = netdev_priv(netdev);
/* Enable the Tx and Rx DMA engines (if not already enabled) */
et131x_rx_dma_enable(adapter);
et131x_tx_dma_enable(adapter);
/* Enable device interrupts */
if (adapter->flags & fMP_ADAPTER_INTERRUPT_IN_USE)
et131x_enable_interrupts(adapter);
/* We're ready to move some data, so start the queue */
netif_start_queue(netdev);
}
/**
* et131x_disable_txrx - Disable tx/rx queues
* @netdev: device to be disabled
*/
void et131x_disable_txrx(struct net_device *netdev)
{
struct et131x_adapter *adapter = netdev_priv(netdev);
/* First thing is to stop the queue */
netif_stop_queue(netdev);
/* Stop the Tx and Rx DMA engines */
et131x_rx_dma_disable(adapter);
et131x_tx_dma_disable(adapter);
/* Disable device interrupts */
et131x_disable_interrupts(adapter);
}
/** /**
* et131x_open - Open the device for use. * et131x_open - Open the device for use.
* @netdev: device to be opened * @netdev: device to be opened
...@@ -159,19 +198,10 @@ int et131x_open(struct net_device *netdev) ...@@ -159,19 +198,10 @@ int et131x_open(struct net_device *netdev)
return result; return result;
} }
/* Enable the Tx and Rx DMA engines (if not already enabled) */
et131x_rx_dma_enable(adapter);
et131x_tx_dma_enable(adapter);
/* Enable device interrupts */
et131x_enable_interrupts(adapter);
adapter->flags |= fMP_ADAPTER_INTERRUPT_IN_USE; adapter->flags |= fMP_ADAPTER_INTERRUPT_IN_USE;
et131x_enable_txrx(netdev);
phy_start(adapter->phydev); phy_start(adapter->phydev);
/* We're ready to move some data, so start the queue */
netif_start_queue(netdev);
return result; return result;
} }
...@@ -188,15 +218,7 @@ int et131x_close(struct net_device *netdev) ...@@ -188,15 +218,7 @@ int et131x_close(struct net_device *netdev)
/* Save the timestamp for the TX watchdog, prevent a timeout */ /* Save the timestamp for the TX watchdog, prevent a timeout */
netdev->trans_start = jiffies; netdev->trans_start = jiffies;
/* First thing is to stop the queue */ et131x_disable_txrx(netdev);
netif_stop_queue(netdev);
/* Stop the Tx and Rx DMA engines */
et131x_rx_dma_disable(adapter);
et131x_tx_dma_disable(adapter);
/* Disable device interrupts */
et131x_disable_interrupts(adapter);
/* Deregistering ISR */ /* Deregistering ISR */
adapter->flags &= ~fMP_ADAPTER_INTERRUPT_IN_USE; adapter->flags &= ~fMP_ADAPTER_INTERRUPT_IN_USE;
...@@ -442,29 +464,9 @@ void et131x_tx_timeout(struct net_device *netdev) ...@@ -442,29 +464,9 @@ void et131x_tx_timeout(struct net_device *netdev)
adapter->net_stats.tx_errors++; adapter->net_stats.tx_errors++;
/* perform reset */ /* perform reset of tx/rx */
/* First thing is to stop the queue */ et131x_disable_txrx(netdev);
netif_stop_queue(netdev); et131x_enable_txrx(netdev);
/* Stop the Tx and Rx DMA engines */
et131x_rx_dma_disable(adapter);
et131x_tx_dma_disable(adapter);
/* Disable device interrupts */
et131x_disable_interrupts(adapter);
/*
* Enable the Tx and Rx DMA engines
* (if not already enabled)
*/
et131x_rx_dma_enable(adapter);
et131x_tx_dma_enable(adapter);
/* Enable device interrupts */
et131x_enable_interrupts(adapter);
/* We're ready to move some data, so start the queue */
netif_start_queue(netdev);
return; return;
} }
} }
...@@ -488,15 +490,7 @@ int et131x_change_mtu(struct net_device *netdev, int new_mtu) ...@@ -488,15 +490,7 @@ int et131x_change_mtu(struct net_device *netdev, int new_mtu)
if (new_mtu < 64 || new_mtu > 9216) if (new_mtu < 64 || new_mtu > 9216)
return -EINVAL; return -EINVAL;
/* Stop the netif queue */ et131x_disable_txrx(netdev);
netif_stop_queue(netdev);
/* Stop the Tx and Rx DMA engines */
et131x_rx_dma_disable(adapter);
et131x_tx_dma_disable(adapter);
/* Disable device interrupts */
et131x_disable_interrupts(adapter);
et131x_handle_send_interrupt(adapter); et131x_handle_send_interrupt(adapter);
et131x_handle_recv_interrupt(adapter); et131x_handle_recv_interrupt(adapter);
...@@ -526,16 +520,8 @@ int et131x_change_mtu(struct net_device *netdev, int new_mtu) ...@@ -526,16 +520,8 @@ int et131x_change_mtu(struct net_device *netdev, int new_mtu)
/* Init the device with the new settings */ /* Init the device with the new settings */
et131x_adapter_setup(adapter); et131x_adapter_setup(adapter);
/* Enable interrupts */ et131x_enable_txrx(netdev);
if (adapter->flags & fMP_ADAPTER_INTERRUPT_IN_USE)
et131x_enable_interrupts(adapter);
/* Restart the Tx and Rx DMA engines */
et131x_rx_dma_enable(adapter);
et131x_tx_dma_enable(adapter);
/* Restart the netif queue */
netif_wake_queue(netdev);
return result; return result;
} }
...@@ -563,15 +549,7 @@ int et131x_set_mac_addr(struct net_device *netdev, void *new_mac) ...@@ -563,15 +549,7 @@ int et131x_set_mac_addr(struct net_device *netdev, void *new_mac)
if (!is_valid_ether_addr(address->sa_data)) if (!is_valid_ether_addr(address->sa_data))
return -EINVAL; return -EINVAL;
/* Stop the netif queue */ et131x_disable_txrx(netdev);
netif_stop_queue(netdev);
/* Stop the Tx and Rx DMA engines */
et131x_rx_dma_disable(adapter);
et131x_tx_dma_disable(adapter);
/* Disable device interrupts */
et131x_disable_interrupts(adapter);
et131x_handle_send_interrupt(adapter); et131x_handle_send_interrupt(adapter);
et131x_handle_recv_interrupt(adapter); et131x_handle_recv_interrupt(adapter);
...@@ -603,16 +581,8 @@ int et131x_set_mac_addr(struct net_device *netdev, void *new_mac) ...@@ -603,16 +581,8 @@ int et131x_set_mac_addr(struct net_device *netdev, void *new_mac)
/* Init the device with the new settings */ /* Init the device with the new settings */
et131x_adapter_setup(adapter); et131x_adapter_setup(adapter);
/* Enable interrupts */ et131x_enable_txrx(netdev);
if (adapter->flags & fMP_ADAPTER_INTERRUPT_IN_USE)
et131x_enable_interrupts(adapter);
/* Restart the Tx and Rx DMA engines */
et131x_rx_dma_enable(adapter);
et131x_tx_dma_enable(adapter);
/* Restart the netif queue */
netif_wake_queue(netdev);
return result; return result;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment