s390/qeth: pass proto to qeth_l3_get_cast_type()
authorJulian Wiedmann <jwi@linux.ibm.com>
Thu, 28 Jan 2021 11:25:49 +0000 (12:25 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 29 Jan 2021 04:35:58 +0000 (20:35 -0800)
qeth_l3_hard_start_xmit() already determined the skb's proto. Avoid
doing so a second time when it calls qeth_l3_get_cast_type().

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/s390/net/qeth_l3_main.c

index 7a7465376e2922e0ffc0e297793383817a1f7212..4921afb51a1c36cfd209200c1f3eac8a08764e63 100644 (file)
@@ -1610,9 +1610,8 @@ static int qeth_l3_get_cast_type_rcu(struct sk_buff *skb, struct dst_entry *dst,
        }
 }
 
-static int qeth_l3_get_cast_type(struct sk_buff *skb)
+static int qeth_l3_get_cast_type(struct sk_buff *skb, __be16 proto)
 {
-       __be16 proto = vlan_get_protocol(skb);
        struct dst_entry *dst;
        int cast_type;
 
@@ -1771,7 +1770,7 @@ static netdev_tx_t qeth_l3_hard_start_xmit(struct sk_buff *skb,
        }
 
        if (!(dev->flags & IFF_BROADCAST) &&
-           qeth_l3_get_cast_type(skb) == RTN_BROADCAST)
+           qeth_l3_get_cast_type(skb, proto) == RTN_BROADCAST)
                goto tx_drop;
 
        if (proto == htons(ETH_P_IP) || IS_IQD(card))
@@ -1831,8 +1830,10 @@ static netdev_features_t qeth_l3_osa_features_check(struct sk_buff *skb,
 static u16 qeth_l3_iqd_select_queue(struct net_device *dev, struct sk_buff *skb,
                                    struct net_device *sb_dev)
 {
-       return qeth_iqd_select_queue(dev, skb, qeth_l3_get_cast_type(skb),
-                                    sb_dev);
+       __be16 proto = vlan_get_protocol(skb);
+
+       return qeth_iqd_select_queue(dev, skb,
+                                    qeth_l3_get_cast_type(skb, proto), sb_dev);
 }
 
 static u16 qeth_l3_osa_select_queue(struct net_device *dev, struct sk_buff *skb,