Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ipwireless: Preallocate received packet buffers with MRU size

ipwireless: Preallocate received packet buffers with MRU size

Packets are assembled from link size (~300 bytes) up to PPP MRU
(1500 by default). Try to preallocate full size rather than
repeatedly advance buffer size by 256 bytes.

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>

authored by

David Sterba and committed by
Linus Torvalds
a0138692 0f38c47a

+8 -1
+2 -1
drivers/char/pcmcia/ipwireless/hardware.c
··· 567 567 spin_unlock_irqrestore(&hw->lock, flags); 568 568 list_del(&packet->queue); 569 569 } else { 570 - static int min_capacity = 256; 570 + const int min_capacity = 571 + ipwireless_ppp_mru(hw->network + 2); 571 572 int new_capacity; 572 573 573 574 spin_unlock_irqrestore(&hw->lock, flags);
+5
drivers/char/pcmcia/ipwireless/network.c
··· 499 499 500 500 return ret; 501 501 } 502 + 503 + int ipwireless_ppp_mru(const struct ipw_network *network) 504 + { 505 + return network->mru; 506 + }
+1
drivers/char/pcmcia/ipwireless/network.h
··· 48 48 void ipwireless_ppp_close(struct ipw_network *net); 49 49 int ipwireless_ppp_channel_index(struct ipw_network *net); 50 50 int ipwireless_ppp_unit_number(struct ipw_network *net); 51 + int ipwireless_ppp_mru(const struct ipw_network *net); 51 52 52 53 #endif