NetGear fa311 driver update

From: Keith Craigie (kcraigie@mediabolic.com)
Date: Fri Mar 02 2001 - 12:46:14 EST


Hi all,

I brought NetGear's fa311 driver up to compile under 2.4.2. I put the
updated source here -

http://millweed.com/projects/fa311/fa311.c

Or you can apply the following patch to the source gotten from the
NetGear support site
(http://www.netgear-support.com/ts/downloads/fa31lx70.zip) -

--- /tmp/basdf/fa311.c Fri Jan 19 14:20:50 2001
+++ fa311.c Thu Mar 1 18:12:57 2001
@@ -174,23 +174,23 @@

 /* Device private data */
 struct fa311_priv {
- struct device * next; /* Next fa311device */
+ struct net_device * next; /* Next fa311device */
     struct fa311_queue tx_queue; /* Transmit Descriptor Queue */
     struct fa311_queue rx_queue; /* Receive Descriptor Queue */
- struct enet_statistics stats; /* MIB data */
+ struct net_device_stats stats; /* MIB data */
 };

-static struct device * fa311_dev_list; /* List of fa311devices */
+static struct net_device * fa311_dev_list; /* List of fa311devices */

 /* Linux Network Driver interface routines */
-extern int fa311_probe (struct device *dev);
-static int fa311_open (struct device *dev);
-static int fa311_close (struct device *dev);
-static int fa311_start_xmit (struct sk_buff *skb, struct device *dev);
-static void fa311_set_multicast_list (struct device *dev);
-static int fa311_ioctl (struct device *dev, struct ifreq *rq, int cmd);
+extern int fa311_probe (struct net_device *dev);
+static int fa311_open (struct net_device *dev);
+static int fa311_close (struct net_device *dev);
+static int fa311_start_xmit (struct sk_buff *skb, struct net_device *dev);
+static void fa311_set_multicast_list (struct net_device *dev);
+static int fa311_ioctl (struct net_device *dev, struct ifreq *rq, int cmd);
 static void fa311_interrupt (int irq, void *dev_id, struct pt_regs *regs);
-static struct enet_statistics *fa311_get_stats (struct device *dev);
+static struct net_device_stats *fa311_get_stats (struct net_device *dev);

 /* Support Functions */
 /*static u16 swap_16 (u16 us);*/
@@ -206,11 +206,11 @@
 static status fa311_dev_reset (u32 iobase);
 static status fa311_queue_create (struct fa311_queue *q, int count, int qtype);
 static status fa311_queue_delete (struct fa311_queue *q);
-static virt_addr fa311_tx_desc_get (struct device *dev);
-static virt_addr fa311_rx_desc_get (struct device *dev);
-static status fa311_phy_setup (struct device *dev);
+static virt_addr fa311_tx_desc_get (struct net_device *dev);
+static virt_addr fa311_rx_desc_get (struct net_device *dev);
+static status fa311_phy_setup (struct net_device *dev);
 static int fa311_crc (char * mc_addr);
-static void fa311_tx_skb_reclaim (struct device *dev, virt_addr desc_addr);
+static void fa311_tx_skb_reclaim (struct net_device *dev, virt_addr desc_addr);
 static void ReadEEWord(u16 iobase,u32 wordOffset,u16* pEeData);

@@ -226,7 +226,7 @@
  * registers each FA311 device found.
  */
 int
-fa311_probe (struct device *dev)
+fa311_probe (struct net_device *dev)
 {
     int dev_count;
     u8 bus;
@@ -353,7 +353,7 @@

 /* fa311_open - open and initialize a device */
 static int
-fa311_open (struct device *dev)
+fa311_open (struct net_device *dev)
 {
     u32 iobase = dev->base_addr;
     struct fa311_priv* priv = dev->priv;
@@ -448,7 +448,7 @@

 /* fa311_close - close a device, and reclaim resources */
 static int
-fa311_close (struct device *dev)
+fa311_close (struct net_device *dev)
 {
     u32 iobase = dev->base_addr;
     struct fa311_priv* priv = dev->priv;
@@ -480,19 +480,19 @@
  * CMDSTS, and signals the chip
  */
 static int
-fa311_start_xmit (struct sk_buff *skb, struct device *dev)
+fa311_start_xmit (struct sk_buff *skb, struct net_device *dev)
 {
     u32 iobase = dev->base_addr;
         u32 cmdsts;
     virt_addr tx_desc;
- struct enet_statistics *stats_p;
+ struct net_device_stats *stats_p;

     if (skb->len > ETH_MAX_PKT_SIZE)
         return ERROR;

         tx_desc = fa311_tx_desc_get(dev);
     if (tx_desc == NULL) {
- set_bit (0, &dev->tbusy);
+ netif_stop_queue(dev);
         DP_REG32_SET (DP_IMR, DP_IMR_TXOK | DP_IMR_TXIDLE);
         tx_desc = fa311_tx_desc_get (dev);
     }
@@ -553,7 +553,7 @@
  * size, and updates the BUFPTR and SKBPTR fields to the newly allocated SKB.
  */
 static int
-fa311_start_receive (struct device *dev)
+fa311_start_receive (struct net_device *dev)
 {
     u32 cmdsts;
         int len;
@@ -562,7 +562,7 @@
     struct sk_buff *cur_skb;
     struct sk_buff *new_skb;
         struct sk_buff *rx_skb;
- struct enet_statistics *stats_p;
+ struct net_device_stats *stats_p;

     stats_p = &((struct fa311_priv *)(dev->priv))->stats;

@@ -648,15 +648,15 @@
 }

 /* fa311_get_stats - get current device statistics */
-static struct enet_statistics *
-fa311_get_stats (struct device *dev)
+static struct net_device_stats *
+fa311_get_stats (struct net_device *dev)
 {
     return &((struct fa311_priv *)(dev->priv))->stats;
 }

 /* fa311_set_multicast_list - sets multicast, & promiscuous mode */
 static void
-fa311_set_multicast_list (struct device *dev)
+fa311_set_multicast_list (struct net_device *dev)
 {
     u32 iobase = dev->base_addr;
     u16 hash_table[32];
@@ -738,7 +738,7 @@

 /* fa311_interrupt - handle driver specific ioctls */
 static int
-fa311_ioctl (struct device *dev, struct ifreq *rq, int cmd)
+fa311_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
 {
     return -EOPNOTSUPP;
 }
@@ -749,7 +749,7 @@
 static void
 fa311_interrupt (int irq, void *dev_id, struct pt_regs *regs)
 {
- struct device * dev = dev_id;
+ struct net_device * dev = dev_id;
     u16 iobase = dev->base_addr;
     u32 reg_isr;
     u32 CurrentLinkStatus;
@@ -784,8 +784,8 @@

     if (reg_isr & (DP_ISR_TXOK | DP_ISR_TXIDLE)) {
         DP_REG32_CLR (DP_IMR, (DP_IMR_TXOK|DP_IMR_TXIDLE));
- clear_bit (0, &dev->tbusy);
- mark_bh (NET_BH);
+ netif_start_queue(dev);
+ netif_wake_queue(dev);
     }
 }

@@ -979,7 +979,7 @@
  * the owner, else returns NULL
  */
 static virt_addr
-fa311_tx_desc_get (struct device *dev)
+fa311_tx_desc_get (struct net_device *dev)
 {
     struct fa311_queue * q;
     virt_addr desc_addr = NULL;
@@ -998,7 +998,7 @@

 /* fa311_tx_skb_reclaim - reclaim SKBs in transmitted descriptors */
 static void
-fa311_tx_skb_reclaim (struct device *dev, virt_addr desc_addr)
+fa311_tx_skb_reclaim (struct net_device *dev, virt_addr desc_addr)
 {
         struct sk_buff * skb;
         struct fa311_queue * q;
@@ -1020,7 +1020,7 @@
  * the owner, else returns NULL
  */
 static virt_addr
-fa311_rx_desc_get (struct device *dev)
+fa311_rx_desc_get (struct net_device *dev)
 {
     struct fa311_queue * q;
     virt_addr desc_addr = NULL;
@@ -1038,7 +1038,7 @@

 /* fa311_phy_setup - reset and setup the PHY device */
 static status
-fa311_phy_setup (struct device *dev)
+fa311_phy_setup (struct net_device *dev)
 {
     u32 iobase = dev->base_addr;
     u32 dp_cfg_val;
@@ -1215,7 +1215,7 @@
 void
 cleanup_module (void)
 {
- struct device *cur_dev;
+ struct net_device *cur_dev;

     cur_dev=fa311_dev_list;
     while (cur_dev) {

-- 
Keith Craigie
R&D
Mediabolic, Inc.
415-346-2270 x115

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Mar 07 2001 - 21:00:12 EST