A Diumenge, 1 de desembre de 2013, Jan Kiszka va escriure:
> On 2013-11-19 11:07, Leopold Palomo-Avellaneda wrote:
> > Hi,
> > 
> > work done. Now it compiles. Still there's a driver that doesn't compile 
> > (natsemi), but it's another problem:
> > 
> > /home/users/leopold.palomo/robotica/projects/platform/rtnet-
> > code/drivers/rt_natsemi.c:2018:6: error: conflicting types for 
‘set_bit_le’
> > In file included from /usr/src/linux-headers-3.8.13-
> > xenomai-2.6.3/arch/x86/include/asm/bitops.h:516:0,
> >                  from include/linux/bitops.h:22,
> >                  from include/linux/kernel.h:10,
> >                  from include/linux/cache.h:4,
> >                  from include/linux/time.h:4,
> >                  from include/linux/stat.h:18,
> >                  from include/linux/module.h:10,
> >                  from 
> > /home/users/leopold.palomo/robotica/projects/platform/rtnet-
> > code/drivers/rt_natsemi.c:150:
> > include/asm-generic/bitops/le.h:57:20: note: previous definition of 
> > ‘set_bit_le’ was here
> > make[4]: *** [/home/users/leopold.palomo/robotica/projects/platform/rtnet-
> > code/drivers/rt_natsemi.o] Error 1
> > 
> > 
> > Patch attached, please apply it.
> 
> Thanks for the fixes, and sorry for my late reply. The patch looks good
> except for some small formal issues:
> 
> - The patch should be accommodated with a proper commit message:
> 
> <subject line>
> 
> <brief description (you can follow my argumentation for Xenomai here)>
> 
> Signed-off-by: ...
> 
> The latter is a formal statement that you are the copyright holder and
> contribute it to this project under the corresponding license.
> 
> - The .gitignore change is unrelated, requires a separate path
> 
> I'm looking into the natsemi build issue.
> 

It's ok now?

Regards,

Leopold

-- 
--
Linux User 152692
Catalonia
From 6682bb21e5b536b7992a0ea9f5343a6feb01392b Mon Sep 17 00:00:00 2001
From: Leopold Palomo-Avellaneda <leopold.pal...@upc.edu>
Date: Mon, 2 Dec 2013 15:58:14 +0100
Subject: [PATCH] Updating the drivers with the _devinit issue and the
 hot-plugging. See:
 http://git.xenomai.org/xenomai-2.6.git/commit/?id=3ddc61cda095a9ae51277608d7fd4e9c2c481625

Signed-off-by: Leopold Palomo-Avellaneda <l...@alaxarxa.net>
---
 drivers/e1000/e1000_main.c                 |   16 ++++++----------
 drivers/e1000/e1000_param.c                |   16 ++++++----------
 drivers/e1000e/netdev.c                    |   10 +++++-----
 drivers/e1000e/param.c                     |    6 +++---
 drivers/experimental/e1000/e1000_main.c    |   12 ++++++------
 drivers/experimental/e1000/e1000_param.c   |   12 ++++++------
 drivers/experimental/rt2500/rt_rt2500pci.c |    2 +-
 drivers/experimental/rt_3c59x.c            |   14 +++++++-------
 drivers/igb/igb_main.c                     |   10 +++++-----
 drivers/rt_8139too.c                       |   14 +++++++-------
 drivers/rt_at91_ether.c                    |   12 ++++++------
 drivers/rt_eepro100.c                      |    8 ++++----
 drivers/rt_fec.c                           |   12 +++++-------
 drivers/rt_natsemi.c                       |   12 ++++++------
 drivers/rt_pcnet32.c                       |   11 ++++-------
 drivers/rt_r8169.c                         |    8 ++++----
 drivers/rt_via-rhine.c                     |   16 ++++++++--------
 drivers/tulip/eeprom.c                     |    8 ++++----
 drivers/tulip/media.c                      |    2 +-
 drivers/tulip/tulip_core.c                 |   12 ++++++------
 20 files changed, 100 insertions(+), 113 deletions(-)

diff --git a/drivers/e1000/e1000_main.c b/drivers/e1000/e1000_main.c
index dff7f71..b69c370 100644
--- a/drivers/e1000/e1000_main.c
+++ b/drivers/e1000/e1000_main.c
@@ -183,7 +183,7 @@ static void e1000_free_rx_resources(struct e1000_adapter *adapter,
 static int e1000_init_module(void);
 static void e1000_exit_module(void);
 static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
-static void __devexit e1000_remove(struct pci_dev *pdev);
+static void e1000_remove(struct pci_dev *pdev);
 static int e1000_alloc_queues(struct e1000_adapter *adapter);
 static int e1000_sw_init(struct e1000_adapter *adapter);
 static int e1000_open(struct rtnet_device *netdev);
@@ -235,7 +235,7 @@ static struct pci_driver e1000_driver = {
 	.name     = e1000_driver_name,
 	.id_table = e1000_pci_tbl,
 	.probe    = e1000_probe,
-	.remove   = __devexit_p(e1000_remove),
+	.remove   = e1000_remove,
 };
 
 MODULE_AUTHOR("Intel Corporation, <linux.n...@intel.com>");
@@ -681,8 +681,7 @@ e1000_reset_task(struct e1000_adapter *adapter)
  * and a hardware reset occur.
  **/
 
-static int __devinit
-e1000_probe(struct pci_dev *pdev,
+static int e1000_probe(struct pci_dev *pdev,
             const struct pci_device_id *ent)
 {
 	struct rtnet_device *netdev;
@@ -981,8 +980,7 @@ err_alloc_etherdev:
  * memory.
  **/
 
-static void __devexit
-e1000_remove(struct pci_dev *pdev)
+static void e1000_remove(struct pci_dev *pdev)
 {
 	struct rtnet_device *netdev = pci_get_drvdata(pdev);
 	struct e1000_adapter *adapter = netdev->priv;
@@ -1034,8 +1032,7 @@ e1000_remove(struct pci_dev *pdev)
  * OS network device settings (MTU size).
  **/
 
-static int __devinit
-e1000_sw_init(struct e1000_adapter *adapter)
+static int e1000_sw_init(struct e1000_adapter *adapter)
 {
 	struct e1000_hw *hw = &adapter->hw;
 	struct rtnet_device *netdev = adapter->netdev;
@@ -1125,8 +1122,7 @@ e1000_sw_init(struct e1000_adapter *adapter)
  * intended for Multiqueue, but should work fine with a single queue.
  **/
 
-static int __devinit
-e1000_alloc_queues(struct e1000_adapter *adapter)
+static int e1000_alloc_queues(struct e1000_adapter *adapter)
 {
 	int size;
 
diff --git a/drivers/e1000/e1000_param.c b/drivers/e1000/e1000_param.c
index 7ebdc11..42e94d5 100644
--- a/drivers/e1000/e1000_param.c
+++ b/drivers/e1000/e1000_param.c
@@ -57,12 +57,12 @@
  */
 
 #define E1000_PARAM(X, desc) \
-	static const int __devinitdata X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \
+	static const int X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \
 	MODULE_PARM(X, "1-" __MODULE_STRING(E1000_MAX_NIC) "i"); \
 	MODULE_PARM_DESC(X, desc);
 #else
 #define E1000_PARAM(X, desc) \
-	static int __devinitdata X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \
+	static int X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \
 	static int num_##X = 0; \
 	module_param_array_named(X, X, int, &num_##X, 0); \
 	MODULE_PARM_DESC(X, desc);
@@ -259,8 +259,7 @@ struct e1000_option {
 	} arg;
 };
 
-static int __devinit
-e1000_validate_option(int *value, struct e1000_option *opt,
+static int e1000_validate_option(int *value, struct e1000_option *opt,
 		struct e1000_adapter *adapter)
 {
 	if (*value == OPTION_UNSET) {
@@ -323,8 +322,7 @@ static void e1000_check_copper_options(struct e1000_adapter *adapter);
  * in a variable in the adapter structure.
  **/
 
-void __devinit
-e1000_check_options(struct e1000_adapter *adapter)
+void e1000_check_options(struct e1000_adapter *adapter)
 {
 	int bd = adapter->bd_number;
 	if (bd >= E1000_MAX_NIC) {
@@ -629,8 +627,7 @@ e1000_check_options(struct e1000_adapter *adapter)
  * Handles speed and duplex options on fiber adapters
  **/
 
-static void __devinit
-e1000_check_fiber_options(struct e1000_adapter *adapter)
+static void e1000_check_fiber_options(struct e1000_adapter *adapter)
 {
 	int bd = adapter->bd_number;
 #ifndef module_param_array
@@ -670,8 +667,7 @@ e1000_check_fiber_options(struct e1000_adapter *adapter)
  * Handles speed and duplex options on copper adapters
  **/
 
-static void __devinit
-e1000_check_copper_options(struct e1000_adapter *adapter)
+static void e1000_check_copper_options(struct e1000_adapter *adapter)
 {
 	int speed, dplx, an;
 	int bd = adapter->bd_number;
diff --git a/drivers/e1000e/netdev.c b/drivers/e1000e/netdev.c
index dbc98a7..5634a9b 100644
--- a/drivers/e1000e/netdev.c
+++ b/drivers/e1000e/netdev.c
@@ -1631,7 +1631,7 @@ void e1000e_free_rx_resources(struct e1000_adapter *adapter)
  * e1000_alloc_queues - Allocate memory for all rings
  * @adapter: board private structure to initialize
  **/
-static int __devinit e1000_alloc_queues(struct e1000_adapter *adapter)
+static int e1000_alloc_queues(struct e1000_adapter *adapter)
 {
 	if (rtskb_pool_init(&adapter->skb_pool,
 			    RT_E1000E_NUM_RXD) < RT_E1000E_NUM_RXD)
@@ -2562,7 +2562,7 @@ void e1000e_reinit_locked(struct e1000_adapter *adapter)
  * Fields are initialized based on PCI device information and
  * OS network device settings (MTU size).
  **/
-static int __devinit e1000_sw_init(struct e1000_adapter *adapter)
+static int e1000_sw_init(struct e1000_adapter *adapter)
 {
 	struct rtnet_device *netdev = adapter->netdev;
 
@@ -3940,7 +3940,7 @@ static void e1000_unmap_rtskb(struct rtnet_device *netdev,
  * The OS initialization, configuring of the adapter private structure,
  * and a hardware reset occur.
  **/
-static int __devinit e1000_probe(struct pci_dev *pdev,
+static int e1000_probe(struct pci_dev *pdev,
 				 const struct pci_device_id *ent)
 {
 	struct rtnet_device *netdev;
@@ -4285,7 +4285,7 @@ err_dma:
  * Hot-Plug event, or because the driver is going to be removed from
  * memory.
  **/
-static void __devexit e1000_remove(struct pci_dev *pdev)
+static void e1000_remove(struct pci_dev *pdev)
 {
 	struct rtnet_device *netdev = pci_get_drvdata(pdev);
 	struct e1000_adapter *adapter = netdev->priv;
@@ -4431,7 +4431,7 @@ static struct pci_driver e1000_driver = {
 	.name     = e1000e_driver_name,
 	.id_table = e1000_pci_tbl,
 	.probe    = e1000_probe,
-	.remove   = __devexit_p(e1000_remove),
+	.remove   = e1000_remove,
 	.shutdown = e1000_shutdown,
 	.err_handler = &e1000_err_handler
 };
diff --git a/drivers/e1000e/param.c b/drivers/e1000e/param.c
index 91354fc..22a6f5a 100644
--- a/drivers/e1000e/param.c
+++ b/drivers/e1000e/param.c
@@ -56,7 +56,7 @@ MODULE_PARM_DESC(copybreak,
 
 #define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET }
 #define E1000_PARAM(X, desc)					\
-	static int __devinitdata X[E1000_MAX_NIC+1]		\
+	static int X[E1000_MAX_NIC+1]		\
 		= E1000_PARAM_INIT;				\
 	static unsigned int num_##X;				\
 	module_param_array_named(X, X, int, &num_##X, 0);	\
@@ -182,7 +182,7 @@ struct e1000_option {
 	} arg;
 };
 
-static int __devinit e1000_validate_option(unsigned int *value,
+static int e1000_validate_option(unsigned int *value,
 					   const struct e1000_option *opt,
 					   struct e1000_adapter *adapter)
 {
@@ -241,7 +241,7 @@ static int __devinit e1000_validate_option(unsigned int *value,
  * value exists, a default value is used.  The final value is stored
  * in a variable in the adapter structure.
  **/
-void __devinit e1000e_check_options(struct e1000_adapter *adapter)
+void e1000e_check_options(struct e1000_adapter *adapter)
 {
 	struct e1000_hw *hw = &adapter->hw;
 	int bd = adapter->bd_number;
diff --git a/drivers/experimental/e1000/e1000_main.c b/drivers/experimental/e1000/e1000_main.c
index ce7f23a..dc76e74 100644
--- a/drivers/experimental/e1000/e1000_main.c
+++ b/drivers/experimental/e1000/e1000_main.c
@@ -268,7 +268,7 @@ static void e1000_free_rx_resources(struct e1000_adapter *adapter,
 static int e1000_init_module(void);
 static void e1000_exit_module(void);
 static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
-static void __devexit e1000_remove(struct pci_dev *pdev);
+static void e1000_remove(struct pci_dev *pdev);
 static int e1000_alloc_queues(struct e1000_adapter *adapter);
 #ifdef CONFIG_E1000_MQ
 static void e1000_setup_queue_mapping(struct e1000_adapter *adapter);
@@ -400,7 +400,7 @@ static struct pci_driver e1000_driver = {
 	.name     = e1000_driver_name,
 	.id_table = e1000_pci_tbl,
 	.probe    = e1000_probe,
-	.remove   = __devexit_p(e1000_remove),
+	.remove   = e1000_remove,
 #ifdef HAVE_PCI_ERS
 	.err_handler = &e1000_err_handler
 #endif
@@ -1080,7 +1080,7 @@ void e1000_reset(struct e1000_adapter *adapter)
  * The OS initialization, configuring of the adapter private structure,
  * and a hardware reset occur.
  **/
-static int __devinit e1000_probe(struct pci_dev *pdev,
+static int e1000_probe(struct pci_dev *pdev,
                                  const struct pci_device_id *ent)
 {
 	struct net_device *netdev;
@@ -1496,7 +1496,7 @@ err_dma:
  * Hot-Plug event, or because the driver is going to be removed from
  * memory.
  **/
-static void __devexit e1000_remove(struct pci_dev *pdev)
+static void e1000_remove(struct pci_dev *pdev)
 {
 	struct net_device *netdev = pci_get_drvdata(pdev);
 	struct e1000_adapter *adapter = netdev_priv(netdev);
@@ -1546,7 +1546,7 @@ static void __devexit e1000_remove(struct pci_dev *pdev)
  * Fields are initialized based on PCI device information and
  * OS network device settings (MTU size).
  **/
-static int __devinit e1000_sw_init(struct e1000_adapter *adapter)
+static int e1000_sw_init(struct e1000_adapter *adapter)
 {
 	struct e1000_hw *hw = &adapter->hw;
 	struct net_device *netdev = adapter->netdev;
@@ -1667,7 +1667,7 @@ static int __devinit e1000_sw_init(struct e1000_adapter *adapter)
  * e1000_alloc_queues - Allocate memory for all rings
  * @adapter: board private structure to initialize
  **/
-static int __devinit e1000_alloc_queues(struct e1000_adapter *adapter)
+static int e1000_alloc_queues(struct e1000_adapter *adapter)
 {
 	adapter->tx_ring = kcalloc(adapter->num_tx_queues,
 	                           sizeof(struct e1000_tx_ring), GFP_KERNEL);
diff --git a/drivers/experimental/e1000/e1000_param.c b/drivers/experimental/e1000/e1000_param.c
index bbdc3a8..823c088 100644
--- a/drivers/experimental/e1000/e1000_param.c
+++ b/drivers/experimental/e1000/e1000_param.c
@@ -59,12 +59,12 @@
  */
 
 #define E1000_PARAM(X, desc) \
-	static const int __devinitdata X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \
+	static const int X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \
 	MODULE_PARM(X, "1-" __MODULE_STRING(E1000_MAX_NIC) "i"); \
 	MODULE_PARM_DESC(X, desc);
 #else
 #define E1000_PARAM(X, desc) \
-	static int __devinitdata X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \
+	static int X[E1000_MAX_NIC+1] = E1000_PARAM_INIT; \
 	static unsigned int num_##X = 0; \
 	module_param_array_named(X, X, int, &num_##X, 0); \
 	MODULE_PARM_DESC(X, desc);
@@ -234,7 +234,7 @@ struct e1000_option {
 	} arg;
 };
 
-static int __devinit e1000_validate_option(unsigned int *value,
+static int e1000_validate_option(unsigned int *value,
                                            const struct e1000_option *opt,
                                            struct e1000_adapter *adapter)
 {
@@ -297,7 +297,7 @@ static void e1000_check_copper_options(struct e1000_adapter *adapter);
  * value exists, a default value is used.  The final value is stored
  * in a variable in the adapter structure.
  **/
-void __devinit e1000_check_options(struct e1000_adapter *adapter)
+void e1000_check_options(struct e1000_adapter *adapter)
 {
 	struct e1000_hw *hw = &adapter->hw;
 	int bd = adapter->bd_number;
@@ -631,7 +631,7 @@ void __devinit e1000_check_options(struct e1000_adapter *adapter)
  *
  * Handles speed and duplex options on fiber adapters
  **/
-static void __devinit e1000_check_fiber_options(struct e1000_adapter *adapter)
+static void e1000_check_fiber_options(struct e1000_adapter *adapter)
 {
 	int bd = adapter->bd_number;
 #ifndef module_param_array
@@ -670,7 +670,7 @@ static void __devinit e1000_check_fiber_options(struct e1000_adapter *adapter)
  *
  * Handles speed and duplex options on copper adapters
  **/
-static void __devinit e1000_check_copper_options(struct e1000_adapter *adapter)
+static void e1000_check_copper_options(struct e1000_adapter *adapter)
 {
 	struct e1000_hw *hw = &adapter->hw;
 	unsigned int speed, dplx, an;
diff --git a/drivers/experimental/rt2500/rt_rt2500pci.c b/drivers/experimental/rt2500/rt_rt2500pci.c
index 2beb096..6458090 100644
--- a/drivers/experimental/rt2500/rt_rt2500pci.c
+++ b/drivers/experimental/rt2500/rt_rt2500pci.c
@@ -1233,7 +1233,7 @@ struct pci_driver rt2x00_pci_driver =
     .name	= DRV_NAME,
     .id_table	= rt2x00_device_pci_tbl,
     .probe	= rt2x00_pci_probe,
-    .remove	= __devexit_p(rt2x00_pci_remove),
+    .remove	= rt2x00_pci_remove,
 };
 
 
diff --git a/drivers/experimental/rt_3c59x.c b/drivers/experimental/rt_3c59x.c
index f251a82..a8805f6 100644
--- a/drivers/experimental/rt_3c59x.c
+++ b/drivers/experimental/rt_3c59x.c
@@ -295,7 +295,7 @@ static inline int null_set_power_state(struct pci_dev *dev, int state)
 // *** RTnet ***
 
 
-static char version[] __devinitdata =
+static char version[] =
 DRV_NAME " for RTnet : Donald Becker and others. www.scyld.com/network/vortex.html\n";
 
 MODULE_AUTHOR("Donald Becker <bec...@scyld.com>");
@@ -462,7 +462,7 @@ static struct vortex_chip_info {
 	int flags;
 	int drv_flags;
 	int io_size;
-} vortex_info_tbl[] __devinitdata = {
+} vortex_info_tbl[] = {
 #define EISA_TBL_OFFSET	0		/* Offset of this entry for vortex_eisa_init */
 	{"3c590 Vortex 10Mbps",
 	 PCI_USES_IO|PCI_USES_MASTER, IS_VORTEX, 32, },
@@ -545,7 +545,7 @@ static struct vortex_chip_info {
 };
 
 
-static struct pci_device_id vortex_pci_tbl[] __devinitdata = {
+static struct pci_device_id vortex_pci_tbl[] = {
 	{ 0x10B7, 0x5900, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_3C590 },
 	{ 0x10B7, 0x5920, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_3C592 },
 	{ 0x10B7, 0x5970, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_3C597 },
@@ -1006,7 +1006,7 @@ static int __init vortex_eisa_init (void)
 #endif
 
 /* returns count (>= 0), or negative on error */
-static int __devinit vortex_init_one (struct pci_dev *pdev,
+static int vortex_init_one (struct pci_dev *pdev,
 				      const struct pci_device_id *ent)
 {
 	int rc;
@@ -1032,7 +1032,7 @@ static int __devinit vortex_init_one (struct pci_dev *pdev,
  *
  * NOTE: pdev can be NULL, for the case of an EISA driver
  */
-static int __devinit vortex_probe1(struct pci_dev *pdev,
+static int vortex_probe1(struct pci_dev *pdev,
 				   long ioaddr, int irq,
 				   int chip_idx, int card_idx)
 {
@@ -3291,7 +3291,7 @@ static void acpi_set_WOL(struct rtnet_device *rtdev)
 }
 
 
-static void __devexit vortex_remove_one (struct pci_dev *pdev)
+static void vortex_remove_one (struct pci_dev *pdev)
 {
 	struct vortex_private *vp;
 	// *** RTnet ***
@@ -3337,7 +3337,7 @@ static void __devexit vortex_remove_one (struct pci_dev *pdev)
 static struct pci_driver vortex_driver = {
 	name:		"3c59x_rt",
 	probe:		vortex_init_one,
-	remove:		__devexit_p(vortex_remove_one),
+	remove:		vortex_remove_one,
 	id_table:	vortex_pci_tbl,
 #ifdef CONFIG_PM
 	suspend:	NULL,
diff --git a/drivers/igb/igb_main.c b/drivers/igb/igb_main.c
index 175bbaf..2bfffef 100644
--- a/drivers/igb/igb_main.c
+++ b/drivers/igb/igb_main.c
@@ -156,7 +156,7 @@ static void igb_free_all_tx_resources(struct igb_adapter *);
 static void igb_free_all_rx_resources(struct igb_adapter *);
 void igb_update_stats(struct igb_adapter *);
 static int igb_probe(struct pci_dev *, const struct pci_device_id *);
-static void __devexit igb_remove(struct pci_dev *pdev);
+static void igb_remove(struct pci_dev *pdev);
 static int igb_sw_init(struct igb_adapter *);
 static int igb_open(struct rtnet_device *);
 static int igb_close(struct rtnet_device *);
@@ -243,7 +243,7 @@ static struct pci_driver igb_driver = {
 	.name     = igb_driver_name,
 	.id_table = igb_pci_tbl,
 	.probe    = igb_probe,
-	.remove   = __devexit_p(igb_remove),
+	.remove   = igb_remove,
 #ifdef CONFIG_PM
 	/* Power Managment Hooks */
 	.suspend  = igb_suspend,
@@ -1118,7 +1118,7 @@ static void igb_unmap_rtskb(struct rtnet_device *netdev,
  * The OS initialization, configuring of the adapter private structure,
  * and a hardware reset occur.
  **/
-static int __devinit igb_probe(struct pci_dev *pdev,
+static int igb_probe(struct pci_dev *pdev,
 			       const struct pci_device_id *ent)
 {
 	struct rtnet_device *netdev;
@@ -1488,7 +1488,7 @@ err_dma:
  * Hot-Plug event, or because the driver is going to be removed from
  * memory.
  **/
-static void __devexit igb_remove(struct pci_dev *pdev)
+static void igb_remove(struct pci_dev *pdev)
 {
 	struct rtnet_device *netdev = pci_get_drvdata(pdev);
 	struct igb_adapter *adapter = netdev->priv;
@@ -1555,7 +1555,7 @@ static void __devexit igb_remove(struct pci_dev *pdev)
  * Fields are initialized based on PCI device information and
  * OS network device settings (MTU size).
  **/
-static int __devinit igb_sw_init(struct igb_adapter *adapter)
+static int igb_sw_init(struct igb_adapter *adapter)
 {
 	struct e1000_hw *hw = &adapter->hw;
 	struct rtnet_device *netdev = adapter->netdev;
diff --git a/drivers/rt_8139too.c b/drivers/rt_8139too.c
index d2dfb4a..28aa95a 100644
--- a/drivers/rt_8139too.c
+++ b/drivers/rt_8139too.c
@@ -147,13 +147,13 @@ typedef enum {
 static struct {
         const char *name;
         u32 hw_flags;
-} board_info[] __devinitdata = {
+} board_info[] = {
         { "RealTek RTL8139", RTL8139_CAPS },
         { "RealTek RTL8129", RTL8129_CAPS },
 };
 
 
-static struct pci_device_id rtl8139_pci_tbl[] __devinitdata = {
+static struct pci_device_id rtl8139_pci_tbl[] = {
         {0x10ec, 0x8139, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 },
         {0x10ec, 0x8138, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 },
         {0x1113, 0x1211, PCI_ANY_ID, PCI_ANY_ID, 0, 0, RTL8139 },
@@ -623,7 +623,7 @@ static void rtl8139_chip_reset (void *ioaddr)
 }
 
 
-static int __devinit rtl8139_init_board (struct pci_dev *pdev,
+static int rtl8139_init_board (struct pci_dev *pdev,
                                          struct rtnet_device **dev_out)
 {
         void *ioaddr;
@@ -785,7 +785,7 @@ err_out:
 
 
 
-static int __devinit rtl8139_init_one (struct pci_dev *pdev,
+static int rtl8139_init_one (struct pci_dev *pdev,
                                        const struct pci_device_id *ent)
 {
         struct rtnet_device *rtdev = NULL;
@@ -927,7 +927,7 @@ err_out:
 }
 
 
-static void __devexit rtl8139_remove_one (struct pci_dev *pdev)
+static void rtl8139_remove_one (struct pci_dev *pdev)
 {
         struct rtnet_device *rtdev = pci_get_drvdata(pdev);
 
@@ -972,7 +972,7 @@ static void __devexit rtl8139_remove_one (struct pci_dev *pdev)
 #define EE_READ_CMD                (6)
 #define EE_ERASE_CMD        (7)
 
-static int __devinit read_eeprom (void *ioaddr, int location, int addr_len)
+static int read_eeprom (void *ioaddr, int location, int addr_len)
 {
         int i;
         unsigned retval = 0;
@@ -1825,7 +1825,7 @@ static struct pci_driver rtl8139_pci_driver = {
         name:                   DRV_NAME,
         id_table:               rtl8139_pci_tbl,
         probe:                  rtl8139_init_one,
-        remove:                 __devexit_p(rtl8139_remove_one),
+        remove:                 rtl8139_remove_one,
         suspend:                NULL,
         resume:                 NULL,
 };
diff --git a/drivers/rt_at91_ether.c b/drivers/rt_at91_ether.c
index d89afdb..d23e296 100644
--- a/drivers/rt_at91_ether.c
+++ b/drivers/rt_at91_ether.c
@@ -396,7 +396,7 @@ static void at91ether_check_link(unsigned long dev_id)
  *   continues to do so, for bug-compatibility).
  */
 
-static short __devinit unpack_mac_address(struct rtnet_device *dev, unsigned int hi, unsigned int lo)
+static short unpack_mac_address(struct rtnet_device *dev, unsigned int hi, unsigned int lo)
 {
 	char addr[6];
 
@@ -427,7 +427,7 @@ static short __devinit unpack_mac_address(struct rtnet_device *dev, unsigned int
 /*
  * Set the ethernet MAC address in dev->dev_addr
  */
-static void __devinit get_mac_address(struct rtnet_device *dev)
+static void get_mac_address(struct rtnet_device *dev)
 {
 	/* Check Specific-Address 1 */
 	if (unpack_mac_address(dev, at91_emac_read(AT91_EMAC_SA1H), at91_emac_read(AT91_EMAC_SA1L)))
@@ -989,7 +989,7 @@ static int at91ether_close_rt(struct rtnet_device *dev)
 /*
  * Initialize the ethernet interface
  */
-static int __devinit at91ether_setup_rt(unsigned long phy_type, unsigned short phy_address,
+static int at91ether_setup_rt(unsigned long phy_type, unsigned short phy_address,
 			struct platform_device *pdev, struct clk *ether_clk)
 {
 	struct at91_eth_data *board_data = pdev->dev.platform_data;
@@ -1136,7 +1136,7 @@ static int __devinit at91ether_setup_rt(unsigned long phy_type, unsigned short p
 /*
  * Detect MAC and PHY and perform initialization
  */
-static int __devinit at91ether_probe(struct platform_device *pdev)
+static int at91ether_probe(struct platform_device *pdev)
 {
 	unsigned int phyid1, phyid2;
 	int detected = -1;
@@ -1180,7 +1180,7 @@ static int __devinit at91ether_probe(struct platform_device *pdev)
 	return detected;
 }
 
-static int __devexit at91ether_remove(struct platform_device *pdev)
+static int at91ether_remove(struct platform_device *pdev)
 {
 	struct rtnet_device *dev = platform_get_drvdata(pdev);
 	struct at91_private *lp = dev->priv;
@@ -1197,7 +1197,7 @@ static int __devexit at91ether_remove(struct platform_device *pdev)
 
 static struct platform_driver at91ether_driver = {
 	.probe		= at91ether_probe,
-	.remove		= __devexit_p(at91ether_remove),
+	.remove		= at91ether_remove,
 	.driver		= {
 		.name	= DRV_NAME,
 		.owner	= THIS_MODULE,
diff --git a/drivers/rt_eepro100.c b/drivers/rt_eepro100.c
index 850381d..2ddf9a9 100644
--- a/drivers/rt_eepro100.c
+++ b/drivers/rt_eepro100.c
@@ -571,7 +571,7 @@ static inline void speedo_write_flush(long ioaddr)
 	(void)readb((void *)(ioaddr + SCBStatus));
 }
 
-static int __devinit eepro100_init_one (struct pci_dev *pdev,
+static int eepro100_init_one (struct pci_dev *pdev,
 		const struct pci_device_id *ent)
 {
 	unsigned long ioaddr;
@@ -1926,7 +1926,7 @@ static void set_rx_mode(struct rtnet_device *rtdev)
 }
 
 
-static void __devexit eepro100_remove_one (struct pci_dev *pdev)
+static void eepro100_remove_one (struct pci_dev *pdev)
 {
 	// *** RTnet ***
 	struct rtnet_device *rtdev = pci_get_drvdata (pdev);
@@ -1955,7 +1955,7 @@ static void __devexit eepro100_remove_one (struct pci_dev *pdev)
 	// *** RTnet ***
 }
 
-static struct pci_device_id eepro100_pci_tbl[] __devinitdata = {
+static struct pci_device_id eepro100_pci_tbl[] = {
 	{ PCI_VENDOR_ID_INTEL, 0x1229, PCI_ANY_ID, PCI_ANY_ID, },
 	{ PCI_VENDOR_ID_INTEL, 0x1209, PCI_ANY_ID, PCI_ANY_ID, },
 	{ PCI_VENDOR_ID_INTEL, 0x1029, PCI_ANY_ID, PCI_ANY_ID, },
@@ -1991,7 +1991,7 @@ static struct pci_driver eepro100_driver = {
 	name:		"eepro100_rt",
 	id_table:	eepro100_pci_tbl,
 	probe:		eepro100_init_one,
-	remove:		__devexit_p(eepro100_remove_one),
+	remove:		eepro100_remove_one,
 	suspend:	NULL,
 	resume:		NULL,
 };
diff --git a/drivers/rt_fec.c b/drivers/rt_fec.c
index a5a1022..c97e845 100644
--- a/drivers/rt_fec.c
+++ b/drivers/rt_fec.c
@@ -1588,7 +1588,7 @@ static int fec_enet_init(struct rtnet_device *ndev)
 }
 
 #ifdef CONFIG_OF
-static int __devinit fec_get_phy_mode_dt(struct platform_device *pdev)
+static int fec_get_phy_mode_dt(struct platform_device *pdev)
 {
 	struct device_node *np = pdev->dev.of_node;
 
@@ -1598,7 +1598,7 @@ static int __devinit fec_get_phy_mode_dt(struct platform_device *pdev)
 	return -ENODEV;
 }
 
-static void __devinit fec_reset_phy(struct platform_device *pdev)
+static void fec_reset_phy(struct platform_device *pdev)
 {
 	int err, phy_reset;
 	struct device_node *np = pdev->dev.of_node;
@@ -1630,8 +1630,7 @@ static inline void fec_reset_phy(struct platform_device *pdev)
 }
 #endif /* CONFIG_OF */
 
-static int __devinit
-fec_probe(struct platform_device *pdev)
+static int fec_probe(struct platform_device *pdev)
 {
 	struct fec_enet_netdev_priv *npriv;
 	struct fec_enet_private *fep;
@@ -1813,8 +1812,7 @@ failed_alloc_etherdev:
 	return ret;
 }
 
-static int __devexit
-fec_drv_remove(struct platform_device *pdev)
+static int fec_drv_remove(struct platform_device *pdev)
 {
 	struct rtnet_device *ndev = platform_get_drvdata(pdev);
 	struct fec_enet_private *fep = rtnetdev_priv(ndev);
@@ -1915,7 +1913,7 @@ static struct platform_driver fec_driver = {
 	},
 	.id_table = fec_devtype,
 	.probe	= fec_probe,
-	.remove	= __devexit_p(fec_drv_remove),
+	.remove	= fec_drv_remove,
 };
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
diff --git a/drivers/rt_natsemi.c b/drivers/rt_natsemi.c
index 3c18963..4a327a4 100644
--- a/drivers/rt_natsemi.c
+++ b/drivers/rt_natsemi.c
@@ -245,7 +245,7 @@ static int full_duplex[MAX_UNITS];
 #define PKT_BUF_SZ		1536 /* Size of each temporary Rx buffer. */
 
 /* These identify the driver base version and may not be removed. */
-static char version[] __devinitdata =
+static char version[] =
   KERN_INFO DRV_NAME " dp8381x driver, version "
       DRV_VERSION ", " DRV_RELDATE "\n"
   KERN_INFO "  originally by Donald Becker <bec...@scyld.com>\n"
@@ -374,11 +374,11 @@ enum pcistuff {
 static struct {
 	const char *name;
 	unsigned long flags;
-} natsemi_pci_info[] __devinitdata = {
+} natsemi_pci_info[] = {
 	{ "NatSemi DP8381[56]", PCI_IOTYPE },
 };
 
-static struct pci_device_id natsemi_pci_tbl[] __devinitdata = {
+static struct pci_device_id natsemi_pci_tbl[] = {
 	{ PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_83815, PCI_ANY_ID, PCI_ANY_ID, },
 	{ 0, },
 };
@@ -732,7 +732,7 @@ static int netdev_close(struct rtnet_device *dev);
 static int netdev_get_eeprom(struct rtnet_device *dev, u8 *buf);*/
 
 
-static int __devinit natsemi_probe1 (struct pci_dev *pdev,
+static int natsemi_probe1 (struct pci_dev *pdev,
 	const struct pci_device_id *ent)
 {
 	struct rtnet_device *dev; /*** RTnet ***/
@@ -2668,7 +2668,7 @@ static int netdev_close(struct rtnet_device *dev)
 }
 
 
-static void __devexit natsemi_remove1 (struct pci_dev *pdev)
+static void natsemi_remove1 (struct pci_dev *pdev)
 {
 
  /*** RTnet ***/
@@ -2801,7 +2801,7 @@ static struct pci_driver natsemi_driver = {
 	.name		= DRV_NAME,
 	.id_table	= natsemi_pci_tbl,
 	.probe		= natsemi_probe1,
-	.remove		= __devexit_p(natsemi_remove1),
+	.remove		= natsemi_remove1,
 /*#ifdef CONFIG_PM*/
 #if 0
 	.suspend	= natsemi_suspend,
diff --git a/drivers/rt_pcnet32.c b/drivers/rt_pcnet32.c
index b8fd9c7..892b97d 100644
--- a/drivers/rt_pcnet32.c
+++ b/drivers/rt_pcnet32.c
@@ -84,7 +84,7 @@ static int pcnet32_have_pci;
 /*
  * VLB I/O addresses
  */
-static unsigned int pcnet32_portlist[] __devinitdata =
+static unsigned int pcnet32_portlist[] =
 	{ 0x300, 0x320, 0x340, 0x360, 0 };
 
 
@@ -478,8 +478,7 @@ static struct pcnet32_access pcnet32_dwio = {
 /* only probes for non-PCI devices, the rest are handled by
  * pci_register_driver via pcnet32_probe_pci */
 
-static void __devinit
-pcnet32_probe_vlbus(void)
+static void pcnet32_probe_vlbus(void)
 {
     unsigned int *port, ioaddr;
 
@@ -497,8 +496,7 @@ pcnet32_probe_vlbus(void)
 }
 
 
-static int __devinit
-pcnet32_probe_pci(struct pci_dev *pdev, const struct pci_device_id *ent)
+static int pcnet32_probe_pci(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
     unsigned long ioaddr;
     int err;
@@ -529,8 +527,7 @@ pcnet32_probe_pci(struct pci_dev *pdev, const struct pci_device_id *ent)
  *  Called from both pcnet32_probe_vlbus and pcnet_probe_pci.
  *  pdev will be NULL when called from pcnet32_probe_vlbus.
  */
-static int __devinit
-pcnet32_probe1(unsigned long ioaddr, unsigned int irq_line, int shared,
+static int pcnet32_probe1(unsigned long ioaddr, unsigned int irq_line, int shared,
 		struct pci_dev *pdev)
 {
     struct pcnet32_private *lp;
diff --git a/drivers/rt_r8169.c b/drivers/rt_r8169.c
index 61aec41..5d06498 100644
--- a/drivers/rt_r8169.c
+++ b/drivers/rt_r8169.c
@@ -215,7 +215,7 @@ const static struct {
 };
 
 
-static struct pci_device_id rtl8169_pci_tbl[] __devinitdata = {
+static struct pci_device_id rtl8169_pci_tbl[] = {
 	{ PCI_VENDOR_ID_REALTEK, 0x8167, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
 	{ 0x10ec, 0x8169, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
 	{ 0x1186, 0x4300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },	/* <kk> D-Link DGE-528T */
@@ -653,7 +653,7 @@ void rtl8169_timer_handler( void *timer_data )
 
 //======================================================================================================
 //======================================================================================================
-static int __devinit rtl8169_init_board ( struct pci_dev *pdev, struct rtnet_device **dev_out, unsigned long *ioaddr_out)
+static int rtl8169_init_board ( struct pci_dev *pdev, struct rtnet_device **dev_out, unsigned long *ioaddr_out)
 {
 	unsigned long ioaddr = 0;
 	struct rtnet_device *rtdev;
@@ -818,7 +818,7 @@ err_out:
 
 
 //======================================================================================================
-static int __devinit rtl8169_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
+static int rtl8169_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
 {
 	struct rtnet_device *rtdev = NULL;	/*** RTnet ***/
 	struct rtl8169_private *priv = NULL;
@@ -1063,7 +1063,7 @@ static int __devinit rtl8169_init_one (struct pci_dev *pdev, const struct pci_de
 
 
 //======================================================================================================
-static void __devexit rtl8169_remove_one (struct pci_dev *pdev)
+static void rtl8169_remove_one (struct pci_dev *pdev)
 {
 	struct rtnet_device *rtdev = pci_get_drvdata(pdev);
 	struct rtl8169_private *priv = rtdev->priv;	/*** RTnet ***/
diff --git a/drivers/rt_via-rhine.c b/drivers/rt_via-rhine.c
index 067dab9..49be5f8 100644
--- a/drivers/rt_via-rhine.c
+++ b/drivers/rt_via-rhine.c
@@ -216,7 +216,7 @@ MODULE_PARM_DESC(cards, "array of cards to be supported (e.g. 1,0,1)");
 /*** RTnet ***/
 
 /* These identify the driver base version and may not be removed. */
-static char version[] __devinitdata =
+static char version[] =
 KERN_INFO DRV_NAME ".c:" DRV_VERSION "  " DRV_RELDATE "  jan.kis...@web.de\n";
 
 static char shortname[] = DRV_NAME;
@@ -395,7 +395,7 @@ enum chip_capability_flags {
 #define IOSYNC	do { readb((void *)dev->base_addr + StationAddr); } while (0)
 
 /* directly indexed by enum via_rhine_chips, above */
-static struct via_rhine_chip_info via_rhine_chip_info[] __devinitdata =
+static struct via_rhine_chip_info via_rhine_chip_info[] =
 {
 	{ "VIA VT86C100A Rhine", RHINE_IOTYPE, 128,
 	  CanHaveMII | ReqTxAlign | HasDavicomPhy },
@@ -407,7 +407,7 @@ static struct via_rhine_chip_info via_rhine_chip_info[] __devinitdata =
 	  CanHaveMII | HasWOL },
 };
 
-static struct pci_device_id via_rhine_pci_tbl[] __devinitdata =
+static struct pci_device_id via_rhine_pci_tbl[] =
 {
 	{0x1106, 0x3043, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VT86C100A},
 	{0x1106, 0x3065, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VT6102},
@@ -602,7 +602,7 @@ static void wait_for_reset(struct rtnet_device *dev, int chip_id, char *name) /*
 }
 
 #ifdef USE_MEM
-static void __devinit enable_mmio(long ioaddr, int chip_id)
+static void enable_mmio(long ioaddr, int chip_id)
 {
 	int n;
 	if (chip_id == VT86C100A) {
@@ -616,7 +616,7 @@ static void __devinit enable_mmio(long ioaddr, int chip_id)
 }
 #endif
 
-static void __devinit reload_eeprom(long ioaddr)
+static void reload_eeprom(long ioaddr)
 {
 	int i;
 	outb(0x20, ioaddr + MACRegEEcsr);
@@ -626,7 +626,7 @@ static void __devinit reload_eeprom(long ioaddr)
 			break;
 }
 
-static int __devinit via_rhine_init_one (struct pci_dev *pdev,
+static int via_rhine_init_one (struct pci_dev *pdev,
 					 const struct pci_device_id *ent)
 {
 	struct rtnet_device *dev; /*** RTnet ***/
@@ -1992,7 +1992,7 @@ static int via_rhine_close(struct rtnet_device *dev) /*** RTnet ***/
 }
 
 
-static void __devexit via_rhine_remove_one (struct pci_dev *pdev)
+static void via_rhine_remove_one (struct pci_dev *pdev)
 {
  /*** RTnet ***/
 	struct rtnet_device *dev = pci_get_drvdata(pdev);
@@ -2019,7 +2019,7 @@ static struct pci_driver via_rhine_driver = {
 	.name		= DRV_NAME,
 	.id_table	= via_rhine_pci_tbl,
 	.probe		= via_rhine_init_one,
-	.remove		= __devexit_p(via_rhine_remove_one),
+	.remove		= via_rhine_remove_one,
 };
 
 
diff --git a/drivers/tulip/eeprom.c b/drivers/tulip/eeprom.c
index 9d2770a..5f3b16c 100644
--- a/drivers/tulip/eeprom.c
+++ b/drivers/tulip/eeprom.c
@@ -29,7 +29,7 @@
    */
 
 /* Known cards that have old-style EEPROMs. */
-static struct eeprom_fixup eeprom_fixups[] __devinitdata = {
+static struct eeprom_fixup eeprom_fixups[] = {
   {"Asante", 0, 0, 0x94, {0x1e00, 0x0000, 0x0800, 0x0100, 0x018c,
 			  0x0000, 0x0000, 0xe078, 0x0001, 0x0050, 0x0018 }},
   {"SMC9332DST", 0, 0, 0xC0, { 0x1e00, 0x0000, 0x0800, 0x041f,
@@ -66,7 +66,7 @@ static struct eeprom_fixup eeprom_fixups[] __devinitdata = {
   {0, 0, 0, 0, {}}};
 
 
-static const char *block_name[] __devinitdata = {
+static const char *block_name[] = {
 	"21140 non-MII",
 	"21140 MII PHY",
 	"21142 Serial PHY",
@@ -76,7 +76,7 @@ static const char *block_name[] __devinitdata = {
 };
 
 
-void __devinit tulip_parse_eeprom(/*RTnet*/struct rtnet_device *rtdev)
+void tulip_parse_eeprom(/*RTnet*/struct rtnet_device *rtdev)
 {
 	/* The last media info list parsed, for multiport boards.  */
 	static struct mediatable *last_mediatable;
@@ -284,7 +284,7 @@ subsequent_board:
 #define EE_READ_CMD		(6)
 
 /* Note: this routine returns extra data bits for size detection. */
-int __devinit tulip_read_eeprom(long ioaddr, int location, int addr_len)
+int tulip_read_eeprom(long ioaddr, int location, int addr_len)
 {
 	int i;
 	unsigned retval = 0;
diff --git a/drivers/tulip/media.c b/drivers/tulip/media.c
index a6584b0..679a74e 100644
--- a/drivers/tulip/media.c
+++ b/drivers/tulip/media.c
@@ -459,7 +459,7 @@ int tulip_check_duplex(struct rtnet_device *rtdev)
 	return 0;
 }
 
-void __devinit tulip_find_mii (struct rtnet_device *rtdev, int board_idx)
+void tulip_find_mii (struct rtnet_device *rtdev, int board_idx)
 {
 	struct tulip_private *tp = rtdev->priv;
 	int phyn, phy_idx = 0;
diff --git a/drivers/tulip/tulip_core.c b/drivers/tulip/tulip_core.c
index fd28c37..4dedc56 100644
--- a/drivers/tulip/tulip_core.c
+++ b/drivers/tulip/tulip_core.c
@@ -38,7 +38,7 @@
 
 #include <rtnet_port.h>
 
-static char version[] __devinitdata =
+static char version[] =
 	"Linux Tulip driver version " DRV_VERSION " (" DRV_RELDATE ")\n";
 
 
@@ -199,7 +199,7 @@ struct tulip_chip_table tulip_tbl[] = {
 };
 
 
-static struct pci_device_id tulip_pci_tbl[] __devinitdata = {
+static struct pci_device_id tulip_pci_tbl[] = {
 	{ 0x1011, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21040 },
 	{ 0x1011, 0x0014, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21041 },
 	{ 0x1011, 0x0009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21140 },
@@ -953,7 +953,7 @@ static void set_rx_mode(/*RTnet*/struct rtnet_device *rtdev)
 #endif /* set_rx_mode */
 
 #ifdef XXX_CONFIG_TULIP_MWI
-static void __devinit tulip_mwi_config (struct pci_dev *pdev,
+static void tulip_mwi_config (struct pci_dev *pdev,
 					struct net_device *dev)
 {
 	struct tulip_private *tp = rtdev->priv;
@@ -1035,7 +1035,7 @@ out:
 #endif
 
 
-static int __devinit tulip_init_one (struct pci_dev *pdev,
+static int tulip_init_one (struct pci_dev *pdev,
 				     const struct pci_device_id *ent)
 {
 	struct tulip_private *tp;
@@ -1545,7 +1545,7 @@ err_out_free_netdev:
 }
 
 
-static void __devexit tulip_remove_one (struct pci_dev *pdev)
+static void tulip_remove_one (struct pci_dev *pdev)
 {
 	struct rtnet_device *rtdev = (struct rtnet_device *) pci_get_drvdata (pdev);
 	struct tulip_private *tp;
@@ -1580,7 +1580,7 @@ static struct pci_driver tulip_driver = {
 	name:		DRV_NAME,
 	id_table:	tulip_pci_tbl,
 	probe:		tulip_init_one,
-	remove:		__devexit_p(tulip_remove_one),
+	remove:		tulip_remove_one,
 };
 
 
-- 
1.7.10.4

Attachment: signature.asc
Description: This is a digitally signed message part.

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
RTnet-users mailing list
RTnet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rtnet-users

Reply via email to