git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
drivers
/
xen
/
core
/
skbuff.c
diff --git
a/drivers/xen/core/skbuff.c
b/drivers/xen/core/skbuff.c
index
f38f3cf
..
eebcb4a
100644
(file)
--- a/
drivers/xen/core/skbuff.c
+++ b/
drivers/xen/core/skbuff.c
@@
-1,5
+1,4
@@
-#include <linux/config.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/kernel.h>
@@
-15,22
+14,27
@@
#include <asm/hypervisor.h>
/* Referenced in netback.c. */
#include <asm/hypervisor.h>
/* Referenced in netback.c. */
-/*static*/
kmem_cache_t
*skbuff_cachep;
+/*static*/
struct kmem_cache
*skbuff_cachep;
EXPORT_SYMBOL(skbuff_cachep);
EXPORT_SYMBOL(skbuff_cachep);
-#define MAX_SKBUFF_ORDER 4
-static kmem_cache_t *skbuff_order_cachep[MAX_SKBUFF_ORDER + 1];
+/* 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 struct kmem_cache *skbuff_order_cachep[MAX_SKBUFF_ORDER + 1];
static struct {
int size;
static struct {
int size;
-
kmem_cache_t
*cachep;
+
struct kmem_cache
*cachep;
} skbuff_small[] = { { 512, NULL }, { 2048, NULL } };
struct sk_buff *__alloc_skb(unsigned int length, gfp_t gfp_mask,
} skbuff_small[] = { { 512, NULL }, { 2048, NULL } };
struct sk_buff *__alloc_skb(unsigned int length, gfp_t gfp_mask,
- int fclone)
+ int fclone
, int node
)
{
int order, i;
{
int order, i;
-
kmem_cache_t
*cachep;
+
struct kmem_cache
*cachep;
length = SKB_DATA_ALIGN(length) + sizeof(struct skb_shared_info);
length = SKB_DATA_ALIGN(length) + sizeof(struct skb_shared_info);
@@
-74,7
+78,7
@@
struct sk_buff *__dev_alloc_skb(unsigned int length, gfp_t gfp_mask)
return skb;
}
return skb;
}
-static void skbuff_ctor(void *buf,
kmem_cache_t
*cachep, unsigned long unused)
+static void skbuff_ctor(void *buf,
struct kmem_cache
*cachep, unsigned long unused)
{
int order = 0;
{
int order = 0;
@@
-89,7
+93,7
@@
static void skbuff_ctor(void *buf, kmem_cache_t *cachep, unsigned long unused)
scrub_pages(buf, 1 << order);
}
scrub_pages(buf, 1 << order);
}
-static void skbuff_dtor(void *buf,
kmem_cache_t
*cachep, unsigned long unused)
+static void skbuff_dtor(void *buf,
struct kmem_cache
*cachep, unsigned long unused)
{
int order = 0;
{
int order = 0;
@@
-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);
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);
skbuff_order_cachep[order] = kmem_cache_create(
name[order], size, size, 0,
skbuff_ctor, skbuff_dtor);