26 Nov, 2016

7 commits

  • gcc-7 detects a short memset in mvpp2, introduced in the original
    merge of the driver:

    drivers/net/ethernet/marvell/mvpp2.c: In function 'mvpp2_cls_init':
    drivers/net/ethernet/marvell/mvpp2.c:3296:2: error: 'memset' used with length equal to number of elements without multiplication by element size [-Werror=memset-elt-size]

    The result seems to be that we write uninitialized data into the
    flow table registers, although we did not get any warning about
    that uninitialized data usage.

    Using sizeof() lets us initialize then entire array instead.

    Fixes: 3f518509dedc ("ethernet: Add new driver for Marvell Armada 375 network unit")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: David S. Miller

    Arnd Bergmann
     
  • Drop duplicate header delay.h from mlx5/core/main.c.

    Signed-off-by: Geliang Tang
    Acked-by: Matan Barak
    Acked-by: Saeed Mahameed
    Signed-off-by: David S. Miller

    Geliang Tang
     
  • Drop duplicate header delay.h from adf7242.c.

    Signed-off-by: Geliang Tang
    Acked-by: Stefan Schmidt
    Signed-off-by: David S. Miller

    Geliang Tang
     
  • Drop duplicate header seq_file.h from ibmvnic.c.

    Signed-off-by: Geliang Tang
    Signed-off-by: David S. Miller

    Geliang Tang
     
  • We set "tgec->cfg" to NULL before passing it to kfree(). There is no
    need to set it to NULL at all. Let's just delete it.

    Fixes: 57ba4c9b56d8 ("fsl/fman: Add FMan MAC support")
    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • The mvneta driver advertises it supports IFF_UNICAST_FLT. However, it
    actually does not. The hardware probably does support it, but there is
    no code to configure the filter. As a quick and simple fix, remove the
    flag. This will cause the core to fall back to promiscuous mode.

    Signed-off-by: Andrew Lunn
    Fixes: b50b72de2f2f ("net: mvneta: enable features before registering the driver")
    Signed-off-by: David S. Miller

    Andrew Lunn
     
  • Drop duplicate headers types.h and delay.h from dwc_eth_qos.c.

    Signed-off-by: Geliang Tang
    Signed-off-by: David S. Miller

    Geliang Tang
     

25 Nov, 2016

2 commits

  • In case the link change and EEE is enabled or disabled, always try to
    re-negotiate this with the link partner.

    Fixes: 450b05c15f9c ("net: dsa: bcm_sf2: add support for controlling EEE")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • When busy polling while a link is down (during a link-flap test), TX
    timeouts were observed as well as the following messages in the ring
    buffer:

    bnxt_en 0008:01:00.2 enP8p1s0f2d2: Resp cmpl intr err msg: 0x51
    bnxt_en 0008:01:00.2 enP8p1s0f2d2: hwrm_ring_free tx failed. rc:-1
    bnxt_en 0008:01:00.2 enP8p1s0f2d2: Resp cmpl intr err msg: 0x51
    bnxt_en 0008:01:00.2 enP8p1s0f2d2: hwrm_ring_free rx failed. rc:-1

    These were resolved by checking for link status and returning if link
    was not up.

    Signed-off-by: Andy Gospodarek
    Signed-off-by: Michael Chan
    Tested-by: Rob Miller
    Signed-off-by: David S. Miller

    Andy Gospodarek
     

24 Nov, 2016

4 commits

  • Make sure mlx4_en_free_resources is called under the netdev state lock.
    This is needed since RCU dereference of XDP prog should be protected.

    Fixes: 326fe02d1ed6 ("net/mlx4_en: protect ring->xdp_prog with rcu_read_lock")
    Signed-off-by: Tariq Toukan
    Reported-by: Sagi Grimberg
    CC: Brenden Blanco
    Signed-off-by: David S. Miller

    Tariq Toukan
     
  • Knowing that:
    #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN (0x1UL << 0)
    #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE (0x5UL << 0)
    and that 'bnxt_hwrm_tunnel_dst_port_alloc()' is only called with one of
    these 2 constants, the TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_GENEVE can not
    trigger.

    Replace the bit test that overlap by an equality test, just as in
    'bnxt_hwrm_tunnel_dst_port_free()' above.

    Signed-off-by: Christophe JAILLET
    Acked-by: Michael Chan
    Signed-off-by: David S. Miller

    Christophe Jaillet
     
  • When dev_set_promiscuity failed in macvlan_open, it always invokes
    dev_set_allmulti without checking if necessary.
    Now check the IFF_ALLMULTI flag firstly before rollback the multicast
    setting in the error handler.

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

    Gao Feng
     
  • Fix setting of SUPPORTED_FIBRE bit as it was not present in features
    of KSZ8041.

    Signed-off-by: Kirill Esipov
    Signed-off-by: David S. Miller

    Kirill Esipov
     

22 Nov, 2016

2 commits

  • Pull sparc fixes from David Miller:

    1) With modern networking cards we can run out of 32-bit DMA space, so
    support 64-bit DMA addressing when possible on sparc64. From Dave
    Tushar.

    2) Some signal frame validation checks are inverted on sparc32, fix
    from Andreas Larsson.

    3) Lockdep tables can get too large in some circumstances on sparc64,
    add a way to adjust the size a bit. From Babu Moger.

    4) Fix NUMA node probing on some sun4v systems, from Thomas Tai.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc: drop duplicate header scatterlist.h
    lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined
    config: Adding the new config parameter CONFIG_PROVE_LOCKING_SMALL for sparc
    sunbmac: Fix compiler warning
    sunqe: Fix compiler warnings
    sparc64: Enable 64-bit DMA
    sparc64: Enable sun4v dma ops to use IOMMU v2 APIs
    sparc64: Bind PCIe devices to use IOMMU v2 service
    sparc64: Initialize iommu_map_table and iommu_pool
    sparc64: Add ATU (new IOMMU) support
    sparc64: Add FORCE_MAX_ZONEORDER and default to 13
    sparc64: fix compile warning section mismatch in find_node()
    sparc32: Fix inverted invalid_frame_pointer checks on sigreturns
    sparc64: Fix find_node warning if numa node cannot be found

    Linus Torvalds
     
  • There's not much point, except compile test, enabling the stmmac
    platform drivers unless the STM32 SoC is enabled. It's not
    useful without it.

    Signed-off-by: Peter Robinson
    Signed-off-by: David S. Miller

    Peter Robinson
     

19 Nov, 2016

12 commits

  • at91ether_start_xmit() does not check for dma mapping errors.

    Found by Linux Driver Verification project (linuxtesting.org).

    Signed-off-by: Alexey Khoroshilov
    Signed-off-by: David S. Miller

    Alexey Khoroshilov
     
  • sunbmac uses '__u32' for dma handle while invoking kernel DMA APIs,
    instead of using dma_addr_t. This hasn't caused any 'incompatible
    pointer type' warning on SPARC because until now dma_addr_t is of
    type u32. However, recent changes in SPARC ATU (iommu) enables 64bit
    DMA and therefore dma_addr_t becomes of type u64. This makes
    'incompatible pointer type' warnings inevitable.

    e.g.
    drivers/net/ethernet/sun/sunbmac.c: In function ‘bigmac_ether_init’:
    drivers/net/ethernet/sun/sunbmac.c:1166: warning: passing argument 3 of ‘dma_alloc_coherent’ from incompatible pointer type
    ./include/linux/dma-mapping.h:445: note: expected ‘dma_addr_t *’ but argument is of type ‘__u32 *’

    This patch resolves above compiler warning.

    Signed-off-by: Tushar Dave
    Reviewed-by: chris hyser
    Signed-off-by: David S. Miller

    Tushar Dave
     
  • sunqe uses '__u32' for dma handle while invoking kernel DMA APIs,
    instead of using dma_addr_t. This hasn't caused any 'incompatible
    pointer type' warning on SPARC because until now dma_addr_t is of
    type u32. However, recent changes in SPARC ATU (iommu) enables 64bit
    DMA and therefore dma_addr_t becomes of type u64. This makes
    'incompatible pointer type' warnings inevitable.

    e.g.
    drivers/net/ethernet/sun/sunqe.c: In function ‘qec_ether_init’:
    drivers/net/ethernet/sun/sunqe.c:883: warning: passing argument 3 of ‘dma_alloc_coherent’ from incompatible pointer type
    ./include/linux/dma-mapping.h:445: note: expected ‘dma_addr_t *’ but argument is of type ‘__u32 *’
    drivers/net/ethernet/sun/sunqe.c:885: warning: passing argument 3 of ‘dma_alloc_coherent’ from incompatible pointer type
    ./include/linux/dma-mapping.h:445: note: expected ‘dma_addr_t *’ but argument is of type ‘__u32 *’

    This patch resolves above compiler warnings.

    Signed-off-by: Tushar Dave
    Reviewed-by: chris hyser
    Signed-off-by: David S. Miller

    Tushar Dave
     
  • …kernel/git/jberg/mac80211

    Johannes Berg says:

    ====================
    A few more bugfixes:
    * limit # of scan results stored in memory - this is a long-standing bug
    Jouni and I only noticed while discussing other things in Santa Fe
    * revert AP_LINK_PS patch that was causing issues (Felix)
    * various A-MSDU/A-MPDU fixes for TXQ code (Felix)
    * interoperability workaround for peers with broken VHT capabilities
    (Filip Matusiak)
    * add bitrate definition for a VHT MCS that's supposed to be invalid
    but gets used by some hardware anyway (Thomas Pedersen)
    * beacon timer fix in hwsim (Benjamin Beichler)
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • Make sure to propagate errors from of_phy_register_fixed_link() which
    can fail with -EPROBE_DEFER.

    Fixes: 1f71e8c96fc6 ("drivers: net: cpsw: Add support for fixed-link
    PHY")
    Signed-off-by: Johan Hovold
    Signed-off-by: David S. Miller

    Johan Hovold
     
  • Make sure to check for allocation failures before dereferencing a
    NULL-pointer during probe.

    Fixes: 649a1688c960 ("net: ethernet: ti: cpsw: create common struct to
    hold shared driver data")
    Signed-off-by: Johan Hovold
    Signed-off-by: David S. Miller

    Johan Hovold
     
  • Make sure to deregister the primary device in case the secondary emac
    fails to probe.

    kernel BUG at /home/johan/work/omicron/src/linux/net/core/dev.c:7743!
    ...
    [] (free_netdev) from [] (cpsw_probe+0x9cc/0xe50)
    [] (cpsw_probe) from [] (platform_drv_probe+0x5c/0xc0)

    Fixes: d9ba8f9e6298 ("driver: net: ethernet: cpsw: dual emac interface
    implementation")
    Signed-off-by: Johan Hovold
    Signed-off-by: David S. Miller

    Johan Hovold
     
  • Make sure to drop references taken and deregister devices registered
    during probe on probe errors (including deferred probe) and driver
    unbind.

    Specifically, PHY of-node references were never released and fixed-link
    PHY devices were never deregistered.

    Fixes: 9e42f715264f ("drivers: net: cpsw: add phy-handle parsing")
    Fixes: 1f71e8c96fc6 ("drivers: net: cpsw: Add support for fixed-link
    PHY")
    Signed-off-by: Johan Hovold
    Signed-off-by: David S. Miller

    Johan Hovold
     
  • Make sure to deregister all child devices also on probe errors to avoid
    leaks and to fix probe deferral:

    cpsw 4a100000.ethernet: omap_device: omap_device_enable() called from invalid state 1
    cpsw 4a100000.ethernet: use pm_runtime_put_sync_suspend() in driver?
    cpsw: probe of 4a100000.ethernet failed with error -22

    Add generic helper to undo the effects of cpsw_probe_dt(), which will
    also be used in a follow-on patch to fix further leaks that have been
    introduced more recently.

    Note that the platform device is now runtime-resumed before registering
    any child devices in order to make sure that it is synchronously
    suspended after having deregistered the children in the error path.

    Fixes: 1fb19aa730e4 ("net: cpsw: Add parentchild relation support
    between cpsw and mdio")
    Signed-off-by: Johan Hovold
    Signed-off-by: David S. Miller

    Johan Hovold
     
  • Make sure to drop the reference taken by of_find_device_by_node() when
    looking up an mdio device from a phy_id property during probe.

    Fixes: 549985ee9c72 ("cpsw: simplify the setup of the register
    pointers")
    Signed-off-by: Johan Hovold
    Signed-off-by: David S. Miller

    Johan Hovold
     
  • Make sure to keep the platform device runtime-resumed throughout probe
    to avoid accessing the CPSW registers in the error path (e.g. for
    deferred probe) with clocks disabled:

    Unhandled fault: external abort on non-linefetch (0x1008) at 0xd0872d08
    ...
    [] (cpsw_ale_control_set) from [] (cpsw_ale_destroy+0x2c/0x44)
    [] (cpsw_ale_destroy) from [] (cpsw_probe+0xbd0/0x10c4)
    [] (cpsw_probe) from [] (platform_drv_probe+0x5c/0xc0)

    Fixes: df828598a755 ("netdev: driver: ethernet: Add TI CPSW driver")
    Signed-off-by: Johan Hovold
    Signed-off-by: David S. Miller

    Johan Hovold
     
  • The sky2 frequently crashes during machine shutdown with:

    sky2_get_stats+0x60/0x3d8 [sky2]
    dev_get_stats+0x68/0xd8
    rtnl_fill_stats+0x54/0x140
    rtnl_fill_ifinfo+0x46c/0xc68
    rtmsg_ifinfo_build_skb+0x7c/0xf0
    rtmsg_ifinfo.part.22+0x3c/0x70
    rtmsg_ifinfo+0x50/0x5c
    netdev_state_change+0x4c/0x58
    linkwatch_do_dev+0x50/0x88
    __linkwatch_run_queue+0x104/0x1a4
    linkwatch_event+0x30/0x3c
    process_one_work+0x140/0x3e0
    worker_thread+0x60/0x44c
    kthread+0xdc/0xf0
    ret_from_fork+0x10/0x50

    This is caused by the sky2 being called after it has been shutdown.
    A previous thread about this can be found here:

    https://lkml.org/lkml/2016/4/12/410

    An alternative fix is to assure that IFF_UP gets cleared by
    calling dev_close() during shutdown. This is similar to what the
    bnx2/tg3/xgene and maybe others are doing to assure that the driver
    isn't being called following _shutdown().

    Signed-off-by: Jeremy Linton
    Signed-off-by: David S. Miller

    Jeremy Linton
     

18 Nov, 2016

1 commit


17 Nov, 2016

11 commits

  • Add a missing synchronize_net() call to avoid potential use after free,
    since we explicitly call napi_hash_del() to factorize the RCU grace
    period.

    Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
    Signed-off-by: Eric Dumazet
    Cc: Michael Chan
    Acked-by: Michael Chan
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • We currently have a fundamental problem in how we treat the CPU port and
    its VLAN membership. As soon as a second VLAN is configured to be
    untagged, the CPU automatically becomes untagged for that VLAN as well,
    and yet, we don't gracefully make sure that the CPU becomes tagged in
    the other VLANs it could be a member of. This results in only one VLAN
    being effectively usable from the CPU's perspective.

    Instead of having some pretty complex logic which tries to maintain the
    CPU port's default VLAN and its untagged properties, just do something
    very simple which consists in neither altering the CPU port's PVID
    settings, nor its untagged settings:

    - whenever a VLAN is added, the CPU is automatically a member of this
    VLAN group, as a tagged member
    - PVID settings for downstream ports do not alter the CPU port's PVID
    since it now is part of all VLANs in the system

    This means that a typical example where e.g: LAN ports are in VLAN1, and
    WAN port is in VLAN2, now require having two VLAN interfaces for the
    host to properly terminate and send traffic from/to.

    Fixes: Fixes: a2482d2ce349 ("net: dsa: b53: Plug in VLAN support")
    Reported-by: Hartmut Knaack
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • With RGMII, we need a 1.5 to 2ns skew between clock and data lines. The
    VSC8601 can handle this internally. While the VSC8601 can set more
    fine-grained delays, the standard skew settings work out of the box.
    The same heuristic is used to determine when this skew should be enabled
    as in vsc824x_config_init().

    Tested on custom board with AM3352 SOC and VSC801 PHY.

    Signed-off-by: Alexandru Gagniuc
    Signed-off-by: David S. Miller

    alex
     
  • Calling napi_hash_del() before netif_napi_del() is dangerous
    if a synchronize_rcu() is not enforced before NAPI struct freeing.

    Lets leave this detail to core networking stack and feel
    more comfortable.

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

    Eric Dumazet
     
  • Calling napi_hash_del() before netif_napi_del() is dangerous
    if a synchronize_rcu() is not enforced before NAPI struct freeing.

    Lets leave this detail to core networking stack and feel
    more comfortable.

    Signed-off-by: Eric Dumazet
    Cc: Sathya Perla
    Cc: Ajit Khaparde
    Cc: Sriharsha Basavapatna
    Cc: Somnath Kotur
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • It seems many drivers do not respect napi_hash_del() contract.

    When napi_hash_del() is used before netif_napi_del(), an RCU grace
    period is needed before freeing NAPI object.

    Fixes: 91815639d880 ("virtio-net: rx busy polling support")
    Signed-off-by: Eric Dumazet
    Cc: Jason Wang
    Cc: Michael S. Tsirkin
    Acked-by: Michael S. Tsirkin
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • This patch fixes the following
    1. When interface is being teardown and queues are being cleaned up,
    free pending SKBs that are in SQ which are either not transmitted
    or freed as NAPI is disabled by that time.
    2. While interface initialization, delay CFG_DONE notification till
    the end to avoid corner cases where TXQs are enabled but CQ
    interrupts are not which results blocking transmission and kicking
    off watchdog.
    3. Check for IFF_UP while re-enabling RBDR interrupts from tasklet.

    Signed-off-by: Sunil Goutham
    Signed-off-by: David S. Miller

    Sunil Goutham
     
  • This patch fixes multiple issues
    1. Convert all driver statistics to percpu counters for accuracy.
    2. To avoid multiple CQEs posted by a TSO packet appended to HW,
    TSO pkt's SQE has 'post_cqe' not set but a dummy SQE is added
    for getting HW transmit completion notification. This dummy
    SQE has 'dont_send' set and HW drops the pkt pointed to in this
    thus Tx drop counter increases. This patch fixes this by subtracting
    SW tx tso counter from HW Tx drop counter for actual packet drop counter.
    3. Reset all individual queue's and VNIC HW stats when interface is going down.
    4. Getrid off unnecessary counters in hot path.
    5. Bringout all CQE error stats i.e both Rx and Tx.

    Signed-off-by: Sunil Goutham
    Signed-off-by: David S. Miller

    Sunil Goutham
     
  • This patch fixes enabling of HW verification of L3/L4 length and
    TCP/UDP checksum which is currently being cleared. Also fixed VLAN
    stripping config which is being cleared when multiqset is enabled.

    Signed-off-by: Sunil Goutham
    Signed-off-by: David S. Miller

    Sunil Goutham
     
  • Programming LMAC credits taking 9K frame size by default is incorrect
    as for an interface which is one of the many on the same BGX/QLM
    no of credits available will be less as Tx FIFO will be divided
    across all interfaces. So let's say a BGX with 40G interface and another
    BGX with multiple 10G, bandwidth of 10G interfaces will be effected when
    traffic is running on both 40G and 10G interfaces simultaneously.

    This patch fixes this issue by programming credits based on netdev's MTU.
    Also fixed configuring MTU to HW and added CQE counter for pkts which
    exceed this value.

    Signed-off-by: Sunil Goutham
    Signed-off-by: David S. Miller

    Sunil Goutham
     
  • This patch fixes the 'bgx_id' determination on 83xx where there are
    4 BGX blocks instead of 2 on other platforms.

    Signed-off-by: Radha Mohan Chintakuntla
    Signed-off-by: Sunil Goutham
    Signed-off-by: David S. Miller

    Radha Mohan Chintakuntla
     

16 Nov, 2016

1 commit