[PATCH 1/2] netprio_cgroup: Remove update_netdev_tables() since it is unnecessary
Subsystems:
networking [general] , the rest
STALE5101d
5 messages,
3 authors,
2012-09-12 · open the first message on its own page
The update_netdev_tables() function appears to be unnecessary, since the
write_update_netdev_table() function will adjust the priomaps as and when
required anyway. So drop the usage of update_netdev_tables() entirely.
Signed-off-by: Srivatsa S. Bhat <redacted>
---
net/core/netprio_cgroup.c | 32 --------------------------------
1 files changed, 0 insertions(+), 32 deletions(-)
diff --git a/net/core/netprio_cgroup.c b/net/core/netprio_cgroup.c
index c75e3f9..fd339bb0 100644
--- a/net/core/netprio_cgroup.c
+++ b/net/core/netprio_cgroup.c @@ -109,32 +109,6 @@ static int write_update_netdev_table(struct net_device *dev)
return ret ;
}
- static int update_netdev_tables ( void )
- {
- int ret = 0 ;
- struct net_device * dev ;
- u32 max_len ;
- struct netprio_map * map ;
-
- rtnl_lock ();
- max_len = atomic_read ( & max_prioidx ) + 1 ;
- for_each_netdev ( & init_net , dev ) {
- map = rtnl_dereference ( dev -> priomap );
- /*
- * don ' t allocate priomap if we didn ' t
- * change net_prio . ifpriomap ( map == NULL ),
- * this will speed up skb_update_prio .
- */
- if ( map && map -> priomap_len < max_len ) {
- ret = extend_netdev_table ( dev , max_len );
- if ( ret < 0 )
- break ;
- }
- }
- rtnl_unlock ();
- return ret ;
- }
-
static struct cgroup_subsys_state * cgrp_create ( struct cgroup * cgrp )
{
struct cgroup_netprio_state * cs ; @@ -153,12 +127,6 @@ static struct cgroup_subsys_state *cgrp_create(struct cgroup *cgrp)
goto out ;
}
- ret = update_netdev_tables ();
- if ( ret < 0 ) {
- put_prioidx ( cs -> prioidx );
- goto out ;
- }
-
return & cs -> css ;
out :
kfree ( cs );
* Check for non-NULL old_priomap outside the loop, since its
not going to change.
* Copy the old_priomap's length to a local variable and use
that for loop control, instead of costly pointer-dereferences.
Signed-off-by: Srivatsa S. Bhat <redacted>
---
net/core/netprio_cgroup.c | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/net/core/netprio_cgroup.c b/net/core/netprio_cgroup.c
index fd339bb0..0775bc9 100644
--- a/net/core/netprio_cgroup.c
+++ b/net/core/netprio_cgroup.c @@ -73,7 +73,7 @@ static int extend_netdev_table(struct net_device *dev, u32 new_len)
(( sizeof ( u32 ) * new_len ));
struct netprio_map * new_priomap = kzalloc ( new_size , GFP_KERNEL );
struct netprio_map * old_priomap ;
- int i ;
+ int i , old_len ;
old_priomap = rtnl_dereference ( dev -> priomap );
@@ -82,10 +82,12 @@ static int extend_netdev_table(struct net_device *dev, u32 new_len)
return - ENOMEM ;
}
- for ( i = 0 ;
- old_priomap && ( i < old_priomap -> priomap_len );
- i ++ )
- new_priomap -> priomap [ i ] = old_priomap -> priomap [ i ];
+ if ( old_priomap ) {
+ old_len = old_priomap -> priomap_len ;
+
+ for ( i = 0 ; i < old_len ; i ++ )
+ new_priomap -> priomap [ i ] = old_priomap -> priomap [ i ];
+ }
new_priomap -> priomap_len = new_len ;
- for (i = 0;
- old_priomap && (i < old_priomap->priomap_len);
- i++)
- new_priomap->priomap[i] = old_priomap->priomap[i];
+ if (old_priomap) {
+ old_len = old_priomap->priomap_len;
+
+ for (i = 0; i < old_len; i++)
+ new_priomap->priomap[i] = old_priomap->priomap[i];
+ }
Or:
memcpy(new_priomap->priomap, old_priomap->priomap,
old_priomap->priomap_len * sizeof old_priomap->priomap[0]);
David
On Tue, Sep 11, 2012 at 12:42:23PM +0100, David Laight wrote: quoted - for (i = 0;
- old_priomap && (i < old_priomap->priomap_len);
- i++)
- new_priomap->priomap[i] = old_priomap->priomap[i];
+ if (old_priomap) {
+ old_len = old_priomap->priomap_len;
+
+ for (i = 0; i < old_len; i++)
+ new_priomap->priomap[i] = old_priomap->priomap[i];
+ }
Or:
memcpy(new_priomap->priomap, old_priomap->priomap,
old_priomap->priomap_len * sizeof old_priomap->priomap[0]);
David Yes, the memcpy would be better here.
Neil
On 09/11/2012 05:12 PM, David Laight wrote: quoted - for (i = 0;
- old_priomap && (i < old_priomap->priomap_len);
- i++)
- new_priomap->priomap[i] = old_priomap->priomap[i];
+ if (old_priomap) {
+ old_len = old_priomap->priomap_len;
+
+ for (i = 0; i < old_len; i++)
+ new_priomap->priomap[i] = old_priomap->priomap[i];
+ }
Or:
memcpy(new_priomap->priomap, old_priomap->priomap,
old_priomap->priomap_len * sizeof old_priomap->priomap[0]);
Ah, indeed that would be better. I'll send out an updated version of the
patches. Thanks!
Regards,
Srivatsa S. Bhat