|
@@ -46,9 +46,10 @@
|
|
|
static int cvm_oct_fill_hw_skbuff(int pool, int size, int elements)
|
|
|
{
|
|
|
int freed = elements;
|
|
|
- while (freed) {
|
|
|
|
|
|
+ while (freed) {
|
|
|
struct sk_buff *skb = dev_alloc_skb(size + 256);
|
|
|
+
|
|
|
if (unlikely(skb == NULL))
|
|
|
break;
|
|
|
skb_reserve(skb, 256 - (((unsigned long)skb->data) & 0x7f));
|
|
@@ -81,10 +82,10 @@ static void cvm_oct_free_hw_skbuff(int pool, int size, int elements)
|
|
|
|
|
|
if (elements < 0)
|
|
|
pr_warn("Freeing of pool %u had too many skbuffs (%d)\n",
|
|
|
- pool, elements);
|
|
|
+ pool, elements);
|
|
|
else if (elements > 0)
|
|
|
pr_warn("Freeing of pool %u is missing %d skbuffs\n",
|
|
|
- pool, elements);
|
|
|
+ pool, elements);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -115,7 +116,7 @@ static int cvm_oct_fill_hw_memory(int pool, int size, int elements)
|
|
|
memory = kmalloc(size + 256, GFP_ATOMIC);
|
|
|
if (unlikely(memory == NULL)) {
|
|
|
pr_warn("Unable to allocate %u bytes for FPA pool %d\n",
|
|
|
- elements * size, pool);
|
|
|
+ elements * size, pool);
|
|
|
break;
|
|
|
}
|
|
|
fpa = (char *)(((unsigned long)memory + 256) & ~0x7fUL);
|
|
@@ -136,6 +137,7 @@ static void cvm_oct_free_hw_memory(int pool, int size, int elements)
|
|
|
{
|
|
|
char *memory;
|
|
|
char *fpa;
|
|
|
+
|
|
|
do {
|
|
|
fpa = cvmx_fpa_alloc(pool);
|
|
|
if (fpa) {
|
|
@@ -157,6 +159,7 @@ static void cvm_oct_free_hw_memory(int pool, int size, int elements)
|
|
|
int cvm_oct_mem_fill_fpa(int pool, int size, int elements)
|
|
|
{
|
|
|
int freed;
|
|
|
+
|
|
|
if (USE_SKBUFFS_IN_HW && pool == CVMX_FPA_PACKET_POOL)
|
|
|
freed = cvm_oct_fill_hw_skbuff(pool, size, elements);
|
|
|
else
|