]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/staging/winbond/wbusb.c
Staging: w35und: Merge wbhal_f.h to wbhal_s.h
[linux-beck.git] / drivers / staging / winbond / wbusb.c
index abaa05a630f0b53918f907522b63b7cf3956101e..a053bbb396108959f3b418573836756011017856 100644 (file)
 #include "mds_f.h"
 #include "mlmetxrx_f.h"
 #include "mto.h"
-#include "wbhal_f.h"
+#include "wbhal_s.h"
+#include "wb35reg_f.h"
+#include "wb35tx_f.h"
+#include "wb35rx_f.h"
 #include "wblinux_f.h"
 
 MODULE_DESCRIPTION("IS89C35 802.11bg WLAN USB Driver");
@@ -121,7 +124,24 @@ static int wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
 {
        struct wbsoft_priv *priv = dev->priv;
 
-       MLMESendFrame(priv, skb->data, skb->len, FRAME_TYPE_802_11_MANAGEMENT);
+       if (priv->sMlmeFrame.IsInUsed != PACKET_FREE_TO_USE) {
+               priv->sMlmeFrame.wNumTxMMPDUDiscarded++;
+               return NETDEV_TX_BUSY;
+       }
+
+       priv->sMlmeFrame.IsInUsed = PACKET_COME_FROM_MLME;
+
+       priv->sMlmeFrame.pMMPDU         = skb->data;
+       priv->sMlmeFrame.DataType       = FRAME_TYPE_802_11_MANAGEMENT;
+       priv->sMlmeFrame.len            = skb->len;
+       priv->sMlmeFrame.wNumTxMMPDU++;
+
+       /*
+        * H/W will enter power save by set the register. S/W don't send null
+        * frame with PWRMgt bit enbled to enter power save now.
+        */
+
+       Mds_Tx(priv);
 
        return NETDEV_TX_OK;
 }
@@ -783,8 +803,6 @@ static int wb35_probe(struct usb_interface *intf,
 
        priv = dev->priv;
 
-       spin_lock_init(&priv->SpinLock);
-
        pWbUsb = &priv->sHwData.WbUsb;
        pWbUsb->udev = udev;