mlx4: Add ether callbacks
authorXiao Jia <stfairy@gmail.com>
Thu, 17 Sep 2015 03:01:41 +0000 (20:01 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 23 Sep 2015 20:46:27 +0000 (16:46 -0400)
kern/drivers/net/mlx4/main.c

index fc55a6c..2f1c8a1 100644 (file)
@@ -3868,6 +3868,44 @@ static const struct pci_device_id *search_pci_table(struct pci_device *needle)
        return NULL;
 }
 
+static void ether_attach(struct ether *edev)
+{
+       panic("Not implemented");
+}
+
+static void ether_transmit(struct ether *edev)
+{
+       panic("Not implemented");
+}
+
+static long ether_ifstat(struct ether *edev, void *a, long n, uint32_t offset)
+{
+       printk("edev %p a %p n %d offset %u\n", edev, a, n, offset);
+       return 0;
+}
+
+static long ether_ctl(struct ether *edev, void *buf, long n)
+{
+       panic("Not implemented");
+}
+
+static void ether_shutdown(struct ether *edev)
+{
+       panic("Not implemented");
+}
+
+static void ether_promiscuous(void *arg, int on)
+{
+       struct ether *edev = arg;
+       panic("Not implemented");
+}
+
+static void ether_multicast(void *arg, uint8_t *addr, int add)
+{
+       struct ether *edev = arg;
+       panic("Not implemented");
+}
+
 /* Called by devether's probe routines.  Return -1 if the edev does not match
  * any of your ctlrs. */
 static int mlx4_pnp(struct ether *edev)
@@ -3906,6 +3944,22 @@ static int mlx4_pnp(struct ether *edev)
        persist->edev = edev;
        mlx4_en_init();
 
+       // edev->ctlr is already initialized to struct mlx4_en_priv.
+       pdev = persist->pdev;
+       edev->irq = pdev->irqline;
+       edev->tbdf = MKBUS(BusPCI, pdev->bus, pdev->dev, pdev->func);
+       edev->mbps = 10000; // FIXME
+
+       edev->attach = ether_attach;
+       edev->transmit = ether_transmit;
+       edev->ifstat = ether_ifstat;
+       edev->ctl = ether_ctl;
+       edev->shutdown = ether_shutdown;
+
+       edev->arg = edev;
+       edev->promiscuous = ether_promiscuous;
+       edev->multicast = ether_multicast;
+
        return 0;
 }