--- /dev/null
+From 376414945d15aa636e65f7e773c1e398b7a21cb9 Mon Sep 17 00:00:00 2001
+From: Wei Liu <wei.liu2@citrix.com>
+Date: Thu, 2 May 2013 00:43:59 +0000
+Subject: xen-netback: better names for thresholds
+
+From: Wei Liu <wei.liu2@citrix.com>
+
+commit 376414945d15aa636e65f7e773c1e398b7a21cb9 upstream.
+
+This patch only changes some names to avoid confusion.
+
+In this patch we have:
+
+ MAX_SKB_SLOTS_DEFAULT -> FATAL_SKB_SLOTS_DEFAULT
+ max_skb_slots -> fatal_skb_slots
+ #define XEN_NETBK_LEGACY_SLOTS_MAX XEN_NETIF_NR_SLOTS_MIN
+
+The fatal_skb_slots is the threshold to determine whether a packet is
+malicious.
+
+XEN_NETBK_LEGACY_SLOTS_MAX is the maximum slots a valid packet can have at
+this point. It is defined to be XEN_NETIF_NR_SLOTS_MIN because that's
+guaranteed to be supported by all backends.
+
+Suggested-by: Ian Campbell <ian.campbell@citrix.com>
+Signed-off-by: Wei Liu <wei.liu2@citrix.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/xen-netback/netback.c | 49 ++++++++++++++++++++++----------------
+ 1 file changed, 29 insertions(+), 20 deletions(-)
+
+--- a/drivers/net/xen-netback/netback.c
++++ b/drivers/net/xen-netback/netback.c
+@@ -51,9 +51,17 @@
+ * This is the maximum slots a skb can have. If a guest sends a skb
+ * which exceeds this limit it is considered malicious.
+ */
+-#define MAX_SKB_SLOTS_DEFAULT 20
+-static unsigned int max_skb_slots = MAX_SKB_SLOTS_DEFAULT;
+-module_param(max_skb_slots, uint, 0444);
++#define FATAL_SKB_SLOTS_DEFAULT 20
++static unsigned int fatal_skb_slots = FATAL_SKB_SLOTS_DEFAULT;
++module_param(fatal_skb_slots, uint, 0444);
++
++/*
++ * To avoid confusion, we define XEN_NETBK_LEGACY_SLOTS_MAX indicating
++ * the maximum slots a valid packet can use. Now this value is defined
++ * to be XEN_NETIF_NR_SLOTS_MIN, which is supposed to be supported by
++ * all backend.
++ */
++#define XEN_NETBK_LEGACY_SLOTS_MAX XEN_NETIF_NR_SLOTS_MIN
+
+ typedef unsigned int pending_ring_idx_t;
+ #define INVALID_PENDING_RING_IDX (~0U)
+@@ -953,25 +961,26 @@ static int netbk_count_requests(struct x
+ /* This guest is really using too many slots and
+ * considered malicious.
+ */
+- if (unlikely(slots >= max_skb_slots)) {
++ if (unlikely(slots >= fatal_skb_slots)) {
+ netdev_err(vif->dev,
+ "Malicious frontend using %d slots, threshold %u\n",
+- slots, max_skb_slots);
++ slots, fatal_skb_slots);
+ netbk_fatal_tx_err(vif);
+ return -E2BIG;
+ }
+
+ /* Xen network protocol had implicit dependency on
+- * MAX_SKB_FRAGS. XEN_NETIF_NR_SLOTS_MIN is set to the
+- * historical MAX_SKB_FRAGS value 18 to honor the same
+- * behavior as before. Any packet using more than 18
+- * slots but less than max_skb_slots slots is dropped
++ * MAX_SKB_FRAGS. XEN_NETBK_LEGACY_SLOTS_MAX is set to
++ * the historical MAX_SKB_FRAGS value 18 to honor the
++ * same behavior as before. Any packet using more than
++ * 18 slots but less than fatal_skb_slots slots is
++ * dropped
+ */
+- if (!drop_err && slots >= XEN_NETIF_NR_SLOTS_MIN) {
++ if (!drop_err && slots >= XEN_NETBK_LEGACY_SLOTS_MAX) {
+ if (net_ratelimit())
+ netdev_dbg(vif->dev,
+ "Too many slots (%d) exceeding limit (%d), dropping packet\n",
+- slots, XEN_NETIF_NR_SLOTS_MIN);
++ slots, XEN_NETBK_LEGACY_SLOTS_MAX);
+ drop_err = -E2BIG;
+ }
+
+@@ -1053,7 +1062,7 @@ static struct gnttab_copy *xen_netbk_get
+ struct pending_tx_info *first = NULL;
+
+ /* At this point shinfo->nr_frags is in fact the number of
+- * slots, which can be as large as XEN_NETIF_NR_SLOTS_MIN.
++ * slots, which can be as large as XEN_NETBK_LEGACY_SLOTS_MAX.
+ */
+ nr_slots = shinfo->nr_frags;
+
+@@ -1420,12 +1429,12 @@ static unsigned xen_netbk_tx_build_gops(
+ struct sk_buff *skb;
+ int ret;
+
+- while ((nr_pending_reqs(netbk) + XEN_NETIF_NR_SLOTS_MIN
++ while ((nr_pending_reqs(netbk) + XEN_NETBK_LEGACY_SLOTS_MAX
+ < MAX_PENDING_REQS) &&
+ !list_empty(&netbk->net_schedule_list)) {
+ struct xenvif *vif;
+ struct xen_netif_tx_request txreq;
+- struct xen_netif_tx_request txfrags[XEN_NETIF_NR_SLOTS_MIN];
++ struct xen_netif_tx_request txfrags[XEN_NETBK_LEGACY_SLOTS_MAX];
+ struct page *page;
+ struct xen_netif_extra_info extras[XEN_NETIF_EXTRA_TYPE_MAX-1];
+ u16 pending_idx;
+@@ -1513,7 +1522,7 @@ static unsigned xen_netbk_tx_build_gops(
+ pending_idx = netbk->pending_ring[index];
+
+ data_len = (txreq.size > PKT_PROT_LEN &&
+- ret < XEN_NETIF_NR_SLOTS_MIN) ?
++ ret < XEN_NETBK_LEGACY_SLOTS_MAX) ?
+ PKT_PROT_LEN : txreq.size;
+
+ skb = alloc_skb(data_len + NET_SKB_PAD + NET_IP_ALIGN,
+@@ -1789,7 +1798,7 @@ static inline int rx_work_todo(struct xe
+ static inline int tx_work_todo(struct xen_netbk *netbk)
+ {
+
+- if ((nr_pending_reqs(netbk) + XEN_NETIF_NR_SLOTS_MIN
++ if ((nr_pending_reqs(netbk) + XEN_NETBK_LEGACY_SLOTS_MAX
+ < MAX_PENDING_REQS) &&
+ !list_empty(&netbk->net_schedule_list))
+ return 1;
+@@ -1874,11 +1883,11 @@ static int __init netback_init(void)
+ if (!xen_domain())
+ return -ENODEV;
+
+- if (max_skb_slots < XEN_NETIF_NR_SLOTS_MIN) {
++ if (fatal_skb_slots < XEN_NETBK_LEGACY_SLOTS_MAX) {
+ printk(KERN_INFO
+- "xen-netback: max_skb_slots too small (%d), bump it to XEN_NETIF_NR_SLOTS_MIN (%d)\n",
+- max_skb_slots, XEN_NETIF_NR_SLOTS_MIN);
+- max_skb_slots = XEN_NETIF_NR_SLOTS_MIN;
++ "xen-netback: fatal_skb_slots too small (%d), bump it to XEN_NETBK_LEGACY_SLOTS_MAX (%d)\n",
++ fatal_skb_slots, XEN_NETBK_LEGACY_SLOTS_MAX);
++ fatal_skb_slots = XEN_NETBK_LEGACY_SLOTS_MAX;
+ }
+
+ xen_netbk_group_nr = num_online_cpus();