diff options
author | David S. Miller <davem@davemloft.net> | 2011-03-04 15:48:25 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-04 15:48:25 -0500 |
commit | d72751ede1b9bf993d7bd3377305c8e9e36a3cc4 (patch) | |
tree | 27abaa49de7ff666dbf6bbcb0d7bae2b9f029a2d /drivers/staging | |
parent | 0a0e9ae1bd788bc19adc4d4ae08c98b233697402 (diff) | |
parent | 85a7045a90052749885e166f40af5e9140032287 (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.c | 28 | ||||
-rw-r--r-- | drivers/staging/brcm80211/sys/wlc_mac80211.c | 5 | ||||
-rw-r--r-- | drivers/staging/winbond/wbusb.c | 7 |
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); | |||
104 | static void wl_release_fw(struct wl_info *wl); | 104 | static void wl_release_fw(struct wl_info *wl); |
105 | 105 | ||
106 | /* local prototypes */ | 106 | /* local prototypes */ |
107 | static int wl_start(struct sk_buff *skb, struct wl_info *wl); | ||
108 | static int wl_start_int(struct wl_info *wl, struct ieee80211_hw *hw, | ||
109 | struct sk_buff *skb); | ||
110 | static void wl_dpc(unsigned long data); | 107 | static void wl_dpc(unsigned long data); |
111 | 108 | ||
112 | MODULE_AUTHOR("Broadcom Corporation"); | 109 | MODULE_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) |
138 | static int wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb); | ||
139 | static int wl_ops_start(struct ieee80211_hw *hw); | 135 | static int wl_ops_start(struct ieee80211_hw *hw); |
140 | static void wl_ops_stop(struct ieee80211_hw *hw); | 136 | static void wl_ops_stop(struct ieee80211_hw *hw); |
141 | static int wl_ops_add_interface(struct ieee80211_hw *hw, | 137 | static 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 | ||
176 | static int wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 172 | static 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 | ||
192 | static int wl_ops_start(struct ieee80211_hw *hw) | 186 | static 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 */ | ||
1329 | static 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 | |||
1337 | static int BCMFASTPATH | ||
1338 | wl_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 | |||
1344 | void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state, | 1322 | void 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 | ||
121 | static int wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | 121 | static 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 | ||
147 | static int wbsoft_start(struct ieee80211_hw *dev) | 146 | static int wbsoft_start(struct ieee80211_hw *dev) |