Updated from Linux LTS 3.10.21 to 3.10.22
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
|
||||
#include <linux/ip.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/udp.h>
|
||||
|
||||
/*
|
||||
*NOTICE!!!: This file will be very big, we should
|
||||
@@ -1066,64 +1067,52 @@ u8 rtl_is_special_data(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx)
|
||||
if (!ieee80211_is_data(fc))
|
||||
return false;
|
||||
|
||||
ip = (const struct iphdr *)(skb->data + mac_hdr_len +
|
||||
SNAP_SIZE + PROTOC_TYPE_SIZE);
|
||||
ether_type = be16_to_cpup((__be16 *)
|
||||
(skb->data + mac_hdr_len + SNAP_SIZE));
|
||||
|
||||
ip = (struct iphdr *)((u8 *) skb->data + mac_hdr_len +
|
||||
SNAP_SIZE + PROTOC_TYPE_SIZE);
|
||||
ether_type = *(u16 *) ((u8 *) skb->data + mac_hdr_len + SNAP_SIZE);
|
||||
/* ether_type = ntohs(ether_type); */
|
||||
switch (ether_type) {
|
||||
case ETH_P_IP: {
|
||||
struct udphdr *udp;
|
||||
u16 src;
|
||||
u16 dst;
|
||||
|
||||
if (ETH_P_IP == ether_type) {
|
||||
if (IPPROTO_UDP == ip->protocol) {
|
||||
struct udphdr *udp = (struct udphdr *)((u8 *) ip +
|
||||
(ip->ihl << 2));
|
||||
if (((((u8 *) udp)[1] == 68) &&
|
||||
(((u8 *) udp)[3] == 67)) ||
|
||||
((((u8 *) udp)[1] == 67) &&
|
||||
(((u8 *) udp)[3] == 68))) {
|
||||
/*
|
||||
* 68 : UDP BOOTP client
|
||||
* 67 : UDP BOOTP server
|
||||
*/
|
||||
RT_TRACE(rtlpriv, (COMP_SEND | COMP_RECV),
|
||||
DBG_DMESG, "dhcp %s !!\n",
|
||||
is_tx ? "Tx" : "Rx");
|
||||
if (ip->protocol != IPPROTO_UDP)
|
||||
return false;
|
||||
udp = (struct udphdr *)((u8 *)ip + (ip->ihl << 2));
|
||||
src = be16_to_cpu(udp->source);
|
||||
dst = be16_to_cpu(udp->dest);
|
||||
|
||||
if (is_tx) {
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->
|
||||
works.lps_change_work);
|
||||
ppsc->last_delaylps_stamp_jiffies =
|
||||
jiffies;
|
||||
}
|
||||
/* If this case involves port 68 (UDP BOOTP client) connecting
|
||||
* with port 67 (UDP BOOTP server), then return true so that
|
||||
* the lowest speed is used.
|
||||
*/
|
||||
if (!((src == 68 && dst == 67) || (src == 67 && dst == 68)))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (ETH_P_ARP == ether_type) {
|
||||
if (is_tx) {
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
ppsc->last_delaylps_stamp_jiffies = jiffies;
|
||||
}
|
||||
|
||||
return true;
|
||||
} else if (ETH_P_PAE == ether_type) {
|
||||
RT_TRACE(rtlpriv, (COMP_SEND | COMP_RECV), DBG_DMESG,
|
||||
"dhcp %s !!\n", is_tx ? "Tx" : "Rx");
|
||||
break;
|
||||
}
|
||||
case ETH_P_ARP:
|
||||
break;
|
||||
case ETH_P_PAE:
|
||||
RT_TRACE(rtlpriv, (COMP_SEND | COMP_RECV), DBG_DMESG,
|
||||
"802.1X %s EAPOL pkt!!\n", is_tx ? "Tx" : "Rx");
|
||||
|
||||
if (is_tx) {
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
ppsc->last_delaylps_stamp_jiffies = jiffies;
|
||||
}
|
||||
|
||||
return true;
|
||||
} else if (ETH_P_IPV6 == ether_type) {
|
||||
/* IPv6 */
|
||||
return true;
|
||||
break;
|
||||
case ETH_P_IPV6:
|
||||
/* TODO: Is this right? */
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
if (is_tx) {
|
||||
rtlpriv->enter_ps = false;
|
||||
schedule_work(&rtlpriv->works.lps_change_work);
|
||||
ppsc->last_delaylps_stamp_jiffies = jiffies;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/*********************************************************
|
||||
|
||||
@@ -143,6 +143,7 @@ static void _rtl88ee_set_fw_clock_on(struct ieee80211_hw *hw,
|
||||
} else {
|
||||
rtlhal->fw_clk_change_in_progress = false;
|
||||
spin_unlock_bh(&rtlpriv->locks.fw_ps_lock);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -778,7 +778,7 @@ static long _rtl92c_signal_scale_mapping(struct ieee80211_hw *hw,
|
||||
|
||||
static void _rtl92c_query_rxphystatus(struct ieee80211_hw *hw,
|
||||
struct rtl_stats *pstats,
|
||||
struct rx_desc_92c *pdesc,
|
||||
struct rx_desc_92c *p_desc,
|
||||
struct rx_fwinfo_92c *p_drvinfo,
|
||||
bool packet_match_bssid,
|
||||
bool packet_toself,
|
||||
@@ -793,11 +793,11 @@ static void _rtl92c_query_rxphystatus(struct ieee80211_hw *hw,
|
||||
u32 rssi, total_rssi = 0;
|
||||
bool in_powersavemode = false;
|
||||
bool is_cck_rate;
|
||||
u8 *pdesc = (u8 *)p_desc;
|
||||
|
||||
is_cck_rate = RX_HAL_IS_CCK_RATE(pdesc);
|
||||
is_cck_rate = RX_HAL_IS_CCK_RATE(p_desc);
|
||||
pstats->packet_matchbssid = packet_match_bssid;
|
||||
pstats->packet_toself = packet_toself;
|
||||
pstats->is_cck = is_cck_rate;
|
||||
pstats->packet_beacon = packet_beacon;
|
||||
pstats->is_cck = is_cck_rate;
|
||||
pstats->RX_SIGQ[0] = -1;
|
||||
|
||||
@@ -303,10 +303,10 @@ out:
|
||||
bool rtl92cu_rx_query_desc(struct ieee80211_hw *hw,
|
||||
struct rtl_stats *stats,
|
||||
struct ieee80211_rx_status *rx_status,
|
||||
u8 *p_desc, struct sk_buff *skb)
|
||||
u8 *pdesc, struct sk_buff *skb)
|
||||
{
|
||||
struct rx_fwinfo_92c *p_drvinfo;
|
||||
struct rx_desc_92c *pdesc = (struct rx_desc_92c *)p_desc;
|
||||
struct rx_desc_92c *p_desc = (struct rx_desc_92c *)pdesc;
|
||||
u32 phystatus = GET_RX_DESC_PHY_STATUS(pdesc);
|
||||
|
||||
stats->length = (u16) GET_RX_DESC_PKT_LEN(pdesc);
|
||||
@@ -345,11 +345,11 @@ bool rtl92cu_rx_query_desc(struct ieee80211_hw *hw,
|
||||
if (phystatus) {
|
||||
p_drvinfo = (struct rx_fwinfo_92c *)(skb->data +
|
||||
stats->rx_bufshift);
|
||||
rtl92c_translate_rx_signal_stuff(hw, skb, stats, pdesc,
|
||||
rtl92c_translate_rx_signal_stuff(hw, skb, stats, p_desc,
|
||||
p_drvinfo);
|
||||
}
|
||||
/*rx_status->qual = stats->signal; */
|
||||
rx_status->signal = stats->rssi + 10;
|
||||
rx_status->signal = stats->recvsignalpower + 10;
|
||||
/*rx_status->noise = -stats->noise; */
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -525,7 +525,7 @@ bool rtl92de_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats,
|
||||
p_drvinfo);
|
||||
}
|
||||
/*rx_status->qual = stats->signal; */
|
||||
rx_status->signal = stats->rssi + 10;
|
||||
rx_status->signal = stats->recvsignalpower + 10;
|
||||
/*rx_status->noise = -stats->noise; */
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -265,7 +265,7 @@ static void _rtl92s_get_txpower_writeval_byregulatory(struct ieee80211_hw *hw,
|
||||
rtlefuse->pwrgroup_ht40
|
||||
[RF90_PATH_A][chnl - 1]) {
|
||||
pwrdiff_limit[i] =
|
||||
rtlefuse->pwrgroup_ht20
|
||||
rtlefuse->pwrgroup_ht40
|
||||
[RF90_PATH_A][chnl - 1];
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -329,7 +329,7 @@ bool rtl92se_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats,
|
||||
}
|
||||
|
||||
/*rx_status->qual = stats->signal; */
|
||||
rx_status->signal = stats->rssi + 10;
|
||||
rx_status->signal = stats->recvsignalpower + 10;
|
||||
/*rx_status->noise = -stats->noise; */
|
||||
|
||||
return true;
|
||||
|
||||
@@ -77,11 +77,7 @@
|
||||
#define RTL_SLOT_TIME_9 9
|
||||
#define RTL_SLOT_TIME_20 20
|
||||
|
||||
/*related with tcp/ip. */
|
||||
/*if_ehther.h*/
|
||||
#define ETH_P_PAE 0x888E /*Port Access Entity (IEEE 802.1X) */
|
||||
#define ETH_P_IP 0x0800 /*Internet Protocol packet */
|
||||
#define ETH_P_ARP 0x0806 /*Address Resolution packet */
|
||||
/*related to tcp/ip. */
|
||||
#define SNAP_SIZE 6
|
||||
#define PROTOC_TYPE_SIZE 2
|
||||
|
||||
|
||||
Reference in New Issue
Block a user