| From 0612d45b8d4b0245afa965227f892befdc49331b Mon Sep 17 00:00:00 2001 |
| From: Malcolm Priestley <tvboxspy@gmail.com> |
| Date: Wed, 8 Jan 2020 21:40:58 +0000 |
| Subject: [PATCH] staging: vt6656: correct packet types for CTS protect, mode. |
| |
| commit d971fdd3412f8342747778fb59b8803720ed82b1 upstream. |
| |
| It appears that the driver still transmits in CTS protect mode even |
| though it is not enabled in mac80211. |
| |
| That is both packet types PK_TYPE_11GA and PK_TYPE_11GB both use CTS protect. |
| The only difference between them GA does not use B rates. |
| |
| Find if only B rate in GB or GA in protect mode otherwise transmit packets |
| as PK_TYPE_11A. |
| |
| Cc: stable <stable@vger.kernel.org> |
| Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> |
| Link: https://lore.kernel.org/r/9c1323ff-dbb3-0eaa-43e1-9453f7390dc0@gmail.com |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/staging/vt6656/device.h b/drivers/staging/vt6656/device.h |
| index 50e1c8918040..e2fabe818b19 100644 |
| --- a/drivers/staging/vt6656/device.h |
| +++ b/drivers/staging/vt6656/device.h |
| @@ -52,6 +52,8 @@ |
| #define RATE_AUTO 12 |
| |
| #define MAX_RATE 12 |
| +#define VNT_B_RATES (BIT(RATE_1M) | BIT(RATE_2M) |\ |
| + BIT(RATE_5M) | BIT(RATE_11M)) |
| |
| /* |
| * device specific |
| diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c |
| index 9def0748ffee..7ca5b41b5bba 100644 |
| --- a/drivers/staging/vt6656/rxtx.c |
| +++ b/drivers/staging/vt6656/rxtx.c |
| @@ -815,10 +815,14 @@ int vnt_tx_packet(struct vnt_private *priv, struct sk_buff *skb) |
| if (info->band == NL80211_BAND_5GHZ) { |
| pkt_type = PK_TYPE_11A; |
| } else { |
| - if (tx_rate->flags & IEEE80211_TX_RC_USE_CTS_PROTECT) |
| - pkt_type = PK_TYPE_11GB; |
| - else |
| - pkt_type = PK_TYPE_11GA; |
| + if (tx_rate->flags & IEEE80211_TX_RC_USE_CTS_PROTECT) { |
| + if (priv->basic_rates & VNT_B_RATES) |
| + pkt_type = PK_TYPE_11GB; |
| + else |
| + pkt_type = PK_TYPE_11GA; |
| + } else { |
| + pkt_type = PK_TYPE_11A; |
| + } |
| } |
| } else { |
| pkt_type = PK_TYPE_11B; |
| -- |
| 2.7.4 |
| |