aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 19:29:25 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-16 19:29:25 -0400
commit7a6362800cb7d1d618a697a650c7aaed3eb39320 (patch)
tree087f9bc6c13ef1fad4b392c5cf9325cd28fa8523 /drivers/staging
parent6445ced8670f37cfc2c5e24a9de9b413dbfc788d (diff)
parentceda86a108671294052cbf51660097b6534672f5 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1480 commits) bonding: enable netpoll without checking link status xfrm: Refcount destination entry on xfrm_lookup net: introduce rx_handler results and logic around that bonding: get rid of IFF_SLAVE_INACTIVE netdev->priv_flag bonding: wrap slave state work net: get rid of multiple bond-related netdevice->priv_flags bonding: register slave pointer for rx_handler be2net: Bump up the version number be2net: Copyright notice change. Update to Emulex instead of ServerEngines e1000e: fix kconfig for crc32 dependency netfilter ebtables: fix xt_AUDIT to work with ebtables xen network backend driver bonding: Improve syslog message at device creation time bonding: Call netif_carrier_off after register_netdevice bonding: Incorrect TX queue offset net_sched: fix ip_tos2prio xfrm: fix __xfrm_route_forward() be2net: Fix UDP packet detected status in RX compl Phonet: fix aligned-mode pipe socket buffer header reserve netxen: support for GbE port settings ... Fix up conflicts in drivers/staging/brcm80211/brcmsmac/wl_mac80211.c with the staging updates.
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c4
-rw-r--r--drivers/staging/brcm80211/brcmsmac/wl_mac80211.c31
-rw-r--r--drivers/staging/brcm80211/brcmsmac/wlc_main.c5
-rw-r--r--drivers/staging/pohmelfs/config.c2
-rw-r--r--drivers/staging/winbond/wbusb.c7
5 files changed, 14 insertions, 35 deletions
diff --git a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
index 9e74beb0b64b..555b056b49b1 100644
--- a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
@@ -2308,7 +2308,9 @@ static s32 wl_inform_single_bss(struct wl_priv *wl, struct wl_bss_info *bi)
2308 notif_bss_info->frame_len = 2308 notif_bss_info->frame_len =
2309 offsetof(struct ieee80211_mgmt, 2309 offsetof(struct ieee80211_mgmt,
2310 u.beacon.variable) + wl_get_ielen(wl); 2310 u.beacon.variable) + wl_get_ielen(wl);
2311 freq = ieee80211_channel_to_frequency(notif_bss_info->channel); 2311 freq = ieee80211_channel_to_frequency(notif_bss_info->channel,
2312 band->band);
2313
2312 channel = ieee80211_get_channel(wiphy, freq); 2314 channel = ieee80211_get_channel(wiphy, freq);
2313 2315
2314 WL_DBG("SSID : \"%s\", rssi %d, channel %d, capability : 0x04%x, bssid %pM\n", 2316 WL_DBG("SSID : \"%s\", rssi %d, channel %d, capability : 0x04%x, bssid %pM\n",
diff --git a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
index 66708d8df7f6..774b4e916b29 100644
--- a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
+++ b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
@@ -74,9 +74,6 @@ static int wl_request_fw(struct wl_info *wl, struct pci_dev *pdev);
74static void wl_release_fw(struct wl_info *wl); 74static void wl_release_fw(struct wl_info *wl);
75 75
76/* local prototypes */ 76/* local prototypes */
77static int wl_start(struct sk_buff *skb, struct wl_info *wl);
78static int wl_start_int(struct wl_info *wl, struct ieee80211_hw *hw,
79 struct sk_buff *skb);
80static void wl_dpc(unsigned long data); 77static void wl_dpc(unsigned long data);
81static irqreturn_t wl_isr(int irq, void *dev_id); 78static irqreturn_t wl_isr(int irq, void *dev_id);
82 79
@@ -111,7 +108,6 @@ module_param(phymsglevel, int, 0);
111#define WL_TO_HW(wl) (wl->pub->ieee_hw) 108#define WL_TO_HW(wl) (wl->pub->ieee_hw)
112 109
113/* MAC80211 callback functions */ 110/* MAC80211 callback functions */
114static int wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb);
115static int wl_ops_start(struct ieee80211_hw *hw); 111static int wl_ops_start(struct ieee80211_hw *hw);
116static void wl_ops_stop(struct ieee80211_hw *hw); 112static void wl_ops_stop(struct ieee80211_hw *hw);
117static int wl_ops_add_interface(struct ieee80211_hw *hw, 113static int wl_ops_add_interface(struct ieee80211_hw *hw,
@@ -152,21 +148,19 @@ static int wl_ops_ampdu_action(struct ieee80211_hw *hw,
152 u8 buf_size); 148 u8 buf_size);
153static void wl_ops_rfkill_poll(struct ieee80211_hw *hw); 149static void wl_ops_rfkill_poll(struct ieee80211_hw *hw);
154 150
155static int wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb) 151static void wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
156{ 152{
157 int status;
158 struct wl_info *wl = hw->priv; 153 struct wl_info *wl = hw->priv;
159 154
160 WL_LOCK(wl); 155 WL_LOCK(wl);
161 if (!wl->pub->up) { 156 if (!wl->pub->up) {
162 WL_ERROR("ops->tx called while down\n"); 157 WL_ERROR("ops->tx called while down\n");
163 status = -ENETDOWN; 158 kfree_skb(skb);
164 goto done; 159 goto done;
165 } 160 }
166 status = wl_start(skb, wl); 161 wlc_sendpkt_mac80211(wl->wlc, skb, hw);
167 done: 162 done:
168 WL_UNLOCK(wl); 163 WL_UNLOCK(wl);
169 return status;
170} 164}
171 165
172static int wl_ops_start(struct ieee80211_hw *hw) 166static int wl_ops_start(struct ieee80211_hw *hw)
@@ -1396,25 +1390,6 @@ static void wl_free(struct wl_info *wl)
1396} 1390}
1397 1391
1398/* 1392/*
1399 * transmit a packet
1400 * precondition: perimeter lock has been acquired
1401 */
1402static int BCMFASTPATH wl_start(struct sk_buff *skb, struct wl_info *wl)
1403{
1404 if (!wl)
1405 return -ENETDOWN;
1406
1407 return wl_start_int(wl, WL_TO_HW(wl), skb);
1408}
1409
1410static int BCMFASTPATH
1411wl_start_int(struct wl_info *wl, struct ieee80211_hw *hw, struct sk_buff *skb)
1412{
1413 wlc_sendpkt_mac80211(wl->wlc, skb, hw);
1414 return NETDEV_TX_OK;
1415}
1416
1417/*
1418 * precondition: perimeter lock has been acquired 1393 * precondition: perimeter lock has been acquired
1419 */ 1394 */
1420void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state, 1395void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state,
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_main.c b/drivers/staging/brcm80211/brcmsmac/wlc_main.c
index 0870dc913cda..639b5d7c9603 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_main.c
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_main.c
@@ -6838,11 +6838,14 @@ prep_mac80211_status(struct wlc_info *wlc, d11rxhdr_t *rxh, struct sk_buff *p,
6838 ratespec_t rspec; 6838 ratespec_t rspec;
6839 unsigned char *plcp; 6839 unsigned char *plcp;
6840 6840
6841#if 0
6842 /* Clearly, this is bogus -- reading the TSF now is wrong */
6841 wlc_read_tsf(wlc, &tsf_l, &tsf_h); /* mactime */ 6843 wlc_read_tsf(wlc, &tsf_l, &tsf_h); /* mactime */
6842 rx_status->mactime = tsf_h; 6844 rx_status->mactime = tsf_h;
6843 rx_status->mactime <<= 32; 6845 rx_status->mactime <<= 32;
6844 rx_status->mactime |= tsf_l; 6846 rx_status->mactime |= tsf_l;
6845 rx_status->flag |= RX_FLAG_TSFT; 6847 rx_status->flag |= RX_FLAG_MACTIME_MPDU; /* clearly wrong */
6848#endif
6846 6849
6847 channel = WLC_CHAN_CHANNEL(rxh->RxChan); 6850 channel = WLC_CHAN_CHANNEL(rxh->RxChan);
6848 6851
diff --git a/drivers/staging/pohmelfs/config.c b/drivers/staging/pohmelfs/config.c
index a9a3e25a7efa..b6c42cb0d1c6 100644
--- a/drivers/staging/pohmelfs/config.c
+++ b/drivers/staging/pohmelfs/config.c
@@ -525,7 +525,7 @@ static void pohmelfs_cn_callback(struct cn_msg *msg, struct netlink_skb_parms *n
525{ 525{
526 int err; 526 int err;
527 527
528 if (!cap_raised(nsp->eff_cap, CAP_SYS_ADMIN)) 528 if (!cap_raised(current_cap(), CAP_SYS_ADMIN))
529 return; 529 return;
530 530
531 switch (msg->flags) { 531 switch (msg->flags) {
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)