diff options
author | Pekka Enberg <penberg@cs.helsinki.fi> | 2008-10-30 16:14:39 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-06 13:51:49 -0800 |
commit | 7fff1316b9ecc415fb1d43f438c0668884a24881 (patch) | |
tree | 0d0c99dccd1a6d2fec46269b80f959c0a827b984 /drivers/staging/winbond/wb35rx.c | |
parent | 1e8a2b60339a050f4fd383e332a5dd66b75f4f02 (diff) | |
download | linux-3.10-7fff1316b9ecc415fb1d43f438c0668884a24881.tar.gz linux-3.10-7fff1316b9ecc415fb1d43f438c0668884a24881.tar.bz2 linux-3.10-7fff1316b9ecc415fb1d43f438c0668884a24881.zip |
Staging: w35und: remove global struct ieee80211_hw
Remove the my_dev global variable from wbusb.c by passing a pointer to struct
ieee80211_hw around so that packet_came() gets it.
Acked-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/winbond/wb35rx.c')
-rw-r--r-- | drivers/staging/winbond/wb35rx.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/drivers/staging/winbond/wb35rx.c b/drivers/staging/winbond/wb35rx.c index 15a06504736..cd5a8e16078 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; |