netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 0/1] s390: ctc patch for 2.6.24
@ 2007-11-29 16:36 Ursula Braun
  2007-11-29 16:36 ` [patch 1/1] ctc: make use of alloc_netdev() Ursula Braun
  0 siblings, 1 reply; 5+ messages in thread
From: Ursula Braun @ 2007-11-29 16:36 UTC (permalink / raw)
  To: jgarzik, netdev, linux-s390

-- 
The following patch is intended for 2.6.24 and repairs the
ctc driver by introducing alloc_netdev().

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [patch 1/1] ctc: make use of alloc_netdev()
  2007-11-29 16:36 [patch 0/1] s390: ctc patch for 2.6.24 Ursula Braun
@ 2007-11-29 16:36 ` Ursula Braun
  2007-11-29 17:12   ` Stephen Hemminger
  2007-12-01 21:33   ` Jeff Garzik
  0 siblings, 2 replies; 5+ messages in thread
From: Ursula Braun @ 2007-11-29 16:36 UTC (permalink / raw)
  To: jgarzik, netdev, linux-s390; +Cc: Peter Tiedemann

[-- Attachment #1: ctc.diff --]
[-- Type: text/plain, Size: 2861 bytes --]

From: Peter Tiedemann <ptiedem@de.ibm.com>

Currently ctc-device initialization is broken (kernel bug in
ctc_new_device).
The new network namespace code reveals a deficiency of the
ctc driver. It should make use of alloc_netdev() as described
in Documentation/networking/netdevices.txt.

Signed-off-by: Peter Tiedemann <ptiedem@de.ibm.com>
Signed-off-by: Ursula Braun <braunu@de.ibm.com>
---
 drivers/s390/net/ctcmain.c |   45 ++++++++++++++++-----------------------------
 1 file changed, 16 insertions(+), 29 deletions(-)

Index: linux-2.6-uschi/drivers/s390/net/ctcmain.c
===================================================================
--- linux-2.6-uschi.orig/drivers/s390/net/ctcmain.c
+++ linux-2.6-uschi/drivers/s390/net/ctcmain.c
@@ -2782,35 +2782,14 @@ ctc_probe_device(struct ccwgroup_device 
 }
 
 /**
- * Initialize everything of the net device except the name and the
- * channel structs.
+ * Device setup function called by alloc_netdev().
+ *
+ * @param dev  Device to be setup.
  */
-static struct net_device *
-ctc_init_netdevice(struct net_device * dev, int alloc_device,
-		   struct ctc_priv *privptr)
+void ctc_init_netdevice(struct net_device * dev)
 {
-	if (!privptr)
-		return NULL;
-
 	DBF_TEXT(setup, 3, __FUNCTION__);
 
-	if (alloc_device) {
-		dev = kzalloc(sizeof(struct net_device), GFP_KERNEL);
-		if (!dev)
-			return NULL;
-	}
-
-	dev->priv = privptr;
-	privptr->fsm = init_fsm("ctcdev", dev_state_names,
-				dev_event_names, CTC_NR_DEV_STATES, CTC_NR_DEV_EVENTS,
-				dev_fsm, DEV_FSM_LEN, GFP_KERNEL);
-	if (privptr->fsm == NULL) {
-		if (alloc_device)
-			kfree(dev);
-		return NULL;
-	}
-	fsm_newstate(privptr->fsm, DEV_STATE_STOPPED);
-	fsm_settimer(privptr->fsm, &privptr->restart_timer);
 	if (dev->mtu == 0)
 		dev->mtu = CTC_BUFSIZE_DEFAULT - LL_HEADER_LENGTH - 2;
 	dev->hard_start_xmit = ctc_tx;
@@ -2823,7 +2802,7 @@ ctc_init_netdevice(struct net_device * d
 	dev->type = ARPHRD_SLIP;
 	dev->tx_queue_len = 100;
 	dev->flags = IFF_POINTOPOINT | IFF_NOARP;
-	return dev;
+	SET_MODULE_OWNER(dev);
 }
 
 
@@ -2879,14 +2858,22 @@ ctc_new_device(struct ccwgroup_device *c
 		 	"ccw_device_set_online (cdev[1]) failed with ret = %d\n", ret);
 	}
 
-	dev = ctc_init_netdevice(NULL, 1, privptr);
-
+	dev = alloc_netdev(0, "ctc%d", ctc_init_netdevice);
 	if (!dev) {
 		ctc_pr_warn("ctc_init_netdevice failed\n");
 		goto out;
 	}
+	dev->priv = privptr;
 
-	strlcpy(dev->name, "ctc%d", IFNAMSIZ);
+	privptr->fsm = init_fsm("ctcdev", dev_state_names,
+			dev_event_names, CTC_NR_DEV_STATES, CTC_NR_DEV_EVENTS,
+			dev_fsm, DEV_FSM_LEN, GFP_KERNEL);
+	if (privptr->fsm == NULL) {
+		free_netdev(dev);
+		goto out;
+	}
+	fsm_newstate(privptr->fsm, DEV_STATE_STOPPED);
+	fsm_settimer(privptr->fsm, &privptr->restart_timer);
 
 	for (direction = READ; direction <= WRITE; direction++) {
 		privptr->channel[direction] =

-- 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [patch 1/1] ctc: make use of alloc_netdev()
  2007-11-29 16:36 ` [patch 1/1] ctc: make use of alloc_netdev() Ursula Braun
@ 2007-11-29 17:12   ` Stephen Hemminger
  2007-11-30  1:33     ` Peter Tiedemann
  2007-12-01 21:33   ` Jeff Garzik
  1 sibling, 1 reply; 5+ messages in thread
From: Stephen Hemminger @ 2007-11-29 17:12 UTC (permalink / raw)
  To: Ursula Braun; +Cc: jgarzik, netdev, linux-s390, Peter Tiedemann

On Thu, 29 Nov 2007 17:36:27 +0100
Ursula Braun <braunu@de.ibm.com> wrote:

> From: Peter Tiedemann <ptiedem@de.ibm.com>
> 
> Currently ctc-device initialization is broken (kernel bug in
> ctc_new_device).
> The new network namespace code reveals a deficiency of the
> ctc driver. It should make use of alloc_netdev() as described
> in Documentation/networking/netdevices.txt.
> 
> Signed-off-by: Peter Tiedemann <ptiedem@de.ibm.com>
> Signed-off-by: Ursula Braun <braunu@de.ibm.com>
> ---
>  drivers/s390/net/ctcmain.c |   45 ++++++++++++++++-----------------------------
>  1 file changed, 16 insertions(+), 29 deletions(-)
> 
> Index: linux-2.6-uschi/drivers/s390/net/ctcmain.c
> ===================================================================
> --- linux-2.6-uschi.orig/drivers/s390/net/ctcmain.c
> +++ linux-2.6-uschi/drivers/s390/net/ctcmain.c
> @@ -2782,35 +2782,14 @@ ctc_probe_device(struct ccwgroup_device 
>  }
>  
>  /**
> - * Initialize everything of the net device except the name and the
> - * channel structs.
> + * Device setup function called by alloc_netdev().
> + *
> + * @param dev  Device to be setup.
>   */
> -static struct net_device *
> -ctc_init_netdevice(struct net_device * dev, int alloc_device,
> -		   struct ctc_priv *privptr)
> +void ctc_init_netdevice(struct net_device * dev)
>  {
> -	if (!privptr)
> -		return NULL;
> -
>  	DBF_TEXT(setup, 3, __FUNCTION__);
>  
> -	if (alloc_device) {
> -		dev = kzalloc(sizeof(struct net_device), GFP_KERNEL);
> -		if (!dev)
> -			return NULL;
> -	}
> -
> -	dev->priv = privptr;
> -	privptr->fsm = init_fsm("ctcdev", dev_state_names,
> -				dev_event_names, CTC_NR_DEV_STATES, CTC_NR_DEV_EVENTS,
> -				dev_fsm, DEV_FSM_LEN, GFP_KERNEL);
> -	if (privptr->fsm == NULL) {
> -		if (alloc_device)
> -			kfree(dev);
> -		return NULL;
> -	}
> -	fsm_newstate(privptr->fsm, DEV_STATE_STOPPED);
> -	fsm_settimer(privptr->fsm, &privptr->restart_timer);
>  	if (dev->mtu == 0)
>  		dev->mtu = CTC_BUFSIZE_DEFAULT - LL_HEADER_LENGTH - 2;
>  	dev->hard_start_xmit = ctc_tx;
> @@ -2823,7 +2802,7 @@ ctc_init_netdevice(struct net_device * d
>  	dev->type = ARPHRD_SLIP;
>  	dev->tx_queue_len = 100;
>  	dev->flags = IFF_POINTOPOINT | IFF_NOARP;
> -	return dev;
> +	SET_MODULE_OWNER(dev);
>  }
>  
>  
> @@ -2879,14 +2858,22 @@ ctc_new_device(struct ccwgroup_device *c
>  		 	"ccw_device_set_online (cdev[1]) failed with ret = %d\n", ret);
>  	}
>  
> -	dev = ctc_init_netdevice(NULL, 1, privptr);
> -
> +	dev = alloc_netdev(0, "ctc%d", ctc_init_netdevice);
>  	if (!dev) {
>  		ctc_pr_warn("ctc_init_netdevice failed\n");
>  		goto out;
>  	}
> +	dev->priv = privptr;
> 
Why not use standard private data area, rather than allocating
it separately?

-- 
Stephen Hemminger <shemminger@linux-foundation.org>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [patch 1/1] ctc: make use of alloc_netdev()
  2007-11-29 17:12   ` Stephen Hemminger
@ 2007-11-30  1:33     ` Peter Tiedemann
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Tiedemann @ 2007-11-30  1:33 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: jgarzik, linux-s390, netdev, Ursula Braun1

To maintain the area used for sysfs attribute data which may be stored
already previously.

Mit freundlichen Grüßen / Best regards / Saluti,
          Peter Tiedemann
---------------------------------
phone: +49-7031-16-4172   fax: ++3159    e-mail: PTiedem@de.ibm.com
IBM Deutschland Entwicklung GmbH
Linux for eServer Development, Dept. 3303
Schoenaicher Str. 220
71032 Boeblingen, Germany

IBM Deutschland Entwicklung GmbH, Vorsitzender des Aufsichtsrats: Martin
Jetter, Geschäftsführung: Herbert Kircher
Sitz der Gesellschaft: Böblingen, Registergericht: Amtsgericht Stuttgart,
HRB 243294


                                                                           
             Stephen Hemminger                                             
             <shemminger@linux                                             
             -foundation.org>                                           To 
                                       Ursula Braun1/Germany/IBM@IBMDE     
             29.11.2007 18:12                                           cc 
                                       jgarzik@pobox.com,                  
                                       netdev@vger.kernel.org,             
                                       linux-s390@vger.kernel.org, Peter   
                                       Tiedemann/Germany/IBM@IBMDE         
                                                                   Subject 
                                       Re: [patch 1/1] ctc: make use of    
                                       alloc_netdev()                      
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




On Thu, 29 Nov 2007 17:36:27 +0100
Ursula Braun <braunu@de.ibm.com> wrote:

> From: Peter Tiedemann <ptiedem@de.ibm.com>
>
> Currently ctc-device initialization is broken (kernel bug in
> ctc_new_device).
> The new network namespace code reveals a deficiency of the
> ctc driver. It should make use of alloc_netdev() as described
> in Documentation/networking/netdevices.txt.
>
> Signed-off-by: Peter Tiedemann <ptiedem@de.ibm.com>
> Signed-off-by: Ursula Braun <braunu@de.ibm.com>
> ---
>  drivers/s390/net/ctcmain.c |   45
++++++++++++++++-----------------------------
>  1 file changed, 16 insertions(+), 29 deletions(-)
>
> Index: linux-2.6-uschi/drivers/s390/net/ctcmain.c
> ===================================================================
> --- linux-2.6-uschi.orig/drivers/s390/net/ctcmain.c
> +++ linux-2.6-uschi/drivers/s390/net/ctcmain.c
> @@ -2782,35 +2782,14 @@ ctc_probe_device(struct ccwgroup_device
>  }
>
>  /**
> - * Initialize everything of the net device except the name and the
> - * channel structs.
> + * Device setup function called by alloc_netdev().
> + *
> + * @param dev  Device to be setup.
>   */
> -static struct net_device *
> -ctc_init_netdevice(struct net_device * dev, int alloc_device,
> -                         struct ctc_priv *privptr)
> +void ctc_init_netdevice(struct net_device * dev)
>  {
> -          if (!privptr)
> -                      return NULL;
> -
>            DBF_TEXT(setup, 3, __FUNCTION__);
>
> -          if (alloc_device) {
> -                      dev = kzalloc(sizeof(struct net_device),
GFP_KERNEL);
> -                      if (!dev)
> -                                  return NULL;
> -          }
> -
> -          dev->priv = privptr;
> -          privptr->fsm = init_fsm("ctcdev", dev_state_names,
> -                                              dev_event_names,
CTC_NR_DEV_STATES, CTC_NR_DEV_EVENTS,
> -                                              dev_fsm, DEV_FSM_LEN,
GFP_KERNEL);
> -          if (privptr->fsm == NULL) {
> -                      if (alloc_device)
> -                                  kfree(dev);
> -                      return NULL;
> -          }
> -          fsm_newstate(privptr->fsm, DEV_STATE_STOPPED);
> -          fsm_settimer(privptr->fsm, &privptr->restart_timer);
>            if (dev->mtu == 0)
>                        dev->mtu = CTC_BUFSIZE_DEFAULT - LL_HEADER_LENGTH
- 2;
>            dev->hard_start_xmit = ctc_tx;
> @@ -2823,7 +2802,7 @@ ctc_init_netdevice(struct net_device * d
>            dev->type = ARPHRD_SLIP;
>            dev->tx_queue_len = 100;
>            dev->flags = IFF_POINTOPOINT | IFF_NOARP;
> -          return dev;
> +          SET_MODULE_OWNER(dev);
>  }
>
>
> @@ -2879,14 +2858,22 @@ ctc_new_device(struct ccwgroup_device *c
>                                    "ccw_device_set_online (cdev[1])
failed with ret = %d\n", ret);
>            }
>
> -          dev = ctc_init_netdevice(NULL, 1, privptr);
> -
> +          dev = alloc_netdev(0, "ctc%d", ctc_init_netdevice);
>            if (!dev) {
>                        ctc_pr_warn("ctc_init_netdevice failed\n");
>                        goto out;
>            }
> +          dev->priv = privptr;
>
Why not use standard private data area, rather than allocating
it separately?

--
Stephen Hemminger <shemminger@linux-foundation.org>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [patch 1/1] ctc: make use of alloc_netdev()
  2007-11-29 16:36 ` [patch 1/1] ctc: make use of alloc_netdev() Ursula Braun
  2007-11-29 17:12   ` Stephen Hemminger
@ 2007-12-01 21:33   ` Jeff Garzik
  1 sibling, 0 replies; 5+ messages in thread
From: Jeff Garzik @ 2007-12-01 21:33 UTC (permalink / raw)
  To: Ursula Braun; +Cc: netdev, linux-s390, Peter Tiedemann

applied



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-12-01 21:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-29 16:36 [patch 0/1] s390: ctc patch for 2.6.24 Ursula Braun
2007-11-29 16:36 ` [patch 1/1] ctc: make use of alloc_netdev() Ursula Braun
2007-11-29 17:12   ` Stephen Hemminger
2007-11-30  1:33     ` Peter Tiedemann
2007-12-01 21:33   ` Jeff Garzik

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).