1. 08 6月, 2017 21 次提交
  2. 07 6月, 2017 19 次提交
    • A
      net: fec: Clear and enable MIB counters on imx51 · 2b30842b
      Andrew Lunn 提交于
      Both the IMX51 and IMX53 datasheet indicates that the MIB counters
      should be cleared during setup. Otherwise random numbers are returned
      via ethtool -S.  Add a quirk and a function to do this.
      
      Tested on an IMX51.
      Signed-off-by: NAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: NFabio Estevam <fabio.estevam@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2b30842b
    • D
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 216fe8f0
      David S. Miller 提交于
      Just some simple overlapping changes in marvell PHY driver
      and the DSA core code.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      216fe8f0
    • D
      Merge branch 'phylib-support-for-MV88X3310-10G-phy' · 9747e231
      David S. Miller 提交于
      Russell King says:
      
      ====================
      net: Add phylib support for MV88X3310 10G phy
      
      This patch series adds support for the Marvell 88x3310 PHY found on
      the SolidRun Macchiatobin board.
      
      The first patch introduces a set of generic Clause 45 PHY helpers that
      C45 PHY drivers can make use of if they wish.
      
      Patch 2 ensures that the Clause 22 aneg_done function will not be
      called for incompatible Clause 45 PHYs.
      
      Patch 3 fixes the aneg restart to be compatible with C45 PHYs - it can
      currently only cope with C22 PHYs.
      
      Patch 4 moves the "gen10g" driver into the Clause 45 code, grouping all
      core clause 45 code together.
      
      Patch 5 adds the phy_interface_t types for XAUI and 10GBase-KR links.
      As 10GBase-KR appears to be compatible with XFI and SFI, XFI and SFI,
      I currently see no reason to add XFI and SFI interface modes.  There
      seems to be vendor code out there using these, but they all alias back
      to the same hardware settings.
      
      Patch 6 adds support for the MV88X3310 PHY, which supports both the
      copper and fiber interfaces.  It should be noted that the MV88X3310
      automatically switches its MAC facing interface between 10GBase-KR
      and SGMII depending on the negotiated speed.  This was discussed with
      Florian, and we agreed to update the phy interface mode depending on
      the properties of the actual link mode to the PHY.
      
      v2:
      - update sysfs-class-net-phydev documentation
      - avoid genphy_aneg_done for non-C22 PHYs
      - expand comment about 0x30 constant
      - add comment about lack of reset
      - configure driver using MARVELL_10G_PHY
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9747e231
    • R
      net: phy: add Marvell Alaska X 88X3310 10Gigabit PHY support · 20b2af32
      Russell King 提交于
      Add phylib support for the Marvell Alaska X 10 Gigabit PHY (MV88X3310).
      This phy is able to operate at 10G, 1G, 100M and 10M speeds, and only
      supports Clause 45 accesses.
      
      The PHY appears (based on the vendor IDs) to be two different vendors
      IP, with each devad containing several instances.
      
      This PHY driver has only been tested with the RJ45 copper port, fiber
      port and a Marvell Armada 8040-based ethernet interface.
      
      It should be noted that to use the full range of speeds, MAC drivers
      need to also reconfigure the link mode as per phydev->interface, since
      the PHY automatically changes its interface mode depending on the
      negotiated speed.
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      20b2af32
    • R
      net: phy: add XAUI and 10GBASE-KR PHY connection types · c125ca09
      Russell King 提交于
      XAUI allows XGMII to reach an extended distance by using a XGXS layer at
      each end of the MAC to PHY link, operating over four Serdes lanes.
      
      10GBASE-KR is a single lane Serdes backplane ethernet connection method
      with autonegotiation on the link.  Some PHYs use this to connect to the
      ethernet interface at 10G speeds, switching to other connection types
      when utilising slower speeds.
      
      10GBASE-KR is also used for XFI and SFI to connect to XFP and SFP fiber
      modules.
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c125ca09
    • R
      net: phy: split out 10G genphy support · 921690f2
      Russell King 提交于
      Move the old 10G genphy support to sit beside the new clause 45 library
      functions, so all the 10G phy code is together.
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      921690f2
    • R
      net: phy: hook up clause 45 autonegotiation restart · 002ba705
      Russell King 提交于
      genphy_restart_aneg() can only restart autonegotiation on clause 22
      PHYs.  Add a phy_restart_aneg() function which selects between the
      clause 22 and clause 45 restart functionality depending on the PHY
      type and whether the Clause 45 PHY supports the Clause 22 register set.
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      002ba705
    • R
      net: phy: avoid genphy_aneg_done() for PHYs without clause 22 support · 41408ad5
      Russell King 提交于
      Avoid calling genphy_aneg_done() for PHYs that do not implement the
      Clause 22 register set.
      
      Clause 45 PHYs may implement the Clause 22 register set along with the
      Clause 22 extension MMD.  Hence, we can't simply block access to the
      Clause 22 functions based on the PHY being a Clause 45 PHY.
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      41408ad5
    • R
      net: phy: add 802.3 clause 45 support to phylib · 5acde34a
      Russell King 提交于
      Add generic helpers for 802.3 clause 45 PHYs for >= 10Gbps support.
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5acde34a
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · b29794ec
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
      
       1) Made TCP congestion control documentation match current reality,
          from Anmol Sarma.
      
       2) Various build warning and failure fixes from Arnd Bergmann.
      
       3) Fix SKB list leak in ipv6_gso_segment().
      
       4) Use after free in ravb driver, from Eugeniu Rosca.
      
       5) Don't use udp_poll() in ping protocol driver, from Eric Dumazet.
      
       6) Don't crash in PCI error recovery of cxgb4 driver, from Guilherme
          Piccoli.
      
       7) _SRC_NAT_DONE_BIT needs to be cleared using atomics, from Liping
          Zhang.
      
       8) Use after free in vxlan deletion, from Mark Bloch.
      
       9) Fix ordering of NAPI poll enabled in ethoc driver, from Max
          Filippov.
      
      10) Fix stmmac hangs with TSO, from Niklas Cassel.
      
      11) Fix crash in CALIPSO ipv6, from Richard Haines.
      
      12) Clear nh_flags properly on mpls link up. From Roopa Prabhu.
      
      13) Fix regression in sk_err socket error queue handling, noticed by
          ping applications. From Soheil Hassas Yeganeh.
      
      14) Update mlx4/mlx5 MAINTAINERS information.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (78 commits)
        net: stmmac: fix a broken u32 less than zero check
        net: stmmac: fix completely hung TX when using TSO
        net: ethoc: enable NAPI before poll may be scheduled
        net: bridge: fix a null pointer dereference in br_afspec
        ravb: Fix use-after-free on `ifconfig eth0 down`
        net/ipv6: Fix CALIPSO causing GPF with datagram support
        net: stmmac: ensure jumbo_frm error return is correctly checked for -ve value
        Revert "sit: reload iphdr in ipip6_rcv"
        i40e/i40evf: proper update of the page_offset field
        i40e: Fix state flags for bit set and clean operations of PF
        iwlwifi: fix host command memory leaks
        iwlwifi: fix min API version for 7265D, 3168, 8000 and 8265
        iwlwifi: mvm: clear new beacon command template struct
        iwlwifi: mvm: don't fail when removing a key from an inexisting sta
        iwlwifi: pcie: only use d0i3 in suspend/resume if system_pm is set to d0i3
        iwlwifi: mvm: fix firmware debug restart recording
        iwlwifi: tt: move ucode_loaded check under mutex
        iwlwifi: mvm: support ibss in dqa mode
        iwlwifi: mvm: Fix command queue number on d0i3 flow
        iwlwifi: mvm: rs: start using LQ command color
        ...
      b29794ec
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · e87f327e
      Linus Torvalds 提交于
      Pull sparc fixes from David Miller:
      
       1) Fix TLB context wrap races, from Pavel Tatashin.
      
       2) Cure some gcc-7 build issues.
      
       3) Handle invalid setup_hugepagesz command line values properly, from
          Liam R Howlett.
      
       4) Copy TSB using the correct address shift for the huge TSB, from Mike
          Kravetz.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc64: delete old wrap code
        sparc64: new context wrap
        sparc64: add per-cpu mm of secondary contexts
        sparc64: redefine first version
        sparc64: combine activate_mm and switch_mm
        sparc64: reset mm cpumask after wrap
        sparc/mm/hugepages: Fix setup_hugepagesz for invalid values.
        sparc: Machine description indices can vary
        sparc64: mm: fix copy_tsb to correctly copy huge page TSBs
        arch/sparc: support NR_CPUS = 4096
        sparc64: Add __multi3 for gcc 7.x and later.
        sparc64: Fix build warnings with gcc 7.
        arch/sparc: increase CONFIG_NODES_SHIFT on SPARC64 to 5
      e87f327e
    • D
      compiler, clang: suppress warning for unused static inline functions · abb2ea7d
      David Rientjes 提交于
      GCC explicitly does not warn for unused static inline functions for
      -Wunused-function.  The manual states:
      
      	Warn whenever a static function is declared but not defined or
      	a non-inline static function is unused.
      
      Clang does warn for static inline functions that are unused.
      
      It turns out that suppressing the warnings avoids potentially complex
      #ifdef directives, which also reduces LOC.
      
      Suppress the warning for clang.
      Signed-off-by: NDavid Rientjes <rientjes@google.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      abb2ea7d
    • D
      Merge branch 'sparc64-context-wrap-fixes' · b3aefc2f
      David S. Miller 提交于
      Pavel Tatashin says:
      
      ====================
      sparc64: context wrap fixes
      
      This patch series contains fixes for context wrap: when we are out of
      context ids, and need to get a new version.
      
      It fixes memory corruption issues which happen when more than number of
      context ids (currently set to 8K) number of processes are started
      simultaneously, and processes can get a wrong context.
      
      sparc64: new context wrap:
      - contains explanation of new wrap method, and also explanation of races
        that it solves
      sparc64: reset mm cpumask after wrap
      - explains issue of not reseting cpu mask on a wrap
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b3aefc2f
    • P
      sparc64: delete old wrap code · 0197e41c
      Pavel Tatashin 提交于
      The old method that is using xcall and softint to get new context id is
      deleted, as it is replaced by a method of using per_cpu_secondary_mm
      without xcall to perform the context wrap.
      Signed-off-by: NPavel Tatashin <pasha.tatashin@oracle.com>
      Reviewed-by: NBob Picco <bob.picco@oracle.com>
      Reviewed-by: NSteven Sistare <steven.sistare@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0197e41c
    • P
      sparc64: new context wrap · a0582f26
      Pavel Tatashin 提交于
      The current wrap implementation has a race issue: it is called outside of
      the ctx_alloc_lock, and also does not wait for all CPUs to complete the
      wrap.  This means that a thread can get a new context with a new version
      and another thread might still be running with the same context. The
      problem is especially severe on CPUs with shared TLBs, like sun4v. I used
      the following test to very quickly reproduce the problem:
      - start over 8K processes (must be more than context IDs)
      - write and read values at a  memory location in every process.
      
      Very quickly memory corruptions start happening, and what we read back
      does not equal what we wrote.
      
      Several approaches were explored before settling on this one:
      
      Approach 1:
      Move smp_new_mmu_context_version() inside ctx_alloc_lock, and wait for
      every process to complete the wrap. (Note: every CPU must WAIT before
      leaving smp_new_mmu_context_version_client() until every one arrives).
      
      This approach ends up with deadlocks, as some threads own locks which other
      threads are waiting for, and they never receive softint until these threads
      exit smp_new_mmu_context_version_client(). Since we do not allow the exit,
      deadlock happens.
      
      Approach 2:
      Handle wrap right during mondo interrupt. Use etrap/rtrap to enter into
      into C code, and issue new versions to every CPU.
      This approach adds some overhead to runtime: in switch_mm() we must add
      some checks to make sure that versions have not changed due to wrap while
      we were loading the new secondary context. (could be protected by PSTATE_IE
      but that degrades performance as on M7 and older CPUs as it takes 50 cycles
      for each access). Also, we still need a global per-cpu array of MMs to know
      where we need to load new contexts, otherwise we can change context to a
      thread that is going way (if we received mondo between switch_mm() and
      switch_to() time). Finally, there are some issues with window registers in
      rtrap() when context IDs are changed during CPU mondo time.
      
      The approach in this patch is the simplest and has almost no impact on
      runtime.  We use the array with mm's where last secondary contexts were
      loaded onto CPUs and bump their versions to the new generation without
      changing context IDs. If a new process comes in to get a context ID, it
      will go through get_new_mmu_context() because of version mismatch. But the
      running processes do not need to be interrupted. And wrap is quicker as we
      do not need to xcall and wait for everyone to receive and complete wrap.
      Signed-off-by: NPavel Tatashin <pasha.tatashin@oracle.com>
      Reviewed-by: NBob Picco <bob.picco@oracle.com>
      Reviewed-by: NSteven Sistare <steven.sistare@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a0582f26
    • P
      sparc64: add per-cpu mm of secondary contexts · 7a5b4bbf
      Pavel Tatashin 提交于
      The new wrap is going to use information from this array to figure out
      mm's that currently have valid secondary contexts setup.
      Signed-off-by: NPavel Tatashin <pasha.tatashin@oracle.com>
      Reviewed-by: NBob Picco <bob.picco@oracle.com>
      Reviewed-by: NSteven Sistare <steven.sistare@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7a5b4bbf
    • P
      sparc64: redefine first version · c4415235
      Pavel Tatashin 提交于
      CTX_FIRST_VERSION defines the first context version, but also it defines
      first context. This patch redefines it to only include the first context
      version.
      Signed-off-by: NPavel Tatashin <pasha.tatashin@oracle.com>
      Reviewed-by: NBob Picco <bob.picco@oracle.com>
      Reviewed-by: NSteven Sistare <steven.sistare@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c4415235
    • P
      sparc64: combine activate_mm and switch_mm · 14d0334c
      Pavel Tatashin 提交于
      The only difference between these two functions is that in activate_mm we
      unconditionally flush context. However, there is no need to keep this
      difference after fixing a bug where cpumask was not reset on a wrap. So, in
      this patch we combine these.
      Signed-off-by: NPavel Tatashin <pasha.tatashin@oracle.com>
      Reviewed-by: NBob Picco <bob.picco@oracle.com>
      Reviewed-by: NSteven Sistare <steven.sistare@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      14d0334c
    • P
      sparc64: reset mm cpumask after wrap · 58897485
      Pavel Tatashin 提交于
      After a wrap (getting a new context version) a process must get a new
      context id, which means that we would need to flush the context id from
      the TLB before running for the first time with this ID on every CPU. But,
      we use mm_cpumask to determine if this process has been running on this CPU
      before, and this mask is not reset after a wrap. So, there are two possible
      fixes for this issue:
      
      1. Clear mm cpumask whenever mm gets a new context id
      2. Unconditionally flush context every time process is running on a CPU
      
      This patch implements the first solution
      Signed-off-by: NPavel Tatashin <pasha.tatashin@oracle.com>
      Reviewed-by: NBob Picco <bob.picco@oracle.com>
      Reviewed-by: NSteven Sistare <steven.sistare@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      58897485