diff options
author | David S. Miller <davem@davemloft.net> | 2009-10-30 00:28:59 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-10-30 00:28:59 -0400 |
commit | 0519d83d83ed485b5a1f9222ff69d7d6c9bb8a01 (patch) | |
tree | 2e336be8a4bd2e59bcd4b69b00feb77c6672a9cb /drivers/net/sfc/rx.c | |
parent | 38bfd8f5bec496e8e0db8849e01c99a33479418a (diff) | |
parent | b5dd884e682cae6b8c037f9d11f3b623b4cf2011 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Diffstat (limited to 'drivers/net/sfc/rx.c')
-rw-r--r-- | drivers/net/sfc/rx.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/sfc/rx.c b/drivers/net/sfc/rx.c index ea59ed25b0d8..4b65c626a457 100644 --- a/drivers/net/sfc/rx.c +++ b/drivers/net/sfc/rx.c | |||
@@ -441,7 +441,8 @@ static void efx_rx_packet__check_len(struct efx_rx_queue *rx_queue, | |||
441 | * the appropriate LRO method | 441 | * the appropriate LRO method |
442 | */ | 442 | */ |
443 | static void efx_rx_packet_lro(struct efx_channel *channel, | 443 | static void efx_rx_packet_lro(struct efx_channel *channel, |
444 | struct efx_rx_buffer *rx_buf) | 444 | struct efx_rx_buffer *rx_buf, |
445 | bool checksummed) | ||
445 | { | 446 | { |
446 | struct napi_struct *napi = &channel->napi_str; | 447 | struct napi_struct *napi = &channel->napi_str; |
447 | 448 | ||
@@ -463,7 +464,8 @@ static void efx_rx_packet_lro(struct efx_channel *channel, | |||
463 | skb->len = rx_buf->len; | 464 | skb->len = rx_buf->len; |
464 | skb->data_len = rx_buf->len; | 465 | skb->data_len = rx_buf->len; |
465 | skb->truesize += rx_buf->len; | 466 | skb->truesize += rx_buf->len; |
466 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 467 | skb->ip_summed = |
468 | checksummed ? CHECKSUM_UNNECESSARY : CHECKSUM_NONE; | ||
467 | 469 | ||
468 | napi_gro_frags(napi); | 470 | napi_gro_frags(napi); |
469 | 471 | ||
@@ -472,6 +474,7 @@ out: | |||
472 | rx_buf->page = NULL; | 474 | rx_buf->page = NULL; |
473 | } else { | 475 | } else { |
474 | EFX_BUG_ON_PARANOID(!rx_buf->skb); | 476 | EFX_BUG_ON_PARANOID(!rx_buf->skb); |
477 | EFX_BUG_ON_PARANOID(!checksummed); | ||
475 | 478 | ||
476 | napi_gro_receive(napi, rx_buf->skb); | 479 | napi_gro_receive(napi, rx_buf->skb); |
477 | rx_buf->skb = NULL; | 480 | rx_buf->skb = NULL; |
@@ -567,7 +570,7 @@ void __efx_rx_packet(struct efx_channel *channel, | |||
567 | } | 570 | } |
568 | 571 | ||
569 | if (likely(checksummed || rx_buf->page)) { | 572 | if (likely(checksummed || rx_buf->page)) { |
570 | efx_rx_packet_lro(channel, rx_buf); | 573 | efx_rx_packet_lro(channel, rx_buf, checksummed); |
571 | goto done; | 574 | goto done; |
572 | } | 575 | } |
573 | 576 | ||