Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

R3.0 #89

Open
wants to merge 166 commits into
base: master
Choose a base branch
from
Open

R3.0 #89

wants to merge 166 commits into from

Commits on Feb 18, 2016

  1. Adding R3.0 branch to CI Closes-Bug: 1547034

    Change-Id: I7a24151be54ccc2c3c9505ea7afb8437752ef25f
    vmahuli committed Feb 18, 2016
    Configuration menu
    Copy the full SHA
    8e61639 View commit details
    Browse the repository at this point in the history

Commits on Feb 19, 2016

  1. Vrouter to generate EEXIST error appropriately

    Vrouter to generate EEXIST error when flow add request
    failed due to race between agent and datapath, where
    flow entry was already created due to packet trap
    
    Closes-Bug: 1547501
    Change-Id: I0d2073622b06998dd5778fb94749958afc09bac0
    (cherry picked from commit c17b4d4)
    Prabhjot Singh Sethi committed Feb 19, 2016
    Configuration menu
    Copy the full SHA
    b679020 View commit details
    Browse the repository at this point in the history

Commits on Feb 22, 2016

  1. DPDK: fix (again) hashing of fragmented packets

    We can not hash L4 ports as fragments other than the first have
    no L4 headers. In result fragments of the same packets may have
    been distributed onto different lcores and potentially be routed
    out of order.
    
    The fix was originally committed by Michal Dubiel (commit d59ca66)
    For a reason the fix was dropped in the commit 1056396
    
    Change-Id: Iac607e6e14a139a0c015eeb5c9ff8c3de04854c6
    Closes-Bug: #1474432
    semihalf-berestovskyy-andriy committed Feb 22, 2016
    Configuration menu
    Copy the full SHA
    38385ba View commit details
    Browse the repository at this point in the history

Commits on Feb 23, 2016

  1. Vrouter to return error for invalid flow op

    If a flow operation is requested for an index which
    is not active, vrouter should return an ENOENT error
    for such operation
    
    Closes-Bug: 1548678
    Change-Id: I42bbd58f41a868b1ce630046ae40e911df0d9491
    (cherry picked from commit 1cf3761)
    Prabhjot Singh Sethi committed Feb 23, 2016
    Configuration menu
    Copy the full SHA
    99763a1 View commit details
    Browse the repository at this point in the history
  2. Do not consider evicted flows as active flow in flow utility

    Change-Id: Ia9ae864af98a645b60c5880db29ba8ff1b3c494f
    Closes-Bug: #1517665
    krharsh committed Feb 23, 2016
    Configuration menu
    Copy the full SHA
    4d01316 View commit details
    Browse the repository at this point in the history
  3. DPDK: fix UDP fragments handling

    The root cause is mbuf starvation due to lots of fragments.
    The mbufs get stuck in the fragment assembler.
    
    To fix the issue we disable fragment assembler allocations if the
    number of allocated fragment elements is greater than 1024.
    This basically temporarily drop of out of order fragments.
    
    + Fix memory allocation statistics.
    
    Change-Id: Ife775ac3073a9c5981672bd64952661c28380a7c
    Closes-bug: #1545798
    semihalf-berestovskyy-andriy committed Feb 23, 2016
    Configuration menu
    Copy the full SHA
    c418fa4 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    8759e5d View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    5ae73c8 View commit details
    Browse the repository at this point in the history

Commits on Feb 24, 2016

  1. List flows based on match criteria

    Add a new option "--match" to match flows based on certain criteria.
    With the match option, one will be able to match based on source ip
    or destination ip (with or without ports) or vrf or protocol or any
    of them together with any other of them.
    
    e.g.:
    --match 1.1.1.1:20
    --match "1.1.1.1:20,2.2.2.2:22"
    --match "[fe80::225:90ff:fec3:afa]:22
    --match "10.204.217.10:56910 & vrf 0 & proto tcp"
    --match "10.204.217.10:56910,169.254.0.3:22 & vrf 0 & proto tcp"
    
    Change-Id: Id70e6d60950babe44612e6aded036c5d1bec6f92
    Partial-BUG: #1513001
    anandhk-juniper committed Feb 24, 2016
    Configuration menu
    Copy the full SHA
    d40be29 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    81476e1 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    c3a9f52 View commit details
    Browse the repository at this point in the history

Commits on Feb 25, 2016

  1. DPDK: make Sandesh quiet

    Insufficient space in external memory buffer is not actually
    an error for the vRouter/DPDK, so we supress those messages
    by using -DSANDESH_QUIET.
    
    Change-Id: I5bc0a51f7c4659f2733a72e9b45322d117265a87
    Closes-bug: #1546291
    semihalf-berestovskyy-andriy committed Feb 25, 2016
    Configuration menu
    Copy the full SHA
    1db4e11 View commit details
    Browse the repository at this point in the history
  2. Using the correct FMD and setting pkt_type correctly for mirrored pac…

    …kets
    
    If port mirroring is enabled, cloned packet is subjected to mirroring
    using the original packet's forwarding metadata. If mirroring code
    changes the metadata content, original packet will be forwarded as per
    the changed fmd and results in wrong forwarding.
    
    In the current case, mirroring is to a VM in different VN (hence new VRF)
    and mirroring code is modifying the fmd's dvrf to new VRF.
    The original ARP packet's L2 and L3 looksups are happening on the
    modified VRF resulting in ARP getting dropped.
    
    Also the type of packet is identified using vr_pkt_type() after packet
    is mirrored. This is resulting in wrong pkt_type being used for mirrored
    packet hence the source IP packet the mirrored packet is not correctly
    computed.
    
    As a fix, new FMD is used for mirrored packet and packet type is
    identified before mirroring itself.
    
    Change-Id: I1fbe7d7e83c7e66c3287b8082444483578117d14
    closes-bug: #1549727
    divakardhar committed Feb 25, 2016
    Configuration menu
    Copy the full SHA
    747ec6e View commit details
    Browse the repository at this point in the history

Commits on Feb 26, 2016

  1. Reduce the size of the RSS mempool to improve performance.

    The number of TX/RX descriptors are also decreased to account
    for this.
    
    Change-Id: Ib29da97e229fbf6a77644e449d2a81281f438058
    Closes-Bug: 1550073
    srajag committed Feb 26, 2016
    Configuration menu
    Copy the full SHA
    c17b8fe View commit details
    Browse the repository at this point in the history
  2. Merge "Reduce the size of the RSS mempool to improve performance. The…

    … number of TX/RX descriptors are also decreased to account for this." into R3.0
    Zuul authored and opencontrail-ci-admin committed Feb 26, 2016
    Configuration menu
    Copy the full SHA
    16c05b7 View commit details
    Browse the repository at this point in the history
  3. Dont mirror the same packet again

    If mirroring is enabled on analyzing VM's port itself, one copy of the
    original packet gets mirrored to that port. But this mirrored packet
    should not be mirroed again. Right now without verifying whether the
    packet is mirrored or not, it is attempted for mirroring again.
    
    When a packet is mirrored it is marked with flag VP_FLAG_FROM_DP. If
    this flag is set it is not mirrored again.
    
    Change-Id: Ie4cca916945878b77bc4db7666992f3933db3e13
    closes-bug: #1549761
    divakardhar committed Feb 26, 2016
    Configuration menu
    Copy the full SHA
    c1c472c View commit details
    Browse the repository at this point in the history
  4. Merge "Using the correct FMD and setting pkt_type correctly for mirro…

    …red packets" into R3.0
    Zuul authored and opencontrail-ci-admin committed Feb 26, 2016
    Configuration menu
    Copy the full SHA
    c959ff9 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    01dbe86 View commit details
    Browse the repository at this point in the history

Commits on Feb 27, 2016

  1. Keeping ingres vif id in L2 header for post GRO processing

    Currently the L2 header used for both L2 and L3 GRO processing is only
    next hop id. Post GRO, the nexthop is retrieved from this id and packet
    is subjected to this nexthop for further processing. The ingress
    interface filled in the packet is nh_dev of this nexthop. This is
    resulting in ingress interface as Tap interface though packet acttually ingressed
    on Fabric interface. This can potentially lead to issues in the packet's
    further processing as Tap interface is not the real ingress
    interface.
    
    As a fix, the ingress interface id is also pushed as L2 header.
    
    Change-Id: I6fbe055fff7da4c957fde29d132b56ea19bd2f3f
    closes-bug: #1550632
    divakardhar committed Feb 27, 2016
    Configuration menu
    Copy the full SHA
    4da87fc View commit details
    Browse the repository at this point in the history
  2. Use innerpacket's destip as source ip while doing Tx Port mirroring

    When Transmit port mirroring is enabled, packet received on Fabric
    interface is right now mirrored using the source IP of the inner packet.
    This results in RPF failure on Analyzer VM's compute node because the
    compute node which is doing the port mirroring is using other compute
    node's VM IP.
    
    As a fix, if mirroring is Tax mirroring, rather using inner packets
    source ip, dest ip is used, so that Analyzer VM's RPF will not have any
    issues
    
    Change-Id: I5beaa0dd0cc3c886a1e77f244c8003595ed348e2
    closes-bug: #1550312
    divakardhar committed Feb 27, 2016
    Configuration menu
    Copy the full SHA
    ce86dd4 View commit details
    Browse the repository at this point in the history
  3. Disable Eviction of flow in Vrouter

    Vrouter will track tcp flags, but will not evict the flow
    entry once the session is closed and let vrouter agent
    look at the flag to delete the flow eventually.
    
    This is required till vrouter agent handles evict event
    in a more stable way
    
    Partial-Bug: 1550759
    Change-Id: Ic7074442b22fc2c11362274e4e390654f3f2400a
    Prabhjot Singh Sethi committed Feb 27, 2016
    Configuration menu
    Copy the full SHA
    d44296e View commit details
    Browse the repository at this point in the history

Commits on Feb 28, 2016

  1. Configuration menu
    Copy the full SHA
    1696925 View commit details
    Browse the repository at this point in the history

Commits on Feb 29, 2016

  1. DPDK: reset virtio queue on stop

    We call vr_dpdk_virtio_stop() from uvhm_client_munmap() which in turn
    is called from vr_uvh_nl_vif_del_handler().
    
    These are as tiny as possible changes based on the the abandoned
    refactoring commit: https://review.opencontrail.org/#/c/17178/
    
    Closes-bug: #1551093
    Change-Id: I4653601635dbb7f29d7af9ce15a18193904f583f
    semihalf-berestovskyy-andriy committed Feb 29, 2016
    Configuration menu
    Copy the full SHA
    2bad6da View commit details
    Browse the repository at this point in the history
  2. Post GRO, label in fmd can't be used to check whether the packet

    was tunneled or not
    
    Once the packet is submitted for GRO, all datapath information is
    lost. Post GRO, only values that are saved in the packet are the
    vif and the nexthop. vif is a recent addition to the saved
    information that helped us to identify which interface the packet
    came from originally. Once the vif value was set properly, the logic
    that checked whether the packet should be trapped to agent or not
    based on the presence of label (basically fabric arp responses should
    be trapped or not), misbehaved since label information is not saved
    pre-GRO and hence not available in the metadata post GRO. For now,
    fix the specific logic by checking whether the egress vrf is different
    from the ingress vrf, which will be the case since physical interface
    vrf will not be the same as vm's vrf.
    
    Change-Id: Iba000889039bc8a5020fc11a462ba1b1a68ce1c8
    Closes-BUG: #1551382
    anandhk-juniper committed Feb 29, 2016
    Configuration menu
    Copy the full SHA
    e5e8b85 View commit details
    Browse the repository at this point in the history

Commits on Mar 2, 2016

  1. Do not reuse forwarding metadata post mirroring

    A mirror action needs its own forwarding metadata since the forwarding
    parameeters that are used for mirroring will be different from those
    that are used for packet forwarding. In this particular case, the vrf
    to which the packets are mirrored are different from the vrf to which
    packets need to be classified, and hence the packets were dropped in the
    flow module with no source route as the drop reason.
    
    Change-Id: I21930818a5cdec560818acb79f671ce29ac8bc85
    Closes-BUG: #1552101
    anandhk-juniper committed Mar 2, 2016
    Configuration menu
    Copy the full SHA
    356bc69 View commit details
    Browse the repository at this point in the history

Commits on Mar 3, 2016

  1. Modify hentry flags before adding to free list

    Currently when a flow entry is deleted, the corresponding hash entry is
    kept at the head of the free list and after successfully inserting into
    the list the entry's flags are reset. If any other core is
    attempting to fetch a free entry, there is a likely chance that just
    added entry will be given as free entry before the flags are reset as
    this entry is at the head of the list. Because of this there is a race
    condition for setting the flags between deletion of entry and additin of
    entry. If deletion overwrites the addition flags, the Valid flags gets
    overwritten. Because of this the entry would not be in free list but
    still would not be considered a valid entry. Searching this entry by
    index fails as this is not a valid entry.
    
    As a fix, the flags while inserting the entry to free list are modified
    before inserting so that there would not be any race condition.
    
    Change-Id: I67b1077e75a8a9f4ca5ddcfe3a7513061fd20681
    closes-bug: #1552544
    divakardhar committed Mar 3, 2016
    Configuration menu
    Copy the full SHA
    4b84e39 View commit details
    Browse the repository at this point in the history

Commits on Mar 9, 2016

  1. DPDK: fix high pkt drop for 16 lcores

    I have no hardware with 16 cores, but I guess with lots
    of lcores assigned to vRouter/DPDK some of them might get
    sleep due to no RX queues assigned.
    
    Change-Id: I7e37e14ef9aebfc3613ef5e908091ee35093d1bb
    Closes-bug: #1505472
    semihalf-berestovskyy-andriy committed Mar 9, 2016
    Configuration menu
    Copy the full SHA
    c40b395 View commit details
    Browse the repository at this point in the history

Commits on Mar 14, 2016

  1. Drop ICMP error packets for ICMP errors

    In case of ICMP error packets for ICMP errors, we were not initializing
    flow key and trying to form a flow out of that key, resulting in wrong
    key length and corrupted flow entry(s).
    
    We will drop such packets.
    
    Change-Id: Idae46a7e128482ad89da8b5bd1bd0ef6b17ef28e
    Closes-BUG: #1556363
    anandhk-juniper committed Mar 14, 2016
    Configuration menu
    Copy the full SHA
    a2e6648 View commit details
    Browse the repository at this point in the history
  2. Do not swap ports for an ICMP packet inside an ICMP error

    For an ICMP packet, the port numbers remain the same in either direction
    i.e.: source port remains the same for both foward and the reverse flows
    as does the destination port. Hence, we should not be swapping ports in
    calculating the flow key while trying to tag an ICMP error packet to a
    flow set up for the original stream.
    
    Change-Id: Ic5df8aec5f1009441aefd3d177568d55f3cb0d2c
    Closes-BUG: #1554236
    anandhk-juniper committed Mar 14, 2016
    Configuration menu
    Copy the full SHA
    6150505 View commit details
    Browse the repository at this point in the history

Commits on Mar 15, 2016

  1. Configuration menu
    Copy the full SHA
    3dd9596 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    dcc9184 View commit details
    Browse the repository at this point in the history

Commits on Mar 16, 2016

  1. 'GET' option for 'rt' command

    A '--get' switch for the 'rt' to match a particular route and dump it.
    Currently, only for inet and inet6 routes.
    
    Change-Id: I3b53dda635f4f4af5b7f79ddf47e14313f372f81
    Partial-BUG: #1548757
    
    Support GET for L2 routes
    
    Support 'GET' operation for a specific route in the vRouter bridge
    table too.
    
    Also, support giving a specific prefix length to the route and return
    a match based on that specific prefix.
    
    Change-Id: I93980925e70f45482c372ba3beeca8bfbd3028b2
    Closes-BUG: #1548757
    anandhk-juniper committed Mar 16, 2016
    Configuration menu
    Copy the full SHA
    91e2d3a View commit details
    Browse the repository at this point in the history

Commits on Mar 18, 2016

  1. Add flow gen id info to agent header

    Adding flow gen id info to agent header for vrouter
    agent to identify the latest transistion
    
    Partial-Bug: 1554423
    Change-Id: I0c0d0ca5b5a5ee2edd1ed5c7a45852cbfd7663b2
    (cherry picked from commit b81f978)
    Prabhjot Singh Sethi committed Mar 18, 2016
    Configuration menu
    Copy the full SHA
    712de81 View commit details
    Browse the repository at this point in the history

Commits on Mar 21, 2016

  1. DPDK: increase max packet size from 9160B to 9kB.

    Packet size is passed to the ixgbe driver as a buffer
    size. Then it is calculated to get the buffer size in kilobytes
    using right bitshift by 10. 9160 >> 10 is 8. This leads to truncating
    incoming 9kB frames to 8kB. Changing packet size to integer multiple
    of 1kB solves the problem.
    
    Change-Id: I202c7f9430c5952b5e89b1ef9fff101ed36bfe82
    Closes-bug: #1547782
    semihalf-zmuda-wojciech authored and opencontrail-ci-admin committed Mar 21, 2016
    Configuration menu
    Copy the full SHA
    aa66037 View commit details
    Browse the repository at this point in the history

Commits on Mar 24, 2016

  1. Pass correct forwarding metadata to mirroring

    Post copying the metadata to the one supposed to be used for mirroring
    and modifying the vrf value in it, we are not passing the copy to the
    mirror.
    
    Change-Id: Id3cbc5dcc296fc005d06a9aa797339c1cc4a10cc
    Closes-BUG: #1552101
    anandhk-juniper committed Mar 24, 2016
    Configuration menu
    Copy the full SHA
    d3d0e98 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    93dc4f6 View commit details
    Browse the repository at this point in the history
  3. Fix memory corruption at the time of unloading

    Every alloc and free of memory in vRouter is accounted for by the memory
    statistics subsystem of vRouter. While unloading the module, we are
    freeing malloc statistics memory before packet drop statstics memory is
    freed. While we do update the memory statistics only if the memory
    statistics block pointer is not null, we do not seem to be zeroing the
    pointer that holds the address of the memory block post release. Hence,
    reverse the order of release and NULL-ify the memory statistics pointer.
    
    Also, unregister the net device notifier before going ahead and freeing
    the memory that the vhost driver keeps. If the notifier is not unregistered
    first, it can potentially access freed memory that vhost driver maintains.
    
    Change-Id: I79c4cdec4f0501e61abf38698e44e461a90c370b
    Closes-BUG: #1561589
    anandhk-juniper committed Mar 24, 2016
    Configuration menu
    Copy the full SHA
    8337190 View commit details
    Browse the repository at this point in the history
  4. DPDK: fix incorrect PCI address passed from the Agent

    Change-Id: Ie64707d76fbbe3566ec3b6df5eb0be61ca09bde2
    Closes-bug: #1561634
    semihalf-berestovskyy-andriy committed Mar 24, 2016
    Configuration menu
    Copy the full SHA
    da1306d View commit details
    Browse the repository at this point in the history
  5. DPDK: set MAC address passed by the Agent to the NIC

    On some hardware (e100e, virtual functions, etc) the MAC is random,
    so we check if vif and NIC MACs are match and set the NIC MAC.
    
    Change-Id: Ifbb20b534c49f3f618e5a729f8a03b0a200bf05b
    Closes-bug: #1561636
    semihalf-berestovskyy-andriy committed Mar 24, 2016
    Configuration menu
    Copy the full SHA
    59f39f7 View commit details
    Browse the repository at this point in the history

Commits on Mar 25, 2016

  1. Configuration menu
    Copy the full SHA
    fbcf0c9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2be1a03 View commit details
    Browse the repository at this point in the history

Commits on Mar 27, 2016

  1. Configuration menu
    Copy the full SHA
    a752cad View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    37b5eec View commit details
    Browse the repository at this point in the history

Commits on Mar 31, 2016

  1. Set skb network header for non-tunneled packets

    When somebody does a tcpdump or an equivalent operation of listening
    on an interface for all protocol packets, linux kernel prints protocol
    xyz is buggy if the network header is positioned at an offset that is
    not sane, for e.g.: network header offset is lesser than the data offset
    (which is where the data starts).
    
    vRouter is not setting network header offsets for packets that don't
    undergo GRO or for non-tunnel packets. If such packets egress an
    interface and if a tcpdump like application is running on that interface,
    then we will see this issue.
    
    Set skb network header to packet network header for such packets
    
    Change-Id: I82f7550722798e53c94092788b5135603f6045c8
    Closes-BUG: #1564242
    anandhk-juniper committed Mar 31, 2016
    Configuration menu
    Copy the full SHA
    2ddf88f View commit details
    Browse the repository at this point in the history
  2. Update the less specific route node with requested values

    It has been observed that if the less specific route is deleted first
    and then all the more specific routes, the less specific route doesn't
    go away. For e.g.: if 1.1.1.0/24 is deleted first and later 1.1.1.1/32
    in a table where there are no other routes, 1.1.1.0/24 remains in the
    table.
    
    When we delete a non leaf node, if it is a bucket we do not update the
    prefix length, flags and label values. If these values do not match with
    those of other nodes in the same bucket, then the bucket will remain
    forever. Hence, update the node with the values in the request before
    traversing the tree down.
    
    Change-Id: I71778a83093a04c462b40e6c7e05b1d993f3373e
    Closes-BUG: #1563734
    anandhk-juniper committed Mar 31, 2016
    Configuration menu
    Copy the full SHA
    ec6e924 View commit details
    Browse the repository at this point in the history

Commits on Apr 1, 2016

  1. Configuration menu
    Copy the full SHA
    e019ca5 View commit details
    Browse the repository at this point in the history

Commits on Apr 7, 2016

  1. DPDK: dedicate an lcore for SR-IOV VF IO Edit

    The goal is to have one CPU core dedicated to doing TX/RX from
    the NIC (and no vRouter processing, handling packets from VM etc.
    on this one core).
    
    Change-Id: Id834ce950fbb312a79f837a85d3fe1b85c89f275
    Closes-bug: #1567470
    semihalf-berestovskyy-andriy committed Apr 7, 2016
    Configuration menu
    Copy the full SHA
    f635e2e View commit details
    Browse the repository at this point in the history

Commits on Apr 8, 2016

  1. Use alternate APIs for some of the kernel calls

    Change-Id: I2db021e58e8912bd55684cacef7e506974425cfb
    Partial-BUG: #1559016
    anandhk-juniper committed Apr 8, 2016
    Configuration menu
    Copy the full SHA
    77ac5a3 View commit details
    Browse the repository at this point in the history
  2. DPDK: Enable Vlan offload in bonded interfaces

    In case of bonding, the VLAN offloading was not enabled in the
    hardware even though it was enabled in the vif. As a result,
    the DPDK used to get VLAN tagged packets and was not stripping
    resulting in breakage of the data path. The patch fixes the same.
    
    Change-Id: I10a8b1eb08065b10146a64a99b295f0b28e73120
    Closes-Bug: 1565124
    kirankn80 committed Apr 8, 2016
    Configuration menu
    Copy the full SHA
    995596d View commit details
    Browse the repository at this point in the history

Commits on Apr 11, 2016

  1. Enable Vrouter Flow Eviction

    - Enable vrouter TCP flow Eviction
    - return EBADF if gen-id mismatch, even if the key is same
    - returning EFAULT for cases if gen-id matches but key
      doesnot, this case ideally should not happen but in case
      it does vrouter-agent will log an Error and recover
    
    Closes-Bug: 1554423
    Change-Id: I14b898708f132b2e67504cb2afe021502730b62a
    (cherry picked from commit a71739a)
    Prabhjot Singh Sethi committed Apr 11, 2016
    Configuration menu
    Copy the full SHA
    6f0972a View commit details
    Browse the repository at this point in the history
  2. Adding new short flow drop reason(SAME_FLOW_RFLOW).

    Change-Id: I31e17f9229e675e1dfff0f34073b4c21c0c8d855
    Partial-bug: 1556290
    manishsing committed Apr 11, 2016
    Configuration menu
    Copy the full SHA
    ead9a0e View commit details
    Browse the repository at this point in the history

Commits on Apr 12, 2016

  1. Configuration menu
    Copy the full SHA
    61241c0 View commit details
    Browse the repository at this point in the history
  2. DPDK: fix NetLink thread freeze

    When the pkt0 interface is getting a lot of traffic as
    a result of trapping packets to agent. When a large number
    of packets are trapped in this manner, the NetLink thread
    freezes (i.e. no commands like vif/nh can be run as they just hang).
    
    Change-Id: I18db6d5cc96a812eab61609f8a369728a315eaa7
    Closes-bug: #1569441
    semihalf-berestovskyy-andriy committed Apr 12, 2016
    Configuration menu
    Copy the full SHA
    f193d55 View commit details
    Browse the repository at this point in the history

Commits on Apr 13, 2016

  1. Replace cpu_sibling_mask() with topology_sibling_cpumask()

    Closes=Bug: #1555511
    
    Change-Id: I84db0b0fb853f049aeddb8bbdba67fc9f54eb59d
    Édouard Thuleau authored and pupapaik committed Apr 13, 2016
    Configuration menu
    Copy the full SHA
    7101cab View commit details
    Browse the repository at this point in the history
  2. Create a new flow if a packet hits a delete marked flow

    When Agent deletes a flow, the flow entry is not immediately deleted in
    Vrouter. Vrouter uses work queues and rcu callbacks to streamline the
    deletion. After these asynchronous callbacks, flow entry is treated as
    deleted. If there are any packets hitting this flow entry before marking
    as "not active" those packets are dropped. On a loaded system with huge
    number of flows, these call backs take a considerable time(in the worst
    case as much as 30 ms). Packets hitting this flow entry will be dropped
    for all this time.
    
    To avoid this issue, when Agent deletes the flow entry, entry is "marked
    deleted". A delete marked entry is no more treated as active entry,
    hence flow lookup does not return this entry. As a result, a new flow
    entry gets created. All the subsequent packets hit the new entry. "flow"
    utility displays this particular entry as "Dm".
    
    Change-Id: I0e150bbeb4b3fe3bf3fa1f367e074586363786f2
    closes-bug: #1569786
    divakardhar committed Apr 13, 2016
    Configuration menu
    Copy the full SHA
    0f8fb1c View commit details
    Browse the repository at this point in the history
  3. Display used flow table count and bridge table count in "vrouter" uti…

    …lity
    
    The uses flow table count and bridge table count is not displayed as
    part of any utility. "vrouter" utility is extended to display this
    count. This can be further extended to display all the Vrouter table
    count like mpls, nh etc. As of now, bridge table and flow table count
    along with its over flow table is displayed as part of "vrouter --info"
    
    Change-Id: I2e54fb8e4fd89a15ecafdf5551f022448728a5f3
    closes-bug: #1569791
    divakardhar committed Apr 13, 2016
    Configuration menu
    Copy the full SHA
    830fc5b View commit details
    Browse the repository at this point in the history

Commits on Apr 14, 2016

  1. Treat ARP requestsas VM's requests if VRF is different when compared …

    …to VIF's VRF
    
    This issue is valid only for unicast ARP request packets. As multicast ARP
    request packets are always handled in Multicast Composite nexthop and as
    they are  never subjected to GRO, this issue is not observed for
    multicast ARP packets.
    When an unicast ARP request is received on Fabric interface it is treated as ARP
    reqest for VM if there is a label attached to it. Due to the changes in
    GRO, post GRO, the label is not going to be present in fmd. So ARP
    packets are treated as if they are meant for fabric network. This is
    resulting in unicast ARP requests never being answered.
    
    As a fix, if the VRF of fmd is different from VIF's VRF, these packets
    are treated as VM's ARP packets.
    
    Change-Id: I013b83c38642697c81e32460be936154e42a067e
    closes-bug: #1570180
    divakardhar committed Apr 14, 2016
    Configuration menu
    Copy the full SHA
    72e7649 View commit details
    Browse the repository at this point in the history

Commits on Apr 15, 2016

  1. Match source and destination when both are given

    Change-Id: Id75ee6dc4f739f78073e72fae08bbbcffcde1618
    Partial-BUG: #1513001
    anandhk-juniper committed Apr 15, 2016
    Configuration menu
    Copy the full SHA
    4af463f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ba7a510 View commit details
    Browse the repository at this point in the history
  3. DPDK: fix low performance of SR-IOV VF IO lcore

    Intel 82599 NIC hash just src/dst IPs for UDP traffic, not
    the src/dst ports. So we force vRouter to recalculate the hashes.
    
    Change-Id: I1b330d605cb0c0401d2f45578535740dcc49b4c7
    Closes-bug: #1570907
    semihalf-berestovskyy-andriy committed Apr 15, 2016
    Configuration menu
    Copy the full SHA
    13bf183 View commit details
    Browse the repository at this point in the history
  4. DPDK: fix error log

    Change-Id: I345f772a37a20c2ec344815f73e11d383a1c48cd
    Partial-bug: #1570918
    semihalf-berestovskyy-andriy committed Apr 15, 2016
    Configuration menu
    Copy the full SHA
    fafe8b6 View commit details
    Browse the repository at this point in the history

Commits on Apr 16, 2016

  1. Configuration menu
    Copy the full SHA
    2a7d69c View commit details
    Browse the repository at this point in the history

Commits on Apr 18, 2016

  1. Configuration menu
    Copy the full SHA
    e14f021 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1afb32d View commit details
    Browse the repository at this point in the history
  3. Merge "DPDK: fix error log" into R3.0

    Zuul authored and opencontrail-ci-admin committed Apr 18, 2016
    Configuration menu
    Copy the full SHA
    7f26bc1 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    005e1d5 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    c6b154f View commit details
    Browse the repository at this point in the history

Commits on Apr 19, 2016

  1. Print port mirroring index in VIF utility

    When the Tx or Rx port mirroring is enabled on the port, vif utility is
    not printing the mirror index. For debugging purpose it is better to
    print the index. VIF utility is modified to print the index if port
    mirroring is enabled
    
    Change-Id: I0714b0dfb2bfb8c0044ab7dad7d953f6995aaeea
    closes-bug: #1571950
    divakardhar committed Apr 19, 2016
    Configuration menu
    Copy the full SHA
    f411dc1 View commit details
    Browse the repository at this point in the history

Commits on Apr 20, 2016

  1. Merge "Treat ARP requestsas VM's requests if VRF is different when co…

    …mpared to VIF's VRF" into R3.0
    Zuul authored and opencontrail-ci-admin committed Apr 20, 2016
    Configuration menu
    Copy the full SHA
    855510c View commit details
    Browse the repository at this point in the history
  2. Merge "Display used flow table count and bridge table count in "vrout…

    …er" utility" into R3.0
    Zuul authored and opencontrail-ci-admin committed Apr 20, 2016
    Configuration menu
    Copy the full SHA
    28284f4 View commit details
    Browse the repository at this point in the history
  3. Dont delete BGP as a service port once set

    Right now the BGP As A Service uses the same methodlogy as Link local
    services and sets up the flow with link local flag. Once this flag is
    set the destination port is added to a bit map by Vrouter and uses when
    the packet arrives on Fabric to subject it to Flow. If the flag is
    removed from the Flow entry, the port is removed from Bitmap. This
    mechanism has a problem if multiple flows use the same destination port
    with Link Local flag. Removing the flag from one flow removes the port
    from bitmap and because of this packets belonging to other flow never
    gets subjected to flow processing as the bitmap does not have the port
    any more.
    
    As a temporary fix, a new flag is introduced in flow entry. When this
    flag is set, the port is added to bitmap and is never removed from
    bitmap even if the flag is removed from flow entry. This way, even if
    multiple flows use the same port there would not be any issues.
    
    This fix would be revoked once a new messaging comes between Agent and
    Vrouter.
    
    partial-bug: #1551576
    
    Change-Id: I0474a91c3d1275d542f3e4d2ae11bc15f62cdbcf
    divakardhar committed Apr 20, 2016
    Configuration menu
    Copy the full SHA
    a3aa608 View commit details
    Browse the repository at this point in the history

Commits on Apr 22, 2016

  1. Incasing the overflow table size of Flow and Bridge tables

    Currently the overflow table sizes of flow and bridge are kept at 8k and
    4k respectively as constant, irrespective of the main flow table size.
    Now this is changed to 20% of the main table. If user specifies over
    flow entries as module parameter, the value is untouched and left as is.
    If user specifies only the main table entries, then over flow table
    entries are again calculated as 20% of main table. While doing the
    calculation, it is adjusted to upper bound 1k.
    
    Change-Id: I45bb463013f850824af050ef9fb6d86118569f52
    closes-bug: #1573381
    divakardhar committed Apr 22, 2016
    Configuration menu
    Copy the full SHA
    55a87d4 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    a1b0753 View commit details
    Browse the repository at this point in the history

Commits on Apr 26, 2016

  1. DPDK: vhost jumbo frame support

    When we set MTU of vhost0, the same should be applied to the vif of PMD
    But the existing check was not allowing the same. Removing it.
    
    Change-Id: I1dc0bb529f9b6a84830d7ed8a73d7d8a286b3c2f
    Closes-bug: 1491680
    kirankn80 committed Apr 26, 2016
    Configuration menu
    Copy the full SHA
    c5cbb52 View commit details
    Browse the repository at this point in the history

Commits on Apr 27, 2016

  1. Configuration menu
    Copy the full SHA
    b9acc14 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    2810d11 View commit details
    Browse the repository at this point in the history

Commits on Apr 28, 2016

  1. DPDK: check PMD name suffix to detect SR-IOV VF

    Change-Id: I58932fe80739414f96c0918de279965fac3d30c3
    Closes-bug: #1567470
    semihalf-berestovskyy-andriy committed Apr 28, 2016
    Configuration menu
    Copy the full SHA
    fb4c602 View commit details
    Browse the repository at this point in the history

Commits on Apr 29, 2016

  1. Before initiating eviction, wait for the reverse flow to move from

    HOLD
    
    If the reverse flow action is HOLD, it is possible that we might not
    flush the packets that are in the hold queue when we do eviction.
    There is also an unidentified case where such flows remain in the
    table in the eviction marked state.
    
    Also, free the vrouter operation request structure once the request
    is done.
    
    Change-Id: I75d54367c7f7a3b32c3a09332be4f01a64e06d2a
    Partial-BUG: #1570203
    anandhk-juniper committed Apr 29, 2016
    Configuration menu
    Copy the full SHA
    8e7127d View commit details
    Browse the repository at this point in the history
  2. Dont treat all FFFF checksum packets as DIAG packets

    Currently, in the receiving Vrouter, if the checksum of the UDP packets
    is FFFF, it is treated as DIAG packets. But there can be some UDP
    packets whose checksum can be FFFF. These should not be treated as DIAG
    packets. To achieve this, DIAG packets are treated like below.
    
    Agent ensures that checksum of DIAG packets is not FFFF, but stores FFFF
    as checksum in UDP header. In the receiving Vrouter if UDP's checksum is
    seen as FFFF, checksum is validated again to verify whether that is
    correct checksum or not. If that is a wrong checksum, it would be marked
    as DIAG packet. If right checksum, it would be processed as any other
    regular packet.
    
    Also incase of MplsoUDP encapsulation, even if the
    configuration is to calculate the outer UDP checksum, if DIAG packet,
    the outer UDP checksum is not computed. This ensures that,on the
    receiving side, if checksum is validated by NIC, we will not have to
    compute the checksum for the inner packet once again. To ensure that
    there are not transmit errors, Agent calcualtes the checksum in the
    payload and validates it after receiving.
    
    Change-Id: Ie5f88deeea70e15aefda4b9dce49ccc48df3f117
    closes-bug: #1576506
    divakardhar committed Apr 29, 2016
    Configuration menu
    Copy the full SHA
    9e3bdfc View commit details
    Browse the repository at this point in the history
  3. DPDK: fix SR-IOV VF stats

    Put global PMD stats to lcore 0.
    
    Change-Id: Ic2956676204277aacf06e5dc244b4726c9d0762b
    Closes-bug: #1567470
    semihalf-berestovskyy-andriy committed Apr 29, 2016
    Configuration menu
    Copy the full SHA
    00114b5 View commit details
    Browse the repository at this point in the history

Commits on May 1, 2016

  1. Set size of overflow table early during vrouter-dpdk startup.

    Change-Id: I5c23af5c9963972599982549568da9432ac42469
    Closes-Bug: 1577097
    srajag committed May 1, 2016
    Configuration menu
    Copy the full SHA
    0db441a View commit details
    Browse the repository at this point in the history

Commits on May 2, 2016

  1. Issue:

    -----
    whenever the flow entry is getting synced to the vrouter,
    by the that time mirror entry dependency is not resolved.
    And we try to access that miror entry causes this crash
    Fix:
    ---
    Added Timer based trigger to Sync the flow entry to vrouter.
    If the mirror entry is not present at and analyzer attached,
    flow_entry will be enqueued.and based on timer trigger will revesit the queue,
    And update the Ksync entry, will retry for 4 attempts still if mirror entry is
    not present will mark the flow to short flow. for this in the
    vrouter module short flow reason is been added.
    
    Change-Id: I3d4e3fb0dfc54e76588c6c1b4a6fb1f9abc19a1e
    partial-bug: #1564239
    (cherry picked from commit 26a7a71)
    jayaramsatya committed May 2, 2016
    Configuration menu
    Copy the full SHA
    de94059 View commit details
    Browse the repository at this point in the history

Commits on May 3, 2016

  1. Merge "Issue: ----- whenever the flow entry is getting synced to the …

    …vrouter, by the that time mirror entry dependency is not resolved. And we try to access that miror entry causes this crash Fix: --- Added Timer based trigger to Sync the flow entry to vrouter. If the mirror entry is not present at and analyzer attached, flow_entry will be enqueued.and based on timer trigger will revesit the queue, And update the Ksync entry, will retry for 4 attempts still if mirror entry is not present will mark the flow to short flow. for this in the vrouter module short flow reason is been added." into R3.0
    Zuul authored and opencontrail-ci-admin committed May 3, 2016
    Configuration menu
    Copy the full SHA
    b4034ec View commit details
    Browse the repository at this point in the history

Commits on May 4, 2016

  1. Configuration menu
    Copy the full SHA
    9cf435f View commit details
    Browse the repository at this point in the history

Commits on May 6, 2016

  1. DPDK: Set MTU of bonded interfaces as one of the slave's MTU in rte_e…

    …th_dev structure
    
    Change-Id: I2a8c084b8f434bf2ad255bbea0784f6fff78a253
    Closes-Bug: 1579243
    kirankn80 committed May 6, 2016
    Configuration menu
    Copy the full SHA
    fc830f2 View commit details
    Browse the repository at this point in the history

Commits on May 8, 2016

  1. Merge "Before initiating eviction, wait for the reverse flow to move …

    …from HOLD" into R3.0
    Zuul authored and opencontrail-ci-admin committed May 8, 2016
    Configuration menu
    Copy the full SHA
    b2d164c View commit details
    Browse the repository at this point in the history

Commits on May 13, 2016

  1. Do not allow agent to modify a "NEW" flow

    The "NEW" flag is set whenever a flow becomes active and is in
    the transient state. If agent tries to modify the entry in that
    state, a possibility because of reuse of an entry due to
    eviction, a condition could happen where the flags used by datapath
    could come from the flags set by agent, more specifically the
    Modified flag, and thus be in a state where nothing can be done
    in the entry. Hence, prevent agent from acting upon NEW flows.
    
    Change-Id: I017fd7d32f0488cef90a17c491c6021bbdd181c7
    Closes-BUG: #1580855
    anandhk-juniper committed May 13, 2016
    Configuration menu
    Copy the full SHA
    b091cbb View commit details
    Browse the repository at this point in the history
  2. Merge "DPDK: Set MTU of bonded interfaces as one of the slave's MTU i…

    …n rte_eth_dev structure" into R3.0
    Zuul authored and opencontrail-ci-admin committed May 13, 2016
    Configuration menu
    Copy the full SHA
    4e0ca7b View commit details
    Browse the repository at this point in the history

Commits on May 17, 2016

  1. Out Of Order Fragment handling fixes

    . If any fragment other than the HEAD comes to the assembler, then
    it means that datapath was not able to find the flow information
    for that fragment, since HEAD had not yet passed through it. Hence,
    there is an explicit assumption in the assembler that HEAD will
    always come later than at least one fragment. Once the HEAD arrives,
    the assembler will look for all the fragments of that packet and
    flush the fragments.
    
    Since the assembler is an asynchronous entity with respect to the
    datapath, it is possible that by the time it gets the event and
    processes the input fragments, HEAD also would have arrived, and
    possibly in a different CPU than the other fragments.  If the HEAD
    then is processed first, the assembler will not find any fragments
    that will need the information that is supplied by the HEAD and hence
    the fragments that arrived in the system before the HEAD will stay in
    the assembler queue till they get timed out.
    
    . Because of the asynchronous nature of the assembler, the IP header
    of the cloned HEAD is not a safe access, since the original packet
    might have undergone NATing, resulting in wrong IPs being used for
    selecting the queues to search for fragments. Hence, store the IPs
    in the packet node along with the fragment information so that
    assembler will make the right calculations.
    
    . Initialize the packet node flags field to zero. Uninitialized pnode
    flags resulted in the label being treated as a VNID and hence an unset
    packet nexthop and thus a wrong key nexthop in the flow key, resulting
    in HOLD flows.
    
    Change-Id: I5d2c5abcda9c612c9d13378c79ae5d8392fd2c7b
    Closes-BUG: #1579828
    anandhk-juniper committed May 17, 2016
    Configuration menu
    Copy the full SHA
    cab4c7c View commit details
    Browse the repository at this point in the history

Commits on May 19, 2016

  1. - Set the VLAN filter for VFs if vrouter is provisioned on a VLAN.

    Change-Id: I33e5f26b50c0532c3a802acba8025f3a268be4fb
    Closes-bug: 1573255
    srajag committed May 19, 2016
    Configuration menu
    Copy the full SHA
    fbf7525 View commit details
    Browse the repository at this point in the history
  2. Set vlan filter only when vrouter physical interface is a VF.

    Change-Id: Iad9a60ba9fa737167a650cd80997ff149cc8c9cf
    Closes-bug: 1573255
    srajag committed May 19, 2016
    Configuration menu
    Copy the full SHA
    a03c7c5 View commit details
    Browse the repository at this point in the history

Commits on May 24, 2016

  1. Disabling GRO when mirroring is enabled

    When the packets are received on Fabric interface, these are subjected
    to GRO before transmitting them to Tap interface. If Tx port mirroring
    is enabled on Tap interface, as of now, mirroring is applied after GRO
    of the packets. If the mirroring server is on another compute node, these
    mirrored packets have GSO enabled. Vrouter makes use of Linux GSO routines
    and these GSO routines expect that skb in skb_list of head_skb does not
    contain any linear data (skb_headlen should be zero). Due to GRO the
    skb_headle of some skb's in skb_list contains linear data resulting in
    GSO routiness hitting a BUG_ON.
    
    To over come this, the GRO needs to be applied post mirroring. To
    enabled GSO on the mirrored packets the skb's gso_len also need to be
    supplied. Instead of this fix, GRO is disabled if Tx port mirroring is
    enabled on Tap interface as stop gap fix till the complete fix is in
    place.
    
    Change-Id: I7dd86e1bd90fef60efa4c9dbac78e853952c4fdc
    closes-bug: #1577473
    divakardhar committed May 24, 2016
    Configuration menu
    Copy the full SHA
    0919fd4 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f3bdaf2 View commit details
    Browse the repository at this point in the history

Commits on May 25, 2016

  1. Configuration menu
    Copy the full SHA
    f9a5357 View commit details
    Browse the repository at this point in the history
  2. Set MAC address of slave interface explicitly if it is a SR-IOV VF.

    Change-Id: I4d62d23fff5d9e34477f3d706197322c1f2c94a7
    Closes-bug: 1573255
    srajag committed May 25, 2016
    Configuration menu
    Copy the full SHA
    306b142 View commit details
    Browse the repository at this point in the history
  3. Merge "Set MAC address of slave interface explicitly if it is a SR-IO…

    …V VF." into R3.0
    Zuul authored and opencontrail-ci-admin committed May 25, 2016
    Configuration menu
    Copy the full SHA
    0891b19 View commit details
    Browse the repository at this point in the history
  4. DPDK: fix SR-IOV VF stats

    Put global PMD stats to lcore 0.
    
    Change-Id: Ib63686c28f4082746e09bfdd6a070d9796cdd7c5
    Closes-bug: #1567470
    semihalf-berestovskyy-andriy committed May 25, 2016
    Configuration menu
    Copy the full SHA
    4e0d94a View commit details
    Browse the repository at this point in the history

Commits on May 27, 2016

  1. Configuration menu
    Copy the full SHA
    f65b314 View commit details
    Browse the repository at this point in the history
  2. Keeping the mirror metadata entry in Flow entry

    Currently mirror metadata is stored in index table using flow index
    as key. Before the Flow eviction, the addition and deletion of this meta
    data to Index table is always from Agent and hence no parallel
    manipulation of Index table. After eviction, the metadata deletion from
    index table can happen in parallel and hence leading to memory
    corruption/leak in index table manipulation.
    
    The right fix is making the index table SMP ready. As a stop gap fix,
    the mirror metada data pointer is stored in the flow entry itself
    directly.
    
    Change-Id: I4c98af36646c3389996575af8eac3e98b3ffdca2
    closes-bug: #1572397
    divakardhar committed May 27, 2016
    Configuration menu
    Copy the full SHA
    063ab3d View commit details
    Browse the repository at this point in the history
  3. Increase the flow hold count

    The current limit of flow hold count is 4096 in Vrouter. With this
    checkin this is increased to 8192. The dpdk limits are not manipulated.
    
    Change-Id: I0292c74fde0d4c5cd867004da502e57135ca3b9e
    closes-bug: #1586358
    divakardhar committed May 27, 2016
    Configuration menu
    Copy the full SHA
    66aeed6 View commit details
    Browse the repository at this point in the history

Commits on May 30, 2016

  1. Configuration menu
    Copy the full SHA
    ad59139 View commit details
    Browse the repository at this point in the history

Commits on May 31, 2016

  1. New drop counter for Flow eviction

    Currently the packets are dropped if it hits a flow which is being
    evicted. This drop is incremented under "Flow unusable". As such "Flow
    unusable" is used for good number of cases and incrementing the eviction
    drop also under that leads to issues is debugging. So a new counter
    "Flow unusable (eviction)" is incremented for this purpose.
    
    Change-Id: I62f4f6dae0ccc42c256fd45e8b6163b0fec72824
    closes-bug: #1584257
    divakardhar committed May 31, 2016
    Configuration menu
    Copy the full SHA
    9ee131f View commit details
    Browse the repository at this point in the history

Commits on Jun 1, 2016

  1. DPDK: Handle packets with 802.1p

    We are not masking the priority bits in packet vlan header when we check
    if we have to consume the packet or re-inject to the host. Fixed the same
    
    Change-Id: I2d931f751f12f50b3cef92da06e4185b13c14e61
    Closes-bug: 1588075
    kirankn80 committed Jun 1, 2016
    Configuration menu
    Copy the full SHA
    df9e0ee View commit details
    Browse the repository at this point in the history
  2. Fix a race condition which resulted in the pkt0 thread polling too soon

    (before the eventfd could be added to the poll).
    
    Change-Id: I51c1484d7aa8b67fcb2a03c42ef73894158129da
    Closes-Bug: 1587275
    srajag committed Jun 1, 2016
    Configuration menu
    Copy the full SHA
    d65550d View commit details
    Browse the repository at this point in the history

Commits on Jun 2, 2016

  1. Configuration menu
    Copy the full SHA
    8af0027 View commit details
    Browse the repository at this point in the history
  2. Merge "Fix a race condition which resulted in the pkt0 thread polling…

    … too soon (before the eventfd could be added to the poll)." into R3.0
    Zuul authored and opencontrail-ci-admin committed Jun 2, 2016
    Configuration menu
    Copy the full SHA
    95f72e3 View commit details
    Browse the repository at this point in the history

Commits on Jun 3, 2016

  1. Inrease the Trap size of the truncated packet while Trapping to Agent

    Currently for certain Trap messages the packet is trncated to 128 bytes.
    if the packet is truncated to 128 bytes, Agent does not get to see the
    transport header depending on the encapsulation of the packet. The
    ICMP packet being received with Vxlan encap  is one such scenario where
    Vrouter creates a flow with right Transport ports but as Agent does not
    see the correct ports it handles that as different flow. This leads to
    Hold entries being left in Vrouter.
    
    To avoid this, instead of using the standard 128 bytes as Truncation, it
    is calculated using the headers length.
    
    Change-Id: Ifba2e7af4f1eb2310593a14a81350446273b2875
    closes-bug: #1588623
    divakardhar committed Jun 3, 2016
    Configuration menu
    Copy the full SHA
    869f263 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    60fc986 View commit details
    Browse the repository at this point in the history
  3. Merge "Inrease the Trap size of the truncated packet while Trapping t…

    …o Agent" into R3.0
    Zuul authored and opencontrail-ci-admin committed Jun 3, 2016
    Configuration menu
    Copy the full SHA
    41187db View commit details
    Browse the repository at this point in the history
  4. DPDK: Make the RSS mempool size as configurable through command line

    Change-Id: I9dc88b3b7370d9d36198c6724dff057b66697884
    Closes-Bug: 1585475
    kirankn80 committed Jun 3, 2016
    Configuration menu
    Copy the full SHA
    9e23f34 View commit details
    Browse the repository at this point in the history

Commits on Jun 9, 2016

  1. Enabling ARP processing on Service interface

    To avoid the flooding of packets on service interface, BUM traffic on
    service interface is drooped. This is fine as service instance does not
    communicate to another sevice instance. This fix enables the ARP processing on
    service instance interface so that it can communicate to another service
    instance. If ARP algorithm choses to flood the ARP request, it is still
    dropped, so that it would not loop.
    
    Change-Id: I31e18f16d8baa5d9dd65da202636b36048b64a0f
    closes-bug: #1516914
    divakardhar committed Jun 9, 2016
    Configuration menu
    Copy the full SHA
    3c57fad View commit details
    Browse the repository at this point in the history

Commits on Jun 10, 2016

  1. DPDK: fix low performance of SR-IOV VF IO lcore

    The check for number of forwarding lcores is incorrect when
    number of worwarding lcores is about the same the number of
    TX queues.
    
    Change-Id: Icd4e2fe453e695199322fb5391aebf5cd2ffed3b
    Closes-bug: #1567470
    semihalf-berestovskyy-andriy committed Jun 10, 2016
    Configuration menu
    Copy the full SHA
    cd31d22 View commit details
    Browse the repository at this point in the history
  2. DPDK: fix LACP address add function

    Using rte_eth_dev_mac_addr_add() does not work on virtual
    functions.
    
    Change-Id: I6389fc14499ab7c77540b4423ed241872d2d8ca7
    Partial-bug: #1588182
    semihalf-berestovskyy-andriy committed Jun 10, 2016
    Configuration menu
    Copy the full SHA
    7dff496 View commit details
    Browse the repository at this point in the history

Commits on Jun 11, 2016

  1. Merge "DPDK: Make the RSS mempool size as configurable through comman…

    …d line" into R3.0
    Zuul authored and opencontrail-ci-admin committed Jun 11, 2016
    Configuration menu
    Copy the full SHA
    ba021ac View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    bb6daac View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    4692505 View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2016

  1. Pull the SCTP header in the ICMP error headers to Head SKB

    When the packet is received on Fabric interface right now the inner
    header are pulled if they are TCP, UDP, ICMP and SCTP. In case of ICMP
    error, the IP header that caulsed the ICMP error is also pulled. While
    pulling this payload IP header the transport heder is pulled onl if it
    is TCP or UDP or ICMP. But if the ICMP error is caused by SCTP packet,
    this SCTP transport header which is part of ICMP payload is not
    pulled.  This is resulting in Vrouter seeing a different SCTP ports
    which are not valid and hence a flow new flow is created thopugh the
    original flow exists for these SCTP flows. As Agent is seeing the
    correct packet it does not update the newly created wrong flow and is
    not moved out of Hold state. Agent eventually removes this from as part
    of its aging cycle.
    
    As a fix, ICMP pauyload SCTP transport header also is pulled to head
    SKB.
    
    Also as part of above fix, it is observed that transport header checksum
    filed is wrongly pointing to ICMP error payload's transport header
    checksum rather to ICMP checksum itself in case of ICMP errors. So this
    has been modified so that th_csum always points to right transport
    header checksum.
    
    closes-bug: #1588925
    o
    Change-Id: I4a843224f92e61263a4598074ff9baa1a864eb78
    divakardhar committed Jun 15, 2016
    Configuration menu
    Copy the full SHA
    6e0b40c View commit details
    Browse the repository at this point in the history

Commits on Jul 8, 2016

  1. Fix dependency issue with vrouter-dpdk

    Need to make the .o's of contrail-vrouter-dpdk depend on dpdk_lib,
    as they need the .h's of dpdk_lib to compile .c->.o's.
    
    Change-Id: Ia9a81d4745625d71e28f9b7d3758d15b77a4fbe3
    Partial-Bug: #1599674
    Karl Klashinsky committed Jul 8, 2016
    Configuration menu
    Copy the full SHA
    f0fe573 View commit details
    Browse the repository at this point in the history

Commits on Jul 12, 2016

  1. Avoid building vrouter and dpdk against 4.2.0 kernel

    Porting work required for vrouter and libdpdk (third_party/dpdk) to
    compile against kernel v4. In the meantime, when detecting kernel
    installed version is 4.*, we will make sure that vrouter and libdpdk
    build against a supported v3 kernel. Otherwise, Makefile's for
    both will default to build against installed kernel version.
    
    Change-Id: I825721b2f3b36cb320a215b31f606dad35e9b77a
    Partial-Bug: #1599674
    Karl Klashinsky committed Jul 12, 2016
    Configuration menu
    Copy the full SHA
    32821b2 View commit details
    Browse the repository at this point in the history

Commits on Jul 20, 2016

  1. Inline skb_frag_add_head in 4.3 later kernels.

    skb_frag_add_head has been removed from 4.3
    
    Closes-Bug: #1572124
    Change-Id: I77c182364841331d47357e3fe32b375b07821e24
    pupapaik committed Jul 20, 2016
    Configuration menu
    Copy the full SHA
    353c9c5 View commit details
    Browse the repository at this point in the history

Commits on Jul 21, 2016

  1. The source IP for neighbor advertisement should be same as the target…

    … address.
    
    There is no need to change it to a different address.
    
    Change-Id: I156babd985d86989fd6c2c6eefadbb7f261e687f
    closes-bug: #1604105
    (cherry picked from commit 348ca58)
    haripk committed Jul 21, 2016
    Configuration menu
    Copy the full SHA
    0ef8ec9 View commit details
    Browse the repository at this point in the history

Commits on Jul 31, 2016

  1. Configuration menu
    Copy the full SHA
    4154466 View commit details
    Browse the repository at this point in the history

Commits on Aug 6, 2016

  1. Support Relax policy for pkt from tap interface

    Adding support for relax policy on route nexthop
    
    Partial-Bug: 1597540
    Change-Id: Ie191356f8e26cf16564e69ab854fef40c84dab81
    (cherry picked from commit abdaac9)
    Prabhjot Singh Sethi committed Aug 6, 2016
    Configuration menu
    Copy the full SHA
    3aa3680 View commit details
    Browse the repository at this point in the history

Commits on Aug 8, 2016

  1. Fix NH flag usage for relax policy

    Issue:
    ------
    Relax policy processing for VHOST recv NH needs to be
    done only in certain specific scenarios however
    the RELAX_POLICY flag will always be set. Doing an
    unconditional look for it causes other features to break
    
    Fix:
    ----
    Using a separate flag to perform a flow lookup
    unconditionaly to distinguish it from relax po0licy on
    recevie nh.
    
    Partial-Bug: 1597540
    Change-Id: I3b44714a041e2ea681103e01dcbd0811502c4cf6
    (cherry picked from commit 2b01d8a)
    Prabhjot Singh Sethi committed Aug 8, 2016
    Configuration menu
    Copy the full SHA
    8852017 View commit details
    Browse the repository at this point in the history

Commits on Aug 18, 2016

  1. nh tool to expand composite nh recursively

    For better outputs, nh tool should expand composite nh and display
    all destinations recursively
    
    Change-Id: Ie639fb28e797edd57f6114308a71d21f745fd752
    Closes-bug: #1473532
    ravi-bk committed Aug 18, 2016
    Configuration menu
    Copy the full SHA
    6e20800 View commit details
    Browse the repository at this point in the history

Commits on Aug 26, 2016

  1. Update prefix len in Mtrie bucket as well

    Right now, if mtrie already contains more specific entries and if a less
    specific entry is added, only non-matching leaves are updated with less
    specific entry's prefix len. The matching buckets also need to be
    updated with prefix len. Not updating the prefix len in buckets, results
    in, not collapsing the tree, if these less specific entries are deleted.
    
    For example, in an empty tree, 8.1.1.10/32 -> nh1 is added. This results
    in, at level 1 bucket 8, level 2 bucket 1, level 3 bucket 1 to contain
    prefix len as 0 and level 4 bucket 10 to contain prefix len as 32. The
    other leaves in level 4 (like 8.1.1.1 till 8.1.1.255 except 10) also
    contain prefix len as 0. After this 8.1.1.0/24 -> nh2 is added.
    Currently the prefix len of 24 is updated only in the leaves like, 8.1.1.1
    till 8.1.1.255. Ideally the prefix len 24 should be updated in level 3
    bucket 1 as well. Not updating this, leads to issues while collapsing
    level 3 buckets.
    
    Fixes:
    1) Prefix len is updated in the matching buckets as well
    2) In the label flags, if LABEL_VALID flag not set, the label stored
       does not have any meaning. But while collapsing the bucket the labels
       are also compared leading to non-collapse. The labels need to be
       compared only if the LABEL_VALID flag is set. To over come this, if
       the LABEL_VALID is not set, the label is stored as -1, so that they
       are comparable even if flag is not set
    3) In 'rt' utility, the replacment len incase of delete is wrongly
       initialised to 100. This is rectified.
    
    Change-Id: I837a32ecc8d6c15fa8644028d63ef38f2259e3ab
    closes-bug: #1605748
    divakardhar committed Aug 26, 2016
    Configuration menu
    Copy the full SHA
    f2f19eb View commit details
    Browse the repository at this point in the history

Commits on Aug 30, 2016

  1. Optimise the add_to_tree in mtrie

    In addition to the changes in https://review.opencontrail.org/#/c/23405/
    these changes do the following
    
    1) Update the prefix len in both Bucket and leaf at single place
    2) Initialise the invalid Labels to 0xFFFFF.
    3) Simplifying the logic of "fin" iterations
    
    closes-bug: #1605748
    
    Change-Id: I417dc918a3186dc9e18ef03b75e53465f0f23fc7
    divakardhar committed Aug 30, 2016
    Configuration menu
    Copy the full SHA
    c0f4500 View commit details
    Browse the repository at this point in the history

Commits on Sep 2, 2016

  1. When in a softirq context, memory allocation should be atomic

    Eviction of flows based on TCP state machine happens in the softirq
    context. The process of evicting a flow depends on the kernel work
    queues, for which allocation of memory needs to happen. Under such
    cases, the allocation should not wait. Hence, pass GFP_ATOMIC as the
    allocation flag when in softirq context to indicate that the path is
    not willing to block.
    
    Change-Id: I2c56203c2666a981ff3218268611d95e18281151
    Closes-Bug: #1618375
    anandhk-juniper committed Sep 2, 2016
    Configuration menu
    Copy the full SHA
    c08c488 View commit details
    Browse the repository at this point in the history
  2. Hash table fixes

    1) Currently the number of delete marked hash entries in Hash bucket is used
    for triggering the work item for the deletion. Work item is triggered
    when the first entry is delete marked. But due to contention in handling
    "number of delete marked entries", the next work item is never
    triggered.
    As a fix, a new variable is used per hash bucket to trigger the work
    item.
    
    2) When Agent gives soft reset, Vrouter marks vr_not_ready. Once
    vr_not_ready is set, Work items and RCU callbacks should not be
    registered any more. In hash table deletion process, once this is set,
    hash bucket is directly manipulated without work item. This results in
    issues, if any pending work item is currently being executed. If work
    item and hash entry deletion (vr_htable_release_hentry()) access the
    same hash bucket, the hash bucket list goes bad.
    
    As a fix, a new API vr_htable_reset() is introduced.
    vr_htable_release_hentry() does not manipulate the hash entry if
    vr_not_ready is setup. Modules are expected to call vr_htable_reset() to
    reset the hash table. Call backs are invoked to act on the reset hash
    entries.
    
    Change-Id: I9edc2c9e7718e3e0eae74a29fd4faaab8c3055b5
    closes-bug: #1614382
    divakardhar committed Sep 2, 2016
    Configuration menu
    Copy the full SHA
    93ec459 View commit details
    Browse the repository at this point in the history
  3. Respond with stitched MAC for unicast ARP request

    When an unicast ARP request is received on fabric interface of a compute
    node, from BMS behind QFX, if MX is in ecmp, the source IP lookup might
    point to subnet route pointing to Ecmp nexthop. This is because there
    would not be any host route for BMS in inet table. This results in Vrouter
    responding with Vhost mac address though the destination IP address is
    stitched. As such this behaviour is to ensure that Routing is forced if
    the packet is from Ecmp source, though destination is in same subnet.
    But this behaviour creates issues to BMS behind QFX, if BMS refreshes
    ARP with unicast ARP request.
    
    As a fix, the multicast ARP requests from Ecmp source on fabric
    interface are dropped. If unicast ARP requests and if the destination
    mac address of the ethernet packet is stitched mac, the ARP reply is
    sent with stitched mac. If destination mac address does not match with
    stitched mac, that ARP request is not processed by Vrouter.
    
    closes-bug: #1594165
    
    Change-Id: I72f4c44329b14c589343b30b84181cc8e0e05e81
    divakardhar committed Sep 2, 2016
    Configuration menu
    Copy the full SHA
    7cc0122 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    54f87b0 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    a20d45b View commit details
    Browse the repository at this point in the history

Commits on Sep 3, 2016

  1. Handle unicast ARP requests in source compute node

    Currently the unicast ARP requests are not processed in the source
    compute node. These packets are switched to the destination compute node
    and before handing the L2 packet to destined VM, these are processed.
    This can result in Ecmp source VM sending unicast ARP requests and
    destination VM (non ecmp) responding with Vhost MAC.
    
    As a fix, unicast ARP requests are also processed in source compute node
    itself
    
    Change-Id: I7ff8e0b4a5b9fc8abf777e32ed4ef8aeeb4358d6
    closes-bug: #1618154
    divakardhar committed Sep 3, 2016
    Configuration menu
    Copy the full SHA
    7145759 View commit details
    Browse the repository at this point in the history

Commits on Sep 12, 2016

  1. Trap & Flood neighbor advertisements

    Change-Id: I822e1f1d4ca8f43bd648383a46f3f5bb30d0274a
    Closes-Bug: #1592119
    anandhk-juniper committed Sep 12, 2016
    Configuration menu
    Copy the full SHA
    931d74e View commit details
    Browse the repository at this point in the history

Commits on Sep 14, 2016

  1. Fix memory allocation for interface request

    In order to pass per lcore queue input error statistics to the
    application that does vif query, we allocate only VR_MAX_CPUS
    worth of memory, but we try to copy vr_num_cpus worth of data.
    In the case of vr_num_cpus > VR_MAX_CPUS (64), we will hit a snag.
    As a fix, allocate memory for vr_num_cpus.
    
    Change-Id: Ifb1060aac20011b8d51e1b31063a363fe268fd3d
    Closes-Bug: #1621816
    anandhk-juniper committed Sep 14, 2016
    Configuration menu
    Copy the full SHA
    a709ccd View commit details
    Browse the repository at this point in the history

Commits on Sep 22, 2016

  1. In HashTables, handle the error case if deferred work entry creation …

    …fails
    
    Right now, if the deferred work entry creation fails, we do not take any
    ation. This can result in, Hash bucket never being cleaned up, as there
    is no work entry scheduled at all.
    
    As a fix, reset the work entry 'scheduled' variable, so that, it gets
    scheduled when the next hash entry is attemped for deletion in that
    bucket
    
    Change-Id: Ia66bd340177253ac1267aa667521c26838487dbe
    partial-bug: #1618375
    divakardhar committed Sep 22, 2016
    Configuration menu
    Copy the full SHA
    90c9693 View commit details
    Browse the repository at this point in the history

Commits on Sep 30, 2016

  1. If a pclone fails, trap the original packet

    In the process of indicating a flow miss to the agent, if a pclone
    fails, vRouter returns without unsetting the NEW flag, a flag that
    indicates that the datapath is in the process of creating a new flow.
    The side effect of not unsetting this flag is that agent can not
    modify the entry and this leads to perennial HOLD flows in the
    system.
    
    To fix this problem, if the pclone fails, trap the original packet
    to the agent without holding it in the HOLD queue. While this will
    mean that the first packet does not reach the destination, it is
    a better alternative to not trapping the packet and wait for agent
    to do the audit after a minute or so. Such trapped packets are
    captured under a new counter "Original Packet Trapped" in the
    dropstats output.
    
    Change-Id: I34c19abf935d9b06f55e875b76a4859350743c2b
    Partial-Bug: #1628175
    anandhk-juniper committed Sep 30, 2016
    Configuration menu
    Copy the full SHA
    8d38dc3 View commit details
    Browse the repository at this point in the history

Commits on Oct 18, 2016

  1. Transmit V6 Neighbour advertisement on the receiving interface

    This fix is IPV6 equivalent of
    https://review.opencontrail.org/#/c/11506/.
    
    In in-network service instance case, when service scaling
    is more than one, all the instances are going to have the
    same mac address and IP address. Inet route points to
    ECMP composite nexthop but FDB route does not point to ECMP
    nexthop. So when neighbour request is received from service VM
    Vrouter needs to send response on the incoming interface
    rather bridging the reply packet, as FDB route points
    to arbitrarly any of the service VM encap L2 nexthop.
    
    After preparing the reply packet,bridge lookup is done
    and outgoing interface is compared against ingress interface.
    If they are not same, reply packet is transmitted on
    ingress interface.
    
    Change-Id: Ib0113227019d7a452541129843813a647d388b36
    closes-bug: #1461882
    divakardhar committed Oct 18, 2016
    Configuration menu
    Copy the full SHA
    e894f7e View commit details
    Browse the repository at this point in the history

Commits on Oct 21, 2016

  1. Calcaulte udp source port for multicast pkt using right hash

    While calculating the UDP source port for a multicast packet, the hash
    needs to be on Ethernet header and VRF Id. For packet arriving from VM
    and Tor, there are no extra header other than transport headers. So the
    hash is calculated rightly for these packets. But for packets arriving
    from other compute node, there are additional header other than
    transport headers. The hash is wrongly calculated in this case on thsese
    additional headers leading to different hash for the same Ethernet
    headers, resulting in different UDP sourcd port.
    
    The offset is correctly calculated and right ethernet header is passed
    to hash function as fix.
    
    Change-Id: I93ae0d96e536875988da6a525cdba4783c1e4d6e
    closes-bug: #1635046
    divakardhar committed Oct 21, 2016
    Configuration menu
    Copy the full SHA
    1c04f00 View commit details
    Browse the repository at this point in the history

Commits on Oct 24, 2016

  1. Disable the flow processing for Neighbour Advertisements

    The neighbour request packets are typically Multicast packets and there
    is no flow processing for these. When a neighbour request is converted
    to neighbour advertisement, we continue to use the same packet buffer
    and same packet flags for this advertisement too. This ends up in not
    creating a flow for neighbour advertisement too as the original packet
    is marked as multicast packet. But the fix we gave
    https://review.opencontrail.org/#/c/24973/ for bug: #1461882 for V6
    resulted in creating new packet flags for advertisement and this is
    resulting in flow being created. The flow processing is dropping the
    response as the neighbour advertisement should have ideally come from
    different interface.
    
    We can fix this issue either by manipulating the source interface to
    match the interface on which neighbour is falling so that flow
    processing succeeds or by disabling the flow processing for
    advertisements.
    
    The fix now disables the flow processing for advertisements
    
    Change-Id: Ic91f0fb794c13912e43d8c96c726bd80e559b7fb
    closes-bug: #1635931
    divakardhar committed Oct 24, 2016
    Configuration menu
    Copy the full SHA
    8d407c8 View commit details
    Browse the repository at this point in the history

Commits on Oct 26, 2016

  1. Change in port mirroring tap locations

    For all types of virtual interfaces, the location from where we tap
    packets for RX port mirroring is in a common function where all
    the common virtual processing happens. For a vlan based sub-interface,
    this means that the port mirroring happens post untagging the packet
    and hence this is not a correct behavior.
    
    Hence, move the tap locations to the lowest layers of vif receive.
    
    Also, during transmission, since the tap is in the lowest common
    layer, sub interface mirroring does not work. Hence, move the taps
    to the highest layer of vif transmit.
    
    Also, add taps for vhost and physical interfaces.
    
    Change-Id: Ie42bfcedde2eba1167fa49e7ecd627b7762363e9
    Closes-Bug: #1630889
    anandhk-juniper committed Oct 26, 2016
    Configuration menu
    Copy the full SHA
    d5c7566 View commit details
    Browse the repository at this point in the history
  2. Set packet type before mirroring from port

    In order to make sure that we mirror the packet the way we received
    it, i.e before removing any data from the packet, such as vlan tags,
    mirroring tap points were moved to the very beginning of packet
    processing in vRouter. Unfortunately, packet type classification
    does not happen before the mirror tap point. Since no classification
    happens, options like COPY SIP/DIP does not work and hence packets
    can get dropped in the flow block.
    
    Fix this by explicitly classifying the packet in the vif_mirror.
    
    Change-Id: Id310b31bc1990e6671882b447b8243767ada24ee
    Closes-Bug: #1630889
    anandhk-juniper committed Oct 26, 2016
    Configuration menu
    Copy the full SHA
    9e5565c View commit details
    Browse the repository at this point in the history

Commits on Oct 28, 2016

  1. For port mirroring, flow index should not be set

    During transmit port mirror, we seem to be using the mirror values
    from the flow of the original packet. This is not a right behavior,
    since port mirroring shouldn't be depending on flow based mirror
    values.
    
    Hence reset the flow index for the port mirrored packet
    
    Change-Id: I1aff969b08a2f247ccf1fc636d6689350e819f29
    Closes-Bug: #1636638
    anandhk-juniper committed Oct 28, 2016
    Configuration menu
    Copy the full SHA
    7f5e8b1 View commit details
    Browse the repository at this point in the history

Commits on Nov 8, 2016

  1. Manipulating the TTL of the Packet

    Right now the TTL of the packet is not overwritten by Vrouter. It is
    only decremented like a hop, for the required packets. But BGP packets
    in VM (due to BGP as service), can come to Vrouter to with ttl of 1. In
    a multi hop environment, we require this ttl to be more than 1. For this
    purpose flow entry is added with another ttl field and if Agent sets
    this, vrouter unconditionally sets this ttl in the packet and calculates
    the checksum again.
    
    Change-Id: I4619e81ad324827e29dc487857020ddd9e429f2c
    partial-bug: #1567586
    divakardhar committed Nov 8, 2016
    Configuration menu
    Copy the full SHA
    afbd37c View commit details
    Browse the repository at this point in the history
  2. If packet clone needs to be modified, create a copy of the DPDK mbuf.

    Change-Id: I31ff88e6f46600b917c62ac967d112f9bd0949c5
    Closes-BUG: 1630772
    srajag committed Nov 8, 2016
    Configuration menu
    Copy the full SHA
    8365502 View commit details
    Browse the repository at this point in the history

Commits on Nov 14, 2016

  1. Disable vlan offload as it causes performance degradation.

    Change-Id: Id7bd20a040a1aa3c1ad4b1c6f68c10a9836d6108
    Closes-Bug: 1641254
    srajag committed Nov 14, 2016
    Configuration menu
    Copy the full SHA
    72d4ef3 View commit details
    Browse the repository at this point in the history

Commits on Nov 16, 2016

  1. Configuration menu
    Copy the full SHA
    81cf048 View commit details
    Browse the repository at this point in the history

Commits on Dec 6, 2016

  1. Fixing display of vrouter build_info for sandesh

    For sandesh message of vrouter build information, null termination character
    is not accounted while populating sandesh message. Due to this, extra characters
    are observed at collector and contrail-alarm-gen. Modified copy of string by taking
    null termination character into consideration.
    
    Change-Id: I249c5fc168d301b718e63530a2022bbe67e080f0
    Closes-Bug: #1646693
    ravi-bk authored and haripk committed Dec 6, 2016
    Configuration menu
    Copy the full SHA
    d15a137 View commit details
    Browse the repository at this point in the history

Commits on Dec 10, 2016

  1. Avoid flow processing for neighbor solicitation/advertisements

    A unicast neighbor solicitation/response undergoes a flow lookup.
    In many cases the source IP address that is used will be the link
    local IP which will get dropped because of RPF checks. Consistent
    with the way we treat ARP requests, we will now make sure that
    the solicitation and advertisements do not undergo flow lookup.
    
    Change-Id: Ib2ab306b0bdd6f201c35faa1918f97324238be1e
    Closes-Bug: #1643906
    (cherry picked from commit 961a878)
    anandhk-juniper authored and haripk committed Dec 10, 2016
    Configuration menu
    Copy the full SHA
    82adb2a View commit details
    Browse the repository at this point in the history

Commits on Jan 19, 2017

  1. Make average setup rate as uint64 to prevent overflow in calculation

    with high number of flows.
    Skip flow setup rate calculations for the first time.
    
    Change-Id: Ib17bda69b7e1994a460512035be09888ad78500c
    Closes-Bug:#1654941
    krharsh committed Jan 19, 2017
    Configuration menu
    Copy the full SHA
    3cd1586 View commit details
    Browse the repository at this point in the history

Commits on Jan 23, 2017

  1. Calculate checksum only for valid IP length

    __skb_checksum_complete calculates checksum for the whole packet,
    including the ethernet padding if any. This will result in wrong
    checksum verification at the receiving end and thus a wrong packet
    drop.
    
    Use __skb_checksum_complete_head instead and pass the length
    calculated from IP header as the size over which checksum has to
    be calculated.
    
    Change-Id: I48efbb66bc171c590784d6f1931be9abd81198ae
    Closes-Bug: #1658576
    anandhk-juniper committed Jan 23, 2017
    Configuration menu
    Copy the full SHA
    93cc9bd View commit details
    Browse the repository at this point in the history

Commits on Feb 8, 2017

  1. Do not blindly bridge link local neighbor solicitations

    The existing code that handles neighbor solicitations, bridges
    all requests to link local destinations. This behavior does not
    work for gateway link local address since
    
    . a broadcast request to the link local address will not make
      to the agent
    
    . a unicast request to the link local address will not be handled
      by the agent.
    
    Agent does not handle neighbor solicitations since vRouter is
    expected to respond back with the proper mac address based on
    the flags in the route.
    
    Hence, make all link local neighbor solicitations to go through
    vRouter's logic of proxying and flooding based on flags set on
    the route.
    
    Change-Id: I4f23d1c980e887d044776d49bbc71b9faaf2f0a9
    Closes-Bug: #1657483
    
    Set the 'Router' bit if proxying with Router MAC
    
    For ICMPv6 advertisements that carry the Router MAC, set the
    'Router' bit in the advertisements.
    
    Change-Id: Iccc5d1ca025c71f55bfc85c6e12f4cf6944a9dfc
    Closes-Bug: #1657483
    anandhk-juniper committed Feb 8, 2017
    Configuration menu
    Copy the full SHA
    7bd4685 View commit details
    Browse the repository at this point in the history

Commits on Feb 21, 2017

  1. Don't look for UDP header in second fragment and later.

    Change-Id: I724e58d9ecee113ee7627f9d4b2b52f0033c2d16
    Partial-Bug:1664734
    srajag committed Feb 21, 2017
    Configuration menu
    Copy the full SHA
    16df717 View commit details
    Browse the repository at this point in the history

Commits on Mar 1, 2017

  1. Remove the constraint of V6 prefix length to be multiple of 8

    While adding the V4 and V6 routes to Mtrie, bits that are set in prefix
    beyond the mask length are reset to 0. While doing this for V6 prefixes,
    it is assumed that V6 mask len is byte boundary. If not, thre prefix
    corresponding to those bits are also reset to zero.
    
    As a fix, this constraing has been removed
    
    Change-Id: I2c61ea9829d37b78d8570411bc3db02c0ef1cded
    closes-bug: #1657766
    (cherry picked from commit 9b60ccf)
    divakardhar authored and haripk committed Mar 1, 2017
    Configuration menu
    Copy the full SHA
    e761a05 View commit details
    Browse the repository at this point in the history

Commits on Mar 10, 2017

  1. Hold packets while doing ECMP resolution

    In a typical ECMP use case, by the time packet destined to the ECMP
    destination hits the flow, the ECMP index to be used to select the
    best among equals would already have been decided by the agent and
    programmed accordingly in the vRouter. However, in some not so common
    scenarios, the first packet can be trapped to agent for resolving the
    nexthop to be used among the nexthops that form the ECMP destination.
    
    In such cases, we should hold and trap the packet rather than just
    trapping so that first packet loss can be avoided.
    
    Change-Id: I09e785254ee0ef187099152e2808b8a67850d31d
    Closes-Bug: #1648027
    (cherry picked from commit 21a6b46)
    anandhk-juniper authored and haripk committed Mar 10, 2017
    Configuration menu
    Copy the full SHA
    590c83a View commit details
    Browse the repository at this point in the history

Commits on Mar 31, 2017

  1. Terminate the long_options array with an entry that is all zeros,

    to define end of parsing by getopt_long hence preventing segfault.
    
    Change-Id: I018e5af02e5842d25494b2d93412c8c37dd4b316
    Closes-Bug:#1651153
    krharsh committed Mar 31, 2017
    Configuration menu
    Copy the full SHA
    bd8e19a View commit details
    Browse the repository at this point in the history

Commits on Apr 4, 2017

  1. Fix segmentation fault in dropstats , vrmemstats utilities.

    Add all zeros to define end of long_options array.
    
    Change-Id: I1ba57bc0ed6bb2d3ddce3f72dcbd87e2d4e30b53
    Closes-Bug: #1679489
    krharsh committed Apr 4, 2017
    Configuration menu
    Copy the full SHA
    11d43bd View commit details
    Browse the repository at this point in the history

Commits on Apr 10, 2017

  1. Increment Nexthop ref count atomically

    Right now, the NH's refcount is not incremented atomically as reference
    to NH is always taken from a single thread in nelink context. This is
    becuase Routes, Labels, and other NH's access an NH only when Agent
    performs config changes. But with data path mac learning in place
    because of PBB, reference to NH, esp L2 Mutlicast NH, happens from
    multiple threads leading to requirement incrementing it atomically. Not
    doing it causes the ref count to go bad for that particular NH and
    results in double free of NH.
    
    Change-Id: I0afa517b56eeac0371670ee76241e392be762f20
    closes-bug: #1672293
    closes-bug: #1672373
    closes-bug: #1673663
    divakardhar committed Apr 10, 2017
    Configuration menu
    Copy the full SHA
    9900fb6 View commit details
    Browse the repository at this point in the history
  2. Cleanup SubVIF properly if addition fails

    On a given physical interface there can only be one subinterface per
    given Vlan ID. If Agent attempts to add multiple subinterfaces with same
    Valn ID, vrouter rejects that addition with -EEXIST error. As part of
    this rejection, the temproary subinterface need to be properly
    cleaned up. Right now the clean up is not proper w.r.t memory and the
    refcount of the physical interface is lso not handled well. This is
    leading to either memory leak/corruption.
    
    Also currently the ref counting of VIF is not symetric w.r.t increment
    and decrement. Decrement of ref count is done in atomic way but not
    increment. This as such can lead to issues when RCU callbacks
    of NH (which eventually decrement VIF ref count in atomic manner) are
    executed in parallel to new NH addition from Agent (which increments VIF
    ref count non atomic manner).
    
    As a fix, sub VIF is cleaned up properly and VIF ref count is
    incremented in atomic manner
    
    Change-Id: I2a9d41f2b0152f700e2c5c96c9f39825c22ce482
    closes-bug: #1677571
    divakardhar committed Apr 10, 2017
    Configuration menu
    Copy the full SHA
    867e3c6 View commit details
    Browse the repository at this point in the history

Commits on Apr 11, 2017

  1. Configuration menu
    Copy the full SHA
    46032c0 View commit details
    Browse the repository at this point in the history

Commits on May 2, 2017

  1. Reset the reach_nh pointer to original value

    If the composite nexthop does not have any component nexthops,
    we set the reach_nh to discard. One side effect of this behavior
    is that multicast ARPs are dropped, since ARP processing happens
    in the composite nexthop handling. Hence, retain the composite
    nexthop functionality, even if there are no component nexthops.
    
    As part of this change, we also make sure that if a change in
    any nexthop fails, we do not disrupt the way it works.
    
    Change-Id: Ic9ea091e3f0cbe659389bc57bea2a1e214bbd771
    Closes-Bug: #1686452
    (cherry picked from commit d686b42)
    anandhk-juniper authored and haripk committed May 2, 2017
    Configuration menu
    Copy the full SHA
    a1aa693 View commit details
    Browse the repository at this point in the history

Commits on May 5, 2017

  1. Remove Mtu from vif display .

    Closes-Bug:#1630651
    
    Change-Id: I99a090f26083b0804a2e0147d24f24a17d5be0ce
    krharsh committed May 5, 2017
    Configuration menu
    Copy the full SHA
    0727200 View commit details
    Browse the repository at this point in the history

Commits on May 8, 2017

  1. Memset the control block to zeroes before calling skb_segment

    skb_segment casts part of skb->cb to some structure to determine
    tunnel header length. Having remnants of packet structure in cb
    results in wrong tunnel header length calculation and thus wrong
    memory copies to random memory locations. This problem is with
    newer kernels (4.x).
    
    Change-Id: Ifc2c7a4c5ea448cd57df88e51bb82a7f62c97cc6
    Closes-Bug: #1685181
    anandhk-juniper committed May 8, 2017
    Configuration menu
    Copy the full SHA
    d7ea2cc View commit details
    Browse the repository at this point in the history

Commits on May 10, 2017

  1. A cloned skbuff should not be sent to napi_gro_receive

    When skb_gro_receive merges skbs/fragments, it does not take
    a reference to the underlying page, thus transferring the
    original reference it had to the first packet of the packet
    bundle. This will work fine for non-cloned packets.
    
    However, for cloned packets, when the gro-ed packet is
    eventually freed (because the original skb was not cloned and
    hence reference was 1), the merged skb's frags also get freed
    (put_page-ed) without taking into account the other references
    that were held for the fragments (dataref). This will result in
    bad page problems.
    
    Hence, avoid GRO for cloned packets.
    
    Change-Id: I867dc6eac82e1ebc7a0f496b928d66ff62409542
    Closes-Bug: #1683305
    anandhk-juniper committed May 10, 2017
    Configuration menu
    Copy the full SHA
    ccb1df4 View commit details
    Browse the repository at this point in the history

Commits on Jun 21, 2017

  1. Fill the NH of the packet in fragment assembler

    When fragments are recieved out of order, assembler code caches them
    till head fragment is received. While holding the packet, packet's nh is
    not cached to avoid taking a reference to NH. Once the head fragment is
    received, these out of order fragments are released for flow processing.
    While doing this, packet's nh is not filled if the encap is Vxlan packet
    as this requires a mac address lookup. For Mpls packets, label is looked
    up to extract the NH. Not filling the NH, is resulting in Flow lookup
    failure as NH id is also a key for the flow table. Failure to look up
    the original flow entry (of head fragment) results in either creating
    the new flow entry (with wrong key nh id) in Hold state, or dropping the
    packet without flow processing.
    
    To avoid this, bridge look up is done in the given VRF, to extract the
    NH.
    
    closes-bug: #1698986
    
    Conflicts:
    	dp-core/vr_bridge.c
    	dp-core/vr_flow.c
    	include/vr_bridge.h
    
    Change-Id: I62d1f0a2bd2112636a43ec00a25a9530838bd8ae
    divakardhar committed Jun 21, 2017
    Configuration menu
    Copy the full SHA
    100295e View commit details
    Browse the repository at this point in the history

Commits on May 30, 2018

  1. vif interfaces are numbered , add check for

    vif get to be called only when argument is a number .
    
    Change-Id: Iac358d6e99e38fb3a08a61e39d325aed1d5f4d5e
    Closes-Bug: #1752783
    krharsh committed May 30, 2018
    Configuration menu
    Copy the full SHA
    937d329 View commit details
    Browse the repository at this point in the history