aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/hardware/mISDN/netjet.c
diff options
context:
space:
mode:
authorKarsten Keil <kkeil@linux-pingi.de>2012-05-15 19:51:06 -0400
committerDavid S. Miller <davem@davemloft.net>2012-05-16 15:23:46 -0400
commit034005a0119b9c2aabe0ac3953eb9a65ca937a69 (patch)
treea7ee0735f2a9f87eb0207c27930a3e3c748bc1fe /drivers/isdn/hardware/mISDN/netjet.c
parent7206e659f689558b41aa058c3040b081cb281d03 (diff)
mISDN: Allow to set a minimum length for transparent data
If the FIFO of the card is small, many short messages are queued up to the upper layers and the userspace. This change allows the applications to set a minimum datalen they want from the drivers. Create a common control function to avoid code duplication in each driver. Signed-off-by: Karsten Keil <kkeil@linux-pingi.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/isdn/hardware/mISDN/netjet.c')
-rw-r--r--drivers/isdn/hardware/mISDN/netjet.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/drivers/isdn/hardware/mISDN/netjet.c b/drivers/isdn/hardware/mISDN/netjet.c
index 3f28057e725e..47d30749d8a7 100644
--- a/drivers/isdn/hardware/mISDN/netjet.c
+++ b/drivers/isdn/hardware/mISDN/netjet.c
@@ -408,7 +408,7 @@ read_dma(struct tiger_ch *bc, u32 idx, int cnt)
408 } 408 }
409 409
410 if (test_bit(FLG_TRANSPARENT, &bc->bch.Flags)) { 410 if (test_bit(FLG_TRANSPARENT, &bc->bch.Flags)) {
411 recv_Bchannel(&bc->bch, 0); 411 recv_Bchannel(&bc->bch, 0, false);
412 return; 412 return;
413 } 413 }
414 414
@@ -426,7 +426,7 @@ read_dma(struct tiger_ch *bc, u32 idx, int cnt)
426 DUMP_PREFIX_OFFSET, p, 426 DUMP_PREFIX_OFFSET, p,
427 stat); 427 stat);
428 } 428 }
429 recv_Bchannel(&bc->bch, 0); 429 recv_Bchannel(&bc->bch, 0, false);
430 stat = bchannel_get_rxbuf(&bc->bch, bc->bch.maxlen); 430 stat = bchannel_get_rxbuf(&bc->bch, bc->bch.maxlen);
431 if (stat < 0) { 431 if (stat < 0) {
432 pr_warning("%s.B%d: No memory for %d bytes\n", 432 pr_warning("%s.B%d: No memory for %d bytes\n",
@@ -758,21 +758,7 @@ nj_l2l1B(struct mISDNchannel *ch, struct sk_buff *skb)
758static int 758static int
759channel_bctrl(struct tiger_ch *bc, struct mISDN_ctrl_req *cq) 759channel_bctrl(struct tiger_ch *bc, struct mISDN_ctrl_req *cq)
760{ 760{
761 int ret = 0; 761 return mISDN_ctrl_bchannel(&bc->bch, cq);
762 struct tiger_hw *card = bc->bch.hw;
763
764 switch (cq->op) {
765 case MISDN_CTRL_GETOP:
766 cq->op = 0;
767 break;
768 /* Nothing implemented yet */
769 case MISDN_CTRL_FILL_EMPTY:
770 default:
771 pr_info("%s: %s unknown Op %x\n", card->name, __func__, cq->op);
772 ret = -EINVAL;
773 break;
774 }
775 return ret;
776} 762}
777 763
778static int 764static int
@@ -1006,7 +992,8 @@ setup_instance(struct tiger_hw *card)
1006 for (i = 0; i < 2; i++) { 992 for (i = 0; i < 2; i++) {
1007 card->bc[i].bch.nr = i + 1; 993 card->bc[i].bch.nr = i + 1;
1008 set_channelmap(i + 1, card->isac.dch.dev.channelmap); 994 set_channelmap(i + 1, card->isac.dch.dev.channelmap);
1009 mISDN_initbchannel(&card->bc[i].bch, MAX_DATA_MEM); 995 mISDN_initbchannel(&card->bc[i].bch, MAX_DATA_MEM,
996 NJ_DMA_RXSIZE >> 1);
1010 card->bc[i].bch.hw = card; 997 card->bc[i].bch.hw = card;
1011 card->bc[i].bch.ch.send = nj_l2l1B; 998 card->bc[i].bch.ch.send = nj_l2l1B;
1012 card->bc[i].bch.ch.ctrl = nj_bctrl; 999 card->bc[i].bch.ch.ctrl = nj_bctrl;