Commit aa21c004 authored by David Woodhouse's avatar David Woodhouse Committed by David S. Miller

libertas: kill struct lbs_adapter

There seems to be no reason for a separate structure; move it all
into struct lbs_private.
Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f86a93e1
...@@ -432,8 +432,8 @@ u8 lbs_get_scan_type_11d(u8 chan, ...@@ -432,8 +432,8 @@ u8 lbs_get_scan_type_11d(u8 chan,
void lbs_init_11d(struct lbs_private *priv) void lbs_init_11d(struct lbs_private *priv)
{ {
priv->adapter->enable11d = 0; priv->enable11d = 0;
memset(&(priv->adapter->parsed_region_chan), 0, memset(&(priv->parsed_region_chan), 0,
sizeof(struct parsed_region_chan_11d)); sizeof(struct parsed_region_chan_11d));
return; return;
} }
...@@ -447,7 +447,7 @@ static int set_domain_info_11d(struct lbs_private *priv) ...@@ -447,7 +447,7 @@ static int set_domain_info_11d(struct lbs_private *priv)
{ {
int ret; int ret;
if (!priv->adapter->enable11d) { if (!priv->enable11d) {
lbs_deb_11d("dnld domain Info with 11d disabled\n"); lbs_deb_11d("dnld domain Info with 11d disabled\n");
return 0; return 0;
} }
...@@ -469,22 +469,21 @@ static int set_domain_info_11d(struct lbs_private *priv) ...@@ -469,22 +469,21 @@ static int set_domain_info_11d(struct lbs_private *priv)
*/ */
int lbs_set_universaltable(struct lbs_private *priv, u8 band) int lbs_set_universaltable(struct lbs_private *priv, u8 band)
{ {
struct lbs_adapter *adapter = priv->adapter;
u16 size = sizeof(struct chan_freq_power); u16 size = sizeof(struct chan_freq_power);
u16 i = 0; u16 i = 0;
memset(adapter->universal_channel, 0, memset(priv->universal_channel, 0,
sizeof(adapter->universal_channel)); sizeof(priv->universal_channel));
adapter->universal_channel[i].nrcfp = priv->universal_channel[i].nrcfp =
sizeof(channel_freq_power_UN_BG) / size; sizeof(channel_freq_power_UN_BG) / size;
lbs_deb_11d("BG-band nrcfp %d\n", lbs_deb_11d("BG-band nrcfp %d\n",
adapter->universal_channel[i].nrcfp); priv->universal_channel[i].nrcfp);
adapter->universal_channel[i].CFP = channel_freq_power_UN_BG; priv->universal_channel[i].CFP = channel_freq_power_UN_BG;
adapter->universal_channel[i].valid = 1; priv->universal_channel[i].valid = 1;
adapter->universal_channel[i].region = UNIVERSAL_REGION_CODE; priv->universal_channel[i].region = UNIVERSAL_REGION_CODE;
adapter->universal_channel[i].band = band; priv->universal_channel[i].band = band;
i++; i++;
return 0; return 0;
...@@ -505,8 +504,7 @@ int lbs_cmd_802_11d_domain_info(struct lbs_private *priv, ...@@ -505,8 +504,7 @@ int lbs_cmd_802_11d_domain_info(struct lbs_private *priv,
struct cmd_ds_802_11d_domain_info *pdomaininfo = struct cmd_ds_802_11d_domain_info *pdomaininfo =
&cmd->params.domaininfo; &cmd->params.domaininfo;
struct mrvlietypes_domainparamset *domain = &pdomaininfo->domain; struct mrvlietypes_domainparamset *domain = &pdomaininfo->domain;
struct lbs_adapter *adapter = priv->adapter; u8 nr_subband = priv->domainreg.nr_subband;
u8 nr_subband = adapter->domainreg.nr_subband;
lbs_deb_enter(LBS_DEB_11D); lbs_deb_enter(LBS_DEB_11D);
...@@ -523,7 +521,7 @@ int lbs_cmd_802_11d_domain_info(struct lbs_private *priv, ...@@ -523,7 +521,7 @@ int lbs_cmd_802_11d_domain_info(struct lbs_private *priv,
} }
domain->header.type = cpu_to_le16(TLV_TYPE_DOMAIN); domain->header.type = cpu_to_le16(TLV_TYPE_DOMAIN);
memcpy(domain->countrycode, adapter->domainreg.countrycode, memcpy(domain->countrycode, priv->domainreg.countrycode,
sizeof(domain->countrycode)); sizeof(domain->countrycode));
domain->header.len = domain->header.len =
...@@ -531,7 +529,7 @@ int lbs_cmd_802_11d_domain_info(struct lbs_private *priv, ...@@ -531,7 +529,7 @@ int lbs_cmd_802_11d_domain_info(struct lbs_private *priv,
sizeof(domain->countrycode)); sizeof(domain->countrycode));
if (nr_subband) { if (nr_subband) {
memcpy(domain->subband, adapter->domainreg.subband, memcpy(domain->subband, priv->domainreg.subband,
nr_subband * sizeof(struct ieeetypes_subbandset)); nr_subband * sizeof(struct ieeetypes_subbandset));
cmd->size = cpu_to_le16(sizeof(pdomaininfo->action) + cmd->size = cpu_to_le16(sizeof(pdomaininfo->action) +
...@@ -605,24 +603,23 @@ int lbs_parse_dnld_countryinfo_11d(struct lbs_private *priv, ...@@ -605,24 +603,23 @@ int lbs_parse_dnld_countryinfo_11d(struct lbs_private *priv,
struct bss_descriptor * bss) struct bss_descriptor * bss)
{ {
int ret; int ret;
struct lbs_adapter *adapter = priv->adapter;
lbs_deb_enter(LBS_DEB_11D); lbs_deb_enter(LBS_DEB_11D);
if (priv->adapter->enable11d) { if (priv->enable11d) {
memset(&adapter->parsed_region_chan, 0, memset(&priv->parsed_region_chan, 0,
sizeof(struct parsed_region_chan_11d)); sizeof(struct parsed_region_chan_11d));
ret = parse_domain_info_11d(&bss->countryinfo, 0, ret = parse_domain_info_11d(&bss->countryinfo, 0,
&adapter->parsed_region_chan); &priv->parsed_region_chan);
if (ret == -1) { if (ret == -1) {
lbs_deb_11d("error parsing domain_info from AP\n"); lbs_deb_11d("error parsing domain_info from AP\n");
goto done; goto done;
} }
memset(&adapter->domainreg, 0, memset(&priv->domainreg, 0,
sizeof(struct lbs_802_11d_domain_reg)); sizeof(struct lbs_802_11d_domain_reg));
generate_domain_info_11d(&adapter->parsed_region_chan, generate_domain_info_11d(&priv->parsed_region_chan,
&adapter->domainreg); &priv->domainreg);
ret = set_domain_info_11d(priv); ret = set_domain_info_11d(priv);
...@@ -646,18 +643,17 @@ int lbs_parse_dnld_countryinfo_11d(struct lbs_private *priv, ...@@ -646,18 +643,17 @@ int lbs_parse_dnld_countryinfo_11d(struct lbs_private *priv,
int lbs_create_dnld_countryinfo_11d(struct lbs_private *priv) int lbs_create_dnld_countryinfo_11d(struct lbs_private *priv)
{ {
int ret; int ret;
struct lbs_adapter *adapter = priv->adapter;
struct region_channel *region_chan; struct region_channel *region_chan;
u8 j; u8 j;
lbs_deb_enter(LBS_DEB_11D); lbs_deb_enter(LBS_DEB_11D);
lbs_deb_11d("curbssparams.band %d\n", adapter->curbssparams.band); lbs_deb_11d("curbssparams.band %d\n", priv->curbssparams.band);
if (priv->adapter->enable11d) { if (priv->enable11d) {
/* update parsed_region_chan_11; dnld domaininf to FW */ /* update parsed_region_chan_11; dnld domaininf to FW */
for (j = 0; j < ARRAY_SIZE(adapter->region_channel); j++) { for (j = 0; j < ARRAY_SIZE(priv->region_channel); j++) {
region_chan = &adapter->region_channel[j]; region_chan = &priv->region_channel[j];
lbs_deb_11d("%d region_chan->band %d\n", j, lbs_deb_11d("%d region_chan->band %d\n", j,
region_chan->band); region_chan->band);
...@@ -665,28 +661,28 @@ int lbs_create_dnld_countryinfo_11d(struct lbs_private *priv) ...@@ -665,28 +661,28 @@ int lbs_create_dnld_countryinfo_11d(struct lbs_private *priv)
if (!region_chan || !region_chan->valid if (!region_chan || !region_chan->valid
|| !region_chan->CFP) || !region_chan->CFP)
continue; continue;
if (region_chan->band != adapter->curbssparams.band) if (region_chan->band != priv->curbssparams.band)
continue; continue;
break; break;
} }
if (j >= ARRAY_SIZE(adapter->region_channel)) { if (j >= ARRAY_SIZE(priv->region_channel)) {
lbs_deb_11d("region_chan not found, band %d\n", lbs_deb_11d("region_chan not found, band %d\n",
adapter->curbssparams.band); priv->curbssparams.band);
ret = -1; ret = -1;
goto done; goto done;
} }
memset(&adapter->parsed_region_chan, 0, memset(&priv->parsed_region_chan, 0,
sizeof(struct parsed_region_chan_11d)); sizeof(struct parsed_region_chan_11d));
lbs_generate_parsed_region_chan_11d(region_chan, lbs_generate_parsed_region_chan_11d(region_chan,
&adapter-> &priv->
parsed_region_chan); parsed_region_chan);
memset(&adapter->domainreg, 0, memset(&priv->domainreg, 0,
sizeof(struct lbs_802_11d_domain_reg)); sizeof(struct lbs_802_11d_domain_reg));
generate_domain_info_11d(&adapter->parsed_region_chan, generate_domain_info_11d(&priv->parsed_region_chan,
&adapter->domainreg); &priv->domainreg);
ret = set_domain_info_11d(priv); ret = set_domain_info_11d(priv);
......
This diff is collapsed.
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
#include "dev.h" #include "dev.h"
void lbs_association_worker(struct work_struct *work); void lbs_association_worker(struct work_struct *work);
struct assoc_request *lbs_get_association_request(struct lbs_adapter *adapter); struct assoc_request *lbs_get_association_request(struct lbs_private *priv);
void lbs_sync_channel(struct work_struct *work); void lbs_sync_channel(struct work_struct *work);
#endif /* _LBS_ASSOC_H */ #endif /* _LBS_ASSOC_H */
This diff is collapsed.
This diff is collapsed.
...@@ -45,9 +45,9 @@ static ssize_t lbs_dev_info(struct file *file, char __user *userbuf, ...@@ -45,9 +45,9 @@ static ssize_t lbs_dev_info(struct file *file, char __user *userbuf,
ssize_t res; ssize_t res;
pos += snprintf(buf+pos, len-pos, "state = %s\n", pos += snprintf(buf+pos, len-pos, "state = %s\n",
szStates[priv->adapter->connect_status]); szStates[priv->connect_status]);
pos += snprintf(buf+pos, len-pos, "region_code = %02x\n", pos += snprintf(buf+pos, len-pos, "region_code = %02x\n",
(u32) priv->adapter->regioncode); (u32) priv->regioncode);
res = simple_read_from_buffer(userbuf, count, ppos, buf, pos); res = simple_read_from_buffer(userbuf, count, ppos, buf, pos);
...@@ -70,8 +70,8 @@ static ssize_t lbs_getscantable(struct file *file, char __user *userbuf, ...@@ -70,8 +70,8 @@ static ssize_t lbs_getscantable(struct file *file, char __user *userbuf,
pos += snprintf(buf+pos, len-pos, pos += snprintf(buf+pos, len-pos,
"# | ch | rssi | bssid | cap | Qual | SSID \n"); "# | ch | rssi | bssid | cap | Qual | SSID \n");
mutex_lock(&priv->adapter->lock); mutex_lock(&priv->lock);
list_for_each_entry (iter_bss, &priv->adapter->network_list, list) { list_for_each_entry (iter_bss, &priv->network_list, list) {
u16 ibss = (iter_bss->capability & WLAN_CAPABILITY_IBSS); u16 ibss = (iter_bss->capability & WLAN_CAPABILITY_IBSS);
u16 privacy = (iter_bss->capability & WLAN_CAPABILITY_PRIVACY); u16 privacy = (iter_bss->capability & WLAN_CAPABILITY_PRIVACY);
u16 spectrum_mgmt = (iter_bss->capability & WLAN_CAPABILITY_SPECTRUM_MGMT); u16 spectrum_mgmt = (iter_bss->capability & WLAN_CAPABILITY_SPECTRUM_MGMT);
...@@ -90,7 +90,7 @@ static ssize_t lbs_getscantable(struct file *file, char __user *userbuf, ...@@ -90,7 +90,7 @@ static ssize_t lbs_getscantable(struct file *file, char __user *userbuf,
numscansdone++; numscansdone++;
} }
mutex_unlock(&priv->adapter->lock); mutex_unlock(&priv->lock);
res = simple_read_from_buffer(userbuf, count, ppos, buf, pos); res = simple_read_from_buffer(userbuf, count, ppos, buf, pos);
...@@ -118,12 +118,12 @@ static ssize_t lbs_sleepparams_write(struct file *file, ...@@ -118,12 +118,12 @@ static ssize_t lbs_sleepparams_write(struct file *file,
res = -EFAULT; res = -EFAULT;
goto out_unlock; goto out_unlock;
} }
priv->adapter->sp.sp_error = p1; priv->sp.sp_error = p1;
priv->adapter->sp.sp_offset = p2; priv->sp.sp_offset = p2;
priv->adapter->sp.sp_stabletime = p3; priv->sp.sp_stabletime = p3;
priv->adapter->sp.sp_calcontrol = p4; priv->sp.sp_calcontrol = p4;
priv->adapter->sp.sp_extsleepclk = p5; priv->sp.sp_extsleepclk = p5;
priv->adapter->sp.sp_reserved = p6; priv->sp.sp_reserved = p6;
res = lbs_prepare_and_send_command(priv, res = lbs_prepare_and_send_command(priv,
CMD_802_11_SLEEP_PARAMS, CMD_802_11_SLEEP_PARAMS,
...@@ -144,7 +144,6 @@ static ssize_t lbs_sleepparams_read(struct file *file, char __user *userbuf, ...@@ -144,7 +144,6 @@ static ssize_t lbs_sleepparams_read(struct file *file, char __user *userbuf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct lbs_private *priv = file->private_data; struct lbs_private *priv = file->private_data;
struct lbs_adapter *adapter = priv->adapter;
ssize_t res; ssize_t res;
size_t pos = 0; size_t pos = 0;
unsigned long addr = get_zeroed_page(GFP_KERNEL); unsigned long addr = get_zeroed_page(GFP_KERNEL);
...@@ -159,10 +158,10 @@ static ssize_t lbs_sleepparams_read(struct file *file, char __user *userbuf, ...@@ -159,10 +158,10 @@ static ssize_t lbs_sleepparams_read(struct file *file, char __user *userbuf,
goto out_unlock; goto out_unlock;
} }
pos += snprintf(buf, len, "%d %d %d %d %d %d\n", adapter->sp.sp_error, pos += snprintf(buf, len, "%d %d %d %d %d %d\n", priv->sp.sp_error,
adapter->sp.sp_offset, adapter->sp.sp_stabletime, priv->sp.sp_offset, priv->sp.sp_stabletime,
adapter->sp.sp_calcontrol, adapter->sp.sp_extsleepclk, priv->sp.sp_calcontrol, priv->sp.sp_extsleepclk,
adapter->sp.sp_reserved); priv->sp.sp_reserved);
res = simple_read_from_buffer(userbuf, count, ppos, buf, pos); res = simple_read_from_buffer(userbuf, count, ppos, buf, pos);
...@@ -321,11 +320,11 @@ static ssize_t lbs_setuserscan(struct file *file, ...@@ -321,11 +320,11 @@ static ssize_t lbs_setuserscan(struct file *file,
lbs_parse_type(buf, count, scan_cfg); lbs_parse_type(buf, count, scan_cfg);
lbs_scan_networks(priv, scan_cfg, 1); lbs_scan_networks(priv, scan_cfg, 1);
wait_event_interruptible(priv->adapter->cmd_pending, wait_event_interruptible(priv->cmd_pending,
priv->adapter->surpriseremoved || priv->surpriseremoved ||
(!priv->adapter->cur_cmd && list_empty(&priv->adapter->cmdpendingq))); (!priv->cur_cmd && list_empty(&priv->cmdpendingq)));
if (priv->adapter->surpriseremoved) if (priv->surpriseremoved)
goto out_scan_cfg; goto out_scan_cfg;
memset(&wrqu, 0x00, sizeof(union iwreq_data)); memset(&wrqu, 0x00, sizeof(union iwreq_data));
...@@ -620,7 +619,6 @@ static ssize_t lbs_rdmac_read(struct file *file, char __user *userbuf, ...@@ -620,7 +619,6 @@ static ssize_t lbs_rdmac_read(struct file *file, char __user *userbuf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct lbs_private *priv = file->private_data; struct lbs_private *priv = file->private_data;
struct lbs_adapter *adapter = priv->adapter;
struct lbs_offset_value offval; struct lbs_offset_value offval;
ssize_t pos = 0; ssize_t pos = 0;
int ret; int ret;
...@@ -635,7 +633,7 @@ static ssize_t lbs_rdmac_read(struct file *file, char __user *userbuf, ...@@ -635,7 +633,7 @@ static ssize_t lbs_rdmac_read(struct file *file, char __user *userbuf,
CMD_OPTION_WAITFORRSP, 0, &offval); CMD_OPTION_WAITFORRSP, 0, &offval);
mdelay(10); mdelay(10);
pos += snprintf(buf+pos, len-pos, "MAC[0x%x] = 0x%08x\n", pos += snprintf(buf+pos, len-pos, "MAC[0x%x] = 0x%08x\n",
priv->mac_offset, adapter->offsetvalue.value); priv->mac_offset, priv->offsetvalue.value);
ret = simple_read_from_buffer(userbuf, count, ppos, buf, pos); ret = simple_read_from_buffer(userbuf, count, ppos, buf, pos);
free_page(addr); free_page(addr);
...@@ -703,7 +701,6 @@ static ssize_t lbs_rdbbp_read(struct file *file, char __user *userbuf, ...@@ -703,7 +701,6 @@ static ssize_t lbs_rdbbp_read(struct file *file, char __user *userbuf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct lbs_private *priv = file->private_data; struct lbs_private *priv = file->private_data;
struct lbs_adapter *adapter = priv->adapter;
struct lbs_offset_value offval; struct lbs_offset_value offval;
ssize_t pos = 0; ssize_t pos = 0;
int ret; int ret;
...@@ -718,7 +715,7 @@ static ssize_t lbs_rdbbp_read(struct file *file, char __user *userbuf, ...@@ -718,7 +715,7 @@ static ssize_t lbs_rdbbp_read(struct file *file, char __user *userbuf,
CMD_OPTION_WAITFORRSP, 0, &offval); CMD_OPTION_WAITFORRSP, 0, &offval);
mdelay(10); mdelay(10);
pos += snprintf(buf+pos, len-pos, "BBP[0x%x] = 0x%08x\n", pos += snprintf(buf+pos, len-pos, "BBP[0x%x] = 0x%08x\n",
priv->bbp_offset, adapter->offsetvalue.value); priv->bbp_offset, priv->offsetvalue.value);
ret = simple_read_from_buffer(userbuf, count, ppos, buf, pos); ret = simple_read_from_buffer(userbuf, count, ppos, buf, pos);
free_page(addr); free_page(addr);
...@@ -787,7 +784,6 @@ static ssize_t lbs_rdrf_read(struct file *file, char __user *userbuf, ...@@ -787,7 +784,6 @@ static ssize_t lbs_rdrf_read(struct file *file, char __user *userbuf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct lbs_private *priv = file->private_data; struct lbs_private *priv = file->private_data;
struct lbs_adapter *adapter = priv->adapter;
struct lbs_offset_value offval; struct lbs_offset_value offval;
ssize_t pos = 0; ssize_t pos = 0;
int ret; int ret;
...@@ -802,7 +798,7 @@ static ssize_t lbs_rdrf_read(struct file *file, char __user *userbuf, ...@@ -802,7 +798,7 @@ static ssize_t lbs_rdrf_read(struct file *file, char __user *userbuf,
CMD_OPTION_WAITFORRSP, 0, &offval); CMD_OPTION_WAITFORRSP, 0, &offval);
mdelay(10); mdelay(10);
pos += snprintf(buf+pos, len-pos, "RF[0x%x] = 0x%08x\n", pos += snprintf(buf+pos, len-pos, "RF[0x%x] = 0x%08x\n",
priv->rf_offset, adapter->offsetvalue.value); priv->rf_offset, priv->offsetvalue.value);
ret = simple_read_from_buffer(userbuf, count, ppos, buf, pos); ret = simple_read_from_buffer(userbuf, count, ppos, buf, pos);
free_page(addr); free_page(addr);
...@@ -1009,8 +1005,8 @@ void lbs_debugfs_remove_one(struct lbs_private *priv) ...@@ -1009,8 +1005,8 @@ void lbs_debugfs_remove_one(struct lbs_private *priv)
#ifdef PROC_DEBUG #ifdef PROC_DEBUG
#define item_size(n) (FIELD_SIZEOF(struct lbs_adapter, n)) #define item_size(n) (FIELD_SIZEOF(struct lbs_private, n))
#define item_addr(n) (offsetof(struct lbs_adapter, n)) #define item_addr(n) (offsetof(struct lbs_private, n))
struct debug_data { struct debug_data {
...@@ -1019,7 +1015,7 @@ struct debug_data { ...@@ -1019,7 +1015,7 @@ struct debug_data {
size_t addr; size_t addr;
}; };
/* To debug any member of struct lbs_adapter, simply add one line here. /* To debug any member of struct lbs_private, simply add one line here.
*/ */
static struct debug_data items[] = { static struct debug_data items[] = {
{"intcounter", item_size(intcounter), item_addr(intcounter)}, {"intcounter", item_size(intcounter), item_addr(intcounter)},
...@@ -1158,7 +1154,7 @@ static void lbs_debug_init(struct lbs_private *priv, struct net_device *dev) ...@@ -1158,7 +1154,7 @@ static void lbs_debug_init(struct lbs_private *priv, struct net_device *dev)
return; return;
for (i = 0; i < num_of_items; i++) for (i = 0; i < num_of_items; i++)
items[i].addr += (size_t) priv->adapter; items[i].addr += (size_t) priv;
priv->debugfs_debug = debugfs_create_file("debug", 0644, priv->debugfs_debug = debugfs_create_file("debug", 0644,
priv->debugfs_dir, &items[0], priv->debugfs_dir, &items[0],
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
/** Function Prototype Declaration */ /** Function Prototype Declaration */
struct lbs_private; struct lbs_private;
struct lbs_adapter;
struct sk_buff; struct sk_buff;
struct net_device; struct net_device;
struct cmd_ctrl_node; struct cmd_ctrl_node;
...@@ -32,7 +31,7 @@ int lbs_prepare_and_send_command(struct lbs_private *priv, ...@@ -32,7 +31,7 @@ int lbs_prepare_and_send_command(struct lbs_private *priv,
u16 cmd_action, u16 cmd_action,
u16 wait_option, u32 cmd_oid, void *pdata_buf); u16 wait_option, u32 cmd_oid, void *pdata_buf);
void lbs_queue_cmd(struct lbs_adapter *adapter, void lbs_queue_cmd(struct lbs_private *priv,
struct cmd_ctrl_node *cmdnode, struct cmd_ctrl_node *cmdnode,
u8 addtail); u8 addtail);
...@@ -43,7 +42,7 @@ void lbs_interrupt(struct net_device *); ...@@ -43,7 +42,7 @@ void lbs_interrupt(struct net_device *);
int lbs_set_radio_control(struct lbs_private *priv); int lbs_set_radio_control(struct lbs_private *priv);
u32 lbs_fw_index_to_data_rate(u8 index); u32 lbs_fw_index_to_data_rate(u8 index);
u8 lbs_data_rate_to_fw_index(u32 rate); u8 lbs_data_rate_to_fw_index(u32 rate);
void lbs_get_fwversion(struct lbs_adapter *adapter, void lbs_get_fwversion(struct lbs_private *priv,
char *fwversion, char *fwversion,
int maxlen); int maxlen);
...@@ -66,7 +65,7 @@ void lbs_ps_wakeup(struct lbs_private *priv, int wait_option); ...@@ -66,7 +65,7 @@ void lbs_ps_wakeup(struct lbs_private *priv, int wait_option);
void lbs_tx_runqueue(struct lbs_private *priv); void lbs_tx_runqueue(struct lbs_private *priv);
struct chan_freq_power *lbs_find_cfp_by_band_and_channel( struct chan_freq_power *lbs_find_cfp_by_band_and_channel(
struct lbs_adapter *adapter, struct lbs_private *priv,
u8 band, u8 band,
u16 channel); u16 channel);
......
/** /**
* This file contains definitions and data structures specific * This file contains definitions and data structures specific
* to Marvell 802.11 NIC. It contains the Device Information * to Marvell 802.11 NIC. It contains the Device Information
* structure struct lbs_adapter. * structure struct lbs_private..
*/ */
#ifndef _LBS_DEV_H_ #ifndef _LBS_DEV_H_
#define _LBS_DEV_H_ #define _LBS_DEV_H_
...@@ -109,7 +109,6 @@ struct lbs_private { ...@@ -109,7 +109,6 @@ struct lbs_private {
char name[DEV_NAME_LEN]; char name[DEV_NAME_LEN];
void *card; void *card;
struct lbs_adapter *adapter;
struct net_device *dev; struct net_device *dev;
struct net_device_stats stats; struct net_device_stats stats;
...@@ -156,54 +155,10 @@ struct lbs_private { ...@@ -156,54 +155,10 @@ struct lbs_private {
int (*hw_host_to_card) (struct lbs_private *priv, u8 type, u8 *payload, u16 nb); int (*hw_host_to_card) (struct lbs_private *priv, u8 type, u8 *payload, u16 nb);
int (*hw_get_int_status) (struct lbs_private *priv, u8 *); int (*hw_get_int_status) (struct lbs_private *priv, u8 *);
int (*hw_read_event_cause) (struct lbs_private *); int (*hw_read_event_cause) (struct lbs_private *);
};
/** Association request
*
* Encapsulates all the options that describe a specific assocation request
* or configuration of the wireless card's radio, mode, and security settings.
*/
struct assoc_request {
#define ASSOC_FLAG_SSID 1
#define ASSOC_FLAG_CHANNEL 2
#define ASSOC_FLAG_BAND 3
#define ASSOC_FLAG_MODE 4
#define ASSOC_FLAG_BSSID 5
#define ASSOC_FLAG_WEP_KEYS 6
#define ASSOC_FLAG_WEP_TX_KEYIDX 7
#define ASSOC_FLAG_WPA_MCAST_KEY 8
#define ASSOC_FLAG_WPA_UCAST_KEY 9
#define ASSOC_FLAG_SECINFO 10
#define ASSOC_FLAG_WPA_IE 11
unsigned long flags;
u8 ssid[IW_ESSID_MAX_SIZE + 1];
u8 ssid_len;
u8 channel;
u8 band;
u8 mode;
u8 bssid[ETH_ALEN];
/** WEP keys */
struct enc_key wep_keys[4];
u16 wep_tx_keyidx;
/** WPA keys */
struct enc_key wpa_mcast_key;
struct enc_key wpa_unicast_key;
struct lbs_802_11_security secinfo;
/** WPA Information Elements*/ /* was struct lbs_adapter from here... */
u8 wpa_ie[MAX_WPA_IE_LEN];
u8 wpa_ie_len;
/* BSS to associate with for infrastructure of Ad-Hoc join */
struct bss_descriptor bss;
};
/** Wlan adapter data structure*/ /** Wlan adapter data structure*/
struct lbs_adapter {
/** STATUS variables */ /** STATUS variables */
u8 fwreleasenumber[4]; u8 fwreleasenumber[4];
u32 fwcapinfo; u32 fwcapinfo;
...@@ -229,7 +184,7 @@ struct lbs_adapter { ...@@ -229,7 +184,7 @@ struct lbs_adapter {
struct list_head cmdpendingq; struct list_head cmdpendingq;
wait_queue_head_t cmd_pending; wait_queue_head_t cmd_pending;
/* command related variables protected by adapter->driver_lock */ /* command related variables protected by priv->driver_lock */
/** Async and Sync Event variables */ /** Async and Sync Event variables */
u32 intcounter; u32 intcounter;
...@@ -366,4 +321,48 @@ struct lbs_adapter { ...@@ -366,4 +321,48 @@ struct lbs_adapter {
u8 fw_ready; u8 fw_ready;
}; };
/** Association request
*
* Encapsulates all the options that describe a specific assocation request
* or configuration of the wireless card's radio, mode, and security settings.
*/
struct assoc_request {
#define ASSOC_FLAG_SSID 1
#define ASSOC_FLAG_CHANNEL 2
#define ASSOC_FLAG_BAND 3
#define ASSOC_FLAG_MODE 4
#define ASSOC_FLAG_BSSID 5
#define ASSOC_FLAG_WEP_KEYS 6
#define ASSOC_FLAG_WEP_TX_KEYIDX 7
#define ASSOC_FLAG_WPA_MCAST_KEY 8
#define ASSOC_FLAG_WPA_UCAST_KEY 9
#define ASSOC_FLAG_SECINFO 10
#define ASSOC_FLAG_WPA_IE 11
unsigned long flags;
u8 ssid[IW_ESSID_MAX_SIZE + 1];
u8 ssid_len;
u8 channel;
u8 band;
u8 mode;
u8 bssid[ETH_ALEN];
/** WEP keys */
struct enc_key wep_keys[4];
u16 wep_tx_keyidx;
/** WPA keys */
struct enc_key wpa_mcast_key;
struct enc_key wpa_unicast_key;
struct lbs_802_11_security secinfo;
/** WPA Information Elements*/
u8 wpa_ie[MAX_WPA_IE_LEN];
u8 wpa_ie_len;
/* BSS to associate with for infrastructure of Ad-Hoc join */
struct bss_descriptor bss;
};
#endif #endif
...@@ -25,7 +25,7 @@ static void lbs_ethtool_get_drvinfo(struct net_device *dev, ...@@ -25,7 +25,7 @@ static void lbs_ethtool_get_drvinfo(struct net_device *dev,
struct lbs_private *priv = (struct lbs_private *) dev->priv; struct lbs_private *priv = (struct lbs_private *) dev->priv;
char fwver[32]; char fwver[32];
lbs_get_fwversion(priv->adapter, fwver, sizeof(fwver) - 1); lbs_get_fwversion(priv, fwver, sizeof(fwver) - 1);
strcpy(info->driver, "libertas"); strcpy(info->driver, "libertas");
strcpy(info->version, lbs_driver_version); strcpy(info->version, lbs_driver_version);
...@@ -46,7 +46,6 @@ static int lbs_ethtool_get_eeprom(struct net_device *dev, ...@@ -46,7 +46,6 @@ static int lbs_ethtool_get_eeprom(struct net_device *dev,
struct ethtool_eeprom *eeprom, u8 * bytes) struct ethtool_eeprom *eeprom, u8 * bytes)
{ {
struct lbs_private *priv = (struct lbs_private *) dev->priv; struct lbs_private *priv = (struct lbs_private *) dev->priv;
struct lbs_adapter *adapter = priv->adapter;
struct lbs_ioctl_regrdwr regctrl; struct lbs_ioctl_regrdwr regctrl;
char *ptr; char *ptr;
int ret; int ret;
...@@ -60,10 +59,10 @@ static int lbs_ethtool_get_eeprom(struct net_device *dev, ...@@ -60,10 +59,10 @@ static int lbs_ethtool_get_eeprom(struct net_device *dev,
// mutex_lock(&priv->mutex); // mutex_lock(&priv->mutex);
adapter->prdeeprom = kmalloc(eeprom->len+sizeof(regctrl), GFP_KERNEL); priv->prdeeprom = kmalloc(eeprom->len+sizeof(regctrl), GFP_KERNEL);
if (!adapter->prdeeprom) if (!priv->prdeeprom)
return -ENOMEM; return -ENOMEM;
memcpy(adapter->prdeeprom, &regctrl, sizeof(regctrl)); memcpy(priv->prdeeprom, &regctrl, sizeof(regctrl));
/* +14 is for action, offset, and NOB in /* +14 is for action, offset, and NOB in
* response */ * response */
...@@ -77,14 +76,14 @@ static int lbs_ethtool_get_eeprom(struct net_device *dev, ...@@ -77,14 +76,14 @@ static int lbs_ethtool_get_eeprom(struct net_device *dev,
&regctrl); &regctrl);
if (ret) { if (ret) {
if (adapter->prdeeprom) if (priv->prdeeprom)
kfree(adapter->prdeeprom); kfree(priv->prdeeprom);
goto done; goto done;
} }
mdelay(10); mdelay(10);
ptr = (char *)adapter->prdeeprom; ptr = (char *)priv->prdeeprom;
/* skip the command header, but include the "value" u32 variable */ /* skip the command header, but include the "value" u32 variable */
ptr = ptr + sizeof(struct lbs_ioctl_regrdwr) - 4; ptr = ptr + sizeof(struct lbs_ioctl_regrdwr) - 4;
...@@ -94,8 +93,8 @@ static int lbs_ethtool_get_eeprom(struct net_device *dev, ...@@ -94,8 +93,8 @@ static int lbs_ethtool_get_eeprom(struct net_device *dev,
*/ */
memcpy(bytes, ptr, eeprom->len); memcpy(bytes, ptr, eeprom->len);
if (adapter->prdeeprom) if (priv->prdeeprom)
kfree(adapter->prdeeprom); kfree(priv->prdeeprom);
// mutex_unlock(&priv->mutex); // mutex_unlock(&priv->mutex);
ret = 0; ret = 0;
......
...@@ -255,7 +255,7 @@ static irqreturn_t if_cs_interrupt(int irq, void *data) ...@@ -255,7 +255,7 @@ static irqreturn_t if_cs_interrupt(int irq, void *data)
} else if (int_cause == 0xffff) { } else if (int_cause == 0xffff) {
/* Read in junk, the card has probably been removed */ /* Read in junk, the card has probably been removed */
card->priv->adapter->surpriseremoved = 1; card->priv->surpriseremoved = 1;
} else { } else {
if (int_cause & IF_CS_H_IC_TX_OVER) if (int_cause & IF_CS_H_IC_TX_OVER)
...@@ -644,7 +644,6 @@ static int if_cs_host_to_card(struct lbs_private *priv, ...@@ -644,7 +644,6 @@ static int if_cs_host_to_card(struct lbs_private *priv,
static int if_cs_get_int_status(struct lbs_private *priv, u8 *ireg) static int if_cs_get_int_status(struct lbs_private *priv, u8 *ireg)
{ {
struct if_cs_card *card = (struct if_cs_card *)priv->card; struct if_cs_card *card = (struct if_cs_card *)priv->card;
/* struct lbs_adapter *adapter = priv->adapter; */
int ret = 0; int ret = 0;
u16 int_cause; u16 int_cause;
u8 *cmdbuf; u8 *cmdbuf;
...@@ -652,7 +651,7 @@ static int if_cs_get_int_status(struct lbs_private *priv, u8 *ireg) ...@@ -652,7 +651,7 @@ static int if_cs_get_int_status(struct lbs_private *priv, u8 *ireg)
lbs_deb_enter(LBS_DEB_CS); lbs_deb_enter(LBS_DEB_CS);
if (priv->adapter->surpriseremoved) if (priv->surpriseremoved)
goto out; goto out;
int_cause = if_cs_read16(card, IF_CS_C_INT_CAUSE) & IF_CS_C_IC_MASK; int_cause = if_cs_read16(card, IF_CS_C_INT_CAUSE) & IF_CS_C_IC_MASK;
...@@ -678,22 +677,22 @@ static int if_cs_get_int_status(struct lbs_private *priv, u8 *ireg) ...@@ -678,22 +677,22 @@ static int if_cs_get_int_status(struct lbs_private *priv, u8 *ireg)
/* Card has a command result for us */ /* Card has a command result for us */
if (*ireg & IF_CS_C_S_CMD_UPLD_RDY) { if (*ireg & IF_CS_C_S_CMD_UPLD_RDY) {
spin_lock(&priv->adapter->driver_lock); spin_lock(&priv->driver_lock);
if (!priv->adapter->cur_cmd) { if (!priv->cur_cmd) {
cmdbuf = priv->upld_buf; cmdbuf = priv->upld_buf;
priv->adapter->hisregcpy &= ~IF_CS_C_S_RX_UPLD_RDY; priv->hisregcpy &= ~IF_CS_C_S_RX_UPLD_RDY;
} else { } else {
cmdbuf = priv->adapter->cur_cmd->bufvirtualaddr; cmdbuf = priv->cur_cmd->bufvirtualaddr;
} }
ret = if_cs_receive_cmdres(priv, cmdbuf, &priv->upld_len); ret = if_cs_receive_cmdres(priv, cmdbuf, &priv->upld_len);
spin_unlock(&priv->adapter->driver_lock); spin_unlock(&priv->driver_lock);
if (ret < 0) if (ret < 0)
lbs_pr_err("could not receive cmd from card\n"); lbs_pr_err("could not receive cmd from card\n");
} }
out: out:
lbs_deb_leave_args(LBS_DEB_CS, "ret %d, ireg 0x%x, hisregcpy 0x%x", ret, *ireg, priv->adapter->hisregcpy); lbs_deb_leave_args(LBS_DEB_CS, "ret %d, ireg 0x%x, hisregcpy 0x%x", ret, *ireg, priv->hisregcpy);
return ret; return ret;
} }
...@@ -702,7 +701,7 @@ static int if_cs_read_event_cause(struct lbs_private *priv) ...@@ -702,7 +701,7 @@ static int if_cs_read_event_cause(struct lbs_private *priv)
{ {
lbs_deb_enter(LBS_DEB_CS); lbs_deb_enter(LBS_DEB_CS);
priv->adapter->eventcause = (if_cs_read16(priv->card, IF_CS_C_STATUS) & IF_CS_C_S_STATUS_MASK) >> 5; priv->eventcause = (if_cs_read16(priv->card, IF_CS_C_STATUS) & IF_CS_C_S_STATUS_MASK) >> 5;
if_cs_write16(priv->card, IF_CS_H_INT_CAUSE, IF_CS_H_IC_HOST_EVENT); if_cs_write16(priv->card, IF_CS_H_INT_CAUSE, IF_CS_H_IC_HOST_EVENT);
return 0; return 0;
...@@ -869,7 +868,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev) ...@@ -869,7 +868,7 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
priv->hw_get_int_status = if_cs_get_int_status; priv->hw_get_int_status = if_cs_get_int_status;
priv->hw_read_event_cause = if_cs_read_event_cause; priv->hw_read_event_cause = if_cs_read_event_cause;
priv->adapter->fw_ready = 1; priv->fw_ready = 1;
/* Now actually get the IRQ */ /* Now actually get the IRQ */
ret = request_irq(p_dev->irq.AssignedIRQ, if_cs_interrupt, ret = request_irq(p_dev->irq.AssignedIRQ, if_cs_interrupt,
......
...@@ -134,9 +134,9 @@ static int if_sdio_handle_cmd(struct if_sdio_card *card, ...@@ -134,9 +134,9 @@ static int if_sdio_handle_cmd(struct if_sdio_card *card,
lbs_deb_enter(LBS_DEB_SDIO); lbs_deb_enter(LBS_DEB_SDIO);
spin_lock_irqsave(&card->priv->adapter->driver_lock, flags); spin_lock_irqsave(&card->priv->driver_lock, flags);
if (!card->priv->adapter->cur_cmd) { if (!card->priv->cur_cmd) {
lbs_deb_sdio("discarding spurious response\n"); lbs_deb_sdio("discarding spurious response\n");
ret = 0; ret = 0;
goto out; goto out;
...@@ -149,7 +149,7 @@ static int if_sdio_handle_cmd(struct if_sdio_card *card, ...@@ -149,7 +149,7 @@ static int if_sdio_handle_cmd(struct if_sdio_card *card,
goto out; goto out;
} }
memcpy(card->priv->adapter->cur_cmd->bufvirtualaddr, buffer, size); memcpy(card->priv->cur_cmd->bufvirtualaddr, buffer, size);
card->priv->upld_len = size; card->priv->upld_len = size;
card->int_cause |= MRVDRV_CMD_UPLD_RDY; card->int_cause |= MRVDRV_CMD_UPLD_RDY;
...@@ -159,7 +159,7 @@ static int if_sdio_handle_cmd(struct if_sdio_card *card, ...@@ -159,7 +159,7 @@ static int if_sdio_handle_cmd(struct if_sdio_card *card,
ret = 0; ret = 0;
out: out:
spin_unlock_irqrestore(&card->priv->adapter->driver_lock, flags); spin_unlock_irqrestore(&card->priv->driver_lock, flags);
lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret); lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);
...@@ -231,14 +231,14 @@ static int if_sdio_handle_event(struct if_sdio_card *card, ...@@ -231,14 +231,14 @@ static int if_sdio_handle_event(struct if_sdio_card *card,
event <<= SBI_EVENT_CAUSE_SHIFT; event <<= SBI_EVENT_CAUSE_SHIFT;
} }
spin_lock_irqsave(&card->priv->adapter->driver_lock, flags); spin_lock_irqsave(&card->priv->driver_lock, flags);
card->event = event; card->event = event;
card->int_cause |= MRVDRV_CARDEVENT; card->int_cause |= MRVDRV_CARDEVENT;
lbs_interrupt(card->priv->dev); lbs_interrupt(card->priv->dev);
spin_unlock_irqrestore(&card->priv->adapter->driver_lock, flags); spin_unlock_irqrestore(&card->priv->driver_lock, flags);
ret = 0; ret = 0;
...@@ -800,7 +800,7 @@ static int if_sdio_read_event_cause(struct lbs_private *priv) ...@@ -800,7 +800,7 @@ static int if_sdio_read_event_cause(struct lbs_private *priv)
card = priv->card; card = priv->card;
priv->adapter->eventcause = card->event; priv->eventcause = card->event;
lbs_deb_leave(LBS_DEB_SDIO); lbs_deb_leave(LBS_DEB_SDIO);
...@@ -962,7 +962,7 @@ static int if_sdio_probe(struct sdio_func *func, ...@@ -962,7 +962,7 @@ static int if_sdio_probe(struct sdio_func *func,
priv->hw_get_int_status = if_sdio_get_int_status; priv->hw_get_int_status = if_sdio_get_int_status;
priv->hw_read_event_cause = if_sdio_read_event_cause; priv->hw_read_event_cause = if_sdio_read_event_cause;
priv->adapter->fw_ready = 1; priv->fw_ready = 1;
/* /*
* Enable interrupts now that everything is set up * Enable interrupts now that everything is set up
...@@ -985,7 +985,7 @@ static int if_sdio_probe(struct sdio_func *func, ...@@ -985,7 +985,7 @@ static int if_sdio_probe(struct sdio_func *func,
err_activate_card: err_activate_card:
flush_scheduled_work(); flush_scheduled_work();
free_netdev(priv->dev); free_netdev(priv->dev);
kfree(priv->adapter); kfree(priv);
reclaim: reclaim:
sdio_claim_host(func); sdio_claim_host(func);
release_int: release_int:
...@@ -1015,7 +1015,7 @@ static void if_sdio_remove(struct sdio_func *func) ...@@ -1015,7 +1015,7 @@ static void if_sdio_remove(struct sdio_func *func)
card = sdio_get_drvdata(func); card = sdio_get_drvdata(func);
card->priv->adapter->surpriseremoved = 1; card->priv->surpriseremoved = 1;
lbs_deb_sdio("call remove card\n"); lbs_deb_sdio("call remove card\n");
lbs_stop_card(card->priv); lbs_stop_card(card->priv);
......
...@@ -229,7 +229,7 @@ static int if_usb_probe(struct usb_interface *intf, ...@@ -229,7 +229,7 @@ static int if_usb_probe(struct usb_interface *intf,
/* Delay 200 ms to waiting for the FW ready */ /* Delay 200 ms to waiting for the FW ready */
if_usb_submit_rx_urb(cardp); if_usb_submit_rx_urb(cardp);
msleep_interruptible(200); msleep_interruptible(200);
priv->adapter->fw_ready = 1; priv->fw_ready = 1;
if (lbs_start_card(priv)) if (lbs_start_card(priv))
goto err_start_card; goto err_start_card;
...@@ -270,9 +270,8 @@ static void if_usb_disconnect(struct usb_interface *intf) ...@@ -270,9 +270,8 @@ static void if_usb_disconnect(struct usb_interface *intf)
cardp->surprise_removed = 1; cardp->surprise_removed = 1;
if (priv) { if (priv) {
struct lbs_adapter *adapter = priv->adapter;
adapter->surpriseremoved = 1; priv->surpriseremoved = 1;
lbs_stop_card(priv); lbs_stop_card(priv);
lbs_remove_mesh(priv); lbs_remove_mesh(priv);
lbs_remove_card(priv); lbs_remove_card(priv);
...@@ -609,14 +608,14 @@ static inline void process_cmdrequest(int recvlength, u8 *recvbuff, ...@@ -609,14 +608,14 @@ static inline void process_cmdrequest(int recvlength, u8 *recvbuff,
if (!in_interrupt()) if (!in_interrupt())
BUG(); BUG();
spin_lock(&priv->adapter->driver_lock); spin_lock(&priv->driver_lock);
/* take care of cur_cmd = NULL case by reading the /* take care of cur_cmd = NULL case by reading the
* data to clear the interrupt */ * data to clear the interrupt */
if (!priv->adapter->cur_cmd) { if (!priv->cur_cmd) {
cmdbuf = priv->upld_buf; cmdbuf = priv->upld_buf;
priv->adapter->hisregcpy &= ~MRVDRV_CMD_UPLD_RDY; priv->hisregcpy &= ~MRVDRV_CMD_UPLD_RDY;
} else } else
cmdbuf = priv->adapter->cur_cmd->bufvirtualaddr; cmdbuf = priv->cur_cmd->bufvirtualaddr;
cardp->usb_int_cause |= MRVDRV_CMD_UPLD_RDY; cardp->usb_int_cause |= MRVDRV_CMD_UPLD_RDY;
priv->upld_len = (recvlength - MESSAGE_HEADER_LEN); priv->upld_len = (recvlength - MESSAGE_HEADER_LEN);
...@@ -625,7 +624,7 @@ static inline void process_cmdrequest(int recvlength, u8 *recvbuff, ...@@ -625,7 +624,7 @@ static inline void process_cmdrequest(int recvlength, u8 *recvbuff,
kfree_skb(skb); kfree_skb(skb);
lbs_interrupt(priv->dev); lbs_interrupt(priv->dev);
spin_unlock(&priv->adapter->driver_lock); spin_unlock(&priv->driver_lock);
lbs_deb_usbd(&cardp->udev->dev, lbs_deb_usbd(&cardp->udev->dev,
"Wake up main thread to handle cmd response\n"); "Wake up main thread to handle cmd response\n");
...@@ -685,20 +684,20 @@ static void if_usb_receive(struct urb *urb) ...@@ -685,20 +684,20 @@ static void if_usb_receive(struct urb *urb)
case CMD_TYPE_INDICATION: case CMD_TYPE_INDICATION:
/* Event cause handling */ /* Event cause handling */
spin_lock(&priv->adapter->driver_lock); spin_lock(&priv->driver_lock);
cardp->usb_event_cause = le32_to_cpu(*(__le32 *) (recvbuff + MESSAGE_HEADER_LEN)); cardp->usb_event_cause = le32_to_cpu(*(__le32 *) (recvbuff + MESSAGE_HEADER_LEN));
lbs_deb_usbd(&cardp->udev->dev,"**EVENT** 0x%X\n", lbs_deb_usbd(&cardp->udev->dev,"**EVENT** 0x%X\n",
cardp->usb_event_cause); cardp->usb_event_cause);
if (cardp->usb_event_cause & 0xffff0000) { if (cardp->usb_event_cause & 0xffff0000) {
lbs_send_tx_feedback(priv); lbs_send_tx_feedback(priv);
spin_unlock(&priv->adapter->driver_lock); spin_unlock(&priv->driver_lock);
break; break;
} }
cardp->usb_event_cause <<= 3; cardp->usb_event_cause <<= 3;
cardp->usb_int_cause |= MRVDRV_CARDEVENT; cardp->usb_int_cause |= MRVDRV_CARDEVENT;
kfree_skb(skb); kfree_skb(skb);
lbs_interrupt(priv->dev); lbs_interrupt(priv->dev);
spin_unlock(&priv->adapter->driver_lock); spin_unlock(&priv->driver_lock);
goto rx_exit; goto rx_exit;
default: default:
lbs_deb_usbd(&cardp->udev->dev, "Unknown command type 0x%X\n", lbs_deb_usbd(&cardp->udev->dev, "Unknown command type 0x%X\n",
...@@ -750,7 +749,7 @@ static int if_usb_host_to_card(struct lbs_private *priv, ...@@ -750,7 +749,7 @@ static int if_usb_host_to_card(struct lbs_private *priv,
nb + MESSAGE_HEADER_LEN); nb + MESSAGE_HEADER_LEN);
} }
/* called with adapter->driver_lock held */ /* called with priv->driver_lock held */
static int if_usb_get_int_status(struct lbs_private *priv, u8 *ireg) static int if_usb_get_int_status(struct lbs_private *priv, u8 *ireg)
{ {
struct usb_card_rec *cardp = priv->card; struct usb_card_rec *cardp = priv->card;
...@@ -767,7 +766,7 @@ static int if_usb_read_event_cause(struct lbs_private *priv) ...@@ -767,7 +766,7 @@ static int if_usb_read_event_cause(struct lbs_private *priv)
{ {
struct usb_card_rec *cardp = priv->card; struct usb_card_rec *cardp = priv->card;
priv->adapter->eventcause = cardp->usb_event_cause; priv->eventcause = cardp->usb_event_cause;
/* Re-submit rx urb here to avoid event lost issue */ /* Re-submit rx urb here to avoid event lost issue */
if_usb_submit_rx_urb(cardp); if_usb_submit_rx_urb(cardp);
return 0; return 0;
...@@ -942,7 +941,7 @@ static int if_usb_suspend(struct usb_interface *intf, pm_message_t message) ...@@ -942,7 +941,7 @@ static int if_usb_suspend(struct usb_interface *intf, pm_message_t message)
lbs_deb_enter(LBS_DEB_USB); lbs_deb_enter(LBS_DEB_USB);
if (priv->adapter->psstate != PS_STATE_FULL_POWER) if (priv->psstate != PS_STATE_FULL_POWER)
return -1; return -1;
if (priv->mesh_dev && !priv->mesh_autostart_enabled) { if (priv->mesh_dev && !priv->mesh_autostart_enabled) {
......
This diff is collapsed.
This diff is collapsed.
...@@ -48,12 +48,11 @@ static u8 lbs_getavgsnr(struct lbs_private *priv) ...@@ -48,12 +48,11 @@ static u8 lbs_getavgsnr(struct lbs_private *priv)
{ {
u8 i; u8 i;
u16 temp = 0; u16 temp = 0;
struct lbs_adapter *adapter = priv->adapter; if (priv->numSNRNF == 0)
if (adapter->numSNRNF == 0)
return 0; return 0;
for (i = 0; i < adapter->numSNRNF; i++) for (i = 0; i < priv->numSNRNF; i++)
temp += adapter->rawSNR[i]; temp += priv->rawSNR[i];
return (u8) (temp / adapter->numSNRNF); return (u8) (temp / priv->numSNRNF);
} }
...@@ -67,12 +66,11 @@ static u8 lbs_getavgnf(struct lbs_private *priv) ...@@ -67,12 +66,11 @@ static u8 lbs_getavgnf(struct lbs_private *priv)
{ {
u8 i; u8 i;
u16 temp = 0; u16 temp = 0;
struct lbs_adapter *adapter = priv->adapter; if (priv->numSNRNF == 0)
if (adapter->numSNRNF == 0)
return 0; return 0;
for (i = 0; i < adapter->numSNRNF; i++) for (i = 0; i < priv->numSNRNF; i++)
temp += adapter->rawNF[i]; temp += priv->rawNF[i];
return (u8) (temp / adapter->numSNRNF); return (u8) (temp / priv->numSNRNF);
} }
...@@ -85,14 +83,13 @@ static u8 lbs_getavgnf(struct lbs_private *priv) ...@@ -85,14 +83,13 @@ static u8 lbs_getavgnf(struct lbs_private *priv)
*/ */
static void lbs_save_rawSNRNF(struct lbs_private *priv, struct rxpd *p_rx_pd) static void lbs_save_rawSNRNF(struct lbs_private *priv, struct rxpd *p_rx_pd)
{ {
struct lbs_adapter *adapter = priv->adapter; if (priv->numSNRNF < DEFAULT_DATA_AVG_FACTOR)
if (adapter->numSNRNF < DEFAULT_DATA_AVG_FACTOR) priv->numSNRNF++;
adapter->numSNRNF++; priv->rawSNR[priv->nextSNRNF] = p_rx_pd->snr;
adapter->rawSNR[adapter->nextSNRNF] = p_rx_pd->snr; priv->rawNF[priv->nextSNRNF] = p_rx_pd->nf;
adapter->rawNF[adapter->nextSNRNF] = p_rx_pd->nf; priv->nextSNRNF++;
adapter->nextSNRNF++; if (priv->nextSNRNF >= DEFAULT_DATA_AVG_FACTOR)
if (adapter->nextSNRNF >= DEFAULT_DATA_AVG_FACTOR) priv->nextSNRNF = 0;
adapter->nextSNRNF = 0;
return; return;
} }
...@@ -105,32 +102,31 @@ static void lbs_save_rawSNRNF(struct lbs_private *priv, struct rxpd *p_rx_pd) ...@@ -105,32 +102,31 @@ static void lbs_save_rawSNRNF(struct lbs_private *priv, struct rxpd *p_rx_pd)
*/ */
static void lbs_compute_rssi(struct lbs_private *priv, struct rxpd *p_rx_pd) static void lbs_compute_rssi(struct lbs_private *priv, struct rxpd *p_rx_pd)
{ {
struct lbs_adapter *adapter = priv->adapter;
lbs_deb_enter(LBS_DEB_RX); lbs_deb_enter(LBS_DEB_RX);
lbs_deb_rx("rxpd: SNR %d, NF %d\n", p_rx_pd->snr, p_rx_pd->nf); lbs_deb_rx("rxpd: SNR %d, NF %d\n", p_rx_pd->snr, p_rx_pd->nf);
lbs_deb_rx("before computing SNR: SNR-avg = %d, NF-avg = %d\n", lbs_deb_rx("before computing SNR: SNR-avg = %d, NF-avg = %d\n",
adapter->SNR[TYPE_RXPD][TYPE_AVG] / AVG_SCALE, priv->SNR[TYPE_RXPD][TYPE_AVG] / AVG_SCALE,
adapter->NF[TYPE_RXPD][TYPE_AVG] / AVG_SCALE); priv->NF[TYPE_RXPD][TYPE_AVG] / AVG_SCALE);
adapter->SNR[TYPE_RXPD][TYPE_NOAVG] = p_rx_pd->snr; priv->SNR[TYPE_RXPD][TYPE_NOAVG] = p_rx_pd->snr;
adapter->NF[TYPE_RXPD][TYPE_NOAVG] = p_rx_pd->nf; priv->NF[TYPE_RXPD][TYPE_NOAVG] = p_rx_pd->nf;
lbs_save_rawSNRNF(priv, p_rx_pd); lbs_save_rawSNRNF(priv, p_rx_pd);
adapter->SNR[TYPE_RXPD][TYPE_AVG] = lbs_getavgsnr(priv) * AVG_SCALE; priv->SNR[TYPE_RXPD][TYPE_AVG] = lbs_getavgsnr(priv) * AVG_SCALE;
adapter->NF[TYPE_RXPD][TYPE_AVG] = lbs_getavgnf(priv) * AVG_SCALE; priv->NF[TYPE_RXPD][TYPE_AVG] = lbs_getavgnf(priv) * AVG_SCALE;
lbs_deb_rx("after computing SNR: SNR-avg = %d, NF-avg = %d\n", lbs_deb_rx("after computing SNR: SNR-avg = %d, NF-avg = %d\n",
adapter->SNR[TYPE_RXPD][TYPE_AVG] / AVG_SCALE, priv->SNR[TYPE_RXPD][TYPE_AVG] / AVG_SCALE,
adapter->NF[TYPE_RXPD][TYPE_AVG] / AVG_SCALE); priv->NF[TYPE_RXPD][TYPE_AVG] / AVG_SCALE);
adapter->RSSI[TYPE_RXPD][TYPE_NOAVG] = priv->RSSI[TYPE_RXPD][TYPE_NOAVG] =
CAL_RSSI(adapter->SNR[TYPE_RXPD][TYPE_NOAVG], CAL_RSSI(priv->SNR[TYPE_RXPD][TYPE_NOAVG],
adapter->NF[TYPE_RXPD][TYPE_NOAVG]); priv->NF[TYPE_RXPD][TYPE_NOAVG]);
adapter->RSSI[TYPE_RXPD][TYPE_AVG] = priv->RSSI[TYPE_RXPD][TYPE_AVG] =
CAL_RSSI(adapter->SNR[TYPE_RXPD][TYPE_AVG] / AVG_SCALE, CAL_RSSI(priv->SNR[TYPE_RXPD][TYPE_AVG] / AVG_SCALE,
adapter->NF[TYPE_RXPD][TYPE_AVG] / AVG_SCALE); priv->NF[TYPE_RXPD][TYPE_AVG] / AVG_SCALE);
lbs_deb_leave(LBS_DEB_RX); lbs_deb_leave(LBS_DEB_RX);
} }
...@@ -139,7 +135,7 @@ void lbs_upload_rx_packet(struct lbs_private *priv, struct sk_buff *skb) ...@@ -139,7 +135,7 @@ void lbs_upload_rx_packet(struct lbs_private *priv, struct sk_buff *skb)
{ {
lbs_deb_rx("skb->data %p\n", skb->data); lbs_deb_rx("skb->data %p\n", skb->data);
if (priv->adapter->monitormode != LBS_MONITOR_OFF) { if (priv->monitormode != LBS_MONITOR_OFF) {
skb->protocol = eth_type_trans(skb, priv->rtap_net_dev); skb->protocol = eth_type_trans(skb, priv->rtap_net_dev);
} else { } else {
if (priv->mesh_dev && IS_MESH_FRAME(skb)) if (priv->mesh_dev && IS_MESH_FRAME(skb))
...@@ -161,7 +157,6 @@ void lbs_upload_rx_packet(struct lbs_private *priv, struct sk_buff *skb) ...@@ -161,7 +157,6 @@ void lbs_upload_rx_packet(struct lbs_private *priv, struct sk_buff *skb)
*/ */
int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb) int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
{ {
struct lbs_adapter *adapter = priv->adapter;
int ret = 0; int ret = 0;
struct rxpackethdr *p_rx_pkt; struct rxpackethdr *p_rx_pkt;
...@@ -174,7 +169,7 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb) ...@@ -174,7 +169,7 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
lbs_deb_enter(LBS_DEB_RX); lbs_deb_enter(LBS_DEB_RX);
if (priv->adapter->monitormode != LBS_MONITOR_OFF) if (priv->monitormode != LBS_MONITOR_OFF)
return process_rxed_802_11_packet(priv, skb); return process_rxed_802_11_packet(priv, skb);
p_rx_pkt = (struct rxpackethdr *) skb->data; p_rx_pkt = (struct rxpackethdr *) skb->data;
...@@ -258,8 +253,8 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb) ...@@ -258,8 +253,8 @@ int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *skb)
/* Take the data rate from the rxpd structure /* Take the data rate from the rxpd structure
* only if the rate is auto * only if the rate is auto
*/ */
if (adapter->auto_rate) if (priv->auto_rate)
adapter->cur_rate = lbs_fw_index_to_data_rate(p_rx_pd->rx_rate); priv->cur_rate = lbs_fw_index_to_data_rate(p_rx_pd->rx_rate);
lbs_compute_rssi(priv, p_rx_pd); lbs_compute_rssi(priv, p_rx_pd);
...@@ -327,7 +322,6 @@ static u8 convert_mv_rate_to_radiotap(u8 rate) ...@@ -327,7 +322,6 @@ static u8 convert_mv_rate_to_radiotap(u8 rate)
static int process_rxed_802_11_packet(struct lbs_private *priv, static int process_rxed_802_11_packet(struct lbs_private *priv,
struct sk_buff *skb) struct sk_buff *skb)
{ {
struct lbs_adapter *adapter = priv->adapter;
int ret = 0; int ret = 0;
struct rx80211packethdr *p_rx_pkt; struct rx80211packethdr *p_rx_pkt;
...@@ -361,7 +355,7 @@ static int process_rxed_802_11_packet(struct lbs_private *priv, ...@@ -361,7 +355,7 @@ static int process_rxed_802_11_packet(struct lbs_private *priv,
skb->len, sizeof(struct rxpd), skb->len - sizeof(struct rxpd)); skb->len, sizeof(struct rxpd), skb->len - sizeof(struct rxpd));
/* create the exported radio header */ /* create the exported radio header */
if (priv->adapter->monitormode == LBS_MONITOR_OFF) { if (priv->monitormode == LBS_MONITOR_OFF) {
/* no radio header */ /* no radio header */
/* chop the rxpd */ /* chop the rxpd */
skb_pull(skb, sizeof(struct rxpd)); skb_pull(skb, sizeof(struct rxpd));
...@@ -410,8 +404,8 @@ static int process_rxed_802_11_packet(struct lbs_private *priv, ...@@ -410,8 +404,8 @@ static int process_rxed_802_11_packet(struct lbs_private *priv,
/* Take the data rate from the rxpd structure /* Take the data rate from the rxpd structure
* only if the rate is auto * only if the rate is auto
*/ */
if (adapter->auto_rate) if (priv->auto_rate)
adapter->cur_rate = lbs_fw_index_to_data_rate(prxpd->rx_rate); priv->cur_rate = lbs_fw_index_to_data_rate(prxpd->rx_rate);
lbs_compute_rssi(priv, prxpd); lbs_compute_rssi(priv, prxpd);
......
This diff is collapsed.
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
#include <net/ieee80211.h> #include <net/ieee80211.h>
#include "hostcmd.h" #include "hostcmd.h"
struct lbs_adapter;
/** /**
* @brief Maximum number of channels that can be sent in a setuserscan ioctl * @brief Maximum number of channels that can be sent in a setuserscan ioctl
* *
...@@ -168,11 +166,11 @@ struct bss_descriptor { ...@@ -168,11 +166,11 @@ struct bss_descriptor {
int lbs_ssid_cmp(u8 *ssid1, u8 ssid1_len, u8 *ssid2, u8 ssid2_len); int lbs_ssid_cmp(u8 *ssid1, u8 ssid1_len, u8 *ssid2, u8 ssid2_len);
struct bss_descriptor *lbs_find_ssid_in_list(struct lbs_adapter *adapter, struct bss_descriptor *lbs_find_ssid_in_list(struct lbs_private *priv,
u8 *ssid, u8 ssid_len, u8 *bssid, u8 mode, u8 *ssid, u8 ssid_len, u8 *bssid, u8 mode,
int channel); int channel);
struct bss_descriptor *lbs_find_bssid_in_list(struct lbs_adapter *adapter, struct bss_descriptor *lbs_find_bssid_in_list(struct lbs_private *priv,
u8 *bssid, u8 mode); u8 *bssid, u8 mode);
int lbs_find_best_network_ssid(struct lbs_private *priv, u8 *out_ssid, int lbs_find_best_network_ssid(struct lbs_private *priv, u8 *out_ssid,
......
...@@ -64,11 +64,11 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) ...@@ -64,11 +64,11 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb)
u8 *p802x_hdr; u8 *p802x_hdr;
struct tx_radiotap_hdr *pradiotap_hdr; struct tx_radiotap_hdr *pradiotap_hdr;
u32 new_rate; u32 new_rate;
u8 *ptr = priv->adapter->tmptxbuf; u8 *ptr = priv->tmptxbuf;
lbs_deb_enter(LBS_DEB_TX); lbs_deb_enter(LBS_DEB_TX);
if (priv->adapter->surpriseremoved) if (priv->surpriseremoved)
return -1; return -1;
if (!skb->len || (skb->len > MRVDRV_ETH_TX_PACKET_BUFFER_SIZE)) { if (!skb->len || (skb->len > MRVDRV_ETH_TX_PACKET_BUFFER_SIZE)) {
...@@ -86,7 +86,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) ...@@ -86,7 +86,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb)
plocaltxpd->tx_packet_location = cpu_to_le32(sizeof(struct txpd)); plocaltxpd->tx_packet_location = cpu_to_le32(sizeof(struct txpd));
p802x_hdr = skb->data; p802x_hdr = skb->data;
if (priv->adapter->monitormode != LBS_MONITOR_OFF) { if (priv->monitormode != LBS_MONITOR_OFF) {
/* locate radiotap header */ /* locate radiotap header */
pradiotap_hdr = (struct tx_radiotap_hdr *)skb->data; pradiotap_hdr = (struct tx_radiotap_hdr *)skb->data;
...@@ -106,7 +106,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) ...@@ -106,7 +106,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb)
} }
/* copy destination address from 802.3 or 802.11 header */ /* copy destination address from 802.3 or 802.11 header */
if (priv->adapter->monitormode != LBS_MONITOR_OFF) if (priv->monitormode != LBS_MONITOR_OFF)
memcpy(plocaltxpd->tx_dest_addr_high, p802x_hdr + 4, ETH_ALEN); memcpy(plocaltxpd->tx_dest_addr_high, p802x_hdr + 4, ETH_ALEN);
else else
memcpy(plocaltxpd->tx_dest_addr_high, p802x_hdr, ETH_ALEN); memcpy(plocaltxpd->tx_dest_addr_high, p802x_hdr, ETH_ALEN);
...@@ -124,7 +124,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) ...@@ -124,7 +124,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb)
lbs_deb_hex(LBS_DEB_TX, "Tx Data", (u8 *) p802x_hdr, le16_to_cpu(plocaltxpd->tx_packet_length)); lbs_deb_hex(LBS_DEB_TX, "Tx Data", (u8 *) p802x_hdr, le16_to_cpu(plocaltxpd->tx_packet_length));
memcpy(ptr, p802x_hdr, le16_to_cpu(plocaltxpd->tx_packet_length)); memcpy(ptr, p802x_hdr, le16_to_cpu(plocaltxpd->tx_packet_length));
ret = priv->hw_host_to_card(priv, MVMS_DAT, ret = priv->hw_host_to_card(priv, MVMS_DAT,
priv->adapter->tmptxbuf, priv->tmptxbuf,
le16_to_cpu(plocaltxpd->tx_packet_length) + le16_to_cpu(plocaltxpd->tx_packet_length) +
sizeof(struct txpd)); sizeof(struct txpd));
...@@ -144,7 +144,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) ...@@ -144,7 +144,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb)
priv->stats.tx_errors++; priv->stats.tx_errors++;
} }
if (!ret && priv->adapter->monitormode != LBS_MONITOR_OFF) { if (!ret && priv->monitormode != LBS_MONITOR_OFF) {
/* Keep the skb to echo it back once Tx feedback is /* Keep the skb to echo it back once Tx feedback is
received from FW */ received from FW */
skb_orphan(skb); skb_orphan(skb);
...@@ -154,7 +154,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) ...@@ -154,7 +154,7 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb)
netif_stop_queue(priv->mesh_dev); netif_stop_queue(priv->mesh_dev);
/* Keep the skb around for when we get feedback */ /* Keep the skb around for when we get feedback */
priv->adapter->currenttxskb = skb; priv->currenttxskb = skb;
} else { } else {
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);
} }
...@@ -166,29 +166,27 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb) ...@@ -166,29 +166,27 @@ static int SendSinglePacket(struct lbs_private *priv, struct sk_buff *skb)
void lbs_tx_runqueue(struct lbs_private *priv) void lbs_tx_runqueue(struct lbs_private *priv)
{ {
struct lbs_adapter *adapter = priv->adapter;
int i; int i;
spin_lock(&adapter->txqueue_lock); spin_lock(&priv->txqueue_lock);
for (i = 0; i < adapter->tx_queue_idx; i++) { for (i = 0; i < priv->tx_queue_idx; i++) {
struct sk_buff *skb = adapter->tx_queue_ps[i]; struct sk_buff *skb = priv->tx_queue_ps[i];
spin_unlock(&adapter->txqueue_lock); spin_unlock(&priv->txqueue_lock);
SendSinglePacket(priv, skb); SendSinglePacket(priv, skb);
spin_lock(&adapter->txqueue_lock); spin_lock(&priv->txqueue_lock);
} }
adapter->tx_queue_idx = 0; priv->tx_queue_idx = 0;
spin_unlock(&adapter->txqueue_lock); spin_unlock(&priv->txqueue_lock);
} }
static void lbs_tx_queue(struct lbs_private *priv, struct sk_buff *skb) static void lbs_tx_queue(struct lbs_private *priv, struct sk_buff *skb)
{ {
struct lbs_adapter *adapter = priv->adapter;
spin_lock(&adapter->txqueue_lock); spin_lock(&priv->txqueue_lock);
WARN_ON(priv->adapter->tx_queue_idx >= NR_TX_QUEUE); WARN_ON(priv->tx_queue_idx >= NR_TX_QUEUE);
adapter->tx_queue_ps[adapter->tx_queue_idx++] = skb; priv->tx_queue_ps[priv->tx_queue_idx++] = skb;
if (adapter->tx_queue_idx == NR_TX_QUEUE) { if (priv->tx_queue_idx == NR_TX_QUEUE) {
netif_stop_queue(priv->dev); netif_stop_queue(priv->dev);
if (priv->mesh_dev) if (priv->mesh_dev)
netif_stop_queue(priv->mesh_dev); netif_stop_queue(priv->mesh_dev);
...@@ -198,7 +196,7 @@ static void lbs_tx_queue(struct lbs_private *priv, struct sk_buff *skb) ...@@ -198,7 +196,7 @@ static void lbs_tx_queue(struct lbs_private *priv, struct sk_buff *skb)
netif_start_queue(priv->mesh_dev); netif_start_queue(priv->mesh_dev);
} }
spin_unlock(&adapter->txqueue_lock); spin_unlock(&priv->txqueue_lock);
} }
/** /**
...@@ -221,8 +219,8 @@ int lbs_process_tx(struct lbs_private *priv, struct sk_buff *skb) ...@@ -221,8 +219,8 @@ int lbs_process_tx(struct lbs_private *priv, struct sk_buff *skb)
goto done; goto done;
} }
if ((priv->adapter->psstate == PS_STATE_SLEEP) || if ((priv->psstate == PS_STATE_SLEEP) ||
(priv->adapter->psstate == PS_STATE_PRE_SLEEP)) { (priv->psstate == PS_STATE_PRE_SLEEP)) {
lbs_tx_queue(priv, skb); lbs_tx_queue(priv, skb);
return ret; return ret;
} }
...@@ -244,17 +242,16 @@ int lbs_process_tx(struct lbs_private *priv, struct sk_buff *skb) ...@@ -244,17 +242,16 @@ int lbs_process_tx(struct lbs_private *priv, struct sk_buff *skb)
*/ */
void lbs_send_tx_feedback(struct lbs_private *priv) void lbs_send_tx_feedback(struct lbs_private *priv)
{ {
struct lbs_adapter *adapter = priv->adapter;
struct tx_radiotap_hdr *radiotap_hdr; struct tx_radiotap_hdr *radiotap_hdr;
u32 status = adapter->eventcause; u32 status = priv->eventcause;
int txfail; int txfail;
int try_count; int try_count;
if (adapter->monitormode == LBS_MONITOR_OFF || if (priv->monitormode == LBS_MONITOR_OFF ||
adapter->currenttxskb == NULL) priv->currenttxskb == NULL)
return; return;
radiotap_hdr = (struct tx_radiotap_hdr *)adapter->currenttxskb->data; radiotap_hdr = (struct tx_radiotap_hdr *)priv->currenttxskb->data;
txfail = (status >> 24); txfail = (status >> 24);
...@@ -267,14 +264,14 @@ void lbs_send_tx_feedback(struct lbs_private *priv) ...@@ -267,14 +264,14 @@ void lbs_send_tx_feedback(struct lbs_private *priv)
#endif #endif
try_count = (status >> 16) & 0xff; try_count = (status >> 16) & 0xff;
radiotap_hdr->data_retries = (try_count) ? radiotap_hdr->data_retries = (try_count) ?
(1 + adapter->txretrycount - try_count) : 0; (1 + priv->txretrycount - try_count) : 0;
lbs_upload_rx_packet(priv, adapter->currenttxskb); lbs_upload_rx_packet(priv, priv->currenttxskb);
adapter->currenttxskb = NULL; priv->currenttxskb = NULL;
if (adapter->connect_status == LBS_CONNECTED) if (priv->connect_status == LBS_CONNECTED)
netif_wake_queue(priv->dev); netif_wake_queue(priv->dev);
if (priv->mesh_dev && (adapter->mesh_connect_status == LBS_CONNECTED)) if (priv->mesh_dev && (priv->mesh_connect_status == LBS_CONNECTED))
netif_wake_queue(priv->mesh_dev); netif_wake_queue(priv->mesh_dev);
} }
EXPORT_SYMBOL_GPL(lbs_send_tx_feedback); EXPORT_SYMBOL_GPL(lbs_send_tx_feedback);
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment