aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-03-04 15:48:25 -0500
committerDavid S. Miller <davem@davemloft.net>2011-03-04 15:48:25 -0500
commitd72751ede1b9bf993d7bd3377305c8e9e36a3cc4 (patch)
tree27abaa49de7ff666dbf6bbcb0d7bae2b9f029a2d /drivers/staging
parent0a0e9ae1bd788bc19adc4d4ae08c98b233697402 (diff)
parent85a7045a90052749885e166f40af5e9140032287 (diff)
Merge branch 'for-davem' of ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/brcm80211/sys/wl_mac80211.c28
-rw-r--r--drivers/staging/brcm80211/sys/wlc_mac80211.c5
-rw-r--r--drivers/staging/winbond/wbusb.c7
3 files changed, 10 insertions, 30 deletions
diff --git a/drivers/staging/brcm80211/sys/wl_mac80211.c b/drivers/staging/brcm80211/sys/wl_mac80211.c
index cd8392badff0..6363077468f1 100644
--- a/drivers/staging/brcm80211/sys/wl_mac80211.c
+++ b/drivers/staging/brcm80211/sys/wl_mac80211.c
@@ -104,9 +104,6 @@ static int wl_request_fw(struct wl_info *wl, struct pci_dev *pdev);
104static void wl_release_fw(struct wl_info *wl); 104static void wl_release_fw(struct wl_info *wl);
105 105
106/* local prototypes */ 106/* local prototypes */
107static int wl_start(struct sk_buff *skb, struct wl_info *wl);
108static int wl_start_int(struct wl_info *wl, struct ieee80211_hw *hw,
109 struct sk_buff *skb);
110static void wl_dpc(unsigned long data); 107static void wl_dpc(unsigned long data);
111 108
112MODULE_AUTHOR("Broadcom Corporation"); 109MODULE_AUTHOR("Broadcom Corporation");
@@ -135,7 +132,6 @@ module_param(phymsglevel, int, 0);
135 132
136#define HW_TO_WL(hw) (hw->priv) 133#define HW_TO_WL(hw) (hw->priv)
137#define WL_TO_HW(wl) (wl->pub->ieee_hw) 134#define WL_TO_HW(wl) (wl->pub->ieee_hw)
138static int wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb);
139static int wl_ops_start(struct ieee80211_hw *hw); 135static int wl_ops_start(struct ieee80211_hw *hw);
140static void wl_ops_stop(struct ieee80211_hw *hw); 136static void wl_ops_stop(struct ieee80211_hw *hw);
141static int wl_ops_add_interface(struct ieee80211_hw *hw, 137static int wl_ops_add_interface(struct ieee80211_hw *hw,
@@ -173,20 +169,18 @@ static int wl_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
173 enum ieee80211_ampdu_mlme_action action, 169 enum ieee80211_ampdu_mlme_action action,
174 struct ieee80211_sta *sta, u16 tid, u16 *ssn); 170 struct ieee80211_sta *sta, u16 tid, u16 *ssn);
175 171
176static int wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb) 172static void wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
177{ 173{
178 int status;
179 struct wl_info *wl = hw->priv; 174 struct wl_info *wl = hw->priv;
180 WL_LOCK(wl); 175 WL_LOCK(wl);
181 if (!wl->pub->up) { 176 if (!wl->pub->up) {
182 WL_ERROR("ops->tx called while down\n"); 177 WL_ERROR("ops->tx called while down\n");
183 status = -ENETDOWN; 178 kfree_skb(skb);
184 goto done; 179 goto done;
185 } 180 }
186 status = wl_start(skb, wl); 181 wlc_sendpkt_mac80211(wl->wlc, skb, hw);
187 done: 182 done:
188 WL_UNLOCK(wl); 183 WL_UNLOCK(wl);
189 return status;
190} 184}
191 185
192static int wl_ops_start(struct ieee80211_hw *hw) 186static int wl_ops_start(struct ieee80211_hw *hw)
@@ -1325,22 +1319,6 @@ void wl_free(struct wl_info *wl)
1325 osl_detach(osh); 1319 osl_detach(osh);
1326} 1320}
1327 1321
1328/* transmit a packet */
1329static int BCMFASTPATH wl_start(struct sk_buff *skb, struct wl_info *wl)
1330{
1331 if (!wl)
1332 return -ENETDOWN;
1333
1334 return wl_start_int(wl, WL_TO_HW(wl), skb);
1335}
1336
1337static int BCMFASTPATH
1338wl_start_int(struct wl_info *wl, struct ieee80211_hw *hw, struct sk_buff *skb)
1339{
1340 wlc_sendpkt_mac80211(wl->wlc, skb, hw);
1341 return NETDEV_TX_OK;
1342}
1343
1344void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state, 1322void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state,
1345 int prio) 1323 int prio)
1346{ 1324{
diff --git a/drivers/staging/brcm80211/sys/wlc_mac80211.c b/drivers/staging/brcm80211/sys/wlc_mac80211.c
index e37e8058e2b8..aa12d1a65184 100644
--- a/drivers/staging/brcm80211/sys/wlc_mac80211.c
+++ b/drivers/staging/brcm80211/sys/wlc_mac80211.c
@@ -6818,11 +6818,14 @@ prep_mac80211_status(struct wlc_info *wlc, d11rxhdr_t *rxh, struct sk_buff *p,
6818 ratespec_t rspec; 6818 ratespec_t rspec;
6819 unsigned char *plcp; 6819 unsigned char *plcp;
6820 6820
6821#if 0
6822 /* Clearly, this is bogus -- reading the TSF now is wrong */
6821 wlc_read_tsf(wlc, &tsf_l, &tsf_h); /* mactime */ 6823 wlc_read_tsf(wlc, &tsf_l, &tsf_h); /* mactime */
6822 rx_status->mactime = tsf_h; 6824 rx_status->mactime = tsf_h;
6823 rx_status->mactime <<= 32; 6825 rx_status->mactime <<= 32;
6824 rx_status->mactime |= tsf_l; 6826 rx_status->mactime |= tsf_l;
6825 rx_status->flag |= RX_FLAG_TSFT; 6827 rx_status->flag |= RX_FLAG_MACTIME_MPDU; /* clearly wrong */
6828#endif
6826 6829
6827 channel = WLC_CHAN_CHANNEL(rxh->RxChan); 6830 channel = WLC_CHAN_CHANNEL(rxh->RxChan);
6828 6831
diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c
index 2163d60c2eaf..3724e1e67ec2 100644
--- a/drivers/staging/winbond/wbusb.c
+++ b/drivers/staging/winbond/wbusb.c
@@ -118,13 +118,14 @@ static void wbsoft_configure_filter(struct ieee80211_hw *dev,
118 *total_flags = new_flags; 118 *total_flags = new_flags;
119} 119}
120 120
121static int wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb) 121static void wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
122{ 122{
123 struct wbsoft_priv *priv = dev->priv; 123 struct wbsoft_priv *priv = dev->priv;
124 124
125 if (priv->sMlmeFrame.IsInUsed != PACKET_FREE_TO_USE) { 125 if (priv->sMlmeFrame.IsInUsed != PACKET_FREE_TO_USE) {
126 priv->sMlmeFrame.wNumTxMMPDUDiscarded++; 126 priv->sMlmeFrame.wNumTxMMPDUDiscarded++;
127 return NETDEV_TX_BUSY; 127 kfree_skb(skb);
128 return;
128 } 129 }
129 130
130 priv->sMlmeFrame.IsInUsed = PACKET_COME_FROM_MLME; 131 priv->sMlmeFrame.IsInUsed = PACKET_COME_FROM_MLME;
@@ -140,8 +141,6 @@ static int wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb)
140 */ 141 */
141 142
142 Mds_Tx(priv); 143 Mds_Tx(priv);
143
144 return NETDEV_TX_OK;
145} 144}
146 145
147static int wbsoft_start(struct ieee80211_hw *dev) 146static int wbsoft_start(struct ieee80211_hw *dev)