2014-07-06 22:20:18

by Malcolm Priestley

[permalink] [raw]
Subject: [PATCH 1/3] staging: vt6656: s_nsBulkInUsbIoCompleteRead check that used sk_buff is clean and ready to reuse.

skb_push the headroom and trimmed back to 0

Signed-off-by: Malcolm Priestley <[email protected]>
---
applies after patch staging: vt6656: Include re_alloc_skb within lock

drivers/staging/vt6656/usbpipe.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/staging/vt6656/usbpipe.c b/drivers/staging/vt6656/usbpipe.c
index c8b0ed5..dd031bb 100644
--- a/drivers/staging/vt6656/usbpipe.c
+++ b/drivers/staging/vt6656/usbpipe.c
@@ -303,6 +303,9 @@ static void s_nsBulkInUsbIoCompleteRead(struct urb *urb)
spin_unlock_irqrestore(&priv->lock, flags);
return;
}
+ } else {
+ skb_push(rcb->skb, skb_headroom(rcb->skb));
+ skb_trim(rcb->skb, 0);
}

urb->transfer_buffer = skb_put(rcb->skb,
--
1.9.1



2014-07-06 22:20:21

by Malcolm Priestley

[permalink] [raw]
Subject: [PATCH 3/3] staging: vt6656: vnt_update_ifs vendor changes to uSIFS/uDIFS

The latest vendor code makes changes to uSIFS and uDIFS.

The orginal codes have been rearranged into a fall through switch
statement.

These reduce the time that device allows to TX packets and
improves throughput.

Signed-off-by: Malcolm Priestley <[email protected]>
---
drivers/staging/vt6656/card.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

diff --git a/drivers/staging/vt6656/card.c b/drivers/staging/vt6656/card.c
index a5f8df1..ea06b63 100644
--- a/drivers/staging/vt6656/card.c
+++ b/drivers/staging/vt6656/card.c
@@ -408,6 +408,36 @@ void vnt_update_ifs(struct vnt_private *priv)
priv->uCwMax = C_CWMAX;
priv->uEIFS = C_EIFS;

+ switch (priv->byRFType) {
+ case RF_VT3226D0:
+ if (priv->byBBType != BB_TYPE_11B) {
+ priv->uSIFS -= 1;
+ priv->uDIFS -= 1;
+ break;
+ }
+ case RF_AIROHA7230:
+ case RF_AL2230:
+ case RF_AL2230S:
+ if (priv->byBBType != BB_TYPE_11B)
+ break;
+ case RF_RFMD2959:
+ case RF_VT3226:
+ case RF_VT3342A0:
+ priv->uSIFS -= 3;
+ priv->uDIFS -= 3;
+ break;
+ case RF_MAXIM2829:
+ if (priv->byBBType == BB_TYPE_11A) {
+ priv->uSIFS -= 5;
+ priv->uDIFS -= 5;
+ } else {
+ priv->uSIFS -= 2;
+ priv->uDIFS -= 2;
+ }
+
+ break;
+ }
+
data[0] = (u8)priv->uSIFS;
data[1] = (u8)priv->uDIFS;
data[2] = (u8)priv->uEIFS;
--
1.9.1


2014-07-06 22:20:19

by Malcolm Priestley

[permalink] [raw]
Subject: [PATCH 2/3] staging: vt6656: vnt_set_keymode don't save pairwise key entry.

The device refuses to associate to older access points even though in
the logs it appears to be associated in tkip or ccmp mode.

Clear bit from key_entry_inuse in pairwise key so the entry is over written
by group address.

This doesn't seem to make any difference to newer access points and
is a temporary fix until a better solution is found.

Signed-off-by: Malcolm Priestley <[email protected]>
---
drivers/staging/vt6656/key.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/staging/vt6656/key.c b/drivers/staging/vt6656/key.c
index a7c7a2d..7275f09 100644
--- a/drivers/staging/vt6656/key.c
+++ b/drivers/staging/vt6656/key.c
@@ -98,6 +98,8 @@ static int vnt_set_keymode(struct ieee80211_hw *hw, u8 *mac_addr,
case VNT_KEY_PAIRWISE:
key_mode |= mode;
key_inx = 4;
+ /* Don't save entry for pairwise key */
+ clear_bit(entry, &priv->key_entry_inuse);
break;
default:
return -EINVAL;
--
1.9.1