1. 10 May, 2022 14 commits
    • Wells Lu's avatar
      devicetree: bindings: net: Add bindings doc for Sunplus SP7021. · 0cfeca62
      Wells Lu authored
      Add bindings documentation for Sunplus SP7021 SoC.
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarWells Lu <wellslutw@gmail.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      0cfeca62
    • Paolo Abeni's avatar
      Merge branch 'ptp-support-hardware-clocks-with-additional-free-running-cycle-counter' · 82763453
      Paolo Abeni authored
      Gerhard Engleder says:
      
      ====================
      ptp: Support hardware clocks with additional free running cycle counter
      
      ptp vclocks require a clock with free running time for the timecounter.
      Currently only a physical clock forced to free running is supported.
      If vclocks are used, then the physical clock cannot be synchronized
      anymore. The synchronized time is not available in hardware in this
      case. As a result, timed transmission with TAPRIO hardware support
      is not possible anymore.
      
      If hardware would support a free running time additionally to the
      physical clock, then the physical clock does not need to be forced to
      free running. Thus, the physical clocks can still be synchronized while
      vclocks are in use.
      
      The physical clock could be used to synchronize the time domain of the
      TSN network and trigger TAPRIO. In parallel vclocks can be used to
      synchronize other time domains.
      
      One year ago I thought for two time domains within a TSN network also
      two physical clocks are required. This would lead to new kernel
      interfaces for asking for the second clock, ... . But actually for a
      time triggered system like TSN there can be only one time domain that
      controls the system itself. All other time domains belong to other
      layers, but not to the time triggered system itself. So other time
      domains can be based on a free running counter if similar mechanisms
      like 2 step synchroisation are used.
      
      Synchronisation was tested with two time domains between two directly
      connected hosts. Each host run two ptp4l instances, the first used the
      physical clock and the second used the virtual clock. I used my FPGA
      based network controller as network device. ptp4l was used in
      combination with the virtual clock support patches from Miroslav
      Lichvar.
      
      v4:
      - if_index of 0 is invalid (Jonathan Lemon)
      - set if_index to 0 in the SOF_TIMESTAMPING_RAW_HARDWARE block (Jonathan
        Lemon)
      - add helper function for netdev_get_tstamp() call (Jonathan Lemon)
      - update SKBTX_ANY_TSTAMP (Paolo Abeni)
      - use separate bits for new tx_flags (Richard Cochran)
      
      v3:
      - optimize ptp_convert_timestamp (Richard Cochran)
      - call dev_get_by_napi_id() only if needed (Richard Cochran)
      - use non-negated logical test (Richard Cochran)
      - add comment for skipped output (Richard Cochran)
      - add comment for SKBTX_HW_TSTAMP_USE_CYCLES masking (Richard Cochran)
      
      v2:
      - rename ptp_clock cycles to has_cycles (Richard Cochran)
      - call it free running cycle counter (Richard Cochran)
      - update struct skb_shared_hwtstamps kdoc (Richard Cochran)
      - optimize timestamp address/cookie processing path (Richard Cochran,
        Vinicius Costa Gomes)
      
      v1:
      - complete rework based on suggestions (Richard Cochran)
      ====================
      
      Link: https://lore.kernel.org/r/20220506200142.3329-1-gerhard@engleder-embedded.comSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      82763453
    • Gerhard Engleder's avatar
      tsnep: Add free running cycle counter support · 0abb62b6
      Gerhard Engleder authored
      The TSN endpoint Ethernet MAC supports a free running counter
      additionally to its clock. This free running counter can be read and
      hardware timestamps are supported. As the name implies, this counter
      cannot be set and its frequency cannot be adjusted.
      
      Add free running cycle counter support based on this free running
      counter to physical clock. This also requires hardware time stamps
      based on that free running counter.
      Signed-off-by: default avatarGerhard Engleder <gerhard@engleder-embedded.com>
      Acked-by: default avatarJonathan Lemon <jonathan.lemon@gmail.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      0abb62b6
    • Gerhard Engleder's avatar
      ptp: Speed up vclock lookup · fcf308e5
      Gerhard Engleder authored
      ptp_convert_timestamp() is called in the RX path of network messages.
      The current implementation takes ~5000ns on 1.2GHz A53. This is too much
      for the hot path of packet processing.
      
      Introduce hash table for fast vclock lookup in ptp_convert_timestamp().
      The execution time of ptp_convert_timestamp() is reduced to ~700ns on
      1.2GHz A53.
      Signed-off-by: default avatarGerhard Engleder <gerhard@engleder-embedded.com>
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      fcf308e5
    • Gerhard Engleder's avatar
      ptp: Support late timestamp determination · 97dc7cd9
      Gerhard Engleder authored
      If a physical clock supports a free running cycle counter, then
      timestamps shall be based on this time too. For TX it is known in
      advance before the transmission if a timestamp based on the free running
      cycle counter is needed. For RX it is impossible to know which timestamp
      is needed before the packet is received and assigned to a socket.
      
      Support late timestamp determination by a network device. Therefore, an
      address/cookie is stored within the new netdev_data field of struct
      skb_shared_hwtstamps. This address/cookie is provided to a new network
      device function called ndo_get_tstamp(), which returns a timestamp based
      on the normal/adjustable time or based on the free running cycle
      counter. If function is not supported, then timestamp handling is not
      changed.
      
      This mechanism is intended for RX, but TX use is also possible.
      Signed-off-by: default avatarGerhard Engleder <gerhard@engleder-embedded.com>
      Acked-by: default avatarJonathan Lemon <jonathan.lemon@gmail.com>
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      97dc7cd9
    • Gerhard Engleder's avatar
      ptp: Pass hwtstamp to ptp_convert_timestamp() · d58809d8
      Gerhard Engleder authored
      ptp_convert_timestamp() converts only the timestamp hwtstamp, which is
      a field of the argument with the type struct skb_shared_hwtstamps *. So
      a pointer to the hwtstamp field of this structure is sufficient.
      
      Rework ptp_convert_timestamp() to use an argument of type ktime_t *.
      This allows to add additional timestamp manipulation stages before the
      call of ptp_convert_timestamp().
      Signed-off-by: default avatarGerhard Engleder <gerhard@engleder-embedded.com>
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      d58809d8
    • Gerhard Engleder's avatar
      ptp: Request cycles for TX timestamp · 51eb7492
      Gerhard Engleder authored
      The free running cycle counter of physical clocks called cycles shall be
      used for hardware timestamps to enable synchronisation.
      
      Introduce new flag SKBTX_HW_TSTAMP_USE_CYCLES, which signals driver to
      provide a TX timestamp based on cycles if cycles are supported.
      Signed-off-by: default avatarGerhard Engleder <gerhard@engleder-embedded.com>
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      51eb7492
    • Gerhard Engleder's avatar
      ptp: Add cycles support for virtual clocks · 42704b26
      Gerhard Engleder authored
      ptp vclocks require a free running time for their timecounter.
      Currently only a physical clock forced to free running is supported.
      If vclocks are used, then the physical clock cannot be synchronized
      anymore. The synchronized time is not available in hardware in this
      case. As a result, timed transmission with TAPRIO hardware support
      is not possible anymore.
      
      If hardware would support a free running time additionally to the
      physical clock, then the physical clock does not need to be forced to
      free running. Thus, the physical clocks can still be synchronized
      while vclocks are in use.
      
      The physical clock could be used to synchronize the time domain of the
      TSN network and trigger TAPRIO. In parallel vclocks can be used to
      synchronize other time domains.
      
      Introduce support for a free running cycle counter called cycles to
      physical clocks. Rework ptp vclocks to use this free running cycle
      counter. Default implementation is based on time of physical clock.
      Thus, behavior of ptp vclocks based on physical clocks without free
      running cycle counter is identical to previous behavior.
      Signed-off-by: default avatarGerhard Engleder <gerhard@engleder-embedded.com>
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      42704b26
    • Jakub Kicinski's avatar
      eth: dpaa2-mac: remove a dead-code NULL check on fwnode parent · b3552d6a
      Jakub Kicinski authored
      Since commit 4e30e98c ("dpaa2-mac: return -EPROBE_DEFER from dpaa2_mac_open in case the fwnode is not set")
      @parent can't be NULL after the if. It's either the address
      of the ->fwnode of @dpmacs or @fwnode in case of ACPI.
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Link: https://lore.kernel.org/r/20220506200029.852310-1-kuba@kernel.orgSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      b3552d6a
    • Jakub Kicinski's avatar
      Merge branch 'nfp-support-corigine-pcie-vendor-id' · 9eab75d4
      Jakub Kicinski authored
      Simon Horman says:
      
      ====================
      nfp: support Corigine PCIE vendor ID
      
      Historically the nfp driver has supported NFP chips with Netronome's
      PCIE vendor ID. This patch extends the driver to also support NFP
      chips, which at this point are assumed to be otherwise identical from
      a software perspective, that have Corigine's PCIE vendor ID (0x1da8).
      
      This patchset begins by cleaning up strings to make them:
      * Vendor neutral for the NFP chip
      * Relate to Corigine for the driver itself
      
      It then adds support to the driver for the Corigine's PCIE vendor ID
      ====================
      
      Link: https://lore.kernel.org/r/20220508173816.476357-1-simon.horman@corigine.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      9eab75d4
    • Yu Xiao's avatar
      nfp: support Corigine PCIE vendor ID · 299ba7a3
      Yu Xiao authored
      Historically the nfp driver has supported NFP chips with Netronome's
      PCIE vendor ID. This patch extends the driver to also support NFP
      chips, which at this point are assumed to be otherwise identical from
      a software perspective, that have Corigine's PCIE vendor ID (0x1da8).
      
      Also, Rename the macro definitions PCI_DEVICE_ID_NERTONEOME_NFPXXXX
      to PCI_DEVICE_ID_NFPXXXX, as they are now used in conjunction with two
      PCIE vendor IDs.
      Signed-off-by: default avatarYu Xiao <yu.xiao@corigine.com>
      Signed-off-by: default avatarYinjun Zhang <yinjun.zhang@corigine.com>
      Signed-off-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      299ba7a3
    • Yu Xiao's avatar
      nfp: vendor neutral strings for chip and Corigne in strings for driver · 34e244ea
      Yu Xiao authored
      Historically the nfp driver has supported NFP chips with Netronome's
      PCIE vendor ID. In preparation for extending the to also support NFP
      chips that have Corigine's PCIE vendor ID (0x1da8) make printk statements
      relating to the chip vendor neutral.
      
      An alternate approach is to set the string based on the PCI vendor ID.
      In our judgement this proved to cumbersome so we have taken this simpler
      approach.
      
      Update strings relating to the driver to use Corigine, who have taken
      over maintenance of the driver.
      Signed-off-by: default avatarYu Xiao <yu.xiao@corigine.com>
      Signed-off-by: default avatarYinjun Zhang <yinjun.zhang@corigine.com>
      Signed-off-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      34e244ea
    • Jakub Kicinski's avatar
      Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue · 5bcfeb6e
      Jakub Kicinski authored
      Tony Nguyen says:
      
      ====================
      100GbE Intel Wired LAN Driver Updates 2022-05-06
      
      Marcin Szycik says:
      
      This patchset adds support for systemd defined naming scheme for port
      representors, as well as re-enables displaying PCI bus-info in ethtool.
      
      bus-info information has previously been removed from ethtool for port
      representors, as a workaround for a bug in lshw tool, where the tool would
      sometimes display wrong descriptions for port representors/PF. Now the bug
      has been fixed in lshw tool [1].
      
      Removing the workaround can be considered a regression (user might be
      running an older, unpatched version of lshw) (see [2] for discussion).
      However, calling SET_NETDEV_DEV also produces the same effect as removing
      the workaround, i.e. lshw is able to access PCI bus-info (this time not
      via ethtool, but in some other way) and the bug can occur.
      
      Adding SET_NETDEV_DEV is important, as it greatly improves netdev naming -
      - port representors are named based on PF name. Currently port representors
      are named "ethX", which might be confusing, especially when spawning VFs on
      multiple PFs. Furthermore, it's currently harder to determine to which PF
      does a particular port representor belong, as bus-info is not shown in
      ethtool.
      
      Consider the following three cases:
      
      Case 1: current code - driver workaround in place, no SET_NETDEV_DEV,
      lshw with or without fix. Port representors are not displayed because they
      don't have bus-info (the workaround), PFs are labelled correctly:
      
      $ sudo ./lshw -c net -businfo
      Bus info          Device      Class          Description
      ========================================================
      pci@0000:02:00.0  ens6f0      network        Ethernet Controller E810-XXV for SFP <-- PF
      pci@0000:02:00.1  ens6f1      network        Ethernet Controller E810-XXV for SFP
      pci@0000:02:01.0  ens6f0v0    network        Ethernet Adaptive Virtual Function <-- VF
      pci@0000:02:01.1  ens6f0v1    network        Ethernet Adaptive Virtual Function
      ...
      
      Case 2: driver workaround in place, SET_NETDEV_DEV, no lshw fix. Port
      representors have predictable names. lshw is able to get bus-info because
      of SET_NETDEV_DEV and netdevs CAN be mislabelled:
      
      $ sudo ./lshw -c net -businfo
      Bus info          Device           Class          Description
      =============================================================
      pci@0000:02:00.0  ens6f0npf0vf60   network        Ethernet Controller E810-XXV for SFP <-- mislabeled port representor
      pci@0000:02:00.1  ens6f1           network        Ethernet Controller E810-XXV for SFP
      pci@0000:02:01.0  ens6f0v0         network        Ethernet Adaptive Virtual Function
      pci@0000:02:01.1  ens6f0v1         network        Ethernet Adaptive Virtual Function
      ...
      pci@0000:02:00.0  ens6f0npf0vf26   network        Ethernet interface
      pci@0000:02:00.0  ens6f0           network        Ethernet interface <-- mislabeled PF
      pci@0000:02:00.0  ens6f0npf0vf81   network        Ethernet interface
      ...
      $ sudo ethtool -i ens6f0npf0vf60
      driver: ice
      ...
      bus-info:
      ...
      
      Output of lshw would be the same with workaround removed; it does not
      change the fact that lshw labels netdevs incorrectly, while at the same
      time it prevents ethtool from displaying potentially useful data
      (bus-info).
      
      Case 3: workaround removed, SET_NETDEV_DEV, lshw fix:
      
      $ sudo ./lshw -c net -businfo
      Bus info          Device           Class          Description
      =============================================================
      pci@0000:02:00.0  ens6f0npf0vf73   network        Ethernet Controller E810-XXV for SFP
      pci@0000:02:00.1  ens6f1           network        Ethernet Controller E810-XXV for SFP
      pci@0000:02:01.0  ens6f0v0         network        Ethernet Adaptive Virtual Function
      pci@0000:02:01.1  ens6f0v1         network        Ethernet Adaptive Virtual Function
      ...
      pci@0000:02:00.0  ens6f0npf0vf5    network        Ethernet Controller E810-XXV for SFP
      pci@0000:02:00.0  ens6f0           network        Ethernet Controller E810-XXV for SFP
      pci@0000:02:00.0  ens6f0npf0vf60   network        Ethernet Controller E810-XXV for SFP
      ...
      $ sudo ethtool -i ens6f0npf0vf73
      driver: ice
      ...
      bus-info: 0000:02:00.0
      ...
      
      In this case poort representors have predictable names, netdevs are not
      mislabelled in lshw, and bus-info is shown in ethtool.
      
      [1] https://ezix.org/src/pkg/lshw/commit/9bf4e4c9c1
      [2] https://patchwork.ozlabs.org/project/intel-wired-lan/patch/20220321144731.3935-1-marcin.szycik@linux.intel.com
      
      * '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue:
        Revert "ice: Hide bus-info in ethtool for PRs in switchdev mode"
        ice: link representors to PCI device
      ====================
      
      Link: https://lore.kernel.org/r/20220506180052.5256-1-anthony.l.nguyen@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      5bcfeb6e
    • Jiapeng Chong's avatar
      ROSE: Remove unused code and clean up some inconsistent indenting · eef0dc7e
      Jiapeng Chong authored
      Eliminate the follow smatch warning:
      
      net/rose/rose_route.c:1136 rose_node_show() warn: inconsistent
      indenting.
      Reported-by: default avatarAbaci Robot <abaci@linux.alibaba.com>
      Signed-off-by: default avatarJiapeng Chong <jiapeng.chong@linux.alibaba.com>
      Link: https://lore.kernel.org/r/20220507034207.18651-1-jiapeng.chong@linux.alibaba.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      eef0dc7e
  2. 09 May, 2022 26 commits
    • David S. Miller's avatar
      Merge branch 'hns3-next' · 9c095bd0
      David S. Miller authored
      Guangbin Huang says:
      
      ====================
      net: hns3: updates for -next
      
      This series includes some updates for the HNS3 ethernet driver.
      
      Change logs:
      V1 -> V2:
       - Fix some sparse warnings of patch 3# and 4#.
       - Add patch #6 to fix sparse warnings of incorrect type of argument.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9c095bd0
    • Guangbin Huang's avatar
      net: hns3: fix incorrect type of argument in declaration of function hclge_comm_get_rss_indir_tbl · 443edfd6
      Guangbin Huang authored
      The argument rss_ind_tbl_size is type u16 in function definition of
      hclge_comm_get_rss_indir_tbl(), but it is set to type __le16 in function
      declaration by mistake, so fix it.
      Signed-off-by: default avatarGuangbin Huang <huangguangbin2@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      443edfd6
    • Guangbin Huang's avatar
      net: hns3: add query vf ring and vector map relation · a1aed456
      Guangbin Huang authored
      This patch adds a new mailbox opcode to query map relation between
      vf ring and vector.
      Signed-off-by: default avatarGuangbin Huang <huangguangbin2@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a1aed456
    • Jie Wang's avatar
      net: hns3: add byte order conversion for VF to PF mailbox message · 416eedb6
      Jie Wang authored
      This patch uses __le16/__32 to define mailbox data structures. Then byte
      order conversion are added for mailbox messages from VF to PF.
      Signed-off-by: default avatarJie Wang <wangjie125@huawei.com>
      Signed-off-by: default avatarGuangbin Huang <huangguangbin2@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      416eedb6
    • Jie Wang's avatar
      net: hns3: add byte order conversion for PF to VF mailbox message · 767975e5
      Jie Wang authored
      Currently, hns3 mailbox processing between PF and VF missed to convert
      message byte order and use data type u16 instead of __le16 for mailbox
      data process. These processes may cause problems between different
      architectures.
      
      So this patch uses __le16/__le32 data type to define mailbox data
      structures. To be compatible with old hns3 driver, these structures use
      one-byte alignment. Then byte order conversions are added to mailbox
      messages from PF to VF.
      Signed-off-by: default avatarJie Wang <wangjie125@huawei.com>
      Signed-off-by: default avatarGuangbin Huang <huangguangbin2@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      767975e5
    • Yufeng Mo's avatar
      net: hns3: remove the affinity settings of vector0 · bbed7024
      Yufeng Mo authored
      Vector0 is used for common interrupt control events and is
      irrelevant to performance. Currently, the driver sets the
      default affinity of vector0 to NUMA nodes, which is unnecessary.
      Therefore, the default setting is removed, and the driver does
      not set the affinity for vector0.
      Signed-off-by: default avatarYufeng Mo <moyufeng@huawei.com>
      Signed-off-by: default avatarGuangbin Huang <huangguangbin2@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bbed7024
    • Hao Chen's avatar
      net: hns3: fix access null pointer issue when set tx-buf-size as 0 · a4fe9b6d
      Hao Chen authored
      When set tx-buf-size as 0 by ethtool, hns3_init_tx_spare_buffer()
      will return directly and priv->ring->tx_spare->len is uninitialized,
      then print function access priv->ring->tx_spare->len will cause
      this issue.
      
      When set tx-buf-size as 0 by ethtool, the print function will
      print 0 directly and not access priv->ring->tx_spare->len.
      
      Fixes: 2373b35c ("net: hns3: add log for setting tx spare buf size")
      Signed-off-by: default avatarHao Chen <chenhao288@hisilicon.com>
      Signed-off-by: default avatarGuangbin Huang <huangguangbin2@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a4fe9b6d
    • David S. Miller's avatar
      Merge branch 'lan8742-phy' · 1728c056
      David S. Miller authored
      Yuiko Oshino says:
      
      ====================
      net: phy: add LAN8742 phy support
      
      add LAN8742 phy support
      update LAN88xx phy ID and phy ID mask so that it can coexist with LAN8742
      
      The current phy IDs on the available hardware.
          LAN8742 0x0007C130, 0x0007C131
          LAN88xx 0x0007C132
      
      v3->v4:
      - fixed the one tab missing issue in the smsc.c.
      
      v2->v3:
      -added comments about the 0xfffffff2 mask that is for the differentiation and the future revisions.
      
      v1->v2:
      -removed "REVIEW REQUEST3" from the PATCH 1/2.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1728c056
    • Yuiko Oshino's avatar
      net: phy: smsc: add LAN8742 phy support. · 53ad2286
      Yuiko Oshino authored
      The current phy IDs on the available hardware.
              LAN8742 0x0007C130, 0x0007C131
      Signed-off-by: default avatarYuiko Oshino <yuiko.oshino@microchip.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      53ad2286
    • Yuiko Oshino's avatar
      net: phy: microchip: update LAN88xx phy ID and phy ID mask. · e078286a
      Yuiko Oshino authored
      update LAN88xx phy ID and phy ID mask because the existing code conflicts with the LAN8742 phy.
      
      The current phy IDs on the available hardware.
              LAN8742 0x0007C130, 0x0007C131
              LAN88xx 0x0007C132
      Signed-off-by: default avatarYuiko Oshino <yuiko.oshino@microchip.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e078286a
    • David S. Miller's avatar
      Merge branch 'add-ti-dp83td510-support' · 613707eb
      David S. Miller authored
      Oleksij Rempel says:
      
      ====================
      add ti dp83td510 support
      
      changes v4:
      - dp83td510: remove unused variables
      - s/base1/baset1
      - s/genphy_c45_baset1_read_master_slave/genphy_c45_pma_baset1_read_master_slave
      
      changes v3:
      - export reusable code snippets and make use of it in the dp83td510
        driver
      
      changes v2:
      - rewrite the driver reduce usage of common code and to reduce amount of
        quirks.
      - add genphy_c45_baset1_an_config_aneg fix
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      613707eb
    • Oleksij Rempel's avatar
      net: phy: dp83td510: Add support for the DP83TD510 Ethernet PHY · 165cd04f
      Oleksij Rempel authored
      The DP83TD510E is an ultra-low power Ethernet physical layer transceiver
      that supports 10M single pair cable.
      
      This driver was tested with NXP SJA1105, STMMAC and ASIX AX88772B USB Ethernet
      controller.
      Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      165cd04f
    • Oleksij Rempel's avatar
      net: phy: export genphy_c45_baset1_read_status() · 2013ad88
      Oleksij Rempel authored
      Export genphy_c45_baset1_read_status() to make it reusable by PHY drivers.
      Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2013ad88
    • Oleksij Rempel's avatar
      net: phy: genphy_c45_pma_baset1_read_master_slave: read actual configuration · acb8c5ae
      Oleksij Rempel authored
      Since MDIO_PMA_PMD_BT1_CTRL register shows actual configuration (and
      forced state configuration is equal to the state), we should show
      this configuration for ethtool.
      Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      acb8c5ae
    • Oleksij Rempel's avatar
      net: phy: introduce genphy_c45_pma_baset1_read_master_slave() · b9a366f3
      Oleksij Rempel authored
      Move baset1 specific part of genphy_c45_read_pma() code to
      separate function to make it reusable by PHY drivers.
      Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b9a366f3
    • Oleksij Rempel's avatar
      net: phy: genphy_c45_pma_baset1_setup_master_slave: do no set unknown configuration · a04dd88f
      Oleksij Rempel authored
      Do not change default master/slave forced configuration if no changes was
      requested.
      Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a04dd88f
    • Oleksij Rempel's avatar
      net: phy: introduce genphy_c45_pma_baset1_setup_master_slave() · 90532850
      Oleksij Rempel authored
      Move baset1 specific part of genphy_c45_pma_setup_forced() code to
      separate function to make it reusable by PHY drivers.
      Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      90532850
    • Oleksij Rempel's avatar
      net: phy: genphy_c45_baset1_an_config_aneg: do no set unknown configuration · a7f0e4be
      Oleksij Rempel authored
      Do not change default master/slave autoneg configuration if no
      changes was requested.
      
      Fixes: 3da8ffd8 ("net: phy: Add 10BASE-T1L support in phy-c45")
      Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a7f0e4be
    • David S. Miller's avatar
      Merge branch 'vxlan_fdb_delete-extack' · 5dd6da25
      David S. Miller authored
      Alaa Mohamed says:
      
      ====================
      propagate extack to vxlan_fdb_delete
      
      In order to propagate extack to vxlan_fdb_delete and vxlan_fdb_parse,
      add extack to .ndo_fdb_del and edit all fdb del handelers.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5dd6da25
    • Alaa Mohamed's avatar
      net: vxlan: Add extack support to vxlan_fdb_delete · e92695e5
      Alaa Mohamed authored
      This patch adds extack msg support to vxlan_fdb_delete and vxlan_fdb_parse.
      extack is used to propagate meaningful error msgs to the user of vxlan
      fdb netlink api
      Signed-off-by: default avatarAlaa Mohamed <eng.alaamohamedsoliman.am@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e92695e5
    • Alaa Mohamed's avatar
      rtnetlink: add extack support in fdb del handlers · ca4567f1
      Alaa Mohamed authored
      Add extack support to .ndo_fdb_del in netdevice.h and
      all related methods.
      Signed-off-by: default avatarAlaa Mohamed <eng.alaamohamedsoliman.am@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ca4567f1
    • David S. Miller's avatar
      Merge branch 'wwan-t7xx' · 6da3c472
      David S. Miller authored
      Ricardo Martinez says:
      
      ====================
      net: wwan: t7xx: PCIe driver for MediaTek M.2 modem
      
      t7xx is the PCIe host device driver for Intel 5G 5000 M.2 solution which
      is based on MediaTek's T700 modem to provide WWAN connectivity.
      The driver uses the WWAN framework infrastructure to create the following
      control ports and network interfaces:
      * /dev/wwan0mbim0 - Interface conforming to the MBIM protocol.
        Applications like libmbim [1] or Modem Manager [2] from v1.16 onwards
        with [3][4] can use it to enable data communication towards WWAN.
      * /dev/wwan0at0 - Interface that supports AT commands.
      * wwan0 - Primary network interface for IP traffic.
      
      The main blocks in t7xx driver are:
      * PCIe layer - Implements probe, removal, and power management callbacks.
      * Port-proxy - Provides a common interface to interact with different types
        of ports such as WWAN ports.
      * Modem control & status monitor - Implements the entry point for modem
        initialization, reset and exit, as well as exception handling.
      * CLDMA (Control Layer DMA) - Manages the HW used by the port layer to send
        control messages to the modem using MediaTek's CCCI (Cross-Core
        Communication Interface) protocol.
      * DPMAIF (Data Plane Modem AP Interface) - Controls the HW that provides
        uplink and downlink queues for the data path. The data exchange takes
        place using circular buffers to share data buffer addresses and metadata
        to describe the packets.
      * MHCCIF (Modem Host Cross-Core Interface) - Provides interrupt channels
        for bidirectional event notification such as handshake, exception, PM and
        port enumeration.
      
      The compilation of the t7xx driver is enabled by the CONFIG_MTK_T7XX config
      option which depends on CONFIG_WWAN.
      This driver was originally developed by MediaTek. Intel adapted t7xx to
      the WWAN framework, optimized and refactored the driver source code in close
      collaboration with MediaTek. This will enable getting the t7xx driver on the
      Approved Vendor List for interested OEM's and ODM's productization plans
      with Intel 5G 5000 M.2 solution.
      
      List of contributors:
      Amir Hanania <amir.hanania@intel.com>
      Andriy Shevchenko <andriy.shevchenko@linux.intel.com>
      Chandrashekar Devegowda <chandrashekar.devegowda@intel.com>
      Dinesh Sharma <dinesh.sharma@intel.com>
      Eliot Lee <eliot.lee@intel.com>
      Haijun Liu <haijun.liu@mediatek.com>
      M Chetan Kumar <m.chetan.kumar@intel.com>
      Mika Westerberg <mika.westerberg@linux.intel.com>
      Moises Veleta <moises.veleta@intel.com>
      Pierre-louis Bossart <pierre-louis.bossart@intel.com>
      Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
      Ricardo Martinez <ricardo.martinez@linux.intel.com>
      Madhusmita Sahu <madhusmita.sahu@intel.com>
      Muralidharan Sethuraman <muralidharan.sethuraman@intel.com>
      Soumya Prakash Mishra <Soumya.Prakash.Mishra@intel.com>
      Sreehari Kancharla <sreehari.kancharla@intel.com>
      Suresh Nagaraj <suresh.nagaraj@intel.com>
      
      [1] https://www.freedesktop.org/software/libmbim/
      [2] https://www.freedesktop.org/software/ModemManager/
      [3] https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/582
      [4] https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/523
      
      V8:
      - Rebase skb_data_area_size() patch (02).
      
      V7:
      - Delete unused macros.
      - Avoid duplicated calls to le32_to_cpu().
      - Fix 'out of bounds' compilation error.
      - Rename port_number to port_count.
      - Remove '!!' when the destination variable is a boolean.
      - Remove unneeded spinlock around rx_length_th.
      - Remove common field from union inside dpmaif_drb struct.
      - Use 'goto' for the exit flow in t7xx_pci_enable_sleep().
      - Merge CLDMA tgpd and rgpd structs.
      - Add comments to clarify skb consumption by ports.
      - Introduce skb_data_area_size() helper.
      - Declare the port config array as constant.
      - Update CLDMA_JUMBO_BUFF_SZ definition when ccci_header
        is introduced by port-proxy patch.
      - Update Reviewed-by tags.
      - Simplify t7xx_dpmaif_tx_send_skb() and make t7xx_dpmaif_add_skb_to_ring()
        report the tx queue full state early.
      
      V6:
      - Remove unneeded initializations and bit masks.
      - Remove t7xx_common.h file.
      - Add comment to circular linking in GPD list.
      - Use min instead of min_t.
      - Use int for local indexes instead of short or char.
      - Update the commit message in CLDMA patch about dependencies on core patch.
      - Add space between contributor name and email address.
      - Rename registers with double negatives
        e.g. DIS_ASPM_LOWPWR_CLR_0 -> ENABLE_ASPM_LOWPWR.
      - Fix a race condition in pci sleep resource locking.
      - Initialize interrupts with t7xx_pcie_mac_set_int() instead of 'clear'.
      - Remove duplicate spin_lock_init(&md->exp_lock).
      - Remove .ndo_select_queue callback due to singular TX queue.
      - Remove call to deprecated netif_rx_any_context().
      - Fix include guard name in t7xx_hif_dpmaif.h.
      - Remove unused q_num parameter in DPMAIF functions.
      - Do not serialize the drb_wr_idx write in t7xx_dpmaif_add_skb_to_ring()
        and the read from t7xx_txq_drb_wr_available().
      - Fix potential leak in t7xx_dpmaif_add_skb_to_ring().
      - Unionize:
          DRB structs: msg and pd.
          PIT structs: msg and pd.
      - Replace list_head & spinlock with skb_buff_head in dpmaif_tx_queue.
      - Remove rx_length_th check in TX WWAN port flow.
      - Remove wwan_remove_port() from the critical section in WWAN port uninit.
      - Use skb_end_pointer() to avoid conditional compilation.
      - Simplify the loop in t7xx_port_ctrl_tx() by checking the buffer offset
        instead of calculating the number of required packets.
      - Remove the code for unused channel PORT_CH_STATUS_RX.
      - Remove bit flags from ports. Ports can check chan_enable instead of the
        PORT_F_RX_ALLOW_DROP flag.
      - Use INVALID_SEQ_NUM to identify the first seq number.
      - Rename port_static to port_conf and ports_private to ports.
      - Implement t7xx_port_send_skb() and t7xx_port_send_ctl_skb() in a layered
        approach to reduce duplicated code and simplify the CCCI header handling.
      - Move wwan_port_rx() call from port-proxy to WWAN port.
      - Rename t7xx_port_recv_skb() to t7xx_port_enqueue_skb().
      - Move control message parsing logic from port-proxy to control port,
        preserve the endianness when parsing the message and make port-proxy
        export a function to enable/disable ports.
      - Use flexible arrays for:
          port-proxy ports.
          payload data in t7xx_fsm_event, port_msg, and mtk_runtime_feature.
      
      v5:
      - Update Intel's copyright years to 2021-2022.
      - Remove circular dependency between DPMAIF HW (07) and HIF (08).
      - Keep separate patches for CLDMA (02) and Core (03)
        but improve the code split by decoupling CLDMA from
        modem ops and cleaning up t7xx_common.h.
      - Rename ID_CLDMA0/ID_CLDMA1 to CLDMA_ID_AP/CLDMA_ID_MD.
      - Consistently use CLDMA's ring_lock to protect tr_ring.
      - Free resources first and then print messages.
      - Implement suggested name changes.
      - Do not explicitly include dev_printk.h.
      - Remove redundant dev_err()s.
      - Fix possible memory leak during probe.
      - Remove infrastructure for legacy interrupts.
      - Remove unused macros and variables, including those that
        can be replaced with constants.
      - Remove PCIE_MAC_MSIX_MSK_SET macro which is duplicated code.
      - Refactor __t7xx_pci_pm_suspend() for clarity.
      - Refactor t7xx_cldma_rx_ring_init() and t7xx_cldma_tx_ring_init().
      - Do not use & for function callbacks.
      - Declare a structure to access skb->cb[] data.
      - Use skb_put_data instead of memcpy.
      - No need to use kfree_sensitive.
      - Use dev_kfree_skb() instead of kfree_skb().
      - Refactor t7xx_prepare_device_rt_data() to remove potential leaks,
        avoid unneeded memset and keep rt_data and packet_size updates
        inside the same 'if' block.
      - Set port's rx_length_th back to 0 during uninit.
      - Remove unneeded 'blocking' parameter from t7xx_cldma_send_skb().
      - Return -EIO in t7xx_cldma_send_skb() if the queue is inactive.
      - Refactor t7xx_cldma_qs_are_active() to use pci_device_is_present().
      - Simplify t7xx_cldma_stop_q() and rename it to t7xx_cldma_stop_all_qs().
      - Fix potential leaks in t7xx_cldma_init().
      - Improve error handling in fsm_append_event and fsm_routine_starting().
      - Propagate return codes from fsm_append_cmd() and t7xx_fsm_append_event().
      - Refactor fsm_wait_for_event() to avoid unnecessary sleep.
      - Create the WWAN ports and net device only after the modem is in
        the ready state.
      - Refactor t7xx_port_proxy_recv_skb() and port_recv_skb().
      - Rename t7xx_port_check_rx_seq_num() as t7xx_port_next_rx_seq_num()
        and fix the seq_num logic to handle overflows.
      - Declare seq_nums as u16 instead of short.
      - Use unsigned int for local indexes.
      - Use min_t instead of the ternary operator.
      - Refactor the loop in t7xx_dpmaif_rx_data_collect() to avoid a dead
        condition check.
      - Use a bitmap (bat_bitmap) instead of an array to keep track of
        the DRB status. Used in t7xx_dpmaif_avail_pkt_bat_cnt().
      - Refactor t7xx_dpmaif_tx_send_skb() to protect tx_submit_skb_cnt
        with spinlock and remove the misleading tx_drb_available variable.
      - Consolidate bit operations before endianness conversion.
      - Use C bit fields in dpmaif_drb_skb struct which is not HW related.
      - Add back the que_started check in t7xx_select_tx_queue().
      - Create a helper function to get the DRB count.
      - Simplify the use of 'usage' during t7xx_ccmni_close().
      - Enforce CCMNI MTU selection with BUILD_BUG_ON() instead of a comment.
      - Remove t7xx_ccmni_ctrl->capability parameter which remains constant.
      
      v4:
      - Implement list_prev_entry_circular() and list_next_entry_circular() macros.
      - Remove inline from all c files.
      - Define ioread32_poll_timeout_atomic() helper macro.
      - Fix return code for WWAN port tx op.
      - Allow AT commands fragmentation same as MBIM commands.
      - Introduce t7xx_common.h file in the first patch.
      - Rename functions and variables as suggested in v3.
      - Reduce code duplication by creating fsm_wait_for_event() helper function.
      - Remove unneeded dev_err in t7xx_fsm_clr_event().
      - Remove unused variable last_state from struct t7xx_fsm_ctl.
      - Remove unused variable txq_select_times from struct dpmaif_ctrl.
      - Replace ETXTBSY with EBUSY.
      - Refactor t7xx_dpmaif_rx_buf_alloc() to remove an unneeded allocation.
      - Fix potential leak at t7xx_dpmaif_rx_frag_alloc().
      - Simplify return value handling at t7xx_dpmaif_rx_start().
      - Add a helper to handle the common part of CCCI header initialization.
      - Make sure interrupts are enabled during PM resume.
      - Add a parameter to t7xx_fsm_append_cmd() to tell if it is in interrupt context.
      
      v3:
      - Avoid unneeded ping-pong changes between patches.
      - Use t7xx_ prefix in functions.
      - Use t7xx_ prefix in generic structs where mtk_ or ccci prefix was used.
      - Update Authors/Contributors header.
      - Remove skb pools used for control path.
      - Remove skb pools used for RX data path.
      - Do not use dedicated TX queue for ACK-only packets.
      - Remove __packed attribute from GPD structs.
      - Remove the infrastructure for test and debug ports.
      - Use the skb control buffer to store metadata.
      - Get the IP packet type from RX PIT.
      - Merge variable declaration and simple assignments.
      - Use preferred coding patterns.
      - Remove global variables.
      - Declare HW facing structure members as little endian.
      - Rename goto tags to describe what is going to be done.
      - Do not use variable length arrays.
      - Remove unneeded blank lines source code and kdoc headers.
      - Use C99 initialization format for port-proxy ports.
      - Clean up comments.
      - Review included headers.
      - Better use of 100 column limit.
      - Remove unneeded mb() in CLDMA.
      - Remove unneeded spin locks and atomics.
      - Handle read_poll_timeout error.
      - Use dev_err_ratelimited() where required.
      - Fix resource leak when requesting IRQs.
      - Use generic DEFAULT_TX_QUEUE_LEN instead custom macro.
      - Use ETH_DATA_LEN instead of defining WWAN_DEFAULT_MTU.
      - Use sizeof() instead of defines when the size of structures is required.
      - Remove unneeded code from netdev:
          No need to configure HW address length
          No need to implement .ndo_change_mtu
          Remove random address generation
      - Code simplifications by using kernel provided functions and macros such as:
          module_pci_driver
          PTR_ERR_OR_ZERO
          for_each_set_bit
          pci_device_is_present
          skb_queue_purge
          list_prev_entry
          __ffs64
      
      v2:
      - Replace pdev->driver->name with dev_driver_string(&pdev->dev).
      - Replace random_ether_addr() with eth_random_addr().
      - Update kernel-doc comment for enum data_policy.
      - Indicate the driver is 'Supported' instead of 'Maintained'.
      - Fix the Signed-of-by and Co-developed-by tags in the patches.
      - Added authors and contributors in the top comment of the src files.
      ====================
      6da3c472
    • Ricardo Martinez's avatar
      net: wwan: t7xx: Add maintainers and documentation · c9933d49
      Ricardo Martinez authored
      Adds maintainers and documentation for MediaTek t7xx 5G WWAN modem
      device driver.
      Signed-off-by: default avatarRicardo Martinez <ricardo.martinez@linux.intel.com>
      Reviewed-by: default avatarLoic Poulain <loic.poulain@linaro.org>
      Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
      Reviewed-by: default avatarSergey Ryazanov <ryazanov.s.a@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c9933d49
    • Haijun Liu's avatar
      net: wwan: t7xx: Device deep sleep lock/unlock · de49ea38
      Haijun Liu authored
      Introduce the mechanism to lock/unlock the device 'deep sleep' mode.
      When the PCIe link state is L1.2 or L2, the host side still can keep
      the device is in D0 state from the host side point of view. At the same
      time, if the device's 'deep sleep' mode is unlocked, the device will
      go to 'deep sleep' while it is still in D0 state on the host side.
      Signed-off-by: default avatarHaijun Liu <haijun.liu@mediatek.com>
      Signed-off-by: default avatarChandrashekar Devegowda <chandrashekar.devegowda@intel.com>
      Co-developed-by: default avatarRicardo Martinez <ricardo.martinez@linux.intel.com>
      Signed-off-by: default avatarRicardo Martinez <ricardo.martinez@linux.intel.com>
      Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      de49ea38
    • Haijun Liu's avatar
      net: wwan: t7xx: Runtime PM · d10b3a69
      Haijun Liu authored
      Enables runtime power management callbacks including runtime_suspend
      and runtime_resume. Autosuspend is used to prevent overhead by frequent
      wake-ups.
      Signed-off-by: default avatarHaijun Liu <haijun.liu@mediatek.com>
      Signed-off-by: default avatarChandrashekar Devegowda <chandrashekar.devegowda@intel.com>
      Co-developed-by: default avatarEliot Lee <eliot.lee@intel.com>
      Signed-off-by: default avatarEliot Lee <eliot.lee@intel.com>
      Signed-off-by: default avatarRicardo Martinez <ricardo.martinez@linux.intel.com>
      Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d10b3a69
    • Haijun Liu's avatar
      net: wwan: t7xx: Introduce power management · 46e8f49e
      Haijun Liu authored
      Implements suspend, resumes, freeze, thaw, poweroff, and restore
      `dev_pm_ops` callbacks.
      
      From the host point of view, the t7xx driver is one entity. But, the
      device has several modules that need to be addressed in different ways
      during power management (PM) flows.
      The driver uses the term 'PM entities' to refer to the 2 DPMA and
      2 CLDMA HW blocks that need to be managed during PM flows.
      When a dev_pm_ops function is called, the PM entities list is iterated
      and the matching function is called for each entry in the list.
      Signed-off-by: default avatarHaijun Liu <haijun.liu@mediatek.com>
      Signed-off-by: default avatarChandrashekar Devegowda <chandrashekar.devegowda@intel.com>
      Co-developed-by: default avatarRicardo Martinez <ricardo.martinez@linux.intel.com>
      Signed-off-by: default avatarRicardo Martinez <ricardo.martinez@linux.intel.com>
      Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      46e8f49e