Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorDavid S. Miller <davem@davemloft.net>
Sun, 26 Jan 2020 09:40:21 +0000 (10:40 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 26 Jan 2020 09:40:21 +0000 (10:40 +0100)
Minor conflict in mlx5 because changes happened to code that has
moved meanwhile.

Signed-off-by: David S. Miller <davem@davemloft.net>
24 files changed:
1  2 
MAINTAINERS
drivers/net/ethernet/broadcom/genet/bcmgenet.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c
drivers/net/ethernet/natsemi/sonic.c
drivers/net/ethernet/natsemi/sonic.h
drivers/net/gtp.c
drivers/net/slip/slip.c
drivers/net/tun.c
drivers/net/usb/lan78xx.c
drivers/net/usb/r8152.c
drivers/net/wireless/intel/iwlwifi/mvm/tx.c
include/linux/netdevice.h
net/core/dev.c
net/core/rtnetlink.c
net/ipv4/route.c
net/ipv4/tcp.c
net/ipv4/tcp_input.c
net/ipv4/tcp_output.c
net/ipv4/udp.c
net/ipv6/ip6_fib.c

diff --cc MAINTAINERS
Simple merge
@@@ -379,29 -352,18 +379,19 @@@ static int mlx5_cmd_dr_create_fte(struc
        if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_FWD_DEST) {
                list_for_each_entry(dst, &fte->node.children, node.list) {
                        enum mlx5_flow_destination_type type = dst->dest_attr.type;
-                       u32 id;
  
 -                      if (num_actions == MLX5_FLOW_CONTEXT_ACTION_MAX) {
 +                      if (num_actions == MLX5_FLOW_CONTEXT_ACTION_MAX ||
 +                          num_term_actions >= MLX5_FLOW_CONTEXT_ACTION_MAX) {
                                err = -ENOSPC;
                                goto free_actions;
                        }
  
-                       switch (type) {
-                       case MLX5_FLOW_DESTINATION_TYPE_COUNTER:
-                               id = dst->dest_attr.counter_id;
+                       if (type == MLX5_FLOW_DESTINATION_TYPE_COUNTER)
+                               continue;
  
-                               tmp_action =
-                                       mlx5dr_action_create_flow_counter(id);
-                               if (!tmp_action) {
-                                       err = -ENOMEM;
-                                       goto free_actions;
-                               }
-                               fs_dr_actions[fs_dr_num_actions++] = tmp_action;
-                               actions[num_actions++] = tmp_action;
-                               break;
+                       switch (type) {
                        case MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE:
 -                              tmp_action = create_ft_action(dev, dst);
 +                              tmp_action = create_ft_action(domain, dst);
                                if (!tmp_action) {
                                        err = -ENOMEM;
                                        goto free_actions;
                }
        }
  
+       if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_COUNT) {
+               list_for_each_entry(dst, &fte->node.children, node.list) {
+                       u32 id;
+                       if (dst->dest_attr.type !=
+                           MLX5_FLOW_DESTINATION_TYPE_COUNTER)
+                               continue;
+                       if (num_actions == MLX5_FLOW_CONTEXT_ACTION_MAX) {
+                               err = -ENOSPC;
+                               goto free_actions;
+                       }
+                       id = dst->dest_attr.counter_id;
+                       tmp_action =
+                               mlx5dr_action_create_flow_counter(id);
+                       if (!tmp_action) {
+                               err = -ENOMEM;
+                               goto free_actions;
+                       }
+                       fs_dr_actions[fs_dr_num_actions++] = tmp_action;
+                       actions[num_actions++] = tmp_action;
+               }
+       }
        params.match_sz = match_sz;
        params.match_buf = (u64 *)fte->val;
 -
 -      if (term_action)
 -              actions[num_actions++] = term_action;
 +      if (num_term_actions == 1) {
 +              if (term_actions->reformat)
 +                      actions[num_actions++] = term_actions->reformat;
 +
 +              actions[num_actions++] = term_actions->dest;
 +      } else if (num_term_actions > 1) {
 +              tmp_action = mlx5dr_action_create_mult_dest_tbl(domain,
 +                                                              term_actions,
 +                                                              num_term_actions);
 +              if (!tmp_action) {
 +                      err = -EOPNOTSUPP;
 +                      goto free_actions;
 +              }
 +              fs_dr_actions[fs_dr_num_actions++] = tmp_action;
 +              actions[num_actions++] = tmp_action;
 +      }
  
        rule = mlx5dr_rule_create(group->fs_dr_matcher.dr_matcher,
                                  &params,
Simple merge
Simple merge
Simple merge
@@@ -452,12 -452,19 +452,19 @@@ static void slip_transmit(struct work_s
   */
  static void slip_write_wakeup(struct tty_struct *tty)
  {
-       struct slip *sl = tty->disc_data;
+       struct slip *sl;
+       rcu_read_lock();
+       sl = rcu_dereference(tty->disc_data);
+       if (!sl)
+               goto out;
  
        schedule_work(&sl->tx_work);
+ out:
+       rcu_read_unlock();
  }
  
 -static void sl_tx_timeout(struct net_device *dev)
 +static void sl_tx_timeout(struct net_device *dev, unsigned int txqueue)
  {
        struct slip *sl = netdev_priv(dev);
  
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
diff --cc net/ipv4/tcp.c
Simple merge
Simple merge
Simple merge
diff --cc net/ipv4/udp.c
Simple merge
Simple merge