10 May, 2012

4 commits

  • Use the new bool function ether_addr_equal to add
    some clarity and reduce the likelihood for misuse
    of compare_ether_addr for sorting.

    Done via cocci script:

    $ cat compare_ether_addr.cocci
    @@
    expression a,b;
    @@
    - !compare_ether_addr(a, b)
    + ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - compare_ether_addr(a, b)
    + !ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - !ether_addr_equal(a, b) == 0
    + ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - !ether_addr_equal(a, b) != 0
    + !ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - ether_addr_equal(a, b) == 0
    + !ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - ether_addr_equal(a, b) != 0
    + ether_addr_equal(a, b)

    @@
    expression a,b;
    @@
    - !!ether_addr_equal(a, b)
    + ether_addr_equal(a, b)

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

    Joe Perches
     
  • Add a boolean function to check if 2 ethernet addresses
    are the same.

    This is to avoid any confusion about compare_ether_addr
    returning an unsigned, and not being able to use the
    compare_ether_addr function for sorting ala memcmp.

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

    Joe Perches
     
  • David S. Miller
     
  • During merge of net to net-next the changes in patch:

    e1000e: Fix default interrupt throttle rate not set in NIC HW

    got munged in param.c of the e1000e driver. This rectifies the
    merge issues.

    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Jeff Kirsher
     

09 May, 2012

32 commits

  • can be used e.g. for ingress traffic policing or
    to detect when a host/port consumes more bandwidth than expected.

    This is done by optionally making cost to mean
    "cost per 16-byte-chunk-of-data" instead of "cost per packet".

    Signed-off-by: Florian Westphal
    Signed-off-by: Pablo Neira Ayuso

    Florian Westphal
     
  • followup patch would bloat main match function too much.

    Signed-off-by: Florian Westphal
    Signed-off-by: Pablo Neira Ayuso

    Florian Westphal
     
  • credit_cap can be set to credit, which avoids inlining user2credits
    twice. Also, remove inline keyword and let compiler decide.

    old:
    684 192 0 876 36c net/netfilter/xt_limit.o
    4927 344 32 5303 14b7 net/netfilter/xt_hashlimit.o
    now:
    668 192 0 860 35c net/netfilter/xt_limit.o
    4793 344 32 5169 1431 net/netfilter/xt_hashlimit.o

    Signed-off-by: Florian Westphal
    Signed-off-by: Pablo Neira Ayuso

    Florian Westphal
     
  • The target allows you to create rules in the "raw" and "mangle" tables
    which set the skbuff mark by means of hash calculation within a given
    range. The nfmark can influence the routing method (see "Use netfilter
    MARK value as routing key") and can also be used by other subsystems to
    change their behaviour.

    [ Part of this patch has been refactorized and modified by Pablo Neira Ayuso ]

    Signed-off-by: Hans Schillstrom
    Signed-off-by: Pablo Neira Ayuso

    Hans Schillstrom
     
  • This patch adds the flags parameter to ipv6_find_hdr. This flags
    allows us to:

    * know if this is a fragment.
    * stop at the AH header, so the information contained in that header
    can be used for some specific packet handling.

    This patch also adds the offset parameter for inspection of one
    inner IPv6 header that is contained in error messages.

    Signed-off-by: Hans Schillstrom
    Signed-off-by: Pablo Neira Ayuso

    Hans Schillstrom
     
  • David S. Miller
     
  • This patch removes ip_queue support which was marked as obsolete
    years ago. The nfnetlink_queue modules provides more advanced
    user-space packet queueing mechanism.

    This patch also removes capability code included in SELinux that
    refers to ip_queue. Otherwise, we break compilation.

    Several warning has been sent regarding this to the mailing list
    in the past month without anyone rising the hand to stop this
    with some strong argument.

    Signed-off-by: Pablo Neira Ayuso

    Pablo Neira Ayuso
     
  • Explicit helper attachment via the CT target is broken with NAT
    if non-standard ports are used. This problem was hidden behind
    the automatic helper assignment routine. Thus, it becomes more
    noticeable now that we can disable the automatic helper assignment
    with Eric Leblond's:

    9e8ac5a netfilter: nf_ct_helper: allow to disable automatic helper assignment

    Basically, nf_conntrack_alter_reply asks for looking up the helper
    up if NAT is enabled. Unfortunately, we don't have the conntrack
    template at that point anymore.

    Since we don't want to rely on the automatic helper assignment,
    we can skip the second look-up and stick to the helper that was
    attached by iptables. With the CT target, the user is in full
    control of helper attachment, thus, the policy is to trust what
    the user explicitly configures via iptables (no automatic magic
    anymore).

    Interestingly, this bug was hidden by the automatic helper look-up
    code. But it can be easily trigger if you attach the helper in
    a non-standard port, eg.

    iptables -I PREROUTING -t raw -p tcp --dport 8888 \
    -j CT --helper ftp

    And you disabled the automatic helper assignment.

    I added the IPS_HELPER_BIT that allows us to differenciate between
    a helper that has been explicitly attached and those that have been
    automatically assigned. I didn't come up with a better solution
    (having backward compatibility in mind).

    Signed-off-by: Pablo Neira Ayuso

    Pablo Neira Ayuso
     
  • This refreshes the "timeout" attribute in existing expectations if one is
    given.

    The use case for this would be for userspace helpers to extend the lifetime
    of the expectation when requested, as this is not possible right now
    without deleting/recreating the expectation.

    I use this specifically for forwarding DCERPC traffic through:

    DCERPC has a port mapper daemon that chooses a (seemingly) random port for
    future traffic to go to. We expect this traffic (with a reasonable
    timeout), but sometimes the port mapper will tell the client to continue
    using the same port. This allows us to extend the expectation accordingly.

    Signed-off-by: Kelvie Wong
    Signed-off-by: Pablo Neira Ayuso

    Kelvie Wong
     
  • To build ip_vs as a module sysctl_rmem_max and sysctl_wmem_max
    needs to be exported.

    The dependency was added by "ipvs: wakeup master thread" patch.

    Signed-off-by: Hans Schillstrom
    Signed-off-by: Simon Horman
    Acked-by: David S. Miller
    Signed-off-by: Pablo Neira Ayuso

    Hans Schillstrom
     
  • Functions not referenced outside of a source file should be marked
    static to prevent it from being exposed globally.

    This quiets the sparse warnings:

    warning: symbol '__ipvs_proto_data_get' was not declared. Should it be static?

    Signed-off-by: H Hartley Sweeten
    Signed-off-by: Simon Horman

    H Hartley Sweeten
     
  • Functions not referenced outside of a source file should be marked
    static to prevent it from being exposed globally.

    This quiets the sparse warnings:

    warning: symbol 'ip_vs_ftp_init' was not declared. Should it be static?

    Signed-off-by: H Hartley Sweeten
    Signed-off-by: Simon Horman

    H Hartley Sweeten
     
  • cp->flags is marked volatile but ip_vs_bind_dest
    can safely modify the flags, so save some CPU cycles by
    using temp variable.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Simon Horman

    Pablo Neira Ayuso
     
  • Allow master and backup servers to use many threads
    for sync traffic. Add sysctl var "sync_ports" to define the
    number of threads. Every thread will use single UDP port,
    thread 0 will use the default port 8848 while last thread
    will use port 8848+sync_ports-1.

    The sync traffic for connections is scheduled to many
    master threads based on the cp address but one connection is
    always assigned to same thread to avoid reordering of the
    sync messages.

    Remove ip_vs_sync_switch_mode because this check
    for sync mode change is still risky. Instead, check for mode
    change under sync_buff_lock.

    Make sure the backup socks do not block on reading.

    Special thanks to Aleksey Chudov for helping in all tests.

    Signed-off-by: Julian Anastasov
    Tested-by: Aleksey Chudov
    Signed-off-by: Simon Horman

    Pablo Neira Ayuso
     
  • Add two new sysctl vars to control the sync rate with the
    main idea to reduce the rate for connection templates because
    currently it depends on the packet rate for controlled connections.
    This mechanism should be useful also for normal connections
    with high traffic.

    sync_refresh_period: in seconds, difference in reported connection
    timer that triggers new sync message. It can be used to
    avoid sync messages for the specified period (or half of
    the connection timeout if it is lower) if connection state
    is not changed from last sync.

    sync_retries: integer, 0..3, defines sync retries with period of
    sync_refresh_period/8. Useful to protect against loss of
    sync messages.

    Allow sysctl_sync_threshold to be used with
    sysctl_sync_period=0, so that only single sync message is sent
    if sync_refresh_period is also 0.

    Add new field "sync_endtime" in connection structure to
    hold the reported time when connection expires. The 2 lowest
    bits will represent the retry count.

    As the sysctl_sync_period now can be 0 use ACCESS_ONCE to
    avoid division by zero.

    Special thanks to Aleksey Chudov for being patient with me,
    for his extensive reports and helping in all tests.

    Signed-off-by: Julian Anastasov
    Tested-by: Aleksey Chudov
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • High rate of sync messages in master can lead to
    overflowing the socket buffer and dropping the messages.
    Fixed sleep of 1 second without wakeup events is not suitable
    for loaded masters,

    Use delayed_work to schedule sending for queued messages
    and limit the delay to IPVS_SYNC_SEND_DELAY (20ms). This will
    reduce the rate of wakeups but to avoid sending long bursts we
    wakeup the master thread after IPVS_SYNC_WAKEUP_RATE (8) messages.

    Add hard limit for the queued messages before sending
    by using "sync_qlen_max" sysctl var. It defaults to 1/32 of
    the memory pages but actually represents number of messages.
    It will protect us from allocating large parts of memory
    when the sending rate is lower than the queuing rate.

    As suggested by Pablo, add new sysctl var
    "sync_sock_size" to configure the SNDBUF (master) or
    RCVBUF (slave) socket limit. Default value is 0 (preserve
    system defaults).

    Change the master thread to detect and block on
    SNDBUF overflow, so that we do not drop messages when
    the socket limit is low but the sync_qlen_max limit is
    not reached. On ENOBUFS or other errors just drop the
    messages.

    Change master thread to enter TASK_INTERRUPTIBLE
    state early, so that we do not miss wakeups due to messages or
    kthread_should_stop event.

    Thanks to Pablo Neira Ayuso for his valuable feedback!

    Signed-off-by: Julian Anastasov
    Signed-off-by: Simon Horman

    Pablo Neira Ayuso
     
  • As the goal is to mirror the inactconns/activeconns
    counters in the backup server, make sure the cp->flags are
    updated even if cp is still not bound to dest. If cp->flags
    are not updated ip_vs_bind_dest will rely only on the initial
    flags when updating the counters. To avoid mistakes and
    complicated checks for protocol state rely only on the
    IP_VS_CONN_F_INACTIVE bit when updating the counters.

    Signed-off-by: Julian Anastasov
    Tested-by: Aleksey Chudov
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • Initially, when the synced connection is created we
    use the forwarding method provided by master but once we
    bind to destination it can be changed. As result, we must
    update the application and the transmitter.

    As ip_vs_try_bind_dest is called always for connections
    that require dest binding, there is no need to validate the
    cp and dest pointers.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • As the IP_VS_CONN_F_INACTIVE bit is properly set
    in cp->flags for all kind of connections we do not need to
    add special checks for synced connections when updating
    the activeconns/inactconns counters for first time. Now
    logic will look just like in ip_vs_unbind_dest.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • As IP_VS_CONN_F_NOOUTPUT is derived from the
    forwarding method we should get it from conn_flags just
    like we do it for IP_VS_CONN_F_FWD_MASK bits when binding
    to real server.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • Use GFP_KERNEL instead of GFP_ATOMIC when registering an ipvs protocol.

    This is safe since it will always run from a process context.

    Signed-off-by: Sasha Levin
    Acked-by: Julian Anastasov
    Signed-off-by: Simon Horman
    Signed-off-by: Pablo Neira Ayuso

    Sasha Levin
     
  • Schedulers are initialized and bound to services only
    on commands.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Hans Schillstrom
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • Schedulers are initialized and bound to services only
    on commands.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Hans Schillstrom
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • Schedulers are initialized and bound to services only
    on commands.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Hans Schillstrom
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • Schedulers are initialized and bound to services only
    on commands.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Hans Schillstrom
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • Schedulers are initialized and bound to services only
    on commands.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Hans Schillstrom
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • They are called only on initialization.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Hans Schillstrom
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • if net.bridge.bridge-nf-filter-vlan-tagged sysctl is enabled, bridge
    netfilter removes the vlan header temporarily and then feeds the packet
    to ip(6)tables.

    When the new "bridge-nf-pass-vlan-input-device" sysctl is on
    (default off), then bridge netfilter will also set the
    in-interface to the vlan interface; if such an interface exists.

    This is needed to make iptables REDIRECT target work with
    "vlan-on-top-of-bridge" setups and to allow use of "iptables -i" to
    match the vlan device name.

    Also update Documentation with current brnf default settings.

    Signed-off-by: Florian Westphal
    Acked-by: Bart De Schuymer
    Signed-off-by: Pablo Neira Ayuso

    Pablo Neira Ayuso
     
  • this_cpu_inc() is IRQ safe and faster than
    local_bh_disable()/__this_cpu_inc()/local_bh_enable(), at least on x86.

    Signed-off-by: Eric Dumazet
    Cc: Patrick McHardy
    Cc: Christoph Lameter
    Cc: Tejun Heo
    Reviewed-by: Christoph Lameter
    Signed-off-by: Pablo Neira Ayuso

    Eric Dumazet
     
  • This patch allows you to disable automatic conntrack helper
    lookup based on TCP/UDP ports, eg.

    echo 0 > /proc/sys/net/netfilter/nf_conntrack_helper

    [ Note: flows that already got a helper will keep using it even
    if automatic helper assignment has been disabled ]

    Once this behaviour has been disabled, you have to explicitly
    use the iptables CT target to attach helper to flows.

    There are good reasons to stop supporting automatic helper
    assignment, for further information, please read:

    http://www.netfilter.org/news.html#2012-04-03

    This patch also adds one message to inform that automatic helper
    assignment is deprecated and it will be removed soon (this is
    spotted only once, with the first flow that gets a helper attached
    to make it as less annoying as possible).

    Signed-off-by: Eric Leblond
    Signed-off-by: Pablo Neira Ayuso

    Eric Leblond
     
  • * ret variable initialization removed as useless
    * similar code strings concatenated and functions code
    flow became more plain

    Signed-off-by: Tony Zelenoff
    Signed-off-by: Pablo Neira Ayuso

    Tony Zelenoff
     
  • Make the return value explicitly true or false.

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

    Joe Perches
     

08 May, 2012

4 commits

  • This patch allows the GPIO/LED settings to be configured by the
    EEPROM if present, and only sets the default values (LED outputs
    for link/activity) when an EEPROM is not detected.

    Signed-off-by: Steve Glendinning
    Signed-off-by: David S. Miller

    Steve Glendinning
     
  • Only a write is necessary to clear the interrupt status, and we
    don't use the value from the preceding read operation. This
    patch eliminates the unnecessary read.

    Signed-off-by: Steve Glendinning
    Signed-off-by: David S. Miller

    Steve Glendinning
     
  • This patch defines PHY_INT_SRC_CLEAR_ALL to replace the value 0xffff
    in order to be more self-documenting.

    This patch should make no functional change, it is purely cosmetic.

    Signed-off-by: Steve Glendinning
    Signed-off-by: David S. Miller

    Steve Glendinning
     
  • Conflicts:
    drivers/net/ethernet/intel/e1000e/param.c
    drivers/net/wireless/iwlwifi/iwl-agn-rx.c
    drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
    drivers/net/wireless/iwlwifi/iwl-trans.h

    Resolved the iwlwifi conflict with mainline using 3-way diff posted
    by John Linville and Stephen Rothwell. In 'net' we added a bug
    fix to make iwlwifi report a more accurate skb->truesize but this
    conflicted with RX path changes that happened meanwhile in net-next.

    In e1000e a conflict arose in the validation code for settings of
    adapter->itr. 'net-next' had more sophisticated logic so that
    logic was used.

    Signed-off-by: David S. Miller

    David S. Miller