[Xenomai-git] Gilles Chanteperdrix : rtnet: rtskb_pool changes
Module: xenomai-3 Branch: master Commit: 0888f32693b4bde02f0dc52dbee7dfa80aa1a591 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=0888f32693b4bde02f0dc52dbee7dfa80aa1a591 Author: Gilles Chanteperdrix Date: Tue Nov 11 17:20:41 2014 +0100 rtnet: rtskb_pool changes An rtskb_pool now has lock/unlock operations, called for the first dequeued buffer and the last queued one. At this chance, the struct rtskb_pool is introduced, and used everywhere a pool was used. rtskb_module_pool_init creates an rtskb_pool whose lock/unlock operations lock a module (the module from which rtskb_module_pool_init was called). The socket skb_pool lock/unlocks the socket rtdm_fd. Drivers pool not fixed yet. --- kernel/drivers/net/addons/cap.c| 24 +- kernel/drivers/net/addons/proxy.c |4 +- kernel/drivers/net/stack/include/rtdev.h | 15 +- .../drivers/net/stack/include/rtmac/rtmac_disc.h |8 +- .../drivers/net/stack/include/rtmac/rtmac_vnic.h |2 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h | 14 +- kernel/drivers/net/stack/include/rtnet_socket.h|6 +- kernel/drivers/net/stack/include/rtskb.h | 74 ++-- kernel/drivers/net/stack/include/rtwlan.h | 20 +- kernel/drivers/net/stack/include/stack_mgr.h |8 +- kernel/drivers/net/stack/ipv4/icmp.c | 31 +- kernel/drivers/net/stack/ipv4/ip_fragment.c|9 +- kernel/drivers/net/stack/ipv4/tcp/tcp.c| 17 +- kernel/drivers/net/stack/ipv4/udp/udp.c| 360 ++-- kernel/drivers/net/stack/packet/af_packet.c| 329 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c |4 +- .../drivers/net/stack/rtmac/nomac/nomac_module.c |5 +- kernel/drivers/net/stack/rtmac/rtmac_disc.c| 13 +- kernel/drivers/net/stack/rtmac/rtmac_syms.c|2 +- kernel/drivers/net/stack/rtmac/rtmac_vnic.c| 28 +- kernel/drivers/net/stack/rtmac/tdma/tdma_ioctl.c |4 +- kernel/drivers/net/stack/rtskb.c | 163 ++--- kernel/drivers/net/stack/socket.c | 48 +-- kernel/drivers/net/stack/stack_mgr.c | 76 ++--- 24 files changed, 678 insertions(+), 586 deletions(-) diff --git a/kernel/drivers/net/addons/cap.c b/kernel/drivers/net/addons/cap.c index 5586c77..e72122e 100644 --- a/kernel/drivers/net/addons/cap.c +++ b/kernel/drivers/net/addons/cap.c @@ -54,7 +54,7 @@ MODULE_PARM_DESC(rtcap_rtskbs, "Number of real-time socket buffers per " static rtdm_nrtsig_tcap_signal; static struct rtskb_queue cap_queue; -static struct rtskb_queue cap_pool; +static struct rtskb_pool cap_pool; static struct tap_device_t { struct net_device *tap_dev; @@ -69,13 +69,10 @@ static struct tap_device_t { void rtcap_rx_hook(struct rtskb *rtskb) { -if ((rtskb->cap_comp_skb = rtskb_dequeue(&cap_pool)) == 0) { +if ((rtskb->cap_comp_skb = rtskb_pool_dequeue(&cap_pool)) == 0) { tap_device[rtskb->rtdev->ifindex].tap_dev_stats.rx_dropped++; return; } -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -cap_pool.pool_balance--; -#endif if (cap_queue.first == NULL) cap_queue.first = rtskb; @@ -97,13 +94,10 @@ int rtcap_xmit_hook(struct rtskb *rtskb, struct rtnet_device *rtdev) rtdm_lockctx_t context; -if ((rtskb->cap_comp_skb = rtskb_dequeue(&cap_pool)) == 0) { +if ((rtskb->cap_comp_skb = rtskb_pool_dequeue(&cap_pool)) == 0) { tap_dev->tap_dev_stats.rx_dropped++; return tap_dev->orig_xmit(rtskb, rtdev); } -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -cap_pool.pool_balance--; -#endif rtskb->cap_next = NULL; rtskb->cap_start = rtskb->data; @@ -156,10 +150,7 @@ void rtcap_kfree_rtskb(struct rtskb *rtskb) rtdm_lock_put_irqrestore(&rtcap_lock, context); - rtskb_queue_tail(comp_skb->pool, comp_skb); -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED - comp_skb->pool->pool_balance++; -#endif + rtskb_pool_queue_tail(comp_skb->pool, comp_skb); return; } @@ -167,10 +158,7 @@ void rtcap_kfree_rtskb(struct rtskb *rtskb) rtdm_lock_put_irqrestore(&rtcap_lock, context); rtskb->chain_end = rtskb; -rtskb_queue_tail(rtskb->pool, rtskb); -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -rtskb->pool->pool_balance++; -#endif +rtskb_pool_queue_tail(rtskb->pool, rtskb); } @@ -510,7 +498,7 @@ int __init rtcap_init(void) goto error2; } -if (rtskb_pool_init(&cap_pool, rtcap_rtskbs * devices) < +if (rtskb_module_pool_init(&cap_pool, rtcap_rtskbs * devices) < rtcap_rtskbs * devices) { rtskb_pool_release(&cap_pool); ret = -ENOMEM; diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 1fedd7d..7c8c492 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -71,7 +71,7 @@
[Xenomai-git] Gilles Chanteperdrix : rtnet: rtskb_pool changes (2)
Module: xenomai-3 Branch: master Commit: 723087689a119eab41df5a32d36c99926055210c URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=723087689a119eab41df5a32d36c99926055210c Author: Gilles Chanteperdrix Date: Tue Nov 11 22:52:25 2014 +0100 rtnet: rtskb_pool changes (2) Move the per-driver rtskb_pool to rtnet_devices. At this chance, rework rtdev_reference/rtdev_dereference to lock/unlock module loading, also lock the module when an interface is up, so that an interface must be down in order to allow removing it. A new call rtnetdev_alloc_rtskb is added to be used instead of dev_alloc_rtskb to allocate devices from the device pool, its first argument being a pointer to a device instead of a pointer to a pool. --- kernel/drivers/net/addons/cap.c| 13 +- kernel/drivers/net/addons/proxy.c | 17 + kernel/drivers/net/drivers/8139too.c | 2339 ++-- kernel/drivers/net/drivers/at91_ether.c| 27 +- kernel/drivers/net/drivers/e1000/e1000.h |1 - kernel/drivers/net/drivers/e1000/e1000_main.c | 151 +- kernel/drivers/net/drivers/e1000e/e1000.h | 17 +- kernel/drivers/net/drivers/e1000e/netdev.c | 32 +- kernel/drivers/net/drivers/eepro100.c | 49 +- kernel/drivers/net/drivers/eth1394.c | 182 +- kernel/drivers/net/drivers/experimental/3c59x.c| 1134 +- .../drivers/net/drivers/experimental/e1000/e1000.h |3 +- .../net/drivers/experimental/e1000/e1000_main.c| 557 +++-- .../net/drivers/experimental/rt2500/rt2500pci.c| 461 ++-- .../net/drivers/experimental/rt2500/rt2x00core.c | 239 +- kernel/drivers/net/drivers/fec.c | 19 +- kernel/drivers/net/drivers/igb/igb.h |1 - kernel/drivers/net/drivers/igb/igb_main.c | 84 +- kernel/drivers/net/drivers/loopback.c | 12 +- kernel/drivers/net/drivers/macb.c | 15 +- .../drivers/net/drivers/mpc52xx_fec/mpc52xx_fec.c | 58 +- .../net/drivers/mpc52xx_fec/rt_mpc52xx_fec.h |8 +- kernel/drivers/net/drivers/mpc8260_fcc_enet.c | 66 +- kernel/drivers/net/drivers/mpc8xx_enet.c | 38 +- kernel/drivers/net/drivers/mpc8xx_fec.c| 72 +- kernel/drivers/net/drivers/natsemi.c | 27 +- kernel/drivers/net/drivers/pcnet32.c | 106 +- kernel/drivers/net/drivers/r8169.c | 107 +- kernel/drivers/net/drivers/rt_at91_ether.h |1 - kernel/drivers/net/drivers/rt_eth1394.h|9 +- kernel/drivers/net/drivers/rt_macb.h | 127 +- kernel/drivers/net/drivers/smc9.c | 148 +- kernel/drivers/net/drivers/tulip/interrupt.c | 82 +- kernel/drivers/net/drivers/tulip/tulip.h | 493 ++--- kernel/drivers/net/drivers/tulip/tulip_core.c | 81 +- kernel/drivers/net/drivers/via-rhine.c | 63 +- kernel/drivers/net/stack/include/rtdev.h | 48 +- kernel/drivers/net/stack/include/rtskb.h |1 - kernel/drivers/net/stack/include/rtwlan.h | 68 +- kernel/drivers/net/stack/rtdev.c | 293 +-- kernel/drivers/net/stack/rtmac/rtmac_vnic.c|2 +- kernel/drivers/net/stack/rtskb.c | 10 +- kernel/drivers/net/stack/rtwlan.c | 87 +- 43 files changed, 3567 insertions(+), 3781 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=723087689a119eab41df5a32d36c99926055210c ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : rtnet: rtskb_pool changes
Module: xenomai-3 Branch: next Commit: 0888f32693b4bde02f0dc52dbee7dfa80aa1a591 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=0888f32693b4bde02f0dc52dbee7dfa80aa1a591 Author: Gilles Chanteperdrix Date: Tue Nov 11 17:20:41 2014 +0100 rtnet: rtskb_pool changes An rtskb_pool now has lock/unlock operations, called for the first dequeued buffer and the last queued one. At this chance, the struct rtskb_pool is introduced, and used everywhere a pool was used. rtskb_module_pool_init creates an rtskb_pool whose lock/unlock operations lock a module (the module from which rtskb_module_pool_init was called). The socket skb_pool lock/unlocks the socket rtdm_fd. Drivers pool not fixed yet. --- kernel/drivers/net/addons/cap.c| 24 +- kernel/drivers/net/addons/proxy.c |4 +- kernel/drivers/net/stack/include/rtdev.h | 15 +- .../drivers/net/stack/include/rtmac/rtmac_disc.h |8 +- .../drivers/net/stack/include/rtmac/rtmac_vnic.h |2 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h | 14 +- kernel/drivers/net/stack/include/rtnet_socket.h|6 +- kernel/drivers/net/stack/include/rtskb.h | 74 ++-- kernel/drivers/net/stack/include/rtwlan.h | 20 +- kernel/drivers/net/stack/include/stack_mgr.h |8 +- kernel/drivers/net/stack/ipv4/icmp.c | 31 +- kernel/drivers/net/stack/ipv4/ip_fragment.c|9 +- kernel/drivers/net/stack/ipv4/tcp/tcp.c| 17 +- kernel/drivers/net/stack/ipv4/udp/udp.c| 360 ++-- kernel/drivers/net/stack/packet/af_packet.c| 329 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c |4 +- .../drivers/net/stack/rtmac/nomac/nomac_module.c |5 +- kernel/drivers/net/stack/rtmac/rtmac_disc.c| 13 +- kernel/drivers/net/stack/rtmac/rtmac_syms.c|2 +- kernel/drivers/net/stack/rtmac/rtmac_vnic.c| 28 +- kernel/drivers/net/stack/rtmac/tdma/tdma_ioctl.c |4 +- kernel/drivers/net/stack/rtskb.c | 163 ++--- kernel/drivers/net/stack/socket.c | 48 +-- kernel/drivers/net/stack/stack_mgr.c | 76 ++--- 24 files changed, 678 insertions(+), 586 deletions(-) diff --git a/kernel/drivers/net/addons/cap.c b/kernel/drivers/net/addons/cap.c index 5586c77..e72122e 100644 --- a/kernel/drivers/net/addons/cap.c +++ b/kernel/drivers/net/addons/cap.c @@ -54,7 +54,7 @@ MODULE_PARM_DESC(rtcap_rtskbs, "Number of real-time socket buffers per " static rtdm_nrtsig_tcap_signal; static struct rtskb_queue cap_queue; -static struct rtskb_queue cap_pool; +static struct rtskb_pool cap_pool; static struct tap_device_t { struct net_device *tap_dev; @@ -69,13 +69,10 @@ static struct tap_device_t { void rtcap_rx_hook(struct rtskb *rtskb) { -if ((rtskb->cap_comp_skb = rtskb_dequeue(&cap_pool)) == 0) { +if ((rtskb->cap_comp_skb = rtskb_pool_dequeue(&cap_pool)) == 0) { tap_device[rtskb->rtdev->ifindex].tap_dev_stats.rx_dropped++; return; } -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -cap_pool.pool_balance--; -#endif if (cap_queue.first == NULL) cap_queue.first = rtskb; @@ -97,13 +94,10 @@ int rtcap_xmit_hook(struct rtskb *rtskb, struct rtnet_device *rtdev) rtdm_lockctx_t context; -if ((rtskb->cap_comp_skb = rtskb_dequeue(&cap_pool)) == 0) { +if ((rtskb->cap_comp_skb = rtskb_pool_dequeue(&cap_pool)) == 0) { tap_dev->tap_dev_stats.rx_dropped++; return tap_dev->orig_xmit(rtskb, rtdev); } -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -cap_pool.pool_balance--; -#endif rtskb->cap_next = NULL; rtskb->cap_start = rtskb->data; @@ -156,10 +150,7 @@ void rtcap_kfree_rtskb(struct rtskb *rtskb) rtdm_lock_put_irqrestore(&rtcap_lock, context); - rtskb_queue_tail(comp_skb->pool, comp_skb); -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED - comp_skb->pool->pool_balance++; -#endif + rtskb_pool_queue_tail(comp_skb->pool, comp_skb); return; } @@ -167,10 +158,7 @@ void rtcap_kfree_rtskb(struct rtskb *rtskb) rtdm_lock_put_irqrestore(&rtcap_lock, context); rtskb->chain_end = rtskb; -rtskb_queue_tail(rtskb->pool, rtskb); -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -rtskb->pool->pool_balance++; -#endif +rtskb_pool_queue_tail(rtskb->pool, rtskb); } @@ -510,7 +498,7 @@ int __init rtcap_init(void) goto error2; } -if (rtskb_pool_init(&cap_pool, rtcap_rtskbs * devices) < +if (rtskb_module_pool_init(&cap_pool, rtcap_rtskbs * devices) < rtcap_rtskbs * devices) { rtskb_pool_release(&cap_pool); ret = -ENOMEM; diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 1fedd7d..7c8c492 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -71,7 +71,7 @@ st
[Xenomai-git] Gilles Chanteperdrix : rtnet: rtskb_pool changes (2)
Module: xenomai-3 Branch: next Commit: 723087689a119eab41df5a32d36c99926055210c URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=723087689a119eab41df5a32d36c99926055210c Author: Gilles Chanteperdrix Date: Tue Nov 11 22:52:25 2014 +0100 rtnet: rtskb_pool changes (2) Move the per-driver rtskb_pool to rtnet_devices. At this chance, rework rtdev_reference/rtdev_dereference to lock/unlock module loading, also lock the module when an interface is up, so that an interface must be down in order to allow removing it. A new call rtnetdev_alloc_rtskb is added to be used instead of dev_alloc_rtskb to allocate devices from the device pool, its first argument being a pointer to a device instead of a pointer to a pool. --- kernel/drivers/net/addons/cap.c| 13 +- kernel/drivers/net/addons/proxy.c | 17 + kernel/drivers/net/drivers/8139too.c | 2339 ++-- kernel/drivers/net/drivers/at91_ether.c| 27 +- kernel/drivers/net/drivers/e1000/e1000.h |1 - kernel/drivers/net/drivers/e1000/e1000_main.c | 151 +- kernel/drivers/net/drivers/e1000e/e1000.h | 17 +- kernel/drivers/net/drivers/e1000e/netdev.c | 32 +- kernel/drivers/net/drivers/eepro100.c | 49 +- kernel/drivers/net/drivers/eth1394.c | 182 +- kernel/drivers/net/drivers/experimental/3c59x.c| 1134 +- .../drivers/net/drivers/experimental/e1000/e1000.h |3 +- .../net/drivers/experimental/e1000/e1000_main.c| 557 +++-- .../net/drivers/experimental/rt2500/rt2500pci.c| 461 ++-- .../net/drivers/experimental/rt2500/rt2x00core.c | 239 +- kernel/drivers/net/drivers/fec.c | 19 +- kernel/drivers/net/drivers/igb/igb.h |1 - kernel/drivers/net/drivers/igb/igb_main.c | 84 +- kernel/drivers/net/drivers/loopback.c | 12 +- kernel/drivers/net/drivers/macb.c | 15 +- .../drivers/net/drivers/mpc52xx_fec/mpc52xx_fec.c | 58 +- .../net/drivers/mpc52xx_fec/rt_mpc52xx_fec.h |8 +- kernel/drivers/net/drivers/mpc8260_fcc_enet.c | 66 +- kernel/drivers/net/drivers/mpc8xx_enet.c | 38 +- kernel/drivers/net/drivers/mpc8xx_fec.c| 72 +- kernel/drivers/net/drivers/natsemi.c | 27 +- kernel/drivers/net/drivers/pcnet32.c | 106 +- kernel/drivers/net/drivers/r8169.c | 107 +- kernel/drivers/net/drivers/rt_at91_ether.h |1 - kernel/drivers/net/drivers/rt_eth1394.h|9 +- kernel/drivers/net/drivers/rt_macb.h | 127 +- kernel/drivers/net/drivers/smc9.c | 148 +- kernel/drivers/net/drivers/tulip/interrupt.c | 82 +- kernel/drivers/net/drivers/tulip/tulip.h | 493 ++--- kernel/drivers/net/drivers/tulip/tulip_core.c | 81 +- kernel/drivers/net/drivers/via-rhine.c | 63 +- kernel/drivers/net/stack/include/rtdev.h | 48 +- kernel/drivers/net/stack/include/rtskb.h |1 - kernel/drivers/net/stack/include/rtwlan.h | 68 +- kernel/drivers/net/stack/rtdev.c | 293 +-- kernel/drivers/net/stack/rtmac/rtmac_vnic.c|2 +- kernel/drivers/net/stack/rtskb.c | 10 +- kernel/drivers/net/stack/rtwlan.c | 87 +- 43 files changed, 3567 insertions(+), 3781 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=723087689a119eab41df5a32d36c99926055210c ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : rtnet: rtskb_pool changes (2)
Module: xenomai-gch Branch: for-forge Commit: a102ceb3e2b6001ff28c98bb4fafa14e158c1a27 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=a102ceb3e2b6001ff28c98bb4fafa14e158c1a27 Author: Gilles Chanteperdrix Date: Tue Nov 11 22:52:25 2014 +0100 rtnet: rtskb_pool changes (2) Move the per-driver rtskb_pool to rtnet_devices. At this chance, rework rtdev_reference/rtdev_dereference to lock/unlock module loading, also lock the module when an interface is up, so that an interface must be down in order to allow removing it. A new call rtnetdev_alloc_rtskb is added to be used instead of dev_alloc_rtskb to allocate devices from the device pool, its first argument being a pointer to a device instead of a pointer to a pool. --- kernel/drivers/net/addons/cap.c| 13 +- kernel/drivers/net/addons/proxy.c | 17 + kernel/drivers/net/drivers/8139too.c | 2339 ++-- kernel/drivers/net/drivers/at91_ether.c| 27 +- kernel/drivers/net/drivers/e1000/e1000.h |1 - kernel/drivers/net/drivers/e1000/e1000_main.c | 151 +- kernel/drivers/net/drivers/e1000e/e1000.h | 17 +- kernel/drivers/net/drivers/e1000e/netdev.c | 32 +- kernel/drivers/net/drivers/eepro100.c | 49 +- kernel/drivers/net/drivers/eth1394.c | 182 +- kernel/drivers/net/drivers/experimental/3c59x.c| 1134 +- .../drivers/net/drivers/experimental/e1000/e1000.h |3 +- .../net/drivers/experimental/e1000/e1000_main.c| 557 +++-- .../net/drivers/experimental/rt2500/rt2500pci.c| 461 ++-- .../net/drivers/experimental/rt2500/rt2x00core.c | 239 +- kernel/drivers/net/drivers/fec.c | 19 +- kernel/drivers/net/drivers/igb/igb.h |1 - kernel/drivers/net/drivers/igb/igb_main.c | 84 +- kernel/drivers/net/drivers/loopback.c | 12 +- kernel/drivers/net/drivers/macb.c | 15 +- .../drivers/net/drivers/mpc52xx_fec/mpc52xx_fec.c | 58 +- .../net/drivers/mpc52xx_fec/rt_mpc52xx_fec.h |8 +- kernel/drivers/net/drivers/mpc8260_fcc_enet.c | 66 +- kernel/drivers/net/drivers/mpc8xx_enet.c | 38 +- kernel/drivers/net/drivers/mpc8xx_fec.c| 72 +- kernel/drivers/net/drivers/natsemi.c | 27 +- kernel/drivers/net/drivers/pcnet32.c | 106 +- kernel/drivers/net/drivers/r8169.c | 107 +- kernel/drivers/net/drivers/rt_at91_ether.h |1 - kernel/drivers/net/drivers/rt_eth1394.h|9 +- kernel/drivers/net/drivers/rt_macb.h | 127 +- kernel/drivers/net/drivers/smc9.c | 148 +- kernel/drivers/net/drivers/tulip/interrupt.c | 82 +- kernel/drivers/net/drivers/tulip/tulip.h | 493 ++--- kernel/drivers/net/drivers/tulip/tulip_core.c | 81 +- kernel/drivers/net/drivers/via-rhine.c | 63 +- kernel/drivers/net/stack/include/rtdev.h | 48 +- kernel/drivers/net/stack/include/rtskb.h |1 - kernel/drivers/net/stack/include/rtwlan.h | 68 +- kernel/drivers/net/stack/rtdev.c | 293 +-- kernel/drivers/net/stack/rtmac/rtmac_vnic.c|2 +- kernel/drivers/net/stack/rtskb.c | 10 +- kernel/drivers/net/stack/rtwlan.c | 87 +- 43 files changed, 3567 insertions(+), 3781 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-gch.git;a=commitdiff;h=a102ceb3e2b6001ff28c98bb4fafa14e158c1a27 ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : rtnet: rtskb_pool changes
Module: xenomai-gch Branch: for-forge Commit: 43c51d042841990dec15e1b9afee37fad73ad0fc URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=43c51d042841990dec15e1b9afee37fad73ad0fc Author: Gilles Chanteperdrix Date: Tue Nov 11 17:20:41 2014 +0100 rtnet: rtskb_pool changes An rtskb_pool now has lock/unlock operations, called for the first dequeued buffer and the last queued one. At this chance, the struct rtskb_pool is introduced, and used everywhere a pool was used. rtskb_module_pool_init creates an rtskb_pool whose lock/unlock operations lock a module (the module from which rtskb_module_pool_init was called). The socket skb_pool lock/unlocks the socket rtdm_fd. Drivers pool not fixed yet. --- kernel/drivers/net/addons/cap.c| 24 +- kernel/drivers/net/addons/proxy.c |4 +- kernel/drivers/net/stack/include/rtdev.h | 15 +- .../drivers/net/stack/include/rtmac/rtmac_disc.h |8 +- .../drivers/net/stack/include/rtmac/rtmac_vnic.h |2 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h | 14 +- kernel/drivers/net/stack/include/rtnet_socket.h|6 +- kernel/drivers/net/stack/include/rtskb.h | 74 ++-- kernel/drivers/net/stack/include/rtwlan.h | 20 +- kernel/drivers/net/stack/include/stack_mgr.h |8 +- kernel/drivers/net/stack/ipv4/icmp.c | 31 +- kernel/drivers/net/stack/ipv4/ip_fragment.c|9 +- kernel/drivers/net/stack/ipv4/tcp/tcp.c| 17 +- kernel/drivers/net/stack/ipv4/udp/udp.c| 360 ++-- kernel/drivers/net/stack/packet/af_packet.c| 329 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c |4 +- .../drivers/net/stack/rtmac/nomac/nomac_module.c |5 +- kernel/drivers/net/stack/rtmac/rtmac_disc.c| 13 +- kernel/drivers/net/stack/rtmac/rtmac_syms.c|2 +- kernel/drivers/net/stack/rtmac/rtmac_vnic.c| 28 +- kernel/drivers/net/stack/rtmac/tdma/tdma_ioctl.c |4 +- kernel/drivers/net/stack/rtskb.c | 163 ++--- kernel/drivers/net/stack/socket.c | 48 +-- kernel/drivers/net/stack/stack_mgr.c | 76 ++--- 24 files changed, 678 insertions(+), 586 deletions(-) diff --git a/kernel/drivers/net/addons/cap.c b/kernel/drivers/net/addons/cap.c index 5586c77..e72122e 100644 --- a/kernel/drivers/net/addons/cap.c +++ b/kernel/drivers/net/addons/cap.c @@ -54,7 +54,7 @@ MODULE_PARM_DESC(rtcap_rtskbs, "Number of real-time socket buffers per " static rtdm_nrtsig_tcap_signal; static struct rtskb_queue cap_queue; -static struct rtskb_queue cap_pool; +static struct rtskb_pool cap_pool; static struct tap_device_t { struct net_device *tap_dev; @@ -69,13 +69,10 @@ static struct tap_device_t { void rtcap_rx_hook(struct rtskb *rtskb) { -if ((rtskb->cap_comp_skb = rtskb_dequeue(&cap_pool)) == 0) { +if ((rtskb->cap_comp_skb = rtskb_pool_dequeue(&cap_pool)) == 0) { tap_device[rtskb->rtdev->ifindex].tap_dev_stats.rx_dropped++; return; } -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -cap_pool.pool_balance--; -#endif if (cap_queue.first == NULL) cap_queue.first = rtskb; @@ -97,13 +94,10 @@ int rtcap_xmit_hook(struct rtskb *rtskb, struct rtnet_device *rtdev) rtdm_lockctx_t context; -if ((rtskb->cap_comp_skb = rtskb_dequeue(&cap_pool)) == 0) { +if ((rtskb->cap_comp_skb = rtskb_pool_dequeue(&cap_pool)) == 0) { tap_dev->tap_dev_stats.rx_dropped++; return tap_dev->orig_xmit(rtskb, rtdev); } -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -cap_pool.pool_balance--; -#endif rtskb->cap_next = NULL; rtskb->cap_start = rtskb->data; @@ -156,10 +150,7 @@ void rtcap_kfree_rtskb(struct rtskb *rtskb) rtdm_lock_put_irqrestore(&rtcap_lock, context); - rtskb_queue_tail(comp_skb->pool, comp_skb); -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED - comp_skb->pool->pool_balance++; -#endif + rtskb_pool_queue_tail(comp_skb->pool, comp_skb); return; } @@ -167,10 +158,7 @@ void rtcap_kfree_rtskb(struct rtskb *rtskb) rtdm_lock_put_irqrestore(&rtcap_lock, context); rtskb->chain_end = rtskb; -rtskb_queue_tail(rtskb->pool, rtskb); -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -rtskb->pool->pool_balance++; -#endif +rtskb_pool_queue_tail(rtskb->pool, rtskb); } @@ -510,7 +498,7 @@ int __init rtcap_init(void) goto error2; } -if (rtskb_pool_init(&cap_pool, rtcap_rtskbs * devices) < +if (rtskb_module_pool_init(&cap_pool, rtcap_rtskbs * devices) < rtcap_rtskbs * devices) { rtskb_pool_release(&cap_pool); ret = -ENOMEM; diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 1fedd7d..7c8c492 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -71,7 +7
[Xenomai-git] Gilles Chanteperdrix : rtnet: rtskb_pool changes (2)
Module: xenomai-gch Branch: for-forge Commit: e65d21853940f76f4b9d8e75773fb44a47cebc74 URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=e65d21853940f76f4b9d8e75773fb44a47cebc74 Author: Gilles Chanteperdrix Date: Tue Nov 11 22:52:25 2014 +0100 rtnet: rtskb_pool changes (2) Move the per-driver rtskb_pool to rtnet_devices. At this chance, rework rtdev_reference/rtdev_dereference to lock/unlock module loading, also lock the module when an interface is up, so that an interface must be down in order to allow removing it. A new call rtnetdev_alloc_rtskb is added to be used instead of dev_alloc_rtskb to allocate devices from the device pool, its first argument being a pointer to a device instead of a pointer to a pool. --- kernel/drivers/net/addons/cap.c| 13 +- kernel/drivers/net/addons/proxy.c | 17 + kernel/drivers/net/drivers/8139too.c | 2339 ++-- kernel/drivers/net/drivers/at91_ether.c| 27 +- kernel/drivers/net/drivers/e1000/e1000.h |1 - kernel/drivers/net/drivers/e1000/e1000_main.c | 151 +- kernel/drivers/net/drivers/e1000e/e1000.h | 17 +- kernel/drivers/net/drivers/e1000e/netdev.c | 32 +- kernel/drivers/net/drivers/eepro100.c | 49 +- kernel/drivers/net/drivers/eth1394.c | 182 +- kernel/drivers/net/drivers/experimental/3c59x.c| 1134 +- .../drivers/net/drivers/experimental/e1000/e1000.h |3 +- .../net/drivers/experimental/e1000/e1000_main.c| 557 +++-- .../net/drivers/experimental/rt2500/rt2500pci.c| 461 ++-- .../net/drivers/experimental/rt2500/rt2x00core.c | 239 +- kernel/drivers/net/drivers/fec.c | 19 +- kernel/drivers/net/drivers/igb/igb.h |1 - kernel/drivers/net/drivers/igb/igb_main.c | 84 +- kernel/drivers/net/drivers/loopback.c | 12 +- kernel/drivers/net/drivers/macb.c | 15 +- .../drivers/net/drivers/mpc52xx_fec/mpc52xx_fec.c | 58 +- .../net/drivers/mpc52xx_fec/rt_mpc52xx_fec.h |8 +- kernel/drivers/net/drivers/mpc8260_fcc_enet.c | 66 +- kernel/drivers/net/drivers/mpc8xx_enet.c | 38 +- kernel/drivers/net/drivers/mpc8xx_fec.c| 72 +- kernel/drivers/net/drivers/natsemi.c | 27 +- kernel/drivers/net/drivers/pcnet32.c | 106 +- kernel/drivers/net/drivers/r8169.c | 107 +- kernel/drivers/net/drivers/rt_at91_ether.h |1 - kernel/drivers/net/drivers/rt_eth1394.h|9 +- kernel/drivers/net/drivers/rt_macb.h | 127 +- kernel/drivers/net/drivers/smc9.c | 148 +- kernel/drivers/net/drivers/tulip/interrupt.c | 82 +- kernel/drivers/net/drivers/tulip/tulip.h | 493 ++--- kernel/drivers/net/drivers/tulip/tulip_core.c | 81 +- kernel/drivers/net/drivers/via-rhine.c | 63 +- kernel/drivers/net/stack/include/rtdev.h | 48 +- kernel/drivers/net/stack/include/rtskb.h |1 - kernel/drivers/net/stack/include/rtwlan.h | 68 +- kernel/drivers/net/stack/rtdev.c | 293 +-- kernel/drivers/net/stack/rtmac/rtmac_vnic.c|2 +- kernel/drivers/net/stack/rtskb.c | 10 +- kernel/drivers/net/stack/rtwlan.c | 87 +- 43 files changed, 3567 insertions(+), 3781 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-gch.git;a=commitdiff;h=e65d21853940f76f4b9d8e75773fb44a47cebc74 ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Gilles Chanteperdrix : rtnet: rtskb_pool changes
Module: xenomai-gch Branch: for-forge Commit: e34ffc04de7174d7dc82bbb5d2402d3e80b0003c URL: http://git.xenomai.org/?p=xenomai-gch.git;a=commit;h=e34ffc04de7174d7dc82bbb5d2402d3e80b0003c Author: Gilles Chanteperdrix Date: Tue Nov 11 17:20:41 2014 +0100 rtnet: rtskb_pool changes An rtskb_pool now has lock/unlock operations, called for the first dequeued buffer and the last queued one. At this chance, the struct rtskb_pool is introduced, and used everywhere a pool was used. rtskb_module_pool_init creates an rtskb_pool whose lock/unlock operations lock a module (the module from which rtskb_module_pool_init was called). The socket skb_pool lock/unlocks the socket rtdm_fd. Drivers pool not fixed yet. --- kernel/drivers/net/addons/cap.c| 24 +- kernel/drivers/net/addons/proxy.c |4 +- kernel/drivers/net/stack/include/rtdev.h | 15 +- .../drivers/net/stack/include/rtmac/rtmac_disc.h |8 +- .../drivers/net/stack/include/rtmac/rtmac_vnic.h |2 +- kernel/drivers/net/stack/include/rtmac/tdma/tdma.h | 14 +- kernel/drivers/net/stack/include/rtnet_socket.h|6 +- kernel/drivers/net/stack/include/rtskb.h | 74 ++-- kernel/drivers/net/stack/include/rtwlan.h | 20 +- kernel/drivers/net/stack/include/stack_mgr.h |8 +- kernel/drivers/net/stack/ipv4/icmp.c | 31 +- kernel/drivers/net/stack/ipv4/ip_fragment.c|9 +- kernel/drivers/net/stack/ipv4/tcp/tcp.c| 17 +- kernel/drivers/net/stack/ipv4/udp/udp.c| 360 ++-- kernel/drivers/net/stack/packet/af_packet.c| 329 +- kernel/drivers/net/stack/rtcfg/rtcfg_frame.c |4 +- .../drivers/net/stack/rtmac/nomac/nomac_module.c |5 +- kernel/drivers/net/stack/rtmac/rtmac_disc.c| 13 +- kernel/drivers/net/stack/rtmac/rtmac_syms.c|2 +- kernel/drivers/net/stack/rtmac/rtmac_vnic.c| 28 +- kernel/drivers/net/stack/rtmac/tdma/tdma_ioctl.c |4 +- kernel/drivers/net/stack/rtskb.c | 163 ++--- kernel/drivers/net/stack/socket.c | 48 +-- kernel/drivers/net/stack/stack_mgr.c | 76 ++--- 24 files changed, 678 insertions(+), 586 deletions(-) diff --git a/kernel/drivers/net/addons/cap.c b/kernel/drivers/net/addons/cap.c index 5586c77..e72122e 100644 --- a/kernel/drivers/net/addons/cap.c +++ b/kernel/drivers/net/addons/cap.c @@ -54,7 +54,7 @@ MODULE_PARM_DESC(rtcap_rtskbs, "Number of real-time socket buffers per " static rtdm_nrtsig_tcap_signal; static struct rtskb_queue cap_queue; -static struct rtskb_queue cap_pool; +static struct rtskb_pool cap_pool; static struct tap_device_t { struct net_device *tap_dev; @@ -69,13 +69,10 @@ static struct tap_device_t { void rtcap_rx_hook(struct rtskb *rtskb) { -if ((rtskb->cap_comp_skb = rtskb_dequeue(&cap_pool)) == 0) { +if ((rtskb->cap_comp_skb = rtskb_pool_dequeue(&cap_pool)) == 0) { tap_device[rtskb->rtdev->ifindex].tap_dev_stats.rx_dropped++; return; } -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -cap_pool.pool_balance--; -#endif if (cap_queue.first == NULL) cap_queue.first = rtskb; @@ -97,13 +94,10 @@ int rtcap_xmit_hook(struct rtskb *rtskb, struct rtnet_device *rtdev) rtdm_lockctx_t context; -if ((rtskb->cap_comp_skb = rtskb_dequeue(&cap_pool)) == 0) { +if ((rtskb->cap_comp_skb = rtskb_pool_dequeue(&cap_pool)) == 0) { tap_dev->tap_dev_stats.rx_dropped++; return tap_dev->orig_xmit(rtskb, rtdev); } -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -cap_pool.pool_balance--; -#endif rtskb->cap_next = NULL; rtskb->cap_start = rtskb->data; @@ -156,10 +150,7 @@ void rtcap_kfree_rtskb(struct rtskb *rtskb) rtdm_lock_put_irqrestore(&rtcap_lock, context); - rtskb_queue_tail(comp_skb->pool, comp_skb); -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED - comp_skb->pool->pool_balance++; -#endif + rtskb_pool_queue_tail(comp_skb->pool, comp_skb); return; } @@ -167,10 +158,7 @@ void rtcap_kfree_rtskb(struct rtskb *rtskb) rtdm_lock_put_irqrestore(&rtcap_lock, context); rtskb->chain_end = rtskb; -rtskb_queue_tail(rtskb->pool, rtskb); -#ifdef CONFIG_XENO_DRIVERS_NET_CHECKED -rtskb->pool->pool_balance++; -#endif +rtskb_pool_queue_tail(rtskb->pool, rtskb); } @@ -510,7 +498,7 @@ int __init rtcap_init(void) goto error2; } -if (rtskb_pool_init(&cap_pool, rtcap_rtskbs * devices) < +if (rtskb_module_pool_init(&cap_pool, rtcap_rtskbs * devices) < rtcap_rtskbs * devices) { rtskb_pool_release(&cap_pool); ret = -ENOMEM; diff --git a/kernel/drivers/net/addons/proxy.c b/kernel/drivers/net/addons/proxy.c index 1fedd7d..7c8c492 100644 --- a/kernel/drivers/net/addons/proxy.c +++ b/kernel/drivers/net/addons/proxy.c @@ -71,7 +7