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 {
private static final Logger log = LoggerFactory.getLogger(DriverManager.class);
// Whether to use an OF 1.3 configured TTP, or to use an OF 1.0-style
// single table with packet-ins.
private static boolean cpqdUsePipeline13 = false;
/**
* Return an IOFSwitch object based on switch's manufacturer description
* from OFDescStatsReply.
......@@ -59,7 +55,7 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory {
if (vendor.startsWith("Stanford University, Ericsson Research and CPqD Research")
&&
hw.startsWith("OpenFlow 1.3 Reference Userspace Switch")) {
return new OFSwitchImplCPqD13(dpid, desc, cpqdUsePipeline13);
return new OFSwitchImplCPqD13(dpid, desc);
}
if (hw.startsWith("Open vSwitch")) {
......@@ -129,18 +125,6 @@ public final class DriverManager implements OpenFlowSwitchDriverFactory {
private DriverManager() {
}
/**
* Sets the configuration parameter which determines how the CPqD switch
* is set up. If usePipeline13 is true, a 1.3 pipeline will be set up on
* the switch. Otherwise, the switch will be set up in a 1.0 style with
* a single table where missed packets are sent to the controller.
*
* @param usePipeline13 whether to use a 1.3 pipeline or not
*/
public static void setConfigForCpqd(boolean usePipeline13) {
cpqdUsePipeline13 = usePipeline13;
}
public static OpenFlowSwitchDriver getSwitch(Dpid dpid,
OFDescStatsReply desc, OFVersion ofv) {
return new DriverManager().getOFSwitchImpl(dpid, desc, ofv);
......
......@@ -15,6 +15,14 @@
*/
package org.onosproject.openflow.drivers;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import org.onosproject.openflow.controller.Dpid;
import org.onosproject.openflow.controller.RoleState;
import org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch;
......@@ -57,14 +65,6 @@ import org.projectfloodlight.openflow.types.U32;
import org.projectfloodlight.openflow.types.U64;
import org.projectfloodlight.openflow.util.HexString;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* OFDescriptionStatistics Vendor (Manufacturer Desc.): Stanford University,
* Ericsson Research and CPqD Research. Make (Hardware Desc.) : OpenFlow 1.3
......@@ -107,15 +107,11 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch {
private final Map<Integer, OFGroup> l2groups;
private final boolean usePipeline13;
public OFSwitchImplCPqD13(Dpid dpid, OFDescStatsReply desc, boolean usePipeline13) {
public OFSwitchImplCPqD13(Dpid dpid, OFDescStatsReply desc) {
super(dpid);
driverHandshakeComplete = new AtomicBoolean(false);
l2groups = new ConcurrentHashMap<Integer, OFGroup>();
setSwitchDescription(desc);
this.usePipeline13 = usePipeline13;
}
/* (non-Javadoc)
......@@ -136,12 +132,7 @@ public class OFSwitchImplCPqD13 extends AbstractOpenFlowSwitch {
}
startDriverHandshakeCalled = true;
factory = this.factory();
if (!usePipeline13) {
// Send packet-in to controller if a packet misses the first table
populateTableMissEntry(0, true, false, false, 0);
} //else {
// configureSwitch();
//}
sendBarrier(true);
}
......
......@@ -15,6 +15,11 @@
*/
package org.onosproject.openflow.drivers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import org.onosproject.openflow.controller.Dpid;
import org.onosproject.openflow.controller.driver.AbstractOpenFlowSwitch;
import org.onosproject.openflow.controller.driver.SwitchDriverSubHandshakeAlreadyStarted;
......@@ -32,11 +37,6 @@ import org.projectfloodlight.openflow.types.OFBufferId;
import org.projectfloodlight.openflow.types.OFPort;
import org.projectfloodlight.openflow.types.TableId;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* OFDescriptionStatistics Vendor (Manufacturer Desc.): Nicira, Inc. Make
* (Hardware Desc.) : Open vSwitch Model (Datapath Desc.) : None Software :
......@@ -132,13 +132,10 @@ public class OFSwitchImplOVS13 extends AbstractOpenFlowSwitch {
}
}
private void configureSwitch() {
populateTableMissEntry(0, true, false, false, 0);
sendBarrier(true);
}
private void sendBarrier(boolean finalBarrier) {
int xid = getNextTransactionId();
if (finalBarrier) {
......