diff options
| author | Jan Weitzel <j.weitzel@phytec.de> | 2012-02-14 16:35:15 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2012-02-15 15:41:10 -0500 |
| commit | 6c23e4132258be41218584cfb37a43d9346cdd64 (patch) | |
| tree | 2121139424540e89e1f5b2ead40c96db5cc0b12b | |
| parent | 237114384ab22c174ec4641e809f8e6cbcfce774 (diff) | |
net/ethernet: ks8851_mll fix irq handling
There a two different irq variables ks->irq and netdev->irq.
Only ks->irq is set on probe, so disabling irq in ks_start_xmit fails.
This patches remove ks->irq from private data and use only netdev->irq.
Tested on a kernel 3.0 based OMAP4430 SMP Board
Signed-off-by: Jan Weitzel <j.weitzel@phytec.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/ethernet/micrel/ks8851_mll.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/net/ethernet/micrel/ks8851_mll.c b/drivers/net/ethernet/micrel/ks8851_mll.c index e58e78e5c930..231176fcd2ba 100644 --- a/drivers/net/ethernet/micrel/ks8851_mll.c +++ b/drivers/net/ethernet/micrel/ks8851_mll.c | |||
| @@ -394,7 +394,6 @@ union ks_tx_hdr { | |||
| 394 | * @msg_enable : The message flags controlling driver output (see ethtool). | 394 | * @msg_enable : The message flags controlling driver output (see ethtool). |
| 395 | * @frame_cnt : number of frames received. | 395 | * @frame_cnt : number of frames received. |
| 396 | * @bus_width : i/o bus width. | 396 | * @bus_width : i/o bus width. |
| 397 | * @irq : irq number assigned to this device. | ||
| 398 | * @rc_rxqcr : Cached copy of KS_RXQCR. | 397 | * @rc_rxqcr : Cached copy of KS_RXQCR. |
| 399 | * @rc_txcr : Cached copy of KS_TXCR. | 398 | * @rc_txcr : Cached copy of KS_TXCR. |
| 400 | * @rc_ier : Cached copy of KS_IER. | 399 | * @rc_ier : Cached copy of KS_IER. |
| @@ -441,7 +440,6 @@ struct ks_net { | |||
| 441 | u32 msg_enable; | 440 | u32 msg_enable; |
| 442 | u32 frame_cnt; | 441 | u32 frame_cnt; |
| 443 | int bus_width; | 442 | int bus_width; |
| 444 | int irq; | ||
| 445 | 443 | ||
| 446 | u16 rc_rxqcr; | 444 | u16 rc_rxqcr; |
| 447 | u16 rc_txcr; | 445 | u16 rc_txcr; |
| @@ -907,10 +905,10 @@ static int ks_net_open(struct net_device *netdev) | |||
| 907 | netif_dbg(ks, ifup, ks->netdev, "%s - entry\n", __func__); | 905 | netif_dbg(ks, ifup, ks->netdev, "%s - entry\n", __func__); |
| 908 | 906 | ||
| 909 | /* reset the HW */ | 907 | /* reset the HW */ |
| 910 | err = request_irq(ks->irq, ks_irq, KS_INT_FLAGS, DRV_NAME, netdev); | 908 | err = request_irq(netdev->irq, ks_irq, KS_INT_FLAGS, DRV_NAME, netdev); |
| 911 | 909 | ||
| 912 | if (err) { | 910 | if (err) { |
| 913 | pr_err("Failed to request IRQ: %d: %d\n", ks->irq, err); | 911 | pr_err("Failed to request IRQ: %d: %d\n", netdev->irq, err); |
| 914 | return err; | 912 | return err; |
| 915 | } | 913 | } |
| 916 | 914 | ||
| @@ -955,7 +953,7 @@ static int ks_net_stop(struct net_device *netdev) | |||
| 955 | 953 | ||
| 956 | /* set powermode to soft power down to save power */ | 954 | /* set powermode to soft power down to save power */ |
| 957 | ks_set_powermode(ks, PMECR_PM_SOFTDOWN); | 955 | ks_set_powermode(ks, PMECR_PM_SOFTDOWN); |
| 958 | free_irq(ks->irq, netdev); | 956 | free_irq(netdev->irq, netdev); |
| 959 | mutex_unlock(&ks->lock); | 957 | mutex_unlock(&ks->lock); |
| 960 | return 0; | 958 | return 0; |
| 961 | } | 959 | } |
| @@ -1545,10 +1543,10 @@ static int __devinit ks8851_probe(struct platform_device *pdev) | |||
| 1545 | if (!ks->hw_addr_cmd) | 1543 | if (!ks->hw_addr_cmd) |
| 1546 | goto err_ioremap1; | 1544 | goto err_ioremap1; |
| 1547 | 1545 | ||
| 1548 | ks->irq = platform_get_irq(pdev, 0); | 1546 | netdev->irq = platform_get_irq(pdev, 0); |
| 1549 | 1547 | ||
| 1550 | if (ks->irq < 0) { | 1548 | if (netdev->irq < 0) { |
| 1551 | err = ks->irq; | 1549 | err = netdev->irq; |
| 1552 | goto err_get_irq; | 1550 | goto err_get_irq; |
| 1553 | } | 1551 | } |
| 1554 | 1552 | ||
