]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/s390/net/qeth_l2_main.c
s390/qeth: use correct return type for hard_start_xmit()
[karo-tx-linux.git] / drivers / s390 / net / qeth_l2_main.c
index 30232076d867632e12af7b2c55ca2368dd84d9d7..11cf4a4b36a63a9d390fc9b75e3474865cd3432d 100644 (file)
@@ -500,81 +500,6 @@ static int qeth_l2_process_inbound_buffer(struct qeth_card *card,
        return work_done;
 }
 
-static int qeth_l2_poll(struct napi_struct *napi, int budget)
-{
-       struct qeth_card *card = container_of(napi, struct qeth_card, napi);
-       int work_done = 0;
-       struct qeth_qdio_buffer *buffer;
-       int done;
-       int new_budget = budget;
-
-       if (card->options.performance_stats) {
-               card->perf_stats.inbound_cnt++;
-               card->perf_stats.inbound_start_time = qeth_get_micros();
-       }
-
-       while (1) {
-               if (!card->rx.b_count) {
-                       card->rx.qdio_err = 0;
-                       card->rx.b_count = qdio_get_next_buffers(
-                               card->data.ccwdev, 0, &card->rx.b_index,
-                               &card->rx.qdio_err);
-                       if (card->rx.b_count <= 0) {
-                               card->rx.b_count = 0;
-                               break;
-                       }
-                       card->rx.b_element =
-                               &card->qdio.in_q->bufs[card->rx.b_index]
-                               .buffer->element[0];
-                       card->rx.e_offset = 0;
-               }
-
-               while (card->rx.b_count) {
-                       buffer = &card->qdio.in_q->bufs[card->rx.b_index];
-                       if (!(card->rx.qdio_err &&
-                           qeth_check_qdio_errors(card, buffer->buffer,
-                           card->rx.qdio_err, "qinerr")))
-                               work_done += qeth_l2_process_inbound_buffer(
-                                       card, new_budget, &done);
-                       else
-                               done = 1;
-
-                       if (done) {
-                               if (card->options.performance_stats)
-                                       card->perf_stats.bufs_rec++;
-                               qeth_put_buffer_pool_entry(card,
-                                       buffer->pool_entry);
-                               qeth_queue_input_buffer(card, card->rx.b_index);
-                               card->rx.b_count--;
-                               if (card->rx.b_count) {
-                                       card->rx.b_index =
-                                               (card->rx.b_index + 1) %
-                                               QDIO_MAX_BUFFERS_PER_Q;
-                                       card->rx.b_element =
-                                               &card->qdio.in_q
-                                               ->bufs[card->rx.b_index]
-                                               .buffer->element[0];
-                                       card->rx.e_offset = 0;
-                               }
-                       }
-
-                       if (work_done >= budget)
-                               goto out;
-                       else
-                               new_budget = budget - work_done;
-               }
-       }
-
-       napi_complete(napi);
-       if (qdio_start_irq(card->data.ccwdev, 0))
-               napi_schedule(&card->napi);
-out:
-       if (card->options.performance_stats)
-               card->perf_stats.inbound_time += qeth_get_micros() -
-                       card->perf_stats.inbound_start_time;
-       return work_done;
-}
-
 static int qeth_l2_request_initial_mac(struct qeth_card *card)
 {
        int rc = 0;
@@ -756,7 +681,8 @@ static void qeth_l2_set_rx_mode(struct net_device *dev)
                qeth_promisc_to_bridge(card);
 }
 
-static int qeth_l2_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t qeth_l2_hard_start_xmit(struct sk_buff *skb,
+                                          struct net_device *dev)
 {
        int rc;
        struct qeth_hdr *hdr = NULL;
@@ -858,7 +784,7 @@ static int qeth_l2_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
                                         elements);
        } else
                rc = qeth_do_send_packet_fast(card, queue, new_skb, hdr,
-                                       elements, data_offset, hd_len);
+                                             data_offset, hd_len);
        if (!rc) {
                card->stats.tx_packets++;
                card->stats.tx_bytes += tx_bytes;
@@ -1065,7 +991,7 @@ static int qeth_l2_setup_netdev(struct qeth_card *card)
        card->dev->gso_max_size = (QETH_MAX_BUFFER_ELEMENTS(card) - 1) *
                                  PAGE_SIZE;
        SET_NETDEV_DEV(card->dev, &card->gdev->dev);
-       netif_napi_add(card->dev, &card->napi, qeth_l2_poll, QETH_NAPI_WEIGHT);
+       netif_napi_add(card->dev, &card->napi, qeth_poll, QETH_NAPI_WEIGHT);
        netif_carrier_off(card->dev);
        return register_netdev(card->dev);
 }
@@ -1275,17 +1201,6 @@ static void __exit qeth_l2_exit(void)
        pr_info("unregister layer 2 discipline\n");
 }
 
-static void qeth_l2_shutdown(struct ccwgroup_device *gdev)
-{
-       struct qeth_card *card = dev_get_drvdata(&gdev->dev);
-       qeth_set_allowed_threads(card, 0, 1);
-       if ((gdev->state == CCWGROUP_ONLINE) && card->info.hwtrap)
-               qeth_hw_trap(card, QETH_DIAGS_TRAP_DISARM);
-       qeth_qdio_clear_card(card, 0);
-       qeth_clear_qdio_buffers(card);
-       qdio_free(CARD_DDEV(card));
-}
-
 static int qeth_l2_pm_suspend(struct ccwgroup_device *gdev)
 {
        struct qeth_card *card = dev_get_drvdata(&gdev->dev);
@@ -1357,12 +1272,12 @@ struct qeth_discipline qeth_l2_discipline = {
        .start_poll = qeth_qdio_start_poll,
        .input_handler = (qdio_handler_t *) qeth_qdio_input_handler,
        .output_handler = (qdio_handler_t *) qeth_qdio_output_handler,
+       .process_rx_buffer = qeth_l2_process_inbound_buffer,
        .recover = qeth_l2_recover,
        .setup = qeth_l2_probe_device,
        .remove = qeth_l2_remove_device,
        .set_online = qeth_l2_set_online,
        .set_offline = qeth_l2_set_offline,
-       .shutdown = qeth_l2_shutdown,
        .freeze = qeth_l2_pm_suspend,
        .thaw = qeth_l2_pm_resume,
        .restore = qeth_l2_pm_resume,