|
@@ -248,7 +248,7 @@ inline void softmac_mgmt_xmit(struct sk_buff *skb, struct ieee80211_device *ieee
|
|
|
|
|
|
/* avoid watchdog triggers */
|
|
/* avoid watchdog triggers */
|
|
netif_trans_update(ieee->dev);
|
|
netif_trans_update(ieee->dev);
|
|
- ieee->softmac_data_hard_start_xmit(skb,ieee->dev,ieee->basic_rate);
|
|
|
|
|
|
+ ieee->softmac_data_hard_start_xmit(skb, ieee->dev, ieee->basic_rate);
|
|
//dev_kfree_skb_any(skb);//edit by thomas
|
|
//dev_kfree_skb_any(skb);//edit by thomas
|
|
}
|
|
}
|
|
|
|
|
|
@@ -265,14 +265,14 @@ inline void softmac_mgmt_xmit(struct sk_buff *skb, struct ieee80211_device *ieee
|
|
ieee->seq_ctrl[0]++;
|
|
ieee->seq_ctrl[0]++;
|
|
|
|
|
|
/* check whether the managed packet queued greater than 5 */
|
|
/* check whether the managed packet queued greater than 5 */
|
|
- if(!ieee->check_nic_enough_desc(ieee->dev,tcb_desc->queue_index) ||\
|
|
|
|
|
|
+ if(!ieee->check_nic_enough_desc(ieee->dev, tcb_desc->queue_index) ||\
|
|
(skb_queue_len(&ieee->skb_waitQ[tcb_desc->queue_index]) != 0) ||\
|
|
(skb_queue_len(&ieee->skb_waitQ[tcb_desc->queue_index]) != 0) ||\
|
|
(ieee->queue_stop) ) {
|
|
(ieee->queue_stop) ) {
|
|
/* insert the skb packet to the management queue */
|
|
/* insert the skb packet to the management queue */
|
|
/* as for the completion function, it does not need
|
|
/* as for the completion function, it does not need
|
|
* to check it any more.
|
|
* to check it any more.
|
|
* */
|
|
* */
|
|
- printk("%s():insert to waitqueue!\n",__func__);
|
|
|
|
|
|
+ printk("%s():insert to waitqueue!\n", __func__);
|
|
skb_queue_tail(&ieee->skb_waitQ[tcb_desc->queue_index], skb);
|
|
skb_queue_tail(&ieee->skb_waitQ[tcb_desc->queue_index], skb);
|
|
} else {
|
|
} else {
|
|
ieee->softmac_hard_start_xmit(skb, ieee->dev);
|
|
ieee->softmac_hard_start_xmit(skb, ieee->dev);
|
|
@@ -299,7 +299,7 @@ softmac_ps_mgmt_xmit(struct sk_buff *skb, struct ieee80211_device *ieee)
|
|
|
|
|
|
/* avoid watchdog triggers */
|
|
/* avoid watchdog triggers */
|
|
netif_trans_update(ieee->dev);
|
|
netif_trans_update(ieee->dev);
|
|
- ieee->softmac_data_hard_start_xmit(skb,ieee->dev,ieee->basic_rate);
|
|
|
|
|
|
+ ieee->softmac_data_hard_start_xmit(skb, ieee->dev, ieee->basic_rate);
|
|
}else{
|
|
}else{
|
|
|
|
|
|
header->seq_ctl = cpu_to_le16(ieee->seq_ctrl[0] << 4);
|
|
header->seq_ctl = cpu_to_le16(ieee->seq_ctrl[0] << 4);
|
|
@@ -347,8 +347,8 @@ static inline struct sk_buff *ieee80211_probe_req(struct ieee80211_device *ieee)
|
|
memcpy(tag, ieee->current_network.ssid, len);
|
|
memcpy(tag, ieee->current_network.ssid, len);
|
|
tag += len;
|
|
tag += len;
|
|
|
|
|
|
- ieee80211_MFIE_Brate(ieee,&tag);
|
|
|
|
- ieee80211_MFIE_Grate(ieee,&tag);
|
|
|
|
|
|
+ ieee80211_MFIE_Brate(ieee, &tag);
|
|
|
|
+ ieee80211_MFIE_Grate(ieee, &tag);
|
|
return skb;
|
|
return skb;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -523,7 +523,7 @@ out:
|
|
static void ieee80211_beacons_start(struct ieee80211_device *ieee)
|
|
static void ieee80211_beacons_start(struct ieee80211_device *ieee)
|
|
{
|
|
{
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
- spin_lock_irqsave(&ieee->beacon_lock,flags);
|
|
|
|
|
|
+ spin_lock_irqsave(&ieee->beacon_lock, flags);
|
|
|
|
|
|
ieee->beacon_txing = 1;
|
|
ieee->beacon_txing = 1;
|
|
ieee80211_send_beacon(ieee);
|
|
ieee80211_send_beacon(ieee);
|
|
@@ -659,7 +659,7 @@ ieee80211_authentication_req(struct ieee80211_network *beacon,
|
|
auth->algorithm = cpu_to_le16(WLAN_AUTH_SHARED_KEY);
|
|
auth->algorithm = cpu_to_le16(WLAN_AUTH_SHARED_KEY);
|
|
else if(ieee->auth_mode == 2)
|
|
else if(ieee->auth_mode == 2)
|
|
auth->algorithm = WLAN_AUTH_OPEN; /* 0x80; */
|
|
auth->algorithm = WLAN_AUTH_OPEN; /* 0x80; */
|
|
- printk("=================>%s():auth->algorithm is %d\n",__func__,auth->algorithm);
|
|
|
|
|
|
+ printk("=================>%s():auth->algorithm is %d\n", __func__, auth->algorithm);
|
|
auth->transaction = cpu_to_le16(ieee->associate_seq);
|
|
auth->transaction = cpu_to_le16(ieee->associate_seq);
|
|
ieee->associate_seq++;
|
|
ieee->associate_seq++;
|
|
|
|
|
|
@@ -714,8 +714,8 @@ static struct sk_buff *ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *d
|
|
tmp_ht_cap_len = sizeof(ieee->pHTInfo->SelfHTCap);
|
|
tmp_ht_cap_len = sizeof(ieee->pHTInfo->SelfHTCap);
|
|
tmp_ht_info_buf = (u8 *)&(ieee->pHTInfo->SelfHTInfo);
|
|
tmp_ht_info_buf = (u8 *)&(ieee->pHTInfo->SelfHTInfo);
|
|
tmp_ht_info_len = sizeof(ieee->pHTInfo->SelfHTInfo);
|
|
tmp_ht_info_len = sizeof(ieee->pHTInfo->SelfHTInfo);
|
|
- HTConstructCapabilityElement(ieee, tmp_ht_cap_buf, &tmp_ht_cap_len,encrypt);
|
|
|
|
- HTConstructInfoElement(ieee,tmp_ht_info_buf,&tmp_ht_info_len, encrypt);
|
|
|
|
|
|
+ HTConstructCapabilityElement(ieee, tmp_ht_cap_buf, &tmp_ht_cap_len, encrypt);
|
|
|
|
+ HTConstructInfoElement(ieee, tmp_ht_info_buf, &tmp_ht_info_len, encrypt);
|
|
|
|
|
|
if (pHTInfo->bRegRT2RTAggregation)
|
|
if (pHTInfo->bRegRT2RTAggregation)
|
|
{
|
|
{
|
|
@@ -742,7 +742,7 @@ static struct sk_buff *ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *d
|
|
return NULL;
|
|
return NULL;
|
|
skb_reserve(skb, ieee->tx_headroom);
|
|
skb_reserve(skb, ieee->tx_headroom);
|
|
beacon_buf = skb_put(skb, (beacon_size - ieee->tx_headroom));
|
|
beacon_buf = skb_put(skb, (beacon_size - ieee->tx_headroom));
|
|
- memcpy (beacon_buf->header.addr1, dest,ETH_ALEN);
|
|
|
|
|
|
+ memcpy (beacon_buf->header.addr1, dest, ETH_ALEN);
|
|
memcpy (beacon_buf->header.addr2, ieee->dev->dev_addr, ETH_ALEN);
|
|
memcpy (beacon_buf->header.addr2, ieee->dev->dev_addr, ETH_ALEN);
|
|
memcpy (beacon_buf->header.addr3, ieee->current_network.bssid, ETH_ALEN);
|
|
memcpy (beacon_buf->header.addr3, ieee->current_network.bssid, ETH_ALEN);
|
|
|
|
|
|
@@ -838,7 +838,7 @@ static struct sk_buff *ieee80211_assoc_resp(struct ieee80211_device *ieee,
|
|
assoc = skb_put(skb, sizeof(struct ieee80211_assoc_response_frame));
|
|
assoc = skb_put(skb, sizeof(struct ieee80211_assoc_response_frame));
|
|
|
|
|
|
assoc->header.frame_ctl = cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP);
|
|
assoc->header.frame_ctl = cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP);
|
|
- memcpy(assoc->header.addr1, dest,ETH_ALEN);
|
|
|
|
|
|
+ memcpy(assoc->header.addr1, dest, ETH_ALEN);
|
|
memcpy(assoc->header.addr3, ieee->dev->dev_addr, ETH_ALEN);
|
|
memcpy(assoc->header.addr3, ieee->dev->dev_addr, ETH_ALEN);
|
|
memcpy(assoc->header.addr2, ieee->dev->dev_addr, ETH_ALEN);
|
|
memcpy(assoc->header.addr2, ieee->dev->dev_addr, ETH_ALEN);
|
|
assoc->capability = cpu_to_le16(ieee->iw_mode == IW_MODE_MASTER ?
|
|
assoc->capability = cpu_to_le16(ieee->iw_mode == IW_MODE_MASTER ?
|
|
@@ -979,7 +979,7 @@ ieee80211_association_req(struct ieee80211_network *beacon,
|
|
int len = 0;
|
|
int len = 0;
|
|
|
|
|
|
crypt = ieee->crypt[ieee->tx_keyidx];
|
|
crypt = ieee->crypt[ieee->tx_keyidx];
|
|
- encrypt = ieee->host_encrypt && crypt && crypt->ops && ((0 == strcmp(crypt->ops->name,"WEP") || wpa_ie_len));
|
|
|
|
|
|
+ encrypt = ieee->host_encrypt && crypt && crypt->ops && ((0 == strcmp(crypt->ops->name, "WEP") || wpa_ie_len));
|
|
|
|
|
|
/* Include High Throuput capability && Realtek proprietary */
|
|
/* Include High Throuput capability && Realtek proprietary */
|
|
if (ieee->pHTInfo->bCurrentHTSupport&&ieee->pHTInfo->bEnableHT)
|
|
if (ieee->pHTInfo->bCurrentHTSupport&&ieee->pHTInfo->bEnableHT)
|
|
@@ -1419,7 +1419,12 @@ inline void ieee80211_softmac_new_net(struct ieee80211_device *ieee, struct ieee
|
|
|
|
|
|
strncpy(ieee->current_network.ssid, tmp_ssid, IW_ESSID_MAX_SIZE);
|
|
strncpy(ieee->current_network.ssid, tmp_ssid, IW_ESSID_MAX_SIZE);
|
|
ieee->current_network.ssid_len = tmp_ssid_len;
|
|
ieee->current_network.ssid_len = tmp_ssid_len;
|
|
- printk(KERN_INFO"Linking with %s,channel:%d, qos:%d, myHT:%d, networkHT:%d\n",ieee->current_network.ssid,ieee->current_network.channel, ieee->current_network.qos_data.supported, ieee->pHTInfo->bEnableHT, ieee->current_network.bssht.bdSupportHT);
|
|
|
|
|
|
+ printk(KERN_INFO"Linking with %s,channel:%d, qos:%d, myHT:%d, networkHT:%d\n",
|
|
|
|
+ ieee->current_network.ssid,
|
|
|
|
+ ieee->current_network.channel,
|
|
|
|
+ ieee->current_network.qos_data.supported,
|
|
|
|
+ ieee->pHTInfo->bEnableHT,
|
|
|
|
+ ieee->current_network.bssht.bdSupportHT);
|
|
|
|
|
|
//ieee->pHTInfo->IOTAction = 0;
|
|
//ieee->pHTInfo->IOTAction = 0;
|
|
HTResetIOTSetting(ieee->pHTInfo);
|
|
HTResetIOTSetting(ieee->pHTInfo);
|
|
@@ -1489,7 +1494,7 @@ static inline u16 auth_parse(struct sk_buff *skb, u8 **challenge, int *chlen)
|
|
struct ieee80211_authentication *a;
|
|
struct ieee80211_authentication *a;
|
|
u8 *t;
|
|
u8 *t;
|
|
if (skb->len < (sizeof(struct ieee80211_authentication) - sizeof(struct ieee80211_info_element))) {
|
|
if (skb->len < (sizeof(struct ieee80211_authentication) - sizeof(struct ieee80211_info_element))) {
|
|
- IEEE80211_DEBUG_MGMT("invalid len in auth resp: %d\n",skb->len);
|
|
|
|
|
|
+ IEEE80211_DEBUG_MGMT("invalid len in auth resp: %d\n", skb->len);
|
|
return 0xcafe;
|
|
return 0xcafe;
|
|
}
|
|
}
|
|
*challenge = NULL;
|
|
*challenge = NULL;
|
|
@@ -1513,12 +1518,12 @@ static int auth_rq_parse(struct sk_buff *skb, u8 *dest)
|
|
struct ieee80211_authentication *a;
|
|
struct ieee80211_authentication *a;
|
|
|
|
|
|
if (skb->len < (sizeof(struct ieee80211_authentication) - sizeof(struct ieee80211_info_element))) {
|
|
if (skb->len < (sizeof(struct ieee80211_authentication) - sizeof(struct ieee80211_info_element))) {
|
|
- IEEE80211_DEBUG_MGMT("invalid len in auth request: %d\n",skb->len);
|
|
|
|
|
|
+ IEEE80211_DEBUG_MGMT("invalid len in auth request: %d\n", skb->len);
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
a = (struct ieee80211_authentication *)skb->data;
|
|
a = (struct ieee80211_authentication *)skb->data;
|
|
|
|
|
|
- memcpy(dest,a->header.addr2, ETH_ALEN);
|
|
|
|
|
|
+ memcpy(dest, a->header.addr2, ETH_ALEN);
|
|
|
|
|
|
if (le16_to_cpu(a->algorithm) != WLAN_AUTH_OPEN)
|
|
if (le16_to_cpu(a->algorithm) != WLAN_AUTH_OPEN)
|
|
return WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG;
|
|
return WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG;
|
|
@@ -1539,7 +1544,7 @@ static short probe_rq_parse(struct ieee80211_device *ieee, struct sk_buff *skb,
|
|
if (skb->len < sizeof (struct rtl_80211_hdr_3addr ))
|
|
if (skb->len < sizeof (struct rtl_80211_hdr_3addr ))
|
|
return -1; /* corrupted */
|
|
return -1; /* corrupted */
|
|
|
|
|
|
- memcpy(src,header->addr2, ETH_ALEN);
|
|
|
|
|
|
+ memcpy(src, header->addr2, ETH_ALEN);
|
|
|
|
|
|
skbend = (u8 *)skb->data + skb->len;
|
|
skbend = (u8 *)skb->data + skb->len;
|
|
|
|
|
|
@@ -1576,7 +1581,7 @@ static int assoc_rq_parse(struct sk_buff *skb, u8 *dest)
|
|
|
|
|
|
a = (struct ieee80211_assoc_request_frame *)skb->data;
|
|
a = (struct ieee80211_assoc_request_frame *)skb->data;
|
|
|
|
|
|
- memcpy(dest,a->header.addr2,ETH_ALEN);
|
|
|
|
|
|
+ memcpy(dest, a->header.addr2, ETH_ALEN);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -1733,7 +1738,7 @@ static inline void ieee80211_sta_ps(struct ieee80211_device *ieee)
|
|
spin_unlock_irqrestore(&ieee->mgmt_tx_lock, flags2);
|
|
spin_unlock_irqrestore(&ieee->mgmt_tx_lock, flags2);
|
|
}
|
|
}
|
|
|
|
|
|
- sleep = ieee80211_sta_ps_sleep(ieee,&th, &tl);
|
|
|
|
|
|
+ sleep = ieee80211_sta_ps_sleep(ieee, &th, &tl);
|
|
/* 2 wake, 1 sleep, 0 do nothing */
|
|
/* 2 wake, 1 sleep, 0 do nothing */
|
|
if(sleep == 0)
|
|
if(sleep == 0)
|
|
goto out;
|
|
goto out;
|
|
@@ -1802,7 +1807,7 @@ void ieee80211_ps_tx_ack(struct ieee80211_device *ieee, short success)
|
|
/* Null frame with PS bit set */
|
|
/* Null frame with PS bit set */
|
|
if (success) {
|
|
if (success) {
|
|
ieee->sta_sleep = 1;
|
|
ieee->sta_sleep = 1;
|
|
- ieee->enter_sleep_state(ieee->dev,ieee->ps_th,ieee->ps_tl);
|
|
|
|
|
|
+ ieee->enter_sleep_state(ieee->dev, ieee->ps_th, ieee->ps_tl);
|
|
}
|
|
}
|
|
/* if the card report not success we can't be sure the AP
|
|
/* if the card report not success we can't be sure the AP
|
|
* has not RXed so we can't assume the AP believe us awake
|
|
* has not RXed so we can't assume the AP believe us awake
|
|
@@ -1953,9 +1958,9 @@ ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb,
|
|
if (ieee->qos_support) {
|
|
if (ieee->qos_support) {
|
|
assoc_resp = (struct ieee80211_assoc_response_frame *)skb->data;
|
|
assoc_resp = (struct ieee80211_assoc_response_frame *)skb->data;
|
|
memset(network, 0, sizeof(*network));
|
|
memset(network, 0, sizeof(*network));
|
|
- if (ieee80211_parse_info_param(ieee,assoc_resp->info_element,\
|
|
|
|
|
|
+ if (ieee80211_parse_info_param(ieee, assoc_resp->info_element,\
|
|
rx_stats->len - sizeof(*assoc_resp),\
|
|
rx_stats->len - sizeof(*assoc_resp),\
|
|
- network,rx_stats)){
|
|
|
|
|
|
+ network, rx_stats)){
|
|
return 1;
|
|
return 1;
|
|
}
|
|
}
|
|
else
|
|
else
|
|
@@ -2088,7 +2093,7 @@ void ieee80211_softmac_xmit(struct ieee80211_txb *txb, struct ieee80211_device *
|
|
#else
|
|
#else
|
|
if ((skb_queue_len(&ieee->skb_waitQ[queue_index]) != 0) ||
|
|
if ((skb_queue_len(&ieee->skb_waitQ[queue_index]) != 0) ||
|
|
#endif
|
|
#endif
|
|
- (!ieee->check_nic_enough_desc(ieee->dev,queue_index)) || \
|
|
|
|
|
|
+ (!ieee->check_nic_enough_desc(ieee->dev, queue_index)) || \
|
|
(ieee->queue_stop)) {
|
|
(ieee->queue_stop)) {
|
|
/* insert the skb packet to the wait queue */
|
|
/* insert the skb packet to the wait queue */
|
|
/* as for the completion function, it does not need
|
|
/* as for the completion function, it does not need
|
|
@@ -2180,7 +2185,7 @@ void ieee80211_wake_queue(struct ieee80211_device *ieee)
|
|
else
|
|
else
|
|
ieee->seq_ctrl[0]++;
|
|
ieee->seq_ctrl[0]++;
|
|
|
|
|
|
- ieee->softmac_data_hard_start_xmit(skb,ieee->dev,ieee->basic_rate);
|
|
|
|
|
|
+ ieee->softmac_data_hard_start_xmit(skb, ieee->dev, ieee->basic_rate);
|
|
//dev_kfree_skb_any(skb);//edit by thomas
|
|
//dev_kfree_skb_any(skb);//edit by thomas
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -3071,7 +3076,7 @@ int ieee80211_wpa_supplicant_ioctl(struct ieee80211_device *ieee, struct iw_poin
|
|
break;
|
|
break;
|
|
|
|
|
|
default:
|
|
default:
|
|
- printk("Unknown WPA supplicant request: %d\n",param->cmd);
|
|
|
|
|
|
+ printk("Unknown WPA supplicant request: %d\n", param->cmd);
|
|
ret = -EOPNOTSUPP;
|
|
ret = -EOPNOTSUPP;
|
|
break;
|
|
break;
|
|
}
|
|
}
|