693 MODULE_PARM_DESC(ec_device_index, |
693 MODULE_PARM_DESC(ec_device_index, |
694 "Index of the device reserved for EtherCAT."); |
694 "Index of the device reserved for EtherCAT."); |
695 MODULE_PARM_DESC(ec_device_master_index, |
695 MODULE_PARM_DESC(ec_device_master_index, |
696 "Index of the EtherCAT master to register the device."); |
696 "Index of the EtherCAT master to register the device."); |
697 |
697 |
|
698 void ec_poll(struct net_device *); |
|
699 |
698 /* EtherCAT <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ |
700 /* EtherCAT <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ |
699 |
701 |
700 static int read_eeprom (void __iomem *ioaddr, int location, int addr_len); |
702 static int read_eeprom (void __iomem *ioaddr, int location, int addr_len); |
701 static int rtl8139_open (struct net_device *dev); |
703 static int rtl8139_open (struct net_device *dev); |
702 static int mdio_read (struct net_device *dev, int phy_id, int location); |
704 static int mdio_read (struct net_device *dev, int phy_id, int location); |
709 struct net_device *dev); |
711 struct net_device *dev); |
710 static int rtl8139_poll(struct net_device *dev, int *budget); |
712 static int rtl8139_poll(struct net_device *dev, int *budget); |
711 #ifdef CONFIG_NET_POLL_CONTROLLER |
713 #ifdef CONFIG_NET_POLL_CONTROLLER |
712 static void rtl8139_poll_controller(struct net_device *dev); |
714 static void rtl8139_poll_controller(struct net_device *dev); |
713 #endif |
715 #endif |
714 irqreturn_t rtl8139_interrupt (int irq, void *dev_instance, |
716 static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance, |
715 struct pt_regs *regs); |
717 struct pt_regs *regs); |
716 static int rtl8139_close (struct net_device *dev); |
718 static int rtl8139_close (struct net_device *dev); |
717 static int netdev_ioctl (struct net_device *dev, struct ifreq *rq, int cmd); |
719 static int netdev_ioctl (struct net_device *dev, struct ifreq *rq, int cmd); |
718 static struct net_device_stats *rtl8139_get_stats (struct net_device *dev); |
720 static struct net_device_stats *rtl8139_get_stats (struct net_device *dev); |
719 static void rtl8139_set_rx_mode (struct net_device *dev); |
721 static void rtl8139_set_rx_mode (struct net_device *dev); |
720 static void __set_rx_mode (struct net_device *dev); |
722 static void __set_rx_mode (struct net_device *dev); |
2342 spin_unlock(&tp->rx_lock); |
2344 spin_unlock(&tp->rx_lock); |
2343 |
2345 |
2344 return !done; |
2346 return !done; |
2345 } |
2347 } |
2346 |
2348 |
|
2349 /* EtherCAT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ |
|
2350 |
|
2351 void ec_poll(struct net_device *dev) |
|
2352 { |
|
2353 rtl8139_interrupt(0, dev, NULL); |
|
2354 } |
|
2355 |
|
2356 /* EtherCAT <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ |
|
2357 |
2347 /* The interrupt handler does all of the Rx thread work and cleans up |
2358 /* The interrupt handler does all of the Rx thread work and cleans up |
2348 after the Tx thread. */ |
2359 after the Tx thread. */ |
2349 irqreturn_t rtl8139_interrupt (int irq, void *dev_instance, |
2360 irqreturn_t rtl8139_interrupt (int irq, void *dev_instance, |
2350 struct pt_regs *regs) |
2361 struct pt_regs *regs) |
2351 { |
2362 { |
2899 } |
2910 } |
2900 |
2911 |
2901 if (rtl_ec_net_dev) { |
2912 if (rtl_ec_net_dev) { |
2902 printk(KERN_INFO "Registering EtherCAT device...\n"); |
2913 printk(KERN_INFO "Registering EtherCAT device...\n"); |
2903 if (!(rtl_ec_dev = ecdev_register(ec_device_master_index, |
2914 if (!(rtl_ec_dev = ecdev_register(ec_device_master_index, |
2904 rtl_ec_net_dev, rtl8139_interrupt, THIS_MODULE))) { |
2915 rtl_ec_net_dev, ec_poll, THIS_MODULE))) { |
2905 printk(KERN_ERR "Failed to register EtherCAT device!\n"); |
2916 printk(KERN_ERR "Failed to register EtherCAT device!\n"); |
2906 goto out_pci; |
2917 goto out_pci; |
2907 } |
2918 } |
2908 |
2919 |
2909 printk(KERN_INFO "Starting EtherCAT device...\n"); |
2920 printk(KERN_INFO "Opening EtherCAT device...\n"); |
2910 if (ecdev_start(ec_device_master_index)) { |
2921 if (ecdev_open(rtl_ec_dev)) { |
2911 printk(KERN_ERR "Failed to start EtherCAT device!\n"); |
2922 printk(KERN_ERR "Failed to open EtherCAT device!\n"); |
2912 goto out_unregister; |
2923 goto out_unregister; |
2913 } |
2924 } |
|
2925 |
|
2926 printk(KERN_INFO "EtherCAT device ready.\n"); |
2914 } else { |
2927 } else { |
2915 printk(KERN_WARNING "No EtherCAT device registered!\n"); |
2928 printk(KERN_WARNING "No EtherCAT device registered!\n"); |
2916 } |
2929 } |
2917 |
2930 |
2918 return 0; |
2931 return 0; |
2919 |
2932 |
2920 out_unregister: |
2933 out_unregister: |
|
2934 printk(KERN_INFO "Unregistering EtherCAT device...\n"); |
2921 ecdev_unregister(ec_device_master_index, rtl_ec_dev); |
2935 ecdev_unregister(ec_device_master_index, rtl_ec_dev); |
|
2936 rtl_ec_dev = NULL; |
2922 out_pci: |
2937 out_pci: |
2923 pci_unregister_driver(&rtl8139_pci_driver); |
2938 pci_unregister_driver(&rtl8139_pci_driver); |
2924 out_return: |
2939 out_return: |
2925 return -1; |
2940 return -1; |
2926 |
2941 |
2933 /* EtherCAT >>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ |
2948 /* EtherCAT >>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ |
2934 |
2949 |
2935 printk(KERN_INFO "Cleaning up RTL8139-EtherCAT module...\n"); |
2950 printk(KERN_INFO "Cleaning up RTL8139-EtherCAT module...\n"); |
2936 |
2951 |
2937 if (rtl_ec_net_dev) { |
2952 if (rtl_ec_net_dev) { |
2938 printk(KERN_INFO "Stopping device...\n"); |
2953 printk(KERN_INFO "Closing EtherCAT device...\n"); |
2939 ecdev_stop(ec_device_master_index); |
2954 ecdev_close(rtl_ec_dev); |
2940 printk(KERN_INFO "Unregistering device...\n"); |
2955 printk(KERN_INFO "Unregistering EtherCAT device...\n"); |
2941 ecdev_unregister(ec_device_master_index, rtl_ec_dev); |
2956 ecdev_unregister(ec_device_master_index, rtl_ec_dev); |
2942 rtl_ec_dev = NULL; |
2957 rtl_ec_dev = NULL; |
2943 } |
2958 } |
2944 |
2959 |
2945 pci_unregister_driver(&rtl8139_pci_driver); |
2960 pci_unregister_driver(&rtl8139_pci_driver); |