[PATCH] zd1211rw: Optimized handling of zero length entries in length info
There are a high number of split USB transactions, which contain only one packet but have a length info field. This patch optimizes this code by stopping parsing the length info structure if a zero length field is encountered. Signed-off-by: Ulrich Kunitz <kune@deine-taler.de> Signed-off-by: Daniel Drake <dsd@gentoo.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
741fec53f2
commit
850c211ce6
|
@ -593,6 +593,8 @@ static void handle_rx_packet(struct zd_usb *usb, const u8 *buffer,
|
||||||
unsigned int l, k, n;
|
unsigned int l, k, n;
|
||||||
for (i = 0, l = 0;; i++) {
|
for (i = 0, l = 0;; i++) {
|
||||||
k = le16_to_cpu(get_unaligned(&length_info->length[i]));
|
k = le16_to_cpu(get_unaligned(&length_info->length[i]));
|
||||||
|
if (k == 0)
|
||||||
|
return;
|
||||||
n = l+k;
|
n = l+k;
|
||||||
if (n > length)
|
if (n > length)
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue