s390: qeth patches for 2.6.34
Subsystems (4)
cover s390: qeth patches for 2.6.34
Hi Dave,
here are a couple of qeth patches for 2.6.34 (net-next).
shortlog:
Ursula Braun (2)
qeth: HiperSockets Network Traffic Analyzer
qeth: avoid recovery during device online setting
Einar Lueck (1)
qeth: default BLKT values for new OSA/3 hardware
Thanks,
Frank
PATCH 1/3 qeth: HiperSockets Network Traffic Analyzer
From: Ursula Braun <[email protected]>
New feature to trace HiperSockets network traffic for debugging purposes.
---
drivers/s390/net/qeth_core.h | 5 - drivers/s390/net/qeth_core_main.c | 130 ++++++++++++++++------------ drivers/s390/net/qeth_core_mpc.h | 44 +++++++++ drivers/s390/net/qeth_core_sys.c | 8 + drivers/s390/net/qeth_l2_main.c | 3 drivers/s390/net/qeth_l3.h | 2 drivers/s390/net/qeth_l3_main.c | 174 ++++++++++++++++++++++++++++++++------ drivers/s390/net/qeth_l3_sys.c | 56 ++++++++++++ 8 files changed, 336 insertions(+), 86 deletions(-)
drivers/s390/net/qeth_core.h +4 -1
@@ -649,6 +649,7 @@ struct qeth_card_options {int performance_stats;int rx_sg_cb;enum qeth_ipa_isolation_modes isolation; +int sniffer; };/*
@@ -737,6 +738,7 @@ struct qeth_card {struct qeth_discipline discipline;atomic_t force_alloc_skb;struct service_level qeth_service_level; +struct qdio_ssqd_desc ssqd; };struct qeth_card_list_struct {
@@ -811,7 +813,8 @@ int qeth_send_ipa_cmd(struct qeth_card *struct qeth_cmd_buffer *qeth_get_ipacmd_buffer (struct qeth_card *,enum qeth_ipa_cmds ,enum qeth_prot_versions );int qeth_query_setadapterparms (struct qeth_card *); -int qeth_check_qdio_errors (struct qdio_buffer *,unsigned int ,const char *); +int qeth_check_qdio_errors (struct qeth_card *,struct qdio_buffer *, +unsigned int ,const char *);void qeth_queue_input_buffer (struct qeth_card *,int ); struct sk_buff *qeth_core_get_next_skb(struct qeth_card *, struct qdio_buffer *, struct qdio_buffer_element **, int *,
drivers/s390/net/qeth_core_main.c +74 -56
227 lines not on this page · raw message
drivers/s390/net/qeth_core_mpc.h +43 -1
80 lines not on this page · raw message
drivers/s390/net/qeth_core_sys.c +5 -3
@@ -118,7 +118,7 @@ static ssize_t qeth_dev_portno_store(str {struct qeth_card *card =dev_get_drvdata (dev);char *tmp; -unsigned int portno; +unsigned int portno, limit;if (!card)return -EINVAL ;
@@ -128,9 +128,11 @@ static ssize_t qeth_dev_portno_store(strreturn -EPERM ; portno =simple_strtoul (buf, &tmp,16 ); -if (portno >QETH_MAX_PORTNO ) { +if (portno >QETH_MAX_PORTNO ) +return -EINVAL ; + limit = (card->ssqd.pcnt ? card->ssqd.pcnt -1 : card->ssqd.pcnt); +if (portno > limit)return -EINVAL ; - } card->info.portno = portno;return count;
drivers/s390/net/qeth_l2_main.c +2 -1
@@ -769,7 +769,8 @@ static void qeth_l2_qdio_input_handler(s index = i %QDIO_MAX_BUFFERS_PER_Q ; buffer = &card->qdio.in_q->bufs[index];if (!(qdio_err && -qeth_check_qdio_errors (buffer->buffer, qdio_err,"qinerr" ))) +qeth_check_qdio_errors (card, buffer->buffer, qdio_err, +"qinerr" )))qeth_l2_process_inbound_buffer (card, buffer, index);/* clear buffer and give back to hardware */ qeth_put_buffer_pool_entry (card, buffer->pool_entry);
drivers/s390/net/qeth_l3.h +2 -0
@@ -13,6 +13,8 @@#include "qeth_core.h" +#define QETH_SNIFF_AVAIL 0x0008 +struct qeth_ipaddr {struct list_head entry;enum qeth_ip_types type;
drivers/s390/net/qeth_l3_main.c +150 -24
270 lines not on this page · raw message
drivers/s390/net/qeth_l3_sys.c +56 -0
68 lines not on this page · raw message
David Miller
maintainerRe: [patch 1/3] [PATCH] qeth: HiperSockets Network Traffic Analyzer
From: [email protected]
Date: Mon, 11 Jan 2010 13:50:50 +0100
Quoted 7 lines
From: Ursula Braun <[email protected]>
New feature to trace HiperSockets network traffic for debugging purposes.
Signed-off-by Ursula Braun <[email protected]>Signed-off-by Frank Blaschka <[email protected]>
How exactly does this work?
PATCH 2/3 qeth: avoid recovery during device online setting
In reply to [email protected]From: Ursula Braun <[email protected]>
If a qeth device is set online, several initialisation steps are performed. If a failure in one of these steps occurs, the qeth device is reset into DOWN state. If due to the failure a qeth recovery is scheduled and started in another thread, this might cause all kinds of conflicts, even a kernel panic. The patch forbids scheduling of a qeth recovery while online processing is performed till the card is in state SOFTSETUP.
---
drivers/s390/net/qeth_l2_main.c | 1 - drivers/s390/net/qeth_l3_main.c | 2 -- 2 files changed, 3 deletions(-)
drivers/s390/net/qeth_l2_main.c +0 -1
@@ -927,7 +927,6 @@ static int __qeth_l2_set_online(struct cQETH_DBF_TEXT (SETUP ,2 ,"setonlin" );QETH_DBF_HEX (SETUP ,2 , &card,sizeof (void *)); -qeth_set_allowed_threads (card,QETH_RECOVER_THREAD ,1 ); recover_flag = card->state; rc =qeth_core_hardsetup_card (card);if (rc) {
drivers/s390/net/qeth_l3_main.c +0 -2
@@ -3338,8 +3338,6 @@ static int __qeth_l3_set_online(struct cQETH_DBF_TEXT (SETUP ,2 ,"setonlin" );QETH_DBF_HEX (SETUP ,2 , &card,sizeof (void *)); -qeth_set_allowed_threads (card,QETH_RECOVER_THREAD ,1 ); - recover_flag = card->state; rc =qeth_core_hardsetup_card (card);if (rc) {
PATCH 3/3 qeth: default BLKT values for new OSA/3 hardware
In reply to [email protected]From: Einar Lueck <[email protected]>
Set default BLKT values for new OSA/3 hardware.
---
drivers/s390/net/qeth_core_main.c | 41 ++++++++++++++++++++++++-------------- drivers/s390/net/qeth_core_sys.c | 6 ++--- 2 files changed, 29 insertions(+), 18 deletions(-)
drivers/s390/net/qeth_core_main.c +26 -15
@@ -1362,26 +1362,29 @@ static int qeth_read_conf_data(struct qereturn ret; } -static int qeth_get_unitaddr (struct qeth_card *card) +static void qeth_configure_unitaddr (struct qeth_card *card,char *prcd) { -int length; -char *prcd; -int rc; - -QETH_DBF_TEXT (SETUP ,2 ,"getunit" ); - rc =qeth_read_conf_data (card, (void **) &prcd, &length); -if (rc) { -QETH_DBF_MESSAGE (2 ,"%s qeth_read_conf_data returned %i\n" , -dev_name (&card->gdev->dev), rc); -return rc; - } +QETH_DBF_TEXT (SETUP ,2 ,"cfgunit" ); card->info.chpid = prcd[30 ]; card->info.unit_addr2 = prcd[31 ]; card->info.cula = prcd[63 ]; card->info.guestlan = ((prcd[0x10 ] == _ascebc['V' ]) && (prcd[0x11 ] == _ascebc['M' ])); -kfree (prcd); -return 0 ; +} + +static void qeth_configure_blkt_default (struct qeth_card *card,char *prcd) +{ +QETH_DBF_TEXT (SETUP ,2 ,"cfgblkt" ); + +if (prcd[74 ] ==0xF0 && prcd[75 ] ==0xF0 && prcd[76 ] ==0xF5 ) { + card->info.blkt.time_total =250 ; + card->info.blkt.inter_packet =5 ; + card->info.blkt.inter_packet_jumbo =15 ; + }else { + card->info.blkt.time_total =0 ; + card->info.blkt.inter_packet =0 ; + card->info.blkt.inter_packet_jumbo =0 ; + } }static void qeth_init_tokens (struct qeth_card *card)
@@ -4169,6 +4172,8 @@ void qeth_core_free_discipline(struct qestatic void qeth_determine_capabilities (struct qeth_card *card) {int rc; +int length; +char *prcd;QETH_DBF_TEXT (SETUP ,2 ,"detcapab" ); rc =ccw_device_set_online (CARD_DDEV (card));
@@ -4177,11 +4182,17 @@ static void qeth_determine_capabilities( goto out; } - rc =qeth_get_unitaddr (card); + + rc =qeth_read_conf_data (card, (void **) &prcd, &length);if (rc) { +QETH_DBF_MESSAGE (2 ,"%s qeth_read_conf_data returned %i\n" , +dev_name (&card->gdev->dev), rc);QETH_DBF_TEXT_ (SETUP ,2 ,"5err%d" , rc); goto out_offline; } +qeth_configure_unitaddr (card, prcd); +qeth_configure_blkt_default (card, prcd); +kfree (prcd); rc =qdio_get_ssqd_desc (CARD_DDEV (card), &card->ssqd);if (rc)
drivers/s390/net/qeth_core_sys.c +3 -3
@@ -539,7 +539,7 @@ static ssize_t qeth_dev_blkt_total_storestruct qeth_card *card =dev_get_drvdata (dev);return qeth_dev_blkt_store (card, buf, count, - &card->info.blkt.time_total,1000 ); + &card->info.blkt.time_total,5000 ); }
@@ -561,7 +561,7 @@ static ssize_t qeth_dev_blkt_inter_storestruct qeth_card *card =dev_get_drvdata (dev);return qeth_dev_blkt_store (card, buf, count, - &card->info.blkt.inter_packet,100 ); + &card->info.blkt.inter_packet,1000 ); } static DEVICE_ATTR(inter, 0644, qeth_dev_blkt_inter_show,
@@ -582,7 +582,7 @@ static ssize_t qeth_dev_blkt_inter_jumbostruct qeth_card *card =dev_get_drvdata (dev);return qeth_dev_blkt_store (card, buf, count, - &card->info.blkt.inter_packet_jumbo,100 ); + &card->info.blkt.inter_packet_jumbo,1000 ); } static DEVICE_ATTR(inter_jumbo, 0644, qeth_dev_blkt_inter_jumbo_show,