]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorJakub Kicinski <kuba@kernel.org>
Fri, 6 Sep 2024 03:27:09 +0000 (20:27 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 6 Sep 2024 03:37:20 +0000 (20:37 -0700)
Cross-merge networking fixes after downstream PR.

Conflicts:

drivers/net/phy/phy_device.c
  2560db6ede1a ("net: phy: Fix missing of_node_put() for leds")
  1dce520abd46 ("net: phy: Use for_each_available_child_of_node_scoped()")
https://lore.kernel.org/20240904115823.74333648@canb.auug.org.au

Adjacent changes:

drivers/net/ethernet/xilinx/xilinx_axienet.h
drivers/net/ethernet/xilinx/xilinx_axienet_main.c
  858430db28a5 ("net: xilinx: axienet: Fix race in axienet_stop")
  76abb5d675c4 ("net: xilinx: axienet: Add statistics support")

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
16 files changed:
1  2 
MAINTAINERS
drivers/net/bareudp.c
drivers/net/can/kvaser_pciefd.c
drivers/net/dsa/vitesse-vsc73xx-core.c
drivers/net/ethernet/intel/igc/igc_main.c
drivers/net/ethernet/microsoft/mana/mana_en.c
drivers/net/ethernet/ti/am65-cpsw-nuss.c
drivers/net/ethernet/xilinx/xilinx_axienet.h
drivers/net/ethernet/xilinx/xilinx_axienet_main.c
drivers/net/phy/phy_device.c
drivers/net/wireless/ath/ath11k/core.h
drivers/net/wireless/ath/ath11k/mac.c
include/net/mana/mana.h
net/core/net-sysfs.c
rust/kernel/net/phy.rs
tools/testing/selftests/net/Makefile

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
index c301dd2ee083966e9058038c1e1a28a79df18c64,1223fcc1a8daee16e1399bb293298ba326d663d8..43d81b40f76186e2b6b60c873c627aa089c44a35
@@@ -505,17 -435,9 +505,19 @@@ struct skbuf_dma_descriptor 
   * @tx_packets: TX packet count for statistics
   * @tx_bytes: TX byte count for statistics
   * @tx_stat_sync: Synchronization object for TX stats
 + * @hw_stat_base: Base offset for statistics counters. This may be nonzero if
 + *                the statistics counteres were reset or wrapped around.
 + * @hw_last_counter: Last-seen value of each statistic counter
 + * @reset_in_progress: Set while we are performing a reset and statistics
 + *                     counters may be invalid
 + * @hw_stats_seqcount: Sequence counter for @hw_stat_base, @hw_last_counter,
 + *                     and @reset_in_progress.
 + * @stats_lock: Lock for @hw_stats_seqcount
 + * @stats_work: Work for reading the hardware statistics counters often enough
 + *              to catch overflows.
   * @dma_err_task: Work structure to process Axi DMA errors
+  * @stopping:   Set when @dma_err_task shouldn't do anything because we are
+  *              about to stop the device.
   * @tx_irq:   Axidma TX IRQ number
   * @rx_irq:   Axidma RX IRQ number
   * @eth_irq:  Ethernet core IRQ number
@@@ -586,14 -508,8 +588,15 @@@ struct axienet_local 
        u64_stats_t tx_bytes;
        struct u64_stats_sync tx_stat_sync;
  
 +      u64 hw_stat_base[STAT_COUNT];
 +      u32 hw_last_counter[STAT_COUNT];
 +      seqcount_mutex_t hw_stats_seqcount;
 +      struct mutex stats_lock;
 +      struct delayed_work stats_work;
 +      bool reset_in_progress;
 +
        struct work_struct dma_err_task;
+       bool stopping;
  
        int tx_irq;
        int rx_irq;
index fe6a0e2e463f8039b1f510bf8b33c6c3c3ae2603,9eb300fc359096f9fe48993bd5694189c1c95373..374dff70ef0dbf59f400a9591b955c5064d8beb3
@@@ -1641,7 -1578,12 +1642,10 @@@ static int axienet_stop(struct net_devi
        struct axienet_local *lp = netdev_priv(ndev);
        int i;
  
 -      dev_dbg(&ndev->dev, "axienet_close()\n");
 -
        if (!lp->use_dmaengine) {
+               WRITE_ONCE(lp->stopping, true);
+               flush_work(&lp->dma_err_task);
                napi_disable(&lp->napi_tx);
                napi_disable(&lp->napi_rx);
        }
index 7c4a09455493c18c0feaafb0049f6b34bc36cca4,6bb2793de0a94a9076debe04254fc4aefd235e6d..560e338b307a40988e2b35962471152690fbaf1b
@@@ -3420,9 -3343,11 +3420,10 @@@ static int of_phy_leds(struct phy_devic
        if (!leds)
                return 0;
  
 -      for_each_available_child_of_node(leds, led) {
 +      for_each_available_child_of_node_scoped(leds, led) {
                err = of_phy_led(phydev, led);
                if (err) {
 -                      of_node_put(led);
+                       of_node_put(leds);
                        phy_leds_unregister(phydev);
                        return err;
                }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge