* rtl8723ae Weak Signal Problems
[not found] <51072B15.2030805@gmail.com>
@ 2013-01-29 1:53 ` Dylan
2013-01-29 2:58 ` Fwd: " Dylan
2013-01-29 17:38 ` Larry Finger
0 siblings, 2 replies; 5+ messages in thread
From: Dylan @ 2013-01-29 1:53 UTC (permalink / raw)
To: linux-wireless
Quick summary if you don't want to read my rambling:
* Using the compat-drivers-3.8-rc5-1-u package
* Using the rtl8723ae chipset and driver
* Experiencing extremely weak signal
* No clue what information I need to submit - I'm not having any clear
crashes or anything, just a way-weaker-than-appropriate signal with
a driver change being the only issue
* Seems to have problems with Cisco access points (can't connect at
all) but I'm not 100% certain
-----------------------------------------------------------------------------------------------------------------------------------------
So, I have a very specific issue with rtl8723ae chipset. I'm not having
huge expectations of success but figure I'll just send this out there in
the hopes that someone can help me. I'm using the
compat-drivers-3.8-rc5-1-u package (the latest stable as of the time of
this writing) which I'm pleased to see now includes the rtl8723ae
drivers. Not a moment too soon as the hard-found drivers from Realtek no
longer seem to work with the new kernels. Unfortunately, I'm now
experiencing severely reduced signal strength and I'm not sure why. This
adapter didn't have the best signal strength to begin with but was
useable (again after a lot of effort). Now...I had this very same
problem before. Then it was a lot better for the past few months. I'm a
little hazy about what happened in between. I guess I
did...something?...to fix it. I wish I remembered what. At any rate I
now have to move downstairs closer to my router to be able to connect,
and I have a very poor connection from in my room (it disconnected
frequently and while it can reconnect on it's own it's still pretty
annoying and causes a lot of problems).
Small piece of extra information: I actually haven't tested this yet
with the compat driver (I wouldn't expect a change from the Realtek one)
since I just switched to it the other day, but the rtl8723ae Linux
driver (at least the one I was using before from Realtek) seems to be
unable to connect to my school's Cisco access points OR the old Cisco
access point provided by my ISP - I believe it's a problem connecting to
Cisco access points in general since one of the networking teachers at
my school mentioned some newer Windows 8 drivers having similar problems
^ permalink raw reply [flat|nested] 5+ messages in thread
* Fwd: rtl8723ae Weak Signal Problems
2013-01-29 1:53 ` rtl8723ae Weak Signal Problems Dylan
@ 2013-01-29 2:58 ` Dylan
2013-01-29 17:38 ` Larry Finger
1 sibling, 0 replies; 5+ messages in thread
From: Dylan @ 2013-01-29 2:58 UTC (permalink / raw)
To: linux-wireless
Apologies if I'm resending this - I think my mail client got
disconnected as I was trying to send this but I'm not 100% certain.
Quick summary if you don't want to read my rambling:
* Using the compat-drivers-3.8-rc5-1-u package
* Using the rtl8723ae chipset and driver
* Experiencing extremely weak signal
* No clue what information I need to submit - I'm not having any clear
crashes or anything, just a way-weaker-than-appropriate signal with
a driver change being the only issue
* Seems to have problems with Cisco access points (can't connect at
all) but I'm not 100% certain
-----------------------------------------------------------------------------------------------------------------------------------------
So, I have a very specific issue with rtl8723ae chipset. I'm not having
huge expectations of success but figure I'll just send this out there in
the hopes that someone can help me. I'm using the
compat-drivers-3.8-rc5-1-u package (the latest stable as of the time of
this writing) which I'm pleased to see now includes the rtl8723ae
drivers. Not a moment too soon as the hard-found drivers from Realtek no
longer seem to work with the new kernels. Unfortunately, I'm now
experiencing severely reduced signal strength and I'm not sure why. This
adapter didn't have the best signal strength to begin with but was
useable (again after a lot of effort). Now...I had this very same
problem before. Then it was a lot better for the past few months. I'm a
little hazy about what happened in between. I guess I
did...something?...to fix it. I wish I remembered what. At any rate I
now have to move downstairs closer to my router to be able to connect,
and I have a very poor connection from in my room (it disconnected
frequently and while it can reconnect on it's own it's still pretty
annoying and causes a lot of problems).
Small piece of extra information: I actually haven't tested this yet
with the compat driver (I wouldn't expect a change from the Realtek one)
since I just switched to it the other day, but the rtl8723ae Linux
driver (at least the one I was using before from Realtek) seems to be
unable to connect to my school's Cisco access points OR the old Cisco
access point provided by my ISP - I believe it's a problem connecting to
Cisco access points in general since one of the networking teachers at
my school mentioned some newer Windows 8 drivers having similar problems
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: rtl8723ae Weak Signal Problems
2013-01-29 1:53 ` rtl8723ae Weak Signal Problems Dylan
2013-01-29 2:58 ` Fwd: " Dylan
@ 2013-01-29 17:38 ` Larry Finger
[not found] ` <51095E55.3020106@gmail.com>
1 sibling, 1 reply; 5+ messages in thread
From: Larry Finger @ 2013-01-29 17:38 UTC (permalink / raw)
To: Dylan; +Cc: linux-wireless
[-- Attachment #1: Type: text/plain, Size: 1861 bytes --]
On 01/28/2013 07:53 PM, Dylan wrote:
> Quick summary if you don't want to read my rambling:
>
> * Using the compat-drivers-3.8-rc5-1-u package
> * Using the rtl8723ae chipset and driver
> * Experiencing extremely weak signal
> * No clue what information I need to submit - I'm not having any clear
> crashes or anything, just a way-weaker-than-appropriate signal with
> a driver change being the only issue
> * Seems to have problems with Cisco access points (can't connect at
> all) but I'm not 100% certain
Strange that you see weaker signals with the kernel driver than with the vendor
version. I get -56 dBm for the kernel, and -62 dBm for the vendor driver. I am
using the code in the current wireless-testing git repo with some modifications
that are currently under testing. Those changes will bring the kernel drivers up
to the level of the 20130109 vendor driver.
If you want to compile the vendor driver under kernels 3.7 or 3.8, the necessary
patches for rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013 are
attached. The one named fix_build_3.9 is needed to handle the changes now in
wireless-testing that will appear in mainline kernel 3.9; however, once the
official version becomes 3.9, this file will need to be updated as the kernel
version tests will then be wrong.
As to problems in connecting to the Cisco routers, I have no clue. I do not have
access to a Cisco router with 802.11n capability. It might be helpful if you
gave us the models for the routers that are involved. Perhaps some one else in
the list will have had experience. Debugging this issue will probably come down
to capturing the traffic in the air using wireshark, but we will forgo that step
for now. In the meantime, please post the part of the dmesg output that shows
the authentication/association sequence.
Larry
[-- Attachment #2: fix_build_3.7 --]
[-- Type: text/plain, Size: 24926 bytes --]
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/base.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/base.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/base.c
@@ -1438,9 +1438,17 @@ int rtl_send_smps_action(struct ieee8021
/* rtlpriv->cfg->ops->update_rate_tbl(hw, sta, 0); */
info->control.rates[0].idx = 0;
- info->control.sta = sta;
info->band = hw->conf.channel->band;
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
+ info->control.sta = sta;
rtlpriv->intf_ops->adapter_tx(hw, skb, &tcb_desc);
+#else
+/*<delete in kernel end>*/
+ rtlpriv->intf_ops->adapter_tx(hw, sta, skb, &tcb_desc);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
}
return 1;
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/core.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/core.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/core.c
@@ -33,6 +33,10 @@
#include "base.h"
#include "ps.h"
+#ifndef IEEE80211_KEY_FLAG_SW_MGMT
+#define IEEE80211_KEY_FLAG_SW_MGMT IEEE80211_KEY_FLAG_SW_MGMT_TX
+#endif
+
/*mutex for start & stop is must here. */
static int rtl_op_start(struct ieee80211_hw *hw)
{
@@ -112,8 +116,16 @@ err_free:
return NETDEV_TX_OK;
}
#else
-/*<delete in kernel end>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
static void rtl_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
+#else
+/*<delete in kernel end>*/
+static void rtl_op_tx(struct ieee80211_hw *hw,
+ struct ieee80211_tx_control *control,
+ struct sk_buff *skb)
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
@@ -127,9 +139,17 @@ static void rtl_op_tx(struct ieee80211_h
if (!test_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status))
goto err_free;
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
if (!rtlpriv->intf_ops->waitq_insert(hw, skb))
rtlpriv->intf_ops->adapter_tx(hw, skb, &tcb_desc);
-
+#else
+/*<delete in kernel end>*/
+ if (!rtlpriv->intf_ops->waitq_insert(hw, control->sta, skb))
+ rtlpriv->intf_ops->adapter_tx(hw, control->sta, skb, &tcb_desc);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
return;
err_free:
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/pci.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c
@@ -601,7 +601,14 @@ static void _rtl_pci_tx_chk_waitq(struct
if (info->flags & IEEE80211_TX_CTL_AMPDU)
_rtl_pci_update_earlymode_info(hw, skb, &tcb_desc, tid);
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
rtlpriv->intf_ops->adapter_tx(hw, skb, &tcb_desc);
+#else
+/*<delete in kernel end>*/
+ rtlpriv->intf_ops->adapter_tx(hw, NULL, skb, &tcb_desc);
+#endif
+/*<delete in kernel end>*/
}
}
}
@@ -1064,8 +1071,17 @@ static void _rtl_pci_prepare_bcn_tasklet
hdr = rtl_get_hdr(pskb);
info = IEEE80211_SKB_CB(pskb);
pdesc = &ring->desc[0];
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc,
info, pskb, BEACON_QUEUE, &tcb_desc);
+#else
+/*<delete in kernel end>*/
+ rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc,
+ info, NULL, pskb, BEACON_QUEUE, &tcb_desc);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
__skb_queue_tail(&ring->queue, pskb);
@@ -1373,11 +1389,25 @@ int rtl_pci_reset_trx_ring(struct ieee80
return 0;
}
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
static bool rtl_pci_tx_chk_waitq_insert(struct ieee80211_hw *hw, struct sk_buff *skb)
-{
+#else
+/*<delete in kernel end>*/
+static bool rtl_pci_tx_chk_waitq_insert(struct ieee80211_hw *hw,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb)
+{
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
struct rtl_priv *rtlpriv = rtl_priv(hw);
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
struct ieee80211_sta *sta = info->control.sta;
+#endif
+/*<delete in kernel end>*/
struct rtl_sta_info *sta_entry = NULL;
u8 tid = rtl_get_tid(skb);
u16 fc = rtl_get_fc(skb);
@@ -1414,13 +1444,28 @@ static bool rtl_pci_tx_chk_waitq_insert(
return true;
}
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
int rtl_pci_tx(struct ieee80211_hw *hw, struct sk_buff *skb,
struct rtl_tcb_desc *ptcb_desc)
+#else
+/*<delete in kernel end>*/
+static int rtl_pci_tx(struct ieee80211_hw *hw,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb,
+ struct rtl_tcb_desc *ptcb_desc)
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_sta_info *sta_entry = NULL;
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
struct ieee80211_sta *sta = info->control.sta;
+#endif
+/*<delete in kernel end>*/
struct rtl8192_tx_ring *ring;
struct rtl_tx_desc *pdesc;
u8 idx;
@@ -1492,8 +1537,17 @@ int rtl_pci_tx(struct ieee80211_hw *hw,
if (ieee80211_is_data(fc))
rtlpriv->cfg->ops->led_control(hw, LED_CTL_TX);
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc,
info, skb, hw_queue, ptcb_desc);
+#else
+/*<delete in kernel end>*/
+ rtlpriv->cfg->ops->fill_tx_desc(hw, hdr, (u8 *) pdesc,
+ info, sta, skb, hw_queue, ptcb_desc);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
__skb_queue_tail(&ring->queue, skb);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192ce/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/trx.c
@@ -511,17 +511,35 @@ bool rtl92ce_rx_query_desc(struct ieee80
return true;
}
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw,
struct ieee80211_hdr *hdr, u8 *pdesc_tx,
struct ieee80211_tx_info *info, struct sk_buff *skb,
u8 hw_queue, struct rtl_tcb_desc *ptcb_desc)
{
+#else
+/*<delete in kernel end>*/
+void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw,
+ struct ieee80211_hdr *hdr, u8 *pdesc_tx,
+ struct ieee80211_tx_info *info,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb,
+ u8 hw_queue, struct rtl_tcb_desc *ptcb_desc)
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
+{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
bool b_defaultadapter = true;
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
struct ieee80211_sta *sta = info->control.sta;
+#endif
+/*<delete in kernel end>*/
u8 *pdesc = (u8 *) pdesc_tx;
u16 seq_number;
u16 fc = le16_to_cpu(hdr->frame_control);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/trx.h
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192ce/trx.h
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/trx.h
@@ -700,6 +700,13 @@ struct rx_desc_92c {
void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw,
struct ieee80211_hdr *hdr,
u8 * pdesc, struct ieee80211_tx_info *info,
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
+/*<delete in kernel end>*/
+ struct ieee80211_sta *sta,
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
struct sk_buff *skb, u8 hw_queue,
struct rtl_tcb_desc *ptcb_desc);
bool rtl92ce_rx_query_desc(struct ieee80211_hw *hw,
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192de/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/trx.c
@@ -467,17 +467,35 @@ static void _rtl92de_insert_emcontent(st
SET_EARLYMODE_LEN4(virtualaddress, ptcb_desc->empkt_len[4]);
}
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
+void rtl92de_tx_fill_desc(struct ieee80211_hw *hw,
+ struct ieee80211_hdr *hdr,
+ u8 * pdesc, struct ieee80211_tx_info *info,
+ struct sk_buff *skb, u8 hw_queue,
+ struct rtl_tcb_desc *ptcb_desc)
+#else
+/*<delete in kernel end>*/
void rtl92de_tx_fill_desc(struct ieee80211_hw *hw,
struct ieee80211_hdr *hdr, u8 *pdesc_tx,
- struct ieee80211_tx_info *info, struct sk_buff *skb,
+ struct ieee80211_tx_info *info,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb,
u8 hw_queue, struct rtl_tcb_desc *ptcb_desc)
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
struct ieee80211_sta *sta = info->control.sta;
+#endif
+/*<delete in kernel end>*/
u8 *pdesc = (u8 *) pdesc_tx;
u16 seq_number;
u16 fc = le16_to_cpu(hdr->frame_control);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/trx.h
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192de/trx.h
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/trx.h
@@ -711,11 +711,24 @@ struct rx_desc_92d {
} __packed;
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
void rtl92de_tx_fill_desc(struct ieee80211_hw *hw,
struct ieee80211_hdr *hdr,
u8 * pdesc, struct ieee80211_tx_info *info,
struct sk_buff *skb, u8 hw_queue,
struct rtl_tcb_desc *ptcb_desc);
+#else
+/*<delete in kernel end>*/
+void rtl92de_tx_fill_desc(struct ieee80211_hw *hw,
+ struct ieee80211_hdr *hdr, u8 *pdesc_tx,
+ struct ieee80211_tx_info *info,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb,
+ u8 hw_queue, struct rtl_tcb_desc *ptcb_desc);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
bool rtl92de_rx_query_desc(struct ieee80211_hw *hw,
struct rtl_stats *status,
struct ieee80211_rx_status *rx_status,
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192se/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/trx.c
@@ -478,16 +478,30 @@ bool rtl92se_rx_query_desc(struct ieee80
return true;
}
-void rtl92se_tx_fill_desc(struct ieee80211_hw *hw,
- struct ieee80211_hdr *hdr, u8 *pdesc_tx,
- struct ieee80211_tx_info *info, struct sk_buff *skb,
- u8 hw_queue, struct rtl_tcb_desc *ptcb_desc)
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
+void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, struct ieee80211_hdr *hdr,
+ u8 *pdesc_tx, struct ieee80211_tx_info *info, struct sk_buff* skb,
+ u8 hw_queue, struct rtl_tcb_desc *ptcb_desc)
+#else
+void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, struct ieee80211_hdr *hdr,
+ u8 *pdesc_tx, struct ieee80211_tx_info *info,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb, u8 hw_queue,
+ struct rtl_tcb_desc *ptcb_desc)
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
struct ieee80211_sta *sta = info->control.sta;
+#endif
+/*<delete in kernel end>*/
u8 *pdesc = (u8 *) pdesc_tx;
u16 seq_number;
u16 fc = le16_to_cpu(hdr->frame_control);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/trx.h
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192se/trx.h
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/trx.h
@@ -27,9 +27,20 @@
#ifndef __REALTEK_PCI92SE_TRX_H__
#define __REALTEK_PCI92SE_TRX_H__
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, struct ieee80211_hdr *hdr,
u8 *pdesc, struct ieee80211_tx_info *info, struct sk_buff* skb,
u8 hw_queue, struct rtl_tcb_desc *ptcb_desc);
+#else
+void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, struct ieee80211_hdr *hdr,
+ u8 *pdesc, struct ieee80211_tx_info *info,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb, u8 hw_queue,
+ struct rtl_tcb_desc *ptcb_desc);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, bool b_firstseg,
bool b_lastseg, struct sk_buff *skb);
bool rtl92se_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *status,
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/wifi.h
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/wifi.h
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/wifi.h
@@ -106,6 +106,9 @@
#define MAX_CHNL_GROUP_24G 6
#define MAX_CHNL_GROUP_5G 14
+#ifndef RX_FLAG_MACTIME_MPDU
+#define RX_FLAG_MACTIME_MPDU RX_FLAG_MACTIME_START
+#endif
struct txpower_info_2g {
u8 index_cck_base[MAX_RF_PATH][MAX_CHNL_GROUP_24G];
@@ -1586,6 +1589,13 @@ struct rtl_hal_ops {
void (*fill_tx_desc) (struct ieee80211_hw * hw,
struct ieee80211_hdr * hdr, u8 * pdesc_tx,
struct ieee80211_tx_info * info,
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
+/*<delete in kernel end>*/
+ struct ieee80211_sta *sta,
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
struct sk_buff * skb, u8 hw_queue,
struct rtl_tcb_desc *ptcb_desc);
void (*fill_tx_cmddesc) (struct ieee80211_hw * hw, u8 * pdesc,
@@ -1637,11 +1647,32 @@ struct rtl_intf_ops {
bool (*check_buddy_priv)(struct ieee80211_hw *hw,
struct rtl_priv **buddy_priv);
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
int (*adapter_tx) (struct ieee80211_hw * hw, struct sk_buff * skb,
struct rtl_tcb_desc *ptcb_desc);
+#else
+/*<delete in kernel end>*/
+ int (*adapter_tx) (struct ieee80211_hw *hw,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb,
+ struct rtl_tcb_desc *ptcb_desc);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
void (*flush)(struct ieee80211_hw *hw, bool drop);
int (*reset_trx_ring) (struct ieee80211_hw * hw);
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
bool (*waitq_insert) (struct ieee80211_hw *hw, struct sk_buff *skb);
+#else
+/*<delete in kernel end>*/
+ bool (*waitq_insert) (struct ieee80211_hw *hw,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
/*pci */
void (*disable_aspm) (struct ieee80211_hw * hw);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/fw.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8188ee/fw.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/fw.c
@@ -228,7 +228,7 @@ int rtl88e_download_fw(struct ieee80211_
RT_TRACE(COMP_FW, DBG_DMESG,
("Firmware Version(%d), Signature(%#x),Size(%d)\n",
pfwheader->version, pfwheader->signature,
- sizeof(struct rtl92c_firmware_header)));
+ (int)sizeof(struct rtl92c_firmware_header)));
pfwdata = pfwdata + sizeof(struct rtl92c_firmware_header);
fwsize = fwsize - sizeof(struct rtl92c_firmware_header);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8188ee/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/trx.c
@@ -628,16 +628,33 @@ bool rtl88ee_rx_query_desc(struct ieee80
return true;
}
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
void rtl88ee_tx_fill_desc(struct ieee80211_hw *hw,
struct ieee80211_hdr *hdr, u8 *pdesc_tx,
struct ieee80211_tx_info *info, struct sk_buff *skb,
u8 hw_queue, struct rtl_tcb_desc *ptcb_desc)
+#else
+/*<delete in kernel end>*/
+void rtl88ee_tx_fill_desc(struct ieee80211_hw *hw,
+ struct ieee80211_hdr *hdr, u8 *pdesc_tx,
+ struct ieee80211_tx_info *info,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb,
+ u8 hw_queue, struct rtl_tcb_desc *ptcb_desc)
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
struct ieee80211_sta *sta = info->control.sta;
+#endif
+/*<delete in kernel end>*/
u8 *pdesc = (u8 *) pdesc_tx;
u16 seq_number;
u16 fc = le16_to_cpu(hdr->frame_control);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/trx.h
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8188ee/trx.h
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/trx.h
@@ -779,11 +779,23 @@ struct rx_desc_88e {
} __packed;
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
void rtl88ee_tx_fill_desc(struct ieee80211_hw *hw,
- struct ieee80211_hdr *hdr,
- u8 * pdesc, struct ieee80211_tx_info *info,
- struct sk_buff *skb, u8 hw_queue,
- struct rtl_tcb_desc *ptcb_desc);
+ struct ieee80211_hdr *hdr, u8 *pdesc_tx,
+ struct ieee80211_tx_info *info, struct sk_buff *skb,
+ u8 hw_queue, struct rtl_tcb_desc *ptcb_desc);
+#else
+/*<delete in kernel end>*/
+void rtl88ee_tx_fill_desc(struct ieee80211_hw *hw,
+ struct ieee80211_hdr *hdr, u8 *pdesc_tx,
+ struct ieee80211_tx_info *info,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb,
+ u8 hw_queue, struct rtl_tcb_desc *ptcb_desc);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
bool rtl88ee_rx_query_desc(struct ieee80211_hw *hw,
struct rtl_stats *status,
struct ieee80211_rx_status *rx_status,
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/fw.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192ce/fw.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/fw.c
@@ -239,7 +239,7 @@ int rtl92c_download_fw(struct ieee80211_
RT_TRACE(COMP_FW, DBG_DMESG,
("Firmware Version(%d), Signature(%#x),Size(%d)\n",
pfwheader->version, pfwheader->signature,
- sizeof(struct rtl92c_firmware_header)));
+ (int)sizeof(struct rtl92c_firmware_header)));
pfwdata = pfwdata + sizeof(struct rtl92c_firmware_header);
fwsize = fwsize - sizeof(struct rtl92c_firmware_header);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/phy.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192de/phy.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/phy.c
@@ -3001,8 +3001,8 @@ void rtl92d_phy_reset_iqk_result(struct
RT_TRACE(COMP_INIT, DBG_LOUD,
("settings regs %d default regs %d\n",
- sizeof(rtlphy->iqk_matrix_regsetting) /
- sizeof(struct iqk_matrix_regs),
+ (int)(sizeof(rtlphy->iqk_matrix_regsetting) /
+ sizeof(struct iqk_matrix_regs)),
IQK_MATRIX_REG_NUM));
/* 0xe94, 0xe9c, 0xea4, 0xeac, 0xeb4, 0xebc, 0xec4, 0xecc */
for (i = 0; i < IQK_MATRIX_SETTINGS_NUM; i++) {
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/fw.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8723e/fw.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/fw.c
@@ -204,7 +204,7 @@ int rtl8723e_download_fw(struct ieee8021
RT_TRACE(COMP_FW, DBG_DMESG,
("Firmware Version(%d), Signature(%#x),Size(%d)\n",
pfwheader->version, pfwheader->signature,
- sizeof(struct rtl8723e_firmware_header)));
+ (int)sizeof(struct rtl8723e_firmware_header)));
pfwdata = pfwdata + sizeof(struct rtl8723e_firmware_header);
fwsize = fwsize - sizeof(struct rtl8723e_firmware_header);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8723e/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/trx.c
@@ -510,10 +510,23 @@ bool rtl8723e_rx_query_desc(struct ieee8
return true;
}
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
void rtl8723e_tx_fill_desc(struct ieee80211_hw *hw,
struct ieee80211_hdr *hdr, u8 *pdesc_tx,
struct ieee80211_tx_info *info, struct sk_buff *skb,
u8 hw_queue, struct rtl_tcb_desc *ptcb_desc)
+#else
+/*<delete in kernel end>*/
+void rtl8723e_tx_fill_desc(struct ieee80211_hw *hw,
+ struct ieee80211_hdr *hdr, u8 *pdesc_tx,
+ struct ieee80211_tx_info *info,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb,
+ u8 hw_queue, struct rtl_tcb_desc *ptcb_desc)
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
@@ -521,7 +534,11 @@ void rtl8723e_tx_fill_desc(struct ieee80
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
bool b_defaultadapter = true;
// bool b_trigger_ac = false;
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
struct ieee80211_sta *sta = info->control.sta;
+#endif
+/*<delete in kernel end>*/
u8 *pdesc = (u8 *) pdesc_tx;
u16 seq_number;
u16 fc = le16_to_cpu(hdr->frame_control);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/trx.h
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8723e/trx.h
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/trx.h
@@ -705,11 +705,24 @@ struct rx_desc_8723e {
} __packed;
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
void rtl8723e_tx_fill_desc(struct ieee80211_hw *hw,
struct ieee80211_hdr *hdr,
u8 * pdesc, struct ieee80211_tx_info *info,
struct sk_buff *skb, u8 hw_queue,
struct rtl_tcb_desc *ptcb_desc);
+#else
+/*<delete in kernel end>*/
+void rtl8723e_tx_fill_desc(struct ieee80211_hw *hw,
+ struct ieee80211_hdr *hdr,
+ u8 *pdesc, struct ieee80211_tx_info *info,
+ struct ieee80211_sta *sta,
+ struct sk_buff *skb, u8 hw_queue,
+ struct rtl_tcb_desc *ptcb_desc);
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
bool rtl8723e_rx_query_desc(struct ieee80211_hw *hw,
struct rtl_stats *status,
struct ieee80211_rx_status *rx_status,
[-- Attachment #3: fix_build_3.8 --]
[-- Type: text/plain, Size: 6748 bytes --]
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8723e/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/trx.c
@@ -554,6 +554,11 @@ void rtl8723e_tx_fill_desc(struct ieee80
PCI_DMA_TODEVICE);
u8 bw_40 = 0;
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
if (mac->opmode == NL80211_IFTYPE_STATION) {
bw_40 = mac->bw_40;
} else if (mac->opmode == NL80211_IFTYPE_AP ||
@@ -733,6 +738,11 @@ void rtl8723e_tx_fill_cmddesc(struct iee
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data);
u16 fc = le16_to_cpu(hdr->frame_control);
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE);
if (b_firstseg)
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192se/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/trx.c
@@ -514,6 +514,11 @@ void rtl92se_tx_fill_desc(struct ieee802
PCI_DMA_TODEVICE);
u8 bw_40 = 0;
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
if (mac->opmode == NL80211_IFTYPE_STATION) {
bw_40 = mac->bw_40;
} else if (mac->opmode == NL80211_IFTYPE_AP ||
@@ -690,6 +695,7 @@ void rtl92se_tx_fill_desc(struct ieee802
void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc,
bool b_firstseg, bool b_lastseg, struct sk_buff *skb)
{
+ struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
struct rtl_tcb_desc *tcb_desc = (struct rtl_tcb_desc *)(skb->cb);
@@ -697,7 +703,12 @@ void rtl92se_tx_fill_cmddesc(struct ieee
dma_addr_t mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len,
PCI_DMA_TODEVICE);
- /* Clear all status */
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
+ /* Clear all status */
CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_CMDDESC_SIZE_RTL8192S);
/* This bit indicate this packet is used for FW download. */
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192de/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/trx.c
@@ -526,6 +526,11 @@ void rtl92de_tx_fill_desc(struct ieee802
buf_len = skb->len;
mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len,
PCI_DMA_TODEVICE);
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_92d));
if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) {
b_firstseg = true;
@@ -699,6 +704,11 @@ void rtl92de_tx_fill_cmddesc(struct ieee
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data);
u16 fc = le16_to_cpu(hdr->frame_control);
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE);
if (b_firstseg)
SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192ce/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/trx.c
@@ -553,8 +553,14 @@ void rtl92ce_tx_fill_desc(struct ieee802
dma_addr_t mapping = pci_map_single(rtlpci->pdev,
skb->data, skb->len,
PCI_DMA_TODEVICE);
+
u8 bw_40 = 0;
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
if (mac->opmode == NL80211_IFTYPE_STATION) {
bw_40 = mac->bw_40;
} else if (mac->opmode == NL80211_IFTYPE_AP ||
@@ -733,6 +739,11 @@ void rtl92ce_tx_fill_cmddesc(struct ieee
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data);
u16 fc = le16_to_cpu(hdr->frame_control);
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE);
if (b_firstseg)
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/pci.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c
@@ -742,6 +742,8 @@ static int _rtl_pci_init_one_rxdesc(stru
skb_tail_pointer(skb), rtlpci->rxbuffersize,
PCI_DMA_FROMDEVICE);
bufferaddress = cpu_to_le32(*((dma_addr_t *) skb->cb));
+ if (pci_dma_mapping_error(rtlpci->pdev, bufferaddress))
+ return 0;
rtlpriv->cfg->ops->set_desc((u8 *) entry, false, HW_DESC_RXBUFF_ADDR,
(u8 *) & bufferaddress);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/trx.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8188ee/trx.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/trx.c
@@ -686,6 +686,11 @@ void rtl88ee_tx_fill_desc(struct ieee802
buf_len = skb->len;
mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len,
PCI_DMA_TODEVICE);
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_88e));
if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) {
b_firstseg = true;
@@ -858,6 +863,11 @@ void rtl88ee_tx_fill_cmddesc(struct ieee
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data);
u16 fc = le16_to_cpu(hdr->frame_control);
+ if (pci_dma_mapping_error(rtlpci->pdev, mapping)) {
+ RT_TRACE(COMP_SEND, DBG_TRACE,
+ ("DMA mapping error"));
+ return;
+ }
CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE);
if (b_firstseg)
[-- Attachment #4: fix_build_3.9 --]
[-- Type: text/plain, Size: 9086 bytes --]
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/core.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/core.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/core.c
@@ -1004,7 +1004,13 @@ static int rtl_op_ampdu_action(struct ie
("IEEE80211_AMPDU_TX_START: TID:%d\n", tid));
return rtl_tx_agg_start(hw, vif, sta, tid, ssn);
break;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
case IEEE80211_AMPDU_TX_STOP:
+#else
+ case IEEE80211_AMPDU_TX_STOP_CONT:
+ case IEEE80211_AMPDU_TX_STOP_FLUSH:
+ case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT:
+#endif
RT_TRACE(COMP_MAC80211, DBG_TRACE,
("IEEE80211_AMPDU_TX_STOP: TID:%d\n", tid));
return rtl_tx_agg_stop(hw, vif, sta, tid);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/regd.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/regd.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/regd.c
@@ -158,8 +158,6 @@ static void _rtl_reg_apply_beaconing_fla
const struct ieee80211_reg_rule *reg_rule;
struct ieee80211_channel *ch;
unsigned int i;
- u32 bandwidth = 0;
- int r;
for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
@@ -174,9 +172,20 @@ static void _rtl_reg_apply_beaconing_fla
(ch->flags & IEEE80211_CHAN_RADAR))
continue;
if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) {
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
+ int r;
+ u32 bandwidth = 0;
r = freq_reg_info(wiphy, ch->center_freq,
bandwidth, ®_rule);
if (r)
+#else
+/*<delete in kernel end>*/
+ reg_rule = freq_reg_info(wiphy, ch->center_freq);
+ if (IS_ERR(reg_rule))
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
continue;
/*
@@ -210,8 +219,12 @@ static void _rtl_reg_apply_active_scan_f
struct ieee80211_supported_band *sband;
struct ieee80211_channel *ch;
const struct ieee80211_reg_rule *reg_rule;
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
u32 bandwidth = 0;
int r;
+#endif
+/*<delete in kernel end>*/
if (!wiphy->bands[IEEE80211_BAND_2GHZ])
return;
@@ -239,16 +252,34 @@ static void _rtl_reg_apply_active_scan_f
*/
ch = &sband->channels[11]; /* CH 12 */
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule);
if (!r) {
+#else
+/*<delete in kernel end>*/
+ reg_rule = freq_reg_info(wiphy, ch->center_freq);
+ if (!IS_ERR(reg_rule)) {
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN))
if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN;
}
ch = &sband->channels[12]; /* CH 13 */
+/*<delete in kernel start>*/
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule);
if (!r) {
+#else
+/*<delete in kernel end>*/
+ reg_rule = freq_reg_info(wiphy, ch->center_freq);
+ if (!IS_ERR(reg_rule)) {
+/*<delete in kernel start>*/
+#endif
+/*<delete in kernel end>*/
if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN))
if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN)
ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN;
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/pci.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c
@@ -1896,8 +1896,8 @@ static bool _rtl_pci_find_adapter(struct
* hw pointer in rtl_pci_get_hw_pointer */
struct ieee80211_hw *hw_export = NULL;
-int __devinit rtl_pci_probe(struct pci_dev *pdev,
- const struct pci_device_id *id)
+int rtl_pci_probe(struct pci_dev *pdev,
+ const struct pci_device_id *id)
{
struct ieee80211_hw *hw = NULL;
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.h
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/pci.h
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.h
@@ -244,8 +244,8 @@ int rtl_pci_reset_trx_ring(struct ieee80
extern struct rtl_intf_ops rtl_pci_ops;
-int __devinit rtl_pci_probe(struct pci_dev *pdev,
- const struct pci_device_id *id);
+int rtl_pci_probe(struct pci_dev *pdev,
+ const struct pci_device_id *id);
void rtl_pci_disconnect(struct pci_dev *pdev);
int rtl_pci_suspend(struct device *dev);
int rtl_pci_resume(struct device *dev);
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/sw.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8188ee/sw.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/sw.c
@@ -369,7 +369,7 @@ struct rtl_hal_cfg rtl88ee_hal_cfg = {
.maps[RTL_RC_HT_RATEMCS15] = DESC92C_RATEMCS15,
};
-static struct pci_device_id rtl88ee_pci_ids[] __devinitdata = {
+static struct pci_device_id rtl88ee_pci_ids[] = {
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8179, rtl88ee_hal_cfg)},
{},
};
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/sw.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192ce/sw.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/sw.c
@@ -336,7 +336,7 @@ struct rtl_hal_cfg rtl92ce_hal_cfg = {
.maps[RTL_RC_HT_RATEMCS15] = DESC92C_RATEMCS15,
};
-static struct pci_device_id rtl92ce_pci_ids[] __devinitdata = {
+static struct pci_device_id rtl92ce_pci_ids[] = {
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8191, rtl92ce_hal_cfg)},
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8178, rtl92ce_hal_cfg)},
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8177, rtl92ce_hal_cfg)},
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/sw.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192de/sw.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/sw.c
@@ -188,7 +188,7 @@ int rtl92d_init_sw_vars(struct ieee80211
release_firmware(firmware);
/* for early mode */
- rtlpriv->rtlhal.b_earlymode_eanble = true;
+ rtlpriv->rtlhal.b_earlymode_eanble = false;
rtlpriv->rtlhal.max_earlymode_num = 5;
for (tid = 0; tid < 8; tid++)
skb_queue_head_init(&rtlpriv->mac80211.skb_waitq[tid]);
@@ -356,7 +356,7 @@ struct rtl_hal_cfg rtl92de_hal_cfg = {
.maps[RTL_RC_HT_RATEMCS15] = DESC92D_RATEMCS15,
};
-struct pci_device_id rtl92de_pci_ids[] __devinitdata = {
+struct pci_device_id rtl92de_pci_ids[] = {
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8193, rtl92de_hal_cfg)},
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x002B, rtl92de_hal_cfg)},
{},
@@ -412,13 +412,13 @@ static int __init rtl92de_module_init(vo
{
int ret = 0;
+ spin_lock_init(&globalmutex_for_poweron_and_poweroff);
+ spin_lock_init(&globalmutex_for_fwdownload);
+ spin_lock_init(&globalmutex_for_power_and_efuse);
ret = pci_register_driver(&rtl92de_driver);
if (ret)
RT_ASSERT(false, (": No device found\n"));
- spin_lock_init(&globalmutex_for_poweron_and_poweroff);
- spin_lock_init(&globalmutex_for_fwdownload);
- spin_lock_init(&globalmutex_for_power_and_efuse);
return ret;
}
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/sw.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192se/sw.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/sw.c
@@ -363,7 +363,7 @@ struct rtl_hal_cfg rtl92se_hal_cfg = {
.maps[RTL_RC_HT_RATEMCS15] = DESC92S_RATEMCS15,
};
-struct pci_device_id rtl92se_pci_ids[] __devinitdata = {
+struct pci_device_id rtl92se_pci_ids[] = {
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8192, rtl92se_hal_cfg)},
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8171, rtl92se_hal_cfg)},
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8172, rtl92se_hal_cfg)},
Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/sw.c
===================================================================
--- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8723e/sw.c
+++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/sw.c
@@ -356,7 +356,7 @@ struct rtl_hal_cfg rtl8723e_hal_cfg = {
.maps[RTL_RC_HT_RATEMCS15] = DESC92C_RATEMCS15,
};
-static struct pci_device_id rtl8723e_pci_ids[] __devinitdata = {
+static struct pci_device_id rtl8723e_pci_ids[] = {
{RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8723, rtl8723e_hal_cfg)},
{},
};
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: rtl8723ae Weak Signal Problems
[not found] ` <51095E55.3020106@gmail.com>
@ 2013-01-30 20:30 ` Larry Finger
2013-02-04 15:54 ` Dylan
0 siblings, 1 reply; 5+ messages in thread
From: Larry Finger @ 2013-01-30 20:30 UTC (permalink / raw)
To: Dylan; +Cc: linux-wireless
On 01/30/2013 11:54 AM, Dylan wrote:
Please do not drop the Cc to wireless.
> I apologize for the late response and limited information.
>
> The patch doesn't work for me - same problems as before, i.e. the patch doesn't
> seem to have changed anything. I attached a log. I expect you can make more
> sense of it than I.
>
> I can give you the model number of only one of the router/access points - the
> Cisco DPC3825 which I have. Unfortunately I can't offer much analysis of it as
> it's in modem only mode now and it's not very practical to reactivate it as an
> access point at this time. I could try to find out what my school is using as well.
>
> I've noticed that with the compat wireless drivers I'm ALSO experiencing similar
> problems with an RTL8188CU card. I expect that's relevant. Funnily enough I have
> three wireless cards on hand and all of them are some form of Realtek card.
The vendor driver you are using,
/rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/, is relatively old. My
patches were for rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013,
however, since I wrote earlier, I found
rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0011.0128.2013, which you will
find on the Realtek web site under the RTL8188CE listing for Linux. That one
includes my feedback to Realtek about the 01092013 version, and it should build
on mainline kernels through 3.8, but not the current wireless-testing, but I
doubt that you are using that tree. With that driver, my RTL8723AE got
throughput of 60-70 Mbps for both RX and TX. I did have an unexplained kernel
panic while running that driver, thus there might be a severe bug in it. I don't
know if it is rtl8723e, but that is the only panic that I have had with 3.8-rc4.
The driver for the RTL8188CU/RTL8192CU is a mess. Unfortunately, I am not
getting musch help from Realtek. For that reason, I am concentrating on the CE
models. Their PCIe group is more responsive.
Larry
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: rtl8723ae Weak Signal Problems
2013-01-30 20:30 ` Larry Finger
@ 2013-02-04 15:54 ` Dylan
0 siblings, 0 replies; 5+ messages in thread
From: Dylan @ 2013-02-04 15:54 UTC (permalink / raw)
To: Larry Finger; +Cc: linux-wireless
On 01/30/2013 03:30 PM, Larry Finger wrote:
> On 01/30/2013 11:54 AM, Dylan wrote:
>
> Please do not drop the Cc to wireless.
>
>> I apologize for the late response and limited information.
>>
>> The patch doesn't work for me - same problems as before, i.e. the
>> patch doesn't
>> seem to have changed anything. I attached a log. I expect you can
>> make more
>> sense of it than I.
>>
>> I can give you the model number of only one of the router/access
>> points - the
>> Cisco DPC3825 which I have. Unfortunately I can't offer much analysis
>> of it as
>> it's in modem only mode now and it's not very practical to reactivate
>> it as an
>> access point at this time. I could try to find out what my school is
>> using as well.
>>
>> I've noticed that with the compat wireless drivers I'm ALSO
>> experiencing similar
>> problems with an RTL8188CU card. I expect that's relevant. Funnily
>> enough I have
>> three wireless cards on hand and all of them are some form of Realtek
>> card.
>
> The vendor driver you are using,
> /rtl_92ce_92se_92de_8723ae_linux_mac80211_0006.0514.2012/, is
> relatively old. My patches were for
> rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013, however,
> since I wrote earlier, I found
> rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0011.0128.2013, which
> you will find on the Realtek web site under the RTL8188CE listing for
> Linux. That one includes my feedback to Realtek about the 01092013
> version, and it should build on mainline kernels through 3.8, but not
> the current wireless-testing, but I doubt that you are using that
> tree. With that driver, my RTL8723AE got throughput of 60-70 Mbps for
> both RX and TX. I did have an unexplained kernel panic while running
> that driver, thus there might be a severe bug in it. I don't know if
> it is rtl8723e, but that is the only panic that I have had with 3.8-rc4.
>
> The driver for the RTL8188CU/RTL8192CU is a mess. Unfortunately, I am
> not getting musch help from Realtek. For that reason, I am
> concentrating on the CE models. Their PCIe group is more responsive.
>
> Larry
>
Sorry, just used to hitting Reply and NOT Reply All. It seems possible
that the problem may in fact be with the router. Or partially with the
router anyway. I DO have weak signal problems with the rtl8723ae Linux
drivers and always have but they may not be any worse than they were
before. One of my roommates is having trouble as well (though everyone
else using the router is fine as far as I can tell). I've noticed from
diagnostics with the router that most clients seem to be getting a ping
of about 6ms with occasional spikes, which seems a bit odd (I've
generally had pings of about 2ms with my own routers when I've checked
in the past) but I don't think it's necessarily anything to worry about.
I'll e-mail again if I can confirm with any certainty that it's either
the router or the wireless drivers.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-02-04 15:54 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <51072B15.2030805@gmail.com>
2013-01-29 1:53 ` rtl8723ae Weak Signal Problems Dylan
2013-01-29 2:58 ` Fwd: " Dylan
2013-01-29 17:38 ` Larry Finger
[not found] ` <51095E55.3020106@gmail.com>
2013-01-30 20:30 ` Larry Finger
2013-02-04 15:54 ` Dylan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).