* [patch 0/2] s390: network patches for net-next
@ 2014-07-21 10:54 frank.blaschka
2014-07-21 10:54 ` [patch 1/2] qeth: Display adjacent switch attributes frank.blaschka
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: frank.blaschka @ 2014-07-21 10:54 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-s390
Hi Dave,
here are some s390 related patches for net-next
shortlog:
Stefan Raspl (1)
qeth: Display adjacent switch attributes
Ursula Braun (1)
af_iucv: avoid path quiesce of severed path in shutdown()
Thanks,
Frank
^ permalink raw reply [flat|nested] 6+ messages in thread
* [patch 1/2] qeth: Display adjacent switch attributes
2014-07-21 10:54 [patch 0/2] s390: network patches for net-next frank.blaschka
@ 2014-07-21 10:54 ` frank.blaschka
2014-07-21 10:54 ` [patch 2/2] af_iucv: avoid path quiesce of severed path in shutdown() frank.blaschka
2014-07-22 3:22 ` [patch 0/2] s390: network patches for net-next David Miller
2 siblings, 0 replies; 6+ messages in thread
From: frank.blaschka @ 2014-07-21 10:54 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-s390, Stefan Raspl, Ursula Braun
[-- Attachment #1: 600-qeth-switch-attrs.diff --]
[-- Type: text/plain, Size: 5852 bytes --]
From: Stefan Raspl <raspl@linux.vnet.ibm.com>
Add support to display the adjacent switch port's forwarding
attributes. Currently supports info on forwarding modes '802.1'
and 'rr' (reflective relay).
Signed-off-by: Stefan Raspl <raspl@linux.vnet.ibm.com>
Signed-off-by: Frank Blaschka <blaschka@linux.vnet.ibm.com>
Reviewed-by: Ursula Braun <ursula.braun@de.ibm.com>
---
drivers/s390/net/qeth_core.h | 7 ++++++
drivers/s390/net/qeth_core_main.c | 39 ++++++++++++++++++++++++++++++++++++++
drivers/s390/net/qeth_core_mpc.h | 17 ++++++++++++++++
drivers/s390/net/qeth_core_sys.c | 38 ++++++++++++++++++++++++++++++++++++-
4 files changed, 100 insertions(+), 1 deletion(-)
--- a/drivers/s390/net/qeth_core.h
+++ b/drivers/s390/net/qeth_core.h
@@ -766,6 +766,11 @@ struct carrier_info {
__u32 port_speed;
};
+struct qeth_switch_info {
+ __u32 capabilities;
+ __u32 settings;
+};
+
#define QETH_NAPI_WEIGHT NAPI_POLL_WEIGHT
struct qeth_card {
@@ -946,6 +951,8 @@ struct qeth_cmd_buffer *qeth_wait_for_bu
int qeth_mdio_read(struct net_device *, int, int);
int qeth_snmp_command(struct qeth_card *, char __user *);
int qeth_query_oat_command(struct qeth_card *, char __user *);
+int qeth_query_switch_attributes(struct qeth_card *card,
+ struct qeth_switch_info *sw_info);
int qeth_query_card_info(struct qeth_card *card,
struct carrier_info *carrier_info);
int qeth_send_control_data(struct qeth_card *, int, struct qeth_cmd_buffer *,
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -3037,6 +3037,45 @@ int qeth_query_ipassists(struct qeth_car
}
EXPORT_SYMBOL_GPL(qeth_query_ipassists);
+static int qeth_query_switch_attributes_cb(struct qeth_card *card,
+ struct qeth_reply *reply, unsigned long data)
+{
+ struct qeth_ipa_cmd *cmd;
+ struct qeth_switch_info *sw_info;
+ struct qeth_query_switch_attributes *attrs;
+
+ QETH_CARD_TEXT(card, 2, "qswiatcb");
+ cmd = (struct qeth_ipa_cmd *) data;
+ sw_info = (struct qeth_switch_info *)reply->param;
+ if (cmd->data.setadapterparms.hdr.return_code == 0) {
+ attrs = &cmd->data.setadapterparms.data.query_switch_attributes;
+ sw_info->capabilities = attrs->capabilities;
+ sw_info->settings = attrs->settings;
+ QETH_CARD_TEXT_(card, 2, "%04x%04x", sw_info->capabilities,
+ sw_info->settings);
+ }
+ qeth_default_setadapterparms_cb(card, reply, (unsigned long) cmd);
+
+ return 0;
+}
+
+int qeth_query_switch_attributes(struct qeth_card *card,
+ struct qeth_switch_info *sw_info)
+{
+ struct qeth_cmd_buffer *iob;
+
+ QETH_CARD_TEXT(card, 2, "qswiattr");
+ if (!qeth_adp_supported(card, IPA_SETADP_QUERY_SWITCH_ATTRIBUTES))
+ return -EOPNOTSUPP;
+ if (!netif_carrier_ok(card->dev))
+ return -ENOMEDIUM;
+ iob = qeth_get_adapter_cmd(card, IPA_SETADP_QUERY_SWITCH_ATTRIBUTES,
+ sizeof(struct qeth_ipacmd_setadpparms_hdr));
+ return qeth_send_ipa_cmd(card, iob,
+ qeth_query_switch_attributes_cb, sw_info);
+}
+EXPORT_SYMBOL_GPL(qeth_query_switch_attributes);
+
static int qeth_query_setdiagass_cb(struct qeth_card *card,
struct qeth_reply *reply, unsigned long data)
{
--- a/drivers/s390/net/qeth_core_mpc.h
+++ b/drivers/s390/net/qeth_core_mpc.h
@@ -242,6 +242,7 @@ enum qeth_ipa_setadp_cmd {
IPA_SETADP_SET_DIAG_ASSIST = 0x00002000L,
IPA_SETADP_SET_ACCESS_CONTROL = 0x00010000L,
IPA_SETADP_QUERY_OAT = 0x00080000L,
+ IPA_SETADP_QUERY_SWITCH_ATTRIBUTES = 0x00100000L,
};
enum qeth_ipa_mac_ops {
CHANGE_ADDR_READ_MAC = 0,
@@ -431,6 +432,21 @@ struct qeth_query_card_info {
__u32 reserved2;
};
+#define QETH_SWITCH_FORW_802_1 0x00000001
+#define QETH_SWITCH_FORW_REFL_RELAY 0x00000002
+#define QETH_SWITCH_CAP_RTE 0x00000004
+#define QETH_SWITCH_CAP_ECP 0x00000008
+#define QETH_SWITCH_CAP_VDP 0x00000010
+
+struct qeth_query_switch_attributes {
+ __u8 version;
+ __u8 reserved1;
+ __u16 reserved2;
+ __u32 capabilities;
+ __u32 settings;
+ __u8 reserved3[8];
+};
+
struct qeth_ipacmd_setadpparms_hdr {
__u32 supp_hw_cmds;
__u32 reserved1;
@@ -452,6 +468,7 @@ struct qeth_ipacmd_setadpparms {
struct qeth_set_access_ctrl set_access_ctrl;
struct qeth_query_oat query_oat;
struct qeth_query_card_info card_info;
+ struct qeth_query_switch_attributes query_switch_attributes;
__u32 mode;
} data;
} __attribute__ ((packed));
--- a/drivers/s390/net/qeth_core_sys.c
+++ b/drivers/s390/net/qeth_core_sys.c
@@ -543,7 +543,42 @@ out:
}
static DEVICE_ATTR(isolation, 0644, qeth_dev_isolation_show,
- qeth_dev_isolation_store);
+ qeth_dev_isolation_store);
+
+static ssize_t qeth_dev_switch_attrs_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct qeth_card *card = dev_get_drvdata(dev);
+ struct qeth_switch_info sw_info;
+ int rc = 0;
+
+ if (!card)
+ return -EINVAL;
+
+ if (card->state != CARD_STATE_SOFTSETUP && card->state != CARD_STATE_UP)
+ return sprintf(buf, "n/a\n");
+
+ rc = qeth_query_switch_attributes(card, &sw_info);
+ if (rc)
+ return rc;
+
+ if (!sw_info.capabilities)
+ rc = sprintf(buf, "unknown");
+
+ if (sw_info.capabilities & QETH_SWITCH_FORW_802_1)
+ rc = sprintf(buf, (sw_info.settings & QETH_SWITCH_FORW_802_1 ?
+ "[802.1]" : "802.1"));
+ if (sw_info.capabilities & QETH_SWITCH_FORW_REFL_RELAY)
+ rc += sprintf(buf + rc,
+ (sw_info.settings & QETH_SWITCH_FORW_REFL_RELAY ?
+ " [rr]" : " rr"));
+ rc += sprintf(buf + rc, "\n");
+
+ return rc;
+}
+
+static DEVICE_ATTR(switch_attrs, 0444,
+ qeth_dev_switch_attrs_show, NULL);
static ssize_t qeth_hw_trap_show(struct device *dev,
struct device_attribute *attr, char *buf)
@@ -728,6 +763,7 @@ static struct attribute *qeth_device_att
&dev_attr_layer2.attr,
&dev_attr_isolation.attr,
&dev_attr_hw_trap.attr,
+ &dev_attr_switch_attrs.attr,
NULL,
};
static struct attribute_group qeth_device_attr_group = {
^ permalink raw reply [flat|nested] 6+ messages in thread
* [patch 2/2] af_iucv: avoid path quiesce of severed path in shutdown()
2014-07-21 10:54 [patch 0/2] s390: network patches for net-next frank.blaschka
2014-07-21 10:54 ` [patch 1/2] qeth: Display adjacent switch attributes frank.blaschka
@ 2014-07-21 10:54 ` frank.blaschka
2014-07-22 3:22 ` [patch 0/2] s390: network patches for net-next David Miller
2 siblings, 0 replies; 6+ messages in thread
From: frank.blaschka @ 2014-07-21 10:54 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-s390, Ursula Braun, Philipp Hachtmann
[-- Attachment #1: 601-af_iucv-path-quiesce.diff --]
[-- Type: text/plain, Size: 1092 bytes --]
From: Ursula Braun <ursula.braun@de.ibm.com>
An af_iucv stress test showed -EPIPE results for sendmsg()
calls. They are caused by quiescing a path even though it has
been already severed by peer. For IUCV transport shutdown()
consists of 2 steps:
(1) sending the shutdown message to peer
(2) quiescing the iucv path
If the iucv path between these 2 steps is severed due to peer
closing the path, the quiesce step is no longer needed.
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <blaschka@linux.vnet.ibm.com>
Reported-by: Philipp Hachtmann <phacht@linux.vnet.ibm.com>
---
net/iucv/af_iucv.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/net/iucv/af_iucv.c
+++ b/net/iucv/af_iucv.c
@@ -1542,7 +1542,8 @@ static int iucv_sock_shutdown(struct soc
sk->sk_shutdown |= how;
if (how == RCV_SHUTDOWN || how == SHUTDOWN_MASK) {
- if (iucv->transport == AF_IUCV_TRANS_IUCV) {
+ if ((iucv->transport == AF_IUCV_TRANS_IUCV) &&
+ iucv->path) {
err = pr_iucv->path_quiesce(iucv->path, NULL);
if (err)
err = -ENOTCONN;
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch 0/2] s390: network patches for net-next
2014-07-21 10:54 [patch 0/2] s390: network patches for net-next frank.blaschka
2014-07-21 10:54 ` [patch 1/2] qeth: Display adjacent switch attributes frank.blaschka
2014-07-21 10:54 ` [patch 2/2] af_iucv: avoid path quiesce of severed path in shutdown() frank.blaschka
@ 2014-07-22 3:22 ` David Miller
2 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2014-07-22 3:22 UTC (permalink / raw)
To: frank.blaschka; +Cc: netdev, linux-s390
From: frank.blaschka@de.ibm.com
Date: Mon, 21 Jul 2014 12:54:42 +0200
> here are some s390 related patches for net-next
Series applied, thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch 0/2] s390: network patches for net-next
2013-12-16 8:44 frank.blaschka
@ 2013-12-17 22:17 ` David Miller
0 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2013-12-17 22:17 UTC (permalink / raw)
To: frank.blaschka; +Cc: netdev, linux-s390
From: frank.blaschka@de.ibm.com
Date: Mon, 16 Dec 2013 09:44:50 +0100
> here are some s390 related patches for net-next
Series applied, thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [patch 0/2] s390: network patches for net-next
@ 2013-12-16 8:44 frank.blaschka
2013-12-17 22:17 ` David Miller
0 siblings, 1 reply; 6+ messages in thread
From: frank.blaschka @ 2013-12-16 8:44 UTC (permalink / raw)
To: davem; +Cc: netdev, linux-s390
Hi Dave,
here are some s390 related patches for net-next
shortlog:
Ursula Braun (1)
netiucv: improve state checking in conn_action_txdone
Eugene Crosser (1)
qeth: Accurate ethtool output
Thanks,
Frank
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-07-22 3:22 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-21 10:54 [patch 0/2] s390: network patches for net-next frank.blaschka
2014-07-21 10:54 ` [patch 1/2] qeth: Display adjacent switch attributes frank.blaschka
2014-07-21 10:54 ` [patch 2/2] af_iucv: avoid path quiesce of severed path in shutdown() frank.blaschka
2014-07-22 3:22 ` [patch 0/2] s390: network patches for net-next David Miller
-- strict thread matches above, loose matches on Subject: below --
2013-12-16 8:44 frank.blaschka
2013-12-17 22:17 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).