summaryrefslogtreecommitdiff
path: root/ofproto/bond.c
Commit message (Collapse)AuthorAgeFilesLines
* bond: Reorder elements in bond_slave structure.Bhanuprakash Bodireddy2017-11-031-2/+2
| | | | | | | | | | | By reordering elements in bond_slave structure, holes can be removed and saves a cache line. Before: structure size: 136, sum holes: 10, cachelines:3 After : structure size: 128, sum holes: 2, cachelines:2 Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodireddy@intel.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* lib: Move lib/poll-loop.h to include/openvswitchXiao Liang2017-11-031-1/+1
| | | | | | | | Poll-loop is the core to implement main loop. It should be available in libopenvswitch. Signed-off-by: Xiao Liang <shaw.leon@gmail.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* bond: send learning pkg when non active slave failed.minglumlu2017-11-011-0/+3
| | | | | | | | In active-active bond, a non-active slave failure doesn't trigger the sending of learning packets. This patch fixes this issue. Signed-off-by: minglumlu <ming.lu@citrix.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ofproto-dpif: Add boottime support field.Andy Zhou2017-08-031-1/+1
| | | | | | | | | | | | | | | | | When changing support fields, it may be unsafe to set support level beyond what datapath can support. This patch introduce the notion of boot time support and runtime support fields. Boot time support are set only once during ofproto start up phase, and not changed during runtime. The runtime support fields are the same as boot time support fields at the startup time, but can be changed via the 'ovs-appctl' command. However, each change will be checked against the corresponding boot time support field. Only feature reduction from the boot time support is allowed. Signed-off-by: Andy Zhou <azhou@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* bond: Adjust bond hash masksAndy Zhou2017-07-261-2/+2
| | | | | | | | | | Commit 42781e77035d (bond: Unify hash functions in hash action and entry lookup.) changed the BM_TCP's hash function, but did not update hash mask fields accordingly. Found by inspection. CC: Ilya Maximets <i.maximets@samsung.com> Signed-off-by: Andy Zhou <azhou@ovn.org> Acked-by: Ilya Maximets <i.maximets@samsung.com>
* bond: Remove bond_hash_src.Ilya Maximets2017-07-251-10/+2
| | | | | | | | | | | | | Since introduction of 'hash_mac()' function in commit 7e36ac42e33a ("lib/packet.h: add hash_mac()"), there is no need to have additional wrapper for mac address hashing. Lets use 'hash_mac()' directly and remove 'bond_hash_src()' to simplify the code. Suggested-by: Andy Zhou <azhou@ovn.org> Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Signed-off-by: Andy Zhou <azhou@ovn.org>
* bond: Unify hash functions in hash action and entry lookup.Ilya Maximets2017-07-251-15/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'lookup_bond_entry' currently uses 'flow_hash_symmetric_l4' while OVS_ACTION_ATTR_HASH uses 'flow_hash_5tuple'. This may lead to inconsistency in slave choosing for the new flows. In general, there is no point to unify hash functions, because it's not required for correct work, but it's logically wrong to use different hash functions there. Unfortunately we're not able to use RSS hash here, because we have no packet at this point, but we may reduce inconsistency by using 'flow_hash_5tuple' instead of 'flow_hash_symmetric_l4' because symmetric quality is not needed. 'flow_hash_symmetric_l4' was used previously just because there was no other implemented hash function at the moment and L2 fields was additionally involved in hash calculation. Now we have 5tuple hash and L2 not used anymore, so, we may replace the old function. 'flow_hash_5tuple' is preferable solution because it in 2 - 8 times (depending on the flow) faster than symmetric function. So, this change will also speed up handling of the new flows and statistics accounting. Additionally function 'bond_hash_tcp()' was removed for the reasons of code simplification and possible additional speed up. Co-authored-by: Andy Zhou <azhou@ovn.org> Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Signed-off-by: Andy Zhou <azhou@ovn.org>
* Fix some -Wimplicit-fallthrough warnings building with GCC 7Timothy Redaelli2017-07-111-0/+1
| | | | | | | | | | -Wimplicit-fallthrough warns when a switch case falls through and since this warning is enabled by -Wextra it breaks building with --enable-Werror. Added "/* fall through */" comment when needed in order to avoid the warning. Signed-off-by: Timothy Redaelli <tredaelli@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Support accepting and displaying port names in OVS tools.Ben Pfaff2017-05-311-3/+3
| | | | | | | | | | | | | | Until now, most ovs-ofctl commands have not accepted names for ports, only numbers, and have not been able to display port names either. It's a lot easier for users if they can use and see meaningful names instead of arbitrary numbers. This commit adds that support. For backward compatibility, only interactive ovs-ofctl commands by default display port names; to display them in scripts, use the new --names option. Signed-off-by: Ben Pfaff <blp@ovn.org> Tested-by: Aaron Conole <aconole@redhat.com>
* ofproto/bond: Make bond_may_recirc() private within bond.cAndy Zhou2017-04-171-8/+18
| | | | | | | Minor refactoring to make the bond code easier to read. Signed-off-by: Andy Zhou <azhou@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* Add support for 802.1ad (QinQ tunneling)Eric Garver2017-03-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Flow key handling changes: - Add VLAN header array in struct flow, to record multiple 802.1q VLAN headers. - Add dpif multi-VLAN capability probing. If datapath supports multi-VLAN, increase the maximum depth of nested OVS_KEY_ATTR_ENCAP. Refactor VLAN handling in dpif-xlate: - Introduce 'xvlan' to track VLAN stack during flow processing. - Input and output VLAN translation according to the xbundle type. Push VLAN action support: - Allow ethertype 0x88a8 in VLAN headers and push_vlan action. - Support push_vlan on dot1q packets. Use other_config:vlan-limit in table Open_vSwitch to limit maximum VLANs that can be matched. This allows us to preserve backwards compatibility. Add test cases for VLAN depth limit, Multi-VLAN actions and QinQ VLAN handling Co-authored-by: Thomas F Herbert <thomasfherbert@gmail.com> Signed-off-by: Thomas F Herbert <thomasfherbert@gmail.com> Co-authored-by: Xiao Liang <shaw.leon@gmail.com> Signed-off-by: Xiao Liang <shaw.leon@gmail.com> Signed-off-by: Eric Garver <e@erig.me> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ofproto/bond: Simplify bond_may_recirc()Andy Zhou2017-03-081-15/+10
| | | | | | | | The extra information passed back is no longer used outside bond.c. Make the API simpler. Signed-off-by: Andy Zhou <azhou@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ofproto/bond: Fix bond post recirc rule leak.Andy Zhou2017-02-241-10/+26
| | | | | | | | | | | | | When bond is removed or when its configuration changes, the post recirculation rules that are installed by current bond configuration, if any, should be also be removed. Reported-by: Huanle Han <hanxueluo@gmail.com> Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2017-February/328969.html CC: Huanle Han <hanxueluo@gmail.com> Signed-off-by: Andy Zhou <azhou@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org> Acked-by: Huanle Han <hanxueluo@gmail.com>
* ofproto/bond: Fix bond reconfiguration race condition.Andy Zhou2017-02-241-12/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During the upcall thread bond output translation, bond_may_recirc() is currently called outside the lock. In case the main thread executes bond_reconfigure() at the same time, the upcall thread may find bond state to be inconsistent when calling bond_update_post_recirc_rules(). This patch fixes the race condition by acquiring the write lock before calling bond_may_recirc(). The APIs are refactored slightly. The race condition can result in the following stack trace. Copied from 'Reported-at': Thread 23 handler69: Invalid write of size 8 update_recirc_rules (bond.c:385) bond_update_post_recirc_rules__ (bond.c:952) bond_update_post_recirc_rules (bond.c:960) output_normal (ofproto-dpif-xlate.c:2102) xlate_normal (ofproto-dpif-xlate.c:2858) xlate_output_action (ofproto-dpif-xlate.c:4407) do_xlate_actions (ofproto-dpif-xlate.c:5335) xlate_actions (ofproto-dpif-xlate.c:6198) upcall_xlate (ofproto-dpif-upcall.c:1129) process_upcall (ofproto-dpif-upcall.c:1271) recv_upcalls (ofproto-dpif-upcall.c:822) udpif_upcall_handler (ofproto-dpif-upcall.c:740) Address 0x18630490 is 1,904 bytes inside a block of size 12,288 free'd free (vg_replace_malloc.c:529) bond_entry_reset (bond.c:1635) bond_reconfigure (bond.c:457) bundle_set (ofproto-dpif.c:2896) ofproto_bundle_register (ofproto.c:1343) port_configure (bridge.c:1159) bridge_reconfigure (bridge.c:785) bridge_run (bridge.c:3099) main (ovs-vswitchd.c:111) Block was alloc'd at malloc (vg_replace_malloc.c:298) xmalloc (util.c:110) bond_entry_reset (bond.c:1629) bond_reconfigure (bond.c:457) bond_create (bond.c:245) bundle_set (ofproto-dpif.c:2900) ofproto_bundle_register (ofproto.c:1343) port_configure (bridge.c:1159) bridge_reconfigure (bridge.c:785) bridge_run (bridge.c:3099) main (ovs-vswitchd.c:111) Reported-by: Huanle Han <hanxueluo@gmail.com> Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2017-February/328969.html CC: Huanle Han <hanxueluo@gmail.com> Signed-off-by: Andy Zhou <azhou@ovn.org> Acked-by: Jarno Rajahalme <jarno@ovn.org> Acked-by: Huanle Han <hanxueluo@gmail.com>
* ofproto/bond: Fix bond/show when all interfaces are disabledAndy Zhou2017-02-171-4/+8
| | | | | | | | | Without this patch, when all slaves are disabled, the 'bond/show' command still shows the mac address of last active slave in 'active slave mac' output. This patch clears them to zeros. Signed-off-by: Andy Zhou <azhou@ovn.org> Acked-by: nickcooper-zhangtonghao <nic@opencloud.tech>
* ovs-appctl: Print lacp_fallback_ab info in "bond/show".nickcooper-zhangtonghao2017-02-161-0/+3
| | | | | Signed-off-by: nickcooper-zhangtonghao <nic@opencloud.tech> Signed-off-by: Andy Zhou <azhou@ovn.org>
* ofproto/bond: Drop traffic in balance-tcp mode without lacp.nickcooper-zhangtonghao2017-02-161-0/+4
| | | | | | | | | The balance-tcp mode requires the upstream switch to support 802.3ad with successful LACP negotiation. When bond ports are configured to balance-tcp mode without lacp, drop the traffic. Signed-off-by: nickcooper-zhangtonghao <nic@opencloud.tech> Signed-off-by: Andy Zhou <azhou@ovn.org>
* ofproto/bond: Validate active-slave mac.nickcooper-zhangtonghao2017-02-151-3/+3
| | | | | | | | | | | | | | | | | | | | | | That the mac of active-slave is invalid(e.g. 00:00:00:00:00:00) is incidental. The reason is described as below. In the bridge_reconfig(): 1. bond devices created in port_configure(). 2. the bonded interfaces may be disabled even calling bridge_run__(), because the interface link is not ready. The OvS will run bridge_run__() in next loop. In next loop, the active-slave may be selected. But OvS the bridge_reconfig() again, the bond_reconfigure() set active-slave mac zero and flag false. If using the 'ovs-appctl bond/show bond-name' to check active-slave mac, you will find the mac is zero and mac in the ovsdb is also zero. The active_slave_mac and active_slave_changed should be initialized when created. Signed-off-by: nickcooper-zhangtonghao <nic@opencloud.tech> Signed-off-by: Andy Zhou <azhou@ovn.org>
* ofproto-dpif: Unhide structure contents.Ben Pfaff2017-01-051-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Until now, ofproto-dpif.c has hidden the definitions of several structures, such as struct ofproto_dpif and struct rule_dpif. This kind of information hiding is often beneficial, because it forces code outside the file with the definition to use the documented interfaces. However, in this case it was starting to burden ofproto-dpif with an increasing number of trivial helpers that were not improving or maintaining a useful abstraction and that were making code harder to maintain and read. Information hiding also made it hard to move blocks of code outside ofproto-dpif.c itself, since any code moved out often needed new helpers if it used anything that wasn't previously exposed. In the present instance, upcoming patches will move code for tracing outside ofproto-dpif, and this would require adding several helpers that would just obscure the function of the code otherwise needlessly. In balance, it seems that there is more harm than good in the information hiding here, so this commit moves the definitions of several structures from ofproto-dpif.c into ofproto-dpif.h. It also removes all of the trivial helpers that had accumulated, instead changing their users to directly access the members that they needed. It also reorganizes ofproto-dpif.h, grouping structure definitions and function prototypes in a sensible way. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Lance Richardson <lrichard@redhat.com> Acked-by: Justin Pettit <jpettit@ovn.org>
* json: Move from lib to include/openvswitch.Terry Wilson2016-07-221-2/+3
| | | | | | | | | | | | | | | To easily allow both in- and out-of-tree building of the Python wrapper for the OVS JSON parser (e.g. w/ pip), move json.h to include/openvswitch. This also requires moving lib/{hmap,shash}.h. Both hmap.h and shash.h were #include-ing "util.h" even though the headers themselves did not use anything from there, but rather from include/openvswitch/util.h. Fixing that required including util.h in several C files mostly due to OVS_NOT_REACHED and things like xmalloc. Signed-off-by: Terry Wilson <twilson@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* hmap: Add HMAP_FOR_EACH_POP.Daniele Di Proietto2016-04-261-6/+4
| | | | | | | Makes popping each member of the hmap a bit easier. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ben Pfaff <blp@ovn.org>
* Move lib/ofp-actions.h to include/openvswitch directoryBen Warren2016-04-141-11/+10
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move lib/ofp-util.h to include/openvswitch directoryBen Warren2016-04-141-1/+1
| | | | | | | | This commit also adds several #include directives in source files in order to make the 'ofp-util.h' move possible Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move lib/match.h to include/openvswitch directoryBen Warren2016-04-141-1/+1
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Move lib/ofpbuf.h to include/openvswitch directoryBen Warren2016-03-301-2/+2
| | | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Acked-by: Ryan Moats <rmoats@us.ibm.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* list: Rename all functions in list.h with ovs_ prefix.Ben Warren2016-03-301-19/+19
| | | | | | | This attempts to prevent namespace collisions with other list libraries Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* list: Remove lib/list.h completely.Ben Warren2016-03-301-1/+1
| | | | | | | | All code is now in include/openvswitch/list.h. Signed-off-by: Ben Warren <ben@skyportsystems.com> Acked-by: Ryan Moats <rmoats@us.ibm.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* bond: don't re-zero recirc_id when creating bondSimon Horman2016-03-231-2/+0
| | | | | | | | The bond structure is already zeroed as it is allocated using xzalloc so there is no need to re-zero the recirc_id field. Signed-off-by: Simon Horman <simon.horman@netronome.com> Acked-by: Ben Pfaff <blp@ovn.org>
* Move lib/dynamic-string.h to include/openvswitch directoryBen Warren2016-03-191-1/+1
| | | | | Signed-off-by: Ben Warren <ben@skyportsystems.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* bond: Use correct type for slave's change_seq.Jarno Rajahalme2015-12-041-1/+1
| | | | | | | | | | | | | | | seq values are 64-bit, and storing them to a 32-bit variable causes the stored value never to match actual seq value after the seq value gets big enough. This is a likely cause of OVS main thread using 100% CPU in a system using bonds after some runtime. VMware-BZ: #1564993 Reported-by: Hiram Bayless <hbayless@vmware.com> Signed-off-by: Jarno Rajahalme <jarno@ovn.org> Acked-by: Joe Stringer <joe@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ofproto/bond: simplify rebalancing logicAndy Zhou2015-09-221-18/+19
| | | | | | | | | | | | | | | | | | | The current bond relancing logic is more complicated than necessary. When considering a bucket for rebalancing, we just need to make sure post rebalancing traffic will be closer to the ideal traffic split than before. This patch implements the simplification. There is a bug is current algorithm that causes a heavyly loaded bucket to ping-pong for each reblancing interval. The simplied loigc also fixes this bug. Though not the main motivation for the change, computations are now done with integer math rather than floating math. Reported-by: Gregory Smith <gasmith@nutanix.com> tested-by: Gregory Smith <gasmith@nutanix.com> Signed-off-by: Andy Zhou <azhou@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* userspace: Define and use struct eth_addr.Jarno Rajahalme2015-08-281-20/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Define struct eth_addr and use it instead of a uint8_t array for all ethernet addresses in OVS userspace. The struct is always the right size, and it can be assigned without an explicit memcpy, which makes code more readable. "struct eth_addr" is a good type name for this as many utility functions are already named accordingly. struct eth_addr can be accessed as bytes as well as ovs_be16's, which makes the struct 16-bit aligned. All use seems to be 16-bit aligned, so some algorithms on the ethernet addresses can be made a bit more efficient making use of this fact. As the struct fits into a register (in 64-bit systems) we pass it by value when possible. This patch also changes the few uses of Linux specific ETH_ALEN to OVS's own ETH_ADDR_LEN, and removes the OFP_ETH_ALEN, as it is no longer needed. This work stemmed from a desire to make all struct flow members assignable for unrelated exploration purposes. However, I think this might be a nice code readability improvement by itself. Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
* odp-util: Share fields between odp and dpif_backer.Joe Stringer2015-07-061-1/+1
| | | | | | | | Datapath support for some flow key fields is used inside ofproto-dpif as well as odp-util. Share these fields using the same structure. Signed-off-by: Joe Stringer <joestringer@nicira.com> Acked-by: Andy Zhou <azhou@nicira.com>
* ofproto-dpif: Restore metadata and registers on recirculation.Jarno Rajahalme2015-03-261-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | xlate_actions() now considers an optional recirculation context (via 'xin') and restores OpenFlow pipeline metadata (registers, 'metadata', etc.) based on it. The recirculation context may contain an action set and stack to be restored and further actions to be executed upon recirculation. It also contains a table_id number to be used for rule lookup in cases where no post-recirculation actions are used. The translation context internal metadata is restored using a new internal action: UNROLL_XLATE action stores the translation context data visible to OpenFlow controllers via PACKET_IN messages. This includes the current table number and the current rule cookie. UNROLL_XLATE actions are inserted only when the remaining actions may generate PACKET_IN messages. These changes allow the post-MPLS recirculation to properly continue with the pipeline metadata that existed at the time of recirculation. The internal table is still consulted for bonds. Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* dp-packet: Remove ofpbuf dependency.Pravin B Shelar2015-03-031-3/+4
| | | | | | | | | | | | | Currently dp-packet make use of ofpbuf for managing packet buffers. That complicates ofpbuf, by making dp-packet independent of ofpbuf both libraries can be optimized for their own use case. This avoids mapping operation between ofpbuf and dp_packet in datapath upcalls. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* ofproto/bond: Fix a race condition in updating post recirculation rulesAndy Zhou2015-02-171-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | When updating post recirc rules, rule management requires calls to hmap APIs, which requires proper locking to ensure mutual exclsion in accessing the hmap internal data structure. The locking currently is missing from the output_normal() xlate path, thus causing a race condition. The race condition leads to segfault crash of ovs-vswitchd, with the following stack trace: The crash was found by adding and deleting bond interfaces repeatedly with on-going traffic hitting the bond interfaces. The same test was ran over multiple days with this patch to ensure the same crash was not seen. The patch added the necessary lock annotation that would have caught the bug. Tested-by: Salvatore Cambria <salvatore.cambria@citrix.com> Reported-by: Salvatore Cambria <salvatore.cambria@citrix.com> Signed-off-by: Andy Zhou <azhou@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* lib: Move vlog.h to <openvswitch/vlog.h>Thomas Graf2014-12-151-1/+1
| | | | | | | | A new function vlog_insert_module() is introduced to avoid using list_insert() from the vlog.h header. Signed-off-by: Thomas Graf <tgraf@noironetworks.com> Acked-by: Ben Pfaff <blp@nicira.com>
* list: Rename struct list to struct ovs_listThomas Graf2014-12-151-11/+11
| | | | | | | struct list is a common name and can't be used in public headers. Signed-off-by: Thomas Graf <tgraf@noironetworks.com> Acked-by: Ben Pfaff <blp@nicira.com>
* Fix misspellings of "OpenFlow".Ben Pfaff2014-11-121-1/+1
| | | | | Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Flavio Leitner <fbl@redhat.com>
* Use magic ETH_ADDR_LEN instead of 6 for Ethernet address length.Wang Sheng-Hui2014-10-221-3/+3
| | | | | | | | | ETH_ADDR_LEN is defined in lib/packets.h, valued 6. Use this macro instead of magic number 6 to represent the length of eth mac address. Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* bridge: Keep bond active slave selection across OVS restartAndy Zhou2014-10-061-0/+86
| | | | | | | | | | | | | | | | | | | | | Whenever OVS restarts, it pseudo-randomly picks an interface of a bond port to be the active slave. This can cause traffic disruption in case the upstream switch does not support LACP, or in case of multi-chassis switches that do not support mLACP. This patch helps the situation by always record the last active slave into ovsdb. When OVS restarts, the stored last active slave has the highest priority to be selected again. In case this interface is available, due to configuration changes or being offline, OVS then consider other interfaces with the bond as it does today. In a nutshell, this patch makes the active slave selection stickier across OVS restart. VMware-BZ: 1332235 Signed-off-by: Andy Zhou <azhou@nicira.com> Acked-by: Alex Wang <alexw@nicira.com>
* ofproto: Do not update stats on fake bond interface.Pravin B Shelar2014-09-151-59/+0
| | | | | | | | | | | There are couple of reasons to remove this support: * This is used in very old OVS use-case. It is much better to read stats directly from OVS. * Forthcoming commit will remove support for setting stats for vport. The stats update depends on stats-set. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* Use ovs_refcount_unref_relaxed.Jarno Rajahalme2014-07-071-1/+1
| | | | | | | | | | After a quick analysis, in most cases the access to refcounted objects is clearly protected either with an explicit lock/mutex, or RCU. there are only a few places where I left a call to ovs_refcount_unref(). Upon closer analysis it may well be that those could also use the relaxed form. Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* ofproto-dpif: Add idle_timeout parameter to ofproto_dpif_add_internal_flow()Simon Horman2014-06-111-1/+1
| | | | | | | | | | | | This is in preparation for using the same helper as part of support for using recirculation in conjunction series of actions including with MPLS actions that are currently not able to be translated. In that scenario the idle timeout will be used to expire internal rules that are added to handle recirculation. Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
* ofproto-dpif: Move RECIRC_RULE_PRIORITY to common headerSimon Horman2014-06-111-1/+0
| | | | | | | | | This is in preparation for using this value in ofproto-dpif-xlate.c when composing recirculation actions added as a result of processing (MPLS) actions. Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
* bond: fix a bug that disabled bond stats collectionAndy Zhou2014-05-071-3/+2
| | | | | | | Bug #1229225 Signed-off-by: Andy Zhou <azhou@nicira.com> Reviewed-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
* bond: fix uninitialized use of use_recirc variableAndy Zhou2014-04-291-1/+2
| | | | | | | | Caught by clang-3.5. Reported-by: Simon Horman <horms@verge.net.au> Signed-off-by: Andy Zhou <azhou@nicira.com> Acked-by: Pritesh Kothari <pritesh.kothari@cisco.com>
* ofproto-dpif: restore bond rebalance for non-recirc bondAndy Zhou2014-04-281-6/+15
| | | | | | | | | | | Bond rebalancing was disabled for bonds not using recirculation. The patch fixes this bug. While fixing the bug, the bond_rebalance() was also restructured slightly to move bond related logic back into ofproto/bond.c Signed-off-by: Andy Zhou <azhou@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* ofproto-bond: do not allow recirculation when we failed to allocate recirc_idAndy Zhou2014-04-281-1/+1
| | | | | | | | | | When recirc pool is exhausted, a new bond won't be allocate a new recirc_id. The bond->recirc_id will remain zero. This condition should prevent the bond from use recirculation. This check was missing before this patch. Signed-off-by: Andy Zhou <azhou@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* ofproto-dpif: Rule lookup starts from table zero for non-recirc datapathAndy Zhou2014-04-201-2/+0
| | | | | | | | | | | | Currently, all packet lookup starts from internal table for possible matching of post recirculation rules. This is not necessary for datapath that does not support recirculation. This patch adds the ability to steering rule lookup starting table based on whether datapath supports recirculation. Signed-off-by: Andy Zhou <azhou@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>