[PATCH 02/17] rtl8192e: Move set_chan function to mac80211 ops

Mike McCormack mikem at ring3k.org
Mon Apr 18 23:57:27 UTC 2011


Signed-off-by: Mike McCormack <mikem at ring3k.org>
---
 drivers/staging/rtl8192e/ieee80211/ieee80211.h     |    1 +
 .../staging/rtl8192e/ieee80211/ieee80211_softmac.c |    6 +++---
 .../rtl8192e/ieee80211/ieee80211_softmac_wx.c      |    2 +-
 drivers/staging/rtl8192e/r8192E_core.c             |   13 +++++++++++++
 4 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211.h b/drivers/staging/rtl8192e/ieee80211/ieee80211.h
index ec45854..f5717f9 100644
--- a/drivers/staging/rtl8192e/ieee80211/ieee80211.h
+++ b/drivers/staging/rtl8192e/ieee80211/ieee80211.h
@@ -1796,6 +1796,7 @@ typedef enum _HW_VARIABLES{
 /* partial clone of mac80211's ieee80211_ops struct */
 struct ieee80211_ops {
 	int (*tx)(struct ieee80211_device *hw, struct sk_buff *skb);
+	int (*config)(struct ieee80211_device *hw, u32 changed);
 };
 
 struct ieee80211_device {
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c
index 49c006f..d1a7de5 100644
--- a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c
+++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c
@@ -517,7 +517,7 @@ void ieee80211_softmac_scan_wq(struct work_struct *work)
 #endif
 	if (ieee->scanning == 0 )
 		goto out;
-	ieee->set_chan(ieee, ieee->current_network.channel);
+	ieee->ops->config(ieee, 0);
 #ifdef ENABLE_DOT11D
 	if(channel_map[ieee->current_network.channel] == 1)
 #endif
@@ -2348,7 +2348,7 @@ void ieee80211_start_master_bss(struct ieee80211_device *ieee)
 
 	memcpy(ieee->current_network.bssid, ieee->dev->dev_addr, ETH_ALEN);
 
-	ieee->set_chan(ieee, ieee->current_network.channel);
+	ieee->ops->config(ieee, 0);
 	ieee->state = IEEE80211_LINKED;
 	ieee->link_change(ieee);
 	notify_wx_assoc_event(ieee);
@@ -2467,7 +2467,7 @@ void ieee80211_start_ibss_wq(struct work_struct *work)
 
 	ieee->state = IEEE80211_LINKED;
 
-	ieee->set_chan(ieee, ieee->current_network.channel);
+	ieee->ops->config(ieee, 0);
 	ieee->link_change(ieee);
 
 	notify_wx_assoc_event(ieee);
diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac_wx.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac_wx.c
index d8a068e..7063331 100644
--- a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac_wx.c
+++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac_wx.c
@@ -70,7 +70,7 @@ int ieee80211_wx_set_freq(struct ieee80211_device *ieee, struct iw_request_info
 		}
 #endif
 		ieee->current_network.channel = fwrq->m;
-		ieee->set_chan(ieee, ieee->current_network.channel);
+		ieee->ops->config(ieee, 0);
 
 		if(ieee->iw_mode == IW_MODE_ADHOC || ieee->iw_mode == IW_MODE_MASTER)
 			if(ieee->state == IEEE80211_LINKED){
diff --git a/drivers/staging/rtl8192e/r8192E_core.c b/drivers/staging/rtl8192e/r8192E_core.c
index 3d0c93c..122f212 100644
--- a/drivers/staging/rtl8192e/r8192E_core.c
+++ b/drivers/staging/rtl8192e/r8192E_core.c
@@ -659,6 +659,18 @@ static void rtl8192_set_chan(struct ieee80211_device *ieee80211, short ch)
 		priv->rf_set_chan(ieee80211, priv->chan);
 }
 
+static int rtl8192_config(struct ieee80211_device *ieee, u32 changed)
+{
+	struct r8192_priv *priv = ieee80211_priv(ieee->dev);
+
+	priv->chan = ieee->current_network.channel;
+
+	if (priv->rf_set_chan)
+		priv->rf_set_chan(ieee, priv->chan);
+
+	return 0;
+}
+
 static void rtl8192_rx_enable(struct r8192_priv *priv)
 {
 	write_nic_dword(priv, RDQDA, priv->rx_ring_dma);
@@ -4525,6 +4537,7 @@ static const struct net_device_ops rtl8192_netdev_ops = {
 
 static const struct ieee80211_ops r8192e_ops = {
 	.tx =				rtl8192_hard_start_xmit,
+	.config = 			rtl8192_config,
 };
 
 static int __devinit rtl8192_pci_probe(struct pci_dev *pdev,
-- 
1.7.0.4





More information about the devel mailing list