stagingL vt6656: implement fall back rates reporting.
The driver reports the rate tried in struct vnt_interrupt_data tsr* variables
which is available in INTnsProcessData via interrupt urb context.
Instead of closing apTD tx context in s_nsBulkOutIoCompleteWrite by setting
in_use to false. Keep the context open and allow vnt_int_report_rate to
close it.
If the tx_retry value is correct it will report back the sucessful RATE tried.
struct vnt_usb_send_context add pkt_no which is index of apTD
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
diff --git a/drivers/staging/vt6656/usbpipe.c b/drivers/staging/vt6656/usbpipe.c
index a7af4f5..c8b0ed5 100644
--- a/drivers/staging/vt6656/usbpipe.c
+++ b/drivers/staging/vt6656/usbpipe.c
@@ -398,7 +398,6 @@
{
struct vnt_usb_send_context *context = urb->context;
struct vnt_private *priv = context->priv;
- struct ieee80211_tx_info *info;
switch (urb->status) {
case 0:
@@ -415,25 +414,15 @@
break;
}
- if (context->skb) {
- s8 idx;
-
- info = IEEE80211_SKB_CB(context->skb);
-
- idx = info->control.rates[0].idx;
-
- ieee80211_tx_info_clear_status(info);
- info->status.rates[0].idx = idx;
- info->status.rates[0].count = 0;
- if (!urb->status)
- info->flags |= IEEE80211_TX_STAT_ACK;
- ieee80211_tx_status_irqsafe(priv->hw, context->skb);
- }
-
if (context->type == CONTEXT_DATA_PACKET)
ieee80211_wake_queues(priv->hw);
- context->in_use = false;
+ if (urb->status || context->type == CONTEXT_BEACON_PACKET) {
+ if (context->skb)
+ ieee80211_free_txskb(priv->hw, context->skb);
+
+ context->in_use = false;
+ }
return;
}