Re: [PATCH 0/5] isdn: fix section mismatch warnings in isdn

2008-02-03 Thread Karsten Keil
On Fri, Feb 01, 2008 at 02:38:38PM +0100, Sam Ravnborg wrote:
> drivers/isdn resulted in 34 section mismatch warnings - so
> I decided to give them a try.
> This resulted in 5 simple patches.
> 
> I know Jeff Garzik has some ISDN clean-up patches pending
> but rather than waiting forever to have them acked I deciced
> to fix the warnings in the current kernel.
> 
> This for no other reason than to get the noise level down.
> 
> Andrew - I expect you to pick them up in -mm and forward to Linus.
> 

Yes these fixes should go in, Acked.

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 09/36] ISDN: convert class code to use dev_groups

2013-07-26 Thread Karsten Keil
Am 25.07.2013 00:05, schrieb Greg Kroah-Hartman:
> The dev_attrs field of struct class is going away soon, dev_groups
> should be used instead.  This converts the mISDN class code to use the
> correct field.
> 
> Cc: Karsten Keil 
> Signed-off-by: Greg Kroah-Hartman 

Acked-by: Karsten Keil 

> ---
> 
> Karsten, feel free to apply this to your tree, or ACK it and I can take it
> through mine.
> 
>  drivers/isdn/mISDN/core.c | 64 
> ++-
>  1 file changed, 36 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c
> index da30c5cb..faf50546 100644
> --- a/drivers/isdn/mISDN/core.c
> +++ b/drivers/isdn/mISDN/core.c
> @@ -37,8 +37,8 @@ static void mISDN_dev_release(struct device *dev)
>   /* nothing to do: the device is part of its parent's data structure */
>  }
>  
> -static ssize_t _show_id(struct device *dev,
> - struct device_attribute *attr, char *buf)
> +static ssize_t id_show(struct device *dev,
> +struct device_attribute *attr, char *buf)
>  {
>   struct mISDNdevice *mdev = dev_to_mISDN(dev);
>  
> @@ -46,9 +46,10 @@ static ssize_t _show_id(struct device *dev,
>   return -ENODEV;
>   return sprintf(buf, "%d\n", mdev->id);
>  }
> +static DEVICE_ATTR_RO(id);
>  
> -static ssize_t _show_nrbchan(struct device *dev,
> -  struct device_attribute *attr, char *buf)
> +static ssize_t nrbchan_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
>  {
>   struct mISDNdevice *mdev = dev_to_mISDN(dev);
>  
> @@ -56,9 +57,10 @@ static ssize_t _show_nrbchan(struct device *dev,
>   return -ENODEV;
>   return sprintf(buf, "%d\n", mdev->nrbchan);
>  }
> +static DEVICE_ATTR_RO(nrbchan);
>  
> -static ssize_t _show_d_protocols(struct device *dev,
> -  struct device_attribute *attr, char *buf)
> +static ssize_t d_protocols_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
>  {
>   struct mISDNdevice *mdev = dev_to_mISDN(dev);
>  
> @@ -66,9 +68,10 @@ static ssize_t _show_d_protocols(struct device *dev,
>   return -ENODEV;
>   return sprintf(buf, "%d\n", mdev->Dprotocols);
>  }
> +static DEVICE_ATTR_RO(d_protocols);
>  
> -static ssize_t _show_b_protocols(struct device *dev,
> -  struct device_attribute *attr, char *buf)
> +static ssize_t b_protocols_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
>  {
>   struct mISDNdevice *mdev = dev_to_mISDN(dev);
>  
> @@ -76,9 +79,10 @@ static ssize_t _show_b_protocols(struct device *dev,
>   return -ENODEV;
>   return sprintf(buf, "%d\n", mdev->Bprotocols | get_all_Bprotocols());
>  }
> +static DEVICE_ATTR_RO(b_protocols);
>  
> -static ssize_t _show_protocol(struct device *dev,
> -   struct device_attribute *attr, char *buf)
> +static ssize_t protocol_show(struct device *dev,
> +  struct device_attribute *attr, char *buf)
>  {
>   struct mISDNdevice *mdev = dev_to_mISDN(dev);
>  
> @@ -86,17 +90,19 @@ static ssize_t _show_protocol(struct device *dev,
>   return -ENODEV;
>   return sprintf(buf, "%d\n", mdev->D.protocol);
>  }
> +static DEVICE_ATTR_RO(protocol);
>  
> -static ssize_t _show_name(struct device *dev,
> -   struct device_attribute *attr, char *buf)
> +static ssize_t name_show(struct device *dev,
> +  struct device_attribute *attr, char *buf)
>  {
>   strcpy(buf, dev_name(dev));
>   return strlen(buf);
>  }
> +static DEVICE_ATTR_RO(name);
>  
>  #if 0 /* hangs */
> -static ssize_t _set_name(struct device *dev, struct device_attribute *attr,
> -  const char *buf, size_t count)
> +static ssize_t name_set(struct device *dev, struct device_attribute *attr,
> + const char *buf, size_t count)
>  {
>   int err = 0;
>   char *out = kmalloc(count + 1, GFP_KERNEL);
> @@ -113,10 +119,11 @@ static ssize_t _set_name(struct device *dev, struct 
> device_attribute *attr,
>  
>   return (err < 0) ? err : count;
>  }
> +static DEVICE_ATTR_RW(name);
>  #endif
>  
> -static ssize_t _show_channelmap(struct device *dev,
> - struct device_attribute *attr, char *buf)
> +static ssize_t channelmap_show(struct device *dev,
> +s

Re: [PATCH v2] isdnloop: fix and simplify isdnloop_init()

2012-08-03 Thread Karsten Keil
Am 03.08.2012 09:32, schrieb Fengguang Wu:
> On Thu, Aug 02, 2012 at 04:21:56PM -0700, David Miller wrote:
>> From: Fengguang Wu 
>> Date: Thu, 2 Aug 2012 19:05:43 +0800
>>
>>> Fix a buffer overflow bug by removing the revision transform code.
>>>
>>> [   22.016214] isdnloop-ISDN-driver Rev 1.11.6.7 
>>> [   22.097508] isdnloop: (loop0) virtual card added
>>> [   22.174400] Kernel panic - not syncing: stack-protector: Kernel stack is 
>>> corrupted in: 83244972
>>> [   22.174400] 
>>> [   22.436157] Pid: 1, comm: swapper Not tainted 
>>> 3.5.0-bisect-00018-gfa8bbb1-dirty #129
>>> [   22.624071] Call Trace:
>>> [   22.720558]  [] ? CallcNew+0x56/0x56
>>> [   22.815248]  [] panic+0x110/0x329
>>> [   22.914330]  [] ? isdnloop_init+0xaf/0xb1
>>> [   23.014800]  [] ? CallcNew+0x56/0x56
>>> [   23.090763]  [] __stack_chk_fail+0x2b/0x30
>>> [   23.185748]  [] isdnloop_init+0xaf/0xb1
>>>
>>> Signed-off-by: Fengguang Wu 
>>
>> The reason the "$Revision ..." prefix is there is so that automated
>> version control tools will change the string automatically when code
>> is committed in CVS.
>>
>> In the GIT era this revision style is obsolete.
>>
>> Therefore you might as well just delete this crap altogether.
> 
> OK. The below updated version will simply print the hard coded
> revision number as it's unlikely to change any more.
> 
> Thanks,
> Fengguang
> ---
> isdnloop: fix and simplify isdnloop_init
> 
> Fix a buffer overflow bug by hard coding the revision number.
> 
> [   22.016214] isdnloop-ISDN-driver Rev 1.11.6.7 
> [   22.097508] isdnloop: (loop0) virtual card added
> [   22.174400] Kernel panic - not syncing: stack-protector: Kernel stack is 
> corrupted in: 83244972
> [   22.174400] 
> [   22.436157] Pid: 1, comm: swapper Not tainted 
> 3.5.0-bisect-00018-gfa8bbb1-dirty #129
> [   22.624071] Call Trace:
> [   22.720558]  [] ? CallcNew+0x56/0x56
> [   22.815248]  [] panic+0x110/0x329
> [   22.914330]  [] ? isdnloop_init+0xaf/0xb1
> [   23.014800]  [] ? CallcNew+0x56/0x56
> [   23.090763]  [] __stack_chk_fail+0x2b/0x30
> [   23.185748]  [] isdnloop_init+0xaf/0xb1
> 
> Signed-off-by: Fengguang Wu 
> ---
>  drivers/isdn/isdnloop/isdnloop.c |   12 +---
>  1 file changed, 1 insertion(+), 11 deletions(-)
> 
> --- linux.orig/drivers/isdn/isdnloop/isdnloop.c   2012-08-03 
> 15:24:49.047544323 +0800
> +++ linux/drivers/isdn/isdnloop/isdnloop.c2012-08-03 15:27:39.503548375 
> +0800
> @@ -16,7 +16,6 @@
>  #include 
>  #include "isdnloop.h"
>  
> -static char *revision = "$Revision: 1.11.6.7 $";
>  static char *isdnloop_id = "loop0";
>  
>  MODULE_DESCRIPTION("ISDN4Linux: Pseudo Driver that simulates an ISDN card");
> @@ -1494,16 +1493,7 @@ isdnloop_addcard(char *id1)
>  static int __init
>  isdnloop_init(void)
>  {
> - char *p;
> - char rev[10];
> -
> - if ((p = strchr(revision, ':'))) {
> - strcpy(rev, p + 1);
> - p = strchr(rev, '$');
> - *p = 0;
> - } else
> - strcpy(rev, " ??? ");
> - printk(KERN_NOTICE "isdnloop-ISDN-driver Rev%s\n", rev);
> + printk(KERN_NOTICE "isdnloop-ISDN-driver Rev 1.11.6.7\n");
>  
>   if (isdnloop_id)
>   return (isdnloop_addcard(isdnloop_id));
> 
> 
You could remove the revision completely, even from the printk.
Maybe use  pr_notice("isdnloop-ISDN driver loaded\n");

Best Regards
Karsten


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Plans for mISDN? Was: [PATCH 00/14] [ISDN] ...

2008-02-22 Thread Karsten Keil
Hi,

sorry that I step in so late, procmail sorted this thread in the wrong
box.
Normally I reserved the complete last week for working on mISDN to get it
ready to submit it to -mm, but reality did hit me and I had to do some
other importent stuff :-(

On Thu, Feb 21, 2008 at 11:33:04AM +0100, Simon Richter wrote:
> Hi,
> 
> Tilman Schmidt wrote:
> 
> > mISDN has two problems, which are of course interrelated:
> 
> mISDN has one problem that is even bigger than these: the kernel oopses 
> if modules aren't loaded in the right order. misdn-init works around 
> that, but if it doesn't work for some reason (and I can think of 
> multiple here), the user is left with a kernel that oopses during 
> hardware discovery and never gets to a stage where this can be 
> rectified, as almost all distributions now have hardware discovery 
> before the first opportunity to get a shell. At least these were my 
> experiences the last time I tried it on my test box.
> 
> This is the reason I've kept mISDN out of the last two Debian stable 
> releases, despite users' requests.
> 
> When a hardware driver module is loaded, it should only do basic 
> hardware initialisation; it is certainly not necessary to set up the 
> entire stack (or even decide on a protocol, which currently needs to be 
> handed in via module parameter -- before userland code is there that 
> wants to talk to the hardware, there is no reason to have the hardware 
> active).
> 

These design issues are fixed in the new mISDN socket branch.
The old mISDN design was too complicated because it allow access to
every layer and build the ISDN stack dynamically, both feature were never
needed in practice and contain many race conditions.
The new design only has one core module and hardware specific modules
with a very simple interface.
The interface to the userspace are sockets (one per channel).

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


ISDN compile fix for 2.4.4-pre5

2001-04-19 Thread Karsten Keil

Hi,

seems that somehow isdn.h changes get lost during the merge.
Following patch fix this and some other minor things.
 
-- 
Karsten Keil
SuSE Labs
ISDN development

diff -urN linux-2.4.4p5.org/drivers/isdn/hisax/md5sums.asc 
linux/drivers/isdn/hisax/md5sums.asc
--- linux-2.4.4p5.org/drivers/isdn/hisax/md5sums.ascSun Apr 15 20:36:46 2001
+++ linux/drivers/isdn/hisax/md5sums.ascFri Apr 20 04:50:38 2001
@@ -7,27 +7,27 @@
 # cards in the moment.
 # Read ../../../Documentation/isdn/HiSax.cert for more informations.
 # 
-ca7bd9bac39203f3074f3f093948cc3c  isac.c
-a2ad619fd404b3149099a2984de9d23c  isdnl1.c
-d2a78e407f3d94876deac160c6f9aae6  isdnl2.c
-e7932ca7ae39c497c17f13a2e1434fcd  isdnl3.c
-afb5f2f4ac296d6de45c856993b161e1  tei.c
-00023e2a482cb86a26ea870577ade5d6  callc.c
-a1834e9b2ec068440cff2e899eff4710  cert.c
-1551f78b3cd01097ecd586b5c96d0765  l3dss1.c
-89aecf3a80489c723dc885fcaa4aba1b  l3_1tr6.c
-1685c1ddfecf3e1b88ae5f3d7202ce69  elsa.c
-6d7056d1558bf6cc57dd89b7b260dc27  diva.c
-4398918680d45c4618bb48108ea0c282  sedlbauer.c
+9663cc9f4374c361197d394f6d27c459  isac.c
+9666c672c0fa0e65d5cc5b322f10a18c  isdnl1.c
+9250f15b932dfc36855aa120b896ed0b  isdnl2.c
+0cc2ef892bdb4a2be473e00eb1398950  isdnl3.c
+cac9c32fff889c57ff50d59823053019  tei.c
+665044a72334336533ac79da1a831b17  callc.c
+e592db58630c1f1029cc064110108156  cert.c
+fadeb3b85bb23bc1ac48470c0848d6fa  l3dss1.c
+cf7dec9fac6283716904d26b99188476  l3_1tr6.c
+65d9e5471bc129624f858ebcf0743525  elsa.c
+b4cf8a4dceed9ea6dcba65a85b4eecc7  diva.c
+99e67bea8f6945fa0d4e0aded5bf0fa0  sedlbauer.c
 # end of md5sums
 
 -BEGIN PGP SIGNATURE-
 Version: 2.6.3i
 Charset: noconv
 
-iQCVAwUBOlxeLTpxHvX/mS9tAQH6RwP8DhyvqAnXFV6WIGi16iQ3vKikkPoqnDQs
-GEn5uCW0dPYKlwthD2Grj/JbMYZhOmCFuDxF7ufJnjTSDe/D8XNe2wngxzAiwcIe
-WjCrT8X95cuP3HZHscbFTEinVV0GAnoI0ZEgs5eBDhVHDqILLYMaTFBQaRH3jgXc
-i5VH88jPfUM=
-=qc+J
+iQCVAwUBOt+j/jpxHvX/mS9tAQGXwAP/U4voKzXAcTfo9CqJhHN92GRxunj6mlvn
+H+1pxSe0GdtC7BlrPhrokB5dNSwewk89Z5t7kTD76kx2FFuTcXBJxbgH7LZVF3ga
+JX92bOWQekHMH7Hk12Qc7zpeTmPzY02pvVc37Eo614BCvJMCk02cpQyo8a5wWRKH
+8vpQkQKiSyY=
+=FFLG
 -END PGP SIGNATURE-
diff -urN linux-2.4.4p5.org/include/linux/isdn.h linux/include/linux/isdn.h
--- linux-2.4.4p5.org/include/linux/isdn.h  Fri Apr 20 04:55:51 2001
+++ linux/include/linux/isdn.h  Fri Apr 20 04:50:16 2001
@@ -1,4 +1,4 @@
-/* $Id: isdn.h,v 1.111.6.1 2001/02/07 11:31:31 kai Exp $
+/* $Id: isdn.h,v 1.111.6.5 2001/04/20 02:40:48 keil Exp $
 
  * Main header for the Linux ISDN subsystem (linklevel).
  *
@@ -25,7 +25,9 @@
 #ifndef isdn_h
 #define isdn_h
 
+#ifdef __KERNEL__
 #include 
+#endif
 #include 
 
 #define ISDN_TTY_MAJOR43
@@ -37,8 +39,14 @@
  * the correspondent code in isdn.c
  */
 
+#ifdef USE_MINIMUM_MEM
+/* Save memory */
+#define ISDN_MAX_DRIVERS2
+#define ISDN_MAX_CHANNELS   8
+#else
 #define ISDN_MAX_DRIVERS32
 #define ISDN_MAX_CHANNELS   64
+#endif
 #define ISDN_MINOR_B0
 #define ISDN_MINOR_BMAX (ISDN_MAX_CHANNELS-1)
 #define ISDN_MINOR_CTRL 64
@@ -98,6 +106,12 @@
 
 #define IIOCDRVCTL  _IO('I',128)
 
+/* cisco hdlck device private ioctls */
+#define SIOCGKEEPPERIOD(SIOCDEVPRIVATE + 0)
+#define SIOCSKEEPPERIOD(SIOCDEVPRIVATE + 1)
+#define SIOCGDEBSERINT (SIOCDEVPRIVATE + 2)
+#define SIOCSDEBSERINT (SIOCDEVPRIVATE + 3)
+
 /* Packet encapsulations for net-interfaces */
 #define ISDN_NET_ENCAP_ETHER  0
 #define ISDN_NET_ENCAP_RAWIP  1
@@ -258,9 +272,9 @@
  ((x & ISDN_USAGE_MASK)==ISDN_USAGE_VOICE) )
 
 /* Timer-delays and scheduling-flags */
-#define ISDN_TIMER_RES 3 /* Main Timer-Resolution   */
-#define ISDN_TIMER_02SEC   (HZ/(ISDN_TIMER_RES+1)/5) /* Slow-Timer1 .2 sec  */
-#define ISDN_TIMER_1SEC(HZ/(ISDN_TIMER_RES+1))   /* Slow-Timer2 1 sec   */
+#define ISDN_TIMER_RES 4 /* Main Timer-Resolution   */
+#define ISDN_TIMER_02SEC   (HZ/ISDN_TIMER_RES/5) /* Slow-Timer1 .2 sec  */
+#define ISDN_TIMER_1SEC(HZ/ISDN_TIMER_RES)   /* Slow-Timer2 1 sec   */
 #define ISDN_TIMER_RINGING 5 /* tty RINGs = ISDN_TIMER_1SEC * this factor   */
 #define ISDN_TIMER_KEEPINT10 /* Cisco-Keepalive = ISDN_TIMER_1SEC * this factor */
 #define ISDN_TIMER_MODEMREAD   1
@@ -269,13 +283,11 @@
 #define ISDN_TIMER_MODEMXMIT   8
 #define ISDN_TIMER_NETDIAL16 
 #define ISDN_TIMER_NETHANGUP  32
-#define ISDN_TIMER_KEEPALIVE 128 /* Cisco-Keepalive */
 #define ISDN_TIMER_CARRIER   256 /* Wait for Carrier */
 #define ISDN_TIMER_FAST  (ISDN_TIMER_MODEMREAD | ISDN_TIMER_MODEMPLUS | \
   ISDN_TIMER_MODEMXMIT)
 #define ISDN_TIMER_SLOW  (ISDN_TIMER_MODEMRING | ISDN_TIMER_NETHANGUP | \
-  ISDN_TIMER_NETDIAL | ISDN_TIMER_KEEPALIVE | \
-  ISDN_TIMER_CARRIER)
+  ISDN_TIMER_NETDIAL | ISDN_TIMER_CARRIER)
 
 /* Time

Re: 2.4.4-pre5 compile error

2001-04-20 Thread Karsten Keil

On Fri, Apr 20, 2001 at 08:17:09PM +0200, Hans-Joachim Baader wrote:
> Hi,
> 
> in case it isn't already known:
> 
> isdn_net.c: In function `isdn_ciscohdlck_dev_ioctl':
> isdn_net.c:1455: structure has no member named `cisco_keepalive_period'
> 

Fix was posted last night here.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: 'make dep' warning with 2.4.3 : computed checksums did NOT match

2001-04-20 Thread Karsten Keil

On Sat, Apr 21, 2001 at 02:27:08AM +0200, Jesper Juhl wrote:
> Hi,
> 
> While compiling a 2.4.3 kernel on my Slackware 7.1 box (heavily updated 
> to have the correct utils and so on) I noticed a warning during 'make dep'.
> 
> This is the exact message:
> 
> make[6]: Leaving directory /usr/src/linux-2.4.3/drivers/isdn/eicon'
> make -C hisax fastdep
> md5sum: WARNING: 12 of 12 computed checksums did NOT match
> make[6]: Entering directory /usr/src/linux-2.4.3/drivers/isdn/hisax'
> 
> I'm not using any of the isdn stuff, so I'm not really worried about 
> this, but I thought I'd report it anyway since 'someone more 
> knowledgeable than me (TM)' might find it important...

Not a real problem (only cosmetics) and a patch is pending.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: APIC-Errors+Crashes on GA 586DX, 2.2.17/2.4.3

2001-04-21 Thread Karsten Keil

On Sat, Apr 21, 2001 at 03:07:22PM +0200, Hermann Himmelbauer wrote:
> Hi,
> I am using for my Internet-Gateway a dual Pentium MMX 200Mhz with a
> Gigabyte 586DX Motherboard (with the Intel 430HX Chipset). The last year
> I used Linux-2.2.16,2.2.17 with it and had several hangs of the network
> and ISDN subsystem.
> 
> The network dies like this (when copying huge amount of data):
> Feb  3 11:58:03 violin kernel: eth0: Interrupt posted but not delivered
> -- IRQ blocked by another device?
> Feb  3 11:58:03 violin kernel:   Flags; bus-master 1, full 0; dirty 16
> current 16.
> Feb  3 11:58:03 violin kernel:   Transmit list  vs. c13dfa00.
> Feb  3 11:58:03 violin kernel:   0: @c13dfa00  length 806e status
> 0001006e
> ...
> 
> and the isdn subsystem like this:
> Jan 27 00:41:15 violin kernel: isdn_tx_timeout dev ippp0 dialstate 0
> Jan 27 00:41:28 violin kernel: ippp0: dialing 2 194040...
> Jan 27 00:41:28 violin kernel: isdn: HiSax,ch0 cause: E001B
> 
> Although there is no direct hint to an APIC problem, I read in several
> newsgroup articles that these two errors refer to APIC errors.

For the ISDN one:
E001B - EURO ISDN cause Out of order mean, that here is no answer from
the exchange while trying to establish a D-channel L2 connection.
This may be have various reasons: broken cable, wrong addresses, no
IRQs. The no IRQ may (but don't must) related to APIC errors.

I have here the same board with 2*233 MMX and don't see this kind of ISDN
error on recent 2.2 kernels, but got also lot of APIC errors with the
2.3/2.4, because the APIC errors are only reported in 2.3/4.

> They system is still usable after such an error, only that eth0/isdn is 
> not accessible, even if I reload the modules. The only solution
> is a reboot.
> 
> Well - some days ago I tried to switch to 2.4.3, hoping that these
> errors will be gone then. The first thing that I noticed was that I got
> thousands of lines like this:
>
> Apr 22 16:19:31 violin kernel: APIC error on CPU0: 04(00)

No the kernel cannot change this, since it is a hardware problem.
The GA586DX is known that it produce lot of checksum errors on the APIC
bus, in 2.4 these are reported in 2.2 they are simple ignored, but also
here. These errors itself are not a problem since the APIC bus detect
it and recover, but if here are double errors in a way that the checksum
is OK, the APIC may run in trouble.
 
> Errors!) the isdn subsystem died:
> Apr 18 16:32:12 violin kernel: isdn_tx_timeout dev ippp0 dialstate 0
> Apr 18 16:32:12 violin kernel: ippp0: all channels busy - requeuing!

Yes that is also a hint that the IRQ of the card is blocked.

> Following the advice of Donald Becker he gave in some newsgroup I
> restarted the
> kernel with the "noapic" parameter. The strange thing is that the APIC
> errors are still there, at least there are a lot less than before,
> moreover the system seems slower but at least more stable. BTW, why are
> there still APIC errors although there are no interrupts assigned to
> CPU1 (as seen in /proc/interrupts).
> 

Yes, no APIC means all IRQ are handled by one CPU only, so communication
errors about IRQ events on the APIC bus don't care.

> I next tried to find out what triggers these APIC errors:
> 
> Without "noapic" kernel parameter:
> The Errors are triggered by a certain amount of interrupts, whatever
> device produces interrupts. 
> 
> With "noapic":
> It seems as if those errors are mostly triggered by NFS. When I copy the
> same
> amount of data with FTP, there are a lot less Errors. (E.g. for 500MB
> there
> are 40 with NFS and only 2 with FTP). 

I don't know all kinds of events the APIC bus is used for, it is not only
for the IRQs.

> What I wonder is why linux outputs a line like this (with noapic):
> <4>Intel MultiProcessor Specification v1.1
> <4>Virtual Wire compatibility mode.
> 
> although the board seems to be capable of MPS 1.4 (as there is a Bios
> option "MPS 1.4 for single Processor).
> 

One or 2 years ago I was playing with these options, it seemed that setting
it to 1.1 reduce the error count a little bit, but this maybe a
misinterpretation.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: Request for comment -- a better attribution system

2001-04-21 Thread Karsten Keil

On Sat, Apr 21, 2001 at 11:49:42AM -0400, Eric S. Raymond wrote:
...
> If this proposal meets with approval, I am willing to do three things:

Sounds good for me.

> 
> 1. Generate a patch to distribute the information presently in the
>MAINTAINERS file into map blocks and %Map files.
> 
> 2. Write a tool for querying the map database.

Since C: is here, it  would be superb if the make ...config tools have
button to show this information, but since you maintain this stuff I'm
sure that you allready think about this :-)

> 
> 3. (Background task, with which I would expect help) Chase down more
>map entries and verify information in old entries.
> 
> Thanks to Andreas Dilger for suggesting the basic idea.
> 
> Comments are solicited.
> -- 
>   http://www.tuxedo.org/~esr/">Eric S. Raymond
> 
> The day will come when the mystical generation of Jesus by the Supreme
> Being as his father, in the womb of a virgin, will be classed with the
> fable of the generation of Minerva in the brain of Jupiter.
>   -- Thomas Jefferson, 1823
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: a way to restore my hd ?

2001-04-21 Thread Karsten Keil

On Sat, Apr 21, 2001 at 06:52:01PM +0300, Ville Holma wrote:
...
> 
> debian:~# e2fsck /dev/hdb7
> e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
> Corruption found in superblock.  (frags_per_group = 2147516416).
> 
> The superblock could not be read or does not describe a correct ext2
> filesystem.  If the device is valid and it really contains an ext2
> filesystem (and not swap or ufs or something else), then the superblock
> is corrupt, and you might try running e2fsck with an alternate superblock:
> e2fsck -b -2147450879 
> 
> 
> So I tried to use the huge block size like e2fsck suggests and I get this
> 
> 
> debian:~# e2fsck -b -2147450879 /dev/hdb7
> e2fsck 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
> e2fsck: Attempt to read block from filesystem resulted in short read while
> trying to open /dev/hdb7
> Could this be a zero-length partition?
> 
> 
> This is where the human panic occured. There is data on that partition that
> I _really_ do not want to loose. I'm clueless and woud appreciate any
> help/suggestions. If some additonal information is needed I'm more than
> happy to deliver.

I run in similar trouble last week after a power breakage.
My superblock was also corupted and I got also the message to try an other
superbock, but I don't know at which address it was (e2fsck don't show you
the correct addresses, it gives only a syntax example). Remembering that
mke2fs shows it, I use it with the test option "-n" (so it only simulate
the making of a filesystem) and got the addresses for the spare superblocks
and was able to recover the filesystem with no data lost.

example:
pingi:~ # mke2fs -n /dev/sdb3

mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
91392 inodes, 182739 blocks
9136 blocks (5.00%) reserved for the super user
First data block=0
6 block groups
32768 blocks per group, 32768 fragments per group
15232 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840

Don't miss the -n option !!!

e2fsck -b 32768 /dev/sdb3

Here are also some howtos related to restoring data and undelete files.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: test9-pre7 doesn't recognize HiSax ISDN card

2000-10-02 Thread Karsten Keil


On Mon, Oct 02, 2000 at 12:08:10AM +0200, Pierfrancesco Caci wrote:
> 
> The subject tells everything:
> 
...
> 
> 28x481 23:49:14 penny kernel: fb0: MATROX VGA frame buffer device
> Oct  1 23:49:14 penny kernel: pty: 512 Unix98 ptys configured
> Oct  1 23:49:14 penny kernel: ISDN subsystem Rev: 1.111/1.93/1.135/1.77/1.21/1.5
> Oct  1 23:49:14 penny kernel: Uniform Multi-Platform E-IDE driver Revision: 6.31
> 
> Is there something that is changed and that I should know ?
> 

Nothing so far I know, seems HiSax was not selected or compiled as module.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



Re: BUG in modutils or drivers/isdn/hisax/

2001-01-23 Thread Karsten Keil

Hi,

On Tue, Jan 23, 2001 at 01:31:55AM +0100, Ingo Oeser wrote:
> Hi Keith,
> hi Karsten,
> hi linux-kernel,
> 
> the current modutils (2.4.1) cannot read the
> __module_pci_device_table of a kernel/drivers/isdn/hisax/hisax.o
> module of linux 2.4.0 (vanilla).
> 
> What's wrong with it?

Nothing. Only the HFC-PCI part in hisax has such a table yet, all other
card drivers in hisax don't have one at the moment.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



Re: [2.6 patch] drivers/isdn/: make some code static

2005-04-19 Thread Karsten Keil
On Tue, Apr 19, 2005 at 02:46:58AM +0200, Adrian Bunk wrote:
> This patch makes some needlessly global code static.
> 

Yes, OK.

Signed-off-by: Adrian Bunk <[EMAIL PROTECTED]>
Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>

 drivers/isdn/hardware/eicon/dadapter.c |2 +-
 drivers/isdn/hisax/hfc4s8s_l1.c|4 ++--
 drivers/isdn/hysdn/hycapi.c|   20 +++-
 drivers/isdn/hysdn/hysdn_boot.c|4 ++--
 drivers/isdn/hysdn/hysdn_defs.h|   12 
 drivers/isdn/hysdn/hysdn_init.c|2 +-
 drivers/isdn/hysdn/hysdn_proclog.c |4 +++-
 7 files changed, 20 insertions(+), 28 deletions(-)

--- linux-2.6.12-rc2-mm3-full/drivers/isdn/hisax/hfc4s8s_l1.c.old   
2005-04-19 00:32:31.0 +0200
+++ linux-2.6.12-rc2-mm3-full/drivers/isdn/hisax/hfc4s8s_l1.c   2005-04-19 
00:32:46.0 +0200
@@ -1464,7 +1464,7 @@
 /**/
 /* disable memory mapped ports / io ports */
 /**/
-void
+static void
 release_pci_ports(hfc4s8s_hw * hw)
 {
pci_write_config_word(hw->pdev, PCI_COMMAND, 0);
@@ -1480,7 +1480,7 @@
 /*/
 /* enable memory mapped ports / io ports */
 /*/
-void
+static void
 enable_pci_ports(hfc4s8s_hw * hw)
 {
 #ifdef CONFIG_HISAX_HFC4S8S_PCIMEM
--- linux-2.6.12-rc2-mm3-full/drivers/isdn/hysdn/hysdn_defs.h.old   
2005-04-19 00:33:51.0 +0200
+++ linux-2.6.12-rc2-mm3-full/drivers/isdn/hysdn/hysdn_defs.h   2005-04-19 
00:38:25.0 +0200
@@ -227,7 +227,6 @@
 /*/
 /* exported vars */
 /*/
-extern int cardmax;/* number of found cards */
 extern hysdn_card *card_root;  /* pointer to first card */
 
 
@@ -244,7 +243,6 @@
 /* hysdn_proclog.c */
 extern int hysdn_proclog_init(hysdn_card *);   /* init proc log entry */
 extern void hysdn_proclog_release(hysdn_card *);   /* deinit proc log 
entry */
-extern void put_log_buffer(hysdn_card *, char *);  /* output log data */
 extern void hysdn_addlog(hysdn_card *, char *,...);/* output data to log */
 extern void hysdn_card_errlog(hysdn_card *, tErrLogEntry *, int);  /* 
output card log */
 
@@ -278,16 +276,6 @@
 extern int hycapi_capi_create(hysdn_card *);   /* create a new capi device */
 extern int hycapi_capi_release(hysdn_card *);  /* delete the device */
 extern int hycapi_capi_stop(hysdn_card *card);   /* suspend */
-extern int hycapi_load_firmware(struct capi_ctr *, capiloaddata *);
-extern void hycapi_reset_ctr(struct capi_ctr *);
-extern void hycapi_remove_ctr(struct capi_ctr *);
-extern void hycapi_register_appl(struct capi_ctr *, __u16 appl,
-capi_register_params *);
-extern void hycapi_release_appl(struct capi_ctr *, __u16 appl);
-extern u16  hycapi_send_message(struct capi_ctr *, struct sk_buff *skb);
-extern char *hycapi_procinfo(struct capi_ctr *);
-extern int hycapi_read_proc(char *page, char **start, off_t off,
-   int count, int *eof, struct capi_ctr *card);
 extern void hycapi_rx_capipkt(hysdn_card * card, uchar * buf, word len);
 extern void hycapi_tx_capiack(hysdn_card * card);
 extern struct sk_buff *hycapi_tx_capiget(hysdn_card *card);
--- linux-2.6.12-rc2-mm3-full/drivers/isdn/hysdn/hycapi.c.old   2005-04-19 
00:34:05.0 +0200
+++ linux-2.6.12-rc2-mm3-full/drivers/isdn/hysdn/hycapi.c   2005-04-19 
00:36:34.0 +0200
@@ -42,6 +42,8 @@
 
 static hycapi_appl hycapi_applications[CAPI_MAXAPPL];
 
+static u16 hycapi_send_message(struct capi_ctr *ctrl, struct sk_buff *skb);
+
 static inline int _hycapi_appCheck(int app_id, int ctrl_no)
 {
if((ctrl_no <= 0) || (ctrl_no > CAPI_MAXCONTR) || (app_id <= 0) ||
@@ -57,7 +59,7 @@
 Kernel-Capi callback reset_ctr
 **/ 
 
-void 
+static void 
 hycapi_reset_ctr(struct capi_ctr *ctrl)
 {
hycapictrl_info *cinfo = ctrl->driverdata;
@@ -73,7 +75,7 @@
 Kernel-Capi callback remove_ctr
 **/ 
 
-void 
+static void 
 hycapi_remove_ctr(struct capi_ctr *ctrl)
 {
int i;
@@ -215,7 +217,7 @@
 The application is recorded in the internal list.
 */
 
-void 
+static void 
 hycapi_register_appl(struct capi_ctr *ctrl, __u16 appl, 
 capi_register_params *rp)
 {
@@ -291,7 +293,7 @@
 registration at controller-level
 **/
 
-void 
+static void 
 hycapi_release_appl(struct capi_ctr *ctrl, __u16 appl)
 {
int chk;
@@ -364,7 +366,7 @@
 
 ***/
 
-u16 hycapi_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
+static u16 hycapi_send_message(struct capi_ctr *ctrl, struct sk_buff *skb)
 {
__u16 appl_id;

fix for ISDN ippp filtering

2005-04-21 Thread Karsten Keil
Hi,

We do not longer use DLT_LINUX_SLL for activ/pass filters but 
DLT_PPP_WITHDIRECTION
witch need 1 as outbound flag.
Please apply.

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>

diff -urN linux-2.6.12-rc2.org/drivers/isdn/i4l/isdn_ppp.c 
linux-2.6.12-rc2/drivers/isdn/i4l/isdn_ppp.c
--- linux-2.6.12-rc2.org/drivers/isdn/i4l/isdn_ppp.c2005-04-20 
16:01:07.070809128 +0200
+++ linux-2.6.12-rc2/drivers/isdn/i4l/isdn_ppp.c2005-04-20 
18:31:28.533367073 +0200
@@ -1151,7 +1151,7 @@
{
u_int16_t *p = (u_int16_t *) skb->data;
 
-   *p = 0; /* indicate inbound in DLT_LINUX_SLL */
+   *p = 0; /* indicate inbound */
}
 
if (is->pass_filter
@@ -1293,12 +1293,12 @@
/* check if we should pass this packet
 * the filter instructions are constructed assuming
 * a four-byte PPP header on each packet */
-   skb_push(skb, 4);
+   *skb_push(skb, 4) = 1; /* indicate outbound */
 
{
u_int16_t *p = (u_int16_t *) skb->data;
 
-   *p++ = htons(4); /* indicate outbound in DLT_LINUX_SLL */
+   p++;
*p   = htons(proto);
}
 
@@ -1491,12 +1491,12 @@
 * temporarily remove part of the fake header stuck on
 * earlier.
 */
-   skb_pull(skb, IPPP_MAX_HEADER - 4);
+   *skb_pull(skb, IPPP_MAX_HEADER - 4) = 1; /* indicate outbound */
 
{
u_int16_t *p = (u_int16_t *) skb->data;
 
-   *p++ = htons(4);/* indicate outbound in DLT_LINUX_SLL */
+   p++;
*p   = htons(proto);
    }
    

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: fix for ISDN ippp filtering

2005-04-21 Thread Karsten Keil
On Thu, Apr 21, 2005 at 03:17:21PM +0200, Patrick McHardy wrote:
> Karsten Keil wrote:
> >Hi,
> >
> >We do not longer use DLT_LINUX_SLL for activ/pass filters but 
> >DLT_PPP_WITHDIRECTION
> >witch need 1 as outbound flag.
> >Please apply.
> 
> Won't this break compatibility with old ipppd binaries?
> 

Not really, since such a version was never in our I4L CVS and never
released by isdn4linux. It was my fault that this wrong temporary
attempt to solve the filtering problem was pushed into the kernel.
The new version is still compatible to the old filtering using
DLT_PPP (with libpcap 0.7x version) with was the previous version.
The DLT_LINUX_SLL solution did break compatibility and was rejected
because of this for PPP, but I did miss to revert the ISDN kernel
part in time, so it simple do not work today.

 
-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH ISDN] Fix capifs bug in initialization error path.

2005-08-27 Thread Karsten Keil
On Fri, Aug 26, 2005 at 11:56:56PM -0400, James Morris wrote:
> This patch fixes a bug in the capifs initialization code, where the 
> filesystem is not unregistered if kern_mount() fails.
> 
> Please apply.

looks OK for me.

Signed-off-by: James Morris <[EMAIL PROTECTED]>
Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
---

 capifs.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)


diff -purN -X dontdiff linux-2.6.13-mm2.o/drivers/isdn/capi/capifs.c 
linux-2.6.13-mm2.x/drivers/isdn/capi/capifs.c
--- linux-2.6.13-mm2.o/drivers/isdn/capi/capifs.c   2005-03-02 
02:37:50.0 -0500
+++ linux-2.6.13-mm2.x/drivers/isdn/capi/capifs.c   2005-08-26 
23:35:50.0 -0400
@@ -191,8 +191,10 @@ static int __init capifs_init(void)
err = register_filesystem(&capifs_fs_type);
if (!err) {
capifs_mnt = kern_mount(&capifs_fs_type);
-   if (IS_ERR(capifs_mnt))
+   if (IS_ERR(capifs_mnt)) {
err = PTR_ERR(capifs_mnt);
+   unregister_filesystem(&capifs_fs_type);
+   }
}
if (!err)
printk(KERN_NOTICE "capifs: Rev %s\n", rev);
-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] isdn_v110 warning fix

2005-08-30 Thread Karsten Keil
On Tue, Aug 30, 2005 at 01:05:43AM +0200, Jesper Juhl wrote:
> 

This is OK. Even if the codepath is never executed in a way that ret might
be used uninitialized it does not harm to set ret = 0.


Warning fix :
 drivers/isdn/i4l/isdn_v110.c:523: warning: `ret' might be used uninitialized 
in this function

Signed-off-by: Jesper Juhl <[EMAIL PROTECTED]>
Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>

---

 drivers/isdn/i4l/isdn_v110.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

--- linux-2.6.13-orig/drivers/isdn/i4l/isdn_v110.c  2005-08-29 
01:41:01.0 +0200
+++ linux-2.6.13/drivers/isdn/i4l/isdn_v110.c   2005-08-30 00:59:34.0 
+0200
@@ -516,11 +516,11 @@
 }
 
 int
-isdn_v110_stat_callback(int idx, isdn_ctrl * c)
+isdn_v110_stat_callback(int idx, isdn_ctrl *c)
 {
isdn_v110_stream *v = NULL;
int i;
-   int ret;
+   int ret = 0;
 
if (idx < 0)
return 0;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] Fix data access out of array bounds

2007-10-08 Thread Karsten Keil
Fix against access random data bytes outside the
dev->chanmap array. Thanks to Oliver Neukum for
pointing me to this issue.
Patch is against 2.6.23-rc9-git6

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
---
 drivers/isdn/i4l/isdn_common.c |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
index ec5f404..4910bca 100644
--- a/drivers/isdn/i4l/isdn_common.c
+++ b/drivers/isdn/i4l/isdn_common.c
@@ -1135,7 +1135,7 @@ isdn_read(struct file *file, char __user *buf, size_t 
count, loff_t * off)
if (count > dev->drv[drvidx]->stavail)
count = dev->drv[drvidx]->stavail;
len = dev->drv[drvidx]->interface->readstat(buf, count,
-   drvidx, isdn_minor2chan(minor));
+   drvidx, isdn_minor2chan(minor - 
ISDN_MINOR_CTRL));
if (len < 0) {
retval = len;
goto out;
@@ -1207,7 +1207,8 @@ isdn_write(struct file *file, const char __user *buf, 
size_t count, loff_t * off
 */
if (dev->drv[drvidx]->interface->writecmd)
retval = dev->drv[drvidx]->interface->
-   writecmd(buf, count, drvidx, 
isdn_minor2chan(minor));
+   writecmd(buf, count, drvidx,
+   isdn_minor2chan(minor - ISDN_MINOR_CTRL));
else
    retval = count;
goto out;



-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 09/26] mount options: fix capifs

2008-01-25 Thread Karsten Keil
On Thu, Jan 24, 2008 at 08:33:50PM +0100, Miklos Szeredi wrote:
> From: Miklos Szeredi <[EMAIL PROTECTED]>
> 
> Add a .show_options super operation to capifs.
> 
> Use generic_show_options() and save the complete option string in
> capifs_remount().
> 
> Signed-off-by: Miklos Szeredi <[EMAIL PROTECTED]>
Acked-by: Karsten Keil <[EMAIL PROTECTED]>
> ---
> 
> Index: linux/drivers/isdn/capi/capifs.c
> ===
> --- linux.orig/drivers/isdn/capi/capifs.c 2007-10-09 22:31:38.0 
> +0200
> +++ linux/drivers/isdn/capi/capifs.c  2008-01-24 11:37:42.0 +0100
> @@ -52,6 +52,7 @@ static int capifs_remount(struct super_b
>   gid_t gid = 0;
>   umode_t mode = 0600;
>   char *this_char;
> + char *new_opt = kstrdup(data, GFP_KERNEL);
>  
>   this_char = NULL;
>   while ((this_char = strsep(&data, ",")) != NULL) {
> @@ -72,11 +73,16 @@ static int capifs_remount(struct super_b
>   return -EINVAL;
>   }
>   }
> +
> + kfree(s->s_options);
> + s->s_options = new_opt;
> +
>   config.setuid  = setuid;
>   config.setgid  = setgid;
>   config.uid = uid;
>   config.gid = gid;
>   config.mode= mode;
> +
>   return 0;
>  }
>  
> @@ -84,6 +90,7 @@ static struct super_operations capifs_so
>  {
>   .statfs = simple_statfs,
>   .remount_fs = capifs_remount,
> + .show_options   = generic_show_options,
>  };
>  
>  
> 
> --

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Problem with w6692 & kernel >=2.6.10

2005-03-21 Thread Karsten Keil
On Mon, Mar 21, 2005 at 02:28:23PM -0800, Andrew Morton wrote:
> Marko Rebrina <[EMAIL PROTECTED]> wrote:
> >
> > I have problem with w6692 (mISDN-2005-02-25) & kernel >=2.6.10 (with
> > 2.6.9 is OK!) 
> 
> There haven't been any changes in the w6692 driver for ages, so I'd be
> suspecting PCI changes or something like that.  Are you able to test
> 2.6.12-rc1?
> 

Marko do not point to the in kernel w6692 driver, but to the (still ALPHA)
mISDN driver from cvs.isdn4linux.de.
This driver had a problem with the pci_register_driver return code changes
in 2.6.10, it now always returns 0 (if no error), but < 2.6.10 did return
the number of detected devices, which was tested in this driver.
This is fixed since last week in our CVS.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] remove unused label and obsolete preprocessor gunk from hisax

2005-01-30 Thread Karsten Keil
On Sun, Jan 30, 2005 at 09:43:05PM +0100, Jesper Juhl wrote:
> 
> 
> Here's a patch to remove an unused label and some obsolete preprocessor 
> magic around it. Thus killing this warning:
> drivers/isdn/hisax/hisax_fcpcipnp.c:1014: warning: label 
> `out_unregister_isapnp' defined but not used
>  Please apply.
> 

Agree.


Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
Signed-off-by: Jesper Juhl <[EMAIL PROTECTED]>

--- linux-2.6.11-rc2-bk7-orig/drivers/isdn/hisax/hisax_fcpcipnp.c   
2005-01-22 21:59:37.0 +0100
+++ linux-2.6.11-rc2-bk7/drivers/isdn/hisax/hisax_fcpcipnp.c2005-01-30 
20:04:00.0 +0100
@@ -1010,12 +1010,6 @@ static int __init hisax_fcpcipnp_init(vo
 #endif
return 0;
 
-#if !defined(CONFIG_HOTPLUG) || defined(MODULE)
- out_unregister_isapnp:
-#ifdef __ISAPNP__
-   pnp_unregister_driver(&fcpnp_driver);
-#endif
-#endif
  out_unregister_pci:
pci_unregister_driver(&fcpci_driver);
  out:





 
-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


ISDN4Linux Bug in isdnhdlc.c

2005-02-03 Thread Karsten Keil
Hi,

Oskar found a critical bug in isdnhdlc.c, please
apply this simple fix to next versions.



From: Oskar Senft <[EMAIL PROTECTED]>

isdnhdlc_decode is called multiple times for bigger frames, so
decrementing dsize is a bad idea and can cause a overflow of
the dst buffer.


Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>

diff -ur linux-2.6.11-rc2.org/drivers/isdn/hisax/isdnhdlc.c 
linux-2.6.11-rc2/drivers/isdn/hisax/isdnhdlc.c
--- linux-2.6.11-rc2.org/drivers/isdn/hisax/isdnhdlc.c  2004-11-23 
15:53:25.0 +0100
+++ linux-2.6.11-rc2/drivers/isdn/hisax/isdnhdlc.c  2005-02-03 
15:50:06.352137856 +0100
@@ -308,7 +308,7 @@
hdlc->crc = crc_ccitt_byte(hdlc->crc, 
hdlc->shift_reg);
 
// good byte received
-   if (dsize--) {
+   if (hdlc->dstpos < dsize) {
dst[hdlc->dstpos++] = hdlc->shift_reg;
} else {
        // frame too long

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[kkeil@suse.de: Re: [patch 2/8] isdn/capi: replace interruptible_sleep_on() with wait_event_interruptible()]

2005-03-07 Thread Karsten Keil

On Mon, Mar 07, 2005 at 09:35:49AM +0100, Domen Puncer wrote:
> > > - for (;;) {
> > > - interruptible_sleep_on(&cdev->recvwait);
> > > - if ((skb = skb_dequeue(&cdev->recvqueue)) != 0)
> > > - break;
> > > - if (signal_pending(current))
> > > - break;
> > > - }
> > > + wait_event_interruptible(cdev->recvwait,
> > > + ((skb = skb_dequeue(&cdev->recvqueue)) == 0));
> > >   if (skb == 0)
> > >   return -ERESTARTNOHAND;
> > >   }
> > 
> > hmm, OK.  Putting an expression with side-effect such as this into a macro
> > which evaluates the expression multiple times is a bit of a worry, but it
> > appears that everything will work OK.
> > 
> > That being said, I'd prefer that this come in via the ISDN team, after
> > having been tested please.
> 
> I believe last update from ISDN team was 13 months ago. :-(

You are wrong. Last update was few weeks ago (not on the core).

> And I concur, testing would be great.

Will do that next week.

-- 
Karsten Keil
SuSE Labs
ISDN development

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 1/8] isdn_bsdcomp.c - vfree() checking cleanups

2005-03-07 Thread Karsten Keil
On Mon, Mar 07, 2005 at 01:21:33AM +0100, Domen Puncer wrote:
> On 07/03/05 00:07 +, Ralph Corderoy wrote:
> > 
> > Hi Domen,
> > 
> > > - if (db->dict) {
> > > - vfree (db->dict);
> > > - db->dict = NULL;
> > > - }
> > > + vfree (db->dict);
> > > + db->dict = NULL;
> > 
> > Is it really worth always calling vfree() which calls __vunmap() before
> > db->dict is determined to be NULL in order to turn three lines into two?
> 
> Four lines into two :-)
> 
> > Plus the write to db->dict which might otherwise not be needed.  The old
> > code was clear, clean, and fast, no?
> 
> Shorter and more readable code is always better, right? And speed really
> doesn't seem to be an issue here.
> 

I also prefer the old code, since it make clear, that you must be careful
here, since the function can be called with already freed db->dict, and for
me this version is not better readable as the old one.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 5/8] drivers/isdn/tpam/*: convert to pci_register_driver

2005-03-07 Thread Karsten Keil
On Sun, Mar 06, 2005 at 11:38:12PM +0100, [EMAIL PROTECTED] wrote:
> 
> convert from pci_module_init to pci_register_driver
> 
> Signed-off-by: Christophe Lucas <[EMAIL PROTECTED]>
> Signed-off-by: Domen Puncer <[EMAIL PROTECTED]>
> ---
> 
> 
>  kj-domen/drivers/isdn/tpam/tpam_main.c |2 +-
>  1 files changed, 1 insertion(+), 1 deletion(-)
> 
> diff -puN drivers/isdn/tpam/tpam_main.c~pci_register_driver-drivers_isdn_tpam 
> drivers/isdn/tpam/tpam_main.c
> --- kj/drivers/isdn/tpam/tpam_main.c~pci_register_driver-drivers_isdn_tpam
> 2005-03-05 16:12:25.0 +0100
> +++ kj-domen/drivers/isdn/tpam/tpam_main.c2005-03-05 16:12:25.0 
> +0100
> @@ -278,7 +278,7 @@ static struct pci_driver tpam_driver = {
>  static int __init tpam_init(void) {
>   int ret;
>   
> - ret = pci_module_init(&tpam_driver);
> + ret = pci_register_driver(&tpam_driver);
>   if (ret)
>   return ret;
>   printk(KERN_INFO "TurboPAM: %d card%s found, driver loaded.\n", 


Note:

All changes to code drivers/isdn/tpam are obsolate, since the code is
obsolate and I already sent a complete remove patch.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.11-mm2

2005-03-08 Thread Karsten Keil
On Wed, Mar 09, 2005 at 01:20:46AM +0100, Adrian Bunk wrote:
> On Tue, Mar 08, 2005 at 03:38:46AM -0800, Andrew Morton wrote:
> >...
> > Changes since 2.6.11-mm1:
> >...
> > +drivers-isdn-tpam-convert-to-pci_register_driver.patch
> >...
> >  Little code tweaks.
> >...
> 
> Please drop this patch.
> 
> Karsten has a patch ready to remove this driver (because the hardware it 
> was supposed to drive never went into production), and such patches only 
> cause needless rediffs.
> 
> @Karsten:
> Could you submit your patch to remove tpam to Andrew?
> 

:-) already done few houres ago (against -mm2)


-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: patch-2.2.19.gz

2001-05-17 Thread Karsten Keil

On Wed, May 16, 2001 at 09:12:56PM -0400, Joe wrote:
> I just patched my 2.2.18 kernel.  After I did a make dep I got the
> following message.  Any ideas what does this mean?
> 
> md5sum: WARNING: 11 of 12 computed checksums did NOT match
> 
ignore.
It's simple that one file with md5sums was not updated in the isdn driver.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



Re: 2.6.11-rc2-mm1

2005-01-24 Thread Karsten Keil
On Mon, Jan 24, 2005 at 12:12:26PM +, Christoph Hellwig wrote:
> > +i4l-new-hfc_usb-driver-version.patch
> 
> this drivers wants:
> 
>  - update for Documentation/CodingStyle

agree, I only take the patch from chip manufacturer and
test compiling and working with my hardware and do not look at code style
yet.

>  - conversion to proper pci API

??? the driver is not PCI related at all


-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: 2.6.11-rc2-mm1

2005-01-24 Thread Karsten Keil
On Mon, Jan 24, 2005 at 11:26:03PM +, Christoph Hellwig wrote:
> On Mon, Jan 24, 2005 at 09:36:24PM +0100, Karsten Keil wrote:
> > >  - conversion to proper pci API
> > 
> > ??? the driver is not PCI related at all
> 
> Sorry, this was actually a comment for i4l-hfc-4s-and-hfc-8s-driver.patch.
> 

OK, in the meantime I assumed this too and informed the author about the
problems, I think most things will be solved soon.

I can correct CodingStyle for hfc_usb.c too, this give ~30K bigger patch.

Thanks for the formal code checks, I forget them sometimes, if I get code
from 3 party.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] [ISDN] sc: Really, really fix warning

2007-11-14 Thread Karsten Keil
On Wed, Nov 14, 2007 at 03:46:20PM +0100, Frank Lichtenheld wrote:
>   CC [M]  drivers/isdn/sc/shmem.o
> drivers/isdn/sc/shmem.c: In function ‘memcpy_toshmem’:
> drivers/isdn/sc/shmem.c:53: warning: passing argument 1 of ‘memcpy_toio’ 
> makes pointer from integer without a cast
> 
> 9317d4313e0cd51b2256ea9a9316f2d8561e37a8 claimed to fix it, but
> it didn't.
> 
> CC: Jeff Garzik <[EMAIL PROTECTED]>
Acked-by:Karsten Keil 
> Signed-off-by: Frank Lichtenheld <[EMAIL PROTECTED]>
> ---
>  drivers/isdn/sc/shmem.c |2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/isdn/sc/shmem.c b/drivers/isdn/sc/shmem.c
> index e0331e0..06a5554 100644
> --- a/drivers/isdn/sc/shmem.c
> +++ b/drivers/isdn/sc/shmem.c
> @@ -50,7 +50,7 @@ void memcpy_toshmem(int card, void *dest, const void *src, 
> size_t n)
>  
>   outb(((sc_adapter[card]->shmem_magic + ch * SRAM_PAGESIZE) >> 14) | 
> 0x80,
>   sc_adapter[card]->ioport[sc_adapter[card]->shmem_pgport]);
> - memcpy_toio(sc_adapter[card]->rambase + dest_rem, src, n);
> + memcpy_toio((void*)(sc_adapter[card]->rambase + dest_rem), src, n);
>   spin_unlock_irqrestore(&sc_adapter[card]->lock, flags);
>   pr_debug("%s: set page to %#x\n",sc_adapter[card]->devicename,
>   ((sc_adapter[card]->shmem_magic + ch * 
> SRAM_PAGESIZE)>>14)|0x80);
> -- 
> 1.5.3.4

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2] ISDN/capidrv: address two longstanding warnings

2007-10-26 Thread Karsten Keil
* change #warning to a code comment

* add comment and special ifdef'd 64-bit code for a situation where
  we must store a pointer into a CAPI field 'Data', which is fixed by
  the interface at 32 bits.

Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
Acked-by: Karsten Keil <[EMAIL PROTECTED]>

---
 drivers/isdn/capi/capidrv.c |   25 +++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
index 476012b..48c1775 100644
--- a/drivers/isdn/capi/capidrv.c
+++ b/drivers/isdn/capi/capidrv.c
@@ -1843,6 +1843,7 @@ static int if_sendbuf(int id, int channel, int doack, 
struct sk_buff *skb)
int msglen;
u16 errcode;
u16 datahandle;
+   u32 data;
 
if (!card) {
printk(KERN_ERR "capidrv: if_sendbuf called with invalid 
driverId %d!\n",
@@ -1860,9 +1861,26 @@ static int if_sendbuf(int id, int channel, int doack, 
struct sk_buff *skb)
return 0;
}
datahandle = nccip->datahandle;
+
+   /*
+* Here we copy pointer skb->data into the 32-bit 'Data' field.
+* The 'Data' field is not used in practice in linux kernel
+* (neither in 32 or 64 bit), but should have some value,
+* since a CAPI message trace will display it.
+*
+* The correct value in the 32 bit case is the address of the
+* data, in 64 bit it makes no sense, we use 0 there.
+*/
+
+#ifdef CONFIG_64BIT
+   data = 0;
+#else
+   data = (unsigned long) skb->data;
+#endif
+
capi_fill_DATA_B3_REQ(&sendcmsg, global.ap.applid, card->msgid++,
  nccip->ncci,  /* adr */
- (u32) skb->data,  /* Data */
+ data, /* Data */
  skb->len, /* DataLength */
  datahandle,   /* DataHandle */
  0 /* Flags */
@@ -2123,7 +2141,10 @@ static int capidrv_delcontr(u16 contr)
printk(KERN_ERR "capidrv: delcontr: no contr %u\n", contr);
return -1;
}
-   #warning FIXME: maybe a race condition the card should be removed here 
from global list /kkeil
+
+   /* FIXME: maybe a race condition the card should be removed
+* here from global list /kkeil
+*/
spin_unlock_irqrestore(&global_lock, flags);
 
del_timer(&card->listentimer);
-- 
1.5.2.4

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH][RESEND][ISDN] fix possible NULL deref on low memory condition in capidrv.c::send_message()

2007-08-06 Thread Karsten Keil
On Sat, Aug 04, 2007 at 08:31:37PM +0200, Jesper Juhl wrote:
> (first send: Monday 25 June 2007, resending due to no response)
> (resending again since there has still been no response)
> 
> 
> If we fail to allocate an skb in 
> drivers/isdn/capi/capidrv.c::send_message(), then we'll end up 
> dereferencing a NULL pointer.
> Since out of memory conditions are not unheard of, I believe it 
> is better to print a error message and just return rather than 
> bring down the whole kernel. 
> Sure, doing this may upset some application, but that's still 
> better than crashing the whole system.
> 
> (ps. please Cc me on replies from the isdn4linux list since I'm not 
> subscribed 
>  there)
> 
> 
> Signed-off-by: Jesper Juhl <[EMAIL PROTECTED]>

Acked-by: Karsten Keil <[EMAIL PROTECTED]>

> ---
> 
>  drivers/isdn/capi/capidrv.c |5 +
>  1 files changed, 5 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
> index 23b6f7b..476012b 100644
> --- a/drivers/isdn/capi/capidrv.c
> +++ b/drivers/isdn/capi/capidrv.c
> @@ -506,9 +506,14 @@ static void send_message(capidrv_contr * card, _cmsg * 
> cmsg)
>  {
>   struct sk_buff *skb;
>   size_t len;
> +
>   capi_cmsg2message(cmsg, cmsg->buf);
>   len = CAPIMSG_LEN(cmsg->buf);
>   skb = alloc_skb(len, GFP_ATOMIC);
> + if (!skb) {
> + printk(KERN_ERR "capidrv::send_message: can't allocate mem\n");
> + return;
> + }
>   memcpy(skb_put(skb, len), cmsg->buf, len);
>   if (capi20_put_message(&global.ap, skb) != CAPI_NOERROR)
>   kfree_skb(skb);
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH][RESEND][ISDN] Guard against a potential NULL pointer dereference in old_capi_manufacturer()

2007-08-06 Thread Karsten Keil
On Sat, Aug 04, 2007 at 08:31:54PM +0200, Jesper Juhl wrote:
> (first send: Monday 25 June 2007, resending due to no response)
> (resending again on August 8'th, 2007)
> 
> 
> In drivers/isdn/capi/kcapi.c::old_capi_manufacturer(), if the call 
> to get_capi_ctr_by_nr(ldef.contr); in line 823 returns NULL, then 
> we'll be dereferencing a NULL pointer in the very next line.
> 
> (Found by Coverity checker as bug #402)
> 
> 
> Signed-off-by: Jesper Juhl <[EMAIL PROTECTED]>

Acked-by: Karsten Keil <[EMAIL PROTECTED]>

> ---
> 
>  drivers/isdn/capi/kcapi.c |2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/isdn/capi/kcapi.c b/drivers/isdn/capi/kcapi.c
> index 3ed34f7..3f9e962 100644
> --- a/drivers/isdn/capi/kcapi.c
> +++ b/drivers/isdn/capi/kcapi.c
> @@ -821,6 +821,8 @@ static int old_capi_manufacturer(unsigned int cmd, void 
> __user *data)
>   return -EFAULT;
>   }
>   card = get_capi_ctr_by_nr(ldef.contr);
> + if (!card)
> + return -EINVAL;
>   card = capi_ctr_get(card);
>   if (!card)
>   return -ESRCH;
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 4/5] Use mutex instead of semaphore in ISDN subsystem common functions

2007-07-30 Thread Karsten Keil
On Sun, Jul 29, 2007 at 11:41:05PM +0200, Matthias Kaehlcke wrote:
> The ISDN subsystem common functions use a semaphore as mutex. Use the
> mutex API instead of the (binary) semaphore.
> 
> Signed-off-by: Matthias Kaehlcke <[EMAIL PROTECTED]>
> 

Acked-by: Karsten Keil <[EMAIL PROTECTED]>

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: drivers/infiniband/mlx/mad.c misplaced ;

2007-08-16 Thread Karsten Keil
On Thu, Aug 16, 2007 at 01:22:04PM +0300, Ilpo Järvinen wrote:
> 
> ...I guess those guys hunting for broken busyloops in the other thread 
> could also benefit from similar searching commands introduced in this 
> thread... ...Ccing Satyam to caught their attention too.
> 
> 
> ./drivers/isdn/hisax/hfc_pci.c
> 125:  if (Read_hfc(cs, HFCPCI_INT_S1)) ;
> 155:  if (Read_hfc(cs, HFCPCI_INT_S1)) ;
> 1483: if (Read_hfc(cs, HFCPCI_INT_S1)) ;
> --
> ./drivers/isdn/hisax/hfc_sx.c
> 377:  if (Read_hfc(cs, HFCSX_INT_S1)) ;
> 407:  if (Read_hfc(cs, HFCSX_INT_S2)) ;
> 1246: if (Read_hfc(cs, HFCSX_INT_S1)) ;
> --

These are workaround to not get compiler warnings about ignored return
values I got some time ago under some architecture.


-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] [ISDN]Fix random hard freeze with AVM c4 card part 2

2007-10-18 Thread Karsten Keil
One call was missing in the previous patch.

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
---
 drivers/isdn/hardware/avm/c4.c |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/isdn/hardware/avm/c4.c b/drivers/isdn/hardware/avm/c4.c
index 4c6ef91..d69c05e 100644
--- a/drivers/isdn/hardware/avm/c4.c
+++ b/drivers/isdn/hardware/avm/c4.c
@@ -678,7 +678,9 @@ static irqreturn_t c4_handle_interrupt(avmcard *card)
 for (i=0; i < card->nr_controllers; i++) {
avmctrl_info *cinfo = &card->ctrlinfo[i];
memset(cinfo->version, 0, sizeof(cinfo->version));
+   spin_lock_irqsave(&card->lock, flags);
capilib_release(&cinfo->ncci_head);
+   spin_unlock_irqrestore(&card->lock, flags);
capi_ctr_reseted(&cinfo->capi_ctrl);
        }
    card->nlogcontr = 0;

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] [ISDN]Fix random hard freeze with AVM cards using b1dma

2007-10-18 Thread Karsten Keil
This fix the hard freeze debuged for AVM C4 cards using
the b1dma interface.

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
---
 drivers/isdn/hardware/avm/b1dma.c |   28 +++-
 1 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/drivers/isdn/hardware/avm/b1dma.c 
b/drivers/isdn/hardware/avm/b1dma.c
index 428872b..a40997b 100644
--- a/drivers/isdn/hardware/avm/b1dma.c
+++ b/drivers/isdn/hardware/avm/b1dma.c
@@ -486,11 +486,13 @@ static void b1dma_handle_rx(avmcard *card)
card->name);
} else {
memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
-   if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF)
+   if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF) {
+   spin_lock(&card->lock);
capilib_data_b3_conf(&cinfo->ncci_head, ApplId,
-CAPIMSG_NCCI(skb->data),
-CAPIMSG_MSGID(skb->data));
-
+   CAPIMSG_NCCI(skb->data),
+   CAPIMSG_MSGID(skb->data));
+   spin_unlock(&card->lock);
+   }
capi_ctr_handle_message(ctrl, ApplId, skb);
}
break;
@@ -500,9 +502,9 @@ static void b1dma_handle_rx(avmcard *card)
ApplId = _get_word(&p);
NCCI = _get_word(&p);
WindowSize = _get_word(&p);
-
+   spin_lock(&card->lock);
capilib_new_ncci(&cinfo->ncci_head, ApplId, NCCI, WindowSize);
-
+   spin_unlock(&card->lock);
break;
 
case RECEIVE_FREE_NCCI:
@@ -510,9 +512,11 @@ static void b1dma_handle_rx(avmcard *card)
ApplId = _get_word(&p);
NCCI = _get_word(&p);
 
-   if (NCCI != 0x)
+   if (NCCI != 0x) {
+   spin_lock(&card->lock);
capilib_free_ncci(&cinfo->ncci_head, ApplId, NCCI);
-
+   spin_unlock(&card->lock);
+   }
break;
 
case RECEIVE_START:
@@ -751,10 +755,10 @@ void b1dma_reset_ctr(struct capi_ctr *ctrl)
 
spin_lock_irqsave(&card->lock, flags);
b1dma_reset(card);
-   spin_unlock_irqrestore(&card->lock, flags);
 
memset(cinfo->version, 0, sizeof(cinfo->version));
capilib_release(&cinfo->ncci_head);
+   spin_unlock_irqrestore(&card->lock, flags);
capi_ctr_reseted(ctrl);
 }
 
@@ -803,8 +807,11 @@ void b1dma_release_appl(struct capi_ctr *ctrl, u16 appl)
avmcard *card = cinfo->card;
struct sk_buff *skb;
void *p;
+   unsigned long flags;
 
+   spin_lock_irqsave(&card->lock, flags);
capilib_release_appl(&cinfo->ncci_head, appl);
+   spin_unlock_irqrestore(&card->lock, flags);
 
skb = alloc_skb(7, GFP_ATOMIC);
if (!skb) {
@@ -832,10 +839,13 @@ u16 b1dma_send_message(struct capi_ctr *ctrl, struct 
sk_buff *skb)
u16 retval = CAPI_NOERROR;
 
if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_REQ) {
+   unsigned long flags;
+   spin_lock_irqsave(&card->lock, flags);
retval = capilib_data_b3_req(&cinfo->ncci_head,
 CAPIMSG_APPID(skb->data),
 CAPIMSG_NCCI(skb->data),
     CAPIMSG_MSGID(skb->data));
+   spin_unlock_irqrestore(&card->lock, flags);
}
if (retval == CAPI_NOERROR) 
b1dma_queue_tx(card, skb);

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] [ISDN]Fix random hard freeze with AVM T1 cards

2007-10-18 Thread Karsten Keil
This fix the hard freeze debuged for AVM C4 cards
for the AVM T1 cards.

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
---
 drivers/isdn/hardware/avm/t1isa.c |   28 
 1 files changed, 12 insertions(+), 16 deletions(-)

diff --git a/drivers/isdn/hardware/avm/t1isa.c 
b/drivers/isdn/hardware/avm/t1isa.c
index c925020..6130724 100644
--- a/drivers/isdn/hardware/avm/t1isa.c
+++ b/drivers/isdn/hardware/avm/t1isa.c
@@ -180,8 +180,8 @@ static irqreturn_t t1isa_interrupt(int interrupt, void 
*devptr)
 
ApplId = (unsigned) b1_get_word(card->port);
MsgLen = t1_get_slice(card->port, card->msgbuf);
-   spin_unlock_irqrestore(&card->lock, flags);
if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) {
+   spin_unlock_irqrestore(&card->lock, flags);
printk(KERN_ERR "%s: incoming packet dropped\n",
card->name);
} else {
@@ -190,7 +190,7 @@ static irqreturn_t t1isa_interrupt(int interrupt, void 
*devptr)
capilib_data_b3_conf(&cinfo->ncci_head, 
ApplId,
 
CAPIMSG_NCCI(skb->data),
 
CAPIMSG_MSGID(skb->data));
-
+   spin_unlock_irqrestore(&card->lock, flags);
capi_ctr_handle_message(ctrl, ApplId, skb);
}
break;
@@ -200,21 +200,17 @@ static irqreturn_t t1isa_interrupt(int interrupt, void 
*devptr)
ApplId = b1_get_word(card->port);
NCCI = b1_get_word(card->port);
WindowSize = b1_get_word(card->port);
-   spin_unlock_irqrestore(&card->lock, flags);
-
capilib_new_ncci(&cinfo->ncci_head, ApplId, NCCI, 
WindowSize);
-
+   spin_unlock_irqrestore(&card->lock, flags);
break;
 
case RECEIVE_FREE_NCCI:
 
ApplId = b1_get_word(card->port);
NCCI = b1_get_word(card->port);
-   spin_unlock_irqrestore(&card->lock, flags);
-
if (NCCI != 0x)
capilib_free_ncci(&cinfo->ncci_head, ApplId, 
NCCI);
-
+   spin_unlock_irqrestore(&card->lock, flags);
break;
 
case RECEIVE_START:
@@ -333,13 +329,16 @@ static void t1isa_reset_ctr(struct capi_ctr *ctrl)
avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata);
avmcard *card = cinfo->card;
unsigned int port = card->port;
+   unsigned long flags;
 
t1_disable_irq(port);
b1_reset(port);
b1_reset(port);
 
memset(cinfo->version, 0, sizeof(cinfo->version));
+   spin_lock_irqsave(&card->lock, flags);
capilib_release(&cinfo->ncci_head);
+   spin_unlock_irqrestore(&card->lock, flags);
capi_ctr_reseted(ctrl);
 }
 
@@ -466,29 +465,26 @@ static u16 t1isa_send_message(struct capi_ctr *ctrl, 
struct sk_buff *skb)
u8 subcmd = CAPIMSG_SUBCOMMAND(skb->data);
u16 dlen, retval;
 
+   spin_lock_irqsave(&card->lock, flags);
if (CAPICMD(cmd, subcmd) == CAPI_DATA_B3_REQ) {
retval = capilib_data_b3_req(&cinfo->ncci_head,
 CAPIMSG_APPID(skb->data),
 CAPIMSG_NCCI(skb->data),
 CAPIMSG_MSGID(skb->data));
-   if (retval != CAPI_NOERROR) 
+   if (retval != CAPI_NOERROR) {
+   spin_unlock_irqrestore(&card->lock, flags);
return retval;
-
+   }
dlen = CAPIMSG_DATALEN(skb->data);
 
-   spin_lock_irqsave(&card->lock, flags);
b1_put_byte(port, SEND_DATA_B3_REQ);
t1_put_slice(port, skb->data, len);
t1_put_slice(port, skb->data + len, dlen);
-   spin_unlock_irqrestore(&card->lock, flags);
} else {
-
-   spin_lock_irqsave(&card->lock, flags);
b1_put_byte(port, SEND_MESSAGE);
t1_put_slice(port, skb->data, len);
-   spin_unlock_irqrestore(&card->lock, flags);
}
-
+   spin_unlock_irqrestore(&card->lock, flags);
dev_kfree_skb_any(skb);
return CAPI_NOERROR;
 }

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Max

Re: [PATCH 11/17] isdn/act2000: fix major bug. clean irq handler

2007-10-22 Thread Karsten Keil
commit e295b1287f0f559f4795ae75acb793b480594a04
Author: Jeff Garzik <[EMAIL PROTECTED]>
Date:   Fri Oct 19 19:30:28 2007 -0400

isdn/act2000: fix major bug. clean irq handler.

* invert sense of request_irq() test.  otherwise we will always fail,
  when IRQ is available.

* no need to use 'irq' function arg, its stored in a data struct already
    
Acked-by: Karsten Keil <[EMAIL PROTECTED]>
Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>

 drivers/isdn/act2000/act2000_isa.c |   12 
 1 file changed, 8 insertions(+), 4 deletions(-)

e295b1287f0f559f4795ae75acb793b480594a04
diff --git a/drivers/isdn/act2000/act2000_isa.c 
b/drivers/isdn/act2000/act2000_isa.c
index 819ea85..1bd8960 100644
--- a/drivers/isdn/act2000/act2000_isa.c
+++ b/drivers/isdn/act2000/act2000_isa.c
@@ -61,7 +61,7 @@ act2000_isa_detect(unsigned short portbase)
 }
 
 static irqreturn_t
-act2000_isa_interrupt(int irq, void *dev_id)
+act2000_isa_interrupt(int dummy, void *dev_id)
 {
 act2000_card *card = dev_id;
 u_char istatus;
@@ -80,7 +80,7 @@ act2000_isa_interrupt(int irq, void *dev_id)
 printk(KERN_WARNING "act2000: errIRQ\n");
 }
if (istatus)
-   printk(KERN_DEBUG "act2000: ?IRQ %d %02x\n", irq, istatus);
+   printk(KERN_DEBUG "act2000: ?IRQ %d %02x\n", card->irq, 
istatus);
return IRQ_HANDLED;
 }
 
@@ -131,6 +131,8 @@ act2000_isa_enable_irq(act2000_card * card)
 int
 act2000_isa_config_irq(act2000_card * card, short irq)
 {
+   int old_irq;
+
 if (card->flags & ACT2000_FLAGS_IVALID) {
 free_irq(card->irq, card);
 }
@@ -139,8 +141,10 @@ act2000_isa_config_irq(act2000_card * card, short irq)
 if (!irq)
 return 0;
 
-   if (!request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) {
-   card->irq = irq;
+   old_irq = card->irq;
+   card->irq = irq;
+   if (request_irq(irq, &act2000_isa_interrupt, 0, card->regname, card)) {
+   card->irq = old_irq;
card->flags |= ACT2000_FLAGS_IVALID;
     printk(KERN_WARNING
"act2000: Could not request irq %d\n",irq);


-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 12/17] isdn/sc: irq handler clean

2007-10-22 Thread Karsten Keil
commit ebf0fb18d5c19bb0201912850d14a9fda292ee0e
Author: Jeff Garzik <[EMAIL PROTECTED]>
Date:   Fri Oct 19 19:31:27 2007 -0400

isdn/sc: irq handler clean

* pass card number to irq handler

* use card number in irq handler to avoid looping through each adapter

Acked-by: Karsten Keil <[EMAIL PROTECTED]>
Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>

 drivers/isdn/sc/init.c  |3 ++-
 drivers/isdn/sc/interrupt.c |   17 ++---
 2 files changed, 4 insertions(+), 16 deletions(-)

ebf0fb18d5c19bb0201912850d14a9fda292ee0e
diff --git a/drivers/isdn/sc/init.c b/drivers/isdn/sc/init.c
index d09c854..dd0acd0 100644
--- a/drivers/isdn/sc/init.c
+++ b/drivers/isdn/sc/init.c
@@ -334,7 +334,8 @@ static int __init sc_init(void)
 */
sc_adapter[cinst]->interrupt = irq[b];
if (request_irq(sc_adapter[cinst]->interrupt, interrupt_handler,
-   IRQF_DISABLED, interface->id, NULL))
+   IRQF_DISABLED, interface->id,
+   (void *)(unsigned long) cinst))
{
kfree(sc_adapter[cinst]->channel);
indicate_status(cinst, ISDN_STAT_UNLOAD, 0, NULL);  
/* Fix me */
diff --git a/drivers/isdn/sc/interrupt.c b/drivers/isdn/sc/interrupt.c
index bef7963..485be8b 100644
--- a/drivers/isdn/sc/interrupt.c
+++ b/drivers/isdn/sc/interrupt.c
@@ -21,28 +21,15 @@
 #include "card.h"
 #include 
 
-static int get_card_from_irq(int irq)
-{
-   int i;
-
-   for(i = 0 ; i < cinst ; i++) {
-   if(sc_adapter[i]->interrupt == irq)
-   return i;
-   }
-   return -1;
-}
-
 /*
  * 
  */
-irqreturn_t interrupt_handler(int interrupt, void *cardptr)
+irqreturn_t interrupt_handler(int dummy, void *card_inst)
 {
 
RspMessage rcvmsg;
int channel;
-   int card;
-
-   card = get_card_from_irq(interrupt);
+   int card = (int)(unsigned long) card_inst;
 
if(!IS_VALID_CARD(card)) {
pr_debug("Invalid param: %d is not a valid card id\n", card);

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 5/12] ISDN/sc: fix longstanding warning

2007-10-24 Thread Karsten Keil
On Tue, Oct 23, 2007 at 06:36:39PM -0400, Jeff Garzik wrote:
> drivers/isdn/sc/shmem.c: In function ‘memcpy_toshmem’:
> drivers/isdn/sc/shmem.c:54: warning: passing argument 1 of ‘memcpy_toio’ 
> makes pointer from integer without a cast
> 
> Also, remove some unneeded braces, and add some useful whitespace.
> 
> Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>

Acked.
> ---
> 
> diff --git a/drivers/isdn/sc/shmem.c b/drivers/isdn/sc/shmem.c
> index 034d41a..e0331e0 100644
> --- a/drivers/isdn/sc/shmem.c
> +++ b/drivers/isdn/sc/shmem.c
> @@ -28,15 +28,15 @@ void memcpy_toshmem(int card, void *dest, const void 
> *src, size_t n)
>  {
>   unsigned long flags;
>   unsigned char ch;
> + unsigned long dest_rem = ((unsigned long) dest) % 0x4000;
>  
> - if(!IS_VALID_CARD(card)) {
> + if (!IS_VALID_CARD(card)) {
>   pr_debug("Invalid param: %d is not a valid card id\n", card);
>   return;
>   }
>  
> - if(n > SRAM_PAGESIZE) {
> + if (n > SRAM_PAGESIZE)
>   return;
> - }
>  
>   /*
>* determine the page to load from the address
> @@ -50,8 +50,7 @@ void memcpy_toshmem(int card, void *dest, const void *src, 
> size_t n)
>  
>   outb(((sc_adapter[card]->shmem_magic + ch * SRAM_PAGESIZE) >> 14) | 
> 0x80,
>   sc_adapter[card]->ioport[sc_adapter[card]->shmem_pgport]);
> - memcpy_toio(sc_adapter[card]->rambase +
> - ((unsigned long) dest % 0x4000), src, n);
> + memcpy_toio(sc_adapter[card]->rambase + dest_rem, src, n);
>   spin_unlock_irqrestore(&sc_adapter[card]->lock, flags);
>   pr_debug("%s: set page to %#x\n",sc_adapter[card]->devicename,
>   ((sc_adapter[card]->shmem_magic + ch * 
> SRAM_PAGESIZE)>>14)|0x80);
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ISDN/capidrv: fix casting warning

2007-10-25 Thread Karsten Keil
On Thu, Oct 25, 2007 at 04:06:16AM -0400, Jeff Garzik wrote:
> drivers/isdn/capi/capidrv.c: In function 'if_sendbuf':
> drivers/isdn/capi/capidrv.c:1865: warning: cast from pointer to integer
> of different size
> 
> We are passing a kernel pointer, skb->data, but the interface itself is
> limited to 32 bits.  A future changeset may want to mark this code
> 32-bit only, if it turns out cmsg->Data value truncation on 64-bit
> platforms is problematic in practice.
> 

I think I should really add somewhere a comment for this issue.
This field is not used in practice in linux kernel (neither in 32 or
64 bit), but should have some value, since a CAPI message trace will
display it.
The correct value in the 32 bit case is the address of the
data, in 64 bit it makes no sense, maybe we should use 0 here.

> Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
> ---
>  drivers/isdn/capi/capidrv.c |2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
> index 44f954d..a4814e1 100644
> --- a/drivers/isdn/capi/capidrv.c
> +++ b/drivers/isdn/capi/capidrv.c
> @@ -1862,7 +1862,7 @@ static int if_sendbuf(int id, int channel, int doack, 
> struct sk_buff *skb)
>   datahandle = nccip->datahandle;
>   capi_fill_DATA_B3_REQ(&sendcmsg, global.ap.applid, card->msgid++,
> nccip->ncci,  /* adr */
> -   (u32) skb->data,  /* Data */
> +   (unsigned long) skb->data, /* Data */
> skb->len, /* DataLength */
>     datahandle,   /* DataHandle */
> 0 /* Flags */
> -- 
> 1.5.2.4

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Remove #warnings for longstanding conditions.

2007-10-25 Thread Karsten Keil
On Thu, Oct 25, 2007 at 04:06:15AM -0400, Jeff Garzik wrote:
> These two warnings...
> 
> drivers/isdn/capi/capidrv.c:2126:3: warning: #warning FIXME: maybe a
> race condition the card should be removed here from global list /kkeil
> 
> drivers/scsi/advansys.c:71:2: warning: #warning this driver is still
> not properly converted to the DMA API
> 
> ...represent conditions that have existed for years, and are duly noted
> in FIXMEs.  There does not seem to be much need to warn on every kernel
> build for a driver bug or handicap that has existed for years.
> 
> Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
> ---
>  drivers/isdn/capi/capidrv.c |3 ++-

Acked.

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCHes] ISDN simple cleanups - hotplug API prep

2007-10-12 Thread Karsten Keil
On Thu, Oct 11, 2007 at 03:06:55PM -0400, Jeff Garzik wrote:
> Karsten,
> 
> As I mentioned in previous emails, I would like to send these upstream
> for 2.6.24.  These are the first step in converting the hisax driver
> over to the modular, hotplug-friendly ISA/PNP/PCI APIs.
> 
> The second step in that conversion is 95% complete (one more driver),
> and is stored in branch 'isdn-pci' of the repository below.
> 
> The changes below were posted as patches many weeks ago, without
> comment.  I also propagated these to the 'ALL' branch that gets copied
> into -mm for testing, though some changes have been there longer than
> others.
> 
> All these changes are code movement changes, without any changes to the
> logic -- even the existing whitespace funnies were kept in many cases.
> 
> Would you mind pulling these, or permitting me to push them upstream?
> 

Tested and Acked.

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] [ISDN] Fix random hard freeze with AVM c4 card

2007-10-17 Thread Karsten Keil
The patch
- Includes the call to capilib_data_b3_req in the spinlock. This routine
  in turn calls the offending mq_enqueue routine that triggered the
  freeze if not locked.  This should also fix other indicators of
  incosistent capilib_msgidqueue list, that trigger messages like:
  Oct  5 03:05:57 BERL0 kernel: kcapi: msgid 3019 ncci 0x30301 not on queue
  that we saw several times a day (usually several in a row).
- Fixes all occurrences of c4_dispatch_tx to be called with active
  spinlock, there were some instances where no lock was active. Mostly
  these are in very infrequently called routines, so the additional
  performance penalty is minimal.

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
Signed-off-by: Rainer Brestan <[EMAIL PROTECTED]>
Signed-off-by: Ralf Schlatterbeck <[EMAIL PROTECTED]>
---
 drivers/isdn/hardware/avm/c4.c |   16 
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/isdn/hardware/avm/c4.c b/drivers/isdn/hardware/avm/c4.c
index d58f927..4c6ef91 100644
--- a/drivers/isdn/hardware/avm/c4.c
+++ b/drivers/isdn/hardware/avm/c4.c
@@ -727,6 +727,7 @@ static void c4_send_init(avmcard *card)
 {
struct sk_buff *skb;
void *p;
+   unsigned long flags;
 
skb = alloc_skb(15, GFP_ATOMIC);
if (!skb) {
@@ -744,12 +745,15 @@ static void c4_send_init(avmcard *card)
skb_put(skb, (u8 *)p - (u8 *)skb->data);
 
skb_queue_tail(&card->dma->send_queue, skb);
+   spin_lock_irqsave(&card->lock, flags);
c4_dispatch_tx(card);
+   spin_unlock_irqrestore(&card->lock, flags);
 }
 
 static int queue_sendconfigword(avmcard *card, u32 val)
 {
struct sk_buff *skb;
+   unsigned long flags;
void *p;
 
skb = alloc_skb(3+4, GFP_ATOMIC);
@@ -766,7 +770,9 @@ static int queue_sendconfigword(avmcard *card, u32 val)
skb_put(skb, (u8 *)p - (u8 *)skb->data);
 
skb_queue_tail(&card->dma->send_queue, skb);
+   spin_lock_irqsave(&card->lock, flags);
c4_dispatch_tx(card);
+   spin_unlock_irqrestore(&card->lock, flags);
return 0;
 }
 
@@ -986,7 +992,9 @@ static void c4_release_appl(struct capi_ctr *ctrl, u16 appl)
struct sk_buff *skb;
void *p;
 
+   spin_lock_irqsave(&card->lock, flags);
capilib_release_appl(&cinfo->ncci_head, appl);
+   spin_unlock_irqrestore(&card->lock, flags);
 
if (ctrl->cnr == card->cardnr) {
skb = alloc_skb(7, GFP_ATOMIC);
@@ -1018,8 +1026,9 @@ static u16 c4_send_message(struct capi_ctr *ctrl, struct 
sk_buff *skb)
avmcard *card = cinfo->card;
u16 retval = CAPI_NOERROR;
unsigned long flags;
-
-   if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_REQ) {
+   
+   spin_lock_irqsave(&card->lock, flags);
+   if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_REQ) {
retval = capilib_data_b3_req(&cinfo->ncci_head,
 CAPIMSG_APPID(skb->data),
 CAPIMSG_NCCI(skb->data),
@@ -1027,10 +1036,9 @@ static u16 c4_send_message(struct capi_ctr *ctrl, struct 
sk_buff *skb)
}
if (retval == CAPI_NOERROR) {
skb_queue_tail(&card->dma->send_queue, skb);
-   spin_lock_irqsave(&card->lock, flags);
c4_dispatch_tx(card);
-   spin_unlock_irqrestore(&card->lock, flags);
}
+   spin_unlock_irqrestore(&card->lock, flags);
return retval;
 }
 

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] [ISDN] fix random freezes with AVM B1 drivers

2007-10-17 Thread Karsten Keil
This fix the same issue which was debbuged for the C4
controller for the B1 versions.
The capilib_ function modify or traverse a linked
list without locking.
This patch extend the existing locking
to the calls of these function to prevent access
to a list which is in the middle of a modification.

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
---
 drivers/isdn/hardware/avm/b1.c |   28 +---
 1 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/drivers/isdn/hardware/avm/b1.c b/drivers/isdn/hardware/avm/b1.c
index 7a69a18..4484a64 100644
--- a/drivers/isdn/hardware/avm/b1.c
+++ b/drivers/isdn/hardware/avm/b1.c
@@ -321,12 +321,15 @@ void b1_reset_ctr(struct capi_ctr *ctrl)
avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata);
avmcard *card = cinfo->card;
unsigned int port = card->port;
+   unsigned long flags;
 
b1_reset(port);
b1_reset(port);
 
memset(cinfo->version, 0, sizeof(cinfo->version));
+   spin_lock_irqsave(&card->lock, flags);
capilib_release(&cinfo->ncci_head);
+   spin_unlock_irqrestore(&card->lock, flags);
capi_ctr_reseted(ctrl);
 }
 
@@ -361,9 +364,8 @@ void b1_release_appl(struct capi_ctr *ctrl, u16 appl)
unsigned int port = card->port;
unsigned long flags;
 
-   capilib_release_appl(&cinfo->ncci_head, appl);
-
spin_lock_irqsave(&card->lock, flags);
+   capilib_release_appl(&cinfo->ncci_head, appl);
b1_put_byte(port, SEND_RELEASE);
b1_put_word(port, appl);
spin_unlock_irqrestore(&card->lock, flags);
@@ -380,27 +382,27 @@ u16 b1_send_message(struct capi_ctr *ctrl, struct sk_buff 
*skb)
u8 subcmd = CAPIMSG_SUBCOMMAND(skb->data);
u16 dlen, retval;
 
+   spin_lock_irqsave(&card->lock, flags);
if (CAPICMD(cmd, subcmd) == CAPI_DATA_B3_REQ) {
retval = capilib_data_b3_req(&cinfo->ncci_head,
 CAPIMSG_APPID(skb->data),
 CAPIMSG_NCCI(skb->data),
 CAPIMSG_MSGID(skb->data));
-   if (retval != CAPI_NOERROR) 
+   if (retval != CAPI_NOERROR) {
+   spin_unlock_irqrestore(&card->lock, flags);
return retval;
+   }
 
dlen = CAPIMSG_DATALEN(skb->data);
 
-   spin_lock_irqsave(&card->lock, flags);
b1_put_byte(port, SEND_DATA_B3_REQ);
b1_put_slice(port, skb->data, len);
b1_put_slice(port, skb->data + len, dlen);
-   spin_unlock_irqrestore(&card->lock, flags);
} else {
-   spin_lock_irqsave(&card->lock, flags);
b1_put_byte(port, SEND_MESSAGE);
b1_put_slice(port, skb->data, len);
-   spin_unlock_irqrestore(&card->lock, flags);
}
+   spin_unlock_irqrestore(&card->lock, flags);
 
dev_kfree_skb_any(skb);
return CAPI_NOERROR;
@@ -534,17 +536,17 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
 
ApplId = (unsigned) b1_get_word(card->port);
MsgLen = b1_get_slice(card->port, card->msgbuf);
-   spin_unlock_irqrestore(&card->lock, flags);
if (!(skb = alloc_skb(MsgLen, GFP_ATOMIC))) {
printk(KERN_ERR "%s: incoming packet dropped\n",
card->name);
+   spin_unlock_irqrestore(&card->lock, flags);
} else {
memcpy(skb_put(skb, MsgLen), card->msgbuf, MsgLen);
if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_CONF)
capilib_data_b3_conf(&cinfo->ncci_head, ApplId,
 CAPIMSG_NCCI(skb->data),
 CAPIMSG_MSGID(skb->data));
-
+   spin_unlock_irqrestore(&card->lock, flags);
capi_ctr_handle_message(ctrl, ApplId, skb);
}
break;
@@ -554,21 +556,17 @@ irqreturn_t b1_interrupt(int interrupt, void *devptr)
ApplId = b1_get_word(card->port);
NCCI = b1_get_word(card->port);
WindowSize = b1_get_word(card->port);
-   spin_unlock_irqrestore(&card->lock, flags);
-
capilib_new_ncci(&cinfo->ncci_head, ApplId, NCCI, WindowSize);
-
+   spin_unlock_irqrestore(&card->lock, flags);
break;
 
case RECEIVE_FREE_NCCI:
 
ApplId = b1_get_word(card->port);
NCCI = b1_get_wo

Re: any value to fixing apparent bugs in old ISDN4Linux?

2007-01-15 Thread Karsten Keil
On Mon, Jan 15, 2007 at 06:43:30AM -0500, Robert P. J. Day wrote:
> 
> $ grep -r DE_AOC .
> ./.config:CONFIG_DE_AOC=y
> ./drivers/isdn/hisax/l3dss1.c:#ifdef HISAX_DE_AOC
> ./drivers/isdn/hisax/l3dss1.c:#else  /* not HISAX_DE_AOC */
> ./drivers/isdn/hisax/l3dss1.c:#endif /* not HISAX_DE_AOC */
> ./drivers/isdn/hisax/Kconfig:config DE_AOC
> 
>   it seems like there's a name mismatch between the config variable
> and the one that's being tested, no?
> 
>   OTOH, since that code *is* in the allegedly obsolete old ISDN4Linux
> code, perhaps that entire part of the tree can just be junked.  but if
> it's sticking around, it should probably be fixed.
> 


Yes thanks for discover this. Since the code only affect the
analyse of the AOC info which is pure information only without real
function it was not detected before.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: any value to fixing apparent bugs in old ISDN4Linux?

2007-01-15 Thread Karsten Keil
On Mon, Jan 15, 2007 at 12:17:37PM -0500, Robert P. J. Day wrote:
> On Mon, 15 Jan 2007, Tilman Schmidt wrote:
> 
> > Robert P. J. Day schrieb:
> > >   OTOH, since that code *is* in the allegedly obsolete old ISDN4Linux
> > > code, perhaps that entire part of the tree can just be junked.  but if
> > > it's sticking around, it should probably be fixed.
> >
> > Please do not remove isdn4linux just yet. It's true that it has been
> > marked as obsolete for quite some time, but it's still needed
> > anyway. Its designated successor, the CAPI subsystem, so far only
> > supports a very limited range of hardware. Dropping isdn4linux now
> > would leave the owners of some very popular ISDN cards out in the
> > cold.
> 
> that wouldn't be my decision, i just made a note of an oddity.  but if
> it's still in actual use, then it really should be re-labelled from
> "obsolete" to "deprecated," no?
> 

Good point.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2.6.20-rc5] isdn/capi: use ARRAY_SIZE when appropriate

2007-01-16 Thread Karsten Keil
On Tue, Jan 16, 2007 at 11:53:19AM +0200, Ahmed S. Darwish wrote:
> Hi all,
> 
> A trivial patch to use ARRAY_SIZE macro defined in kernel.h instead
> of reimplementing it.
> 
> Signed-off-by: Ahmed S. Darwish <[EMAIL PROTECTED]>

Acked-by: Karsten Keil <[EMAIL PROTECTED]>

> ---
> 
> capi.c|4 ++--
> capidrv.c |4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/isdn/capi/capi.c b/drivers/isdn/capi/capi.c
> index d22c022..3804591 100644
> --- a/drivers/isdn/capi/capi.c
> +++ b/drivers/isdn/capi/capi.c
> @@ -1456,7 +1456,7 @@ static struct procfsentries {
>  
>  static void __init proc_init(void)
>  {
> -int nelem = sizeof(procfsentries)/sizeof(procfsentries[0]);
> +int nelem = ARRAY_SIZE(procfsentries);
>  int i;
>  
>  for (i=0; i < nelem; i++) {
> @@ -1468,7 +1468,7 @@ static void __init proc_init(void)
>  
>  static void __exit proc_exit(void)
>  {
> -int nelem = sizeof(procfsentries)/sizeof(procfsentries[0]);
> +int nelem = ARRAY_SIZE(procfsentries);
>  int i;
>  
>  for (i=nelem-1; i >= 0; i--) {
> diff --git a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
> index c4d438c..8cec9c3 100644
> --- a/drivers/isdn/capi/capidrv.c
> +++ b/drivers/isdn/capi/capidrv.c
> @@ -2218,7 +2218,7 @@ static struct procfsentries {
>  
>  static void __init proc_init(void)
>  {
> -int nelem = sizeof(procfsentries)/sizeof(procfsentries[0]);
> +int nelem = ARRAY_SIZE(procfsentries);
>  int i;
>  
>  for (i=0; i < nelem; i++) {
> @@ -2230,7 +2230,7 @@ static void __init proc_init(void)
>  
>  static void __exit proc_exit(void)
>  {
> -int nelem = sizeof(procfsentries)/sizeof(procfsentries[0]);
> +int nelem = ARRAY_SIZE(procfsentries);
>  int i;
>  
>  for (i=nelem-1; i >= 0; i--) {
> 
> -- 
> Ahmed S. Darwish
> http://darwish-07.blogspot.com

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ISDN: fix warnings

2006-12-04 Thread Karsten Keil
On Sun, Dec 03, 2006 at 08:42:03PM -0500, Jeff Garzik wrote:
> 
> * diva, sedlbauer: the 'ready' label is only used in certain configurations
> * hfc_pci:
>   - cast 'arg' to proper size for testing and printing
>   - print out 'void __iomem *' variables with %p,
> rather than using incorrect casts that throw warnings
> 
> Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
> 

Acked-by: Karsten keil <[EMAIL PROTECTED]>

> diff --git a/drivers/isdn/hisax/diva.c b/drivers/isdn/hisax/diva.c
> index 3dacfff..6eebeb4 100644
> --- a/drivers/isdn/hisax/diva.c
> +++ b/drivers/isdn/hisax/diva.c
> @@ -1121,7 +1121,11 @@ #endif /* CONFIG_PCI */
>   bytecnt = 32;
>   }
>   }
> +
> +#ifdef __ISAPNP__
>  ready:
> +#endif
> +
>   printk(KERN_INFO
>   "Diva: %s card configured at %#lx IRQ %d\n",
>   (cs->subtyp == DIVA_PCI) ? "PCI" :
> diff --git a/drivers/isdn/hisax/hfc_pci.c b/drivers/isdn/hisax/hfc_pci.c
> index 93f60b5..463b8ac 100644
> --- a/drivers/isdn/hisax/hfc_pci.c
> +++ b/drivers/isdn/hisax/hfc_pci.c
> @@ -1211,7 +1211,7 @@ #endif
>   break;
>   case (HW_TESTLOOP | REQUEST):
>   spin_lock_irqsave(&cs->lock, flags);
> - switch ((int) arg) {
> + switch ((long) arg) {
>   case (1):
>   Write_hfc(cs, HFCPCI_B1_SSL, 0x80); 
> /* tx slot */
>   Write_hfc(cs, HFCPCI_B1_RSL, 0x80); 
> /* rx slot */
> @@ -1229,7 +1229,7 @@ #endif
>   default:
>   spin_unlock_irqrestore(&cs->lock, 
> flags);
>   if (cs->debug & L1_DEB_WARN)
> - debugl1(cs, "hfcpci_l1hw loop 
> invalid %4x", (int) arg);
> + debugl1(cs, "hfcpci_l1hw loop 
> invalid %4lx", (long) arg);
>   return;
>   }
>   cs->hw.hfcpci.trm |= 0x80;  /* enable IOM-loop */
> @@ -1709,9 +1709,9 @@ #ifdef CONFIG_PCI
>   pci_write_config_dword(cs->hw.hfcpci.dev, 0x80, (u_int) 
> virt_to_bus(cs->hw.hfcpci.fifos));
>   cs->hw.hfcpci.pci_io = ioremap((ulong) cs->hw.hfcpci.pci_io, 
> 256);
>   printk(KERN_INFO
> -"HFC-PCI: defined at mem %#x fifo %#x(%#x) IRQ %d HZ 
> %d\n",
> -(u_int) cs->hw.hfcpci.pci_io,
> -(u_int) cs->hw.hfcpci.fifos,
> +"HFC-PCI: defined at mem %p fifo %p(%#x) IRQ %d HZ %d\n",
> +cs->hw.hfcpci.pci_io,
> +cs->hw.hfcpci.fifos,
>  (u_int) virt_to_bus(cs->hw.hfcpci.fifos),
>  cs->irq, HZ);
>   spin_lock_irqsave(&cs->lock, flags);
> diff --git a/drivers/isdn/hisax/sedlbauer.c b/drivers/isdn/hisax/sedlbauer.c
> index 9522141..030d162 100644
> --- a/drivers/isdn/hisax/sedlbauer.c
> +++ b/drivers/isdn/hisax/sedlbauer.c
> @@ -677,7 +677,11 @@ #else
>   return (0);
>  #endif /* CONFIG_PCI */
>   }   
> +
> +#ifdef __ISAPNP__
>  ready:   
> +#endif
> +
>   /* In case of the sedlbauer pcmcia card, this region is in use,
>* reserved for us by the card manager. So we do not check it
>* here, it would fail.

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC: 2.6 patch] remove the broken HISAX_AMD7930 option

2006-11-27 Thread Karsten Keil
On Sat, Nov 25, 2006 at 08:15:04PM +0100, Adrian Bunk wrote:
> HISAX_AMD7930 was never anywhere near to being working, and this doesn't 
> seem to change in the forseeable future.
> 
> Signed-off-by: Adrian Bunk <[EMAIL PROTECTED]>
> 

Acked-by: Karsten Keil <[EMAIL PROTECTED]>

> ---
> 
> Thgis patch was already sent on:
> - 18 Nov 2006
> 
>  drivers/isdn/hisax/Kconfig  |7 ---
>  drivers/isdn/hisax/config.c |   18 --
>  drivers/isdn/hisax/hisax.h  |6 --
>  3 files changed, 31 deletions(-)
> 
> --- linux-2.6.19-rc5-mm2/drivers/isdn/hisax/Kconfig.old   2006-11-17 
> 19:41:07.0 +0100
> +++ linux-2.6.19-rc5-mm2/drivers/isdn/hisax/Kconfig   2006-11-17 
> 19:41:15.0 +0100
> @@ -349,13 +349,6 @@ config HISAX_ENTERNOW_PCI
> This enables HiSax support for the Formula-n enter:now PCI
> ISDN card.
>  
> -config HISAX_AMD7930
> - bool "Am7930 (EXPERIMENTAL)"
> - depends on EXPERIMENTAL && SPARC && BROKEN
> - help
> -   This enables HiSax support for the AMD7930 chips on some SPARCs.
> -   This code is not finished yet.
> -
>  endif
>  
>  if ISDN_DRV_HISAX
> --- linux-2.6.19-rc5-mm2/drivers/isdn/hisax/hisax.h.old   2006-11-17 
> 19:41:33.0 +0100
> +++ linux-2.6.19-rc5-mm2/drivers/isdn/hisax/hisax.h   2006-11-17 
> 19:41:44.0 +0100
> @@ -1139,12 +1139,6 @@ struct IsdnCardState {
>  #define  CARD_HFC_SX 0
>  #endif
>  
> -#ifdef  CONFIG_HISAX_AMD7930
> -#define CARD_AMD7930 1
> -#else
> -#define CARD_AMD7930 0
> -#endif
> -
>  #ifdef   CONFIG_HISAX_NICCY
>  #define  CARD_NICCY 1
>  #ifndef ISDN_CHIP_ISAC
> --- linux-2.6.19-rc5-mm2/drivers/isdn/hisax/config.c.old  2006-11-17 
> 19:41:57.0 +0100
> +++ linux-2.6.19-rc5-mm2/drivers/isdn/hisax/config.c  2006-11-17 
> 19:43:03.0 +0100
> @@ -227,14 +227,6 @@ const char *CardType[] = {
>  #define DEFAULT_CFG {5,0x2E0,0,0}
>  #endif
>  
> -
> -#ifdef CONFIG_HISAX_AMD7930
> -#undef DEFAULT_CARD
> -#undef DEFAULT_CFG
> -#define DEFAULT_CARD ISDN_CTYPE_AMD7930
> -#define DEFAULT_CFG {12,0x3e0,0,0}
> -#endif
> -
>  #ifdef CONFIG_HISAX_NICCY
>  #undef DEFAULT_CARD
>  #undef DEFAULT_CFG
> @@ -545,10 +537,6 @@ extern int setup_hfcpci(struct IsdnCard 
>  extern int setup_hfcsx(struct IsdnCard *card);
>  #endif
>  
> -#if CARD_AMD7930
> -extern int setup_amd7930(struct IsdnCard *card);
> -#endif
> -
>  #if CARD_NICCY
>  extern int setup_niccy(struct IsdnCard *card);
>  #endif
> @@ -1064,11 +1052,6 @@ static int checkcard(int cardnr, char *i
>   ret = setup_niccy(card);
>   break;
>  #endif
> -#if CARD_AMD7930
> - case ISDN_CTYPE_AMD7930:
> - ret = setup_amd7930(card);
> - break;
> -#endif
>  #if CARD_ISURF
>   case ISDN_CTYPE_ISURF:
>   ret = setup_isurf(card);
> @@ -1438,7 +1421,6 @@ static int __init HiSax_init(void)
>   break;
>   case ISDN_CTYPE_ELSA_PCI:
>   case ISDN_CTYPE_NETJET_S:
> - case ISDN_CTYPE_AMD7930:
>   case ISDN_CTYPE_TELESPCI:
>   case ISDN_CTYPE_W6692:
>   case ISDN_CTYPE_NETJET_U:

-- 
Karsten Keil
SuSE Labs
ISDN development
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [KJ] Re: [PATCH] drivers/isdn/hisax: ARRAY_SIZE instead of sizeof

2007-06-11 Thread Karsten Keil
On Mon, Jun 11, 2007 at 10:25:31PM +1000, Darren Jenkins wrote:
> G'day Andi,
> 
> On 6/11/07, Andi Drebes <[EMAIL PROTECTED]> wrote:
> 
> >> I'd suggest to not use another define, but use ARRAY_SIZE(foo)
> >> _instead of_ eg. FNCOUNT.
> >I thought of this, too, but I tried to keep things consistent. Let me
> >explain that a little bit more in detail. If you have a look at the files
> >in drivers/isdn/hisax then you will see that a lot of array size 
> >definitions
> >are assigned to preprocessor macros. So I thought removing just one
> >of the macros while the other continue to exist would make the code
> >a little bit more inconsistent. However, one might disagree about that.
> >So here's another patch that includes the changes from the original patch
> >and removes the FNCOUNT preprocessor definition. Perhaps the original
> >authors of the files should decide wether they want to keep it or not.
> 
> I think what was meant here was to remove _all_ the macros that you
> assigned to the ARRAY_SIZE() macro.
> 
...

Agree, here is a new version.

This patch replaces various array size calculations in drivers/isdn/hisax
done using sizeof with the ARRAY_SIZE macro.

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
Signed-off-by: Andi Drebes <[EMAIL PROTECTED]>
---
 drivers/isdn/hisax/callc.c   |4 +--
 drivers/isdn/hisax/isdnl1.c  |   12 ++-
 drivers/isdn/hisax/isdnl2.c  |4 +--
 drivers/isdn/hisax/isdnl3.c  |4 +--
 drivers/isdn/hisax/l3_1tr6.c |   20 +++
 drivers/isdn/hisax/l3dss1.c  |   26 --
 drivers/isdn/hisax/l3ni1.c   |   24 -
 drivers/isdn/hisax/q931.c|   77 ++---
 drivers/isdn/hisax/tei.c |4 +--
 9 files changed, 55 insertions(+), 120 deletions(-)

diff --git a/drivers/isdn/hisax/callc.c b/drivers/isdn/hisax/callc.c
index 7c56c44..0b9ed8e 100644
--- a/drivers/isdn/hisax/callc.c
+++ b/drivers/isdn/hisax/callc.c
@@ -834,8 +834,6 @@ static struct FsmNode fnlist[] __initdata =
 };
 /* *INDENT-ON* */
 
-#define FNCOUNT (sizeof(fnlist)/sizeof(struct FsmNode))
-
 int __init
 CallcNew(void)
 {
@@ -843,7 +841,7 @@ CallcNew(void)
callcfsm.event_count = EVENT_COUNT;
callcfsm.strEvent = strEvent;
callcfsm.strState = strState;
-   return FsmNew(&callcfsm, fnlist, FNCOUNT);
+   return FsmNew(&callcfsm, fnlist, ARRAY_SIZE(fnlist));
 }
 
 void
diff --git a/drivers/isdn/hisax/isdnl1.c b/drivers/isdn/hisax/isdnl1.c
index a14204e..80e923e 100644
--- a/drivers/isdn/hisax/isdnl1.c
+++ b/drivers/isdn/hisax/isdnl1.c
@@ -647,8 +647,6 @@ static struct FsmNode L1SFnList[] __initdata =
{ST_L1_F8, EV_TIMER_DEACT, l1_timer_deact},
 };
 
-#define L1S_FN_COUNT (sizeof(L1SFnList)/sizeof(struct FsmNode))
-
 #ifdef HISAX_UINTERFACE
 static void
 l1_deact_req_u(struct FsmInst *fi, int event, void *arg)
@@ -706,8 +704,6 @@ static struct FsmNode L1UFnList[] __initdata =
{ST_L1_RESET, EV_TIMER_DEACT, l1_timer_deact},
 };
 
-#define L1U_FN_COUNT (sizeof(L1UFnList)/sizeof(struct FsmNode))
-
 #endif
 
 static void
@@ -754,8 +750,6 @@ static struct FsmNode L1BFnList[] __initdata =
{ST_L1_WAIT_DEACT, EV_TIMER_DEACT, l1b_timer_deact},
 };
 
-#define L1B_FN_COUNT (sizeof(L1BFnList)/sizeof(struct FsmNode))
-
 int __init 
 Isdnl1New(void)
 {
@@ -765,7 +759,7 @@ Isdnl1New(void)
l1fsm_s.event_count = L1_EVENT_COUNT;
l1fsm_s.strEvent = strL1Event;
l1fsm_s.strState = strL1SState;
-   retval = FsmNew(&l1fsm_s, L1SFnList, L1S_FN_COUNT);
+   retval = FsmNew(&l1fsm_s, L1SFnList, ARRAY_SIZE(L1SFnList));
if (retval)
return retval;
 
@@ -773,7 +767,7 @@ Isdnl1New(void)
l1fsm_b.event_count = L1_EVENT_COUNT;
l1fsm_b.strEvent = strL1Event;
l1fsm_b.strState = strL1BState;
-   retval = FsmNew(&l1fsm_b, L1BFnList, L1B_FN_COUNT);
+   retval = FsmNew(&l1fsm_b, L1BFnList, ARRAY_SIZE(L1BFnList));
if (retval) {
FsmFree(&l1fsm_s);
return retval;
@@ -783,7 +777,7 @@ Isdnl1New(void)
l1fsm_u.event_count = L1_EVENT_COUNT;
l1fsm_u.strEvent = strL1Event;
l1fsm_u.strState = strL1UState;
-   retval = FsmNew(&l1fsm_u, L1UFnList, L1U_FN_COUNT);
+   retval = FsmNew(&l1fsm_u, L1UFnList, ARRAY_SIZE(L1UFnList));
if (retval) {
FsmFree(&l1fsm_s);
FsmFree(&l1fsm_b);
diff --git a/drivers/isdn/hisax/isdnl2.c b/drivers/isdn/hisax/isdnl2.c
index 3446f24..7b9496a 100644
--- a/drivers/isdn/hisax/isdnl2.c
+++ b/drivers/isdn/hisax/isdnl2.c
@@ -1623,8 +1623,6 @@ static struct FsmNode L2FnList[] __initdata =
{ST_L2_8, EV_L1_DEACTIVATE, l2_persistent_da},
 };
 
-#define L2_FN_COUNT (sizeof(L2FnList)/sizeof(struct FsmNode))
-
 static void
 isdnl2_l1l2(struct PStack *s

[PATCH] Update isdn tree to use pci_get_device

2007-05-27 Thread Karsten Keil

Replacing pci_find_device with pci_get_device in the
drivers/isdn subtree.

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
Signed-off-by: Surya Prabhakar <[EMAIL PROTECTED]>

---

 drivers/isdn/hisax/avm_pci.c  |   19 ++
 drivers/isdn/hisax/bkm_a4t.c  |   15 +---
 drivers/isdn/hisax/bkm_a8.c   |   28 +--
 drivers/isdn/hisax/diva.c |   69 +++--
 drivers/isdn/hisax/elsa.c |   54 -
 drivers/isdn/hisax/enternow_pci.c |   20 ++-
 drivers/isdn/hisax/gazel.c|   13 +--
 drivers/isdn/hisax/hfc_pci.c  |   14 +---
 drivers/isdn/hisax/niccy.c|   22 
 drivers/isdn/hisax/nj_s.c |   17 ++---
 drivers/isdn/hisax/nj_u.c |   18 ++
 drivers/isdn/hisax/sedlbauer.c|   27 +-
 drivers/isdn/hisax/telespci.c |   14 +---
 drivers/isdn/hisax/w6692.c|   14 +---
 drivers/isdn/hysdn/hysdn_init.c   |4 ++
 15 files changed, 211 insertions(+), 137 deletions(-)

0ed0d964e9948d56d1e6550b489a6644e7218108
diff --git a/drivers/isdn/hisax/avm_pci.c b/drivers/isdn/hisax/avm_pci.c
index b04a178..29f4802 100644
--- a/drivers/isdn/hisax/avm_pci.c
+++ b/drivers/isdn/hisax/avm_pci.c
@@ -789,19 +789,19 @@ setup_avm_pcipnp(struct IsdnCard *card)
}
 #endif
 #ifdef CONFIG_PCI
-   if ((dev_avm = pci_find_device(PCI_VENDOR_ID_AVM,
+   if ((dev_avm = pci_get_device(PCI_VENDOR_ID_AVM,
PCI_DEVICE_ID_AVM_A1,  dev_avm))) {
if (pci_enable_device(dev_avm))
-   return(0);
+   goto dev_avm_cleanup;
cs->irq = dev_avm->irq;
if (!cs->irq) {
printk(KERN_ERR "FritzPCI: No IRQ for PCI card 
found\n");
-   return(0);
+   goto dev_avm_cleanup;
}
cs->hw.avm.cfg_reg = pci_resource_start(dev_avm, 1);
if (!cs->hw.avm.cfg_reg) {
printk(KERN_ERR "FritzPCI: No IO-Adr for PCI card 
found\n");
-   return(0);
+   goto dev_avm_cleanup;
}
cs->subtyp = AVM_FRITZ_PCI;
} else {
@@ -822,7 +822,7 @@ ready:
   CardType[card->typ],
   cs->hw.avm.cfg_reg,
   cs->hw.avm.cfg_reg + 31);
-   return (0);
+   goto dev_avm_cleanup;
}
switch (cs->subtyp) {
  case AVM_FRITZ_PCI:
@@ -841,8 +841,8 @@ ready:
cs->BC_Write_Reg = &WriteHDLCPnP;
break;
  default:
-   printk(KERN_WARNING "AVM unknown subtype %d\n", cs->subtyp);
-   return(0);
+   printk(KERN_WARNING "AVM unknown subtype %d\n", cs->subtyp);
+   goto dev_avm_cleanup;
}
printk(KERN_INFO "HiSax: %s config irq:%d base:0x%X\n",
(cs->subtyp == AVM_FRITZ_PCI) ? "AVM Fritz!PCI" : "AVM 
Fritz!PnP",
@@ -858,5 +858,10 @@ ready:
cs->irq_func = &avm_pcipnp_interrupt;
cs->writeisac(cs, ISAC_MASK, 0xFF);
ISACVersion(cs, (cs->subtyp == AVM_FRITZ_PCI) ? "AVM PCI:" : "AVM 
PnP:");
+   pci_dev_put(dev_avm);
return (1);
+
+dev_avm_cleanup:
+   pci_dev_put(dev_avm);
+   return 0;
 }
diff --git a/drivers/isdn/hisax/bkm_a4t.c b/drivers/isdn/hisax/bkm_a4t.c
index 871310d..7b3b849 100644
--- a/drivers/isdn/hisax/bkm_a4t.c
+++ b/drivers/isdn/hisax/bkm_a4t.c
@@ -275,7 +275,7 @@ setup_bkm_a4t(struct IsdnCard *card)
return (0);
 
 #ifdef CONFIG_PCI
-   while ((dev_a4t = pci_find_device(PCI_VENDOR_ID_ZORAN,
+   while ((dev_a4t = pci_get_device(PCI_VENDOR_ID_ZORAN,
PCI_DEVICE_ID_ZORAN_36120, dev_a4t))) {
u16 sub_sys;
u16 sub_vendor;
@@ -284,7 +284,7 @@ setup_bkm_a4t(struct IsdnCard *card)
sub_sys = dev_a4t->subsystem_device;
if ((sub_sys == PCI_DEVICE_ID_BERKOM_A4T) && (sub_vendor == 
PCI_VENDOR_ID_BERKOM)) {
if (pci_enable_device(dev_a4t))
-   return(0);
+   goto dev_a4t_cleanup;
found = 1;
pci_memaddr = pci_resource_start(dev_a4t, 0);
cs->irq = dev_a4t->irq;
@@ -297,11 +297,11 @@ setup_bkm_a4t(struct IsdnCard *card)
}
if (!cs->irq) { /* IRQ range check ?? */
printk(KERN_WARNING "HiSax: %s: No IRQ\n", CardType[card->typ]);
-   return (0);
+   goto dev_a4t_cleanup;
}
if (!pci_memaddr) {
printk(KERN_WARNING &

[PATCH] Fix broken CLIR in isdn driver

2007-05-29 Thread Karsten Keil
I noticed that CLIR (aka "hide your calling number") in isdn_tty is broken:
The at-command parser filters out the required "R" (e.g. ATDR089123456)
It's been broken for a *very* long time.

Signed-off-by: Karsten Keil <[EMAIL PROTECTED]>
Signed-off-by: Matthias Goebl <[EMAIL PROTECTED]>
---
 drivers/isdn/i4l/isdn_tty.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
index ea5f30d..4e5f87c 100644
--- a/drivers/isdn/i4l/isdn_tty.c
+++ b/drivers/isdn/i4l/isdn_tty.c
@@ -2693,8 +2693,9 @@ isdn_tty_getdial(char *p, char *q,int cnt)
int limit = ISDN_MSNLEN - 1;/* MUST match the size of interface var 
to avoid
buffer overflow */
 
-   while (strchr(" 0123456789,#.*WPTS-", *p) && *p && --cnt>0) {
+   while (strchr(" 0123456789,#.*WPTSR-", *p) && *p && --cnt>0) {
if ((*p >= '0' && *p <= '9') || ((*p == 'S') && first) ||
+   ((*p == 'R') && first) ||
(*p == '*') || (*p == '#')) {
*q++ = *p;
limit--;


-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 02/06] Use menuconfig objects 4 - ISDN part 2/6 (CONFIG_ISDN_I4L)

2007-05-31 Thread Karsten Keil
On Thu, May 31, 2007 at 06:16:52PM +0200, Tilman Schmidt wrote:
> Am 30.05.2007 21:38 schrieb Jan Engelhardt:
> > --- linux-2.6.22-rc3-git1.orig/drivers/isdn/Kconfig
> > +++ linux-2.6.22-rc3-git1/drivers/isdn/Kconfig
> > @@ -21,9 +21,7 @@ menuconfig ISDN
> >  
> >  if ISDN
> >  
> > -menu "Old ISDN4Linux"
> > -
> > -config ISDN_I4L
> > +menuconfig ISDN_I4L
> > tristate "Old ISDN4Linux (obsolete)"
> > ---help---
> >   This driver allows you to use an ISDN-card for networking
> > @@ -44,8 +42,6 @@ if ISDN_I4L
> >  source "drivers/isdn/i4l/Kconfig"
> >  endif
> >  
> > -endmenu
> > -
> >  comment "CAPI subsystem"
> >  
> 
> This results in a rather strange and inconsistent presentation in
> "make xconfig", with ISDN4Linux appearing as a subtree in the left
> pane but CAPI only visible in the right pane after selecting ISDN.
> IMHO it looks much saner like this:
> 
> --- a/drivers/isdn/Kconfig
> +++ b/drivers/isdn/Kconfig
> @@ -21,8 +21,6 @@ menuconfig ISDN
> 
>  if ISDN
> 
> -menu "Old ISDN4Linux"
> -
>  config ISDN_I4L
>   tristate "Old ISDN4Linux (deprecated)"
>   ---help---
> @@ -44,12 +42,8 @@ if ISDN_I4L
>  source "drivers/isdn/i4l/Kconfig"
>  endif
> 
> -endmenu
> -
> -comment "CAPI subsystem"
> -
>  config ISDN_CAPI
> - tristate "CAPI2.0 support"
> + tristate "CAPI 2.0 subsystem"
>   help
> This provides the CAPI (Common ISDN Application Programming
> Interface, a standard making it easy for programs to access ISDN
> 
> This gives you a single entry in the left pane tree for disabling
> all of ISDN with a single click, and nicely presents all of its
> suboptions in the right pane once you select the tree entry.
> 

I agree.


-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] drivers/isdn/hisax: ARRAY_SIZE instead of sizeof

2007-06-10 Thread Karsten Keil
izeof(ielist_ni1_cs5)/sizeof(struct 
> InformationElement)
> +#define IESIZE_NI1_CS5 ARRAY_SIZE(ielist_ni1_cs5)
>  
>  static
>  struct InformationElement ielist_ni1_cs6[] = {
>   { 0x7b, "Call appearance", general_ni1 },
>  };
>  
> -#define IESIZE_NI1_CS6 sizeof(ielist_ni1_cs6)/sizeof(struct 
> InformationElement)
> +#define IESIZE_NI1_CS6 ARRAY_SIZE(ielist_ni1_cs6)
>  
>  static struct InformationElement we_0[] =
>  {
> @@ -1133,7 +1133,7 @@ static struct InformationElement we_0[] =
>   {WE0_userInfo, "User Info", general}
>  };
>  
> -#define WE_0_LEN (sizeof(we_0) / sizeof(struct InformationElement))
> +#define WE_0_LEN ARRAY_SIZE(we_0)
>  
>  static struct InformationElement we_6[] =
>  {
> @@ -1145,7 +1145,7 @@ static struct InformationElement we_6[] =
>   {WE6_statusCalled, "Status Called", general},
>   {WE6_addTransAttr, "Additional Transmission Attributes", general}
>  };
> -#define WE_6_LEN (sizeof(we_6) / sizeof(struct InformationElement))
> +#define WE_6_LEN ARRAY_SIZE(we_6)
>  
>  int
>  QuickHex(char *txt, u_char * p, int cnt)
> diff --git a/drivers/isdn/hisax/tei.c b/drivers/isdn/hisax/tei.c
> index ceb0df9..21567af 100644
> --- a/drivers/isdn/hisax/tei.c
> +++ b/drivers/isdn/hisax/tei.c
> @@ -447,7 +447,7 @@ static struct FsmNode TeiFnList[] __initdata =
>   {ST_TEI_IDVERIFY, EV_CHKREQ, tei_id_chk_req},
>  };
>  
> -#define TEI_FN_COUNT (sizeof(TeiFnList)/sizeof(struct FsmNode))
> +#define TEI_FN_COUNT ARRAY_SIZE(TeiFnList)
>  
>  int __init
>  TeiNew(void)

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 7/15] Make ISDN CAPI use seq_list_xxx helpers

2007-05-18 Thread Karsten Keil
The similar code exists here and is called capi_driver_get_idx().
Use generic helpers now and remember to convert list_head to
struct capi_driver in .show callback.

Acked-by: Karsten Keil <[EMAIL PROTECTED]>
Signed-off-by: Pavel Emelianov <[EMAIL PROTECTED]>

---

diff --git a/drivers/isdn/capi/kcapi_proc.c b/drivers/isdn/capi/kcapi_proc.c
index 31f4fd8..845a797 100644
--- a/drivers/isdn/capi/kcapi_proc.c
+++ b/drivers/isdn/capi/kcapi_proc.c
@@ -243,36 +243,15 @@ create_seq_entry(char *name, mode_t mode
 
 // ---
 
-
-static __inline__ struct capi_driver *capi_driver_get_idx(loff_t pos)
-{
-   struct capi_driver *drv = NULL;
-   struct list_head *l;
-   loff_t i;
-
-   i = 0;
-   list_for_each(l, &capi_drivers) {
-   drv = list_entry(l, struct capi_driver, list);
-   if (i++ == pos)
-   return drv;
-   }
-   return NULL;
-}
-
 static void *capi_driver_start(struct seq_file *seq, loff_t *pos)
 {
-   struct capi_driver *drv;
read_lock(&capi_drivers_list_lock);
-   drv = capi_driver_get_idx(*pos);
-   return drv;
+   return seq_list_start(&capi_drivers, *pos);
 }
 
 static void *capi_driver_next(struct seq_file *seq, void *v, loff_t *pos)
 {
-   struct capi_driver *drv = (struct capi_driver *)v;
-   ++*pos;
-   if (drv->list.next == &capi_drivers) return NULL;
-   return list_entry(drv->list.next, struct capi_driver, list);
+   return seq_list_next(v, &capi_drivers, pos);
 }
 
 static void capi_driver_stop(struct seq_file *seq, void *v)
@@ -282,7 +261,8 @@ static void capi_driver_stop(struct seq_
 
 static int capi_driver_show(struct seq_file *seq, void *v)
 {
-   struct capi_driver *drv = (struct capi_driver *)v;
+   struct capi_driver *drv = list_entry(v, struct capi_driver, list);
+
seq_printf(seq, "%-32s %s\n", drv->name, drv->revision);
return 0;
 }

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ISDN: move card state init to separate function

2007-05-22 Thread Karsten Keil
Hello Jeff,

thank you for this effort.

On Tue, May 22, 2007 at 08:44:58AM -0400, Jeff Garzik wrote:
> 
> The follow is the first baby step towards moving the HiSax drivers to
> the new PCI API.  The HiSax PCI initialization code is ass-backwards and
> an incredible pain, so this will take many steps.  If anybody is
> motivated to assist, help is more than welcome!
> 

So what is the reason to do this now, does this block some changes in
other places ? I did not change this code for long time because I know
that this is a nightmare, the code was grown and grown (supporting more and
more cards/chipsets) and is really nothing which should be used in future.
So I would say it maybe better, if it doesn't block anything else, to
replace HiSax completely with a new modular design. I know that here was not
so much effort in the past years, but now I got some time to push mISDN
forward and it looks not so bad to get the first parts ready for mainline
in June.

Neverless, if you still think that we should get rid of the old HiSax
code, I'll help as much as I can, I still have most of the cards available
in my lab, so I can also test all changes.

> The first step just moves some code into a separate function, with the
> general direction being the isolation of card-generic code away from all
> the heavily #ifdef'd card-specific code.
> 
> This patch should not change any behavior at all.  It only includes very
> trivial code modifications, like s/kmalloc/kzalloc/, use of gfp_mask,
> and the allocation of cs->rcvbuf was moved up to be with the rest of the
> memory allocations.
> 
> Further changes will be checked into this git branch:
> 
> The 'isdn-pci' branch of
> git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/misc-2.6.git
> 

...
-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] ISDN: move card state init to separate function

2007-05-22 Thread Karsten Keil
On Tue, May 22, 2007 at 12:46:16PM -0400, Jeff Garzik wrote:
> Karsten Keil wrote:
> >So what is the reason to do this now, does this block some changes in
> >other places ? I did not change this code for long time because I know
> >that this is a nightmare, the code was grown and grown (supporting more and
> >more cards/chipsets) and is really nothing which should be used in future.
> >So I would say it maybe better, if it doesn't block anything else, to
> >replace HiSax completely with a new modular design. I know that here was 
> >not
> >so much effort in the past years, but now I got some time to push mISDN
> >forward and it looks not so bad to get the first parts ready for mainline
> >in June.
> 
> ISDN is the biggest chunk of code blocking removal of some deprecated 
> PCI interfaces.
> 

OK then this should be done of course, since I fear that we will not
move all supported cards (since they are not longer sold) to the new driver.

> If you want to replace the code completely with a newfangled modular 
> design, I will gladly step out of the way and let that happen :)  I only 
> know what I see right now, which is code that has sat around for a while 
> not getting updated to the new PCI API.
> 
> Since I do not have any ISDN hardware, my plan was to do equivalent 
> transformations of the code.  Each patch just shuffles code, but 
> maintains a working state at all time, making it trivial to prove 
> (mathematically, or with testing, or with git-bisect) that the code 
> continues to work.

So maybe it could be a good start point to do the transition for one
card first, maybe nj_s.c is OK to start.


> 
> So, just tell me which you would prefer.  If you are going to fix all 
> this stuff, there is plenty of other stuff on my list to work on. 
> Otherwise I will create equivalent-transform patches that take the 
> existing code and modify it just enough to be correct for the new PCI API.
> 

If you do that for one card, I will test it and change the rest.

Thanks for your help.

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 14/14] Convert from class_device to device for ISDN capi

2007-08-21 Thread Karsten Keil
On Mon, Aug 20, 2007 at 03:48:20PM -0700, [EMAIL PROTECTED] wrote:
> -- 
> Content-Disposition: inline; filename=isdn-capi.patch
> 
> Convert from class_device to device for drivers/isdn/capi.  This is
> part of the work to eliminate struct class_device.
> 

If you add a Signed-off-by:
I'll ack this patch.

> ---
>  drivers/isdn/capi/capi.c |6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> --- a/drivers/isdn/capi/capi.c
> +++ b/drivers/isdn/capi/capi.c
> @@ -1544,11 +1544,11 @@ static int __init capi_init(void)
>   return PTR_ERR(capi_class);
>   }
>  
> - class_device_create(capi_class, NULL, MKDEV(capi_major, 0), NULL, 
> "capi");
> + device_create(capi_class, NULL, MKDEV(capi_major, 0), "capi");
>  
>  #ifdef CONFIG_ISDN_CAPI_MIDDLEWARE
>   if (capinc_tty_init() < 0) {
> - class_device_destroy(capi_class, MKDEV(capi_major, 0));
> + device_destroy(capi_class, MKDEV(capi_major, 0));
>   class_destroy(capi_class);
>   unregister_chrdev(capi_major, "capi20");
>   return -ENOMEM;
> @@ -1576,7 +1576,7 @@ static void __exit capi_exit(void)
>  {
>   proc_exit();
>  
> - class_device_destroy(capi_class, MKDEV(capi_major, 0));
> + device_destroy(capi_class, MKDEV(capi_major, 0));
>   class_destroy(capi_class);
>   unregister_chrdev(capi_major, "capi20");
>  
> 
> -- 

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 17/30] isdn: Get rid of some pointless allocation casts in common and bsd comp.

2007-08-24 Thread Karsten Keil
On Fri, Aug 24, 2007 at 02:09:34AM +0200, Jesper Juhl wrote:
> vmalloc() returns a void pointer - no need to cast the return value.
> 
> Signed-off-by: Jesper Juhl <[EMAIL PROTECTED]>

Acked-by: Karsten Keil <[EMAIL PROTECTED]>
> ---
>  drivers/isdn/i4l/isdn_bsdcomp.c |5 ++---
>  drivers/isdn/i4l/isdn_common.c  |2 +-
>  2 files changed, 3 insertions(+), 4 deletions(-)
> 
...
-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] isdn/sc: remove unused REQUEST_IRQ and unnecessary header file

2007-08-25 Thread Karsten Keil

[PATCH] isdn/sc: remove unused REQUEST_IRQ and unnecessary

REQUEST_IRQ is never used, so delete it. In the process get rid of the
macro FREE_IRQ which makes the code unnecessarily difficult to read.

Signed-off-by: Fernando Luis Vazquez Cao <[EMAIL PROTECTED]>
Acked-by: Karsten Keil <[EMAIL PROTECTED]>
---

diff -urNp linux-2.6.23-rc3-orig/drivers/isdn/sc/debug.h 
linux-2.6.23-rc3/drivers/isdn/sc/debug.h
--- linux-2.6.23-rc3-orig/drivers/isdn/sc/debug.h   2007-07-09 
08:32:17.0 +0900
+++ linux-2.6.23-rc3/drivers/isdn/sc/debug.h1970-01-01 09:00:00.0 
+0900
@@ -1,19 +0,0 @@
-/* $Id: debug.h,v 1.2.8.1 2001/09/23 22:24:59 kai Exp $
- *
- * Copyright (C) 1996  SpellCaster Telecommunications Inc.
- *
- * This software may be used and distributed according to the terms
- * of the GNU General Public License, incorporated herein by reference.
- *
- * For more information, please contact [EMAIL PROTECTED] or write:
- *
- * SpellCaster Telecommunications Inc.
- * 5621 Finch Avenue East, Unit #3
- * Scarborough, Ontario  Canada
- * M1B 2T9
- * +1 (416) 297-8565
- * +1 (416) 297-6433 Facsimile
- */
-
-#define REQUEST_IRQ(a,b,c,d,e) request_irq(a,b,c,d,e)
-#define FREE_IRQ(a,b) free_irq(a,b)
diff -urNp linux-2.6.23-rc3-orig/drivers/isdn/sc/includes.h 
linux-2.6.23-rc3/drivers/isdn/sc/includes.h
--- linux-2.6.23-rc3-orig/drivers/isdn/sc/includes.h2007-07-09 
08:32:17.0 +0900
+++ linux-2.6.23-rc3/drivers/isdn/sc/includes.h 2007-08-24 20:55:45.0 
+0900
@@ -14,4 +14,3 @@
 #include 
 #include 
 #include 
-#include "debug.h"
diff -urNp linux-2.6.23-rc3-orig/drivers/isdn/sc/init.c 
linux-2.6.23-rc3/drivers/isdn/sc/init.c
--- linux-2.6.23-rc3-orig/drivers/isdn/sc/init.c2007-07-09 
08:32:17.0 +0900
+++ linux-2.6.23-rc3/drivers/isdn/sc/init.c 2007-08-24 20:31:58.0 
+0900
@@ -404,7 +404,7 @@ static void __exit sc_exit(void)
/*
 * Release the IRQ
 */
-   FREE_IRQ(sc_adapter[i]->interrupt, NULL);
+   free_irq(sc_adapter[i]->interrupt, NULL);
 
/*
 * Reset for a clean start

-- 
Karsten Keil
SuSE Labs
ISDN and VOIP development
SUSE LINUX Products GmbH, Maxfeldstr.5 90409 Nuernberg, GF: Markus Rex, HRB 
16746 (AG Nuernberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 00/16] sleep_on removal, second try

2014-02-28 Thread Karsten Keil
Am 26.02.2014 12:01, schrieb Arnd Bergmann:
> It's been a while since the first submission of these patches,
> but a lot of them have made it into linux-next already, so here
> is the stuff that is not merged yet, hopefully addressing all
> the comments.
> 
> Geert and Michael: the I was expecting the ataflop and atari_scsi
> patches to be merged already, based on earlier discussion.
> Can you apply them to the linux-m68k tree, or do you prefer
> them to go through the scsi and block maintainers?
> 
> Jens: I did not get any comments for the DAC960 and swim3 patches,
> I assume they are good to go in. Please merge.
> 
> Hans and Mauro: As I commented on the old thread, I thought the
> four media patches were on their way. I have addressed the one
> comment that I missed earlier now, and used Hans' version for
> the two patches he changed. Please merge or let me know the status
> if you have already put them in some tree, but not yet into linux-next
> 
> Greg or Andrew: The parport subsystem is orphaned unfortunately,
> can one of you pick up that patch?
> 
> Davem: The two ATM patches got acks, but I did not hear back from
> Karsten regarding the ISDN patches. Can you pick up all six, or
> should we wait for comments about the ISDN patches?
>


Ack on the ISDN stuff (12,13,14,15)


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH linux-next] hisax: disable build for big-endian arm

2013-11-21 Thread Karsten Keil
Am 22.11.2013 08:29, schrieb Takashi Iwai:
> At Fri, 22 Nov 2013 00:49:54 +0100,
> Vincent Stehlé wrote:
>>
>> Teles PCI and HFC PCI-bus refuse to build on big-endian ARM; disable them in
>> Kconfig.
>>
>> Signed-off-by: Vincent Stehlé 
>> Cc: Karsten Keil 
>> ---
>>
>> Hi,
>>
>> This can be seen on e.g. linux next-20131121 with arm allyesconfig.
>>
>> Best regards,
>>
>> V.
>>
>>  drivers/isdn/hisax/Kconfig | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/isdn/hisax/Kconfig b/drivers/isdn/hisax/Kconfig
>> index d9edcc9..53dbb75 100644
>> --- a/drivers/isdn/hisax/Kconfig
>> +++ b/drivers/isdn/hisax/Kconfig
>> @@ -109,7 +109,7 @@ config HISAX_16_3
>>  
>>  config HISAX_TELESPCI
>>  bool "Teles PCI"
>> -depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K || (MIPS 
>> && !CPU_LITTLE_ENDIAN) || FRV || (XTENSA && !CPU_LITTLE_ENDIAN)))
>> +depends on PCI && (BROKEN || !(SPARC || PPC || PARISC || M68K || (MIPS 
>> && !CPU_LITTLE_ENDIAN) || FRV || (XTENSA && !CPU_LITTLE_ENDIAN) || (ARM && 
>> !CPU_LITTLE_ENDIAN)))
> 
> Isn't it a bit better to exclude CPU_LITTLE_ENDIAN globally?
> 
>   depends on PCI && CPU_LITTLE_ENDIAN && (BROKEN || !(SPARC || PPC || 
> PARISC || M68K || MIPS || FRV || XTENSA || ARM))
> 
> Or maybe just
> 
>   depends on PCI && (X86 || BROKEN)
> 
> (Alpha?  Can anyone test? :)

I never got this card so it was never in my tests, if I remember
correctely  somebody had it running with Alpha before 2000.
And yes I'm fine if we simplify this mess to only X86.

Karsten
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Kill I4L?

2015-02-08 Thread Karsten Keil
Am 08.02.2015 um 20:47 schrieb Tilman Schmidt:
> Am 07.02.2015 um 21:43 schrieb Paul Bolle:
>> On Sat, 2015-02-07 at 11:19 -0800, Joe Perches wrote:
>>> Does anyone still use these cards?
> 
>> 0) Good question.
> 
> I very much doubt it. It was an ISA card, not even PnP. I'd imagine
> any systems of that kind would be retired by now.
> 

Agreed in general, but I know people still running such ISA based
machines - mostly PC in industrial environments with ISDN uplinks for
service and maintenance.
And I4L is also used in some vending machines for card authorization so
far I know.
They usually using old kernels (<3.0) so they are not directly affected
if this will be removed.

>> 2) Broader picture: if I remember correctly there are now four
>> different flavors of ISDN in the kernel: - really old: pre-i4l
> 
> I don't think any traces of that are still present in current kernel
> releases. It should all have been left behind on the switch to 2.6.
> 

Yes.

>> - very old: i4l - just old: CAPI - not so old: mISDN
> 
> Those are the in-tree ones. To make matters worse, the Asterisk people
> invented three more (Zaptel, DAHDI and vISDN) which are maintained
> out-of-tree. Apparently they weren't satisfied with any the in-tree
> ones and didn't feel like helping to improve one of them to match
> their needs.
> 
>> [snip] So the current ISDN situation is a bit messy.
> 
> That's putting it mildly.
> 
>> Tilman might be able to provide a clearer, and maybe less grumpy, 
>> summary of the current situation.
> 
> Don't know about either. ;-)
> 
>> [M]aybe we should consider, say, removing i4l and pre i4l and see
>> who complains. That might be a rude thing to do. So perhaps the 
>> various ISDN flavors should be left alone until ... what exactly?
> 
> I'd support that step. I don't think it'll hurt anyone because the
> cards supported by i4l are mostly ISA cards anyway. The only exceptions
> are the HiSax family which is now supported by mISDN, and the Hypercope
> family which is supported by CAPI.
> 
> In the past we had Documentation/feature-removal-schedule.txt for
> announcing removals like that but Linus shot that down on 2012-10-01
> (commit 9c0ece069b32e8e122aea71aa47181c10eb85ba7) so I guess
> somebody could just submit a patch series starting with
> 
> --- a/drivers/isdn/Kconfig
> +++ b/drivers/isdn/Kconfig
> @@ -20,25 +20,6 @@ menuconfig ISDN
> 
>  if ISDN
> 
> -menuconfig ISDN_I4L
> -   tristate "Old ISDN4Linux (deprecated)"
> -   depends on TTY
> -   ---help---
> - This driver allows you to use an ISDN adapter for networking
> - connections and as dialin/out device.  The isdn-tty's have a
> built
> - in AT-compatible modem emulator.  Network devices support
> autodial,
> - channel-bundling, callback and caller-authentication without
> having
> - a daemon running.  A reduced T.70 protocol is supported with
> tty's
> - suitable for German BTX.  On D-Channel, the protocols EDSS1
> - (Euro-ISDN) and 1TR6 (German style) are supported.  See
> -  for more information.
> -
> - ISDN support in the linux kernel is moving towards a new API,
> - called CAPI (Common ISDN Application Programming Interface).
> - Therefore the old ISDN4Linux layer will eventually become
> obsolete.
> - It is still available, though, for use with adapters that
> are not
> - supported by the new CAPI subsystem yet.
> -
>  source "drivers/isdn/i4l/Kconfig"
> 
>  menuconfig ISDN_CAPI
> 
> and working its way from that to remove anything that's become
> unreachable.
> 
> Shall I?
> 

But I4L is still the default in some Distros, so we should allow a
warning period. But again, I'm fine with this to do it.

Karsten
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/