Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorJakub Kicinski <kuba@kernel.org>
Fri, 20 Jan 2023 20:28:23 +0000 (12:28 -0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 20 Jan 2023 20:28:23 +0000 (12:28 -0800)
drivers/net/ipa/ipa_interrupt.c
drivers/net/ipa/ipa_interrupt.h
  9ec9b2a30853 ("net: ipa: disable ipa interrupt during suspend")
  8e461e1f092b ("net: ipa: introduce ipa_interrupt_enable()")
  d50ed3558719 ("net: ipa: enable IPA interrupt handlers separate from registration")
https://lore.kernel.org/all/20230119114125.5182c7ab@canb.auug.org.au/
https://lore.kernel.org/all/79e46152-8043-a512-79d9-c3b905462774@tessares.net/

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
22 files changed:
1  2 
MAINTAINERS
drivers/net/ethernet/amd/xgbe/xgbe-dev.c
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
drivers/net/ethernet/amd/xgbe/xgbe.h
drivers/net/ethernet/cadence/macb_main.c
drivers/net/ethernet/freescale/enetc/enetc.c
drivers/net/ethernet/mellanox/mlx5/core/en/params.c
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
drivers/net/ipa/ipa_interrupt.c
drivers/net/ipa/ipa_interrupt.h
drivers/net/ipa/ipa_power.c
drivers/net/phy/mdio_bus.c
drivers/net/virtio_net.c
include/linux/bpf.h
kernel/bpf/syscall.c
kernel/bpf/verifier.c
kernel/trace/bpf_trace.c
net/ipv4/inet_hashtables.c
net/mptcp/protocol.c
net/mptcp/protocol.h
net/netfilter/nf_conntrack_proto_tcp.c

diff --cc MAINTAINERS
Simple merge
Simple merge
@@@ -583,19 -578,13 +583,18 @@@ int mlx5e_mpwrq_validate_xsk(struct mlx
  {
        enum mlx5e_mpwrq_umr_mode umr_mode = mlx5e_mpwrq_umr_mode(mdev, xsk);
        u8 page_shift = mlx5e_mpwrq_page_shift(mdev, xsk);
-       bool unaligned = xsk ? xsk->unaligned : false;
        u16 max_mtu_pkts;
  
 -      if (!mlx5e_check_fragmented_striding_rq_cap(mdev, page_shift, umr_mode))
 +      if (!mlx5e_check_fragmented_striding_rq_cap(mdev, page_shift, umr_mode)) {
 +              mlx5_core_err(mdev, "Striding RQ for XSK can't be activated with page_shift %u and umr_mode %d\n",
 +                            page_shift, umr_mode);
                return -EOPNOTSUPP;
 +      }
  
 -      if (!mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk))
 +      if (!mlx5e_rx_mpwqe_is_linear_skb(mdev, params, xsk)) {
 +              mlx5_core_err(mdev, "Striding RQ linear mode for XSK can't be activated with current params\n");
                return -EINVAL;
 +      }
  
        /* Current RQ length is too big for the given frame size, the
         * needed number of WQEs exceeds the maximum.
@@@ -129,29 -127,16 +129,39 @@@ out_power_put
        return IRQ_HANDLED;
  }
  
 +static void ipa_interrupt_enabled_update(struct ipa *ipa)
 +{
 +      const struct ipa_reg *reg = ipa_reg(ipa, IPA_IRQ_EN);
 +
 +      iowrite32(ipa->interrupt->enabled, ipa->reg_virt + ipa_reg_offset(reg));
 +}
 +
 +/* Enable an IPA interrupt type */
 +void ipa_interrupt_enable(struct ipa *ipa, enum ipa_irq_id ipa_irq)
 +{
 +      /* Update the IPA interrupt mask to enable it */
 +      ipa->interrupt->enabled |= BIT(ipa_irq);
 +      ipa_interrupt_enabled_update(ipa);
 +}
 +
 +/* Disable an IPA interrupt type */
 +void ipa_interrupt_disable(struct ipa *ipa, enum ipa_irq_id ipa_irq)
 +{
 +      /* Update the IPA interrupt mask to disable it */
 +      ipa->interrupt->enabled &= ~BIT(ipa_irq);
 +      ipa_interrupt_enabled_update(ipa);
 +}
 +
+ void ipa_interrupt_irq_disable(struct ipa *ipa)
+ {
+       disable_irq(ipa->interrupt->irq);
+ }
+ void ipa_interrupt_irq_enable(struct ipa *ipa)
+ {
+       enable_irq(ipa->interrupt->irq);
+ }
  /* Common function used to enable/disable TX_SUSPEND for an endpoint */
  static void ipa_interrupt_suspend_control(struct ipa_interrupt *interrupt,
                                          u32 endpoint_id, bool enable)
@@@ -53,20 -85,22 +53,36 @@@ void ipa_interrupt_suspend_clear_all(st
   */
  void ipa_interrupt_simulate_suspend(struct ipa_interrupt *interrupt);
  
 +/**
 + * ipa_interrupt_enable() - Enable an IPA interrupt type
 + * @ipa:      IPA pointer
 + * @ipa_irq:  IPA interrupt ID
 + */
 +void ipa_interrupt_enable(struct ipa *ipa, enum ipa_irq_id ipa_irq);
 +
 +/**
 + * ipa_interrupt_disable() - Disable an IPA interrupt type
 + * @ipa:      IPA pointer
 + * @ipa_irq:  IPA interrupt ID
 + */
 +void ipa_interrupt_disable(struct ipa *ipa, enum ipa_irq_id ipa_irq);
 +
+ /**
+  * ipa_interrupt_irq_enable() - Enable IPA interrupts
+  * @ipa:      IPA pointer
+  *
+  * This enables the IPA interrupt line
+  */
+ void ipa_interrupt_irq_enable(struct ipa *ipa);
+ /**
+  * ipa_interrupt_irq_disable() - Disable IPA interrupts
+  * @ipa:      IPA pointer
+  *
+  * This disables the IPA interrupt line
+  */
+ void ipa_interrupt_irq_disable(struct ipa *ipa);
  /**
   * ipa_interrupt_config() - Configure the IPA interrupt framework
   * @ipa:      IPA pointer
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge