From: Wei Liu Date: Tue, 7 May 2013 14:54:56 +0000 (+0200) Subject: netif: define XEN_NETIF_NR_SLOTS_MIN in public header X-Git-Tag: 4.3.0-rc2~101 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=723a375f4e283f2d2b730e98cf6f6cc226423a7f;p=people%2Fiwj%2Fxen.git netif: define XEN_NETIF_NR_SLOTS_MIN in public header Xen network protocol has implicit dependency on MAX_SKB_FRAGS. In order to remove dependency on MAX_SKB_FRAGS, we derive a constant from historical MAX_SKB_FRAGS for future reference. Signed-off-by: Wei Liu Acked-by: Ian Campbell Acked-by: Keir Fraser --- diff --git a/xen/include/public/io/netif.h b/xen/include/public/io/netif.h index ccde53b3af..9664998f05 100644 --- a/xen/include/public/io/netif.h +++ b/xen/include/public/io/netif.h @@ -30,6 +30,24 @@ #include "ring.h" #include "../grant_table.h" +/* + * Older implementation of Xen network frontend / backend has an + * implicit dependency on the MAX_SKB_FRAGS as the maximum number of + * ring slots a skb can use. Netfront / netback may not work as + * expected when frontend and backend have different MAX_SKB_FRAGS. + * + * A better approach is to add mechanism for netfront / netback to + * negotiate this value. However we cannot fix all possible + * frontends, so we need to define a value which states the minimum + * slots backend must support. + * + * The minimum value derives from older Linux kernel's MAX_SKB_FRAGS + * (18), which is proved to work with most frontends. Any new backend + * which doesn't negotiate with frontend should expect frontend to + * send a valid packet using slots up to this value. + */ +#define XEN_NETIF_NR_SLOTS_MIN 18 + /* * Notifications after enqueuing any type of message should be conditional on * the appropriate req_event or rsp_event field in the shared ring.