From: Tilman Schmidt , Hansjoerg Lipp Uninline a function which was slightly too big to warrant inlining. Signed-off-by: Hansjoerg Lipp Signed-off-by: Tilman Schmidt Cc: Karsten Keil Signed-off-by: Andrew Morton --- drivers/isdn/gigaset/common.c | 41 ++++++++++++++++++++++++++++++ drivers/isdn/gigaset/gigaset.h | 42 +------------------------------ 2 files changed, 43 insertions(+), 40 deletions(-) diff -puN drivers/isdn/gigaset/common.c~isdn4linux-siemens-gigaset-drivers-uninline drivers/isdn/gigaset/common.c --- devel/drivers/isdn/gigaset/common.c~isdn4linux-siemens-gigaset-drivers-uninline 2006-04-03 17:50:17.000000000 -0700 +++ devel-akpm/drivers/isdn/gigaset/common.c 2006-04-03 17:50:17.000000000 -0700 @@ -521,6 +521,47 @@ static void gigaset_inbuf_init(struct in inbuf->inputstate = inputstate; } +/* append received bytes to inbuf */ +int gigaset_fill_inbuf(struct inbuf_t *inbuf, const unsigned char *src, + unsigned numbytes) +{ + unsigned n, head, tail, bytesleft; + + gig_dbg(DEBUG_INTR, "received %u bytes", numbytes); + + if (!numbytes) + return 0; + + bytesleft = numbytes; + tail = atomic_read(&inbuf->tail); + head = atomic_read(&inbuf->head); + gig_dbg(DEBUG_INTR, "buffer state: %u -> %u", head, tail); + + while (bytesleft) { + if (head > tail) + n = head - 1 - tail; + else if (head == 0) + n = (RBUFSIZE-1) - tail; + else + n = RBUFSIZE - tail; + if (!n) { + dev_err(inbuf->cs->dev, + "buffer overflow (%u bytes lost)", bytesleft); + break; + } + if (n > bytesleft) + n = bytesleft; + memcpy(inbuf->data + tail, src, n); + bytesleft -= n; + tail = (tail + n) % RBUFSIZE; + src += n; + } + gig_dbg(DEBUG_INTR, "setting tail to %u", tail); + atomic_set(&inbuf->tail, tail); + return numbytes != bytesleft; +} +EXPORT_SYMBOL_GPL(gigaset_fill_inbuf); + /* Initialize the b-channel structure */ static struct bc_state *gigaset_initbcs(struct bc_state *bcs, struct cardstate *cs, int channel) diff -puN drivers/isdn/gigaset/gigaset.h~isdn4linux-siemens-gigaset-drivers-uninline drivers/isdn/gigaset/gigaset.h --- devel/drivers/isdn/gigaset/gigaset.h~isdn4linux-siemens-gigaset-drivers-uninline 2006-04-03 17:50:17.000000000 -0700 +++ devel-akpm/drivers/isdn/gigaset/gigaset.h 2006-04-03 17:50:17.000000000 -0700 @@ -902,47 +902,9 @@ static inline void gigaset_rcv_error(str /* bitwise byte inversion table */ extern __u8 gigaset_invtab[]; /* in common.c */ - /* append received bytes to inbuf */ -static inline int gigaset_fill_inbuf(struct inbuf_t *inbuf, - const unsigned char *src, - unsigned numbytes) -{ - unsigned n, head, tail, bytesleft; - - gig_dbg(DEBUG_INTR, "received %u bytes", numbytes); - - if (!numbytes) - return 0; - - bytesleft = numbytes; - tail = atomic_read(&inbuf->tail); - head = atomic_read(&inbuf->head); - gig_dbg(DEBUG_INTR, "buffer state: %u -> %u", head, tail); - - while (bytesleft) { - if (head > tail) - n = head - 1 - tail; - else if (head == 0) - n = (RBUFSIZE-1) - tail; - else - n = RBUFSIZE - tail; - if (!n) { - dev_err(inbuf->cs->dev, - "buffer overflow (%u bytes lost)", bytesleft); - break; - } - if (n > bytesleft) - n = bytesleft; - memcpy(inbuf->data + tail, src, n); - bytesleft -= n; - tail = (tail + n) % RBUFSIZE; - src += n; - } - gig_dbg(DEBUG_INTR, "setting tail to %u", tail); - atomic_set(&inbuf->tail, tail); - return numbytes != bytesleft; -} +int gigaset_fill_inbuf(struct inbuf_t *inbuf, const unsigned char *src, + unsigned numbytes); /* =========================================================================== * Functions implemented in interface.c _