summaryrefslogtreecommitdiff
path: root/drivers/staging/winbond/wb35rx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/winbond/wb35rx.c')
-rw-r--r--drivers/staging/winbond/wb35rx.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/drivers/staging/winbond/wb35rx.c b/drivers/staging/winbond/wb35rx.c
index 15a0650..cd5a8e1 100644
--- a/drivers/staging/winbond/wb35rx.c
+++ b/drivers/staging/winbond/wb35rx.c
@@ -10,24 +10,29 @@
//============================================================================
#include <linux/usb.h>
+#include "core.h"
#include "sysdef.h"
#include "wb35rx_f.h"
-void Wb35Rx_start(phw_data_t pHwData)
+void Wb35Rx_start(struct ieee80211_hw *hw)
{
+ struct wbsoft_priv *priv = hw->priv;
+ phw_data_t pHwData = &priv->sHwData;
PWB35RX pWb35Rx = &pHwData->Wb35Rx;
// Allow only one thread to run into the Wb35Rx() function
if (atomic_inc_return(&pWb35Rx->RxFireCounter) == 1) {
pWb35Rx->EP3vm_state = VM_RUNNING;
- Wb35Rx(pHwData);
+ Wb35Rx(hw);
} else
atomic_dec(&pWb35Rx->RxFireCounter);
}
// This function cannot reentrain
-void Wb35Rx( phw_data_t pHwData )
+void Wb35Rx(struct ieee80211_hw *hw)
{
+ struct wbsoft_priv *priv = hw->priv;
+ phw_data_t pHwData = &priv->sHwData;
PWB35RX pWb35Rx = &pHwData->Wb35Rx;
u8 * pRxBufferAddress;
struct urb *urb = pWb35Rx->RxUrb;
@@ -69,7 +74,7 @@ void Wb35Rx( phw_data_t pHwData )
usb_fill_bulk_urb(urb, pHwData->WbUsb.udev,
usb_rcvbulkpipe(pHwData->WbUsb.udev, 3),
pRxBufferAddress, MAX_USB_RX_BUFFER,
- Wb35Rx_Complete, pHwData);
+ Wb35Rx_Complete, hw);
pWb35Rx->EP3vm_state = VM_RUNNING;
@@ -89,7 +94,9 @@ error:
void Wb35Rx_Complete(struct urb *urb)
{
- phw_data_t pHwData = urb->context;
+ struct ieee80211_hw *hw = urb->context;
+ struct wbsoft_priv *priv = hw->priv;
+ phw_data_t pHwData = &priv->sHwData;
PWB35RX pWb35Rx = &pHwData->Wb35Rx;
u8 * pRxBufferAddress;
u32 SizeCheck;
@@ -150,11 +157,11 @@ void Wb35Rx_Complete(struct urb *urb)
pWb35Rx->RxBufferSize[ RxBufferId ] = BulkLength;
if (!pWb35Rx->RxOwner[ RxBufferId ])
- Wb35Rx_indicate(pHwData);
+ Wb35Rx_indicate(hw);
kfree(pWb35Rx->pDRx);
// Do the next receive
- Wb35Rx(pHwData);
+ Wb35Rx(hw);
return;
error:
@@ -257,11 +264,13 @@ void Wb35Rx_adjust(PDESCRIPTOR pRxDes)
pRxDes->buffer_size[0] = BufferSize;
}
-extern void packet_came(char *pRxBufferAddress, int PacketSize);
+extern void packet_came(struct ieee80211_hw *hw, char *pRxBufferAddress, int PacketSize);
-u16 Wb35Rx_indicate(phw_data_t pHwData)
+u16 Wb35Rx_indicate(struct ieee80211_hw *hw)
{
+ struct wbsoft_priv *priv = hw->priv;
+ phw_data_t pHwData = &priv->sHwData;
DESCRIPTOR RxDes;
PWB35RX pWb35Rx = &pHwData->Wb35Rx;
u8 * pRxBufferAddress;
@@ -317,7 +326,7 @@ u16 Wb35Rx_indicate(phw_data_t pHwData)
RxDes.buffer_total_size = RxDes.buffer_size[0];
Wb35Rx_adjust(&RxDes);
- packet_came(pRxBufferAddress, PacketSize);
+ packet_came(hw, pRxBufferAddress, PacketSize);
// Move RxBuffer point to the next
stmp = PacketSize + 3;