s390/qeth: remove RECOVER state
[linux-2.6-microblaze.git] / drivers / s390 / net / qeth_core_sys.c
index 30f6160..e24d204 100644 (file)
@@ -34,8 +34,6 @@ static ssize_t qeth_dev_state_show(struct device *dev,
                return sprintf(buf, "UP (LAN %s)\n",
                               netif_carrier_ok(card->dev) ? "ONLINE" :
                                                             "OFFLINE");
-       case CARD_STATE_RECOVER:
-               return sprintf(buf, "RECOVER\n");
        default:
                return sprintf(buf, "UNKNOWN\n");
        }
@@ -126,8 +124,7 @@ static ssize_t qeth_dev_portno_store(struct device *dev,
                return -EINVAL;
 
        mutex_lock(&card->conf_mutex);
-       if ((card->state != CARD_STATE_DOWN) &&
-           (card->state != CARD_STATE_RECOVER)) {
+       if (card->state != CARD_STATE_DOWN) {
                rc = -EPERM;
                goto out;
        }
@@ -202,8 +199,7 @@ static ssize_t qeth_dev_prioqing_store(struct device *dev,
                return -EINVAL;
 
        mutex_lock(&card->conf_mutex);
-       if ((card->state != CARD_STATE_DOWN) &&
-           (card->state != CARD_STATE_RECOVER)) {
+       if (card->state != CARD_STATE_DOWN) {
                rc = -EPERM;
                goto out;
        }
@@ -285,8 +281,7 @@ static ssize_t qeth_dev_bufcnt_store(struct device *dev,
                return -EINVAL;
 
        mutex_lock(&card->conf_mutex);
-       if ((card->state != CARD_STATE_DOWN) &&
-           (card->state != CARD_STATE_RECOVER)) {
+       if (card->state != CARD_STATE_DOWN) {
                rc = -EPERM;
                goto out;
        }
@@ -316,7 +311,7 @@ static ssize_t qeth_dev_recover_store(struct device *dev,
        if (!card)
                return -EINVAL;
 
-       if (card->state != CARD_STATE_UP)
+       if (!qeth_card_hw_is_reachable(card))
                return -EPERM;
 
        i = simple_strtoul(buf, &tmp, 16);
@@ -336,35 +331,36 @@ static ssize_t qeth_dev_performance_stats_show(struct device *dev,
        if (!card)
                return -EINVAL;
 
-       return sprintf(buf, "%i\n", card->options.performance_stats ? 1:0);
+       return sprintf(buf, "1\n");
 }
 
 static ssize_t qeth_dev_performance_stats_store(struct device *dev,
                struct device_attribute *attr, const char *buf, size_t count)
 {
        struct qeth_card *card = dev_get_drvdata(dev);
-       char *tmp;
-       int i, rc = 0;
+       struct qeth_qdio_out_q *queue;
+       unsigned int i;
+       bool reset;
+       int rc;
 
        if (!card)
                return -EINVAL;
 
-       mutex_lock(&card->conf_mutex);
-       i = simple_strtoul(buf, &tmp, 16);
-       if ((i == 0) || (i == 1)) {
-               if (i == card->options.performance_stats)
-                       goto out;
-               card->options.performance_stats = i;
-               if (i == 0)
-                       memset(&card->perf_stats, 0,
-                               sizeof(struct qeth_perf_stats));
-               card->perf_stats.initial_rx_packets = card->stats.rx_packets;
-               card->perf_stats.initial_tx_packets = card->stats.tx_packets;
-       } else
-               rc = -EINVAL;
-out:
-       mutex_unlock(&card->conf_mutex);
-       return rc ? rc : count;
+       rc = kstrtobool(buf, &reset);
+       if (rc)
+               return rc;
+
+       if (reset) {
+               memset(&card->stats, 0, sizeof(card->stats));
+               for (i = 0; i < card->qdio.no_out_queues; i++) {
+                       queue = card->qdio.out_qs[i];
+                       if (!queue)
+                               break;
+                       memset(&queue->stats, 0, sizeof(queue->stats));
+               }
+       }
+
+       return count;
 }
 
 static DEVICE_ATTR(performance_stats, 0644, qeth_dev_performance_stats_show,
@@ -633,8 +629,7 @@ static ssize_t qeth_dev_blkt_store(struct qeth_card *card,
                return -EINVAL;
 
        mutex_lock(&card->conf_mutex);
-       if ((card->state != CARD_STATE_DOWN) &&
-           (card->state != CARD_STATE_RECOVER)) {
+       if (card->state != CARD_STATE_DOWN) {
                rc = -EPERM;
                goto out;
        }