diff --git a/scapy/base_classes.py b/scapy/base_classes.py
index e6be1126c17aa0afb9975aea1dc180344fc8871e..05e24266d5f717ec709447f7722d7a796876d206 100644
--- a/scapy/base_classes.py
+++ b/scapy/base_classes.py
@@ -25,21 +25,18 @@ class SetGen(Gen):
         self._iterpacket=_iterpacket
         if isinstance(set, (list, BasePacketList)):
             self.set = list(set)
+        elif (type(set) is tuple) and (2 <= len(set) <= 3) and \
+             all(type(i) is int for i in set):
+            self.set = [xrange(*set)]
         else:
             self.set = [set]
     def transf(self, element):
         return element
     def __iter__(self):
         for i in self.set:
-            if (type(i) is tuple) and (len(i) == 2) and type(i[0]) is int and type(i[1]) is int:
-                if  (i[0] <= i[1]):
-                    j=i[0]
-                    while j <= i[1]:
-                        yield j
-                        j += 1
-            elif (isinstance(i, Gen) and
-                  (self._iterpacket or not isinstance(i,BasePacket))) or (
-                  isinstance(i, (xrange, types.GeneratorType))):
+            if (isinstance(i, Gen) and
+                (self._iterpacket or not isinstance(i,BasePacket))) or (
+                    isinstance(i, (xrange, types.GeneratorType))):
                 for j in i:
                     yield j
             else: