1. 11 Dec, 2016 11 commits
    • Timur Tabi's avatar
      net: phy: phy drivers should not set SUPPORTED_[Asym_]Pause · 529ed127
      Timur Tabi authored
      Instead of having individual PHY drivers set the SUPPORTED_Pause and
      SUPPORTED_Asym_Pause flags, phylib itself should set those flags,
      unless there is a hardware erratum or other special case.  During
      autonegotiation, the PHYs will determine whether to enable pause
      frame support.
      
      Pause frames are a feature that is supported by the MAC.  It is the MAC
      that generates the frames and that processes them.  The PHY can only be
      configured to allow them to pass through.
      
      This commit also effectively reverts the recently applied c7a61319
      ("net: phy: dp83848: Support ethernet pause frames").
      
      So the new process is:
      
      1) Unless the PHY driver overrides it, phylib sets the SUPPORTED_Pause
      and SUPPORTED_AsymPause bits in phydev->supported.  This indicates that
      the PHY supports pause frames.
      
      2) The MAC driver checks phydev->supported before it calls phy_start().
      If (SUPPORTED_Pause | SUPPORTED_AsymPause) is set, then the MAC driver
      sets those bits in phydev->advertising, if it wants to enable pause
      frame support.
      
      3) When the link state changes, the MAC driver checks phydev->pause and
      phydev->asym_pause,  If the bits are set, then it enables the corresponding
      features in the MAC.  The algorithm is:
      
      	if (phydev->pause)
      		The MAC should be programmed to receive and honor
                      pause frames it receives, i.e. enable receive flow control.
      
      	if (phydev->pause != phydev->asym_pause)
      		The MAC should be programmed to transmit pause
      		frames when needed, i.e. enable transmit flow control.
      Signed-off-by: default avatarTimur Tabi <timur@codeaurora.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      529ed127
    • Asbjørn Sloth Tønnesen's avatar
    • Asbjørn Sloth Tønnesen's avatar
      net: l2tp: deprecate PPPOL2TP_MSG_* in favour of L2TP_MSG_* · 47c3e778
      Asbjørn Sloth Tønnesen authored
      PPPOL2TP_MSG_* and L2TP_MSG_* are duplicates, and are being used
      interchangeably in the kernel, so let's standardize on L2TP_MSG_*
      internally, and keep PPPOL2TP_MSG_* defined in UAPI for compatibility.
      Signed-off-by: default avatarAsbjoern Sloth Toennesen <asbjorn@asbjorn.st>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      47c3e778
    • Asbjørn Sloth Tønnesen's avatar
      net: l2tp: export debug flags to UAPI · 41c43fbe
      Asbjørn Sloth Tønnesen authored
      Move the L2TP_MSG_* definitions to UAPI, as it is part of
      the netlink API.
      Signed-off-by: default avatarAsbjoern Sloth Toennesen <asbjorn@asbjorn.st>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      41c43fbe
    • David S. Miller's avatar
      Merge branch 'sxgbe-stmmac-remove-private-tx-lock' · 0972770e
      David S. Miller authored
      Lino Sanfilippo says:
      
      ====================
      Remove private tx queue locks
      
      this patch series removes unnecessary private locks in the sxgbe and the
      stmmac driver.
      
      v2:
      - adjust commit message
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0972770e
    • Lino Sanfilippo's avatar
      net: ethernet: stmmac: remove private tx queue lock · 739c8e14
      Lino Sanfilippo authored
      The driver uses a private lock for synchronization of the xmit function and
      the xmit completion handler, but since the NETIF_F_LLTX flag is not set,
      the xmit function is also called with the xmit_lock held.
      
      On the other hand the completion handler uses the reverse locking order by
      first taking the private lock and (in case that the tx queue had been
      stopped) then the xmit_lock.
      
      Improve the locking by removing the private lock and using only the
      xmit_lock for synchronization instead.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      739c8e14
    • Lino Sanfilippo's avatar
      net: ethernet: sxgbe: remove private tx queue lock · 980f1404
      Lino Sanfilippo authored
      The driver uses a private lock for synchronization of the xmit function and
      the xmit completion handler, but since the NETIF_F_LLTX flag is not set,
      the xmit function is also called with the xmit_lock held.
      
      On the other hand the completion handler uses the reverse locking order by
      first taking the private lock and (in case that the tx queue had been
      stopped) then the xmit_lock.
      
      Improve the locking by removing the private lock and using only the
      xmit_lock for synchronization instead.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      980f1404
    • David S. Miller's avatar
      Merge branch 'bridge-fast-ageing-on-topology-change' · c280b482
      David S. Miller authored
      Vivien Didelot says:
      
      ====================
      net: bridge: fast ageing on topology change
      
      802.1D [1] specifies that the bridges in a network must use a short
      value to age out dynamic entries in the Filtering Database for a period,
      once a topology change has been communicated by the root bridge.
      
      This patchset fixes this for the in-kernel STP implementation.
      
      Once the topology change flag is set in a net_bridge instance, the
      ageing time value is shorten to twice the forward delay used by the
      topology.
      
      When the topology change flag is cleared, the ageing time configured for
      the bridge is restored.
      
      To accomplish that, a new bridge_ageing_time member is added to the
      net_bridge structure, to store the user configured bridge ageing time.
      
      Two helpers are added to offload the ageing time and set the topology
      change flag in the net_bridge instance. Then the required logic is added
      in the topology change helper if in-kernel STP is used.
      
      This has been tested on the following topology:
      
          +--------------+
          | root bridge  |
          |  1  2  3  4  |
          +--+--+--+--+--+
             |  |  |  |      +--------+
             |  |  |  +------| laptop |
             |  |  |         +--------+
          +--+--+--+-----+
          |  1  2  3     |
          | slave bridge |
          +--------------+
      
      When unplugging/replugging the laptop, the slave bridge (under test)
      gets the topology change flag sent by the root bridge, and fast ageing
      is triggered on the bridges. Once the topology change timer of the root
      bridge expires, the topology change flag is cleared and the configured
      ageing time is restored on the bridges.
      
      A similar test has been done between two bridges under test.
      When changing the forward delay of the root bridge with:
      
          # echo 3000 > /sys/class/net/br0/bridge/forward_delay
      
      the ageing time correctly changes on both bridges from 300s to 60s while
      the TOPOLOGY_CHANGE flag is present.
      
      [1] "8.3.5 Notifying topology changes",
          http://profesores.elo.utfsm.cl/~agv/elo309/doc/802.1D-1998.pdf
      
      No change since RFC: https://lkml.org/lkml/2016/10/19/828
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c280b482
    • Vivien Didelot's avatar
      net: bridge: shorten ageing time on topology change · 34d8acd8
      Vivien Didelot authored
      802.1D [1] specifies that the bridges must use a short value to age out
      dynamic entries in the Filtering Database for a period, once a topology
      change has been communicated by the root bridge.
      
      Add a bridge_ageing_time member in the net_bridge structure to store the
      bridge ageing time value configured by the user (ioctl/netlink/sysfs).
      
      If we are using in-kernel STP, shorten the ageing time value to twice
      the forward delay used by the topology when the topology change flag is
      set. When the flag is cleared, restore the configured ageing time.
      
      [1] "8.3.5 Notifying topology changes ",
          http://profesores.elo.utfsm.cl/~agv/elo309/doc/802.1D-1998.pdfSigned-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      34d8acd8
    • Vivien Didelot's avatar
      net: bridge: add helper to set topology change · 8384b5f5
      Vivien Didelot authored
      Add a __br_set_topology_change helper to set the topology change value.
      
      This can be later extended to add actions when the topology change flag
      is set or cleared.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8384b5f5
    • Vivien Didelot's avatar
      net: bridge: add helper to offload ageing time · 82dd4332
      Vivien Didelot authored
      The SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME switchdev attr is actually set
      when initializing a bridge port, and when configuring the bridge ageing
      time from ioctl/netlink/sysfs.
      
      Add a __set_ageing_time helper to offload the ageing time to physical
      switches, and add the SWITCHDEV_F_DEFER flag since it can be called
      under bridge lock.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      82dd4332
  2. 10 Dec, 2016 25 commits
  3. 09 Dec, 2016 4 commits
    • Linus Torvalds's avatar
      Merge branch 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm · 810ac7b7
      Linus Torvalds authored
      Pull libnvdimm fixes from Dan Williams:
       "Several fixes to the DSM (ACPI device specific method) marshaling
        implementation.
      
        I consider these urgent enough to send for 4.9 consideration since
        they fix the kernel's handling of ARS (Address Range Scrub) commands.
        Especially for platforms without machine-check-recovery capabilities,
        successful execution of ARS commands enables the platform to
        potentially break out of an infinite reboot problem if a media error
        is present in the boot path. There is also a one line fix for a
        device-dax read-only mapping regression.
      
        Commits 9a901f54 ("acpi, nfit: fix extended status translations
        for ACPI DSMs") and 325896ff ("device-dax: fix private mapping
        restriction, permit read-only") are true regression fixes for changes
        introduced this cycle.
      
        Commit efda1b5d ("acpi, nfit, libnvdimm: fix / harden ars_status
        output length handling") fixes the kernel's handling of zero-length
        results, this never would have worked in the past, but we only just
        recently discovered a BIOS implementation that emits this arguably
        spec non-compliant result.
      
        The remaining two commits are additional fall out from thinking
        through the implications of a zero / truncated length result of the
        ARS Status command.
      
        In order to mitigate the risk that these changes introduce yet more
        regressions they are backstopped by a new unit test in commit
        a7de92da ("tools/testing/nvdimm: unit test acpi_nfit_ctl()") that
        mocks up inputs to acpi_nfit_ctl()"
      
      * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
        device-dax: fix private mapping restriction, permit read-only
        tools/testing/nvdimm: unit test acpi_nfit_ctl()
        acpi, nfit: fix bus vs dimm confusion in xlat_status
        acpi, nfit: validate ars_status output buffer size
        acpi, nfit, libnvdimm: fix / harden ars_status output length handling
        acpi, nfit: fix extended status translations for ACPI DSMs
      810ac7b7
    • Linus Torvalds's avatar
      Merge branch 'for-4.9-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · 861d75d0
      Linus Torvalds authored
      Pull libata fixes from Tejun Heo:
       "This is quite late but SCT Write Same support added during this cycle
        is broken subtly but seriously and it'd be best to disable it before
        v4.9 gets released.
      
        This contains two commits - one low impact sata_mv fix and the
        mentioned disabling of SCT Write Same"
      
      * 'for-4.9-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
        libata-scsi: disable SCT Write Same for the moment
        ata: sata_mv: check for errors when parsing nr-ports from dt
      861d75d0
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-4.9-rc9' of git://github.com/ceph/ceph-client · af9468db
      Linus Torvalds authored
      Pull ceph fix from Ilya Dryomov:
       "A fix for an issue with ->d_revalidate() in ceph, causing frequent
        kernel crashes.
      
        Marked for stable - it goes back to 4.6, but started popping up only
        in 4.8"
      
      * tag 'ceph-for-4.9-rc9' of git://github.com/ceph/ceph-client:
        ceph: don't set req->r_locked_dir in ceph_d_revalidate
      af9468db
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 1f6c926c
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "Final batch of SoC fixes
      
        A few fixes that have trickled in over the last week, all fixing minor
        errors in devicetrees -- UART pin assignment on Allwinner H3,
        correcting number of SATA ports on a Marvell-based Linkstation
        platform and a display clock fix for Freescale/NXP i.MX7D that fixes a
        freeze when starting up X"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: dts: orion5x: fix number of sata port for linkstation ls-gl
        ARM: dts: imx7d: fix LCDIF clock assignment
        dts: sun8i-h3: correct UART3 pin definitions
      1f6c926c