@@ -122,8 +122,6 @@ struct korina_private {
122
122
123
123
int rx_irq ;
124
124
int tx_irq ;
125
- int ovr_irq ;
126
- int und_irq ;
127
125
128
126
spinlock_t lock ; /* NIC xmit lock */
129
127
@@ -891,8 +889,6 @@ static void korina_restart_task(struct work_struct *work)
891
889
*/
892
890
disable_irq (lp -> rx_irq );
893
891
disable_irq (lp -> tx_irq );
894
- disable_irq (lp -> ovr_irq );
895
- disable_irq (lp -> und_irq );
896
892
897
893
writel (readl (& lp -> tx_dma_regs -> dmasm ) |
898
894
DMA_STAT_FINI | DMA_STAT_ERR ,
@@ -911,66 +907,17 @@ static void korina_restart_task(struct work_struct *work)
911
907
}
912
908
korina_multicast_list (dev );
913
909
914
- enable_irq (lp -> und_irq );
915
- enable_irq (lp -> ovr_irq );
916
910
enable_irq (lp -> tx_irq );
917
911
enable_irq (lp -> rx_irq );
918
912
}
919
913
920
- static void korina_clear_and_restart (struct net_device * dev , u32 value )
921
- {
922
- struct korina_private * lp = netdev_priv (dev );
923
-
924
- netif_stop_queue (dev );
925
- writel (value , & lp -> eth_regs -> ethintfc );
926
- schedule_work (& lp -> restart_task );
927
- }
928
-
929
- /* Ethernet Tx Underflow interrupt */
930
- static irqreturn_t korina_und_interrupt (int irq , void * dev_id )
931
- {
932
- struct net_device * dev = dev_id ;
933
- struct korina_private * lp = netdev_priv (dev );
934
- unsigned int und ;
935
-
936
- spin_lock (& lp -> lock );
937
-
938
- und = readl (& lp -> eth_regs -> ethintfc );
939
-
940
- if (und & ETH_INT_FC_UND )
941
- korina_clear_and_restart (dev , und & ~ETH_INT_FC_UND );
942
-
943
- spin_unlock (& lp -> lock );
944
-
945
- return IRQ_HANDLED ;
946
- }
947
-
948
914
static void korina_tx_timeout (struct net_device * dev )
949
915
{
950
916
struct korina_private * lp = netdev_priv (dev );
951
917
952
918
schedule_work (& lp -> restart_task );
953
919
}
954
920
955
- /* Ethernet Rx Overflow interrupt */
956
- static irqreturn_t
957
- korina_ovr_interrupt (int irq , void * dev_id )
958
- {
959
- struct net_device * dev = dev_id ;
960
- struct korina_private * lp = netdev_priv (dev );
961
- unsigned int ovr ;
962
-
963
- spin_lock (& lp -> lock );
964
- ovr = readl (& lp -> eth_regs -> ethintfc );
965
-
966
- if (ovr & ETH_INT_FC_OVR )
967
- korina_clear_and_restart (dev , ovr & ~ETH_INT_FC_OVR );
968
-
969
- spin_unlock (& lp -> lock );
970
-
971
- return IRQ_HANDLED ;
972
- }
973
-
974
921
#ifdef CONFIG_NET_POLL_CONTROLLER
975
922
static void korina_poll_controller (struct net_device * dev )
976
923
{
@@ -993,8 +940,7 @@ static int korina_open(struct net_device *dev)
993
940
}
994
941
995
942
/* Install the interrupt handler
996
- * that handles the Done Finished
997
- * Ovr and Und Events */
943
+ * that handles the Done Finished */
998
944
ret = request_irq (lp -> rx_irq , korina_rx_dma_interrupt ,
999
945
0 , "Korina ethernet Rx" , dev );
1000
946
if (ret < 0 ) {
@@ -1010,31 +956,10 @@ static int korina_open(struct net_device *dev)
1010
956
goto err_free_rx_irq ;
1011
957
}
1012
958
1013
- /* Install handler for overrun error. */
1014
- ret = request_irq (lp -> ovr_irq , korina_ovr_interrupt ,
1015
- 0 , "Ethernet Overflow" , dev );
1016
- if (ret < 0 ) {
1017
- printk (KERN_ERR "%s: unable to get OVR IRQ %d\n" ,
1018
- dev -> name , lp -> ovr_irq );
1019
- goto err_free_tx_irq ;
1020
- }
1021
-
1022
- /* Install handler for underflow error. */
1023
- ret = request_irq (lp -> und_irq , korina_und_interrupt ,
1024
- 0 , "Ethernet Underflow" , dev );
1025
- if (ret < 0 ) {
1026
- printk (KERN_ERR "%s: unable to get UND IRQ %d\n" ,
1027
- dev -> name , lp -> und_irq );
1028
- goto err_free_ovr_irq ;
1029
- }
1030
959
mod_timer (& lp -> media_check_timer , jiffies + 1 );
1031
960
out :
1032
961
return ret ;
1033
962
1034
- err_free_ovr_irq :
1035
- free_irq (lp -> ovr_irq , dev );
1036
- err_free_tx_irq :
1037
- free_irq (lp -> tx_irq , dev );
1038
963
err_free_rx_irq :
1039
964
free_irq (lp -> rx_irq , dev );
1040
965
err_release :
@@ -1052,8 +977,6 @@ static int korina_close(struct net_device *dev)
1052
977
/* Disable interrupts */
1053
978
disable_irq (lp -> rx_irq );
1054
979
disable_irq (lp -> tx_irq );
1055
- disable_irq (lp -> ovr_irq );
1056
- disable_irq (lp -> und_irq );
1057
980
1058
981
korina_abort_tx (dev );
1059
982
tmp = readl (& lp -> tx_dma_regs -> dmasm );
@@ -1073,8 +996,6 @@ static int korina_close(struct net_device *dev)
1073
996
1074
997
free_irq (lp -> rx_irq , dev );
1075
998
free_irq (lp -> tx_irq , dev );
1076
- free_irq (lp -> ovr_irq , dev );
1077
- free_irq (lp -> und_irq , dev );
1078
999
1079
1000
return 0 ;
1080
1001
}
@@ -1113,8 +1034,6 @@ static int korina_probe(struct platform_device *pdev)
1113
1034
1114
1035
lp -> rx_irq = platform_get_irq_byname (pdev , "korina_rx" );
1115
1036
lp -> tx_irq = platform_get_irq_byname (pdev , "korina_tx" );
1116
- lp -> ovr_irq = platform_get_irq_byname (pdev , "korina_ovr" );
1117
- lp -> und_irq = platform_get_irq_byname (pdev , "korina_und" );
1118
1037
1119
1038
r = platform_get_resource_byname (pdev , IORESOURCE_MEM , "korina_regs" );
1120
1039
dev -> base_addr = r -> start ;
0 commit comments