1. 28 Aug, 2023 23 commits
  2. 27 Aug, 2023 13 commits
  3. 26 Aug, 2023 4 commits
    • Jakub Kicinski's avatar
      Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue · b32add2d
      Jakub Kicinski authored
      Tony Nguyen says:
      
      ====================
      Intel Wired LAN Driver Updates 2023-08-24 (igc, e1000e)
      
      This series contains updates to igc and e1000e drivers.
      
      Vinicius adds support for utilizing multiple PTP registers on igc.
      
      Sasha reduces interval time for PTM on igc and adds new device support
      on e1000e.
      
      * '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue:
        e1000e: Add support for the next LOM generation
        igc: Decrease PTM short interval from 10 us to 1 us
        igc: Add support for multiple in-flight TX timestamps
      ====================
      
      Link: https://lore.kernel.org/r/20230824204418.1551093-1-anthony.l.nguyen@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b32add2d
    • Donald Hunter's avatar
      52d08fda
    • Jakub Kicinski's avatar
      tools: ynl-gen: fix uAPI generation after tempfile changes · a02430c0
      Jakub Kicinski authored
      We use a tempfile for code generation, to avoid wiping the target
      file out if the code generator crashes. File contents are copied
      from tempfile to actual destination at the end of main().
      
      uAPI generation is relatively simple so when generating the uAPI
      header we return from main() early, and never reach the "copy code
      over" stage. Since commit under Fixes uAPI headers are not updated
      by ynl-gen.
      
      Move the copy/commit of the code into CodeWriter, to make it
      easier to call at any point in time. Hook it into the destructor
      to make sure we don't miss calling it.
      
      Fixes: f65f305a ("tools: ynl-gen: use temporary file for rendering")
      Link: https://lore.kernel.org/r/20230824212431.1683612-1-kuba@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a02430c0
    • Jakub Kicinski's avatar
      Merge branch 'stmmac-cleanups' · f5e17b47
      Jakub Kicinski authored
      Russell King says:
      
      ====================
      stmmac cleanups
      
      One of the comments I had on Feiyang Chen's series was concerning the
      initialisation of phylink... and so I've decided to do something about
      it, cleaning it up a bit.
      
      This series:
      
      1) adds a new phylink function to limit the MAC capabilities according
         to a maximum speed. This allows us to greatly simplify stmmac's
         initialisation of phylink's mac capabilities.
      
      2) everywhere that uses priv->plat->phylink_node first converts this
         to a fwnode before doing anything with it. This is silly. Let's
         instead store it as a fwnode to eliminate these conversions in
         multiple places.
      
      3) clean up passing the fwnode to phylink - it might as well happen
         at the phylink_create() callsite, rather than being scattered
         throughout the entire function.
      
      4) same for mdio_bus_data
      
      5) use phylink_limit_mac_speed() to handle the priv->plat->max_speed
         restriction.
      
      6) add a method to get the MAC-specific capabilities from the code
         dealing with the MACs, and arrange to call it at an appropriate
         time.
      
      7) convert the gmac4 users to use the MAC specific method.
      
      8) same for xgmac.
      
      9) group all the simple phylink_config initialisations together.
      
      10) convert half-duplex logic to being positive logic.
      
      While looking into all of this, this raised eyebrows:
      
              if (priv->plat->tx_queues_to_use > 1)
                      priv->phylink_config.mac_capabilities &=
                              ~(MAC_10HD | MAC_100HD | MAC_1000HD);
      
      priv->plat->tx_queues_to_use is initialised by platforms to either 1,
      4 or 8, and can be controlled from userspace via the --set-channels
      ethtool op. The implementation of this op in this driver limits the
      number of channels to priv->dma_cap.number_tx_queues, which is derived
      from the DMA hwcap.
      
      So, the obvious questions are:
      
      1) what guarantees that the static initialisation of tx_queues_to_use
      will always be less than or equal to number_tx_queues from the DMA hw
      cap?
      
      2) tx_queues_to_use starts off as 1, but number_tx_queues is larger,
      we will leave the half-duplex capabilities in place, but userspace can
      increase tx_queues_to_use above 1. Does that mean half-duplex is then
      not supported?
      
      3) Should we be basing the decision whether half-duplex is supported
      off the DMA capabilities?
      
      4) What about priv->dma_cap.half_duplex? Doesn't that get a say in
      whether half-duplex is supported or not? Why isn't this used? Why is
      it only reported via debugfs? If it's not being used by the driver,
      what's the point of reporting it via debugfs?
      ====================
      
      Link: https://lore.kernel.org/r/ZOddFH22PWmOmbT5@shell.armlinux.org.ukSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f5e17b47