diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 13 | 
1 files changed, 6 insertions, 7 deletions
| diff --git a/net/core/dev.c b/net/core/dev.c index 052dd478d3e..52fea5b28ca 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1457,7 +1457,9 @@ static bool can_checksum_protocol(unsigned long features, __be16 protocol)  		((features & NETIF_F_IP_CSUM) &&  		 protocol == htons(ETH_P_IP)) ||  		((features & NETIF_F_IPV6_CSUM) && -		 protocol == htons(ETH_P_IPV6))); +		 protocol == htons(ETH_P_IPV6)) || +		((features & NETIF_F_FCOE_CRC) && +		 protocol == htons(ETH_P_FCOE)));  }  static bool dev_can_checksum(struct net_device *dev, struct sk_buff *skb) @@ -2627,18 +2629,15 @@ static int process_backlog(struct napi_struct *napi, int quota)  		local_irq_disable();  		skb = __skb_dequeue(&queue->input_pkt_queue);  		if (!skb) { +			__napi_complete(napi);  			local_irq_enable(); -			napi_complete(napi); -			goto out; +			break;  		}  		local_irq_enable(); -		napi_gro_receive(napi, skb); +		netif_receive_skb(skb);  	} while (++work < quota && jiffies == start_time); -	napi_gro_flush(napi); - -out:  	return work;  } | 
