|
|
@@ -589,13 +589,14 @@ void netvsc_linkstatus_callback(struct hv_device *device_obj,
|
|
|
}
|
|
|
|
|
|
static struct sk_buff *netvsc_alloc_recv_skb(struct net_device *net,
|
|
|
+ struct napi_struct *napi,
|
|
|
const struct ndis_tcp_ip_checksum_info *csum_info,
|
|
|
const struct ndis_pkt_8021q_info *vlan,
|
|
|
void *data, u32 buflen)
|
|
|
{
|
|
|
struct sk_buff *skb;
|
|
|
|
|
|
- skb = netdev_alloc_skb_ip_align(net, buflen);
|
|
|
+ skb = napi_alloc_skb(napi, buflen);
|
|
|
if (!skb)
|
|
|
return skb;
|
|
|
|
|
|
@@ -664,7 +665,8 @@ int netvsc_recv_callback(struct net_device *net,
|
|
|
net = vf_netdev;
|
|
|
|
|
|
/* Allocate a skb - TODO direct I/O to pages? */
|
|
|
- skb = netvsc_alloc_recv_skb(net, csum_info, vlan, data, len);
|
|
|
+ skb = netvsc_alloc_recv_skb(net, &nvchan->napi,
|
|
|
+ csum_info, vlan, data, len);
|
|
|
if (unlikely(!skb)) {
|
|
|
++net->stats.rx_dropped;
|
|
|
rcu_read_unlock();
|