1. 31 5月, 2019 20 次提交
  2. 30 5月, 2019 20 次提交
    • M
      net: phy: tja11xx: Switch to HWMON_CHANNEL_INFO() · 517f4c49
      Marek Vasut 提交于
      The HWMON_CHANNEL_INFO macro simplifies the code, reduces the likelihood
      of errors, and makes the code easier to read.
      Signed-off-by: NMarek Vasut <marex@denx.de>
      Cc: Andrew Lunn <andrew@lunn.ch>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Heiner Kallweit <hkallweit1@gmail.com>
      Cc: Jean Delvare <jdelvare@suse.com>
      Cc: linux-hwmon@vger.kernel.org
      Reviewed-by: NGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      517f4c49
    • I
      net: ethernet: ti: cpsw: correct .ndo_open error path · 02cacede
      Ivan Khoronzhuk 提交于
      It's found while review and probably never happens, but real number
      of queues is set per device, and error path should be per device.
      So split error path based on usage_count.
      Signed-off-by: NIvan Khoronzhuk <ivan.khoronzhuk@linaro.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      02cacede
    • D
      Merge branch 'Decoupling-PHYLINK-from-struct-net_device' · 6faaffb3
      David S. Miller 提交于
      Ioana Ciornei says:
      
      ====================
      Decoupling PHYLINK from struct net_device
      
      Following two separate discussion threads in:
        https://www.spinics.net/lists/netdev/msg569087.html
      and:
        https://www.spinics.net/lists/netdev/msg570450.html
      
      Previous RFC patch set: https://www.spinics.net/lists/netdev/msg571995.html
      
      PHYLINK was reworked in order to accept multiple operation types,
      PHYLINK_NETDEV and PHYLINK_DEV, passed through a phylink_config
      structure alongside the corresponding struct device.
      
      One of the main concerns expressed in the RFC was that using notifiers
      to signal the corresponding phylink_mac_ops would break PHYLINK's API
      unity and that it would become harder to grep for its users.
      Using the current approach, we maintain a common API for all users.
      Also, printing useful information in PHYLINK, when decoupled from a
      net_device, is achieved using dev_err&co on the struct device received
      (in DSA's case is the device corresponding to the dsa_switch).
      
      PHYLIB (which PHYLINK uses) was reworked to the extent that it does not
      crash when connecting to a PHY and the net_device pointer is NULL.
      
      Lastly, DSA has been reworked in its way that it handles PHYs for ports
      that lack a net_device (CPU and DSA ports).  For these, it was
      previously using PHYLIB and is now using the PHYLINK_DEV operation type.
      Previously, a driver that wanted to support PHY operations on CPU/DSA
      ports has to implement .adjust_link(). This patch set not only gives
      drivers the options to use PHYLINK uniformly but also urges them to
      convert to it. For compatibility, the old code is kept but it will be
      removed once all drivers switch over.
      
      The patchset was tested on the NXP LS1021A-TSN board having the
      following Ethernet layout:
        https://lkml.org/lkml/2019/5/5/279
      The CPU port was moved from the internal RGMII fixed-link (enet2 ->
      switch port 4) to an external loopback Cat5 cable between the enet1 port
      and the front-facing swp2 SJA1105 port. In this mode, both the master
      and the CPU port have an attached PHY which detects link change events:
      
      [   49.105426] fsl-gianfar soc:ethernet@2d50000 eth1: Link is Down
      [   50.305486] sja1105 spi0.1: Link is Down
      [   53.265596] fsl-gianfar soc:ethernet@2d50000 eth1: Link is Up - 1Gbps/Full - flow control off
      [   54.466304] sja1105 spi0.1: Link is Up - 1Gbps/Full - flow control off
      
      Changes in v2:
        - fixed sparse warnings
        - updated 'Documentation/ABI/testing/sysfs-class-net-phydev'
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6faaffb3
    • V
      net: dsa: sja1105: Fix broken fixed-link interfaces on user ports · af7cd036
      Vladimir Oltean 提交于
      PHYLIB and PHYLINK handle fixed-link interfaces differently. PHYLIB
      wraps them in a software PHY ("pseudo fixed link") phydev construct such
      that .adjust_link driver callbacks see an unified API. Whereas PHYLINK
      simply creates a phylink_link_state structure and passes it to
      .mac_config.
      
      At the time the driver was introduced, DSA was using PHYLIB for the
      CPU/cascade ports (the ones with no net devices) and PHYLINK for
      everything else.
      
      As explained below:
      
      commit aab9c406
      Author: Florian Fainelli <f.fainelli@gmail.com>
      Date:   Thu May 10 13:17:36 2018 -0700
      
        net: dsa: Plug in PHYLINK support
      
        Drivers that utilize fixed links for user-facing ports (e.g: bcm_sf2)
        will need to implement phylink_mac_ops from now on to preserve
        functionality, since PHYLINK *does not* create a phy_device instance
        for fixed links.
      
      In the above patch, DSA guards the .phylink_mac_config callback against
      a NULL phydev pointer.  Therefore, .adjust_link is not called in case of
      a fixed-link user port.
      
      This patch fixes the situation by converting the driver from using
      .adjust_link to .phylink_mac_config.  This can be done now in a unified
      fashion for both slave and CPU/cascade ports because DSA now uses
      PHYLINK for all ports.
      Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      af7cd036
    • I
      net: dsa: Use PHYLINK for the CPU/DSA ports · 0e279218
      Ioana Ciornei 提交于
      For DSA switches that do not have an .adjust_link callback, aka those
      who transitioned totally to the PHYLINK-compliant API, use PHYLINK to
      drive the CPU/DSA ports.
      
      The PHYLIB usage and .adjust_link are kept but deprecated, and users are
      asked to transition from it.  The reason why we can't do anything for
      them is because PHYLINK does not wrap the fixed-link state behind a
      phydev object, so we cannot wrap .phylink_mac_config into .adjust_link
      unless we fabricate a phy_device structure.
      
      For these ports, the newly introduced PHYLINK_DEV operation type is
      used and the dsa_switch device structure is passed to PHYLINK for
      printing purposes.  The handling of the PHYLINK_NETDEV and PHYLINK_DEV
      PHYLINK instances is common from the perspective of the driver.
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0e279218
    • I
      net: dsa: Move the phylink driver calls into port.c · 77373d49
      Ioana Ciornei 提交于
      In order to have a common handling of PHYLINK for the slave and non-user
      ports, the DSA core glue logic (between PHYLINK and the driver) must use
      an API that does not rely on a struct net_device.
      
      These will also be called by the CPU-port-handling code in a further
      patch.
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Suggested-by: NVladimir Oltean <olteanv@gmail.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      77373d49
    • I
      net: phylink: Add phylink_{printk, err, warn, info, dbg} macros · 17091180
      Ioana Ciornei 提交于
      With the latest addition to the PHYLINK infrastructure, we are faced
      with a decision on when to print necessary info using the struct
      net_device and when with the struct device.
      
      Add a series of macros that encapsulate this decision and replace all
      uses of netdev_err&co with phylink_err.
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      17091180
    • I
      net: phylink: Add PHYLINK_DEV operation type · 43de6195
      Ioana Ciornei 提交于
      In the PHYLINK_DEV operation type, the PHYLINK infrastructure can work
      without an attached net_device. For printing usecases, instead, a struct
      device * should be passed to PHYLINK using the phylink_config structure.
      
      Also, netif_carrier_* calls ar guarded by the presence of a valid
      net_device. When using the PHYLINK_DEV operation type, we cannot check
      link status using the netif_carrier_ok() API so instead, keep an
      internal state of the MAC and call mac_link_{down,up} only when the link
      changed.
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      43de6195
    • I
      net: phylink: Add struct phylink_config to PHYLINK API · 44cc27e4
      Ioana Ciornei 提交于
      The phylink_config structure will encapsulate a pointer to a struct
      device and the operation type requested for this instance of PHYLINK.
      This patch does not make any functional changes, it just transitions the
      PHYLINK internals and all its users to the new API.
      
      A pointer to a phylink_config structure will be passed to
      phylink_create() instead of the net_device directly. Also, the same
      phylink_config pointer will be passed back to all phylink_mac_ops
      callbacks instead of the net_device. Using this mechanism, a PHYLINK
      user can get the original net_device using a structure such as
      'to_net_dev(config->dev)' or directly the structure containing the
      phylink_config using a container_of call.
      
      At the moment, only the PHYLINK_NETDEV is defined as a valid operation
      type for PHYLINK. In this mode, a valid reference to a struct device
      linked to the original net_device should be passed to PHYLINK through
      the phylink_config structure.
      
      This API changes is mainly driven by the necessity of adding a new
      operation type in PHYLINK that disconnects the phy_device from the
      net_device and also works when the net_device is lacking.
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: NMaxime Chevallier <maxime.chevallier@bootlin.com>
      Tested-by: NMaxime Chevallier <maxime.chevallier@bootlin.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      44cc27e4
    • I
      net: phylink: Add phylink_mac_link_{up, down} wrapper functions · 27755ff8
      Ioana Ciornei 提交于
      This is a cosmetic patch that reduces the clutter in phylink_resolve
      around calling the .mac_link_up/.mac_link_down driver callbacks.  In a
      further patch this logic will be extended to emit notifications in case
      a net device does not exist.
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      27755ff8
    • I
      net: phy: Add phy_standalone sysfs entry · c920f745
      Ioana Ciornei 提交于
      Export a phy_standalone device attribute that is meant to give the
      indication that this PHY lacks an attached_dev and its corresponding
      sysfs link. The attribute will be created only when the
      phy_attach_direct() function will be called with a NULL net_device.
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c920f745
    • I
      net: phy: Check against net_device being NULL · 82c76aca
      Ioana Ciornei 提交于
      In general, we don't want MAC drivers calling phy_attach_direct with the
      net_device being NULL. Add checks against this in all the functions
      calling it: phy_attach() and phy_connect_direct().
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Suggested-by: NAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      82c76aca
    • I
      net: phy: Guard against the presence of a netdev · 2db2d9d1
      Ioana Ciornei 提交于
      A prerequisite for PHYLIB to work in the absence of a struct net_device
      is to not access pointers to it.
      
      Changes are needed in the following areas:
      
       - Printing: In some places netdev_err was replaced with phydev_err.
      
       - Incrementing reference count to the parent MDIO bus driver: If there
         is no net device, then the reference count should definitely be
         incremented since there is no chance that it was an Ethernet driver
         who registered the MDIO bus.
      
       - Sysfs links are not created in case there is no attached_dev.
      
       - No netif_carrier_off is done if there is no attached_dev.
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2db2d9d1
    • V
      net: phy: Add phy_sysfs_create_links helper function · 53cfca2d
      Vladimir Oltean 提交于
      This is a cosmetic patch that wraps the operation of creating sysfs
      links between the netdev->phydev and the phydev->attached_dev.
      
      This is needed to keep the indentation level in check in a follow-up
      patch where this function will be guarded against the existence of a
      phydev->attached_dev.
      Signed-off-by: NVladimir Oltean <olteanv@gmail.com>
      Signed-off-by: NIoana Ciornei <ioana.ciornei@nxp.com>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      53cfca2d
    • K
      net: sched: Introduce act_ctinfo action · 24ec483c
      Kevin 'ldir' Darbyshire-Bryant 提交于
      ctinfo is a new tc filter action module.  It is designed to restore
      information contained in firewall conntrack marks to other packet fields
      and is typically used on packet ingress paths.  At present it has two
      independent sub-functions or operating modes, DSCP restoration mode &
      skb mark restoration mode.
      
      The DSCP restore mode:
      
      This mode copies DSCP values that have been placed in the firewall
      conntrack mark back into the IPv4/v6 diffserv fields of relevant
      packets.
      
      The DSCP restoration is intended for use and has been found useful for
      restoring ingress classifications based on egress classifications across
      links that bleach or otherwise change DSCP, typically home ISP Internet
      links.  Restoring DSCP on ingress on the WAN link allows qdiscs such as
      but by no means limited to CAKE to shape inbound packets according to
      policies that are easier to set & mark on egress.
      
      Ingress classification is traditionally a challenging task since
      iptables rules haven't yet run and tc filter/eBPF programs are pre-NAT
      lookups, hence are unable to see internal IPv4 addresses as used on the
      typical home masquerading gateway.  Thus marking the connection in some
      manner on egress for later restoration of classification on ingress is
      easier to implement.
      
      Parameters related to DSCP restore mode:
      
      dscpmask - a 32 bit mask of 6 contiguous bits and indicate bits of the
      conntrack mark field contain the DSCP value to be restored.
      
      statemask - a 32 bit mask of (usually) 1 bit length, outside the area
      specified by dscpmask.  This represents a conditional operation flag
      whereby the DSCP is only restored if the flag is set.  This is useful to
      implement a 'one shot' iptables based classification where the
      'complicated' iptables rules are only run once to classify the
      connection on initial (egress) packet and subsequent packets are all
      marked/restored with the same DSCP.  A mask of zero disables the
      conditional behaviour ie. the conntrack mark DSCP bits are always
      restored to the ip diffserv field (assuming the conntrack entry is found
      & the skb is an ipv4/ipv6 type)
      
      e.g. dscpmask 0xfc000000 statemask 0x01000000
      
      |----0xFC----conntrack mark----000000---|
      | Bits 31-26 | bit 25 | bit24 |~~~ Bit 0|
      | DSCP       | unused | flag  |unused   |
      |-----------------------0x01---000000---|
            |                   |
            |                   |
            ---|             Conditional flag
               v             only restore if set
      |-ip diffserv-|
      | 6 bits      |
      |-------------|
      
      The skb mark restore mode (cpmark):
      
      This mode copies the firewall conntrack mark to the skb's mark field.
      It is completely the functional equivalent of the existing act_connmark
      action with the additional feature of being able to apply a mask to the
      restored value.
      
      Parameters related to skb mark restore mode:
      
      mask - a 32 bit mask applied to the firewall conntrack mark to mask out
      bits unwanted for restoration.  This can be useful where the conntrack
      mark is being used for different purposes by different applications.  If
      not specified and by default the whole mark field is copied (i.e.
      default mask of 0xffffffff)
      
      e.g. mask 0x00ffffff to mask out the top 8 bits being used by the
      aforementioned DSCP restore mode.
      
      |----0x00----conntrack mark----ffffff---|
      | Bits 31-24 |                          |
      | DSCP & flag|      some value here     |
      |---------------------------------------|
      			|
      			|
      			v
      |------------skb mark-------------------|
      |            |                          |
      |  zeroed    |                          |
      |---------------------------------------|
      
      Overall parameters:
      
      zone - conntrack zone
      
      control - action related control (reclassify | pipe | drop | continue |
      ok | goto chain <CHAIN_INDEX>)
      Signed-off-by: NKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
      Reviewed-by: NToke Høiland-Jørgensen <toke@redhat.com>
      Acked-by: NCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      24ec483c
    • H
      r8169: remove 1000/Half from supported modes · a6851c61
      Heiner Kallweit 提交于
      MAC on the GBit versions supports 1000/Full only, however the PHY
      partially claims to support 1000/Half. So let's explicitly remove
      this mode.
      Signed-off-by: NHeiner Kallweit <hkallweit1@gmail.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6851c61
    • J
      net: mscc: ocelot: Implement port policers via tc command · 2c1d029a
      Joergen Andreasen 提交于
      Hardware offload of matchall classifier and police action are now
      supported via the tc command.
      Supported police parameters are: rate and burst.
      
      Example:
      
      Add:
      tc qdisc add dev eth3 handle ffff: ingress
      tc filter add dev eth3 parent ffff: prio 1 handle 2	\
      	matchall skip_sw				\
      	action police rate 100Mbit burst 10000
      
      Show:
      tc -s -d qdisc show dev eth3
      tc -s -d filter show dev eth3 ingress
      
      Delete:
      tc filter del dev eth3 parent ffff: prio 1
      tc qdisc del dev eth3 handle ffff: ingress
      Signed-off-by: NJoergen Andreasen <joergen.andreasen@microchip.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2c1d029a
    • D
      Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · 7da33a8f
      David S. Miller 提交于
      Jeff Kirsher says:
      
      ====================
      100GbE Intel Wired LAN Driver Updates 2019-05-29
      
      This series contains updates to ice driver only.
      
      Bruce cleans up white space issues and fixes complaints about using
      bitop assignments using operands of different sizes.
      
      Anirudh cleans up code that is no longer needed now that the firmware
      supports the functionality.  Adds support for ethtool selftestto the ice
      driver, which includes testing link, interrupts, eeprom, registers and
      packet loopback.  Also, cleaned up duplicate code.
      
      Tony implements support for toggling receive VLAN filter via ethtool.
      
      Brett bumps up the minimum receive descriptor count per queue to resolve
      dropped packets.  Refactored the interrupt tracking for the ice driver
      to resolve issues seen with the co-existence of features and SR-IOV, so
      instead of having a hardware IRQ tracker and a software IRQ tracker,
      simply use one tracker.  Also adds a helper function to trigger software
      interrupts.
      
      Mitch changes how Malicious Driver Detection (MDD) events are handled,
      to ensure all VFs checked for MDD events and just log the event instead
      of disabling the VF, which was preventing proper release of resources if
      the VF is rebooted or the VF driver reloaded.
      
      Dave cleans up a redundant call to register LLDP MIB change events.
      
      Dan adds support to retrieve the current setting of firmware logging
      from the hardware to properly initialize the hardware structure.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7da33a8f
    • Y
      net: stmmac: Fix build error without CONFIG_INET · a3e2f6ad
      YueHaibing 提交于
      Fix gcc build error while CONFIG_INET is not set
      
      drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.o: In function `__stmmac_test_loopback':
      stmmac_selftests.c:(.text+0x8ec): undefined reference to `ip_send_check'
      stmmac_selftests.c:(.text+0xacc): undefined reference to `udp4_hwcsum'
      
      Add CONFIG_INET dependency to fix this.
      Reported-by: NHulk Robot <hulkci@huawei.com>
      Fixes: 091810db ("net: stmmac: Introduce selftests support")
      Signed-off-by: NYueHaibing <yuehaibing@huawei.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a3e2f6ad
    • H
      rhashtable: Add rht_ptr_rcu and improve rht_ptr · 279758f8
      Herbert Xu 提交于
      This patch moves common code between rht_ptr and rht_ptr_exclusive
      into __rht_ptr.  It also adds a new helper rht_ptr_rcu exclusively
      for the RCU case.  This way rht_ptr becomes a lock-only construct
      so we can use the lighter rcu_dereference_protected primitive.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      279758f8