|
@@ -1015,29 +1015,10 @@ err:
|
|
|
i = xennet_fill_frags(np, skb, &tmpq);
|
|
|
|
|
|
/*
|
|
|
- * Truesize approximates the size of true data plus
|
|
|
- * any supervisor overheads. Adding hypervisor
|
|
|
- * overheads has been shown to significantly reduce
|
|
|
- * achievable bandwidth with the default receive
|
|
|
- * buffer size. It is therefore not wise to account
|
|
|
- * for it here.
|
|
|
- *
|
|
|
- * After alloc_skb(RX_COPY_THRESHOLD), truesize is set
|
|
|
- * to RX_COPY_THRESHOLD + the supervisor
|
|
|
- * overheads. Here, we add the size of the data pulled
|
|
|
- * in xennet_fill_frags().
|
|
|
- *
|
|
|
- * We also adjust for any unused space in the main
|
|
|
- * data area by subtracting (RX_COPY_THRESHOLD -
|
|
|
- * len). This is especially important with drivers
|
|
|
- * which split incoming packets into header and data,
|
|
|
- * using only 66 bytes of the main data area (see the
|
|
|
- * e1000 driver for example.) On such systems,
|
|
|
- * without this last adjustement, our achievable
|
|
|
- * receive throughout using the standard receive
|
|
|
- * buffer size was cut by 25%(!!!).
|
|
|
- */
|
|
|
- skb->truesize += skb->data_len - RX_COPY_THRESHOLD;
|
|
|
+ * Truesize is the actual allocation size, even if the
|
|
|
+ * allocation is only partially used.
|
|
|
+ */
|
|
|
+ skb->truesize += PAGE_SIZE * skb_shinfo(skb)->nr_frags;
|
|
|
skb->len += skb->data_len;
|
|
|
|
|
|
if (rx->flags & XEN_NETRXF_csum_blank)
|