From cfde97207dad51cd54a1d81624f8875960c19d59 Mon Sep 17 00:00:00 2001 From: Zheng Da Date: Thu, 21 Jan 2010 02:49:53 +0100 Subject: add pcnet32 to test dde linux26. --- dde_pcnet32_test/main.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 dde_pcnet32_test/main.c (limited to 'dde_pcnet32_test/main.c') diff --git a/dde_pcnet32_test/main.c b/dde_pcnet32_test/main.c new file mode 100644 index 00000000..46a73a69 --- /dev/null +++ b/dde_pcnet32_test/main.c @@ -0,0 +1,113 @@ +#include /* l4dde26_*() */ +#include /* l4dde26 networking */ + +#include /* struct sk_buff */ +#include /* pci_unregister_driver() */ +#include // initcall() +#include // msleep() + +#include "arping.h" + +int using_std = 1; + +extern int arping_verbose; +#define VERBOSE_LOG(fmt, ...) \ + do { \ + if (arping_verbose) printk(fmt, ##__VA_ARGS__); \ + } while (0); + +extern struct pci_driver ne2k_driver; +extern int arping(void); + +void open_nw_dev(void); +void open_nw_dev() +{ + struct net_device *dev; + struct net *net; + + read_lock(&dev_base_lock); + for_each_net(net) { + for_each_netdev(net, dev) { + int err = 0; + printk("dev: '%s'\n", dev->name); + printk("MAC: "mac_fmt"\n", mac_str(dev->dev_addr)); + + err = dev_open(dev); + } + } + read_unlock(&dev_base_lock); +} + +void close_nw_dev(void); +void close_nw_dev(void) +{ + struct net_device *dev; + struct net *net; + + read_lock(&dev_base_lock); + for_each_net(net) { + for_each_netdev(net, dev) { + int err = 0; + + err = dev_close(dev); + printk("closed %s\n", dev->name); + } + } + read_unlock(&dev_base_lock); +} + +static int net_rx_handle(struct sk_buff *skb) +{ + skb_push(skb, skb->dev->hard_header_len); + + struct arping_elem *e = kmalloc(sizeof(struct arping_elem), GFP_KERNEL); + e->skb = skb; + skb_get(skb); + e->next = NULL; + + if (arping_list == NULL) + arping_list = e; + else { + struct arping_elem *f = arping_list; + while (f->next) + f = f->next; + f->next = e; + } + + ddekit_sem_up(arping_semaphore); + + kfree_skb(skb); + + VERBOSE_LOG("freed skb, returning from netif_rx\n"); + return NET_RX_SUCCESS; +} + +//subsys_initcall(l4dde26_init_pci); + +int main(int argc, char **argv); +int main(int argc, char **argv) +{ + l4dde26_init(); + l4dde26_process_init(); + l4dde26_softirq_init(); + + printk("Initializing skb subsystem\n"); + skb_init(); + + l4dde26_do_initcalls(); + printk("Setting rx callback @ %p\n", net_rx_handle); + l4dde26_register_rx_callback(net_rx_handle); + + printk("Opening nw devs.\n"); + open_nw_dev(); + printk("dev is up and ready.\n"); + + arping(); + + close_nw_dev(); + + pci_unregister_driver(&ne2k_driver); + printk("shut down driver\n"); + + return 0; +} -- cgit v1.2.3 From d4dfc75678f145491cb2e1adc0aaa68ecfa8d15b Mon Sep 17 00:00:00 2001 From: Zheng Da Date: Wed, 27 Jan 2010 09:44:42 +0100 Subject: not unregister driver in dde_pcnet32_test. --- dde_pcnet32_test/main.c | 1 - 1 file changed, 1 deletion(-) (limited to 'dde_pcnet32_test/main.c') diff --git a/dde_pcnet32_test/main.c b/dde_pcnet32_test/main.c index 46a73a69..cb5ed5b1 100644 --- a/dde_pcnet32_test/main.c +++ b/dde_pcnet32_test/main.c @@ -106,7 +106,6 @@ int main(int argc, char **argv) close_nw_dev(); - pci_unregister_driver(&ne2k_driver); printk("shut down driver\n"); return 0; -- cgit v1.2.3