Re: My network device don't work
On Tue, Jun 20, 2017 at 10:12:34PM +0800, Greg KH wrote: > On Tue, Jun 20, 2017 at 02:32:31PM +0200, wiktoria.lewicka wrote: Expanding on Greg's response, the document you want to read is Documentation/process/coding-style.rst > > Hello. > > I write simple network device, but its don't work. Module is loading, > > loading, loading... > > Code: > > > > #include > > #include > > #include > > #include > > #include > > #define DEV_NAME "chwdp" > > > > struct net_device my_netdev; > > > > int init_my_net_dev(struct net_device *dev); > > > > struct net_device_ops nops = { > > .ndo_init = init_my_net_dev, Preferred indentation is 8 characters. > > //.ndo_uninit = uninit_my_net_dev, Prefer c89 comments. > > }; > > > > static int __init init_dev(void) > > { > > //my_netdev.netdev_ops = > > int result; > > if((netdev_boot_setup_check(_netdev))){ > > printk(KERN_ERR "NETDEV: setup error"); > > return 0; > > Why are you returning success if there was an error? > > And always try to use proper kernel coding style when writing kernel > code if you expect/want someone else to read it :) Also, you should run your code through scripts/checkpatch.pl. That script will catch coding style issues for you and help you learn them. Good luck, Tobin. ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: My network device don't work
On Tue, Jun 20, 2017 at 02:32:31PM +0200, wiktoria.lewicka wrote: > Hello. > I write simple network device, but its don't work. Module is loading, > loading, loading... > Code: > > #include > #include > #include > #include > #include > #define DEV_NAME "chwdp" > > struct net_device my_netdev; > > int init_my_net_dev(struct net_device *dev); > > struct net_device_ops nops = { > .ndo_init = init_my_net_dev, > //.ndo_uninit = uninit_my_net_dev, > }; > > static int __init init_dev(void) > { > //my_netdev.netdev_ops = > int result; > if((netdev_boot_setup_check(_netdev))){ > printk(KERN_ERR "NETDEV: setup error"); > return 0; Why are you returning success if there was an error? And always try to use proper kernel coding style when writing kernel code if you expect/want someone else to read it :) thanks, greg k-h ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: My network device don't work
On Tue, Jun 20, 2017 at 02:32:31PM +0200, wiktoria.lewicka wrote: > Hello. > I write simple network device, but its don't work. Module is loading, > loading, loading... > Code: > [...] Hello, "strncpy(my_netdev.name, DEV_NAME, 5)" only copies the 5 chars in "chwdp" without the null byte. You could bump it to 6 or maybe change 5 to IFNAMSIZ (the net_device.name's size) and then change the last byte to '\0' manually ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
My network device don't work
Hello. I write simple network device, but its don't work. Module is loading, loading, loading... Code: #include #include #include #include #include #define DEV_NAME "chwdp" struct net_device my_netdev; int init_my_net_dev(struct net_device *dev); struct net_device_ops nops = { .ndo_init = init_my_net_dev, //.ndo_uninit = uninit_my_net_dev, }; static int __init init_dev(void) { //my_netdev.netdev_ops = int result; if((netdev_boot_setup_check(_netdev))){ printk(KERN_ERR "NETDEV: setup error"); return 0; } strncpy(my_netdev.name, DEV_NAME, 5); if((result = register_netdev(_netdev))) printk(KERN_ERR "NETDEV: Error registering device"); printk("NETDEV: Device registered successfully"); return 0; } static void __exit remove_dev(void) { unregister_netdev(_netdev); } int init_my_net_dev(struct net_device *dev) { printk("INIT"); return 0; } module_init(init_dev); module_exit(remove_dev); ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies