SOURCES: kernel-net-rtl8187-2.6.20.patch (NEW) - adapts driver to ...

czarny czarny at pld-linux.org
Sun Mar 18 02:24:34 CET 2007


Author: czarny                       Date: Sun Mar 18 01:24:34 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- adapts driver to newer kernels
- fixes errors with buffer overruns

---- Files affected:
SOURCES:
   kernel-net-rtl8187-2.6.20.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/kernel-net-rtl8187-2.6.20.patch
diff -u /dev/null SOURCES/kernel-net-rtl8187-2.6.20.patch:1.1
--- /dev/null	Sun Mar 18 02:24:34 2007
+++ SOURCES/kernel-net-rtl8187-2.6.20.patch	Sun Mar 18 02:24:28 2007
@@ -0,0 +1,5943 @@
+diff -Naur rtl8187_orig/beta-8187/ieee80211.h rtl8187_txpower/beta-8187/ieee80211.h
+--- rtl8187_orig/beta-8187/ieee80211.h	2006-06-06 04:58:02.000000000 +0200
++++ rtl8187_txpower/beta-8187/ieee80211.h	2007-02-26 03:05:07.691423532 +0100
+@@ -156,6 +156,22 @@
+ 	struct list_head list;
+ };
+ 
++#define LWNG_CAP_DID_BASE   (4 | (1 << 6)) /* section 4, group 1 */
++/* ARPHRD_IEEE80211_PRISM uses a bloated version of Prism2 RX frame header
++ * (from linux-wlan-ng) */
++struct linux_wlan_ng_val {
++	u32 did;
++	u16 status, len;
++	u32 data;
++} __attribute__ ((packed));
++
++struct linux_wlan_ng_prism_hdr {
++	u32 msgcode, msglen;
++	char devname[16];
++	struct linux_wlan_ng_val hosttime, mactime, channel, rssi, sq, signal,
++		noise, rate, istx, frmlen;
++} __attribute__ ((packed));
++
+ struct ieee80211_hdr {
+ 	u16 frame_ctl;
+ 	u16 duration_id;
+@@ -840,14 +856,14 @@
+ 
+ 
+ #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,11))
+-extern inline int is_multicast_ether_addr(const u8 *addr)
++extern inline int is_multicast_ether_addr_rtl7(const u8 *addr)
+ {
+         return ((addr[0] != 0xff) && (0x01 & addr[0]));
+ }
+ #endif
+ 
+ #if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,13))
+-extern inline int is_broadcast_ether_addr(const u8 *addr)
++extern inline int is_broadcast_ether_addr_rtl7(const u8 *addr)
+ {
+ 	return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) &&   \
+ 		(addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
+@@ -1015,10 +1031,16 @@
+ 	struct timer_list beacon_timer;
+ 	
+ 	struct work_struct associate_complete_wq;
++
++# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20))
++	struct delayed_work associate_retry_wq;
++	struct delayed_work softmac_scan_wq;
++#else
+ 	struct work_struct associate_retry_wq;
++	struct work_struct softmac_scan_wq;
++#endif
+ 	struct work_struct start_ibss_wq;
+ 	struct work_struct associate_procedure_wq;
+-	struct work_struct softmac_scan_wq;
+ 	struct work_struct wx_sync_scan_wq;
+ 	
+ 	struct workqueue_struct *wq;
+@@ -1154,12 +1176,12 @@
+ 
+ 
+ 
+-extern inline void *ieee80211_priv(struct net_device *dev)
++extern inline void *ieee80211_priv_rtl7(struct net_device *dev)
+ {
+ 	return ((struct ieee80211_device *)netdev_priv(dev))->priv;
+ }
+ 
+-extern inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
++extern inline int ieee80211_is_empty_essid_rtl7(const char *essid, int essid_len)
+ {
+ 	/* Single white space is for Linksys APs */
+ 	if (essid_len == 1 && essid[0] == ' ')
+@@ -1175,7 +1197,7 @@
+ 	return 1;
+ }
+ 
+-extern inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee, int mode)
++extern inline int ieee80211_is_valid_mode_rtl7(struct ieee80211_device *ieee, int mode)
+ {
+ 	/*
+ 	 * It is possible for both access points and our device to support
+@@ -1201,7 +1223,7 @@
+ 	return 0;
+ }
+ 
+-extern inline int ieee80211_get_hdrlen(u16 fc)
++extern inline int ieee80211_get_hdrlen_rtl7(u16 fc)
+ {
+ 	int hdrlen = 24;
+ 
+@@ -1229,140 +1251,144 @@
+ 
+ 
+ /* ieee80211.c */
+-extern void free_ieee80211(struct net_device *dev);
+-extern struct net_device *alloc_ieee80211(int sizeof_priv);
++extern void free_ieee80211_rtl7(struct net_device *dev);
++extern struct net_device *alloc_ieee80211_rtl7(int sizeof_priv);
+ 
+-extern int ieee80211_set_encryption(struct ieee80211_device *ieee);
++extern int ieee80211_set_encryption_rtl7(struct ieee80211_device *ieee);
+ 
+ /* ieee80211_tx.c */
+ 
+-extern int ieee80211_encrypt_fragment(
++extern int ieee80211_encrypt_fragment_rtl7(
+ 	struct ieee80211_device *ieee,
+ 	struct sk_buff *frag,
+ 	int hdr_len);
+ 	
+-extern int ieee80211_xmit(struct sk_buff *skb,
++extern int ieee80211_xmit_rtl7(struct sk_buff *skb,
+ 			  struct net_device *dev);
+-extern void ieee80211_txb_free(struct ieee80211_txb *);
++extern void ieee80211_txb_free_rtl7(struct ieee80211_txb *);
+ 
+ 
+ /* ieee80211_rx.c */
+-extern int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
++extern int ieee80211_rx_rtl7(struct ieee80211_device *ieee, struct sk_buff *skb,
+ 			struct ieee80211_rx_stats *rx_stats);
+-extern void ieee80211_rx_mgt(struct ieee80211_device *ieee,
++extern void ieee80211_rx_mgt_rtl7(struct ieee80211_device *ieee,
+ 			     struct ieee80211_hdr *header,
+ 			     struct ieee80211_rx_stats *stats);
+ 
+ /* ieee80211_wx.c */
+-extern int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
++extern int ieee80211_wx_get_scan_rtl7(struct ieee80211_device *ieee,
+ 				 struct iw_request_info *info,
+ 				 union iwreq_data *wrqu, char *key);
+-extern int ieee80211_wx_set_encode(struct ieee80211_device *ieee,
++extern int ieee80211_wx_set_encode_rtl7(struct ieee80211_device *ieee,
+ 				   struct iw_request_info *info,
+ 				   union iwreq_data *wrqu, char *key);
+-extern int ieee80211_wx_get_encode(struct ieee80211_device *ieee,
++extern int ieee80211_wx_get_encode_rtl7(struct ieee80211_device *ieee,
+ 				   struct iw_request_info *info,
+ 				   union iwreq_data *wrqu, char *key);
+ /* ieee80211_softmac.c */
+-extern short ieee80211_is_54g(struct ieee80211_network net);
+-extern short ieee80211_is_shortslot(struct ieee80211_network net);
+-extern int ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb,
++extern short ieee80211_is_54g_rtl7(struct ieee80211_network net);
++extern short ieee80211_is_shortslot_rtl7(struct ieee80211_network net);
++extern int ieee80211_rx_frame_softmac_rtl7(struct ieee80211_device *ieee, struct sk_buff *skb,
+ 			struct ieee80211_rx_stats *rx_stats, u16 type,
+ 			u16 stype);
+-extern void ieee80211_softmac_new_net(struct ieee80211_device *ieee, struct ieee80211_network *net);
++extern void ieee80211_softmac_new_net_rtl7(struct ieee80211_device *ieee, struct ieee80211_network *net);
+ 
+-extern void ieee80211_softmac_xmit(struct ieee80211_txb *txb, struct ieee80211_device *ieee);
+-extern void ieee80211_softmac_check_all_nets(struct ieee80211_device *ieee);
+-extern void ieee80211_start_bss(struct ieee80211_device *ieee);
+-extern void ieee80211_start_master_bss(struct ieee80211_device *ieee);
+-extern void ieee80211_start_ibss(struct ieee80211_device *ieee);
+-extern void ieee80211_softmac_init(struct ieee80211_device *ieee);
+-extern void ieee80211_softmac_free(struct ieee80211_device *ieee);
+-extern void ieee80211_associate_abort(struct ieee80211_device *ieee);
+-extern void ieee80211_disassociate(struct ieee80211_device *ieee);
+-extern void ieee80211_stop_scan(struct ieee80211_device *ieee);
+-extern void ieee80211_start_scan_syncro(struct ieee80211_device *ieee);
+-extern void ieee80211_check_all_nets(struct ieee80211_device *ieee);
+-extern void ieee80211_start_protocol(struct ieee80211_device *ieee);
+-extern void ieee80211_stop_protocol(struct ieee80211_device *ieee);
+-extern void ieee80211_softmac_start_protocol(struct ieee80211_device *ieee);
+-extern void ieee80211_softmac_stop_protocol(struct ieee80211_device *ieee);
+-extern void ieee80211_reset_queue(struct ieee80211_device *ieee);
+-extern void ieee80211_wake_queue(struct ieee80211_device *ieee);
+-extern void ieee80211_stop_queue(struct ieee80211_device *ieee);
+-extern struct sk_buff *ieee80211_get_beacon(struct ieee80211_device *ieee);
+-extern void ieee80211_start_send_beacons(struct ieee80211_device *ieee);
+-extern void ieee80211_stop_send_beacons(struct ieee80211_device *ieee);
+-extern int ieee80211_wpa_supplicant_ioctl(struct ieee80211_device *ieee, struct iw_point *p);
+-extern void notify_wx_assoc_event(struct ieee80211_device *ieee);
+-extern void ieee80211_ps_tx_ack(struct ieee80211_device *ieee, short success);
++extern void ieee80211_softmac_xmit_rtl7(struct ieee80211_txb *txb, struct ieee80211_device *ieee);
++extern void ieee80211_softmac_check_all_nets_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_start_bss_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_start_master_bss_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_start_ibss_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_softmac_init_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_softmac_free_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_associate_abort_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_disassociate_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_stop_scan_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_start_scan_syncro_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_check_all_nets_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_start_protocol_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_stop_protocol_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_softmac_start_protocol_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_softmac_stop_protocol_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_reset_queue_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_wake_queue_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_stop_queue_rtl7(struct ieee80211_device *ieee);
++extern struct sk_buff *ieee80211_get_beacon_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_start_send_beacons_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_stop_send_beacons_rtl7(struct ieee80211_device *ieee);
++extern int ieee80211_wpa_supplicant_ioctl_rtl7(struct ieee80211_device *ieee, struct iw_point *p);
++extern void notify_wx_assoc_event_rtl7(struct ieee80211_device *ieee);
++extern void ieee80211_ps_tx_ack_rtl7(struct ieee80211_device *ieee, short success);
+ 
+ /* ieee80211_softmac_wx.c */
+ 
+-extern int ieee80211_wx_get_wap(struct ieee80211_device *ieee, 
++extern int ieee80211_wx_get_wap_rtl7(struct ieee80211_device *ieee, 
+ 			    struct iw_request_info *info, 
+ 			    union iwreq_data *wrqu, char *ext);
+ 			    
+-extern int ieee80211_wx_set_wap(struct ieee80211_device *ieee,
++extern int ieee80211_wx_set_wap_rtl7(struct ieee80211_device *ieee,
+ 			 struct iw_request_info *info,
+ 			 union iwreq_data *awrq,
+ 			 char *extra);
+ 			 
+-extern int ieee80211_wx_get_essid(struct ieee80211_device *ieee, struct iw_request_info *a,union iwreq_data *wrqu,char *b);
++extern int ieee80211_wx_get_essid_rtl7(struct ieee80211_device *ieee, struct iw_request_info *a,union iwreq_data *wrqu,char *b);
+ 
+-extern int ieee80211_wx_set_rate(struct ieee80211_device *ieee, 
++extern int ieee80211_wx_set_rate_rtl7(struct ieee80211_device *ieee, 
+ 			     struct iw_request_info *info,
+ 			     union iwreq_data *wrqu, char *extra);
+ 			     
+-extern int ieee80211_wx_get_rate(struct ieee80211_device *ieee, 
++extern int ieee80211_wx_get_rate_rtl7(struct ieee80211_device *ieee, 
+ 			     struct iw_request_info *info, 
+ 			     union iwreq_data *wrqu, char *extra);
+ 			     
+-extern int ieee80211_wx_set_mode(struct ieee80211_device *ieee, struct iw_request_info *a,
++extern int ieee80211_wx_set_mode_rtl7(struct ieee80211_device *ieee, struct iw_request_info *a,
+ 			     union iwreq_data *wrqu, char *b);
+ 			     
+-extern int ieee80211_wx_set_scan(struct ieee80211_device *ieee, struct iw_request_info *a,
++extern int ieee80211_wx_set_scan_rtl7(struct ieee80211_device *ieee, struct iw_request_info *a,
+ 			     union iwreq_data *wrqu, char *b);
+ 			     
+-extern int ieee80211_wx_set_essid(struct ieee80211_device *ieee, 
++extern int ieee80211_wx_set_essid_rtl7(struct ieee80211_device *ieee, 
+ 			      struct iw_request_info *a,
+ 			      union iwreq_data *wrqu, char *extra);
+ 			      
+-extern int ieee80211_wx_get_mode(struct ieee80211_device *ieee, struct iw_request_info *a,
++extern int ieee80211_wx_get_mode_rtl7(struct ieee80211_device *ieee, struct iw_request_info *a,
+ 			     union iwreq_data *wrqu, char *b);
+ 
+-extern int ieee80211_wx_set_freq(struct ieee80211_device *ieee, struct iw_request_info *a,
++extern int ieee80211_wx_set_freq_rtl7(struct ieee80211_device *ieee, struct iw_request_info *a,
+ 			     union iwreq_data *wrqu, char *b);
+ 
+-extern int ieee80211_wx_get_freq(struct ieee80211_device *ieee, struct iw_request_info *a,
++extern int ieee80211_wx_get_freq_rtl7(struct ieee80211_device *ieee, struct iw_request_info *a,
+ 			     union iwreq_data *wrqu, char *b);
+ 
+-extern void ieee80211_wx_sync_scan_wq(struct ieee80211_device *ieee);
++# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20))
++extern void ieee80211_wx_sync_scan_wq_rtl7(struct work_struct *work);
++#else
++extern void ieee80211_wx_sync_scan_wq_rtl7(struct ieee80211_device *ieee);
++#endif
+ 
+-extern int ieee80211_wx_set_rawtx(struct ieee80211_device *ieee, 
++extern int ieee80211_wx_set_rawtx_rtl7(struct ieee80211_device *ieee, 
+ 			       struct iw_request_info *info, 
+ 			       union iwreq_data *wrqu, char *extra);
+ 			       
+-extern int ieee80211_wx_get_name(struct ieee80211_device *ieee, 
++extern int ieee80211_wx_get_name_rtl7(struct ieee80211_device *ieee, 
+ 			     struct iw_request_info *info, 
+ 			     union iwreq_data *wrqu, char *extra);
+ 
+-extern int ieee80211_wx_set_power(struct ieee80211_device *ieee,
++extern int ieee80211_wx_set_power_rtl7(struct ieee80211_device *ieee,
+ 				 struct iw_request_info *info,
+ 				 union iwreq_data *wrqu, char *extra);
+ 
+-extern int ieee80211_wx_get_power(struct ieee80211_device *ieee,
++extern int ieee80211_wx_get_power_rtl7(struct ieee80211_device *ieee,
+ 				 struct iw_request_info *info,
+ 				 union iwreq_data *wrqu, char *extra);
+ 				 			     
+-extern const long ieee80211_wlan_frequencies[];
++extern const long ieee80211_wlan_frequencies_rtl7[];
+ 
+-extern inline void ieee80211_increment_scans(struct ieee80211_device *ieee)
++extern inline void ieee80211_increment_scans_rtl7(struct ieee80211_device *ieee)
+ {
+ 	ieee->scans++;
+ }
+ 
+-extern inline int ieee80211_get_scans(struct ieee80211_device *ieee)
++extern inline int ieee80211_get_scans_rtl7(struct ieee80211_device *ieee)
+ {
+ 	return ieee->scans;
+ }
+@@ -1372,7 +1398,7 @@
+ 	const char *s = essid;
+ 	char *d = escaped;
+ 
+-	if (ieee80211_is_empty_essid(essid, essid_len)) {
++	if (ieee80211_is_empty_essid_rtl7(essid, essid_len)) {
+ 		memcpy(escaped, "<hidden>", sizeof("<hidden>"));
+ 		return escaped;
+ 	}
+diff -Naur rtl8187_orig/beta-8187/r8180_93cx6.c rtl8187_txpower/beta-8187/r8180_93cx6.c
+--- rtl8187_orig/beta-8187/r8180_93cx6.c	2006-06-06 04:58:00.000000000 +0200
++++ rtl8187_txpower/beta-8187/r8180_93cx6.c	2007-02-26 03:05:03.241356403 +0100
+@@ -87,7 +87,7 @@
+ 
+ u32 eprom_read(struct net_device *dev, u32 addr)
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	short read_cmd[]={1,1,0};
+ 	short addr_str[8];
+ 	int i;
+diff -Naur rtl8187_orig/beta-8187/r8180_hw.h rtl8187_txpower/beta-8187/r8180_hw.h
+--- rtl8187_orig/beta-8187/r8180_hw.h	2006-06-06 04:58:00.000000000 +0200
++++ rtl8187_txpower/beta-8187/r8180_hw.h	2007-02-26 03:05:07.761424588 +0100
+@@ -646,6 +646,7 @@
+ #define FFER_INTR    ((1<<15))
+ #define FFER_GWAKE   ((1<< 4))
+ 
+-
++#define MAX_TX_POWER	27
++#define MIN_TX_POWER	20
+ 
+ #endif
+diff -Naur rtl8187_orig/beta-8187/r8180_rtl8225.c rtl8187_txpower/beta-8187/r8180_rtl8225.c
+--- rtl8187_orig/beta-8187/r8180_rtl8225.c	2006-06-06 04:58:02.000000000 +0200
++++ rtl8187_txpower/beta-8187/r8180_rtl8225.c	2007-02-26 03:05:03.311357459 +0100
+@@ -173,7 +173,7 @@
+ 
+ void rtl8225_set_gain(struct net_device *dev, short gain)
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+ 	rtl8180_set_anaparam(dev, RTL8225_ANAPARAM_ON);
+ 	
+@@ -208,7 +208,7 @@
+ {
+ #ifdef USE_8051_3WIRE
+ 
+-        struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
++        struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv_rtl7(dev);
+         struct usb_device *udev = priv->udev;
+         //u8 bit;
+         u16                             wReg80, wReg82, wReg84;
+@@ -255,7 +255,7 @@
+ 	u16 out,select;
+ 	u8 bit;
+ 	u32 bangdata = (data << 4) | (adr & 0xf);
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+ 	out = read_nic_word(dev, RFPinsOutput) & 0xfff3;
+ 		
+@@ -349,7 +349,7 @@
+ 
+ void rtl8225_SetTXPowerLevel(struct net_device *dev, short ch)
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+ 	int GainIdx;
+ 	int GainSetting;
+@@ -454,9 +454,9 @@
+ 
+ void rtl8225_rf_set_chan(struct net_device *dev, short ch)
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	short gset = (priv->ieee80211->state == IEEE80211_LINKED &&
+-		ieee80211_is_54g(priv->ieee80211->current_network)) ||
++		ieee80211_is_54g_rtl7(priv->ieee80211->current_network)) ||
+ 		priv->ieee80211->iw_mode == IW_MODE_MONITOR;
+ 	
+ 	rtl8225_SetTXPowerLevel(dev, ch);
+@@ -474,7 +474,7 @@
+ 		write_nic_byte(dev,DIFS,0x24); //DIFS: 36 
+ 	
+ 	if(priv->ieee80211->state == IEEE80211_LINKED &&
+-		ieee80211_is_shortslot(priv->ieee80211->current_network))
++		ieee80211_is_shortslot_rtl7(priv->ieee80211->current_network))
+ 		write_nic_byte(dev,SLOT,0x9); //SLOT: 9
+ 		
+ 	else
+@@ -546,7 +546,7 @@
+ 
+ void rtl8225_rf_init(struct net_device *dev) 
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	int i;
+ 	short channel = 1;
+ 	u16 brsr;
+diff -Naur rtl8187_orig/beta-8187/r8180_rtl8225.h rtl8187_txpower/beta-8187/r8180_rtl8225.h
+--- rtl8187_orig/beta-8187/r8180_rtl8225.h	2006-06-06 04:58:00.000000000 +0200
++++ rtl8187_txpower/beta-8187/r8180_rtl8225.h	2007-02-26 03:05:07.811425342 +0100
+@@ -44,3 +44,5 @@
+ extern u32 rtl8225_chan[];
+ 
+ #endif
++
++void rtl8225z2_SetTXPowerLevel(struct net_device *dev, short ch);
+diff -Naur rtl8187_orig/beta-8187/r8180_rtl8225z2.c rtl8187_txpower/beta-8187/r8180_rtl8225z2.c
+--- rtl8187_orig/beta-8187/r8180_rtl8225z2.c	2006-06-06 04:58:02.000000000 +0200
++++ rtl8187_txpower/beta-8187/r8180_rtl8225z2.c	2007-02-26 03:05:03.371358364 +0100
+@@ -129,7 +129,7 @@
+ void rtl8225z2_set_gain(struct net_device *dev, short gain)
+ {
+ 	u8* rtl8225_gain;
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+ 	u8 mode = priv->ieee80211->mode;
+ 	
+@@ -153,7 +153,7 @@
+ 
+ void rtl8225_set_gain(struct net_device *dev, short gain)
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+ 	rtl8180_set_anaparam(dev, RTL8225_ANAPARAM_ON);
+ 	
+@@ -280,7 +280,7 @@
+ 	u16 out,select;
+ 	u8 bit;
+ 	u32 bangdata = (data << 4) | (adr & 0xf);
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+ 	out = read_nic_word(dev, RFPinsOutput) & 0xfff3;
+ 		
+@@ -396,7 +396,7 @@
+ #endif
+ void rtl8225z2_SetTXPowerLevel(struct net_device *dev, short ch)
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+ //	int GainIdx;
+ //	int GainSetting;
+@@ -418,7 +418,10 @@
+ 	
+ 	/* CCK power setting */
+ 	if(cck_power_level > max_cck_power_level)
++	{
+ 		cck_power_level = max_cck_power_level;
++		priv->chtxpwr[ch] = max_cck_power_level;
++	}
+ 	
+ 	cck_power_level += priv->cck_txpwr_base;
+ 	
+@@ -489,9 +492,9 @@
+ 
+ void rtl8225z2_rf_set_chan(struct net_device *dev, short ch)
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	short gset = (priv->ieee80211->state == IEEE80211_LINKED &&
+-		ieee80211_is_54g(priv->ieee80211->current_network)) ||
++		ieee80211_is_54g_rtl7(priv->ieee80211->current_network)) ||
+ 		priv->ieee80211->iw_mode == IW_MODE_MONITOR;
+ 	
+ 	rtl8225z2_SetTXPowerLevel(dev, ch);
+@@ -509,7 +512,7 @@
+ 		write_nic_byte(dev,DIFS,0x24); //DIFS: 36 
+ 	
+ 	if(priv->ieee80211->state == IEEE80211_LINKED &&
+-		ieee80211_is_shortslot(priv->ieee80211->current_network))
++		ieee80211_is_shortslot_rtl7(priv->ieee80211->current_network))
+ 		write_nic_byte(dev,SLOT,0x9); //SLOT: 9
+ 		
+ 	else
+@@ -581,7 +584,7 @@
+ #endif
+ void rtl8225z2_rf_init(struct net_device *dev) 
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	int i;
+ 	short channel = 1;
+ 	u16	brsr;
+@@ -958,7 +961,7 @@
+ 
+ void rtl8225z2_rf_set_mode(struct net_device *dev) 
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+ 	if(priv->ieee80211->mode == IEEE_A)
+ 	{
+diff -Naur rtl8187_orig/beta-8187/r8180_wx.c rtl8187_txpower/beta-8187/r8180_wx.c
+--- rtl8187_orig/beta-8187/r8180_wx.c	2006-06-06 04:58:02.000000000 +0200
++++ rtl8187_txpower/beta-8187/r8180_wx.c	2007-02-26 03:05:03.371358364 +0100
+@@ -21,6 +21,7 @@
+ 
+ #include "r8187.h"
+ #include "r8180_hw.h"
++#include "r8180_rtl8225.h"
+ 
+ 
+ #define RATE_COUNT 4
+@@ -32,9 +33,9 @@
+ 			     struct iw_request_info *a,
+ 			     union iwreq_data *wrqu, char *b)
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+-	return ieee80211_wx_get_freq(priv->ieee80211,a,wrqu,b);
++	return ieee80211_wx_get_freq_rtl7(priv->ieee80211,a,wrqu,b);
+ }
+ 
+ 
+@@ -46,7 +47,7 @@
+ 	int *parms = (int *)b;
+ 	int bi = parms[0];
+ 	
+-	struct r8180_priv *priv = ieee80211_priv(dev);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
+ 	
+ 	down(&priv->wx_sem);
+ 	DMESG("setting beacon interval to %x",bi);
+@@ -62,7 +63,7 @@
+ static int r8180_wx_set_forceassociate(struct net_device *dev, struct iw_request_info *aa,
+ 			  union iwreq_data *wrqu, char *extra)
+ {
+-	struct r8180_priv *priv=ieee80211_priv(dev);	
++	struct r8180_priv *priv=ieee80211_priv_rtl7(dev);	
+ 	int *parms = (int *)extra;
+ 	
+ 	priv->ieee80211->force_associate = (parms[0] > 0);
+@@ -75,9 +76,9 @@
+ static int r8180_wx_get_mode(struct net_device *dev, struct iw_request_info *a,
+ 			     union iwreq_data *wrqu, char *b)
+ {
+-	struct r8180_priv *priv=ieee80211_priv(dev);	
++	struct r8180_priv *priv=ieee80211_priv_rtl7(dev);	
+ 
+-	return ieee80211_wx_get_mode(priv->ieee80211,a,wrqu,b);
++	return ieee80211_wx_get_mode_rtl7(priv->ieee80211,a,wrqu,b);
+ }
+ 
+ 
+@@ -86,8 +87,8 @@
+ 			     struct iw_request_info *info, 
+ 			     union iwreq_data *wrqu, char *extra)
+ {
+-	struct r8180_priv *priv = ieee80211_priv(dev);
+-	return ieee80211_wx_get_rate(priv->ieee80211,info,wrqu,extra);
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
++	return ieee80211_wx_get_rate_rtl7(priv->ieee80211,info,wrqu,extra);
+ }
+ 
+ 
+@@ -97,27 +98,83 @@
+ 			     union iwreq_data *wrqu, char *extra)
+ {
+ 	int ret;
+-	struct r8180_priv *priv = ieee80211_priv(dev);	
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);	
+ 	
+ 	down(&priv->wx_sem);
++	ret = ieee80211_wx_set_rate_rtl7(priv->ieee80211,info,wrqu,extra);
++	
++	up(&priv->wx_sem);
++	
++	return ret;
++}
++
++static int r8180_wx_get_txpow(struct net_device *dev,
++			      struct iw_request_info *info,
++			      union iwreq_data *wrqu, char *extra)
++{
++	struct r8180_priv *priv = ieee80211_priv_rtl7(dev);
++	down(&priv->wx_sem);
++	wrqu->power.value = priv->chtxpwr_ofdm[1] + MIN_TX_POWER;
++	wrqu->power.fixed = 1;
++	wrqu->power.flags = IW_TXPOW_DBM;
++	wrqu->power.disabled = 0;
++	up(&priv->wx_sem);
+ 
+-	ret = ieee80211_wx_set_rate(priv->ieee80211,info,wrqu,extra);
++	return 0;
<<Diff was trimmed, longer than 597 lines>>


More information about the pld-cvs-commit mailing list