⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 903-hostap_txpower.patch

📁 Linux Home Server 是专门为家庭和SOHO/SMB 设计的高性价比的ISCSI 存储服务器, 具有如下的特色: 强大的iscsi 存储服务器软件; 混合iscsi 和NAS 服务;
💻 PATCH
字号:
Index: linux-2.6.21.7/drivers/net/wireless/hostap/hostap_ap.c===================================================================--- linux-2.6.21.7.orig/drivers/net/wireless/hostap/hostap_ap.c+++ linux-2.6.21.7/drivers/net/wireless/hostap/hostap_ap.c@@ -2346,13 +2346,13 @@ int prism2_ap_get_sta_qual(local_info_t  		addr[count].sa_family = ARPHRD_ETHER; 		memcpy(addr[count].sa_data, sta->addr, ETH_ALEN); 		if (sta->last_rx_silence == 0)-			qual[count].qual = sta->last_rx_signal < 27 ?-				0 : (sta->last_rx_signal - 27) * 92 / 127;+                        qual[count].qual = (sta->last_rx_signal - 156) == 0 ?+                                0 : (sta->last_rx_signal - 156) * 92 / 64; 		else-			qual[count].qual = sta->last_rx_signal --				sta->last_rx_silence - 35;-		qual[count].level = HFA384X_LEVEL_TO_dBm(sta->last_rx_signal);-		qual[count].noise = HFA384X_LEVEL_TO_dBm(sta->last_rx_silence);+                        qual[count].qual = (sta->last_rx_signal -+                                sta->last_rx_silence) * 92 / 64;+                qual[count].level = sta->last_rx_signal;+                qual[count].noise = sta->last_rx_silence; 		qual[count].updated = sta->last_rx_updated;  		sta->last_rx_updated = IW_QUAL_DBM;@@ -2417,13 +2417,13 @@ int prism2_ap_translate_scan(struct net_ 		memset(&iwe, 0, sizeof(iwe)); 		iwe.cmd = IWEVQUAL; 		if (sta->last_rx_silence == 0)-			iwe.u.qual.qual = sta->last_rx_signal < 27 ?-				0 : (sta->last_rx_signal - 27) * 92 / 127;+	                iwe.u.qual.qual = (sta->last_rx_signal -156) == 0 ?+	                        0 : (sta->last_rx_signal - 156) * 92 / 64; 		else-			iwe.u.qual.qual = sta->last_rx_signal --				sta->last_rx_silence - 35;-		iwe.u.qual.level = HFA384X_LEVEL_TO_dBm(sta->last_rx_signal);-		iwe.u.qual.noise = HFA384X_LEVEL_TO_dBm(sta->last_rx_silence);+                        iwe.u.qual.qual = (sta->last_rx_signal -+                                sta->last_rx_silence) * 92 / 64;+                iwe.u.qual.level = sta->last_rx_signal;+                iwe.u.qual.noise = sta->last_rx_silence; 		iwe.u.qual.updated = sta->last_rx_updated; 		iwe.len = IW_EV_QUAL_LEN; 		current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe,Index: linux-2.6.21.7/drivers/net/wireless/hostap/hostap_config.h===================================================================--- linux-2.6.21.7.orig/drivers/net/wireless/hostap/hostap_config.h+++ linux-2.6.21.7/drivers/net/wireless/hostap/hostap_config.h@@ -47,4 +47,9 @@  */ /* #define PRISM2_NO_STATION_MODES */ +/* Enable TX power Setting functions+ * (min att = -128 , max att =  127)+ */+#define RAW_TXPOWER_SETTING+ #endif /* HOSTAP_CONFIG_H */Index: linux-2.6.21.7/drivers/net/wireless/hostap/hostap.h===================================================================--- linux-2.6.21.7.orig/drivers/net/wireless/hostap/hostap.h+++ linux-2.6.21.7/drivers/net/wireless/hostap/hostap.h@@ -90,6 +90,7 @@ extern const struct iw_handler_def hosta extern const struct ethtool_ops prism2_ethtool_ops;  int hostap_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);+int hostap_restore_power(struct net_device *dev);   #endif /* HOSTAP_H */Index: linux-2.6.21.7/drivers/net/wireless/hostap/hostap_hw.c===================================================================--- linux-2.6.21.7.orig/drivers/net/wireless/hostap/hostap_hw.c+++ linux-2.6.21.7/drivers/net/wireless/hostap/hostap_hw.c@@ -933,6 +933,7 @@ static int hfa384x_set_rid(struct net_de 			prism2_hw_reset(dev); 	} +	hostap_restore_power(dev); 	return res; } Index: linux-2.6.21.7/drivers/net/wireless/hostap/hostap_info.c===================================================================--- linux-2.6.21.7.orig/drivers/net/wireless/hostap/hostap_info.c+++ linux-2.6.21.7/drivers/net/wireless/hostap/hostap_info.c@@ -428,6 +428,11 @@ static void handle_info_queue_linkstatus 	}  	/* Get BSSID if we have a valid AP address */++	if ( val == HFA384X_LINKSTATUS_CONNECTED ||+	     val == HFA384X_LINKSTATUS_DISCONNECTED ) +			hostap_restore_power(local->dev);+ 	if (connected) { 		netif_carrier_on(local->dev); 		netif_carrier_on(local->ddev);Index: linux-2.6.21.7/drivers/net/wireless/hostap/hostap_ioctl.c===================================================================--- linux-2.6.21.7.orig/drivers/net/wireless/hostap/hostap_ioctl.c+++ linux-2.6.21.7/drivers/net/wireless/hostap/hostap_ioctl.c@@ -1504,23 +1504,20 @@ static int prism2_txpower_hfa386x_to_dBm 		val = 255;  	tmp = val;-	tmp >>= 2; -	return -12 - tmp;+	return tmp; }  static u16 prism2_txpower_dBm_to_hfa386x(int val) { 	signed char tmp; -	if (val > 20)-		return 128;-	else if (val < -43)+	if (val > 127) 		return 127;+	else if (val < -128)+		return 128;  	tmp = val;-	tmp = -12 - tmp;-	tmp <<= 2;  	return (unsigned char) tmp; }@@ -4080,3 +4077,35 @@ int hostap_ioctl(struct net_device *dev,  	return ret; }++/* BUG FIX: Restore power setting value when lost due to F/W bug */++int hostap_restore_power(struct net_device *dev)+{+        struct hostap_interface *iface = dev->priv;+       local_info_t *local = iface->local;+               +       u16 val;+       int ret = 0;++       if (local->txpower_type == PRISM2_TXPOWER_OFF) {+                       val = 0xff; /* use all standby and sleep modes */+                       ret = local->func->cmd(dev, HFA384X_CMDCODE_WRITEMIF,+                                              HFA386X_CR_A_D_TEST_MODES2,+                                              &val, NULL);+       }++#ifdef RAW_TXPOWER_SETTING+       if (local->txpower_type == PRISM2_TXPOWER_FIXED) {+               val = HFA384X_TEST_CFG_BIT_ALC;+               local->func->cmd(dev, HFA384X_CMDCODE_TEST |+                                (HFA384X_TEST_CFG_BITS << 8), 0, &val, NULL);+               val = prism2_txpower_dBm_to_hfa386x(local->txpower);+               ret = (local->func->cmd(dev, HFA384X_CMDCODE_WRITEMIF,+                            HFA386X_CR_MANUAL_TX_POWER, &val, NULL));+       }+#endif /* RAW_TXPOWER_SETTING */+       return (ret ? -EOPNOTSUPP : 0);+}++EXPORT_SYMBOL(hostap_restore_power);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -