Jonathan Hart

Don't install table miss entry for OVS 1.3 or CPqD switches.

We shouldn't have special behaviour for some switches, and we want
send-to-controller behaviour to be determined by the applications rather
than the switch type.

Change-Id: I87fd0c0c0b567660378d325286101d19d86aba33
...@@ -39,10 +39,6 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory { ...@@ -39,10 +39,6 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory {
39 39
40 private static final Logger log = LoggerFactory.getLogger(DriverManager.class); 40 private static final Logger log = LoggerFactory.getLogger(DriverManager.class);
41 41
42 - // Whether to use an OF 1.3 configured TTP, or to use an OF 1.0-style
43 - // single table with packet-ins.
44 - private static boolean cpqdUsePipeline13 = false;
45 -
46 /** 42 /**
47 * Return an IOFSwitch object based on switch's manufacturer description 43 * Return an IOFSwitch object based on switch's manufacturer description
48 * from OFDescStatsReply. 44 * from OFDescStatsReply.
...@@ -59,7 +55,7 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory { ...@@ -59,7 +55,7 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory {
59 if (vendor.startsWith("Stanford University, Ericsson Research and CPqD Research") 55 if (vendor.startsWith("Stanford University, Ericsson Research and CPqD Research")
60 && 56 &&
61 hw.startsWith("OpenFlow 1.3 Reference Userspace Switch")) { 57 hw.startsWith("OpenFlow 1.3 Reference Userspace Switch")) {
62 - return new OFSwitchImplCPqD13(dpid, desc, cpqdUsePipeline13); 58 + return new OFSwitchImplCPqD13(dpid, desc);
63 } 59 }
64 60
65 if (hw.startsWith("Open vSwitch")) { 61 if (hw.startsWith("Open vSwitch")) {
...@@ -129,18 +125,6 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory { ...@@ -129,18 +125,6 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory {
129 private DriverManager() { 125 private DriverManager() {
130 } 126 }
131 127
132 - /**
133 - * Sets the configuration parameter which determines how the CPqD switch
134 - * is set up. If usePipeline13 is true, a 1.3 pipeline will be set up on
135 - * the switch. Otherwise, the switch will be set up in a 1.0 style with
136 - * a single table where missed packets are sent to the controller.
137 - *
138 - * @param usePipeline13 whether to use a 1.3 pipeline or not
139 - */
140 - public static void setConfigForCpqd(boolean usePipeline13) {
141 - cpqdUsePipeline13 = usePipeline13;
142 - }
143 -
144 public static OpenFlowSwitchDriver getSwitch(Dpid dpid, 128 public static OpenFlowSwitchDriver getSwitch(Dpid dpid,
145 OFDescStatsReply desc, OFVersion ofv) { 129 OFDescStatsReply desc, OFVersion ofv) {
146 return new DriverManager().getOFSwitchImpl(dpid, desc, ofv); 130 return new DriverManager().getOFSwitchImpl(dpid, desc, ofv);
......
...@@ -15,6 +15,14 @@ ...@@ -15,6 +15,14 @@
15 */ 15 */
16 package org.onosproject.openflow.drivers; 16 package org.onosproject.openflow.drivers;
17 17
18 +import java.io.IOException;
19 +import java.util.ArrayList;
20 +import java.util.Collections;
21 +import java.util.List;
22 +import java.util.Map;
23 +import java.util.concurrent.ConcurrentHashMap;
24 +import java.util.concurrent.atomic.AtomicBoolean;
25 +
18 import org.onosproject.openflow.controller.Dpid; 26 import org.onosproject.openflow.controller.Dpid;
19 import org.onosproject.openflow.controller.RoleState; 27 import org.onosproject.openflow.controller.RoleState;
20 import org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch; 28 import org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch;
...@@ -57,14 +65,6 @@ import org.projectfloodlight.openflow.types.U32; ...@@ -57,14 +65,6 @@ import org.projectfloodlight.openflow.types.U32;
57 import org.projectfloodlight.openflow.types.U64; 65 import org.projectfloodlight.openflow.types.U64;
58 import org.projectfloodlight.openflow.util.HexString; 66 import org.projectfloodlight.openflow.util.HexString;
59 67
60 -import java.io.IOException;
61 -import java.util.ArrayList;
62 -import java.util.Collections;
63 -import java.util.List;
64 -import java.util.Map;
65 -import java.util.concurrent.ConcurrentHashMap;
66 -import java.util.concurrent.atomic.AtomicBoolean;
67 -
68 /** 68 /**
69 * OFDescriptionStatistics Vendor (Manufacturer Desc.): Stanford University, 69 * OFDescriptionStatistics Vendor (Manufacturer Desc.): Stanford University,
70 * Ericsson Research and CPqD Research. Make (Hardware Desc.) : OpenFlow 1.3 70 * Ericsson Research and CPqD Research. Make (Hardware Desc.) : OpenFlow 1.3
...@@ -107,15 +107,11 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { ...@@ -107,15 +107,11 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch {
107 107
108 private final Map<Integer, OFGroup> l2groups; 108 private final Map<Integer, OFGroup> l2groups;
109 109
110 - private final boolean usePipeline13; 110 + public OFSwitchImplCPqD13(Dpid dpid, OFDescStatsReply desc) {
111 -
112 - public OFSwitchImplCPqD13(Dpid dpid, OFDescStatsReply desc, boolean usePipeline13) {
113 super(dpid); 111 super(dpid);
114 driverHandshakeComplete = new AtomicBoolean(false); 112 driverHandshakeComplete = new AtomicBoolean(false);
115 l2groups = new ConcurrentHashMap<Integer, OFGroup>(); 113 l2groups = new ConcurrentHashMap<Integer, OFGroup>();
116 setSwitchDescription(desc); 114 setSwitchDescription(desc);
117 -
118 - this.usePipeline13 = usePipeline13;
119 } 115 }
120 116
121 /* (non-Javadoc) 117 /* (non-Javadoc)
...@@ -136,12 +132,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch { ...@@ -136,12 +132,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch {
136 } 132 }
137 startDriverHandshakeCalled = true; 133 startDriverHandshakeCalled = true;
138 factory = this.factory(); 134 factory = this.factory();
139 - if (!usePipeline13) { 135 +
140 - // Send packet-in to controller if a packet misses the first table
141 - populateTableMissEntry(0, true, false, false, 0);
142 - } //else {
143 - // configureSwitch();
144 - //}
145 sendBarrier(true); 136 sendBarrier(true);
146 } 137 }
147 138
......
...@@ -15,6 +15,11 @@ ...@@ -15,6 +15,11 @@
15 */ 15 */
16 package org.onosproject.openflow.drivers; 16 package org.onosproject.openflow.drivers;
17 17
18 +import java.util.ArrayList;
19 +import java.util.Collections;
20 +import java.util.List;
21 +import java.util.concurrent.atomic.AtomicBoolean;
22 +
18 import org.onosproject.openflow.controller.Dpid; 23 import org.onosproject.openflow.controller.Dpid;
19 import org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch; 24 import org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch;
20 import org.onosproject.openflow.controller.driver.SwitchDriverSubHandshakeAlreadyStarted; 25 import org.onosproject.openflow.controller.driver.SwitchDriverSubHandshakeAlreadyStarted;
...@@ -32,11 +37,6 @@ import org.projectfloodlight.openflow.types.OFBufferId; ...@@ -32,11 +37,6 @@ import org.projectfloodlight.openflow.types.OFBufferId;
32 import org.projectfloodlight.openflow.types.OFPort; 37 import org.projectfloodlight.openflow.types.OFPort;
33 import org.projectfloodlight.openflow.types.TableId; 38 import org.projectfloodlight.openflow.types.TableId;
34 39
35 -import java.util.ArrayList;
36 -import java.util.Collections;
37 -import java.util.List;
38 -import java.util.concurrent.atomic.AtomicBoolean;
39 -
40 /** 40 /**
41 * OFDescriptionStatistics Vendor (Manufacturer Desc.): Nicira, Inc. Make 41 * OFDescriptionStatistics Vendor (Manufacturer Desc.): Nicira, Inc. Make
42 * (Hardware Desc.) : Open vSwitch Model (Datapath Desc.) : None Software : 42 * (Hardware Desc.) : Open vSwitch Model (Datapath Desc.) : None Software :
...@@ -132,13 +132,10 @@ public class OFSwitchImplOVS13 extends AbstractOpenFlowSwitch { ...@@ -132,13 +132,10 @@ public class OFSwitchImplOVS13 extends AbstractOpenFlowSwitch {
132 } 132 }
133 } 133 }
134 134
135 -
136 private void configureSwitch() { 135 private void configureSwitch() {
137 - populateTableMissEntry(0, true, false, false, 0);
138 sendBarrier(true); 136 sendBarrier(true);
139 } 137 }
140 138
141 -
142 private void sendBarrier(boolean finalBarrier) { 139 private void sendBarrier(boolean finalBarrier) {
143 int xid = getNextTransactionId(); 140 int xid = getNextTransactionId();
144 if (finalBarrier) { 141 if (finalBarrier) {
......