s390: network patches for net-next
Subsystems (4)
cover s390: network patches for net-next
Hi Dave,
here are some s390 related patches for net-next
shortlog:
Stefan Raspl (3)
qeth: Fix default queue setting in priority queueing
qeth: Extend priority queueing to IPv6
qeth: Add new priority queueing options
Duan Jiong (2)
lcs: replace PTR_RET with PTR_ERR_OR_ZERO
qeth: replace PTR_RET with PTR_ERR_OR_ZERO
Frank Blaschka (2)
claw: replace PTR_RET with PTR_ERR_OR_ZERO
ctc: replace PTR_RET with PTR_ERR_OR_ZERO
Thanks,
Frank
PATCH 1/7 qeth: Fix default queue setting in priority queueing
From: Stefan Raspl <[email protected]>
The default queue for queueing modes prio_queueing_prec and prio_queueing_tos is supposed to be QETH_DEFAULT_QUEUE. However, neither mode will reset the default default_out_queue value when enabled, leaving a previously set value activate as the default.
E.g. enabling one of the fixed queueing modes, e.g. no_prio_queueing:0, and successively switching to any of the prio_queueing_* modes will leave default_out_queue at the previous (wrong) value 0.
--- drivers/s390/net/qeth_core_sys.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
drivers/s390/net/qeth_core_sys.c +5 -3
@@ -250,11 +250,13 @@ static ssize_t qeth_dev_prioqing_store(struct device *dev, } tmp =strsep ((char **) &buf,"\n" ); -if (!strcmp (tmp,"prio_queueing_prec" )) +if (!strcmp (tmp,"prio_queueing_prec" )) { card->qdio.do_prio_queueing =QETH_PRIO_Q_ING_PREC ; -else if (!strcmp (tmp,"prio_queueing_tos" )) + card->qdio.default_out_queue =QETH_DEFAULT_QUEUE ; + }else if (!strcmp (tmp,"prio_queueing_tos" )) { card->qdio.do_prio_queueing =QETH_PRIO_Q_ING_TOS ; -else if (!strcmp (tmp,"no_prio_queueing:0" )) { + card->qdio.default_out_queue =QETH_DEFAULT_QUEUE ; + }else if (!strcmp (tmp,"no_prio_queueing:0" )) { card->qdio.do_prio_queueing =QETH_NO_PRIO_QUEUEING ; card->qdio.default_out_queue =0 ; }else if (!strcmp (tmp,"no_prio_queueing:1" )) {
PATCH 2/7 lcs: replace PTR_RET with PTR_ERR_OR_ZERO
In reply to [email protected]From: Duan Jiong <[email protected]>
PTR_RET is deprecated. Do not recommend its usage anymore. Use PTR_ERR_OR_ZERO instead.
--- drivers/s390/net/lcs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/s390/net/lcs.c +1 -1
@@ -2442,7 +2442,7 @@ __init lcs_init_module(void)if (rc) goto out_err; lcs_root_dev =root_device_register ("lcs" ); - rc =PTR_RET (lcs_root_dev); + rc =PTR_ERR_OR_ZERO (lcs_root_dev);if (rc) goto register_err; rc =ccw_driver_register (&lcs_ccw_driver);
PATCH 3/7 qeth: replace PTR_RET with PTR_ERR_OR_ZERO
In reply to [email protected]From: Duan Jiong <[email protected]>
PTR_RET is deprecated. Do not recommend its usage anymore. Use PTR_ERR_OR_ZERO instead.
--- drivers/s390/net/qeth_core_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/s390/net/qeth_core_main.c +1 -1
@@ -5824,7 +5824,7 @@ static int __init qeth_core_init(void)if (rc) goto out_err; qeth_core_root_dev =root_device_register ("qeth" ); - rc =PTR_RET (qeth_core_root_dev); + rc =PTR_ERR_OR_ZERO (qeth_core_root_dev);if (rc) goto register_err; qeth_core_header_cache = kmem_cache_create("qeth_hdr",
PATCH 4/7 qeth: Extend priority queueing to IPv6
In reply to [email protected]From: Stefan Raspl <[email protected]>
Make the current priority queueing logic apply to IPv6 traffic.
--- drivers/s390/net/qeth_core.h | 4 --- drivers/s390/net/qeth_core_main.c | 62 ++++++++++++++++++++++----------------- drivers/s390/net/qeth_l2_main.c | 11 +++++-- drivers/s390/net/qeth_l3_main.c | 7 +++-- 4 files changed, 48 insertions(+), 36 deletions(-)
drivers/s390/net/qeth_core.h +0 -4
@@ -268,10 +268,6 @@ static inline int qeth_is_ipa_enabled(struct qeth_ipa_info *ipa,#define QETH_NO_PRIO_QUEUEING 0#define QETH_PRIO_Q_ING_PREC 1#define QETH_PRIO_Q_ING_TOS 2 -#define IP_TOS_LOWDELAY 0x10 -#define IP_TOS_HIGHTHROUGHPUT 0x08 -#define IP_TOS_HIGHRELIABILITY 0x04 -#define IP_TOS_NOTIMPORTANT 0x02/* Packing */ #define QETH_LOW_WATERMARK_PACK 2
drivers/s390/net/qeth_core_main.c +35 -27
83 lines not on this page · raw message
drivers/s390/net/qeth_l2_main.c +8 -3
@@ -725,15 +725,20 @@ static int qeth_l2_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)int elements =0 ;struct qeth_card *card = dev->ml_priv;struct sk_buff *new_skb = skb; -int ipv =qeth_get_ip_version (skb);int cast_type =qeth_l2_get_cast_type (card, skb); -struct qeth_qdio_out_q *queue = card->qdio.out_qs - [qeth_get_priority_queue (card, skb, ipv, cast_type)]; +struct qeth_qdio_out_q *queue;int tx_bytes = skb->len;int data_offset =-1 ;int elements_needed =0 ;int hd_len =0 ; +if (card->qdio.do_prio_queueing || (cast_type && + card->info.is_multicast_different)) + queue = card->qdio.out_qs[qeth_get_priority_queue (card, skb, +qeth_get_ip_version (skb), cast_type)]; +else + queue = card->qdio.out_qs[card->qdio.default_out_queue]; +if ((card->state !=CARD_STATE_UP ) || !card->lan_online) { card->stats.tx_carrier_errors++; goto tx_drop;
drivers/s390/net/qeth_l3_main.c +5 -2
@@ -2926,8 +2926,11 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)struct sk_buff *new_skb =NULL ;int ipv =qeth_get_ip_version (skb);int cast_type =qeth_l3_get_cast_type (card, skb); -struct qeth_qdio_out_q *queue = card->qdio.out_qs - [qeth_get_priority_queue (card, skb, ipv, cast_type)]; +struct qeth_qdio_out_q *queue = + card->qdio.out_qs[card->qdio.do_prio_queueing + || (cast_type && card->info.is_multicast_different) ? +qeth_get_priority_queue (card, skb, ipv, cast_type) : + card->qdio.default_out_queue];int tx_bytes = skb->len;bool large_send;int data_offset =-1 ;
PATCH 5/7 qeth: Add new priority queueing options
In reply to [email protected]From: Stefan Raspl <[email protected]>
The existing options for priority queueing within OSA devices were based on the now partially defunct TOS field. This patch adds two new options as follows:
- prio_queueing_skb: bases priority queueing on skb-priority
- prio_queueing_vlan: uses the priority code point in the 802.1Q header
--- drivers/s390/net/qeth_core.h | 2 ++ drivers/s390/net/qeth_core_main.c | 15 +++++++++++---- drivers/s390/net/qeth_core_sys.c | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-)
drivers/s390/net/qeth_core.h +2 -0
@@ -268,6 +268,8 @@ static inline int qeth_is_ipa_enabled(struct qeth_ipa_info *ipa,#define QETH_NO_PRIO_QUEUEING 0#define QETH_PRIO_Q_ING_PREC 1#define QETH_PRIO_Q_ING_TOS 2 +#define QETH_PRIO_Q_ING_SKB 3 +#define QETH_PRIO_Q_ING_VLAN 4/* Packing */ #define QETH_LOW_WATERMARK_PACK 2
drivers/s390/net/qeth_core_main.c +11 -4
@@ -3677,12 +3677,9 @@ EXPORT_SYMBOL_GPL(qeth_qdio_output_handler);int qeth_get_priority_queue (struct qeth_card *card,struct sk_buff *skb,int ipv,int cast_type) { +__be16 *tci;u8 tos; -if (!ipv && (card->info.type ==QETH_CARD_TYPE_OSD || - card->info.type ==QETH_CARD_TYPE_OSX )) -return card->qdio.default_out_queue; -if (cast_type && card->info.is_multicast_different)return card->info.is_multicast_different & (card->qdio.no_out_queues -1 );
@@ -3710,6 +3707,16 @@ int qeth_get_priority_queue(struct qeth_card *card, struct sk_buff *skb,return 1 ;if (tos &IPTOS_LOWDELAY )return 0 ; +break ; +case QETH_PRIO_Q_ING_SKB : +if (skb->priority >5 ) +return 0 ; +return ~skb->priority >>1 &3 ; +case QETH_PRIO_Q_ING_VLAN : + tci = &((struct ethhdr *)skb->data)->h_proto; +if (*tci ==ETH_P_8021Q ) +return ~*(tci +1 ) >> (VLAN_PRIO_SHIFT +1 ) &3 ; +break ;default :break ; }
drivers/s390/net/qeth_core_sys.c +14 -0
@@ -217,6 +217,10 @@ static ssize_t qeth_dev_prioqing_show(struct device *dev,return sprintf (buf,"%s\n" ,"by precedence" );case QETH_PRIO_Q_ING_TOS :return sprintf (buf,"%s\n" ,"by type of service" ); +case QETH_PRIO_Q_ING_SKB : +return sprintf (buf,"%s\n" ,"by skb-priority" ); +case QETH_PRIO_Q_ING_VLAN : +return sprintf (buf,"%s\n" ,"by VLAN headers" );default :return sprintf (buf,"always queue %i\n" , card->qdio.default_out_queue);
@@ -253,9 +257,19 @@ static ssize_t qeth_dev_prioqing_store(struct device *dev,if (!strcmp (tmp,"prio_queueing_prec" )) { card->qdio.do_prio_queueing =QETH_PRIO_Q_ING_PREC ; card->qdio.default_out_queue =QETH_DEFAULT_QUEUE ; + }else if (!strcmp (tmp,"prio_queueing_skb" )) { + card->qdio.do_prio_queueing =QETH_PRIO_Q_ING_SKB ; + card->qdio.default_out_queue =QETH_DEFAULT_QUEUE ; }else if (!strcmp (tmp,"prio_queueing_tos" )) { card->qdio.do_prio_queueing =QETH_PRIO_Q_ING_TOS ; card->qdio.default_out_queue =QETH_DEFAULT_QUEUE ; + }else if (!strcmp (tmp,"prio_queueing_vlan" )) { +if (!card->options.layer2) { + rc = -ENOTSUPP ; + goto out; + } + card->qdio.do_prio_queueing =QETH_PRIO_Q_ING_VLAN ; + card->qdio.default_out_queue =QETH_DEFAULT_QUEUE ; }else if (!strcmp (tmp,"no_prio_queueing:0" )) { card->qdio.do_prio_queueing =QETH_NO_PRIO_QUEUEING ; card->qdio.default_out_queue =0 ;
PATCH 6/7 claw: replace PTR_RET with PTR_ERR_OR_ZERO
In reply to [email protected]From: Frank Blaschka <[email protected]>
PTR_RET is deprecated. Do not recommend its usage anymore. Use PTR_ERR_OR_ZERO instead.
--- drivers/s390/net/claw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/s390/net/claw.c +1 -1
@@ -3348,7 +3348,7 @@ static int __init claw_init(void) }CLAW_DBF_TEXT (2 , setup,"init_mod" ); claw_root_dev =root_device_register ("claw" ); - ret =PTR_RET (claw_root_dev); + ret =PTR_ERR_OR_ZERO (claw_root_dev);if (ret) goto register_err; ret =ccw_driver_register (&claw_ccw_driver);
PATCH 7/7 ctc: replace PTR_RET with PTR_ERR_OR_ZERO
In reply to [email protected]From: Frank Blaschka <[email protected]>
PTR_RET is deprecated. Do not recommend its usage anymore. Use PTR_ERR_OR_ZERO instead.
--- drivers/s390/net/ctcm_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/s390/net/ctcm_main.c +1 -1
@@ -1837,7 +1837,7 @@ static int __init ctcm_init(void)if (ret) goto out_err; ctcm_root_dev =root_device_register ("ctcm" ); - ret =PTR_RET (ctcm_root_dev); + ret =PTR_ERR_OR_ZERO (ctcm_root_dev);if (ret) goto register_err; ret =ccw_driver_register (&ctcm_ccw_driver);
David Miller
maintainerFrom: [email protected]
Date: Mon, 28 Apr 2014 10:05:04 +0200
Quoted 1 line
here are some s390 related patches for net-next
Series applied, thanks Frank.