Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorJakub Kicinski <kuba@kernel.org>
Sat, 17 Apr 2021 17:42:54 +0000 (10:42 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 17 Apr 2021 18:08:07 +0000 (11:08 -0700)
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
 - keep the ZC code, drop the code related to reinit
net/bridge/netfilter/ebtables.c
 - fix build after move to net_generic

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
29 files changed:
1  2 
Documentation/networking/ip-sysctl.rst
MAINTAINERS
drivers/net/dsa/mv88e6xxx/chip.c
drivers/net/ethernet/cadence/macb_main.c
drivers/net/ethernet/davicom/dm9000.c
drivers/net/ethernet/ibm/ibmvnic.c
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/ice/ice_dcb.c
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/ethernet/mellanox/mlx5/core/devlink.c
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
drivers/net/ethernet/realtek/r8169_main.c
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
drivers/net/geneve.c
include/linux/marvell_phy.h
kernel/bpf/verifier.c
net/bridge/netfilter/ebtables.c
net/core/dev.c
net/ethtool/netlink.h
net/ethtool/pause.c
net/ipv4/sysctl_net_ipv4.c
net/ipv6/ip6_tunnel.c
net/ipv6/sit.c
net/netfilter/nf_conntrack_standalone.c
net/netfilter/nf_flow_table_offload.c
net/netfilter/nf_tables_api.c
net/netfilter/x_tables.c
net/sctp/socket.c
tools/lib/bpf/xsk.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
@@@ -1967,14 -1916,12 +1961,14 @@@ static int do_reset(struct ibmvnic_adap
        u64 old_num_rx_queues, old_num_tx_queues;
        u64 old_num_rx_slots, old_num_tx_slots;
        struct net_device *netdev = adapter->netdev;
-       int i, rc;
+       int rc;
  
        netdev_dbg(adapter->netdev,
 -                 "[S:%d FOP:%d] Reset reason %d, reset_state %d\n",
 -                 adapter->state, adapter->failover_pending,
 -                 rwi->reset_reason, reset_state);
 +                 "[S:%s FOP:%d] Reset reason: %s, reset_state: %s\n",
 +                 adapter_state_to_string(adapter->state),
 +                 adapter->failover_pending,
 +                 reset_reason_to_string(rwi->reset_reason),
 +                 adapter_state_to_string(reset_state));
  
        adapter->reset_reason = rwi->reset_reason;
        /* requestor of VNIC_RESET_CHANGE_PARAM already has the rtnl lock */
@@@ -1519,182 -1380,8 +1519,106 @@@ static void stmmac_free_tx_buffer(struc
  }
  
  /**
 - * init_dma_rx_desc_rings - init the RX descriptor rings
 - * @dev: net device structure
 + * dma_free_rx_skbufs - free RX dma buffers
 + * @priv: private structure
 + * @queue: RX queue index
 + */
 +static void dma_free_rx_skbufs(struct stmmac_priv *priv, u32 queue)
 +{
 +      int i;
 +
 +      for (i = 0; i < priv->dma_rx_size; i++)
 +              stmmac_free_rx_buffer(priv, queue, i);
 +}
 +
 +static int stmmac_alloc_rx_buffers(struct stmmac_priv *priv, u32 queue,
 +                                 gfp_t flags)
 +{
 +      struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
 +      int i;
 +
 +      for (i = 0; i < priv->dma_rx_size; i++) {
 +              struct dma_desc *p;
 +              int ret;
 +
 +              if (priv->extend_desc)
 +                      p = &((rx_q->dma_erx + i)->basic);
 +              else
 +                      p = rx_q->dma_rx + i;
 +
 +              ret = stmmac_init_rx_buffers(priv, p, i, flags,
 +                                           queue);
 +              if (ret)
 +                      return ret;
 +
 +              rx_q->buf_alloc_num++;
 +      }
 +
 +      return 0;
 +}
 +
- /**
-  * dma_recycle_rx_skbufs - recycle RX dma buffers
-  * @priv: private structure
-  * @queue: RX queue index
-  */
- static void dma_recycle_rx_skbufs(struct stmmac_priv *priv, u32 queue)
- {
-       struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
-       int i;
-       for (i = 0; i < priv->dma_rx_size; i++) {
-               struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
-               if (buf->page) {
-                       page_pool_recycle_direct(rx_q->page_pool, buf->page);
-                       buf->page = NULL;
-               }
-               if (priv->sph && buf->sec_page) {
-                       page_pool_recycle_direct(rx_q->page_pool, buf->sec_page);
-                       buf->sec_page = NULL;
-               }
-       }
- }
 +/**
 + * dma_free_rx_xskbufs - free RX dma buffers from XSK pool
 + * @priv: private structure
 + * @queue: RX queue index
 + */
 +static void dma_free_rx_xskbufs(struct stmmac_priv *priv, u32 queue)
 +{
 +      struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
 +      int i;
 +
 +      for (i = 0; i < priv->dma_rx_size; i++) {
 +              struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
 +
 +              if (!buf->xdp)
 +                      continue;
 +
 +              xsk_buff_free(buf->xdp);
 +              buf->xdp = NULL;
 +      }
 +}
 +
 +static int stmmac_alloc_rx_buffers_zc(struct stmmac_priv *priv, u32 queue)
 +{
 +      struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
 +      int i;
 +
 +      for (i = 0; i < priv->dma_rx_size; i++) {
 +              struct stmmac_rx_buffer *buf;
 +              dma_addr_t dma_addr;
 +              struct dma_desc *p;
 +
 +              if (priv->extend_desc)
 +                      p = (struct dma_desc *)(rx_q->dma_erx + i);
 +              else
 +                      p = rx_q->dma_rx + i;
 +
 +              buf = &rx_q->buf_pool[i];
 +
 +              buf->xdp = xsk_buff_alloc(rx_q->xsk_pool);
 +              if (!buf->xdp)
 +                      return -ENOMEM;
 +
 +              dma_addr = xsk_buff_xdp_get_dma(buf->xdp);
 +              stmmac_set_desc_addr(priv, p, dma_addr);
 +              rx_q->buf_alloc_num++;
 +      }
 +
 +      return 0;
 +}
 +
- /**
-  * stmmac_reinit_rx_buffers - reinit the RX descriptor buffer.
-  * @priv: driver private structure
-  * Description: this function is called to re-allocate a receive buffer, perform
-  * the DMA mapping and init the descriptor.
-  */
- static void stmmac_reinit_rx_buffers(struct stmmac_priv *priv)
- {
-       u32 rx_count = priv->plat->rx_queues_to_use;
-       u32 queue;
-       for (queue = 0; queue < rx_count; queue++) {
-               struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
-               if (rx_q->xsk_pool)
-                       dma_free_rx_xskbufs(priv, queue);
-               else
-                       dma_recycle_rx_skbufs(priv, queue);
-               rx_q->buf_alloc_num = 0;
-       }
-       for (queue = 0; queue < rx_count; queue++) {
-               struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
-               int ret;
-               if (rx_q->xsk_pool) {
-                       /* RX XDP ZC buffer pool may not be populated, e.g.
-                        * xdpsock TX-only.
-                        */
-                       stmmac_alloc_rx_buffers_zc(priv, queue);
-               } else {
-                       ret = stmmac_alloc_rx_buffers(priv, queue, GFP_KERNEL);
-                       if (ret < 0)
-                               goto err_reinit_rx_buffers;
-               }
-       }
-       return;
- err_reinit_rx_buffers:
-       while (queue >= 0) {
-               dma_free_rx_skbufs(priv, queue);
-               if (queue == 0)
-                       break;
-               queue--;
-       }
- }
 +static struct xsk_buff_pool *stmmac_get_xsk_pool(struct stmmac_priv *priv, u32 queue)
 +{
 +      if (!stmmac_xdp_is_enabled(priv) || !test_bit(queue, priv->af_xdp_zc_qps))
 +              return NULL;
 +
 +      return xsk_get_pool_from_qid(priv->dev, queue);
 +}
 +
 +/**
 + * __init_dma_rx_desc_rings - init the RX descriptor ring (per queue)
 + * @priv: driver private structure
 + * @queue: RX queue index
   * @flags: gfp flag.
   * Description: this function initializes the DMA RX descriptors
   * and allocates the socket buffers. It supports the chained and ring
Simple merge
Simple merge
@@@ -6369,9 -5918,9 +6380,9 @@@ static int update_alu_sanitation_state(
        if (aux->alu_state &&
            (aux->alu_state != alu_state ||
             aux->alu_limit != alu_limit))
-               return -EACCES;
+               return REASON_PATHS;
  
 -      /* Corresponding fixup done in fixup_bpf_calls(). */
 +      /* Corresponding fixup done in do_misc_fixups(). */
        aux->alu_state = alu_state;
        aux->alu_limit = alu_limit;
        return 0;
        return ret;
  }
  
- void ebt_unregister_table(struct net *net, struct ebt_table *table,
-                         const struct nf_hook_ops *ops)
+ static struct ebt_table *__ebt_find_table(struct net *net, const char *name)
+ {
++      struct ebt_pernet *ebt_net = net_generic(net, ebt_pernet_id);
+       struct ebt_table *t;
+       mutex_lock(&ebt_mutex);
 -      list_for_each_entry(t, &net->xt.tables[NFPROTO_BRIDGE], list) {
++      list_for_each_entry(t, &ebt_net->tables, list) {
+               if (strcmp(t->name, name) == 0) {
+                       mutex_unlock(&ebt_mutex);
+                       return t;
+               }
+       }
+       mutex_unlock(&ebt_mutex);
+       return NULL;
+ }
+ void ebt_unregister_table_pre_exit(struct net *net, const char *name, const struct nf_hook_ops *ops)
+ {
+       struct ebt_table *table = __ebt_find_table(net, name);
+       if (table)
+               nf_unregister_net_hooks(net, ops, hweight32(table->valid_hooks));
+ }
+ EXPORT_SYMBOL(ebt_unregister_table_pre_exit);
+ void ebt_unregister_table(struct net *net, struct ebt_table *table)
  {
-       nf_unregister_net_hooks(net, ops, hweight32(table->valid_hooks));
        __ebt_unregister_table(net, table);
  }
  
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/ipv6/sit.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge