From 80a284bd154ee3a9d38ee9c264a3a2bf6114385e Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Sun, 19 Sep 2010 13:01:02 +0300 Subject: [PATCH] staging: w35und: Use NETDEV_TX_BUSY if MLMESendFrame fails This patch changes MLMESendFrame to return NETDEV_TX_BUSY if MLME frame is in use so that wbsoft_tx() doesn't blindly return NETDEV_TX_OK in that case. Cc: Sandro Bonazzola Cc: Lars Lindley Cc: Pavel Machek Cc: Ruslan Pisarev Signed-off-by: Pekka Enberg Signed-off-by: Greg Kroah-Hartman --- drivers/staging/winbond/mlmetxrx.c | 13 ++++++------- drivers/staging/winbond/mlmetxrx_f.h | 3 +-- drivers/staging/winbond/wbusb.c | 4 +--- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/staging/winbond/mlmetxrx.c b/drivers/staging/winbond/mlmetxrx.c index 74488c2..6b28898 100644 --- a/drivers/staging/winbond/mlmetxrx.c +++ b/drivers/staging/winbond/mlmetxrx.c @@ -19,14 +19,13 @@ #include "mds_f.h" -/* ============================================================================= */ -u8 MLMESendFrame(struct wbsoft_priv *adapter, u8 *pMMPDU, u16 len, u8 DataType) -/* DataType : FRAME_TYPE_802_11_MANAGEMENT, FRAME_TYPE_802_11_MANAGEMENT_CHALLENGE, - FRAME_TYPE_802_11_DATA */ +#include + +int MLMESendFrame(struct wbsoft_priv *adapter, u8 *pMMPDU, u16 len, u8 DataType) { if (adapter->sMlmeFrame.IsInUsed != PACKET_FREE_TO_USE) { adapter->sMlmeFrame.wNumTxMMPDUDiscarded++; - return false; + return NETDEV_TX_BUSY; } adapter->sMlmeFrame.IsInUsed = PACKET_COME_FROM_MLME; @@ -40,9 +39,9 @@ u8 MLMESendFrame(struct wbsoft_priv *adapter, u8 *pMMPDU, u16 len, u8 DataType) /* 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. */ - /* Transmit NDIS packet */ Mds_Tx(adapter); - return true; + + return NETDEV_TX_OK; } void MLME_GetNextPacket(struct wbsoft_priv *adapter, struct wb35_descriptor *desc) diff --git a/drivers/staging/winbond/mlmetxrx_f.h b/drivers/staging/winbond/mlmetxrx_f.h index d1aa261..ddccbc2 100644 --- a/drivers/staging/winbond/mlmetxrx_f.h +++ b/drivers/staging/winbond/mlmetxrx_f.h @@ -11,8 +11,7 @@ #include "core.h" void MLME_GetNextPacket(struct wbsoft_priv *adapter, struct wb35_descriptor *pDes); -u8 MLMESendFrame(struct wbsoft_priv *adapter, - u8 *pMMPDU, u16 len, u8 DataType); +int MLMESendFrame(struct wbsoft_priv *adapter, u8 *pMMPDU, u16 len, u8 DataType); void MLME_SendComplete(struct wbsoft_priv *adapter, u8 PacketID, diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c index 5419f4f..157c05b 100644 --- a/drivers/staging/winbond/wbusb.c +++ b/drivers/staging/winbond/wbusb.c @@ -121,9 +121,7 @@ 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); - - return NETDEV_TX_OK; + return MLMESendFrame(priv, skb->data, skb->len, FRAME_TYPE_802_11_MANAGEMENT); } static int wbsoft_start(struct ieee80211_hw *dev) -- 2.7.4