mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-22 23:04:43 +00:00
xen-netback: Handle guests with too many frags
Xen network protocol had implicit dependency on MAX_SKB_FRAGS. Netback has to handle guests sending up to XEN_NETBK_LEGACY_SLOTS_MAX slots. To achieve that: - create a new skb - map the leftover slots to its frags (no linear buffer here!) - chain it to the previous through skb_shinfo(skb)->frag_list - map them - copy and coalesce the frags into a brand new one and send it to the stack - unmap the 2 old skb's pages It's also introduces new stat counters, which help determine how often the guest sends a packet with more than MAX_SKB_FRAGS frags. NOTE: if bisect brought you here, you should apply the series up until "xen-netback: Timeout packets in RX path", otherwise malicious guests can block other guests by not releasing their sent packets. Signed-off-by: Zoltan Kiss <zoltan.kiss@citrix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1bb332af4c
commit
e3377f36ca
3 changed files with 162 additions and 10 deletions
|
@ -253,6 +253,13 @@ static const struct xenvif_stat {
|
|||
"tx_zerocopy_fail",
|
||||
offsetof(struct xenvif, tx_zerocopy_fail)
|
||||
},
|
||||
/* Number of packets exceeding MAX_SKB_FRAG slots. You should use
|
||||
* a guest with the same MAX_SKB_FRAG
|
||||
*/
|
||||
{
|
||||
"tx_frag_overflow",
|
||||
offsetof(struct xenvif, tx_frag_overflow)
|
||||
},
|
||||
};
|
||||
|
||||
static int xenvif_get_sset_count(struct net_device *dev, int string_set)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue