diff options
Diffstat (limited to 'net/ipv4/route.c')
| -rw-r--r-- | net/ipv4/route.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index da44fabf4dc5..2dc6dbb28467 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
| @@ -205,21 +205,27 @@ __u8 ip_tos2prio[16] = { | |||
| 205 | struct rt_hash_bucket { | 205 | struct rt_hash_bucket { |
| 206 | struct rtable *chain; | 206 | struct rtable *chain; |
| 207 | }; | 207 | }; |
| 208 | #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) | 208 | #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK) || \ |
| 209 | defined(CONFIG_PROVE_LOCKING) | ||
| 209 | /* | 210 | /* |
| 210 | * Instead of using one spinlock for each rt_hash_bucket, we use a table of spinlocks | 211 | * Instead of using one spinlock for each rt_hash_bucket, we use a table of spinlocks |
| 211 | * The size of this table is a power of two and depends on the number of CPUS. | 212 | * The size of this table is a power of two and depends on the number of CPUS. |
| 213 | * (on lockdep we have a quite big spinlock_t, so keep the size down there) | ||
| 212 | */ | 214 | */ |
| 213 | #if NR_CPUS >= 32 | 215 | #ifdef CONFIG_LOCKDEP |
| 214 | #define RT_HASH_LOCK_SZ 4096 | 216 | # define RT_HASH_LOCK_SZ 256 |
| 215 | #elif NR_CPUS >= 16 | ||
| 216 | #define RT_HASH_LOCK_SZ 2048 | ||
| 217 | #elif NR_CPUS >= 8 | ||
| 218 | #define RT_HASH_LOCK_SZ 1024 | ||
| 219 | #elif NR_CPUS >= 4 | ||
| 220 | #define RT_HASH_LOCK_SZ 512 | ||
| 221 | #else | 217 | #else |
| 222 | #define RT_HASH_LOCK_SZ 256 | 218 | # if NR_CPUS >= 32 |
| 219 | # define RT_HASH_LOCK_SZ 4096 | ||
| 220 | # elif NR_CPUS >= 16 | ||
| 221 | # define RT_HASH_LOCK_SZ 2048 | ||
| 222 | # elif NR_CPUS >= 8 | ||
| 223 | # define RT_HASH_LOCK_SZ 1024 | ||
| 224 | # elif NR_CPUS >= 4 | ||
| 225 | # define RT_HASH_LOCK_SZ 512 | ||
| 226 | # else | ||
| 227 | # define RT_HASH_LOCK_SZ 256 | ||
| 228 | # endif | ||
| 223 | #endif | 229 | #endif |
| 224 | 230 | ||
| 225 | static spinlock_t *rt_hash_locks; | 231 | static spinlock_t *rt_hash_locks; |
