aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/pcmcia/ipwireless
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.cz>2008-07-28 10:53:21 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-28 11:28:03 -0400
commitbee9c7c0773517c9f1d7931144fc8dec12233bd7 (patch)
tree6c9d6943ac485d47bb14cfbd18aacf7d3464d224 /drivers/char/pcmcia/ipwireless
parent09e491e9a780433f8734eb6efb7293b2da690131 (diff)
ipwireless: Increase PPP outgoing queue size
ipwireless: Increase PPP outgoing queue size Increase default size of PPP outgoing queue. Currently set to 1, which means that a packet quickly following another pushed by PPP must wait until hardware actually sends the previous and PPP has to be waken up by ppp_wakeup(). This slows down upstream. Now PPP can push more packets at once which get buffered inside driver and pushed immediatelly to hardware when previous packet is out. Experiments show that size = 10 is quite good for all connection types (GPRS/EDGE/UMTS) and gains 4 KB/sec of upload for UMTS for batch uploads. Need for higher queue size than 10 occures in only < 0.1 % of cases. Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char/pcmcia/ipwireless')
-rw-r--r--drivers/char/pcmcia/ipwireless/main.c4
-rw-r--r--drivers/char/pcmcia/ipwireless/network.c4
2 files changed, 5 insertions, 3 deletions
diff --git a/drivers/char/pcmcia/ipwireless/main.c b/drivers/char/pcmcia/ipwireless/main.c
index 7169a0d3379a..5eca7a99afe6 100644
--- a/drivers/char/pcmcia/ipwireless/main.c
+++ b/drivers/char/pcmcia/ipwireless/main.c
@@ -49,7 +49,7 @@ static void ipwireless_detach(struct pcmcia_device *link);
49/* Debug mode: more verbose, print sent/recv bytes */ 49/* Debug mode: more verbose, print sent/recv bytes */
50int ipwireless_debug; 50int ipwireless_debug;
51int ipwireless_loopback; 51int ipwireless_loopback;
52int ipwireless_out_queue = 1; 52int ipwireless_out_queue = 10;
53 53
54module_param_named(debug, ipwireless_debug, int, 0); 54module_param_named(debug, ipwireless_debug, int, 0);
55module_param_named(loopback, ipwireless_loopback, int, 0); 55module_param_named(loopback, ipwireless_loopback, int, 0);
@@ -57,7 +57,7 @@ module_param_named(out_queue, ipwireless_out_queue, int, 0);
57MODULE_PARM_DESC(debug, "switch on debug messages [0]"); 57MODULE_PARM_DESC(debug, "switch on debug messages [0]");
58MODULE_PARM_DESC(loopback, 58MODULE_PARM_DESC(loopback,
59 "debug: enable ras_raw channel [0]"); 59 "debug: enable ras_raw channel [0]");
60MODULE_PARM_DESC(out_queue, "debug: set size of outgoing queue [1]"); 60MODULE_PARM_DESC(out_queue, "debug: set size of outgoing PPP queue [10]");
61 61
62/* Executes in process context. */ 62/* Executes in process context. */
63static void signalled_reboot_work(struct work_struct *work_reboot) 63static void signalled_reboot_work(struct work_struct *work_reboot)
diff --git a/drivers/char/pcmcia/ipwireless/network.c b/drivers/char/pcmcia/ipwireless/network.c
index 28d9fd727d84..2b07af05106d 100644
--- a/drivers/char/pcmcia/ipwireless/network.c
+++ b/drivers/char/pcmcia/ipwireless/network.c
@@ -75,7 +75,7 @@ static void notify_packet_sent(void *callback_data, unsigned int packet_length)
75 spin_unlock_irqrestore(&network->lock, flags); 75 spin_unlock_irqrestore(&network->lock, flags);
76 ppp_output_wakeup(network->ppp_channel); 76 ppp_output_wakeup(network->ppp_channel);
77 if (ipwireless_debug) 77 if (ipwireless_debug)
78 printk(KERN_INFO IPWIRELESS_PCCARD_NAME 78 printk(KERN_DEBUG IPWIRELESS_PCCARD_NAME
79 ": ppp unblocked\n"); 79 ": ppp unblocked\n");
80 } else 80 } else
81 spin_unlock_irqrestore(&network->lock, flags); 81 spin_unlock_irqrestore(&network->lock, flags);
@@ -144,6 +144,8 @@ static int ipwireless_ppp_start_xmit(struct ppp_channel *ppp_channel,
144 */ 144 */
145 network->ppp_blocked = 1; 145 network->ppp_blocked = 1;
146 spin_unlock_irqrestore(&network->lock, flags); 146 spin_unlock_irqrestore(&network->lock, flags);
147 if (ipwireless_debug)
148 printk(KERN_DEBUG IPWIRELESS_PCCARD_NAME ": ppp blocked\n");
147 return 0; 149 return 0;
148 } 150 }
149} 151}