02 Aug, 2011

1 commit

  • Update the code to handle some of the differences between
    RFC 3041 and RFC 4941, which obsoletes it. Also a couple
    of janitorial fixes.

    - Allow router advertisements to increase the lifetime of
    temporary addresses. This was not allowed by RFC 3041,
    but is specified by RFC 4941. It is useful when RA
    lifetimes are lower than TEMP_{VALID,PREFERRED}_LIFETIME:
    in this case, the previous code would delete or deprecate
    addresses prematurely.

    - Change the default of MAX_RETRY to 3 per RFC 4941.

    - Add a comment to clarify that the preferred and valid
    lifetimes in inet6_ifaddr are relative to the timestamp.

    - Shorten lines to 80 characters in a couple of places.

    Signed-off-by: Lorenzo Colitti
    Signed-off-by: David S. Miller

    Lorenzo Colitti
     

20 May, 2011

1 commit

  • ipv6 has per device ICMP SNMP counters, taking too much space because
    they use percpu storage.

    needed size per device is :
    (512+4)*sizeof(long)*number_of_possible_cpus*2

    On a 32bit kernel, 16 possible cpus, this wastes more than 64kbytes of
    memory per ipv6 enabled network device, taken in vmalloc pool.

    Since ICMP messages are rare, just use shared counters (atomic_long_t)

    Per network space ICMP counters are still using percpu memory, we might
    also convert them to shared counters in a future patch.

    Signed-off-by: Eric Dumazet
    CC: Denys Fedoryshchenko
    Signed-off-by: David S. Miller

    Eric Dumazet
     

25 Apr, 2011

1 commit

  • These header files are never installed to user consumption, so any
    __KERNEL__ cpp checks are superfluous.

    Projects should also not copy these files into their userland utility
    sources and try to use them there. If they insist on doing so, the
    onus is on them to sanitize the headers as needed.

    Signed-off-by: David S. Miller

    David S. Miller
     

23 Apr, 2011

1 commit


30 Mar, 2011

1 commit

  • My commit 6d55cb91a0020ac0 (gre: fix hard header destination
    address checking) broke multicast.

    The reason is that ip_gre used to get ipgre_header() calls with
    zero destination if we have NOARP or multicast destination. Instead
    the actual target was decided at ipgre_tunnel_xmit() time based on
    per-protocol dissection.

    Instead of allowing the "abuse" of ->header() calls with invalid
    destination, this creates multicast mappings for ip_gre. This also
    fixes "ip neigh show nud noarp" to display the proper multicast
    mappings used by the gre device.

    Reported-by: Doug Kehn
    Signed-off-by: Timo Teräs
    Acked-by: Doug Kehn
    Signed-off-by: David S. Miller

    Timo Teräs
     

25 Nov, 2010

1 commit

  • ipv6_sk_mc_lock rwlock becomes a spinlock.

    readers (inet6_mc_check()) now takes rcu_read_lock() instead of read
    lock. Writers dont need to disable BH anymore.

    struct ipv6_mc_socklist objects are reclaimed after one RCU grace
    period.

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

    Eric Dumazet
     

19 May, 2010

1 commit

  • This patch replaces the boolean dead flag on inet6_ifaddr with
    a state enum. This allows us to roll back changes when deleting
    an address according to whether DAD has completed or not.

    This patch only adds the state field and does not change the logic.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     

21 Mar, 2010

4 commits


18 Feb, 2010

1 commit


04 Nov, 2009

1 commit

  • This cleanup patch puts struct/union/enum opening braces,
    in first line to ease grep games.

    struct something
    {

    becomes :

    struct something {

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

    Eric Dumazet
     

22 Mar, 2009

1 commit


23 Jul, 2008

1 commit


12 Jun, 2008

1 commit


03 Feb, 2008

2 commits

  • /home/acme/git/net-2.6/net/ipv6/mcast.c:
    struct ifmcaddr6 | -8
    1 struct changed
    igmp6_group_dropped | -6
    add_grec | -3
    mld_ifc_timer_expire | -18
    ip6_mc_add_src | -3
    ip6_mc_del_src | -3
    igmp6_group_added | -3
    6 functions changed, 36 bytes removed, diff: -36

    ipv6.ko:
    6 functions changed, 36 bytes removed, diff: -36

    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Arnaldo Carvalho de Melo
     
  • And make it a multiple of a 64 bytes, reducing cacheline trashing:

    Before:

    [acme@doppio net-2.6]$ pahole -C inet6_dev net/dccp/ipv6.o
    struct inet6_dev {

    long unsigned int mc_maxdelay; /* 48 8 */
    unsigned char mc_qrv; /* 56 1 */
    unsigned char mc_gq_running; /* 57 1 */
    unsigned char mc_ifc_count; /* 58 1 */

    /* XXX 5 bytes hole, try to pack */

    /* --- cacheline 1 boundary (64 bytes) --- */
    struct timer_list mc_gq_timer; /* 64 48 */

    __u32 if_flags; /* 180 4 */
    int dead; /* 184 4 */
    u8 rndid[8]; /* 188 8 */

    /* XXX 4 bytes hole, try to pack */

    /* --- cacheline 3 boundary (192 bytes) was 8 bytes ago --- */
    struct timer_list regen_timer; /* 200 48 */

    /* size: 456, cachelines: 8 */
    /* sum members: 447, holes: 2, sum holes: 9 */
    /* last cacheline: 8 bytes */
    };

    After:

    net-2.6/net/ipv6/af_inet6.c:
    struct inet6_dev | -8
    1 struct changed

    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Arnaldo Carvalho de Melo
     

26 Jan, 2008

1 commit

  • An IPoIB subnet on an IB fabric that spans multiple IB subnets can't
    use link-local scope in multicast GIDs. The existing routines that
    map IP/IPv6 multicast addresses into IB link-level addresses hard-code
    the scope to link-local, and they also leave the partition key field
    uninitialised. This patch adds a parameter (the link-level broadcast
    address) to the mapping routines, allowing them to initialise both the
    scope and the P_Key appropriately, and fixes up the call sites.

    The next step will be to add a way to configure the scope for an IPoIB
    interface.

    Signed-off-by: Rolf Manderscheid
    Signed-off-by: Roland Dreier

    Rolf Manderscheid
     

11 Oct, 2007

1 commit

  • Background: RFC 4293 deprecates existing individual, named ICMP
    type counters to be replaced with the ICMPMsgStatsTable. This table
    includes entries for both IPv4 and IPv6, and requires counting of all
    ICMP types, whether or not the machine implements the type.

    These patches "remove" (but not really) the existing counters, and
    replace them with the ICMPMsgStats tables for v4 and v6.
    It includes the named counters in the /proc places they were, but gets the
    values for them from the new tables. It also counts packets generated
    from raw socket output (e.g., OutEchoes, MLD queries, RA's from
    radvd, etc).

    Changes:
    1) create icmpmsg_statistics mib
    2) create icmpv6msg_statistics mib
    3) modify existing counters to use these
    4) modify /proc/net/snmp to add "IcmpMsg" with all ICMP types
    listed by number for easy SNMP parsing
    5) modify /proc/net/snmp printing for "Icmp" to get the named data
    from new counters.
    [new to 2nd revision]
    6) support per-interface ICMP stats
    7) use common macro for per-device stat macros

    Signed-off-by: David L Stevens
    Signed-off-by: David S. Miller

    David L Stevens
     

03 Dec, 2006

1 commit


23 Sep, 2006

1 commit


21 Mar, 2006

1 commit


28 Dec, 2005

1 commit

  • The below "jumbo" patch fixes the following problems in MLDv2.

    1) Add necessary "ntohs" to recent "pskb_may_pull" check [breaks
    all nonzero source queries on little-endian (!)]

    2) Add locking to source filter list [resend of prior patch]

    3) fix "mld_marksources()" to
    a) send nothing when all queried sources are excluded
    b) send full exclude report when source queried sources are
    not excluded
    c) don't schedule a timer when there's nothing to report

    NOTE: RFC 3810 specifies the source list should be saved and each
    source reported individually as an IS_IN. This is an obvious DOS
    path, requiring the host to store and then multicast as many sources
    as are queried (e.g., millions...). This alternative sends a full,
    relevant report that's limited to number of sources present on the
    machine.

    4) fix "add_grec()" to send empty-source records when it should
    The original check doesn't account for a non-empty source
    list with all sources inactive; the new code keeps that
    short-circuit case, and also generates the group header
    with an empty list if needed.

    5) fix mca_crcount decrement to be after add_grec(), which needs
    its original value

    These issues (other than item #1 ;-) ) were all found by Yan Zheng,
    much thanks!

    Signed-off-by: David L Stevens
    Signed-off-by: David S. Miller

    David L Stevens
     

21 Dec, 2005

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds