diff options
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 01f9432c31ef..98bff5ada09a 100644 --- a/drivers/net/sfc/rx.c +++ b/drivers/net/sfc/rx.c  | |||
| @@ -444,7 +444,8 @@ static void efx_rx_packet__check_len(struct efx_rx_queue *rx_queue, | |||
| 444 | * the appropriate LRO method | 444 | * the appropriate LRO method | 
| 445 | */ | 445 | */ | 
| 446 | static void efx_rx_packet_lro(struct efx_channel *channel, | 446 | static void efx_rx_packet_lro(struct efx_channel *channel, | 
| 447 | struct efx_rx_buffer *rx_buf) | 447 | struct efx_rx_buffer *rx_buf, | 
| 448 | bool checksummed) | ||
| 448 | { | 449 | { | 
| 449 | struct napi_struct *napi = &channel->napi_str; | 450 | struct napi_struct *napi = &channel->napi_str; | 
| 450 | 451 | ||
| @@ -466,7 +467,8 @@ static void efx_rx_packet_lro(struct efx_channel *channel, | |||
| 466 | skb->len = rx_buf->len; | 467 | skb->len = rx_buf->len; | 
| 467 | skb->data_len = rx_buf->len; | 468 | skb->data_len = rx_buf->len; | 
| 468 | skb->truesize += rx_buf->len; | 469 | skb->truesize += rx_buf->len; | 
| 469 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 470 | skb->ip_summed = | 
| 471 | checksummed ? CHECKSUM_UNNECESSARY : CHECKSUM_NONE; | ||
| 470 | 472 | ||
| 471 | napi_gro_frags(napi); | 473 | napi_gro_frags(napi); | 
| 472 | 474 | ||
| @@ -475,6 +477,7 @@ out: | |||
| 475 | rx_buf->page = NULL; | 477 | rx_buf->page = NULL; | 
| 476 | } else { | 478 | } else { | 
| 477 | EFX_BUG_ON_PARANOID(!rx_buf->skb); | 479 | EFX_BUG_ON_PARANOID(!rx_buf->skb); | 
| 480 | EFX_BUG_ON_PARANOID(!checksummed); | ||
| 478 | 481 | ||
| 479 | napi_gro_receive(napi, rx_buf->skb); | 482 | napi_gro_receive(napi, rx_buf->skb); | 
| 480 | rx_buf->skb = NULL; | 483 | rx_buf->skb = NULL; | 
| @@ -570,7 +573,7 @@ void __efx_rx_packet(struct efx_channel *channel, | |||
| 570 | } | 573 | } | 
| 571 | 574 | ||
| 572 | if (likely(checksummed || rx_buf->page)) { | 575 | if (likely(checksummed || rx_buf->page)) { | 
| 573 | efx_rx_packet_lro(channel, rx_buf); | 576 | efx_rx_packet_lro(channel, rx_buf, checksummed); | 
| 574 | goto done; | 577 | goto done; | 
| 575 | } | 578 | } | 
| 576 | 579 | ||
