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