X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fxen%2Fcore%2Fskbuff.c;fp=drivers%2Fxen%2Fcore%2Fskbuff.c;h=37b8e4cb42d71628eb3b257fd1f5cd4b64e7d5bc;hb=16c70f8c1b54b61c3b951b6fb220df250fe09b32;hp=f38f3cffedecb93e6ff4aeb658ff5f4d2a93fb56;hpb=4e76c8a9fa413ccc09d3f7f664183dcce3555d57;p=linux-2.6.git diff --git a/drivers/xen/core/skbuff.c b/drivers/xen/core/skbuff.c index f38f3cffe..37b8e4cb4 100644 --- a/drivers/xen/core/skbuff.c +++ b/drivers/xen/core/skbuff.c @@ -1,5 +1,4 @@ -#include #include #include #include @@ -18,7 +17,12 @@ /*static*/ kmem_cache_t *skbuff_cachep; EXPORT_SYMBOL(skbuff_cachep); -#define MAX_SKBUFF_ORDER 4 +/* Allow up to 64kB or page-sized packets (whichever is greater). */ +#if PAGE_SHIFT < 16 +#define MAX_SKBUFF_ORDER (16 - PAGE_SHIFT) +#else +#define MAX_SKBUFF_ORDER 0 +#endif static kmem_cache_t *skbuff_order_cachep[MAX_SKBUFF_ORDER + 1]; static struct { @@ -121,8 +125,7 @@ static int __init skbuff_init(void) for (order = 0; order <= MAX_SKBUFF_ORDER; order++) { size = PAGE_SIZE << order; sprintf(name[order], "xen-skb-%lu", size); - if (is_running_on_xen() && - (xen_start_info->flags & SIF_PRIVILEGED)) + if (is_running_on_xen() && is_initial_xendomain()) skbuff_order_cachep[order] = kmem_cache_create( name[order], size, size, 0, skbuff_ctor, skbuff_dtor);