Skip to content

Commit b9f2c02

Browse files
committed
Merge branch 's390-qeth-next'
Julian Wiedmann says: ==================== s390/qeth: updates 2019-02-28 please apply one more qeth patch series for net-next. This eliminates some of the quirks in our reset code, and slims down the internal state machine. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 5490357 + 0f7aedb commit b9f2c02

File tree

6 files changed

+80
-212
lines changed

6 files changed

+80
-212
lines changed

drivers/s390/net/qeth_core.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,6 @@ struct qeth_out_q_stats {
483483
u64 tx_bytes;
484484
u64 tx_errors;
485485
u64 tx_dropped;
486-
u64 tx_carrier_errors;
487486
};
488487

489488
struct qeth_qdio_out_q {
@@ -552,8 +551,6 @@ enum qeth_card_states {
552551
CARD_STATE_DOWN,
553552
CARD_STATE_HARDSETUP,
554553
CARD_STATE_SOFTSETUP,
555-
CARD_STATE_UP,
556-
CARD_STATE_RECOVER,
557554
};
558555

559556
/**
@@ -665,6 +662,7 @@ struct qeth_card_info {
665662
unsigned short chpid;
666663
__u16 func_level;
667664
char mcl_level[QETH_MCL_LENGTH + 1];
665+
u8 open_when_online:1;
668666
int guestlan;
669667
int mac_bits;
670668
enum qeth_card_types type;
@@ -808,6 +806,11 @@ struct qeth_card {
808806
struct work_struct close_dev_work;
809807
};
810808

809+
static inline bool qeth_card_hw_is_reachable(struct qeth_card *card)
810+
{
811+
return card->state == CARD_STATE_SOFTSETUP;
812+
}
813+
811814
struct qeth_trap_id {
812815
__u16 lparnr;
813816
char vmname[8];
@@ -942,7 +945,6 @@ extern const struct attribute_group qeth_device_attr_group;
942945
extern const struct attribute_group qeth_device_blkt_group;
943946
extern const struct device_type qeth_generic_devtype;
944947

945-
int qeth_card_hw_is_reachable(struct qeth_card *);
946948
const char *qeth_get_cardname_short(struct qeth_card *);
947949
int qeth_realloc_buffer_pool(struct qeth_card *, int);
948950
int qeth_core_load_discipline(struct qeth_card *, enum qeth_discipline_id);
@@ -1002,7 +1004,6 @@ int qeth_set_access_ctrl_online(struct qeth_card *card, int fallback);
10021004
int qeth_configure_cq(struct qeth_card *, enum qeth_cq);
10031005
int qeth_hw_trap(struct qeth_card *, enum qeth_diags_trap_action);
10041006
void qeth_trace_features(struct qeth_card *);
1005-
void qeth_close_dev(struct qeth_card *);
10061007
int qeth_setassparms_cb(struct qeth_card *, struct qeth_reply *, unsigned long);
10071008
struct qeth_cmd_buffer *qeth_get_setassparms_cmd(struct qeth_card *,
10081009
enum qeth_ipa_funcs,

drivers/s390/net/qeth_core_main.c

Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -74,34 +74,15 @@ static void qeth_notify_skbs(struct qeth_qdio_out_q *queue,
7474
static void qeth_release_skbs(struct qeth_qdio_out_buffer *buf);
7575
static int qeth_init_qdio_out_buf(struct qeth_qdio_out_q *, int);
7676

77-
static struct workqueue_struct *qeth_wq;
78-
79-
int qeth_card_hw_is_reachable(struct qeth_card *card)
80-
{
81-
return (card->state == CARD_STATE_SOFTSETUP) ||
82-
(card->state == CARD_STATE_UP);
83-
}
84-
EXPORT_SYMBOL_GPL(qeth_card_hw_is_reachable);
85-
8677
static void qeth_close_dev_handler(struct work_struct *work)
8778
{
8879
struct qeth_card *card;
8980

9081
card = container_of(work, struct qeth_card, close_dev_work);
9182
QETH_CARD_TEXT(card, 2, "cldevhdl");
92-
rtnl_lock();
93-
dev_close(card->dev);
94-
rtnl_unlock();
9583
ccwgroup_set_offline(card->gdev);
9684
}
9785

98-
void qeth_close_dev(struct qeth_card *card)
99-
{
100-
QETH_CARD_TEXT(card, 2, "cldevsubm");
101-
queue_work(qeth_wq, &card->close_dev_work);
102-
}
103-
EXPORT_SYMBOL_GPL(qeth_close_dev);
104-
10586
static const char *qeth_get_cardname(struct qeth_card *card)
10687
{
10788
if (card->info.guestlan) {
@@ -265,8 +246,7 @@ int qeth_realloc_buffer_pool(struct qeth_card *card, int bufcnt)
265246
{
266247
QETH_CARD_TEXT(card, 2, "realcbp");
267248

268-
if ((card->state != CARD_STATE_DOWN) &&
269-
(card->state != CARD_STATE_RECOVER))
249+
if (card->state != CARD_STATE_DOWN)
270250
return -EPERM;
271251

272252
/* TODO: steel/add buffers from/to a running card's buffer pool (?) */
@@ -639,7 +619,7 @@ static struct qeth_ipa_cmd *qeth_check_ipa_data(struct qeth_card *card,
639619
dev_err(&card->gdev->dev,
640620
"Interface %s is down because the adjacent port is no longer in reflective relay mode\n",
641621
QETH_CARD_IFNAME(card));
642-
qeth_close_dev(card);
622+
schedule_work(&card->close_dev_work);
643623
} else {
644624
dev_warn(&card->gdev->dev,
645625
"The link for interface %s on CHPID 0x%X failed\n",
@@ -3479,8 +3459,7 @@ int qeth_configure_cq(struct qeth_card *card, enum qeth_cq cq)
34793459
goto out;
34803460
}
34813461

3482-
if (card->state != CARD_STATE_DOWN &&
3483-
card->state != CARD_STATE_RECOVER) {
3462+
if (card->state != CARD_STATE_DOWN) {
34843463
rc = -1;
34853464
goto out;
34863465
}
@@ -6220,7 +6199,6 @@ void qeth_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
62206199
stats->tx_bytes += queue->stats.tx_bytes;
62216200
stats->tx_errors += queue->stats.tx_errors;
62226201
stats->tx_dropped += queue->stats.tx_dropped;
6223-
stats->tx_carrier_errors += queue->stats.tx_carrier_errors;
62246202
}
62256203
}
62266204
EXPORT_SYMBOL_GPL(qeth_get_stats64);
@@ -6230,16 +6208,11 @@ int qeth_open(struct net_device *dev)
62306208
struct qeth_card *card = dev->ml_priv;
62316209

62326210
QETH_CARD_TEXT(card, 4, "qethopen");
6233-
if (card->state == CARD_STATE_UP)
6234-
return 0;
6235-
if (card->state != CARD_STATE_SOFTSETUP)
6236-
return -ENODEV;
62376211

62386212
if (qdio_stop_irq(CARD_DDEV(card), 0) < 0)
62396213
return -EIO;
62406214

62416215
card->data.state = CH_STATE_UP;
6242-
card->state = CARD_STATE_UP;
62436216
netif_start_queue(dev);
62446217

62456218
napi_enable(&card->napi);
@@ -6257,10 +6230,7 @@ int qeth_stop(struct net_device *dev)
62576230

62586231
QETH_CARD_TEXT(card, 4, "qethstop");
62596232
netif_tx_disable(dev);
6260-
if (card->state == CARD_STATE_UP) {
6261-
card->state = CARD_STATE_SOFTSETUP;
6262-
napi_disable(&card->napi);
6263-
}
6233+
napi_disable(&card->napi);
62646234
return 0;
62656235
}
62666236
EXPORT_SYMBOL_GPL(qeth_stop);
@@ -6271,12 +6241,6 @@ static int __init qeth_core_init(void)
62716241

62726242
pr_info("loading core functions\n");
62736243

6274-
qeth_wq = create_singlethread_workqueue("qeth_wq");
6275-
if (!qeth_wq) {
6276-
rc = -ENOMEM;
6277-
goto out_err;
6278-
}
6279-
62806244
rc = qeth_register_dbf_views();
62816245
if (rc)
62826246
goto dbf_err;
@@ -6318,16 +6282,13 @@ static int __init qeth_core_init(void)
63186282
register_err:
63196283
qeth_unregister_dbf_views();
63206284
dbf_err:
6321-
destroy_workqueue(qeth_wq);
6322-
out_err:
63236285
pr_err("Initializing the qeth device driver failed\n");
63246286
return rc;
63256287
}
63266288

63276289
static void __exit qeth_core_exit(void)
63286290
{
63296291
qeth_clear_dbf_list();
6330-
destroy_workqueue(qeth_wq);
63316292
ccwgroup_driver_unregister(&qeth_core_ccwgroup_driver);
63326293
ccw_driver_unregister(&qeth_ccw_driver);
63336294
kmem_cache_destroy(qeth_qdio_outbuf_cache);

drivers/s390/net/qeth_core_sys.c

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,11 @@ static ssize_t qeth_dev_state_show(struct device *dev,
2929
case CARD_STATE_HARDSETUP:
3030
return sprintf(buf, "HARDSETUP\n");
3131
case CARD_STATE_SOFTSETUP:
32+
if (card->dev->flags & IFF_UP)
33+
return sprintf(buf, "UP (LAN %s)\n",
34+
netif_carrier_ok(card->dev) ? "ONLINE" :
35+
"OFFLINE");
3236
return sprintf(buf, "SOFTSETUP\n");
33-
case CARD_STATE_UP:
34-
return sprintf(buf, "UP (LAN %s)\n",
35-
netif_carrier_ok(card->dev) ? "ONLINE" :
36-
"OFFLINE");
37-
case CARD_STATE_RECOVER:
38-
return sprintf(buf, "RECOVER\n");
3937
default:
4038
return sprintf(buf, "UNKNOWN\n");
4139
}
@@ -126,8 +124,7 @@ static ssize_t qeth_dev_portno_store(struct device *dev,
126124
return -EINVAL;
127125

128126
mutex_lock(&card->conf_mutex);
129-
if ((card->state != CARD_STATE_DOWN) &&
130-
(card->state != CARD_STATE_RECOVER)) {
127+
if (card->state != CARD_STATE_DOWN) {
131128
rc = -EPERM;
132129
goto out;
133130
}
@@ -202,8 +199,7 @@ static ssize_t qeth_dev_prioqing_store(struct device *dev,
202199
return -EINVAL;
203200

204201
mutex_lock(&card->conf_mutex);
205-
if ((card->state != CARD_STATE_DOWN) &&
206-
(card->state != CARD_STATE_RECOVER)) {
202+
if (card->state != CARD_STATE_DOWN) {
207203
rc = -EPERM;
208204
goto out;
209205
}
@@ -285,8 +281,7 @@ static ssize_t qeth_dev_bufcnt_store(struct device *dev,
285281
return -EINVAL;
286282

287283
mutex_lock(&card->conf_mutex);
288-
if ((card->state != CARD_STATE_DOWN) &&
289-
(card->state != CARD_STATE_RECOVER)) {
284+
if (card->state != CARD_STATE_DOWN) {
290285
rc = -EPERM;
291286
goto out;
292287
}
@@ -421,7 +416,6 @@ static ssize_t qeth_dev_layer2_store(struct device *dev,
421416
goto out;
422417
}
423418

424-
card->info.mac_bits = 0;
425419
if (card->discipline) {
426420
/* start with a new, pristine netdevice: */
427421
ndev = qeth_clone_netdev(card->dev);
@@ -634,8 +628,7 @@ static ssize_t qeth_dev_blkt_store(struct qeth_card *card,
634628
return -EINVAL;
635629

636630
mutex_lock(&card->conf_mutex);
637-
if ((card->state != CARD_STATE_DOWN) &&
638-
(card->state != CARD_STATE_RECOVER)) {
631+
if (card->state != CARD_STATE_DOWN) {
639632
rc = -EPERM;
640633
goto out;
641634
}

0 commit comments

Comments
 (0)