Skip to contentSkip to conversation

WiMAX pull request

PATCH In review Inaky Perez-Gonzalez 2 participants 3 messages May 15, 2009 – May 18, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 WiMAX pull request

This patch fixes a device crash due to a bad optimization. It won't crash the system, but just render the WiMAX device unusable on bad radio link conditions.

The following changes since commit e1cc1c578055d20d36e084e324001fb5e0355a71:
David S. Miller (1):

        Merge branch 'net-fixes' of git://git.kernel.org/.../chris/linux-2.6

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/inaky/wimax.git linux-2.6.30.y

Patches follow for reviewing convenience.

Inaky Perez-Gonzalez (1):
wimax/i2400m: fix device crash: fix optimization in _roq_queue_update_ws

 drivers/net/wimax/i2400m/rx.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)
#1 lore raw

PATCH 1/1 wimax/i2400m: fix device crash: fix optimization in _roq_queue_update_ws

When the i2400m receives data and the device indicates there has to be reordering, we keep an sliding window implementation to sort the packets before sending them to the network stack.

One of the "operations" that the device indicates is "queue a packet and update the window start". When the queue is empty, this is equivalent to "deliver the packet and update the window start".

That case was optimized in i2400m_roq_queue_update_ws() so that we would not pointlessly queue and dequeue a packet. However, when the optimization was active, it wasn't updating the window start. That caused the reorder management code to get confused later on with what seemed to be wrong reorder requests from the device.

Thus the fix implemented is to do the right thing and update the window start in both cases, when the queue is empty (and the optimization is done) and when not.

---
 drivers/net/wimax/i2400m/rx.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)
drivers/net/wimax/i2400m/rx.c +2 -3
index 02419bf..f9fc389 100644
@@ -819,10 +819,9 @@ void i2400m_roq_queue_update_ws(struct i2400m *i2400m, struct i2400m_roq *roq,
 			roq_data = (struct i2400m_roq_data *) &skb->cb;
 			i2400m_net_erx(i2400m, skb, roq_data->cs);
 		}
-		else {
+		else
 			__i2400m_roq_queue(i2400m, roq, skb, sn, nsn);
-			__i2400m_roq_update_ws(i2400m, roq, sn + 1);
-		}
+		__i2400m_roq_update_ws(i2400m, roq, sn + 1);
 		i2400m_roq_log_add(i2400m, roq, I2400M_RO_TYPE_PACKET_WS,
 				   old_ws, len, sn, nsn, roq->ws);
 	}
Signature · 1 line
1.6.2.3
maintainer
#2 lore raw
In reply to Inaky Perez-Gonzalez

From: Inaky Perez-Gonzalez <[email protected]>
Date: Fri, 15 May 2009 12:07:32 -0700

Quoted 6 lines

This patch fixes a device crash due to a bad optimization. It won't crash the system, but just render the WiMAX device unusable on bad radio link conditions.

The following changes since commit e1cc1c578055d20d36e084e324001fb5e0355a71:
David S. Miller (1):

Quoted 7 lines
        Merge branch 'net-fixes' of git://git.kernel.org/.../chris/linux-2.6

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/inaky/wimax.git linux-2.6.30.y

Patches follow for reviewing convenience.

Pulled, thanks!