s390/qeth: fine-tune .ndo_select_queue()
[sfrench/cifs-2.6.git] / drivers / s390 / net / qeth_core_main.c
index 629a7f5c4d713bb42d305a2ac21891c99c3b8a2b..093ee14e8051575f8506119ef78203c776336242 100644 (file)
@@ -3769,7 +3769,7 @@ static void qeth_qdio_output_handler(struct ccw_device *ccwdev,
 /*
  * Note: Function assumes that we have 4 outbound queues.
  */
-int qeth_get_priority_queue(struct qeth_card *card, struct sk_buff *skb)
+static int qeth_get_priority_queue(struct qeth_card *card, struct sk_buff *skb)
 {
        struct vlan_ethhdr *veth = vlan_eth_hdr(skb);
        u8 tos;
@@ -3814,7 +3814,6 @@ int qeth_get_priority_queue(struct qeth_card *card, struct sk_buff *skb)
        }
        return card->qdio.default_out_queue;
 }
-EXPORT_SYMBOL_GPL(qeth_get_priority_queue);
 
 /**
  * qeth_get_elements_for_frags() -     find number of SBALEs for skb frags.
@@ -7078,6 +7077,18 @@ u16 qeth_iqd_select_queue(struct net_device *dev, struct sk_buff *skb,
 }
 EXPORT_SYMBOL_GPL(qeth_iqd_select_queue);
 
+u16 qeth_osa_select_queue(struct net_device *dev, struct sk_buff *skb,
+                         struct net_device *sb_dev)
+{
+       struct qeth_card *card = dev->ml_priv;
+
+       if (qeth_uses_tx_prio_queueing(card))
+               return qeth_get_priority_queue(card, skb);
+
+       return netdev_pick_tx(dev, skb, sb_dev);
+}
+EXPORT_SYMBOL_GPL(qeth_osa_select_queue);
+
 int qeth_open(struct net_device *dev)
 {
        struct qeth_card *card = dev->ml_priv;