I am success, running "OpenFlow 1.0 for OpenWRT" on Buffalo WHR-G301N. I made patch for "AR7240 Ethernet Switch driver". this is add enable_learning attribute for ethernet driver.
My build image has been saved to the following URL. http://www.srchack.org/pub/JITAKU_RACK/2.5_OpenFlow/openwrt-ar71xx-generic-whr-g301n-squashfs-sysupgrade.bin http://www.srchack.org/pub/JITAKU_RACK/2.5_OpenFlow/config.tar.gz does not exist Test Tools? Way to verify that there is no problem All the features of "OpenFlow 1.0 for OpenWRT. for "OpenFlow 1.0 for OpenWRT" on WHR-G301N. Sorry my poor English. -- ------------------------------------------------------ Tochiro Mail:tochiro.srch...@gmail.com HP:http://www.srchack.org/ ------------------------------------------------------
--- trunk/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ar7240.c.ORG 2012-02-10 20:33:20.000000000 +0900 +++ trunk/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_ar7240.c 2012-02-25 13:31:02.000000000 +0900 @@ -626,6 +626,11 @@ if (as->vlan) { vid = as->vlan_id[as->pvid[port]]; mode = AR7240_PORT_VLAN_MODE_SECURE; + if (as->vlan_tagged & BIT(port)) { + mode = AR934X_PORT_VLAN2_8021Q_MODE_PORT_FALLBACK; + } else { + mode = AR934X_PORT_VLAN2_8021Q_MODE_SECURE; + } } else { vid = port; mode = AR7240_PORT_VLAN_MODE_PORT_ONLY; @@ -780,6 +785,50 @@ } static int +ar7240_set_learning_enable(struct switch_dev *dev, const struct switch_attr *attr, + struct switch_val *val) +{ + struct ar7240sw *as = sw_to_ar7240(dev); + int i; + u32 v; + + for (i = 0; i < AR7240_NUM_PORTS; i++) { + v = ar7240sw_reg_read(as->mii_bus, AR7240_REG_PORT_CTRL(i)); + v &= ~AR7240_PORT_CTRL_LEARN; + + if (val->value.i){ + /* Enable port learning for ALL */ + v |= AR7240_PORT_CTRL_LEARN; + } + + ar7240sw_reg_write(as->mii_bus, AR7240_REG_PORT_CTRL(i), v); + } + + return 0; +} + +static int +ar7240_get_learning_enable(struct switch_dev *dev, const struct switch_attr *attr, + struct switch_val *val) +{ + struct ar7240sw *as = sw_to_ar7240(dev); + u32 v; + + v = ar7240sw_reg_read(as->mii_bus, AR7240_REG_PORT_CTRL(0)); + + v &= AR7240_PORT_CTRL_LEARN; + + if (v == AR7240_PORT_CTRL_LEARN){ + val->value.i = 1; + } + else { + val->value.i = 0; + } + + return 0; +} + +static int ar7240_set_vlan(struct switch_dev *dev, const struct switch_attr *attr, struct switch_val *val) { @@ -985,6 +1034,13 @@ static struct switch_attr ar7240_globals[] = { { .type = SWITCH_TYPE_INT, + .name = "enable_learning", + .description = "Enable learning", + .set = ar7240_set_learning_enable, + .get = ar7240_get_learning_enable, + .max = 1 + }, { + .type = SWITCH_TYPE_INT, .name = "enable_vlan", .description = "Enable VLAN mode", .set = ar7240_set_vlan,
_______________________________________________ openflow-discuss mailing list openflow-discuss@lists.stanford.edu https://mailman.stanford.edu/mailman/listinfo/openflow-discuss