OSDN Git Service

Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorDavid S. Miller <davem@davemloft.net>
Fri, 26 Jun 2020 02:29:51 +0000 (19:29 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 26 Jun 2020 02:29:51 +0000 (19:29 -0700)
Minor overlapping changes in xfrm_device.c, between the double
ESP trailing bug fix setting the XFRM_INIT flag and the changes
in net-next preparing for bonding encryption support.

Signed-off-by: David S. Miller <davem@davemloft.net>
31 files changed:
1  2 
drivers/net/dsa/sja1105/sja1105_vl.c
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
drivers/net/ethernet/chelsio/cxgb4/sge.c
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
drivers/net/ethernet/freescale/enetc/enetc.c
drivers/net/ethernet/freescale/enetc/enetc_hw.h
drivers/net/ethernet/marvell/mvneta.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/netronome/nfp/flower/offload.c
drivers/net/ethernet/realtek/r8169_main.c
drivers/net/phy/mscc/mscc_macsec.c
drivers/net/phy/phy_device.c
drivers/net/phy/phylink.c
drivers/of/of_mdio.c
include/linux/phy.h
include/net/flow_offload.h
include/net/xfrm.h
net/bridge/br_private.h
net/core/dev.c
net/ethtool/ioctl.c
net/mptcp/protocol.h
net/sched/act_gate.c
net/sched/cls_api.c
net/sched/sch_cake.c
net/xfrm/xfrm_device.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -106,10 -106,9 +106,10 @@@ struct sk_buff *validate_xmit_xfrm(stru
        struct sk_buff *skb2, *nskb, *pskb = NULL;
        netdev_features_t esp_features = features;
        struct xfrm_offload *xo = xfrm_offload(skb);
 +      struct net_device *dev = skb->dev;
        struct sec_path *sp;
  
-       if (!xo)
+       if (!xo || (xo->flags & XFRM_XMIT))
                return skb;
  
        if (!(features & NETIF_F_HW_ESP))
                return skb;
        }
  
 -      if (skb_is_gso(skb)) {
 -              struct net_device *dev = skb->dev;
+       xo->flags |= XFRM_XMIT;
 +      if (skb_is_gso(skb) && unlikely(x->xso.dev != dev)) {
 +              struct sk_buff *segs;
  
 -              if (unlikely(x->xso.dev != dev)) {
 -                      struct sk_buff *segs;
 +              /* Packet got rerouted, fixup features and segment it. */
 +              esp_features = esp_features & ~(NETIF_F_HW_ESP | NETIF_F_GSO_ESP);
  
 -                      /* Packet got rerouted, fixup features and segment it. */
 -                      esp_features = esp_features & ~(NETIF_F_HW_ESP
 -                                                      | NETIF_F_GSO_ESP);
 -
 -                      segs = skb_gso_segment(skb, esp_features);
 -                      if (IS_ERR(segs)) {
 -                              kfree_skb(skb);
 -                              atomic_long_inc(&dev->tx_dropped);
 -                              return NULL;
 -                      } else {
 -                              consume_skb(skb);
 -                              skb = segs;
 -                      }
 +              segs = skb_gso_segment(skb, esp_features);
 +              if (IS_ERR(segs)) {
 +                      kfree_skb(skb);
 +                      atomic_long_inc(&dev->tx_dropped);
 +                      return NULL;
 +              } else {
 +                      consume_skb(skb);
 +                      skb = segs;
                }
        }