Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

Conflicts:

	drivers/net/wireless/iwlwifi/iwl4965-base.c
This commit is contained in:
David S. Miller
2008-06-28 01:19:40 -07:00
58 changed files with 362 additions and 216 deletions

View File

@@ -1290,12 +1290,14 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset,
{
unsigned int nr_pages = spd->nr_pages;
unsigned int poff, plen, len, toff, tlen;
int headlen, seg;
int headlen, seg, error = 0;
toff = *offset;
tlen = *total_len;
if (!tlen)
if (!tlen) {
error = 1;
goto err;
}
/*
* if the offset is greater than the linear part, go directly to
@@ -1337,7 +1339,8 @@ static int __skb_splice_bits(struct sk_buff *skb, unsigned int *offset,
* just jump directly to update and return, no point
* in going over fragments when the output is full.
*/
if (spd_fill_page(spd, virt_to_page(p), plen, poff, skb))
error = spd_fill_page(spd, virt_to_page(p), plen, poff, skb);
if (error)
goto done;
tlen -= plen;
@@ -1367,7 +1370,8 @@ map_frag:
if (!plen)
break;
if (spd_fill_page(spd, f->page, plen, poff, skb))
error = spd_fill_page(spd, f->page, plen, poff, skb);
if (error)
break;
tlen -= plen;
@@ -1380,7 +1384,10 @@ done:
return 0;
}
err:
return 1;
/* update the offset to reflect the linear part skip, if any */
if (!error)
*offset = toff;
return error;
}
/*