12 Dec, 2013

10 commits

  • Removed the shared ei_debug variable. Replaced it by adding u32 msg_enable to
    the private struct ei_device. Now each 8390 ethernet instance has a per-device
    logging variable.

    Changed older style printk() calls to more canonical forms.

    Tested on: ne, ne2k-pci, smc-ultra, and wd hardware.

    V4.0
    - Substituted pr_info() and pr_debug() for printk() KERN_INFO and KERN_DEBUG

    V3.0
    - Checked for cases where pr_cont() was most appropriate choice.
    - Changed module parameter from 'debug' to 'msg_enable' because debug was
    no longer the best description.

    V2.0
    - Changed netif_msg_(drv|probe|ifdown|rx_err|tx_err|tx_queued|intr|rx_status|hw)
    to netif_(dbg|info|warn|err) where possible.

    Signed-off-by: Matthew Whitehead
    Signed-off-by: David S. Miller

    Matthew Whitehead
     
  • RFC 4191 states in 3.5:

    When a host avoids using any non-reachable router X and instead sends
    a data packet to another router Y, and the host would have used
    router X if router X were reachable, then the host SHOULD probe each
    such router X's reachability by sending a single Neighbor
    Solicitation to that router's address. A host MUST NOT probe a
    router's reachability in the absence of useful traffic that the host
    would have sent to the router if it were reachable. In any case,
    these probes MUST be rate-limited to no more than one per minute per
    router.

    Currently, when the neighbour corresponding to a router falls into
    NUD_FAILED, it's never considered again. Introduce a new rt6_nud_state
    value, RT6_NUD_FAIL_PROBE, which suggests the route should not be used but
    should be probed with a single NS. The probe is ratelimited by the existing
    code. To better distinguish meanings of the failure values, rename
    RT6_NUD_FAIL_SOFT to RT6_NUD_FAIL_DO_RR.

    Signed-off-by: Jiri Benc
    Acked-by: Hannes Frederic Sowa
    Signed-off-by: David S. Miller

    Jiri Benc
     
  • In sctp_err_lookup, goto out while the asoc is not NULL, so remove the
    check NULL. Also, in sctp_err_finish which called by sctp_v4_err and
    sctp_v6_err, they pass asoc to sctp_err_finish while the asoc is not
    NULL, so remove the check.

    Signed-off-by: Wang Weidong
    Acked-by: Neil Horman
    Acked-by: Vlad Yasevich
    Signed-off-by: David S. Miller

    wangweidong
     
  • It already has a NULL pointer judgment of rtab in qdisc_put_rtab().
    Remove the judgment outside of qdisc_put_rtab().

    Signed-off-by: Yang Yingliang
    Signed-off-by: David S. Miller

    Yang Yingliang
     
  • Help of this function says: "in_dev: only on this interface, 0=any interface",
    but since commit 39a6d0630012 ("[NETNS]: Process inet_confirm_addr in the
    correct namespace."), the code supposes that it will never be NULL. This
    function is never called with in_dev == NULL, but it's exported and may be used
    by an external module.

    Because this patch restore the ability to call inet_confirm_addr() with in_dev
    == NULL, I partially revert the above commit, as suggested by Julian.

    CC: Julian Anastasov
    Signed-off-by: Nicolas Dichtel
    Reviewed-by: Julian Anastasov
    Signed-off-by: David S. Miller

    Nicolas Dichtel
     
  • vxlan_group_used only allows device to leave multicast group
    when the remote_ip of this vxlan device is difference from
    other vxlan devices' remote_ip. this will cause device not
    leave multicast group untile the vn_sock of this vxlan deivce
    being released.

    The check in vxlan_group_used is not quite precise. since even
    the remote_ip is same, but these vxlan devices may use different
    lower devices, and they may use different vn_socks.

    Only when some vxlan devices use the same vn_sock,same lower
    device and same remote_ip, the mc_list of the vn_sock should
    not be changed.

    Signed-off-by: Gao feng
    Signed-off-by: David S. Miller

    Gao feng
     
  • In vxlan_open, vxlan_group_used always returns true,
    because the state of the vxlan deivces which we want
    to open has alreay been running. and it has already
    in vxlan_list.

    Since ip_mc_join_group takes care of the reference
    of struct ip_mc_list. removing vxlan_group_used here
    is safe.

    Signed-off-by: Gao feng
    Signed-off-by: David S. Miller

    Gao feng
     
  • Signed-off-by: Rafał Miłecki
    Signed-off-by: David S. Miller

    Rafał Miłecki
     
  • Without this bgmac_adjust_link didn't know it should re-initialize MAC
    state. This led to the MAC not working after if down & up routine.

    Signed-off-by: Rafał Miłecki
    Signed-off-by: David S. Miller

    Rafał Miłecki
     
  • SKIP_NONLOCAL hides the control flow. The control flow should be
    inlined and expanded explicitly in code so that someone who reads
    it can tell the control flow can be changed by the statement.

    Signed-off-by: Yang Yingliang
    Signed-off-by: David S. Miller

    Yang Yingliang
     

11 Dec, 2013

30 commits

  • When adjusting the link speed, the target frequency is determined by a
    'swith (LINK_SPEED)' statement, that assigns the target rate only for
    valid and expected LINK_SPEED values. This incomplete switch statement
    leads to the following build warning:
    drivers/net/ethernet/cadence/macb.c: In function 'macb_handle_link_change':
    >> drivers/net/ethernet/cadence/macb.c:241:14: warning: 'rate' may be used uninitialized in this function [-Wmaybe-uninitialized]
    netdev_warn(dev, "unable to generate target frequency: %ld Hz\n",
    ^
    drivers/net/ethernet/cadence/macb.c:215:13: note: 'rate' was declared here
    long ferr, rate, rate_rounded;

    Fixing this by bailing out of that function in the switch's default case
    before the rate variable is used.

    Reported-by: kbuild test robot
    Signed-off-by: Soren Brinkmann
    Signed-off-by: David S. Miller

    Soren Brinkmann
     
  • Jon Maloy says:

    ====================
    tipc: cleanups in media and bearer layer

    This commit series performs a number cleanups in order to make the
    bearer and media part of the code more comprehensible and manageable.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • In early versions of TIPC it was possible to administratively block
    individual links through the use of the member flag 'blocked'. This
    functionality was deemed redundant, and since commit 7368dd ("tipc:
    clean out all instances of #if 0'd unused code"), this flag has been
    unused.

    In the current code, a link only needs to be blocked for sending and
    reception if it is subject to an ongoing link failover. In that case,
    it is sufficient to check if the number of expected failover packets
    is non-zero, something which is done via the funtion 'link_blocked()'.

    This commit finally removes the redundant 'blocked' flag completely.

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

    Ying Xue
     
  • Currently TIPC supports two L2 media types, Ethernet and Infiniband.
    Because both these media are accessed through the common net_device API,
    several functions in the two media adaptation files turn out to be
    fully or almost identical, leading to unnecessary code duplication.

    In this commit we extract this common code from the two media files
    and move them to the generic bearer.c. Additionally, we change
    the function names to reflect their real role: to access L2 media,
    irrespective of type.

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

    Ying Xue
     
  • Currently, registering a TIPC stack handler in the network device layer
    is done twice, once for Ethernet (eth_media) and Infiniband (ib_media)
    repectively. But, as this registration is not media specific, we can
    avoid some code duplication by moving the registering function to
    the generic bearer layer, to the file bearer.c, and call it only once.
    The same is true for the network device event notifier.

    As a side effect, the two workqueues we are using for for setting up/
    cleaning up media can now be eliminated. Furthermore, the array for
    storing the specific media type structs, media_array[], can be entirely
    deleted.

    Note that the eth_started and ib_started flags were removed during the
    code relocation. There is now only one call to bearer_setup and
    bearer_cleanup, and these can logically not race against each other.

    Despite its size, this cleanup work incurs no functional changes in TIPC.
    In particular, it should be noted that the sequence ordering of received
    packets is unaffected by this change, since packet reception never was
    subject to any work queue handling in the first place.

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

    Ying Xue
     
  • TIPC is currently using the field 'af_packet_priv' in struct net_device
    as a handle to find the bearer instance associated to the given network
    device. But, by doing so it is blocking other networking cleanups, such
    as the one discussed here:

    http://patchwork.ozlabs.org/patch/178044/

    This commit removes this usage from TIPC. Instead, we introduce a new
    field, 'tipc_ptr', to the net_device structure, to serve this purpose.
    When TIPC bearer is enabled, the bearer object is associated to
    'tipc_ptr'. When a TIPC packet arrives in the recv_msg() upcall
    from a networking device, the bearer object can now be obtained from
    'tipc_ptr'. When a bearer is disabled, the bearer object is detached
    from its underlying network device by setting 'tipc_ptr' to NULL.

    Additionally, an RCU lock is used to protect the new pointer.
    Henceforth, the existing tipc_net_lock is used in write mode to
    serialize write accesses to this pointer, while the new RCU lock is
    applied on the read side to ensure that the pointer is 100% valid
    within its wrapped area for all readers.

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

    Ying Xue
     
  • struct 'tipc_media' represents the specific info that the media
    layer adaptors (eth_media and ib_media) expose to the generic
    bearer layer. We clarify this by improved commenting, and by giving
    the 'media_list' array the more appropriate name 'media_info_array'.

    There are no functional changes in this commit.

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

    Jon Paul Maloy
     
  • Communication media types are abstracted through the struct 'tipc_media',
    one per media type. These structs are allocated statically inside their
    respective media file.

    Furthermore, in order to be able to reach all instances from a central
    location, we keep a static array with pointers to these structs. This
    array is currently initialized at runtime, under protection of
    tipc_net_lock. However, since the contents of the array itself never
    changes after initialization, we can just as well initialize it at
    compile time and make it 'const', at the same time making it obvious
    that no lock protection is needed here.

    This commit makes the array constant and removes the redundant lock
    protection.

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

    Jon Paul Maloy
     
  • sk_buff lists are currently relased by looping over the list and
    explicitly releasing each buffer.

    We replace all occurrences of this loop with a call to kfree_skb_list().

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

    Ying Xue
     
  • From: Soren Brinkmann

    ====================
    net: macb updates

    I'd really like to have Ethernet working for Zynq, so I want to at least
    revive this discussion regarding this patchset. And the first four
    patches should not even be too controversial.
    I didn't change anything compared to my original RFC submission, except
    for a typo in one of the commit messages.
    Handling the tx_clk as optional clock input seems a little bit weird,
    but it works on my Zynq platform and should be compatible with other
    users of macb and their DT descriptions.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Adjust the ethernet clock according to the negotiated link speed.

    Signed-off-by: Soren Brinkmann
    Signed-off-by: David S. Miller

    Soren Brinkmann
     
  • Use the device managed interface to request the IRQ, simplifying error
    paths.

    Signed-off-by: Soren Brinkmann
    Acked-by: Nicolas Ferre
    Signed-off-by: David S. Miller

    Soren Brinkmann
     
  • Use the device managed version of ioremap to remap IO memory,
    simplifying error paths.

    Signed-off-by: Soren Brinkmann
    Acked-by: Nicolas Ferre
    Signed-off-by: David S. Miller

    Soren Brinkmann
     
  • Migrate to using the device managed interface for clocks and clean up
    the associated error paths.

    Signed-off-by: Soren Brinkmann
    Acked-by: Nicolas Ferre
    Signed-off-by: David S. Miller

    Soren Brinkmann
     
  • Migrate the suspend/resume functions to use the dev_pm_ops PM interface.

    Signed-off-by: Soren Brinkmann
    Acked-by: Nicolas Ferre
    Signed-off-by: David S. Miller

    Soren Brinkmann
     
  • Macros with multiple statements should be enclosed in a do - while loop

    Signed-off-by: Yang Yingliang
    Signed-off-by: David S. Miller

    Yang Yingliang
     
  • Spaces required around that '>' (ctx:VxV) and
    before the open parenthesis '('.

    Signed-off-by: Yang Yingliang
    Signed-off-by: David S. Miller

    Yang Yingliang
     
  • "foo* bar" or "foo * bar" should be "foo *bar".

    Signed-off-by: Yang Yingliang
    Signed-off-by: David S. Miller

    Yang Yingliang
     
  • Code indent should use tabs where possible

    Signed-off-by: Yang Yingliang
    Signed-off-by: David S. Miller

    Yang Yingliang
     
  • return is not a function, parentheses are not required.

    Signed-off-by: Yang Yingliang
    Signed-off-by: David S. Miller

    Yang Yingliang
     
  • The driver core clears the driver data to NULL after device_release
    or on probe failure. Thus, it is not needed to manually clear the
    device driver data to NULL.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • The driver core clears the driver data to NULL after device_release
    or on probe failure. Thus, it is not needed to manually clear the
    device driver data to NULL.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • The driver core clears the driver data to NULL after device_release
    or on probe failure. Thus, it is not needed to manually clear the
    device driver data to NULL.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • The driver core clears the driver data to NULL after device_release
    or on probe failure. Thus, it is not needed to manually clear the
    device driver data to NULL.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • The driver core clears the driver data to NULL after device_release
    or on probe failure. Thus, it is not needed to manually clear the
    device driver data to NULL.

    Signed-off-by: Jingoo Han
    Signed-off-by: Shreyas N Bhatewara
    Acked-by: Dmitry Torokhov
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • The driver core clears the driver data to NULL after device_release
    or on probe failure. Thus, it is not needed to manually clear the
    device driver data to NULL.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • The driver core clears the driver data to NULL after device_release
    or on probe failure. Thus, it is not needed to manually clear the
    device driver data to NULL.

    Signed-off-by: Jingoo Han
    Signed-off-by: David S. Miller

    Jingoo Han
     
  • Signed-off-by: Stephen Hemminger
    Acked-by: Michael S. Tsirkin
    Signed-off-by: David S. Miller

    stephen hemminger
     
  • All the code passes NULL for the last sg list (in).
    Simplify by just removing it.

    Signed-off-by: Stephen Hemminger
    Acked-by: Michael S. Tsirkin
    Signed-off-by: David S. Miller

    stephen hemminger
     
  • This patch makes socketpair() use error paths which do not
    rely on heavy-weight call to sys_close(): it's better to try
    to push the file descriptor to userspace before installing
    the socket file to the file descriptor, so that errors are
    catched earlier and being easier to handle.

    Using sys_close() seems to be the exception, while writing the
    file descriptor before installing it look like it's more or less
    the norm: eg. except for code used in init/, error handling
    involve fput() and put_unused_fd(), but not sys_close().

    This make socketpair() usage of sys_close() quite unusual.
    So it deserves to be replaced by the common pattern relying on
    fput() and put_unused_fd() just like, for example, the one used
    in pipe(2) or recvmsg(2).

    Three distinct error paths are still needed since calling
    fput() on file structure returned by sock_alloc_file() will
    implicitly call sock_release() on the associated socket
    structure.

    Cc: David S. Miller
    Cc: Al Viro
    Signed-off-by: Yann Droneaud
    Link: http://marc.info/?i=1385979146-13825-1-git-send-email-ydroneaud@opteya.com
    Signed-off-by: David S. Miller

    Yann Droneaud