20 Oct, 2013

2 commits

  • Instead of unconditionally removing all the TT entries
    served by a given originator, make tt_global_orig_del()
    remove only entries matching a given VLAN identifier
    provided as argument.

    If such argument is negative all the global entries
    served by the originator are removed.

    This change is used into the BLA code to purge entries
    served by a newly discovered Backbone node, but limiting
    the operation only to those connected to the VLAN where the
    backbone has been discovered.

    Cc: Simon Wunderlich
    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • This change allows nodes to handle the TT table on a
    per-VLAN basis. This is needed because nodes may have to
    store only some of the global entries advertised by another
    node.

    In this scenario such nodes would re-create only a partial
    global table and would not be able to compute a correct CRC
    anymore.

    This patch splits the logic and introduces one CRC per VLAN.
    In this way a node fetching only some entries belonging to
    some VLANs is still able to compute the needed CRCs and
    still check the table correctness.

    With this patch the shape of the TVLV-TT is changed too
    because now a node needs to advertise all the CRCs of all
    the VLANs that it is wired to.

    The debug output of the local Translation Table now shows
    the CRC along with each entry since there is not a common
    value for the entire table anymore.

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     

19 Oct, 2013

38 commits

  • A TT response may be prepared and sent while the local or
    global translation table is getting updated.

    The worst case is when one of the tables is accessed after
    its content has been recently updated but the metadata
    (TTVN/CRC) has not yet. In this case the reader will get a
    table content which does not match the TTVN/CRC.
    This will lead to an inconsistent state and so to a TT
    recovery.

    To avoid entering this situation, put a lock around those TT
    operations recomputing the metadata and around the TT
    Response creation (the latter is the only reader that
    accesses the metadata together with the table).

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • this comment refers to the old batmand codebase and does
    not make sense anymore. Remove it

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • With this patch the functions batadv_send_skb_unicast() and
    batadv_send_skb_unicast_4addr() are further refined into
    batadv_send_skb_via_tt(), batadv_send_skb_via_tt_4addr() and
    batadv_send_skb_via_gw(). This way we avoid any "guessing" about where to send
    a packet in the unicast forwarding methods and let the callers decide.

    This is going to be useful for the upcoming multicast related patches in
    particular.

    Further, the return values were polished a little to use the more
    appropriate NET_XMIT_* defines.

    Signed-off-by: Linus Lüssing
    Acked-by: Antonio Quartulli
    Signed-off-by: Marek Lindner
    Signed-off-by: Antonio Quartulli

    Linus Lüssing
     
  • AP isolation has to be enabled on one VLAN interface only.
    This patch moves the AP isolation attribute to the per-vlan
    interface attribute set, enabling it to have a different
    value depending on the selected vlan.

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • Each VLAN can now have its own set of attributes which are
    exported through a new subfolder in the sysfs tree.
    Each VLAN created on top of a soft_iface will have its own
    subfolder.

    The subfolder is named "vlan%VID" and it is created inside
    the "mesh" sysfs folder belonging to batman-adv.

    Attributes corresponding to the untagged LAN are stored in
    the root sysfs folder as before.

    This patch also creates all the needed macros and data
    structures to easily handle new VLAN spacific attributes.

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • Since batman-adv is now fully VLAN-aware, a proper framework
    able to handle per-vlan-interface attributes is needed.

    Those attributes will affect the associated VLAN interface
    only, rather than the real soft_iface (which would result
    in every vlan interface having the same attribute
    configuration).

    To make the code simpler and easier to extend, attributes
    associated to the standalone soft_iface are now treated
    like belonging to yet another vlan having a special vid.
    This vid is different from the others because it is made up
    by all zeros and the VLAN_HAS_TAG bit is not set.

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • The same IP subnet can be used on different VLANs, therefore
    DAT has to differentiate whether the IP to resolve belongs
    to one or the other virtual LAN.
    To accomplish this task DAT has to deal with the VLAN tag
    and store it together with each ARP entry.

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • The gateway code is now adapted in order to correctly
    interact with the Translation Table component by using the
    vlan ID

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • now that each TT entry is characterised by a VLAN ID, the
    latter has to be taken into consideration when computing the
    local/global table CRC as it would be theoretically possible
    to have the same client in two different VLANs

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • To make the translation table code VLAN-aware, each entry
    must carry the VLAN ID which it belongs to. This patch adds
    such attribute to the related TT structures.

    Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • Signed-off-by: Marek Lindner
    Signed-off-by: Antonio Quartulli

    Marek Lindner
     
  • Signed-off-by: Antonio Quartulli
    Signed-off-by: Marek Lindner

    Antonio Quartulli
     
  • My university will stop email service for alumni in january 2014, please
    use my new e-mail address instead.

    Signed-off-by: Simon Wunderlich
    Signed-off-by: Marek Lindner

    Simon Wunderlich
     
  • Fix bogus merge conflict resolution by checking the return
    values of the skb preparation routines.

    Signed-off-by: Antonio Quartulli

    Antonio Quartulli
     
  • Randy found that if network namespace not enabled then
    nd_net does not exist and would cause compilation failure.

    This is handled correctly by using the dev_net() macro.

    Signed-off-by: Stephen Hemminger
    Acked-by: Randy Dunlap
    Signed-off-by: David S. Miller

    stephen hemminger
     
  • Remove the specialized code in __tcp_retransmit_skb() that tries to trim
    any ACKed payload preceding a FIN before we retransmit (this was added
    in 1999 in v2.2.3pre3). This trimming code was made unreachable by the
    more general code added above it that uses tcp_trim_head() to trim any
    ACKed payload, with or without a FIN (this was added in "[NET]: Add
    segmentation offload support to TCP." in 2002 circa v2.5.33).

    Signed-off-by: Neal Cardwell
    Cc: Eric Dumazet
    Cc: Yuchung Cheng
    Acked-by: Eric Dumazet
    Acked-by: Yuchung Cheng
    Signed-off-by: David S. Miller

    Neal Cardwell
     
  • Under certain low traffic conditions, the single core
    devices with multiple Rx/Tx queues (MQ mode) may reach
    soft lockup due to gfar_poll not returning in proper time.
    The following exception was obtained using iperf on a 100Mbit
    half-duplex link, for a p1010 single core device:

    BUG: soft lockup - CPU#0 stuck for 23s! [iperf:2847]
    Modules linked in:
    CPU: 0 PID: 2847 Comm: iperf Not tainted 3.12.0-rc3 #16
    task: e8bf8000 ti: eeb16000 task.ti: ee646000
    NIP: c0255b6c LR: c0367ae8 CTR: c0461c18
    REGS: eeb17e70 TRAP: 0901 Not tainted (3.12.0-rc3)
    MSR: 00029000 CR: 44228428 XER: 20000000

    GPR00: c0367ad4 eeb17f20 e8bf8000 ee01f4b4 00000008 ffffffff ffffffff
    00000000
    GPR08: 000000c0 00000008 000000ff ffffffc0 000193fe
    NIP [c0255b6c] find_next_bit+0xb8/0xc4
    LR [c0367ae8] gfar_poll+0xc8/0x1d8
    Call Trace:
    [eeb17f20] [c0367ad4] gfar_poll+0xb4/0x1d8 (unreliable)
    [eeb17f70] [c0422100] net_rx_action+0xa4/0x158
    [eeb17fa0] [c003ec6c] __do_softirq+0xcc/0x17c
    [eeb17ff0] [c000c28c] call_do_softirq+0x24/0x3c
    [ee647cc0] [c0004660] do_softirq+0x6c/0x94
    [ee647ce0] [c003eb9c] local_bh_enable+0x9c/0xa0
    [ee647cf0] [c0454fe8] tcp_prequeue_process+0xa4/0xdc
    [ee647d10] [c0457e44] tcp_recvmsg+0x498/0x96c
    [ee647d80] [c047b630] inet_recvmsg+0x40/0x64
    [ee647da0] [c040ca8c] sock_recvmsg+0x90/0xc0
    [ee647e30] [c040edb8] SyS_recvfrom+0x98/0xfc

    To prevent this, the outer while() loop has been removed
    allowing gfar_poll() to return faster even if there's
    still budget left. Also, there's no need to recompute
    the budget per Rx queue anymore.

    Signed-off-by: Claudiu Manoil
    Signed-off-by: David S. Miller

    Claudiu Manoil
     
  • The rtmsg_fib function doesn't modify this argument so mark
    it const.

    Signed-off-by: Joe Perches
    Signed-off-by: David S. Miller

    Joe Perches
     
  • The current test works fine in practice. The "amount" variable is
    actually used as a boolean so negative values or any non-zero values
    count as "true". However since we don't allow numbers greater than one,
    let's not allow negative numbers either.

    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • fib_table_lookup has included the rcu lock protection.

    Signed-off-by: baker.zhang
    Signed-off-by: David S. Miller

    baker.zhang
     
  • Steffen Klassert says:

    ====================
    1) Don't use a wildcard SA if a more precise one is in acquire state,
    from Fan Du.

    2) Simplify the SA lookup when using wildcard source. We need to check
    only the destination in this case, from Fan Du.

    3) Add a receive path hook for IPsec virtual tunnel interfaces
    to xfrm6_mode_tunnel.

    4) Add support for IPsec virtual tunnel interfaces to ipv6.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Himanshu Madhani says:

    ====================
    qlcnic: ethtool enhancements and code cleanup.

    This patch series contains

    o updates to ethtool for pause settings and enhance
    register dump to display mask and ring indices.
    o cleanup in DCB code and remove redundant eSwitch enablement command.
    o fixed firmware dump collection logic to skip unknown entries.

    Changes from v3 -> v4
    o Dropped patch for Tx queue validation to be submitted in net.

    Changes from v2 -> v3

    o Updated patch to print informational messages as per Joe Perches's comment.

    Changes from v1 -> v2

    o Dropped patch to register device if adapter is in FAILED state for more rework.
    o Updated patch to display ring indices via ethtool per Ben Hutchings's comment.
    o Update patch for DCB cleanup per Stephen Hemminger's comment.

    Please apply to net-next.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Signed-off-by: Himanshu Madhani
    Signed-off-by: David S. Miller

    Himanshu Madhani
     
  • o Driver aborts the minidump collection operation when it finds
    an unknown entry opcode. This patch skips unknown entry type
    and resumes the minidump collection operation.
    o Removed a comparision of collected dump size with expected dump size.
    Size may differ when driver decides to skip an entry.

    Signed-off-by: Shahed Shaikh
    Signed-off-by: Himanshu Madhani
    Signed-off-by: David S. Miller

    Shahed Shaikh
     
  • o Move dcb specific function definitions to dcb files.
    o Move dcb specific variables to qlcnic_dcb structure.

    Signed-off-by: Sucheta Chakraborty
    Signed-off-by: Himanshu Madhani
    Signed-off-by: David S. Miller

    Sucheta Chakraborty
     
  • When more than one NIC physical functions are enabled on a port,
    eSwitch on that port gets enabled automatically. Driver
    need not explicitly enable the eSwitch.

    Signed-off-by: Sony Chacko
    Signed-off-by: Himanshu Madhani
    Signed-off-by: David S. Miller

    Sony Chacko
     
  • Update ethtool standard pause parameter settings and display

    Signed-off-by: Jitendra Kalsaria
    Signed-off-by: Himanshu Madhani
    Signed-off-by: David S. Miller

    Jitendra Kalsaria
     
  • o Allow collecting the firmware dump of halted firmware when auto
    recovery is disabled.

    Signed-off-by: Pratik Pujar
    Signed-off-by: Himanshu Madhani
    Signed-off-by: David S. Miller

    Pratik Pujar
     
  • o Updated ethtool -d option to display ring indices for Transmit(Tx),
    Receive(Rx), and Status(St) rings.
    o Updated ethtool -d option to display ring interrupt mask for Transmit(Tx),
    and Status(St) rings.

    Signed-off-by: Pratik Pujar
    Signed-off-by: Himanshu Madhani
    Signed-off-by: David S. Miller

    Pratik Pujar
     
  • Signed-off-by: Sucheta Chakraborty
    Signed-off-by: Himanshu Madhani
    Signed-off-by: David S. Miller

    Sucheta Chakraborty
     
  • Rename tcp_tso_segment() to tcp_gso_segment(), to better reflect
    what is going on, and ease grep games.

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Jon Maloy says:

    ====================
    Some small and relatively straightforward patches. With exception of
    the two first ones they are all unrelated and address minor issues.

    v2: update of v1 (http://patchwork.ozlabs.org/patch/277404/)

    -added commit to use memcpy_fromiovec on user data as per v1 feedback
    -updated sparse fix commit to drop chunks covered by above commit
    -added new commit that greatly simplifies the link lookup routine
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • When checking statistics or changing parameters on a link, the
    link_find_link function is used to locate the link with a given
    name. The complex method of deconstructing the name into local
    and remote address/interface is error prone and may fail if the
    interface names contains special characters. We change the lookup
    method to iterate over the list of nodes and compare the link
    names.

    Signed-off-by: Erik Hugne
    Reviewed-by: Paul Gortmaker
    Signed-off-by: Jon Maloy
    Signed-off-by: David S. Miller

    Erik Hugne
     
  • link_cmd_set_value() takes commands for link, bearer and media related
    configuration. Genereally the function returns 0 when a command is
    recognized, and -EINVAL when it is not. However, in the switch for link
    related commands it returns 0 even when the command is unrecognized. This
    will sometimes make it look as if a failed configuration command has been
    successful, but has otherwise no negative effects.

    We remove this anomaly by returning -EINVAL even for link commands. We also
    rework all three switches to make them conforming to common kernel coding
    style.

    Signed-off-by: Ying Xue
    Reviewed-by: Paul Gortmaker
    Signed-off-by: Jon Maloy
    Signed-off-by: David S. Miller

    Ying Xue
     
  • Currently, rcv_msg() always returns zero on a packet delivery upcall
    from net_device.

    To make its behavior more compliant with the way this API should be
    used, we change this to let it return NET_RX_SUCCESS (which is zero
    anyway) when it is able to handle the packet, and NET_RX_DROP otherwise.
    The latter does not imply any functional change, it only enables the
    driver to keep more accurate statistics about the fate of delivered
    packets.

    Signed-off-by: Ying Xue
    Reviewed-by: Paul Gortmaker
    Signed-off-by: Jon Maloy
    Signed-off-by: David S. Miller

    Ying Xue
     
  • tipc_block_bearer() currently takes a bearer name (const char*)
    as argument. This requires the function to make a lookup to find
    the pointer to the corresponding bearer struct. In the current
    code base this is not necessary, since the only two callers
    (tipc_continue(),recv_notification()) already have validated
    copies of this pointer, and hence can pass it directly in the
    function call.

    We change tipc_block_bearer() to directly take struct tipc_bearer*
    as argument instead.

    Signed-off-by: Ying Xue
    Reviewed-by: Paul Gortmaker
    Signed-off-by: Jon Maloy
    Signed-off-by: David S. Miller

    Ying Xue
     
  • TIPC 'bearer' exists as an abstract concept, while 'media'
    is deemed a specific implementation of a bearer, such as Ethernet
    or Infiniband media. When a component inside TIPC wants to control
    a specific media, it only needs to access the generic bearer API
    to achieve this. However, in the current media implementations,
    the 'bearer' name is also extensively used in media specific
    function and variable names.

    This may create confusion, so we choose to replace the term 'bearer'
    with 'media' in all function names, variable names, and prefixes
    where this is what really is meant.

    Note that this change is cosmetic only, and no runtime behaviour
    changes are made here.

    Signed-off-by: Ying Xue
    Reviewed-by: Paul Gortmaker
    Signed-off-by: Jon Maloy
    Signed-off-by: David S. Miller

    Ying Xue