Staging driver changes for 6.2-rc1

Here is the large set of staging driver changes for 6.2-rc1.
 
 Another round of cleanups for staging drivers with no big additions.
 Overall more lines were removed than added, always a nice sign, with
 nothing happening in here other than general coding style cleanups and
 minor fixes in the drivers.  Full, boring, details are in the shortlog.
 
 All of these have been in linux-next for a while with no reported
 problems.
 
 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -----BEGIN PGP SIGNATURE-----
 
 iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCY5wsiw8cZ3JlZ0Brcm9h
 aC5jb20ACgkQMUfUDdst+ylRnQCgxZRxhdCGZU9KxNP02YHAX7yRv7QAoM+KJXv/
 gZGyxkoCu0BHSiAhg1gf
 =NfGd
 -----END PGP SIGNATURE-----

Merge tag 'staging-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging driver updates from Greg KH:
 "Here is the large set of staging driver changes for 6.2-rc1.

  Another round of cleanups for staging drivers with no big additions.
  Overall more lines were removed than added, always a nice sign, with
  nothing happening in here other than general coding style cleanups and
  minor fixes in the drivers. Full, boring, details are in the shortlog.

  All of these have been in linux-next for a while with no reported
  problems"

* tag 'staging-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (253 commits)
  vme: Use root_device_register() not underlined version
  staging: rtl8192e: Fix spelling mistake "ContryIE" -> "CountryIE"
  vme: Fix error not catched in fake_init()
  staging: vme_user: remove multiple blank lines
  staging: r8188eu: use subtype helper in rtw_check_bcn_info
  staging: r8188eu: use subtype helpers in collect_bss_info
  staging: r8188eu: remove unused da parameter
  staging: r8188eu: merge two probereq_p2p functions
  staging: r8188eu: simplify err handling for unknown station
  staging: r8188eu: handle the non-ap case first
  staging: r8188eu: move bBusyTraffic update
  staging: r8188eu: read reason code from ieee80211_mgmt
  staging: r8188eu: use ieee80211_mgmt to parse addresses
  staging: r8188eu: remove a variable
  staging: r8188eu: simplify error handling for missing station
  staging: r8188eu: stop beacon processing if kmalloc fails
  staging: r8188eu: exit if beacon is not from our bss
  staging: r8188eu: simplify update_sta_support_rate params
  staging: r8188eu: use ie buffer in update_beacon_info
  staging: r8188eu: pass only ies to process_p2p_ps_ie
  ...
This commit is contained in:
Linus Torvalds 2022-12-16 03:27:03 -08:00
commit b83a7080d3
122 changed files with 1746 additions and 2794 deletions

View File

@ -154,13 +154,13 @@ static inline uint64_t cvmx_build_bits(uint64_t high_bit,
/** /**
* Convert a memory pointer (void*) into a hardware compatible * Convert a memory pointer (void*) into a hardware compatible
* memory address (uint64_t). Octeon hardware widgets don't * memory address (phys_addr_t). Octeon hardware widgets don't
* understand logical addresses. * understand logical addresses.
* *
* @ptr: C style memory pointer * @ptr: C style memory pointer
* Returns Hardware physical address * Returns Hardware physical address
*/ */
static inline uint64_t cvmx_ptr_to_phys(void *ptr) static inline phys_addr_t cvmx_ptr_to_phys(void *ptr)
{ {
if (sizeof(void *) == 8) { if (sizeof(void *) == 8) {
/* /*

View File

@ -1004,10 +1004,7 @@ static int _nbu2ss_in_dma(struct nbu2ss_udc *udc, struct nbu2ss_ep *ep,
/* MAX Packet Size */ /* MAX Packet Size */
mpkt = _nbu2ss_readl(&preg->EP_REGS[num].EP_PCKT_ADRS) & EPN_MPKT; mpkt = _nbu2ss_readl(&preg->EP_REGS[num].EP_PCKT_ADRS) & EPN_MPKT;
if ((DMA_MAX_COUNT * mpkt) < length) i_write_length = min(DMA_MAX_COUNT * mpkt, length);
i_write_length = DMA_MAX_COUNT * mpkt;
else
i_write_length = length;
/*------------------------------------------------------------*/ /*------------------------------------------------------------*/
/* Number of transmission packets */ /* Number of transmission packets */

View File

@ -28,7 +28,7 @@ static ssize_t online_show(struct device *dev, struct device_attribute *attr,
{ {
struct fieldbus_dev *fb = dev_get_drvdata(dev); struct fieldbus_dev *fb = dev_get_drvdata(dev);
return sprintf(buf, "%d\n", !!fb->online); return sysfs_emit(buf, "%d\n", !!fb->online);
} }
static DEVICE_ATTR_RO(online); static DEVICE_ATTR_RO(online);
@ -39,7 +39,7 @@ static ssize_t enabled_show(struct device *dev, struct device_attribute *attr,
if (!fb->enable_get) if (!fb->enable_get)
return -EINVAL; return -EINVAL;
return sprintf(buf, "%d\n", !!fb->enable_get(fb)); return sysfs_emit(buf, "%d\n", !!fb->enable_get(fb));
} }
static ssize_t enabled_store(struct device *dev, struct device_attribute *attr, static ssize_t enabled_store(struct device *dev, struct device_attribute *attr,
@ -66,11 +66,8 @@ static ssize_t card_name_show(struct device *dev, struct device_attribute *attr,
{ {
struct fieldbus_dev *fb = dev_get_drvdata(dev); struct fieldbus_dev *fb = dev_get_drvdata(dev);
/* /* card_name was provided by child driver. */
* card_name was provided by child driver, could potentially be long. return sysfs_emit(buf, "%s\n", fb->card_name);
* protect against buffer overrun.
*/
return snprintf(buf, PAGE_SIZE, "%s\n", fb->card_name);
} }
static DEVICE_ATTR_RO(card_name); static DEVICE_ATTR_RO(card_name);
@ -79,7 +76,7 @@ static ssize_t read_area_size_show(struct device *dev,
{ {
struct fieldbus_dev *fb = dev_get_drvdata(dev); struct fieldbus_dev *fb = dev_get_drvdata(dev);
return sprintf(buf, "%zu\n", fb->read_area_sz); return sysfs_emit(buf, "%zu\n", fb->read_area_sz);
} }
static DEVICE_ATTR_RO(read_area_size); static DEVICE_ATTR_RO(read_area_size);
@ -88,7 +85,7 @@ static ssize_t write_area_size_show(struct device *dev,
{ {
struct fieldbus_dev *fb = dev_get_drvdata(dev); struct fieldbus_dev *fb = dev_get_drvdata(dev);
return sprintf(buf, "%zu\n", fb->write_area_sz); return sysfs_emit(buf, "%zu\n", fb->write_area_sz);
} }
static DEVICE_ATTR_RO(write_area_size); static DEVICE_ATTR_RO(write_area_size);
@ -116,7 +113,7 @@ static ssize_t fieldbus_type_show(struct device *dev,
break; break;
} }
return sprintf(buf, "%s\n", t); return sysfs_emit(buf, "%s\n", t);
} }
static DEVICE_ATTR_RO(fieldbus_type); static DEVICE_ATTR_RO(fieldbus_type);

View File

@ -21,7 +21,10 @@
#define MUX_TX_MAX_SIZE 2048 #define MUX_TX_MAX_SIZE 2048
#define GDM_TTY_READY(gdm) (gdm && gdm->tty_dev && gdm->port.count) static inline bool gdm_tty_ready(struct gdm *gdm)
{
return gdm && gdm->tty_dev && gdm->port.count;
}
static struct tty_driver *gdm_driver[TTY_MAX_COUNT]; static struct tty_driver *gdm_driver[TTY_MAX_COUNT];
static struct gdm *gdm_table[TTY_MAX_COUNT][GDM_TTY_MINOR]; static struct gdm *gdm_table[TTY_MAX_COUNT][GDM_TTY_MINOR];
@ -113,7 +116,7 @@ static int gdm_tty_recv_complete(void *data,
{ {
struct gdm *gdm = tty_dev->gdm[index]; struct gdm *gdm = tty_dev->gdm[index];
if (!GDM_TTY_READY(gdm)) { if (!gdm_tty_ready(gdm)) {
if (complete == RECV_PACKET_PROCESS_COMPLETE) if (complete == RECV_PACKET_PROCESS_COMPLETE)
gdm->tty_dev->recv_func(gdm->tty_dev->priv_dev, gdm->tty_dev->recv_func(gdm->tty_dev->priv_dev,
gdm_tty_recv_complete); gdm_tty_recv_complete);
@ -140,7 +143,7 @@ static void gdm_tty_send_complete(void *arg)
{ {
struct gdm *gdm = arg; struct gdm *gdm = arg;
if (!GDM_TTY_READY(gdm)) if (!gdm_tty_ready(gdm))
return; return;
tty_port_tty_wakeup(&gdm->port); tty_port_tty_wakeup(&gdm->port);
@ -154,7 +157,7 @@ static int gdm_tty_write(struct tty_struct *tty, const unsigned char *buf,
int sent_len = 0; int sent_len = 0;
int sending_len = 0; int sending_len = 0;
if (!GDM_TTY_READY(gdm)) if (!gdm_tty_ready(gdm))
return -ENODEV; return -ENODEV;
if (!len) if (!len)
@ -181,7 +184,7 @@ static unsigned int gdm_tty_write_room(struct tty_struct *tty)
{ {
struct gdm *gdm = tty->driver_data; struct gdm *gdm = tty->driver_data;
if (!GDM_TTY_READY(gdm)) if (!gdm_tty_ready(gdm))
return 0; return 0;
return WRITE_SIZE; return WRITE_SIZE;

View File

@ -239,7 +239,6 @@ static void show_loopback_devices(struct loopback_test *t)
for (i = 0; i < t->device_count; i++) for (i = 0; i < t->device_count; i++)
printf("device[%d] = %s\n", i, t->devices[i].name); printf("device[%d] = %s\n", i, t->devices[i].name);
} }
int open_sysfs(const char *sys_pfx, const char *node, int flags) int open_sysfs(const char *sys_pfx, const char *node, int flags)
@ -274,7 +273,6 @@ float read_sysfs_float_fd(int fd, const char *sys_pfx, const char *node)
char buf[SYSFS_MAX_INT]; char buf[SYSFS_MAX_INT];
if (read(fd, buf, sizeof(buf)) < 0) { if (read(fd, buf, sizeof(buf)) < 0) {
fprintf(stderr, "unable to read from %s%s %s\n", sys_pfx, node, fprintf(stderr, "unable to read from %s%s %s\n", sys_pfx, node,
strerror(errno)); strerror(errno));
close(fd); close(fd);
@ -367,7 +365,6 @@ static int get_results(struct loopback_test *t)
r->apbridge_unipro_latency_max - r->apbridge_unipro_latency_min; r->apbridge_unipro_latency_max - r->apbridge_unipro_latency_min;
r->gbphy_firmware_latency_jitter = r->gbphy_firmware_latency_jitter =
r->gbphy_firmware_latency_max - r->gbphy_firmware_latency_min; r->gbphy_firmware_latency_max - r->gbphy_firmware_latency_min;
} }
/*calculate the aggregate results of all enabled devices */ /*calculate the aggregate results of all enabled devices */
@ -407,7 +404,6 @@ static int get_results(struct loopback_test *t)
r->apbridge_unipro_latency_max - r->apbridge_unipro_latency_min; r->apbridge_unipro_latency_max - r->apbridge_unipro_latency_min;
r->gbphy_firmware_latency_jitter = r->gbphy_firmware_latency_jitter =
r->gbphy_firmware_latency_max - r->gbphy_firmware_latency_min; r->gbphy_firmware_latency_max - r->gbphy_firmware_latency_min;
} }
return 0; return 0;
@ -536,7 +532,6 @@ static int log_results(struct loopback_test *t)
fprintf(stderr, "unable to open %s for appending\n", file_name); fprintf(stderr, "unable to open %s for appending\n", file_name);
abort(); abort();
} }
} }
for (i = 0; i < t->device_count; i++) { for (i = 0; i < t->device_count; i++) {
if (!device_enabled(t, i)) if (!device_enabled(t, i))
@ -550,10 +545,8 @@ static int log_results(struct loopback_test *t)
if (ret == -1) if (ret == -1)
fprintf(stderr, "unable to write %d bytes to csv.\n", len); fprintf(stderr, "unable to write %d bytes to csv.\n", len);
} }
} }
if (t->aggregate_output) { if (t->aggregate_output) {
len = format_output(t, &t->aggregate_results, "aggregate", len = format_output(t, &t->aggregate_results, "aggregate",
data, sizeof(data), &tm); data, sizeof(data), &tm);
@ -675,6 +668,7 @@ err:
static int close_poll_files(struct loopback_test *t) static int close_poll_files(struct loopback_test *t)
{ {
int i; int i;
for (i = 0; i < t->poll_count; i++) for (i = 0; i < t->poll_count; i++)
close(t->fds[i].fd); close(t->fds[i].fd);
@ -740,7 +734,6 @@ static int wait_for_complete(struct loopback_test *t)
ts = &t->poll_timeout; ts = &t->poll_timeout;
while (1) { while (1) {
ret = ppoll(t->fds, t->poll_count, ts, &mask_old); ret = ppoll(t->fds, t->poll_count, ts, &mask_old);
if (ret <= 0) { if (ret <= 0) {
stop_tests(t); stop_tests(t);
@ -780,7 +773,6 @@ static void prepare_devices(struct loopback_test *t)
if (t->stop_all || device_enabled(t, i)) if (t->stop_all || device_enabled(t, i))
write_sysfs_val(t->devices[i].sysfs_entry, "type", 0); write_sysfs_val(t->devices[i].sysfs_entry, "type", 0);
for (i = 0; i < t->device_count; i++) { for (i = 0; i < t->device_count; i++) {
if (!device_enabled(t, i)) if (!device_enabled(t, i))
continue; continue;
@ -823,7 +815,6 @@ static int start(struct loopback_test *t)
return 0; return 0;
} }
void loopback_run(struct loopback_test *t) void loopback_run(struct loopback_test *t)
{ {
int i; int i;
@ -852,7 +843,6 @@ void loopback_run(struct loopback_test *t)
if (ret) if (ret)
goto err; goto err;
get_results(t); get_results(t);
log_results(t); log_results(t);
@ -861,7 +851,6 @@ void loopback_run(struct loopback_test *t)
err: err:
printf("Error running test\n"); printf("Error running test\n");
return;
} }
static int sanity_check(struct loopback_test *t) static int sanity_check(struct loopback_test *t)
@ -881,10 +870,8 @@ static int sanity_check(struct loopback_test *t)
fprintf(stderr, "Bad device mask %x\n", (1 << i)); fprintf(stderr, "Bad device mask %x\n", (1 << i));
return -1; return -1;
} }
} }
return 0; return 0;
} }

View File

@ -331,11 +331,9 @@ static IIO_DEV_ATTR_PHASE(0, 1, 0200, NULL, ad9834_write, AD9834_REG_PHASE1);
static IIO_DEV_ATTR_PHASESYMBOL(0, 0200, NULL, ad9834_write, AD9834_PSEL); static IIO_DEV_ATTR_PHASESYMBOL(0, 0200, NULL, ad9834_write, AD9834_PSEL);
static IIO_CONST_ATTR_PHASE_SCALE(0, "0.0015339808"); /* 2PI/2^12 rad*/ static IIO_CONST_ATTR_PHASE_SCALE(0, "0.0015339808"); /* 2PI/2^12 rad*/
static IIO_DEV_ATTR_PINCONTROL_EN(0, 0200, NULL, static IIO_DEV_ATTR_PINCONTROL_EN(0, 0200, NULL, ad9834_write, AD9834_PIN_SW);
ad9834_write, AD9834_PIN_SW);
static IIO_DEV_ATTR_OUT_ENABLE(0, 0200, NULL, ad9834_write, AD9834_RESET); static IIO_DEV_ATTR_OUT_ENABLE(0, 0200, NULL, ad9834_write, AD9834_RESET);
static IIO_DEV_ATTR_OUTY_ENABLE(0, 1, 0200, NULL, static IIO_DEV_ATTR_OUTY_ENABLE(0, 1, 0200, NULL, ad9834_write, AD9834_OPBITEN);
ad9834_write, AD9834_OPBITEN);
static IIO_DEV_ATTR_OUT_WAVETYPE(0, 0, ad9834_store_wavetype, 0); static IIO_DEV_ATTR_OUT_WAVETYPE(0, 0, ad9834_store_wavetype, 0);
static IIO_DEV_ATTR_OUT_WAVETYPE(0, 1, ad9834_store_wavetype, 1); static IIO_DEV_ATTR_OUT_WAVETYPE(0, 1, ad9834_store_wavetype, 1);

View File

@ -109,8 +109,7 @@ unlock:
return ret; return ret;
} }
static int ade7854_i2c_probe(struct i2c_client *client, static int ade7854_i2c_probe(struct i2c_client *client)
const struct i2c_device_id *id)
{ {
struct ade7854_state *st; struct ade7854_state *st;
struct iio_dev *indio_dev; struct iio_dev *indio_dev;
@ -141,7 +140,7 @@ static struct i2c_driver ade7854_i2c_driver = {
.driver = { .driver = {
.name = "ade7854", .name = "ade7854",
}, },
.probe = ade7854_i2c_probe, .probe_new = ade7854_i2c_probe,
.id_table = ade7854_id, .id_table = ade7854_id,
}; };
module_i2c_driver(ade7854_i2c_driver); module_i2c_driver(ade7854_i2c_driver);

View File

@ -27,6 +27,9 @@ Now the TODOs:
- fix the 'card removal' event when card is inserted when booting - fix the 'card removal' event when card is inserted when booting
- check what other upstream wireless mechanisms can be used instead of the - check what other upstream wireless mechanisms can be used instead of the
custom ones here custom ones here
- Switch to use LIB80211.
- Switch to use MAC80211.
- Switch to use CFG80211.
Please send any patches to: Please send any patches to:
Greg Kroah-Hartman <gregkh@linuxfoundation.org> Greg Kroah-Hartman <gregkh@linuxfoundation.org>

View File

@ -1763,8 +1763,8 @@ static struct iw_statistics *ks_get_wireless_stats(struct net_device *dev)
} }
static int ks_wlan_set_stop_request(struct net_device *dev, static int ks_wlan_set_stop_request(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
@ -1772,7 +1772,7 @@ static int ks_wlan_set_stop_request(struct net_device *dev,
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
if (!(*uwrq)) if (!(uwrq->mode))
return -EINVAL; return -EINVAL;
hostif_sme_enqueue(priv, SME_STOP_REQUEST); hostif_sme_enqueue(priv, SME_STOP_REQUEST);
@ -1786,7 +1786,9 @@ static int ks_wlan_set_mlme(struct net_device *dev,
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
struct iw_mlme *mlme = (struct iw_mlme *)extra; struct iw_mlme *mlme = (struct iw_mlme *)extra;
__u32 mode = 1; union iwreq_data uwrq;
uwrq.mode = 1;
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
@ -1799,13 +1801,14 @@ static int ks_wlan_set_mlme(struct net_device *dev,
mlme->reason_code == WLAN_REASON_MIC_FAILURE) mlme->reason_code == WLAN_REASON_MIC_FAILURE)
return 0; return 0;
return ks_wlan_set_stop_request(dev, NULL, &mode, NULL); return ks_wlan_set_stop_request(dev, NULL, &uwrq, NULL);
} }
static int ks_wlan_get_firmware_version(struct net_device *dev, static int ks_wlan_get_firmware_version(struct net_device *dev,
struct iw_request_info *info, struct iw_request_info *info,
struct iw_point *dwrq, char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct iw_point *dwrq = &uwrq->data;
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
dwrq->length = priv->version_size + 1; dwrq->length = priv->version_size + 1;
@ -1814,8 +1817,8 @@ static int ks_wlan_get_firmware_version(struct net_device *dev,
} }
static int ks_wlan_set_preamble(struct net_device *dev, static int ks_wlan_set_preamble(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
@ -1823,17 +1826,17 @@ static int ks_wlan_set_preamble(struct net_device *dev,
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
if (*uwrq != LONG_PREAMBLE && *uwrq != SHORT_PREAMBLE) if (uwrq->mode != LONG_PREAMBLE && uwrq->mode != SHORT_PREAMBLE)
return -EINVAL; return -EINVAL;
priv->reg.preamble = *uwrq; priv->reg.preamble = uwrq->mode;
priv->need_commit |= SME_MODE_SET; priv->need_commit |= SME_MODE_SET;
return -EINPROGRESS; /* Call commit handler */ return -EINPROGRESS; /* Call commit handler */
} }
static int ks_wlan_get_preamble(struct net_device *dev, static int ks_wlan_get_preamble(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
@ -1841,37 +1844,37 @@ static int ks_wlan_get_preamble(struct net_device *dev,
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
*uwrq = priv->reg.preamble; uwrq->mode = priv->reg.preamble;
return 0; return 0;
} }
static int ks_wlan_set_power_mgmt(struct net_device *dev, static int ks_wlan_set_power_mgmt(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
if (*uwrq != POWER_MGMT_ACTIVE && if (uwrq->mode != POWER_MGMT_ACTIVE &&
*uwrq != POWER_MGMT_SAVE1 && uwrq->mode != POWER_MGMT_SAVE1 &&
*uwrq != POWER_MGMT_SAVE2) uwrq->mode != POWER_MGMT_SAVE2)
return -EINVAL; return -EINVAL;
if ((*uwrq == POWER_MGMT_SAVE1 || *uwrq == POWER_MGMT_SAVE2) && if ((uwrq->mode == POWER_MGMT_SAVE1 || uwrq->mode == POWER_MGMT_SAVE2) &&
(priv->reg.operation_mode != MODE_INFRASTRUCTURE)) (priv->reg.operation_mode != MODE_INFRASTRUCTURE))
return -EINVAL; return -EINVAL;
priv->reg.power_mgmt = *uwrq; priv->reg.power_mgmt = uwrq->mode;
hostif_sme_enqueue(priv, SME_POW_MNGMT_REQUEST); hostif_sme_enqueue(priv, SME_POW_MNGMT_REQUEST);
return 0; return 0;
} }
static int ks_wlan_get_power_mgmt(struct net_device *dev, static int ks_wlan_get_power_mgmt(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
@ -1879,13 +1882,13 @@ static int ks_wlan_get_power_mgmt(struct net_device *dev,
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
*uwrq = priv->reg.power_mgmt; uwrq->mode = priv->reg.power_mgmt;
return 0; return 0;
} }
static int ks_wlan_set_scan_type(struct net_device *dev, static int ks_wlan_set_scan_type(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
@ -1893,39 +1896,39 @@ static int ks_wlan_set_scan_type(struct net_device *dev,
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
if (*uwrq != ACTIVE_SCAN && *uwrq != PASSIVE_SCAN) if (uwrq->mode != ACTIVE_SCAN && uwrq->mode != PASSIVE_SCAN)
return -EINVAL; return -EINVAL;
priv->reg.scan_type = *uwrq; priv->reg.scan_type = uwrq->mode;
return 0; return 0;
} }
static int ks_wlan_get_scan_type(struct net_device *dev, static int ks_wlan_get_scan_type(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
*uwrq = priv->reg.scan_type; uwrq->mode = priv->reg.scan_type;
return 0; return 0;
} }
static int ks_wlan_set_beacon_lost(struct net_device *dev, static int ks_wlan_set_beacon_lost(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
if (*uwrq > BEACON_LOST_COUNT_MAX) if (uwrq->mode > BEACON_LOST_COUNT_MAX)
return -EINVAL; return -EINVAL;
priv->reg.beacon_lost_count = *uwrq; priv->reg.beacon_lost_count = uwrq->mode;
if (priv->reg.operation_mode == MODE_INFRASTRUCTURE) { if (priv->reg.operation_mode == MODE_INFRASTRUCTURE) {
priv->need_commit |= SME_MODE_SET; priv->need_commit |= SME_MODE_SET;
@ -1936,101 +1939,101 @@ static int ks_wlan_set_beacon_lost(struct net_device *dev,
} }
static int ks_wlan_get_beacon_lost(struct net_device *dev, static int ks_wlan_get_beacon_lost(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
*uwrq = priv->reg.beacon_lost_count; uwrq->mode = priv->reg.beacon_lost_count;
return 0; return 0;
} }
static int ks_wlan_set_phy_type(struct net_device *dev, static int ks_wlan_set_phy_type(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
if (*uwrq != D_11B_ONLY_MODE && if (uwrq->mode != D_11B_ONLY_MODE &&
*uwrq != D_11G_ONLY_MODE && uwrq->mode != D_11G_ONLY_MODE &&
*uwrq != D_11BG_COMPATIBLE_MODE) uwrq->mode != D_11BG_COMPATIBLE_MODE)
return -EINVAL; return -EINVAL;
/* for SLEEP MODE */ /* for SLEEP MODE */
priv->reg.phy_type = *uwrq; priv->reg.phy_type = uwrq->mode;
priv->need_commit |= SME_MODE_SET; priv->need_commit |= SME_MODE_SET;
return -EINPROGRESS; /* Call commit handler */ return -EINPROGRESS; /* Call commit handler */
} }
static int ks_wlan_get_phy_type(struct net_device *dev, static int ks_wlan_get_phy_type(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
*uwrq = priv->reg.phy_type; uwrq->mode = priv->reg.phy_type;
return 0; return 0;
} }
static int ks_wlan_set_cts_mode(struct net_device *dev, static int ks_wlan_set_cts_mode(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
if (*uwrq != CTS_MODE_FALSE && *uwrq != CTS_MODE_TRUE) if (uwrq->mode != CTS_MODE_FALSE && uwrq->mode != CTS_MODE_TRUE)
return -EINVAL; return -EINVAL;
priv->reg.cts_mode = (*uwrq == CTS_MODE_FALSE) ? *uwrq : priv->reg.cts_mode = (uwrq->mode == CTS_MODE_FALSE) ? uwrq->mode :
(priv->reg.phy_type == D_11G_ONLY_MODE || (priv->reg.phy_type == D_11G_ONLY_MODE ||
priv->reg.phy_type == D_11BG_COMPATIBLE_MODE) ? priv->reg.phy_type == D_11BG_COMPATIBLE_MODE) ?
*uwrq : !*uwrq; uwrq->mode : !uwrq->mode;
priv->need_commit |= SME_MODE_SET; priv->need_commit |= SME_MODE_SET;
return -EINPROGRESS; /* Call commit handler */ return -EINPROGRESS; /* Call commit handler */
} }
static int ks_wlan_get_cts_mode(struct net_device *dev, static int ks_wlan_get_cts_mode(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
*uwrq = priv->reg.cts_mode; uwrq->mode = priv->reg.cts_mode;
return 0; return 0;
} }
static int ks_wlan_set_sleep_mode(struct net_device *dev, static int ks_wlan_set_sleep_mode(struct net_device *dev,
struct iw_request_info *info, struct iw_request_info *info,
__u32 *uwrq, char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (*uwrq != SLP_SLEEP && if (uwrq->mode != SLP_SLEEP &&
*uwrq != SLP_ACTIVE) { uwrq->mode != SLP_ACTIVE) {
netdev_err(dev, "SET_SLEEP_MODE %d error\n", *uwrq); netdev_err(dev, "SET_SLEEP_MODE %d error\n", uwrq->mode);
return -EINVAL; return -EINVAL;
} }
priv->sleep_mode = *uwrq; priv->sleep_mode = uwrq->mode;
netdev_info(dev, "SET_SLEEP_MODE %d\n", priv->sleep_mode); netdev_info(dev, "SET_SLEEP_MODE %d\n", priv->sleep_mode);
if (*uwrq == SLP_SLEEP) if (uwrq->mode == SLP_SLEEP)
hostif_sme_enqueue(priv, SME_STOP_REQUEST); hostif_sme_enqueue(priv, SME_STOP_REQUEST);
hostif_sme_enqueue(priv, SME_SLEEP_REQUEST); hostif_sme_enqueue(priv, SME_SLEEP_REQUEST);
@ -2040,52 +2043,53 @@ static int ks_wlan_set_sleep_mode(struct net_device *dev,
static int ks_wlan_get_sleep_mode(struct net_device *dev, static int ks_wlan_get_sleep_mode(struct net_device *dev,
struct iw_request_info *info, struct iw_request_info *info,
__u32 *uwrq, char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
*uwrq = priv->sleep_mode; uwrq->mode = priv->sleep_mode;
return 0; return 0;
} }
static int ks_wlan_set_wps_enable(struct net_device *dev, static int ks_wlan_set_wps_enable(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
if (*uwrq != 0 && *uwrq != 1) if (uwrq->mode != 0 && uwrq->mode != 1)
return -EINVAL; return -EINVAL;
priv->wps.wps_enabled = *uwrq; priv->wps.wps_enabled = uwrq->mode;
hostif_sme_enqueue(priv, SME_WPS_ENABLE_REQUEST); hostif_sme_enqueue(priv, SME_WPS_ENABLE_REQUEST);
return 0; return 0;
} }
static int ks_wlan_get_wps_enable(struct net_device *dev, static int ks_wlan_get_wps_enable(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
*uwrq = priv->wps.wps_enabled; uwrq->mode = priv->wps.wps_enabled;
netdev_info(dev, "return=%d\n", *uwrq); netdev_info(dev, "return=%d\n", uwrq->mode);
return 0; return 0;
} }
static int ks_wlan_set_wps_probe_req(struct net_device *dev, static int ks_wlan_set_wps_probe_req(struct net_device *dev,
struct iw_request_info *info, struct iw_request_info *info,
struct iw_point *dwrq, char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct iw_point *dwrq = &uwrq->data;
u8 *p = extra; u8 *p = extra;
unsigned char len; unsigned char len;
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
@ -2114,76 +2118,76 @@ static int ks_wlan_set_wps_probe_req(struct net_device *dev,
} }
static int ks_wlan_set_tx_gain(struct net_device *dev, static int ks_wlan_set_tx_gain(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
if (*uwrq > 0xFF) if (uwrq->mode > 0xFF)
return -EINVAL; return -EINVAL;
priv->gain.tx_gain = (u8)*uwrq; priv->gain.tx_gain = (u8)uwrq->mode;
priv->gain.tx_mode = (priv->gain.tx_gain < 0xFF) ? 1 : 0; priv->gain.tx_mode = (priv->gain.tx_gain < 0xFF) ? 1 : 0;
hostif_sme_enqueue(priv, SME_SET_GAIN); hostif_sme_enqueue(priv, SME_SET_GAIN);
return 0; return 0;
} }
static int ks_wlan_get_tx_gain(struct net_device *dev, static int ks_wlan_get_tx_gain(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
*uwrq = priv->gain.tx_gain; uwrq->mode = priv->gain.tx_gain;
hostif_sme_enqueue(priv, SME_GET_GAIN); hostif_sme_enqueue(priv, SME_GET_GAIN);
return 0; return 0;
} }
static int ks_wlan_set_rx_gain(struct net_device *dev, static int ks_wlan_set_rx_gain(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
if (*uwrq > 0xFF) if (uwrq->mode > 0xFF)
return -EINVAL; return -EINVAL;
priv->gain.rx_gain = (u8)*uwrq; priv->gain.rx_gain = (u8)uwrq->mode;
priv->gain.rx_mode = (priv->gain.rx_gain < 0xFF) ? 1 : 0; priv->gain.rx_mode = (priv->gain.rx_gain < 0xFF) ? 1 : 0;
hostif_sme_enqueue(priv, SME_SET_GAIN); hostif_sme_enqueue(priv, SME_SET_GAIN);
return 0; return 0;
} }
static int ks_wlan_get_rx_gain(struct net_device *dev, static int ks_wlan_get_rx_gain(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
if (priv->sleep_mode == SLP_SLEEP) if (priv->sleep_mode == SLP_SLEEP)
return -EPERM; return -EPERM;
/* for SLEEP MODE */ /* for SLEEP MODE */
*uwrq = priv->gain.rx_gain; uwrq->mode = priv->gain.rx_gain;
hostif_sme_enqueue(priv, SME_GET_GAIN); hostif_sme_enqueue(priv, SME_GET_GAIN);
return 0; return 0;
} }
static int ks_wlan_get_eeprom_cksum(struct net_device *dev, static int ks_wlan_get_eeprom_cksum(struct net_device *dev,
struct iw_request_info *info, __u32 *uwrq, struct iw_request_info *info,
char *extra) union iwreq_data *uwrq, char *extra)
{ {
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
*uwrq = priv->eeprom_checksum; uwrq->mode = priv->eeprom_checksum;
return 0; return 0;
} }
@ -2302,7 +2306,7 @@ static void print_hif_event(struct net_device *dev, int event)
/* get host command history */ /* get host command history */
static int ks_wlan_hostt(struct net_device *dev, struct iw_request_info *info, static int ks_wlan_hostt(struct net_device *dev, struct iw_request_info *info,
__u32 *uwrq, char *extra) union iwreq_data *uwrq, char *extra)
{ {
int i, event; int i, event;
struct ks_wlan_private *priv = netdev_priv(dev); struct ks_wlan_private *priv = netdev_priv(dev);
@ -2409,38 +2413,38 @@ static const iw_handler ks_wlan_handler[] = {
/* private_handler */ /* private_handler */
static const iw_handler ks_wlan_private_handler[] = { static const iw_handler ks_wlan_private_handler[] = {
(iw_handler)NULL, /* 0 */ NULL, /* 0 */
(iw_handler)NULL, /* 1, KS_WLAN_GET_DRIVER_VERSION */ NULL, /* 1, KS_WLAN_GET_DRIVER_VERSION */
(iw_handler)NULL, /* 2 */ NULL, /* 2 */
(iw_handler)ks_wlan_get_firmware_version,/* 3 KS_WLAN_GET_FIRM_VERSION */ ks_wlan_get_firmware_version, /* 3 KS_WLAN_GET_FIRM_VERSION */
(iw_handler)ks_wlan_set_wps_enable, /* 4 KS_WLAN_SET_WPS_ENABLE */ ks_wlan_set_wps_enable, /* 4 KS_WLAN_SET_WPS_ENABLE */
(iw_handler)ks_wlan_get_wps_enable, /* 5 KS_WLAN_GET_WPS_ENABLE */ ks_wlan_get_wps_enable, /* 5 KS_WLAN_GET_WPS_ENABLE */
(iw_handler)ks_wlan_set_wps_probe_req, /* 6 KS_WLAN_SET_WPS_PROBE_REQ */ ks_wlan_set_wps_probe_req, /* 6 KS_WLAN_SET_WPS_PROBE_REQ */
(iw_handler)ks_wlan_get_eeprom_cksum, /* 7 KS_WLAN_GET_CONNECT */ ks_wlan_get_eeprom_cksum, /* 7 KS_WLAN_GET_CONNECT */
(iw_handler)ks_wlan_set_preamble, /* 8 KS_WLAN_SET_PREAMBLE */ ks_wlan_set_preamble, /* 8 KS_WLAN_SET_PREAMBLE */
(iw_handler)ks_wlan_get_preamble, /* 9 KS_WLAN_GET_PREAMBLE */ ks_wlan_get_preamble, /* 9 KS_WLAN_GET_PREAMBLE */
(iw_handler)ks_wlan_set_power_mgmt, /* 10 KS_WLAN_SET_POWER_SAVE */ ks_wlan_set_power_mgmt, /* 10 KS_WLAN_SET_POWER_SAVE */
(iw_handler)ks_wlan_get_power_mgmt, /* 11 KS_WLAN_GET_POWER_SAVE */ ks_wlan_get_power_mgmt, /* 11 KS_WLAN_GET_POWER_SAVE */
(iw_handler)ks_wlan_set_scan_type, /* 12 KS_WLAN_SET_SCAN_TYPE */ ks_wlan_set_scan_type, /* 12 KS_WLAN_SET_SCAN_TYPE */
(iw_handler)ks_wlan_get_scan_type, /* 13 KS_WLAN_GET_SCAN_TYPE */ ks_wlan_get_scan_type, /* 13 KS_WLAN_GET_SCAN_TYPE */
(iw_handler)ks_wlan_set_rx_gain, /* 14 KS_WLAN_SET_RX_GAIN */ ks_wlan_set_rx_gain, /* 14 KS_WLAN_SET_RX_GAIN */
(iw_handler)ks_wlan_get_rx_gain, /* 15 KS_WLAN_GET_RX_GAIN */ ks_wlan_get_rx_gain, /* 15 KS_WLAN_GET_RX_GAIN */
(iw_handler)ks_wlan_hostt, /* 16 KS_WLAN_HOSTT */ ks_wlan_hostt, /* 16 KS_WLAN_HOSTT */
(iw_handler)NULL, /* 17 */ NULL, /* 17 */
(iw_handler)ks_wlan_set_beacon_lost, /* 18 KS_WLAN_SET_BECAN_LOST */ ks_wlan_set_beacon_lost, /* 18 KS_WLAN_SET_BECAN_LOST */
(iw_handler)ks_wlan_get_beacon_lost, /* 19 KS_WLAN_GET_BECAN_LOST */ ks_wlan_get_beacon_lost, /* 19 KS_WLAN_GET_BECAN_LOST */
(iw_handler)ks_wlan_set_tx_gain, /* 20 KS_WLAN_SET_TX_GAIN */ ks_wlan_set_tx_gain, /* 20 KS_WLAN_SET_TX_GAIN */
(iw_handler)ks_wlan_get_tx_gain, /* 21 KS_WLAN_GET_TX_GAIN */ ks_wlan_get_tx_gain, /* 21 KS_WLAN_GET_TX_GAIN */
(iw_handler)ks_wlan_set_phy_type, /* 22 KS_WLAN_SET_PHY_TYPE */ ks_wlan_set_phy_type, /* 22 KS_WLAN_SET_PHY_TYPE */
(iw_handler)ks_wlan_get_phy_type, /* 23 KS_WLAN_GET_PHY_TYPE */ ks_wlan_get_phy_type, /* 23 KS_WLAN_GET_PHY_TYPE */
(iw_handler)ks_wlan_set_cts_mode, /* 24 KS_WLAN_SET_CTS_MODE */ ks_wlan_set_cts_mode, /* 24 KS_WLAN_SET_CTS_MODE */
(iw_handler)ks_wlan_get_cts_mode, /* 25 KS_WLAN_GET_CTS_MODE */ ks_wlan_get_cts_mode, /* 25 KS_WLAN_GET_CTS_MODE */
(iw_handler)NULL, /* 26 */ NULL, /* 26 */
(iw_handler)NULL, /* 27 */ NULL, /* 27 */
(iw_handler)ks_wlan_set_sleep_mode, /* 28 KS_WLAN_SET_SLEEP_MODE */ ks_wlan_set_sleep_mode, /* 28 KS_WLAN_SET_SLEEP_MODE */
(iw_handler)ks_wlan_get_sleep_mode, /* 29 KS_WLAN_GET_SLEEP_MODE */ ks_wlan_get_sleep_mode, /* 29 KS_WLAN_GET_SLEEP_MODE */
(iw_handler)NULL, /* 30 */ NULL, /* 30 */
(iw_handler)NULL, /* 31 */ NULL, /* 31 */
}; };
static const struct iw_handler_def ks_wlan_handler_def = { static const struct iw_handler_def ks_wlan_handler_def = {
@ -2461,7 +2465,7 @@ static int ks_wlan_netdev_ioctl(struct net_device *dev, struct ifreq *rq,
switch (cmd) { switch (cmd) {
case SIOCIWFIRSTPRIV + 20: /* KS_WLAN_SET_STOP_REQ */ case SIOCIWFIRSTPRIV + 20: /* KS_WLAN_SET_STOP_REQ */
ret = ks_wlan_set_stop_request(dev, NULL, &wrq->u.mode, NULL); ret = ks_wlan_set_stop_request(dev, NULL, &wrq->u, NULL);
break; break;
// All other calls are currently unsupported // All other calls are currently unsupported
default: default:

View File

@ -161,7 +161,7 @@ static int try_start_dim_transfer(struct hdm_channel *hdm_ch)
struct list_head *head = &hdm_ch->pending_list; struct list_head *head = &hdm_ch->pending_list;
struct mbo *mbo; struct mbo *mbo;
unsigned long flags; unsigned long flags;
struct dim_ch_state_t st; struct dim_ch_state st;
BUG_ON(!hdm_ch); BUG_ON(!hdm_ch);
BUG_ON(!hdm_ch->is_initialized); BUG_ON(!hdm_ch->is_initialized);
@ -259,7 +259,7 @@ static void retrieve_netinfo(struct dim2_hdm *dev, struct mbo *mbo)
static void service_done_flag(struct dim2_hdm *dev, int ch_idx) static void service_done_flag(struct dim2_hdm *dev, int ch_idx)
{ {
struct hdm_channel *hdm_ch = dev->hch + ch_idx; struct hdm_channel *hdm_ch = dev->hch + ch_idx;
struct dim_ch_state_t st; struct dim_ch_state st;
struct list_head *head; struct list_head *head;
struct mbo *mbo; struct mbo *mbo;
int done_buffers; int done_buffers;

View File

@ -943,8 +943,8 @@ u8 dim_service_channel(struct dim_channel *ch)
return channel_service(ch); return channel_service(ch);
} }
struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch, struct dim_ch_state *dim_get_channel_state(struct dim_channel *ch,
struct dim_ch_state_t *state_ptr) struct dim_ch_state *state_ptr)
{ {
if (!ch || !state_ptr) if (!ch || !state_ptr)
return NULL; return NULL;

View File

@ -27,7 +27,7 @@ enum mlb_clk_speed {
CLK_8192FS = 7, CLK_8192FS = 7,
}; };
struct dim_ch_state_t { struct dim_ch_state {
bool ready; /* Shows readiness to enqueue next buffer */ bool ready; /* Shows readiness to enqueue next buffer */
u16 done_buffers; /* Number of completed buffers */ u16 done_buffers; /* Number of completed buffers */
}; };
@ -87,8 +87,8 @@ void dim_service_ahb_int_irq(struct dim_channel *const *channels);
u8 dim_service_channel(struct dim_channel *ch); u8 dim_service_channel(struct dim_channel *ch);
struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch, struct dim_ch_state *dim_get_channel_state(struct dim_channel *ch,
struct dim_ch_state_t *state_ptr); struct dim_ch_state *state_ptr);
u16 dim_dbr_space(struct dim_channel *ch); u16 dim_dbr_space(struct dim_channel *ch);

View File

@ -284,7 +284,7 @@ static irqreturn_t most_irq_handler(int irq, void *_dev)
* *
* Register the i2c client device as a MOST interface * Register the i2c client device as a MOST interface
*/ */
static int i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) static int i2c_probe(struct i2c_client *client)
{ {
struct hdm_i2c *dev; struct hdm_i2c *dev;
int ret, i; int ret, i;
@ -359,7 +359,7 @@ static struct i2c_driver i2c_driver = {
.driver = { .driver = {
.name = "hdm_i2c", .name = "hdm_i2c",
}, },
.probe = i2c_probe, .probe_new = i2c_probe,
.remove = i2c_remove, .remove = i2c_remove,
.id_table = i2c_id, .id_table = i2c_id,
}; };

View File

@ -73,7 +73,6 @@ static void cvm_oct_free_tx_skbs(struct net_device *dev)
{ {
int skb_to_free; int skb_to_free;
int qos, queues_per_port; int qos, queues_per_port;
int total_freed = 0;
int total_remaining = 0; int total_remaining = 0;
unsigned long flags; unsigned long flags;
struct octeon_ethernet *priv = netdev_priv(dev); struct octeon_ethernet *priv = netdev_priv(dev);
@ -87,7 +86,6 @@ static void cvm_oct_free_tx_skbs(struct net_device *dev)
MAX_SKB_TO_FREE); MAX_SKB_TO_FREE);
skb_to_free = cvm_oct_adjust_skb_to_free(skb_to_free, skb_to_free = cvm_oct_adjust_skb_to_free(skb_to_free,
priv->fau + qos * 4); priv->fau + qos * 4);
total_freed += skb_to_free;
if (skb_to_free > 0) { if (skb_to_free > 0) {
struct sk_buff *to_free_list = NULL; struct sk_buff *to_free_list = NULL;

View File

@ -1212,7 +1212,7 @@ static inline void *cvmx_phys_to_ptr(uint64_t physical_address)
return (void *)(uintptr_t)(physical_address); return (void *)(uintptr_t)(physical_address);
} }
static inline uint64_t cvmx_ptr_to_phys(void *ptr) static inline phys_addr_t cvmx_ptr_to_phys(void *ptr)
{ {
return (unsigned long)ptr; return (unsigned long)ptr;
} }

View File

@ -579,7 +579,7 @@ static int dcon_detect(struct i2c_client *client, struct i2c_board_info *info)
return 0; return 0;
} }
static int dcon_probe(struct i2c_client *client, const struct i2c_device_id *id) static int dcon_probe(struct i2c_client *client)
{ {
struct dcon_priv *dcon; struct dcon_priv *dcon;
int rc, i, j; int rc, i, j;
@ -779,7 +779,7 @@ static struct i2c_driver dcon_driver = {
}, },
.class = I2C_CLASS_DDC | I2C_CLASS_HWMON, .class = I2C_CLASS_DDC | I2C_CLASS_HWMON,
.id_table = dcon_idtable, .id_table = dcon_idtable,
.probe = dcon_probe, .probe_new = dcon_probe,
.remove = dcon_remove, .remove = dcon_remove,
.detect = dcon_detect, .detect = dcon_detect,
.address_list = normal_i2c, .address_list = normal_i2c,

View File

@ -1017,10 +1017,9 @@ u8 ap_free_sta(struct adapter *padapter, struct sta_info *psta,
return beacon_updated; return beacon_updated;
} }
int rtw_sta_flush(struct adapter *padapter) void rtw_sta_flush(struct adapter *padapter)
{ {
struct list_head *phead, *plist; struct list_head *phead, *plist;
int ret = 0;
struct sta_info *psta = NULL; struct sta_info *psta = NULL;
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
@ -1028,7 +1027,7 @@ int rtw_sta_flush(struct adapter *padapter)
u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE) if ((pmlmeinfo->state & 0x03) != WIFI_FW_AP_STATE)
return ret; return;
spin_lock_bh(&pstapriv->asoc_list_lock); spin_lock_bh(&pstapriv->asoc_list_lock);
phead = &pstapriv->asoc_list; phead = &pstapriv->asoc_list;
@ -1050,8 +1049,6 @@ int rtw_sta_flush(struct adapter *padapter)
issue_deauth(padapter, bc_addr, WLAN_REASON_DEAUTH_LEAVING); issue_deauth(padapter, bc_addr, WLAN_REASON_DEAUTH_LEAVING);
associated_clients_update(padapter, true); associated_clients_update(padapter, true);
return ret;
} }
/* called > TSR LEVEL for USB or SDIO Interface*/ /* called > TSR LEVEL for USB or SDIO Interface*/

View File

@ -50,17 +50,17 @@
static unsigned char *__nat25_find_pppoe_tag(struct pppoe_hdr *ph, unsigned short type) static unsigned char *__nat25_find_pppoe_tag(struct pppoe_hdr *ph, unsigned short type)
{ {
unsigned char *cur_ptr, *start_ptr; unsigned char *cur_ptr, *start_ptr;
unsigned short tagLen, tagType; unsigned short tag_len, tag_type;
start_ptr = (unsigned char *)ph->tag; start_ptr = (unsigned char *)ph->tag;
cur_ptr = (unsigned char *)ph->tag; cur_ptr = (unsigned char *)ph->tag;
while ((cur_ptr - start_ptr) < ntohs(ph->length)) { while ((cur_ptr - start_ptr) < ntohs(ph->length)) {
/* prevent un-alignment access */ /* prevent un-alignment access */
tagType = (unsigned short)((cur_ptr[0] << 8) + cur_ptr[1]); tag_type = (unsigned short)((cur_ptr[0] << 8) + cur_ptr[1]);
tagLen = (unsigned short)((cur_ptr[2] << 8) + cur_ptr[3]); tag_len = (unsigned short)((cur_ptr[2] << 8) + cur_ptr[3]);
if (tagType == type) if (tag_type == type)
return cur_ptr; return cur_ptr;
cur_ptr = cur_ptr + TAG_HDR_LEN + tagLen; cur_ptr = cur_ptr + TAG_HDR_LEN + tag_len;
} }
return NULL; return NULL;
} }
@ -111,32 +111,32 @@ static int __nat25_has_expired(struct nat25_network_db_entry *fdb)
return 0; return 0;
} }
static void __nat25_generate_ipv4_network_addr(unsigned char *networkAddr, static void __nat25_generate_ipv4_network_addr(unsigned char *addr,
unsigned int *ipAddr) unsigned int *ip_addr)
{ {
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); memset(addr, 0, MAX_NETWORK_ADDR_LEN);
networkAddr[0] = NAT25_IPV4; addr[0] = NAT25_IPV4;
memcpy(networkAddr + 7, (unsigned char *)ipAddr, 4); memcpy(addr + 7, (unsigned char *)ip_addr, 4);
} }
static void __nat25_generate_pppoe_network_addr(unsigned char *networkAddr, static void __nat25_generate_pppoe_network_addr(unsigned char *addr,
unsigned char *ac_mac, __be16 *sid) unsigned char *ac_mac, __be16 *sid)
{ {
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); memset(addr, 0, MAX_NETWORK_ADDR_LEN);
networkAddr[0] = NAT25_PPPOE; addr[0] = NAT25_PPPOE;
memcpy(networkAddr + 1, (unsigned char *)sid, 2); memcpy(addr + 1, (unsigned char *)sid, 2);
memcpy(networkAddr + 3, (unsigned char *)ac_mac, 6); memcpy(addr + 3, (unsigned char *)ac_mac, 6);
} }
static void __nat25_generate_ipv6_network_addr(unsigned char *networkAddr, static void __nat25_generate_ipv6_network_addr(unsigned char *addr,
unsigned int *ipAddr) unsigned int *ip_addr)
{ {
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); memset(addr, 0, MAX_NETWORK_ADDR_LEN);
networkAddr[0] = NAT25_IPV6; addr[0] = NAT25_IPV6;
memcpy(networkAddr + 1, (unsigned char *)ipAddr, 16); memcpy(addr + 1, (unsigned char *)ip_addr, 16);
} }
static unsigned char *scan_tlv(unsigned char *data, int len, unsigned char tag, unsigned char len8b) static unsigned char *scan_tlv(unsigned char *data, int len, unsigned char tag, unsigned char len8b)
@ -200,40 +200,40 @@ static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char
return 0; return 0;
} }
static int __nat25_network_hash(unsigned char *networkAddr) static int __nat25_network_hash(unsigned char *addr)
{ {
if (networkAddr[0] == NAT25_IPV4) { if (addr[0] == NAT25_IPV4) {
unsigned long x; unsigned long x;
x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10]; x = addr[7] ^ addr[8] ^ addr[9] ^ addr[10];
return x & (NAT25_HASH_SIZE - 1); return x & (NAT25_HASH_SIZE - 1);
} else if (networkAddr[0] == NAT25_IPX) { } else if (addr[0] == NAT25_IPX) {
unsigned long x; unsigned long x;
x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ x = addr[1] ^ addr[2] ^ addr[3] ^ addr[4] ^ addr[5] ^
networkAddr[6] ^ networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10]; addr[6] ^ addr[7] ^ addr[8] ^ addr[9] ^ addr[10];
return x & (NAT25_HASH_SIZE - 1); return x & (NAT25_HASH_SIZE - 1);
} else if (networkAddr[0] == NAT25_APPLE) { } else if (addr[0] == NAT25_APPLE) {
unsigned long x; unsigned long x;
x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3]; x = addr[1] ^ addr[2] ^ addr[3];
return x & (NAT25_HASH_SIZE - 1); return x & (NAT25_HASH_SIZE - 1);
} else if (networkAddr[0] == NAT25_PPPOE) { } else if (addr[0] == NAT25_PPPOE) {
unsigned long x; unsigned long x;
x = networkAddr[0] ^ networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ networkAddr[6] ^ networkAddr[7] ^ networkAddr[8]; x = addr[0] ^ addr[1] ^ addr[2] ^ addr[3] ^ addr[4] ^
addr[5] ^ addr[6] ^ addr[7] ^ addr[8];
return x & (NAT25_HASH_SIZE - 1); return x & (NAT25_HASH_SIZE - 1);
} else if (networkAddr[0] == NAT25_IPV6) { } else if (addr[0] == NAT25_IPV6) {
unsigned long x; unsigned long x;
x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3] ^ networkAddr[4] ^ networkAddr[5] ^ x = addr[1] ^ addr[2] ^ addr[3] ^ addr[4] ^ addr[5] ^ addr[6] ^
networkAddr[6] ^ networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10] ^ addr[7] ^ addr[8] ^ addr[9] ^ addr[10] ^ addr[11] ^ addr[12] ^
networkAddr[11] ^ networkAddr[12] ^ networkAddr[13] ^ networkAddr[14] ^ networkAddr[15] ^ addr[13] ^ addr[14] ^ addr[15] ^ addr[16];
networkAddr[16];
return x & (NAT25_HASH_SIZE - 1); return x & (NAT25_HASH_SIZE - 1);
} else { } else {
@ -241,7 +241,7 @@ static int __nat25_network_hash(unsigned char *networkAddr)
int i; int i;
for (i = 0; i < MAX_NETWORK_ADDR_LEN; i++) for (i = 0; i < MAX_NETWORK_ADDR_LEN; i++)
x ^= networkAddr[i]; x ^= addr[i];
return x & (NAT25_HASH_SIZE - 1); return x & (NAT25_HASH_SIZE - 1);
} }
@ -269,17 +269,17 @@ static void __network_hash_unlink(struct nat25_network_db_entry *ent)
} }
static void __nat25_db_network_insert(struct adapter *priv, static void __nat25_db_network_insert(struct adapter *priv,
unsigned char *macAddr, unsigned char *networkAddr) unsigned char *mac_addr, unsigned char *addr)
{ {
struct nat25_network_db_entry *db; struct nat25_network_db_entry *db;
int hash; int hash;
spin_lock_bh(&priv->br_ext_lock); spin_lock_bh(&priv->br_ext_lock);
hash = __nat25_network_hash(networkAddr); hash = __nat25_network_hash(addr);
db = priv->nethash[hash]; db = priv->nethash[hash];
while (db) { while (db) {
if (!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) { if (!memcmp(db->networkAddr, addr, MAX_NETWORK_ADDR_LEN)) {
memcpy(db->macAddr, macAddr, ETH_ALEN); memcpy(db->macAddr, mac_addr, ETH_ALEN);
db->ageing_timer = jiffies; db->ageing_timer = jiffies;
spin_unlock_bh(&priv->br_ext_lock); spin_unlock_bh(&priv->br_ext_lock);
return; return;
@ -291,8 +291,8 @@ static void __nat25_db_network_insert(struct adapter *priv,
spin_unlock_bh(&priv->br_ext_lock); spin_unlock_bh(&priv->br_ext_lock);
return; return;
} }
memcpy(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN); memcpy(db->networkAddr, addr, MAX_NETWORK_ADDR_LEN);
memcpy(db->macAddr, macAddr, ETH_ALEN); memcpy(db->macAddr, mac_addr, ETH_ALEN);
atomic_set(&db->use_count, 1); atomic_set(&db->use_count, 1);
db->ageing_timer = jiffies; db->ageing_timer = jiffies;
@ -366,7 +366,7 @@ void nat25_db_expire(struct adapter *priv)
int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method) int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
{ {
unsigned short protocol; unsigned short protocol;
unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; unsigned char addr[MAX_NETWORK_ADDR_LEN];
unsigned int tmp; unsigned int tmp;
if (!skb) if (!skb)
@ -395,9 +395,9 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
if (iph->saddr == 0) if (iph->saddr == 0)
return 0; return 0;
tmp = be32_to_cpu(iph->saddr); tmp = be32_to_cpu(iph->saddr);
__nat25_generate_ipv4_network_addr(networkAddr, &tmp); __nat25_generate_ipv4_network_addr(addr, &tmp);
/* record source IP address and , source mac address into db */ /* record source IP address and , source mac address into db */
__nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr); __nat25_db_network_insert(priv, skb->data + ETH_ALEN, addr);
return 0; return 0;
default: default:
return -1; return -1;
@ -421,8 +421,8 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
memcpy(arp_ptr, GET_MY_HWADDR(priv), ETH_ALEN); memcpy(arp_ptr, GET_MY_HWADDR(priv), ETH_ALEN);
arp_ptr += arp->ar_hln; arp_ptr += arp->ar_hln;
sender = (unsigned int *)arp_ptr; sender = (unsigned int *)arp_ptr;
__nat25_generate_ipv4_network_addr(networkAddr, sender); __nat25_generate_ipv4_network_addr(addr, sender);
__nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr); __nat25_db_network_insert(priv, skb->data + ETH_ALEN, addr);
return 0; return 0;
default: default:
return -1; return -1;
@ -495,9 +495,9 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
return -1; return -1;
} }
} else { /* session phase */ } else { /* session phase */
__nat25_generate_pppoe_network_addr(networkAddr, skb->data, &ph->sid); __nat25_generate_pppoe_network_addr(addr, skb->data, &ph->sid);
__nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr); __nat25_db_network_insert(priv, skb->data + ETH_ALEN, addr);
if (!priv->ethBrExtInfo.addPPPoETag && if (!priv->ethBrExtInfo.addPPPoETag &&
priv->pppoe_connection_in_progress && priv->pppoe_connection_in_progress &&
@ -548,8 +548,8 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
return -1; return -1;
case NAT25_INSERT: case NAT25_INSERT:
if (memcmp(&iph->saddr, "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0", 16)) { if (memcmp(&iph->saddr, "\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0", 16)) {
__nat25_generate_ipv6_network_addr(networkAddr, (unsigned int *)&iph->saddr); __nat25_generate_ipv6_network_addr(addr, (unsigned int *)&iph->saddr);
__nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr); __nat25_db_network_insert(priv, skb->data + ETH_ALEN, addr);
if (iph->nexthdr == IPPROTO_ICMPV6 && if (iph->nexthdr == IPPROTO_ICMPV6 &&
skb->len > (ETH_HLEN + sizeof(*iph) + 4)) { skb->len > (ETH_HLEN + sizeof(*iph) + 4)) {
@ -606,17 +606,16 @@ void dhcp_flag_bcast(struct adapter *priv, struct sk_buff *skb)
if (!priv->ethBrExtInfo.dhcp_bcst_disable) { if (!priv->ethBrExtInfo.dhcp_bcst_disable) {
__be16 protocol = *((__be16 *)(skb->data + 2 * ETH_ALEN)); __be16 protocol = *((__be16 *)(skb->data + 2 * ETH_ALEN));
if (protocol == __constant_htons(ETH_P_IP)) { /* IP */ if (protocol == htons(ETH_P_IP)) { /* IP */
struct iphdr *iph = (struct iphdr *)(skb->data + ETH_HLEN); struct iphdr *iph = (struct iphdr *)(skb->data + ETH_HLEN);
if (iph->protocol == IPPROTO_UDP) { /* UDP */ if (iph->protocol == IPPROTO_UDP) { /* UDP */
struct udphdr *udph = (struct udphdr *)((size_t)iph + (iph->ihl << 2)); struct udphdr *udph = (void *)iph + (iph->ihl << 2);
if ((udph->source == __constant_htons(CLIENT_PORT)) && if ((udph->source == htons(CLIENT_PORT)) &&
(udph->dest == __constant_htons(SERVER_PORT))) { /* DHCP request */ (udph->dest == htons(SERVER_PORT))) { /* DHCP request */
struct dhcpMessage *dhcph = struct dhcpMessage *dhcph = (void *)udph + sizeof(struct udphdr);
(struct dhcpMessage *)((size_t)udph + sizeof(struct udphdr)); u32 cookie = be32_to_cpu(dhcph->cookie);
u32 cookie = be32_to_cpu((__be32)dhcph->cookie);
if (cookie == DHCP_MAGIC) { /* match magic word */ if (cookie == DHCP_MAGIC) { /* match magic word */
if (!(dhcph->flags & htons(BROADCAST_FLAG))) { if (!(dhcph->flags & htons(BROADCAST_FLAG))) {
@ -639,19 +638,18 @@ void dhcp_flag_bcast(struct adapter *priv, struct sk_buff *skb)
} }
} }
void *scdb_findEntry(struct adapter *priv, unsigned char *ipAddr) void *scdb_findEntry(struct adapter *priv, unsigned char *ip_addr)
{ {
unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; unsigned char addr[MAX_NETWORK_ADDR_LEN];
struct nat25_network_db_entry *db; struct nat25_network_db_entry *db;
int hash; int hash;
__nat25_generate_ipv4_network_addr(networkAddr, (unsigned int *)ipAddr); __nat25_generate_ipv4_network_addr(addr, (unsigned int *)ip_addr);
hash = __nat25_network_hash(networkAddr); hash = __nat25_network_hash(addr);
db = priv->nethash[hash]; db = priv->nethash[hash];
while (db) { while (db) {
if (!memcmp(db->networkAddr, networkAddr, MAX_NETWORK_ADDR_LEN)) { if (!memcmp(db->networkAddr, addr, MAX_NETWORK_ADDR_LEN))
return (void *)db; return (void *)db;
}
db = db->next_hash; db = db->next_hash;
} }

View File

@ -54,7 +54,7 @@ exit:
return _SUCCESS; return _SUCCESS;
} }
u32 rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
{ {
init_completion(&pcmdpriv->enqueue_cmd); init_completion(&pcmdpriv->enqueue_cmd);
/* sema_init(&(pcmdpriv->cmd_done_sema), 0); */ /* sema_init(&(pcmdpriv->cmd_done_sema), 0); */
@ -71,7 +71,7 @@ u32 rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
GFP_KERNEL); GFP_KERNEL);
if (!pcmdpriv->cmd_allocated_buf) if (!pcmdpriv->cmd_allocated_buf)
return _FAIL; return -ENOMEM;
pcmdpriv->cmd_buf = pcmdpriv->cmd_allocated_buf + CMDBUFF_ALIGN_SZ - ((size_t)(pcmdpriv->cmd_allocated_buf) & (CMDBUFF_ALIGN_SZ - 1)); pcmdpriv->cmd_buf = pcmdpriv->cmd_allocated_buf + CMDBUFF_ALIGN_SZ - ((size_t)(pcmdpriv->cmd_allocated_buf) & (CMDBUFF_ALIGN_SZ - 1));
@ -79,7 +79,7 @@ u32 rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
if (!pcmdpriv->rsp_allocated_buf) { if (!pcmdpriv->rsp_allocated_buf) {
kfree(pcmdpriv->cmd_allocated_buf); kfree(pcmdpriv->cmd_allocated_buf);
return _FAIL; return -ENOMEM;
} }
pcmdpriv->rsp_buf = pcmdpriv->rsp_allocated_buf + 4 - ((size_t)(pcmdpriv->rsp_allocated_buf) & 3); pcmdpriv->rsp_buf = pcmdpriv->rsp_allocated_buf + 4 - ((size_t)(pcmdpriv->rsp_allocated_buf) & 3);
@ -87,13 +87,11 @@ u32 rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
pcmdpriv->cmd_done_cnt = 0; pcmdpriv->cmd_done_cnt = 0;
pcmdpriv->rsp_cnt = 0; pcmdpriv->rsp_cnt = 0;
return _SUCCESS; return 0;
} }
u32 rtw_init_evt_priv(struct evt_priv *pevtpriv) int rtw_init_evt_priv(struct evt_priv *pevtpriv)
{ {
u32 res = _SUCCESS;
/* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */ /* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */
atomic_set(&pevtpriv->event_seq, 0); atomic_set(&pevtpriv->event_seq, 0);
@ -101,9 +99,9 @@ u32 rtw_init_evt_priv(struct evt_priv *pevtpriv)
pevtpriv->c2h_wk_alive = false; pevtpriv->c2h_wk_alive = false;
pevtpriv->c2h_queue = rtw_cbuf_alloc(C2H_QUEUE_MAX_LEN + 1); pevtpriv->c2h_queue = rtw_cbuf_alloc(C2H_QUEUE_MAX_LEN + 1);
if (!pevtpriv->c2h_queue) if (!pevtpriv->c2h_queue)
res = _FAIL; return -ENOMEM;
return res; return 0;
} }
void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv) void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv)
@ -342,33 +340,29 @@ u8 rtw_sitesurvey_cmd(struct adapter *padapter, struct ndis_802_11_ssid *ssid,
return res; return res;
} }
u8 rtw_setdatarate_cmd(struct adapter *padapter, u8 *rateset) int rtw_setdatarate_cmd(struct adapter *padapter, u8 *rateset)
{ {
struct cmd_obj *ph2c; struct cmd_obj *ph2c;
struct setdatarate_parm *pbsetdataratepara; struct setdatarate_parm *pbsetdataratepara;
struct cmd_priv *pcmdpriv = &padapter->cmdpriv; struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS;
ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC); ph2c = kzalloc(sizeof(*ph2c), GFP_ATOMIC);
if (!ph2c) { if (!ph2c)
res = _FAIL; return -ENOMEM;
goto exit;
}
pbsetdataratepara = kzalloc(sizeof(*pbsetdataratepara), GFP_ATOMIC); pbsetdataratepara = kzalloc(sizeof(*pbsetdataratepara), GFP_ATOMIC);
if (!pbsetdataratepara) { if (!pbsetdataratepara) {
kfree(ph2c); kfree(ph2c);
res = _FAIL; return -ENOMEM;
goto exit;
} }
init_h2fwcmd_w_parm_no_rsp(ph2c, pbsetdataratepara, GEN_CMD_CODE(_SetDataRate)); init_h2fwcmd_w_parm_no_rsp(ph2c, pbsetdataratepara, GEN_CMD_CODE(_SetDataRate));
pbsetdataratepara->mac_id = 5; pbsetdataratepara->mac_id = 5;
memcpy(pbsetdataratepara->datarates, rateset, NumRates); memcpy(pbsetdataratepara->datarates, rateset, NumRates);
res = rtw_enqueue_cmd(pcmdpriv, ph2c); if (rtw_enqueue_cmd(pcmdpriv, ph2c) == _FAIL)
exit: return -EPERM;
return res; return 0;
} }
void rtw_getbbrfreg_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *pcmd) void rtw_getbbrfreg_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *pcmd)

View File

@ -287,7 +287,7 @@ u8 rtw_set_802_11_infrastructure_mode(struct adapter *padapter,
if ((*pold_state == Ndis802_11Infrastructure) || (*pold_state == Ndis802_11IBSS)) { if ((*pold_state == Ndis802_11Infrastructure) || (*pold_state == Ndis802_11IBSS)) {
if (check_fwstate(pmlmepriv, _FW_LINKED)) if (check_fwstate(pmlmepriv, _FW_LINKED))
rtw_indicate_disconnect(padapter); /* will clr Linked_state; before this function, we must have chked whether issue dis-assoc_cmd or not */ rtw_indicate_disconnect(padapter); /* will clr Linked_state; before this function, we must have checked whether issue dis-assoc_cmd or not */
} }
*pold_state = networktype; *pold_state = networktype;
@ -314,7 +314,7 @@ u8 rtw_set_802_11_infrastructure_mode(struct adapter *padapter,
return true; return true;
} }
u8 rtw_set_802_11_disassociate(struct adapter *padapter) void rtw_set_802_11_disassociate(struct adapter *padapter)
{ {
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@ -328,8 +328,6 @@ u8 rtw_set_802_11_disassociate(struct adapter *padapter)
} }
spin_unlock_bh(&pmlmepriv->lock); spin_unlock_bh(&pmlmepriv->lock);
return true;
} }
u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_802_11_ssid *pssid, int ssid_max_num) u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_802_11_ssid *pssid, int ssid_max_num)

View File

@ -26,47 +26,32 @@ static void ResetLedStatus(struct led_priv *pLed)
pLed->BlinkTimes = 0; /* Number of times to toggle led state for blinking. */ pLed->BlinkTimes = 0; /* Number of times to toggle led state for blinking. */
pLed->bLedLinkBlinkInProgress = false;
pLed->bLedScanBlinkInProgress = false; pLed->bLedScanBlinkInProgress = false;
} }
static void SwLedOn(struct adapter *padapter, struct led_priv *pLed) static void SwLedOn(struct led_priv *pLed)
{ {
u8 LedCfg; struct adapter *padapter = container_of(pLed, struct adapter, ledpriv);
int res;
if (padapter->bDriverStopped) if (padapter->bDriverStopped)
return; return;
res = rtw_read8(padapter, REG_LEDCFG2, &LedCfg); if (rtw_write8(padapter, REG_LEDCFG2, BIT(5)) != _SUCCESS)
if (res)
return; return;
rtw_write8(padapter, REG_LEDCFG2, (LedCfg & 0xf0) | BIT(5) | BIT(6)); /* SW control led0 on. */
pLed->bLedOn = true; pLed->bLedOn = true;
} }
static void SwLedOff(struct adapter *padapter, struct led_priv *pLed) static void SwLedOff(struct led_priv *pLed)
{ {
u8 LedCfg; struct adapter *padapter = container_of(pLed, struct adapter, ledpriv);
int res;
if (padapter->bDriverStopped) if (padapter->bDriverStopped)
goto exit; return;
res = rtw_read8(padapter, REG_LEDCFG2, &LedCfg);/* 0x4E */ if (rtw_write8(padapter, REG_LEDCFG2, BIT(5) | BIT(3)) != _SUCCESS)
if (res) return;
goto exit;
LedCfg &= 0x90; /* Set to software control. */
rtw_write8(padapter, REG_LEDCFG2, (LedCfg | BIT(3)));
res = rtw_read8(padapter, REG_MAC_PINMUX_CFG, &LedCfg);
if (res)
goto exit;
LedCfg &= 0xFE;
rtw_write8(padapter, REG_MAC_PINMUX_CFG, LedCfg);
exit:
pLed->bLedOn = false; pLed->bLedOn = false;
} }
@ -74,19 +59,19 @@ static void blink_work(struct work_struct *work)
{ {
struct delayed_work *dwork = to_delayed_work(work); struct delayed_work *dwork = to_delayed_work(work);
struct led_priv *pLed = container_of(dwork, struct led_priv, blink_work); struct led_priv *pLed = container_of(dwork, struct led_priv, blink_work);
struct adapter *padapter = pLed->padapter; struct adapter *padapter = container_of(pLed, struct adapter, ledpriv);
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
if (padapter->pwrctrlpriv.rf_pwrstate != rf_on) { if (padapter->pwrctrlpriv.rf_pwrstate != rf_on) {
SwLedOff(padapter, pLed); SwLedOff(pLed);
ResetLedStatus(pLed); ResetLedStatus(pLed);
return; return;
} }
if (pLed->bLedOn) if (pLed->bLedOn)
SwLedOff(padapter, pLed); SwLedOff(pLed);
else else
SwLedOn(padapter, pLed); SwLedOn(pLed);
switch (pLed->CurrLedState) { switch (pLed->CurrLedState) {
case LED_BLINK_SLOWLY: case LED_BLINK_SLOWLY:
@ -96,26 +81,10 @@ static void blink_work(struct work_struct *work)
schedule_delayed_work(&pLed->blink_work, LED_BLINK_LINK_INTVL); schedule_delayed_work(&pLed->blink_work, LED_BLINK_LINK_INTVL);
break; break;
case LED_BLINK_SCAN: case LED_BLINK_SCAN:
pLed->BlinkTimes--;
if (pLed->BlinkTimes == 0) {
if (check_fwstate(pmlmepriv, _FW_LINKED)) {
pLed->bLedLinkBlinkInProgress = true;
pLed->CurrLedState = LED_BLINK_NORMAL;
schedule_delayed_work(&pLed->blink_work, LED_BLINK_LINK_INTVL);
} else {
pLed->CurrLedState = LED_BLINK_SLOWLY;
schedule_delayed_work(&pLed->blink_work, LED_BLINK_NO_LINK_INTVL);
}
pLed->bLedScanBlinkInProgress = false;
} else {
schedule_delayed_work(&pLed->blink_work, LED_BLINK_SCAN_INTVL);
}
break;
case LED_BLINK_TXRX: case LED_BLINK_TXRX:
pLed->BlinkTimes--; pLed->BlinkTimes--;
if (pLed->BlinkTimes == 0) { if (pLed->BlinkTimes == 0) {
if (check_fwstate(pmlmepriv, _FW_LINKED)) { if (check_fwstate(pmlmepriv, _FW_LINKED)) {
pLed->bLedLinkBlinkInProgress = true;
pLed->CurrLedState = LED_BLINK_NORMAL; pLed->CurrLedState = LED_BLINK_NORMAL;
schedule_delayed_work(&pLed->blink_work, LED_BLINK_LINK_INTVL); schedule_delayed_work(&pLed->blink_work, LED_BLINK_LINK_INTVL);
} else { } else {
@ -123,8 +92,11 @@ static void blink_work(struct work_struct *work)
schedule_delayed_work(&pLed->blink_work, LED_BLINK_NO_LINK_INTVL); schedule_delayed_work(&pLed->blink_work, LED_BLINK_NO_LINK_INTVL);
} }
pLed->bLedBlinkInProgress = false; pLed->bLedBlinkInProgress = false;
pLed->bLedScanBlinkInProgress = false;
} else { } else {
schedule_delayed_work(&pLed->blink_work, LED_BLINK_FASTER_INTVL); schedule_delayed_work(&pLed->blink_work,
pLed->CurrLedState == LED_BLINK_SCAN ?
LED_BLINK_SCAN_INTVL : LED_BLINK_FASTER_INTVL);
} }
break; break;
case LED_BLINK_WPS: case LED_BLINK_WPS:
@ -132,7 +104,6 @@ static void blink_work(struct work_struct *work)
break; break;
case LED_BLINK_WPS_STOP: /* WPS success */ case LED_BLINK_WPS_STOP: /* WPS success */
if (!pLed->bLedOn) { if (!pLed->bLedOn) {
pLed->bLedLinkBlinkInProgress = true;
pLed->CurrLedState = LED_BLINK_NORMAL; pLed->CurrLedState = LED_BLINK_NORMAL;
schedule_delayed_work(&pLed->blink_work, LED_BLINK_LINK_INTVL); schedule_delayed_work(&pLed->blink_work, LED_BLINK_LINK_INTVL);
@ -150,7 +121,6 @@ void rtl8188eu_InitSwLeds(struct adapter *padapter)
{ {
struct led_priv *pledpriv = &padapter->ledpriv; struct led_priv *pledpriv = &padapter->ledpriv;
pledpriv->padapter = padapter;
ResetLedStatus(pledpriv); ResetLedStatus(pledpriv);
INIT_DELAYED_WORK(&pledpriv->blink_work, blink_work); INIT_DELAYED_WORK(&pledpriv->blink_work, blink_work);
} }
@ -161,7 +131,7 @@ void rtl8188eu_DeInitSwLeds(struct adapter *padapter)
cancel_delayed_work_sync(&ledpriv->blink_work); cancel_delayed_work_sync(&ledpriv->blink_work);
ResetLedStatus(ledpriv); ResetLedStatus(ledpriv);
SwLedOff(padapter, ledpriv); SwLedOff(ledpriv);
} }
void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction) void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
@ -170,8 +140,7 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
struct registry_priv *registry_par; struct registry_priv *registry_par;
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
if ((padapter->bSurpriseRemoved) || (padapter->bDriverStopped) || if (!padapter->hw_init_completed)
(!padapter->hw_init_completed))
return; return;
if (!pLed->bRegUseLed) if (!pLed->bRegUseLed)
@ -189,23 +158,18 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
cancel_delayed_work(&pLed->blink_work); cancel_delayed_work(&pLed->blink_work);
pLed->bLedLinkBlinkInProgress = false;
pLed->bLedBlinkInProgress = false; pLed->bLedBlinkInProgress = false;
pLed->CurrLedState = LED_BLINK_SLOWLY; pLed->CurrLedState = LED_BLINK_SLOWLY;
schedule_delayed_work(&pLed->blink_work, LED_BLINK_NO_LINK_INTVL); schedule_delayed_work(&pLed->blink_work, LED_BLINK_NO_LINK_INTVL);
break; break;
case LED_CTL_LINK: case LED_CTL_LINK:
if (!pLed->bLedLinkBlinkInProgress)
return;
if (pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed)) if (pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
return; return;
cancel_delayed_work(&pLed->blink_work); cancel_delayed_work(&pLed->blink_work);
pLed->bLedBlinkInProgress = false; pLed->bLedBlinkInProgress = false;
pLed->bLedLinkBlinkInProgress = true;
pLed->CurrLedState = LED_BLINK_NORMAL; pLed->CurrLedState = LED_BLINK_NORMAL;
schedule_delayed_work(&pLed->blink_work, LED_BLINK_LINK_INTVL); schedule_delayed_work(&pLed->blink_work, LED_BLINK_LINK_INTVL);
@ -222,7 +186,6 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
cancel_delayed_work(&pLed->blink_work); cancel_delayed_work(&pLed->blink_work);
pLed->bLedLinkBlinkInProgress = false;
pLed->bLedBlinkInProgress = false; pLed->bLedBlinkInProgress = false;
pLed->bLedScanBlinkInProgress = true; pLed->bLedScanBlinkInProgress = true;
@ -240,7 +203,6 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
cancel_delayed_work(&pLed->blink_work); cancel_delayed_work(&pLed->blink_work);
pLed->bLedLinkBlinkInProgress = false;
pLed->bLedBlinkInProgress = true; pLed->bLedBlinkInProgress = true;
pLed->CurrLedState = LED_BLINK_TXRX; pLed->CurrLedState = LED_BLINK_TXRX;
@ -253,7 +215,6 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
cancel_delayed_work(&pLed->blink_work); cancel_delayed_work(&pLed->blink_work);
pLed->bLedLinkBlinkInProgress = false;
pLed->bLedBlinkInProgress = false; pLed->bLedBlinkInProgress = false;
pLed->bLedScanBlinkInProgress = false; pLed->bLedScanBlinkInProgress = false;
pLed->bLedWPSBlinkInProgress = true; pLed->bLedWPSBlinkInProgress = true;
@ -263,7 +224,6 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
case LED_CTL_STOP_WPS: case LED_CTL_STOP_WPS:
cancel_delayed_work(&pLed->blink_work); cancel_delayed_work(&pLed->blink_work);
pLed->bLedLinkBlinkInProgress = false;
pLed->bLedBlinkInProgress = false; pLed->bLedBlinkInProgress = false;
pLed->bLedScanBlinkInProgress = false; pLed->bLedScanBlinkInProgress = false;
pLed->bLedWPSBlinkInProgress = true; pLed->bLedWPSBlinkInProgress = true;
@ -283,12 +243,11 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
break; break;
case LED_CTL_POWER_OFF: case LED_CTL_POWER_OFF:
pLed->CurrLedState = RTW_LED_OFF; pLed->CurrLedState = RTW_LED_OFF;
pLed->bLedLinkBlinkInProgress = false;
pLed->bLedBlinkInProgress = false; pLed->bLedBlinkInProgress = false;
pLed->bLedWPSBlinkInProgress = false; pLed->bLedWPSBlinkInProgress = false;
pLed->bLedScanBlinkInProgress = false; pLed->bLedScanBlinkInProgress = false;
cancel_delayed_work(&pLed->blink_work); cancel_delayed_work(&pLed->blink_work);
SwLedOff(padapter, pLed); SwLedOff(pLed);
break; break;
default: default:
break; break;

View File

@ -76,19 +76,6 @@ void _rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwor
spin_unlock_bh(&free_queue->lock); spin_unlock_bh(&free_queue->lock);
} }
void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork)
{
struct __queue *free_queue = &pmlmepriv->free_bss_pool;
if (!pnetwork)
return;
if (pnetwork->fixed)
return;
list_del_init(&pnetwork->list);
list_add_tail(&pnetwork->list, get_list_head(free_queue));
pmlmepriv->num_of_scanned--;
}
/* /*
return the wlan_network with the matching addr return the wlan_network with the matching addr
@ -224,7 +211,6 @@ int rtw_init_mlme_priv(struct adapter *padapter)/* struct mlme_priv *pmlmepriv)
u8 *pbuf; u8 *pbuf;
struct wlan_network *pnetwork; struct wlan_network *pnetwork;
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
int res = _SUCCESS;
/* We don't need to memset padapter->XXX to zero, because adapter is allocated by vzalloc(). */ /* We don't need to memset padapter->XXX to zero, because adapter is allocated by vzalloc(). */
@ -245,10 +231,9 @@ int rtw_init_mlme_priv(struct adapter *padapter)/* struct mlme_priv *pmlmepriv)
pbuf = vzalloc(MAX_BSS_CNT * (sizeof(struct wlan_network))); pbuf = vzalloc(MAX_BSS_CNT * (sizeof(struct wlan_network)));
if (!pbuf) { if (!pbuf)
res = _FAIL; return -ENOMEM;
goto exit;
}
pmlmepriv->free_bss_buf = pbuf; pmlmepriv->free_bss_buf = pbuf;
pnetwork = (struct wlan_network *)pbuf; pnetwork = (struct wlan_network *)pbuf;
@ -265,9 +250,7 @@ int rtw_init_mlme_priv(struct adapter *padapter)/* struct mlme_priv *pmlmepriv)
rtw_init_mlme_timer(padapter); rtw_init_mlme_timer(padapter);
exit: return 0;
return res;
} }
void rtw_free_mlme_priv(struct mlme_priv *pmlmepriv) void rtw_free_mlme_priv(struct mlme_priv *pmlmepriv)
@ -311,9 +294,15 @@ exit:
static void rtw_free_network_nolock(struct mlme_priv *pmlmepriv, static void rtw_free_network_nolock(struct mlme_priv *pmlmepriv,
struct wlan_network *pnetwork) struct wlan_network *pnetwork)
{ {
struct __queue *free_queue = &pmlmepriv->free_bss_pool;
_rtw_free_network_nolock(pmlmepriv, pnetwork); if (!pnetwork)
return;
if (pnetwork->fixed)
return;
list_del_init(&pnetwork->list);
list_add_tail(&pnetwork->list, get_list_head(free_queue));
pmlmepriv->num_of_scanned--;
} }
void rtw_free_network_queue(struct adapter *dev, u8 isfreeall) void rtw_free_network_queue(struct adapter *dev, u8 isfreeall)
@ -1823,22 +1812,6 @@ void rtw_update_registrypriv_dev_network(struct adapter *adapter)
pdev_network->Rssi = 0; pdev_network->Rssi = 0;
switch (pregistrypriv->wireless_mode) {
case WIRELESS_11B:
pdev_network->NetworkTypeInUse = (Ndis802_11DS);
break;
case WIRELESS_11G:
case WIRELESS_11BG:
case WIRELESS_11_24N:
case WIRELESS_11G_24N:
case WIRELESS_11BG_24N:
pdev_network->NetworkTypeInUse = (Ndis802_11OFDM24);
break;
default:
/* TODO */
break;
}
pdev_network->Configuration.DSConfig = (pregistrypriv->channel); pdev_network->Configuration.DSConfig = (pregistrypriv->channel);
if (cur_network->network.InfrastructureMode == Ndis802_11IBSS) if (cur_network->network.InfrastructureMode == Ndis802_11IBSS)

File diff suppressed because it is too large Load Diff

View File

@ -1453,7 +1453,7 @@ static void pre_tx_invitereq_handler(struct adapter *padapter)
set_channel_bwmode(padapter, pwdinfo->invitereq_info.peer_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); set_channel_bwmode(padapter, pwdinfo->invitereq_info.peer_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
rtw_mlme_under_site_survey(padapter); rtw_mlme_under_site_survey(padapter);
issue_probereq_p2p(padapter, NULL); issue_probereq_p2p(padapter);
_set_timer(&pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT); _set_timer(&pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT);
} }
@ -1464,7 +1464,7 @@ static void pre_tx_provdisc_handler(struct adapter *padapter)
set_channel_bwmode(padapter, pwdinfo->tx_prov_disc_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); set_channel_bwmode(padapter, pwdinfo->tx_prov_disc_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
rtw_mlme_under_site_survey(padapter); rtw_mlme_under_site_survey(padapter);
issue_probereq_p2p(padapter, NULL); issue_probereq_p2p(padapter);
_set_timer(&pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT); _set_timer(&pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT);
} }
@ -1475,7 +1475,7 @@ static void pre_tx_negoreq_handler(struct adapter *padapter)
set_channel_bwmode(padapter, pwdinfo->nego_req_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); set_channel_bwmode(padapter, pwdinfo->nego_req_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
rtw_mlme_under_site_survey(padapter); rtw_mlme_under_site_survey(padapter);
issue_probereq_p2p(padapter, NULL); issue_probereq_p2p(padapter);
_set_timer(&pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT); _set_timer(&pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT);
} }
@ -1505,8 +1505,6 @@ void p2p_protocol_wk_hdl(struct adapter *padapter, int intCmdType)
void process_p2p_ps_ie(struct adapter *padapter, u8 *IEs, u32 IELength) void process_p2p_ps_ie(struct adapter *padapter, u8 *IEs, u32 IELength)
{ {
u8 *ies;
u32 ies_len;
u8 *p2p_ie; u8 *p2p_ie;
u32 p2p_ielen = 0; u32 p2p_ielen = 0;
u8 noa_attr[MAX_P2P_IE_LEN] = { 0x00 };/* NoA length should be n*(13) + 2 */ u8 noa_attr[MAX_P2P_IE_LEN] = { 0x00 };/* NoA length should be n*(13) + 2 */
@ -1518,13 +1516,8 @@ void process_p2p_ps_ie(struct adapter *padapter, u8 *IEs, u32 IELength)
if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE))
return; return;
if (IELength <= _BEACON_IE_OFFSET_)
return;
ies = IEs + _BEACON_IE_OFFSET_; p2p_ie = rtw_get_p2p_ie(IEs, IELength, NULL, &p2p_ielen);
ies_len = IELength - _BEACON_IE_OFFSET_;
p2p_ie = rtw_get_p2p_ie(ies, ies_len, NULL, &p2p_ielen);
while (p2p_ie) { while (p2p_ie) {
find_p2p = true; find_p2p = true;
@ -1579,7 +1572,7 @@ void process_p2p_ps_ie(struct adapter *padapter, u8 *IEs, u32 IELength)
} }
/* Get the next P2P IE */ /* Get the next P2P IE */
p2p_ie = rtw_get_p2p_ie(p2p_ie + p2p_ielen, ies_len - (p2p_ie - ies + p2p_ielen), NULL, &p2p_ielen); p2p_ie = rtw_get_p2p_ie(p2p_ie + p2p_ielen, IELength - (p2p_ie - IEs + p2p_ielen), NULL, &p2p_ielen);
} }
if (find_p2p) { if (find_p2p) {
@ -1732,7 +1725,7 @@ static void pre_tx_scan_timer_process(struct timer_list *t)
if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ)) { if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ)) {
if (pwdinfo->tx_prov_disc_info.benable) { /* the provision discovery request frame is trigger to send or not */ if (pwdinfo->tx_prov_disc_info.benable) { /* the provision discovery request frame is trigger to send or not */
p2p_protocol_wk_cmd(adapter, P2P_PRE_TX_PROVDISC_PROCESS_WK); p2p_protocol_wk_cmd(adapter, P2P_PRE_TX_PROVDISC_PROCESS_WK);
/* issue_probereq_p2p(adapter, NULL); */ /* issue_probereq_p2p(adapter); */
/* _set_timer(&pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT); */ /* _set_timer(&pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT); */
} }
} else if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING)) { } else if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING)) {

View File

@ -273,7 +273,7 @@ static s32 LPS_RF_ON_check(struct adapter *padapter, u32 delay_ms)
err = -1; err = -1;
break; break;
} }
msleep(1); mdelay(1);
} }
return err; return err;

View File

@ -779,9 +779,8 @@ static int ap2sta_data_frame(
} }
/* check BSSID */ /* check BSSID */
if (!memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || if (is_zero_ether_addr(pattrib->bssid) || is_zero_ether_addr(mybssid) ||
!memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || (memcmp(pattrib->bssid, mybssid, ETH_ALEN))) {
(memcmp(pattrib->bssid, mybssid, ETH_ALEN))) {
if (!bmcast) if (!bmcast)
issue_deauth(adapter, pattrib->bssid, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA); issue_deauth(adapter, pattrib->bssid, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA);
@ -972,7 +971,7 @@ static void validate_recv_ctrl_frame(struct adapter *padapter,
if (psta->sleepq_len == 0) { if (psta->sleepq_len == 0) {
pstapriv->tim_bitmap &= ~BIT(psta->aid); pstapriv->tim_bitmap &= ~BIT(psta->aid);
/* upate BCN for TIM IE */ /* update BCN for TIM IE */
/* update_BCNTIM(padapter); */ /* update_BCNTIM(padapter); */
update_beacon(padapter, _TIM_IE_, NULL, false); update_beacon(padapter, _TIM_IE_, NULL, false);
} }
@ -986,7 +985,7 @@ static void validate_recv_ctrl_frame(struct adapter *padapter,
pstapriv->tim_bitmap &= ~BIT(psta->aid); pstapriv->tim_bitmap &= ~BIT(psta->aid);
/* upate BCN for TIM IE */ /* update BCN for TIM IE */
/* update_BCNTIM(padapter); */ /* update_BCNTIM(padapter); */
update_beacon(padapter, _TIM_IE_, NULL, false); update_beacon(padapter, _TIM_IE_, NULL, false);
} }
@ -1032,7 +1031,6 @@ static int validate_recv_data_frame(struct adapter *adapter,
struct recv_frame *precv_frame) struct recv_frame *precv_frame)
{ {
struct sta_info *psta = NULL; struct sta_info *psta = NULL;
u8 *ptr = precv_frame->rx_data;
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)precv_frame->rx_data; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)precv_frame->rx_data;
struct rx_pkt_attrib *pattrib = &precv_frame->attrib; struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
struct security_priv *psecuritypriv = &adapter->securitypriv; struct security_priv *psecuritypriv = &adapter->securitypriv;
@ -1065,18 +1063,18 @@ static int validate_recv_data_frame(struct adapter *adapter,
if (!psta) if (!psta)
return _FAIL; return _FAIL;
/* psta->rssi = prxcmd->rssi; */
/* psta->signal_quality = prxcmd->sq; */
precv_frame->psta = psta; precv_frame->psta = psta;
pattrib->amsdu = 0; pattrib->amsdu = 0;
pattrib->ack_policy = 0; pattrib->ack_policy = 0;
/* parsing QC field */ /* parsing QC field */
if (pattrib->qos) { if (pattrib->qos) {
struct ieee80211_qos_hdr *qos_hdr = (struct ieee80211_qos_hdr *)hdr;
pattrib->priority = ieee80211_get_tid(hdr); pattrib->priority = ieee80211_get_tid(hdr);
pattrib->ack_policy = GetAckpolicy((ptr + 24)); pattrib->ack_policy = GetAckpolicy(&qos_hdr->qos_ctrl);
pattrib->amsdu = GetAMsdu((ptr + 24)); pattrib->amsdu = GetAMsdu(&qos_hdr->qos_ctrl);
pattrib->hdrlen = 26; pattrib->hdrlen = sizeof(*qos_hdr);
if (pattrib->priority != 0 && pattrib->priority != 3) if (pattrib->priority != 0 && pattrib->priority != 3)
adapter->recvpriv.bIsAnyNonBEPkts = true; adapter->recvpriv.bIsAnyNonBEPkts = true;
@ -1415,7 +1413,6 @@ static int amsdu_to_msdu(struct adapter *padapter, struct recv_frame *prframe)
struct recv_priv *precvpriv = &padapter->recvpriv; struct recv_priv *precvpriv = &padapter->recvpriv;
struct __queue *pfree_recv_queue = &precvpriv->free_recv_queue; struct __queue *pfree_recv_queue = &precvpriv->free_recv_queue;
int ret = _SUCCESS;
nr_subframes = 0; nr_subframes = 0;
@ -1513,7 +1510,7 @@ exit:
prframe->len = 0; prframe->len = 0;
rtw_free_recvframe(prframe, pfree_recv_queue);/* free this recv_frame */ rtw_free_recvframe(prframe, pfree_recv_queue);/* free this recv_frame */
return ret; return _SUCCESS;
} }
static bool check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_num) static bool check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_num)
@ -1984,13 +1981,13 @@ static void rtw_signal_stat_timer_hdl(struct timer_list *t)
} else { } else {
if (recvpriv->signal_strength_data.update_req == 0) {/* update_req is clear, means we got rx */ if (recvpriv->signal_strength_data.update_req == 0) {/* update_req is clear, means we got rx */
avg_signal_strength = recvpriv->signal_strength_data.avg_val; avg_signal_strength = recvpriv->signal_strength_data.avg_val;
/* after avg_vals are accquired, we can re-stat the signal values */ /* after avg_vals are acquired, we can re-stat the signal values */
recvpriv->signal_strength_data.update_req = 1; recvpriv->signal_strength_data.update_req = 1;
} }
if (recvpriv->signal_qual_data.update_req == 0) {/* update_req is clear, means we got rx */ if (recvpriv->signal_qual_data.update_req == 0) {/* update_req is clear, means we got rx */
avg_signal_qual = recvpriv->signal_qual_data.avg_val; avg_signal_qual = recvpriv->signal_qual_data.avg_val;
/* after avg_vals are accquired, we can re-stat the signal values */ /* after avg_vals are acquired, we can re-stat the signal values */
recvpriv->signal_qual_data.update_req = 1; recvpriv->signal_qual_data.update_req = 1;
} }

View File

@ -954,7 +954,7 @@ static void bitwise_xor(u8 *ina, u8 *inb, u8 *out)
} }
static int aes_cipher(u8 *key, uint hdrlen, u8 *pframe, uint plen) static void aes_cipher(u8 *key, uint hdrlen, u8 *pframe, uint plen)
{ {
uint qc_exists, a4_exists, i, j, payload_remainder, uint qc_exists, a4_exists, i, j, payload_remainder,
num_blocks, payload_index; num_blocks, payload_index;
@ -1083,8 +1083,6 @@ static int aes_cipher(u8 *key, uint hdrlen, u8 *pframe, uint plen)
bitwise_xor(aes_out, padded_buffer, chain_buffer); bitwise_xor(aes_out, padded_buffer, chain_buffer);
for (j = 0; j < 8; j++) for (j = 0; j < 8; j++)
pframe[payload_index++] = chain_buffer[j]; pframe[payload_index++] = chain_buffer[j];
return _SUCCESS;
} }
u32 rtw_aes_encrypt(struct adapter *padapter, struct xmit_frame *pxmitframe) u32 rtw_aes_encrypt(struct adapter *padapter, struct xmit_frame *pxmitframe)

View File

@ -45,7 +45,7 @@ static void _rtw_init_stainfo(struct sta_info *psta)
psta->keep_alive_trycnt = 0; psta->keep_alive_trycnt = 0;
} }
u32 _rtw_init_sta_priv(struct sta_priv *pstapriv) int _rtw_init_sta_priv(struct sta_priv *pstapriv)
{ {
struct sta_info *psta; struct sta_info *psta;
s32 i; s32 i;
@ -53,7 +53,7 @@ u32 _rtw_init_sta_priv(struct sta_priv *pstapriv)
pstapriv->pallocated_stainfo_buf = vzalloc(sizeof(struct sta_info) * NUM_STA + 4); pstapriv->pallocated_stainfo_buf = vzalloc(sizeof(struct sta_info) * NUM_STA + 4);
if (!pstapriv->pallocated_stainfo_buf) if (!pstapriv->pallocated_stainfo_buf)
return _FAIL; return -ENOMEM;
pstapriv->pstainfo_buf = pstapriv->pallocated_stainfo_buf + 4 - pstapriv->pstainfo_buf = pstapriv->pallocated_stainfo_buf + 4 -
((size_t)(pstapriv->pallocated_stainfo_buf) & 3); ((size_t)(pstapriv->pallocated_stainfo_buf) & 3);
@ -93,7 +93,7 @@ u32 _rtw_init_sta_priv(struct sta_priv *pstapriv)
pstapriv->expire_to = 3; /* 3*2 = 6 sec */ pstapriv->expire_to = 3; /* 3*2 = 6 sec */
pstapriv->max_num_sta = NUM_STA; pstapriv->max_num_sta = NUM_STA;
return _SUCCESS; return 0;
} }
inline int rtw_stainfo_offset(struct sta_priv *stapriv, struct sta_info *sta) inline int rtw_stainfo_offset(struct sta_priv *stapriv, struct sta_info *sta)
@ -242,7 +242,7 @@ exit:
} }
/* using pstapriv->sta_hash_lock to protect */ /* using pstapriv->sta_hash_lock to protect */
u32 rtw_free_stainfo(struct adapter *padapter, struct sta_info *psta) void rtw_free_stainfo(struct adapter *padapter, struct sta_info *psta)
{ {
int i; int i;
struct __queue *pfree_sta_queue; struct __queue *pfree_sta_queue;
@ -252,7 +252,7 @@ u32 rtw_free_stainfo(struct adapter *padapter, struct sta_info *psta)
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
if (!psta) if (!psta)
goto exit; return;
pfree_sta_queue = &pstapriv->free_sta_queue; pfree_sta_queue = &pstapriv->free_sta_queue;
@ -356,10 +356,6 @@ u32 rtw_free_stainfo(struct adapter *padapter, struct sta_info *psta)
spin_lock_bh(&pfree_sta_queue->lock); spin_lock_bh(&pfree_sta_queue->lock);
list_add_tail(&psta->list, get_list_head(pfree_sta_queue)); list_add_tail(&psta->list, get_list_head(pfree_sta_queue));
spin_unlock_bh(&pfree_sta_queue->lock); spin_unlock_bh(&pfree_sta_queue->lock);
exit:
return _SUCCESS;
} }
/* free all stainfo which in sta_hash[all] */ /* free all stainfo which in sta_hash[all] */
@ -404,7 +400,7 @@ struct sta_info *rtw_get_stainfo(struct sta_priv *pstapriv, u8 *hwaddr)
if (!hwaddr) if (!hwaddr)
return NULL; return NULL;
if (IS_MCAST(hwaddr)) if (is_multicast_ether_addr(hwaddr))
addr = bc_addr; addr = bc_addr;
else else
addr = hwaddr; addr = hwaddr;

View File

@ -331,35 +331,35 @@ u16 get_beacon_interval(struct wlan_bssid_ex *bss)
return le16_to_cpu(val); return le16_to_cpu(val);
} }
int is_client_associated_to_ap(struct adapter *padapter) bool r8188eu_is_client_associated_to_ap(struct adapter *padapter)
{ {
struct mlme_ext_priv *pmlmeext; struct mlme_ext_priv *pmlmeext;
struct mlme_ext_info *pmlmeinfo; struct mlme_ext_info *pmlmeinfo;
if (!padapter) if (!padapter)
return _FAIL; return false;
pmlmeext = &padapter->mlmeextpriv; pmlmeext = &padapter->mlmeextpriv;
pmlmeinfo = &pmlmeext->mlmext_info; pmlmeinfo = &pmlmeext->mlmext_info;
if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE)) if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x03) == WIFI_FW_STATION_STATE))
return true; return true;
else
return _FAIL; return false;
} }
int is_client_associated_to_ibss(struct adapter *padapter) bool r8188eu_is_client_associated_to_ibss(struct adapter *padapter)
{ {
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE)) if ((pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS) && ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE))
return true; return true;
else
return _FAIL; return false;
} }
int is_IBSS_empty(struct adapter *padapter) bool r8188eu_is_ibss_empty(struct adapter *padapter)
{ {
unsigned int i; unsigned int i;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
@ -367,7 +367,7 @@ int is_IBSS_empty(struct adapter *padapter)
for (i = IBSS_START_MAC_ID; i < NUM_STA; i++) { for (i = IBSS_START_MAC_ID; i < NUM_STA; i++) {
if (pmlmeinfo->FW_sta_info[i].status == 1) if (pmlmeinfo->FW_sta_info[i].status == 1)
return _FAIL; return false;
} }
return true; return true;
} }
@ -874,9 +874,10 @@ void VCS_update(struct adapter *padapter, struct sta_info *psta)
int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len) int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
{ {
struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)pframe;
unsigned int len; unsigned int len;
unsigned char *p; unsigned char *p;
unsigned short val16, subtype; unsigned short val16;
struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network; struct wlan_network *cur_network = &Adapter->mlmepriv.cur_network;
/* u8 wpa_ie[255], rsn_ie[255]; */ /* u8 wpa_ie[255], rsn_ie[255]; */
u16 wpa_len = 0, rsn_len = 0; u16 wpa_len = 0, rsn_len = 0;
@ -893,7 +894,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
unsigned short ht_cap_info; unsigned short ht_cap_info;
unsigned char ht_info_infos_0; unsigned char ht_info_infos_0;
if (!is_client_associated_to_ap(Adapter)) if (!r8188eu_is_client_associated_to_ap(Adapter))
return true; return true;
len = packet_len - sizeof(struct ieee80211_hdr_3addr); len = packet_len - sizeof(struct ieee80211_hdr_3addr);
@ -908,9 +909,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
if (!bssid) if (!bssid)
return _FAIL; return _FAIL;
subtype = GetFrameSubType(pframe) >> 4; if (ieee80211_is_beacon(mgmt->frame_control))
if (subtype == WIFI_BEACON)
bssid->Reserved[0] = 1; bssid->Reserved[0] = 1;
bssid->Length = sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + len; bssid->Length = sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + len;
@ -1035,16 +1034,13 @@ _mismatch:
return _FAIL; return _FAIL;
} }
void update_beacon_info(struct adapter *padapter, u8 *pframe, uint pkt_len, struct sta_info *psta) void update_beacon_info(struct adapter *padapter, u8 *ie_ptr, uint ie_len, struct sta_info *psta)
{ {
unsigned int i; unsigned int i;
unsigned int len;
struct ndis_802_11_var_ie *pIE; struct ndis_802_11_var_ie *pIE;
len = pkt_len - (_BEACON_IE_OFFSET_ + WLAN_HDR_A3_LEN); for (i = 0; i < ie_len;) {
pIE = (struct ndis_802_11_var_ie *)(ie_ptr + i);
for (i = 0; i < len;) {
pIE = (struct ndis_802_11_var_ie *)(pframe + (_BEACON_IE_OFFSET_ + WLAN_HDR_A3_LEN) + i);
switch (pIE->ElementID) { switch (pIE->ElementID) {
case _HT_EXTRA_INFO_IE_: /* HT info */ case _HT_EXTRA_INFO_IE_: /* HT info */

View File

@ -38,7 +38,7 @@ static int rtw_xmit_resource_alloc(struct adapter *padapter, struct xmit_buf *px
{ {
pxmitbuf->pallocated_buf = kzalloc(alloc_sz, GFP_KERNEL); pxmitbuf->pallocated_buf = kzalloc(alloc_sz, GFP_KERNEL);
if (!pxmitbuf->pallocated_buf) if (!pxmitbuf->pallocated_buf)
return _FAIL; return -ENOMEM;
pxmitbuf->pbuf = (u8 *)ALIGN((size_t)(pxmitbuf->pallocated_buf), XMITBUF_ALIGN_SZ); pxmitbuf->pbuf = (u8 *)ALIGN((size_t)(pxmitbuf->pallocated_buf), XMITBUF_ALIGN_SZ);
pxmitbuf->dma_transfer_addr = 0; pxmitbuf->dma_transfer_addr = 0;
@ -46,10 +46,10 @@ static int rtw_xmit_resource_alloc(struct adapter *padapter, struct xmit_buf *px
pxmitbuf->pxmit_urb = usb_alloc_urb(0, GFP_KERNEL); pxmitbuf->pxmit_urb = usb_alloc_urb(0, GFP_KERNEL);
if (!pxmitbuf->pxmit_urb) { if (!pxmitbuf->pxmit_urb) {
kfree(pxmitbuf->pallocated_buf); kfree(pxmitbuf->pallocated_buf);
return _FAIL; return -ENOMEM;
} }
return _SUCCESS; return 0;
} }
static void rtw_xmit_resource_free(struct adapter *padapter, struct xmit_buf *pxmitbuf, static void rtw_xmit_resource_free(struct adapter *padapter, struct xmit_buf *pxmitbuf,
@ -59,12 +59,11 @@ static void rtw_xmit_resource_free(struct adapter *padapter, struct xmit_buf *px
kfree(pxmitbuf->pallocated_buf); kfree(pxmitbuf->pallocated_buf);
} }
s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter) int _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
{ {
int i; int i;
struct xmit_buf *pxmitbuf; struct xmit_buf *pxmitbuf;
struct xmit_frame *pxframe; struct xmit_frame *pxframe;
int res = _SUCCESS;
u32 max_xmit_extbuf_size = MAX_XMIT_EXTBUF_SZ; u32 max_xmit_extbuf_size = MAX_XMIT_EXTBUF_SZ;
u32 num_xmit_extbuf = NR_XMIT_EXTBUFF; u32 num_xmit_extbuf = NR_XMIT_EXTBUFF;
@ -97,7 +96,6 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
if (!pxmitpriv->pallocated_frame_buf) { if (!pxmitpriv->pallocated_frame_buf) {
pxmitpriv->pxmit_frame_buf = NULL; pxmitpriv->pxmit_frame_buf = NULL;
res = _FAIL;
goto exit; goto exit;
} }
pxmitpriv->pxmit_frame_buf = (u8 *)ALIGN((size_t)(pxmitpriv->pallocated_frame_buf), 4); pxmitpriv->pxmit_frame_buf = (u8 *)ALIGN((size_t)(pxmitpriv->pallocated_frame_buf), 4);
@ -132,10 +130,8 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
pxmitpriv->pallocated_xmitbuf = vzalloc(NR_XMITBUFF * sizeof(struct xmit_buf) + 4); pxmitpriv->pallocated_xmitbuf = vzalloc(NR_XMITBUFF * sizeof(struct xmit_buf) + 4);
if (!pxmitpriv->pallocated_xmitbuf) { if (!pxmitpriv->pallocated_xmitbuf)
res = _FAIL;
goto free_frame_buf; goto free_frame_buf;
}
pxmitpriv->pxmitbuf = (u8 *)ALIGN((size_t)(pxmitpriv->pallocated_xmitbuf), 4); pxmitpriv->pxmitbuf = (u8 *)ALIGN((size_t)(pxmitpriv->pallocated_xmitbuf), 4);
/* pxmitpriv->pxmitbuf = pxmitpriv->pallocated_xmitbuf + 4 - */ /* pxmitpriv->pxmitbuf = pxmitpriv->pallocated_xmitbuf + 4 - */
@ -151,11 +147,9 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
pxmitbuf->ext_tag = false; pxmitbuf->ext_tag = false;
/* Tx buf allocation may fail sometimes, so sleep and retry. */ /* Tx buf allocation may fail sometimes, so sleep and retry. */
res = rtw_xmit_resource_alloc(padapter, pxmitbuf, (MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ)); if (rtw_xmit_resource_alloc(padapter, pxmitbuf, (MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ))) {
if (res == _FAIL) {
msleep(10); msleep(10);
res = rtw_xmit_resource_alloc(padapter, pxmitbuf, (MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ)); if (rtw_xmit_resource_alloc(padapter, pxmitbuf, (MAX_XMITBUF_SZ + XMITBUF_ALIGN_SZ)))
if (res == _FAIL)
goto free_xmitbuf; goto free_xmitbuf;
} }
@ -172,10 +166,8 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
pxmitpriv->pallocated_xmit_extbuf = vzalloc(num_xmit_extbuf * sizeof(struct xmit_buf) + 4); pxmitpriv->pallocated_xmit_extbuf = vzalloc(num_xmit_extbuf * sizeof(struct xmit_buf) + 4);
if (!pxmitpriv->pallocated_xmit_extbuf) { if (!pxmitpriv->pallocated_xmit_extbuf)
res = _FAIL;
goto free_xmitbuf; goto free_xmitbuf;
}
pxmitpriv->pxmit_extbuf = (u8 *)ALIGN((size_t)(pxmitpriv->pallocated_xmit_extbuf), 4); pxmitpriv->pxmit_extbuf = (u8 *)ALIGN((size_t)(pxmitpriv->pallocated_xmit_extbuf), 4);
@ -188,11 +180,8 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
pxmitbuf->padapter = padapter; pxmitbuf->padapter = padapter;
pxmitbuf->ext_tag = true; pxmitbuf->ext_tag = true;
res = rtw_xmit_resource_alloc(padapter, pxmitbuf, max_xmit_extbuf_size + XMITBUF_ALIGN_SZ); if (rtw_xmit_resource_alloc(padapter, pxmitbuf, max_xmit_extbuf_size + XMITBUF_ALIGN_SZ))
if (res == _FAIL) {
res = _FAIL;
goto free_xmit_extbuf; goto free_xmit_extbuf;
}
list_add_tail(&pxmitbuf->list, &pxmitpriv->free_xmit_extbuf_queue.queue); list_add_tail(&pxmitbuf->list, &pxmitpriv->free_xmit_extbuf_queue.queue);
pxmitbuf++; pxmitbuf++;
@ -200,10 +189,8 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
pxmitpriv->free_xmit_extbuf_cnt = num_xmit_extbuf; pxmitpriv->free_xmit_extbuf_cnt = num_xmit_extbuf;
if (rtw_alloc_hwxmits(padapter)) { if (rtw_alloc_hwxmits(padapter))
res = _FAIL;
goto free_xmit_extbuf; goto free_xmit_extbuf;
}
rtw_init_hwxmits(pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry); rtw_init_hwxmits(pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry);
@ -226,7 +213,7 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
rtl8188eu_init_xmit_priv(padapter); rtl8188eu_init_xmit_priv(padapter);
return _SUCCESS; return 0;
free_xmit_extbuf: free_xmit_extbuf:
pxmitbuf = (struct xmit_buf *)pxmitpriv->pxmit_extbuf; pxmitbuf = (struct xmit_buf *)pxmitpriv->pxmit_extbuf;
@ -246,7 +233,7 @@ free_xmitbuf:
free_frame_buf: free_frame_buf:
vfree(pxmitpriv->pallocated_frame_buf); vfree(pxmitpriv->pallocated_frame_buf);
exit: exit:
return res; return -ENOMEM;
} }
static void rtw_pkt_complete(struct adapter *padapter, struct sk_buff *pkt) static void rtw_pkt_complete(struct adapter *padapter, struct sk_buff *pkt)
@ -476,8 +463,7 @@ static uint rtw_pktfile_read(struct pkt_file *pfile, u8 *rmem, uint rlen)
{ {
uint len; uint len;
len = rtw_remainder_len(pfile); len = min(rtw_remainder_len(pfile), rlen);
len = (rlen > len) ? len : rlen;
if (rmem) if (rmem)
skb_copy_bits(pfile->pkt, pfile->buf_len - pfile->pkt_len, rmem, len); skb_copy_bits(pfile->pkt, pfile->buf_len - pfile->pkt_len, rmem, len);
@ -1622,14 +1608,14 @@ static int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb)
spin_lock_bh(&padapter->br_ext_lock); spin_lock_bh(&padapter->br_ext_lock);
if (!(skb->data[0] & 1) && br_port && if (!(skb->data[0] & 1) && br_port &&
memcmp(skb->data + ETH_ALEN, padapter->br_mac, ETH_ALEN) && memcmp(skb->data + ETH_ALEN, padapter->br_mac, ETH_ALEN) &&
*((__be16 *)(skb->data + ETH_ALEN * 2)) != __constant_htons(ETH_P_8021Q) && *((__be16 *)(skb->data + ETH_ALEN * 2)) != htons(ETH_P_8021Q) &&
*((__be16 *)(skb->data + ETH_ALEN * 2)) == __constant_htons(ETH_P_IP) && *((__be16 *)(skb->data + ETH_ALEN * 2)) == htons(ETH_P_IP) &&
!memcmp(padapter->scdb_mac, skb->data + ETH_ALEN, ETH_ALEN) && padapter->scdb_entry) { !memcmp(padapter->scdb_mac, skb->data + ETH_ALEN, ETH_ALEN) && padapter->scdb_entry) {
memcpy(skb->data + ETH_ALEN, GET_MY_HWADDR(padapter), ETH_ALEN); memcpy(skb->data + ETH_ALEN, GET_MY_HWADDR(padapter), ETH_ALEN);
padapter->scdb_entry->ageing_timer = jiffies; padapter->scdb_entry->ageing_timer = jiffies;
spin_unlock_bh(&padapter->br_ext_lock); spin_unlock_bh(&padapter->br_ext_lock);
} else { } else {
if (*((__be16 *)(skb->data + ETH_ALEN * 2)) == __constant_htons(ETH_P_8021Q)) { if (*((__be16 *)(skb->data + ETH_ALEN * 2)) == htons(ETH_P_8021Q)) {
is_vlan_tag = 1; is_vlan_tag = 1;
vlan_hdr = *((unsigned short *)(skb->data + ETH_ALEN * 2 + 2)); vlan_hdr = *((unsigned short *)(skb->data + ETH_ALEN * 2 + 2));
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
@ -1637,10 +1623,10 @@ static int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb)
skb_pull(skb, 4); skb_pull(skb, 4);
} }
if (!memcmp(skb->data + ETH_ALEN, padapter->br_mac, ETH_ALEN) && if (!memcmp(skb->data + ETH_ALEN, padapter->br_mac, ETH_ALEN) &&
(*((__be16 *)(skb->data + ETH_ALEN * 2)) == __constant_htons(ETH_P_IP))) (*((__be16 *)(skb->data + ETH_ALEN * 2)) == htons(ETH_P_IP)))
memcpy(padapter->br_ip, skb->data + WLAN_ETHHDR_LEN + 12, 4); memcpy(padapter->br_ip, skb->data + WLAN_ETHHDR_LEN + 12, 4);
if (*((__be16 *)(skb->data + ETH_ALEN * 2)) == __constant_htons(ETH_P_IP)) { if (*((__be16 *)(skb->data + ETH_ALEN * 2)) == htons(ETH_P_IP)) {
if (memcmp(padapter->scdb_mac, skb->data + ETH_ALEN, ETH_ALEN)) { if (memcmp(padapter->scdb_mac, skb->data + ETH_ALEN, ETH_ALEN)) {
padapter->scdb_entry = (struct nat25_network_db_entry *)scdb_findEntry(padapter, padapter->scdb_entry = (struct nat25_network_db_entry *)scdb_findEntry(padapter,
skb->data + WLAN_ETHHDR_LEN + 12); skb->data + WLAN_ETHHDR_LEN + 12);
@ -1669,7 +1655,7 @@ static int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb)
skb_push(skb, 4); skb_push(skb, 4);
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
*((unsigned short *)(skb->data + i * 2)) = *((unsigned short *)(skb->data + 4 + i * 2)); *((unsigned short *)(skb->data + i * 2)) = *((unsigned short *)(skb->data + 4 + i * 2));
*((__be16 *)(skb->data + ETH_ALEN * 2)) = __constant_htons(ETH_P_8021Q); *((__be16 *)(skb->data + ETH_ALEN * 2)) = htons(ETH_P_8021Q);
*((unsigned short *)(skb->data + ETH_ALEN * 2 + 2)) = vlan_hdr; *((unsigned short *)(skb->data + ETH_ALEN * 2 + 2)) = vlan_hdr;
} }
@ -1708,7 +1694,7 @@ static int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb)
skb_push(skb, 4); skb_push(skb, 4);
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
*((unsigned short *)(skb->data + i * 2)) = *((unsigned short *)(skb->data + 4 + i * 2)); *((unsigned short *)(skb->data + i * 2)) = *((unsigned short *)(skb->data + 4 + i * 2));
*((__be16 *)(skb->data + ETH_ALEN * 2)) = __constant_htons(ETH_P_8021Q); *((__be16 *)(skb->data + ETH_ALEN * 2)) = htons(ETH_P_8021Q);
*((unsigned short *)(skb->data + ETH_ALEN * 2 + 2)) = vlan_hdr; *((unsigned short *)(skb->data + ETH_ALEN * 2 + 2)) = vlan_hdr;
} }
} }

View File

@ -69,7 +69,7 @@ void ODM_TxPwrTrackAdjust88E(struct odm_dm_struct *dm_odm, u8 Type,/* 0 = OFDM,
/*----------------------------------------------------------------------------- /*-----------------------------------------------------------------------------
* Function: odm_TxPwrTrackSetPwr88E() * Function: odm_TxPwrTrackSetPwr88E()
* *
* Overview: 88E change all channel tx power accordign to flag. * Overview: 88E change all channel tx power according to flag.
* OFDM & CCK are all different. * OFDM & CCK are all different.
* *
* Input: NONE * Input: NONE
@ -583,7 +583,7 @@ static bool phy_SimularityCompare_8188E(
tmp2 = resulta[c2][i]; tmp2 = resulta[c2][i];
} }
diff = (tmp1 > tmp2) ? (tmp1 - tmp2) : (tmp2 - tmp1); diff = abs(tmp1 - tmp2);
if (diff > MAX_TOLERANCE) { if (diff > MAX_TOLERANCE) {
if ((i == 2 || i == 6) && !sim_bitmap) { if ((i == 2 || i == 6) && !sim_bitmap) {
@ -882,14 +882,6 @@ void PHY_IQCalibrate_8188E(struct adapter *adapt, bool recovery)
if (RegE94 != 0) if (RegE94 != 0)
patha_fill_iqk(adapt, pathaok, result, final_candidate, (RegEA4 == 0)); patha_fill_iqk(adapt, pathaok, result, final_candidate, (RegEA4 == 0));
/* To Fix BSOD when final_candidate is 0xff */
/* by sherry 20120321 */
if (final_candidate < 4) {
for (i = 0; i < IQK_Matrix_REG_NUM; i++)
dm_odm->RFCalibrateInfo.IQKMatrixRegSetting.Value[0][i] = result[final_candidate][i];
dm_odm->RFCalibrateInfo.IQKMatrixRegSetting.bIQKDone = true;
}
_PHY_SaveADDARegisters(adapt, IQK_BB_REG_92C, dm_odm->RFCalibrateInfo.IQK_BB_backup_recover, 9); _PHY_SaveADDARegisters(adapt, IQK_BB_REG_92C, dm_odm->RFCalibrateInfo.IQK_BB_backup_recover, 9);
} }

View File

@ -6,24 +6,19 @@
#include "../include/drv_types.h" #include "../include/drv_types.h"
#include "../include/hal_intf.h" #include "../include/hal_intf.h"
uint rtw_hal_init(struct adapter *adapt) uint rtw_hal_init(struct adapter *adapt)
{ {
uint status = _SUCCESS;
adapt->hw_init_completed = false; adapt->hw_init_completed = false;
status = rtl8188eu_hal_init(adapt); if (rtl8188eu_hal_init(adapt) != _SUCCESS)
return _FAIL;
if (status == _SUCCESS) { adapt->hw_init_completed = true;
adapt->hw_init_completed = true;
if (adapt->registrypriv.notch_filter == 1) if (adapt->registrypriv.notch_filter == 1)
hal_notch_filter_8188e(adapt, 1); hal_notch_filter_8188e(adapt, 1);
} else {
adapt->hw_init_completed = false;
}
return status; return _SUCCESS;
} }
uint rtw_hal_deinit(struct adapter *adapt) uint rtw_hal_deinit(struct adapter *adapt)

View File

@ -194,12 +194,12 @@ static void odm_HWAntDiv(struct odm_dm_struct *dm_odm)
for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) { for (i = 0; i < ODM_ASSOCIATE_ENTRY_NUM; i++) {
pEntry = dm_odm->pODM_StaInfo[i]; pEntry = dm_odm->pODM_StaInfo[i];
if (IS_STA_VALID(pEntry)) { if (IS_STA_VALID(pEntry)) {
/* 2 Caculate RSSI per Antenna */ /* 2 Calculate RSSI per Antenna */
Main_RSSI = (dm_fat_tbl->MainAnt_Cnt[i] != 0) ? (dm_fat_tbl->MainAnt_Sum[i] / dm_fat_tbl->MainAnt_Cnt[i]) : 0; Main_RSSI = (dm_fat_tbl->MainAnt_Cnt[i] != 0) ? (dm_fat_tbl->MainAnt_Sum[i] / dm_fat_tbl->MainAnt_Cnt[i]) : 0;
Aux_RSSI = (dm_fat_tbl->AuxAnt_Cnt[i] != 0) ? (dm_fat_tbl->AuxAnt_Sum[i] / dm_fat_tbl->AuxAnt_Cnt[i]) : 0; Aux_RSSI = (dm_fat_tbl->AuxAnt_Cnt[i] != 0) ? (dm_fat_tbl->AuxAnt_Sum[i] / dm_fat_tbl->AuxAnt_Cnt[i]) : 0;
TargetAnt = (Main_RSSI >= Aux_RSSI) ? MAIN_ANT : AUX_ANT; TargetAnt = (Main_RSSI >= Aux_RSSI) ? MAIN_ANT : AUX_ANT;
/* 2 Select MaxRSSI for DIG */ /* 2 Select MaxRSSI for DIG */
LocalMaxRSSI = (Main_RSSI > Aux_RSSI) ? Main_RSSI : Aux_RSSI; LocalMaxRSSI = max(Main_RSSI, Aux_RSSI);
if ((LocalMaxRSSI > AntDivMaxRSSI) && (LocalMaxRSSI < 40)) if ((LocalMaxRSSI > AntDivMaxRSSI) && (LocalMaxRSSI < 40))
AntDivMaxRSSI = LocalMaxRSSI; AntDivMaxRSSI = LocalMaxRSSI;
if (LocalMaxRSSI > MaxRSSI) if (LocalMaxRSSI > MaxRSSI)
@ -211,7 +211,7 @@ static void odm_HWAntDiv(struct odm_dm_struct *dm_odm)
else if ((dm_fat_tbl->RxIdleAnt == AUX_ANT) && (Aux_RSSI == 0)) else if ((dm_fat_tbl->RxIdleAnt == AUX_ANT) && (Aux_RSSI == 0))
Aux_RSSI = Main_RSSI; Aux_RSSI = Main_RSSI;
LocalMinRSSI = (Main_RSSI > Aux_RSSI) ? Aux_RSSI : Main_RSSI; LocalMinRSSI = min(Main_RSSI, Aux_RSSI);
if (LocalMinRSSI < MinRSSI) { if (LocalMinRSSI < MinRSSI) {
MinRSSI = LocalMinRSSI; MinRSSI = LocalMinRSSI;
RxIdleAnt = TargetAnt; RxIdleAnt = TargetAnt;

View File

@ -355,7 +355,7 @@ void rtl8188e_EfusePowerSwitch(struct adapter *pAdapter, u8 PwrState)
if (PwrState) { if (PwrState) {
rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON); rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON);
/* 1.2V Power: From VDDON with Power Cut(0x0000h[15]), defualt valid */ /* 1.2V Power: From VDDON with Power Cut(0x0000h[15]), default valid */
res = rtw_read16(pAdapter, REG_SYS_ISO_CTRL, &tmpV16); res = rtw_read16(pAdapter, REG_SYS_ISO_CTRL, &tmpV16);
if (res) if (res)
return; return;
@ -676,11 +676,7 @@ s32 InitLLTTable(struct adapter *padapter, u8 txpktbuf_bndy)
return status; return status;
} }
void void Hal_EfuseParseIDCode88E(struct adapter *padapter, u8 *hwinfo)
Hal_EfuseParseIDCode88E(
struct adapter *padapter,
u8 *hwinfo
)
{ {
struct eeprom_priv *pEEPROM = &padapter->eeprompriv; struct eeprom_priv *pEEPROM = &padapter->eeprompriv;
struct net_device *netdev = padapter->pnetdev; struct net_device *netdev = padapter->pnetdev;

View File

@ -23,7 +23,7 @@ static u32 phy_calculate_bit_shift(u32 bitmask)
/** /**
* Function: PHY_QueryBBReg * Function: PHY_QueryBBReg
* *
* OverView: Read "sepcific bits" from BB register * Overview: Read "sepcific bits" from BB register
* *
* Input: * Input:
* struct adapter *Adapter, * struct adapter *Adapter,
@ -56,7 +56,7 @@ rtl8188e_PHY_QueryBBReg(
/** /**
* Function: PHY_SetBBReg * Function: PHY_SetBBReg
* *
* OverView: Write "Specific bits" to BB register (page 8~) * Overview: Write "Specific bits" to BB register (page 8~)
* *
* Input: * Input:
* struct adapter *Adapter, * struct adapter *Adapter,
@ -94,7 +94,7 @@ void rtl8188e_PHY_SetBBReg(struct adapter *Adapter, u32 RegAddr, u32 BitMask, u3
/** /**
* Function: phy_RFSerialRead * Function: phy_RFSerialRead
* *
* OverView: Read regster from RF chips * Overview: Read register from RF chips
* *
* Input: * Input:
* struct adapter *Adapter, * struct adapter *Adapter,
@ -160,7 +160,7 @@ phy_RFSerialRead(
/** /**
* Function: phy_RFSerialWrite * Function: phy_RFSerialWrite
* *
* OverView: Write data to RF register (page 8~) * Overview: Write data to RF register (page 8~)
* *
* Input: * Input:
* struct adapter *Adapter, * struct adapter *Adapter,
@ -235,7 +235,7 @@ phy_RFSerialWrite(
/** /**
* Function: PHY_QueryRFReg * Function: PHY_QueryRFReg
* *
* OverView: Query "Specific bits" to RF register (page 8~) * Overview: Query "Specific bits" to RF register (page 8~)
* *
* Input: * Input:
* struct adapter *Adapter, * struct adapter *Adapter,
@ -261,7 +261,7 @@ u32 rtl8188e_PHY_QueryRFReg(struct adapter *Adapter, u32 RegAddr, u32 BitMask)
/** /**
* Function: PHY_SetRFReg * Function: PHY_SetRFReg
* *
* OverView: Write "Specific bits" to RF register (page 8~) * Overview: Write "Specific bits" to RF register (page 8~)
* *
* Input: * Input:
* struct adapter *Adapter, * struct adapter *Adapter,
@ -335,7 +335,7 @@ s32 PHY_MACConfig8188E(struct adapter *Adapter)
/** /**
* Function: phy_InitBBRFRegisterDefinition * Function: phy_InitBBRFRegisterDefinition
* *
* OverView: Initialize Register definition offset for Radio Path A/B/C/D * Overview: Initialize Register definition offset for Radio Path A/B/C/D
* *
* Input: * Input:
* struct adapter *Adapter, * struct adapter *Adapter,
@ -363,7 +363,7 @@ phy_InitBBRFRegisterDefinition(
/* RF Interface (Output and) Enable */ /* RF Interface (Output and) Enable */
pHalData->PHYRegDef.rfintfe = rFPGA0_XA_RFInterfaceOE; /* 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) */ pHalData->PHYRegDef.rfintfe = rFPGA0_XA_RFInterfaceOE; /* 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) */
/* Addr of LSSI. Wirte RF register by driver */ /* Addr of LSSI. Write RF register by driver */
pHalData->PHYRegDef.rf3wireOffset = rFPGA0_XA_LSSIParameter; /* LSSI Parameter */ pHalData->PHYRegDef.rf3wireOffset = rFPGA0_XA_LSSIParameter; /* LSSI Parameter */
/* RF parameter */ /* RF parameter */

View File

@ -66,28 +66,25 @@ void update_recvframe_attrib_88e(struct recv_frame *precvframe, struct recv_stat
if (pattrib->pkt_rpt_type == NORMAL_RX) { if (pattrib->pkt_rpt_type == NORMAL_RX) {
pattrib->pkt_len = le32_to_cpu(prxstat->rxdw0) & 0x00003fff; pattrib->pkt_len = le32_to_cpu(prxstat->rxdw0) & 0x00003fff;
pattrib->icv_err = (le32_to_cpu(prxstat->rxdw0) >> 15) & 0x1;
pattrib->drvinfo_sz = ((le32_to_cpu(prxstat->rxdw0) >> 16) & 0xf) * 8; pattrib->drvinfo_sz = ((le32_to_cpu(prxstat->rxdw0) >> 16) & 0xf) * 8;
pattrib->encrypt = (u8)((le32_to_cpu(prxstat->rxdw0) >> 20) & 0x7);
pattrib->physt = (le32_to_cpu(prxstat->rxdw0) >> 26) & 0x1;
pattrib->bdecrypted = (le32_to_cpu(prxstat->rxdw0) & BIT(27)) ? 0 : 1;
pattrib->encrypt = (le32_to_cpu(prxstat->rxdw0) >> 20) & 0x7;
pattrib->qos = (le32_to_cpu(prxstat->rxdw0) >> 23) & 0x1; pattrib->qos = (le32_to_cpu(prxstat->rxdw0) >> 23) & 0x1;
pattrib->priority = (le32_to_cpu(prxstat->rxdw1) >> 8) & 0xf; pattrib->shift_sz = (le32_to_cpu(prxstat->rxdw0) >> 24) & 0x3;
pattrib->physt = (le32_to_cpu(prxstat->rxdw0) >> 26) & 0x1;
pattrib->bdecrypted = (le32_to_cpu(prxstat->rxdw0) & BIT(27)) ? 0 : 1;
pattrib->priority = (le32_to_cpu(prxstat->rxdw1) >> 8) & 0xf;
pattrib->amsdu = (le32_to_cpu(prxstat->rxdw1) >> 13) & 0x1; pattrib->amsdu = (le32_to_cpu(prxstat->rxdw1) >> 13) & 0x1;
pattrib->mdata = (le32_to_cpu(prxstat->rxdw1) >> 26) & 0x1;
pattrib->mfrag = (le32_to_cpu(prxstat->rxdw1) >> 27) & 0x1;
pattrib->seq_num = le32_to_cpu(prxstat->rxdw2) & 0x00000fff; pattrib->seq_num = le32_to_cpu(prxstat->rxdw2) & 0x00000fff;
pattrib->frag_num = (le32_to_cpu(prxstat->rxdw2) >> 12) & 0xf; pattrib->frag_num = (le32_to_cpu(prxstat->rxdw2) >> 12) & 0xf;
pattrib->mfrag = (le32_to_cpu(prxstat->rxdw1) >> 27) & 0x1;
pattrib->mdata = (le32_to_cpu(prxstat->rxdw1) >> 26) & 0x1;
pattrib->mcs_rate = le32_to_cpu(prxstat->rxdw3) & 0x3f; pattrib->mcs_rate = le32_to_cpu(prxstat->rxdw3) & 0x3f;
pattrib->rxht = (le32_to_cpu(prxstat->rxdw3) >> 6) & 0x1; pattrib->rxht = (le32_to_cpu(prxstat->rxdw3) >> 6) & 0x1;
pattrib->icv_err = (le32_to_cpu(prxstat->rxdw0) >> 15) & 0x1;
pattrib->shift_sz = (le32_to_cpu(prxstat->rxdw0) >> 24) & 0x3;
} else if (pattrib->pkt_rpt_type == TX_REPORT1) { /* CCX */ } else if (pattrib->pkt_rpt_type == TX_REPORT1) { /* CCX */
pattrib->pkt_len = TX_RPT1_PKT_LEN; pattrib->pkt_len = TX_RPT1_PKT_LEN;
} else if (pattrib->pkt_rpt_type == TX_REPORT2) { } else if (pattrib->pkt_rpt_type == TX_REPORT2) {
@ -108,33 +105,34 @@ void update_recvframe_attrib_88e(struct recv_frame *precvframe, struct recv_stat
*/ */
void update_recvframe_phyinfo_88e(struct recv_frame *precvframe, struct phy_stat *pphy_status) void update_recvframe_phyinfo_88e(struct recv_frame *precvframe, struct phy_stat *pphy_status)
{ {
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)precvframe->rx_data;
struct adapter *padapter = precvframe->adapter; struct adapter *padapter = precvframe->adapter;
struct rx_pkt_attrib *pattrib = &precvframe->attrib; struct rx_pkt_attrib *pattrib = &precvframe->attrib;
struct hal_data_8188e *pHalData = &padapter->haldata; struct hal_data_8188e *pHalData = &padapter->haldata;
struct phy_info *pPHYInfo = &pattrib->phy_info; struct phy_info *pPHYInfo = &pattrib->phy_info;
u8 *wlanhdr = precvframe->rx_data; u8 *wlanhdr = precvframe->rx_data;
__le16 fc = *(__le16 *)wlanhdr;
struct odm_per_pkt_info pkt_info; struct odm_per_pkt_info pkt_info;
u8 *sa = NULL; u8 *sa = NULL;
struct sta_priv *pstapriv; struct sta_priv *pstapriv;
struct sta_info *psta; struct sta_info *psta;
pkt_info.bPacketMatchBSSID = ((!ieee80211_is_ctl(fc)) && pkt_info.bPacketMatchBSSID = ((!ieee80211_is_ctl(hdr->frame_control)) &&
!pattrib->icv_err && !pattrib->crc_err && !pattrib->icv_err && !pattrib->crc_err &&
!memcmp(get_hdr_bssid(wlanhdr), !memcmp(get_hdr_bssid(wlanhdr),
get_bssid(&padapter->mlmepriv), ETH_ALEN)); get_bssid(&padapter->mlmepriv), ETH_ALEN));
pkt_info.bPacketToSelf = pkt_info.bPacketMatchBSSID && pkt_info.bPacketToSelf = pkt_info.bPacketMatchBSSID &&
(!memcmp(get_da(wlanhdr), ether_addr_equal(ieee80211_get_DA(hdr),
myid(&padapter->eeprompriv), ETH_ALEN)); myid(&padapter->eeprompriv));
pkt_info.bPacketBeacon = pkt_info.bPacketMatchBSSID && ieee80211_is_beacon(fc); pkt_info.bPacketBeacon = pkt_info.bPacketMatchBSSID &&
ieee80211_is_beacon(hdr->frame_control);
if (pkt_info.bPacketBeacon) { if (pkt_info.bPacketBeacon) {
if (check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE)) if (check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE))
sa = padapter->mlmepriv.cur_network.network.MacAddress; sa = padapter->mlmepriv.cur_network.network.MacAddress;
/* to do Ad-hoc */ /* to do Ad-hoc */
} else { } else {
sa = get_sa(wlanhdr); sa = ieee80211_get_SA(hdr);
} }
pstapriv = &padapter->stapriv; pstapriv = &padapter->stapriv;

View File

@ -149,7 +149,6 @@ static void fill_txdesc_phy(struct pkt_attrib *pattrib, __le32 *pdw)
static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bagg_pkt) static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bagg_pkt)
{ {
int pull = 0;
uint qsel; uint qsel;
u8 data_rate, pwr_status, offset; u8 data_rate, pwr_status, offset;
struct adapter *adapt = pxmitframe->padapter; struct adapter *adapt = pxmitframe->padapter;
@ -295,7 +294,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz, u8 bag
ODM_SetTxAntByTxInfo_88E(&haldata->odmpriv, pmem, pattrib->mac_id); ODM_SetTxAntByTxInfo_88E(&haldata->odmpriv, pmem, pattrib->mac_id);
rtl8188eu_cal_txdesc_chksum(ptxdesc); rtl8188eu_cal_txdesc_chksum(ptxdesc);
return pull; return 0;
} }
/* for non-agg data frame or management frame */ /* for non-agg data frame or management frame */

View File

@ -92,7 +92,7 @@
#define rFPGA0_AdDaClockEn 0x888 #define rFPGA0_AdDaClockEn 0x888
#define rFPGA0_AnalogParameter4 0x88c #define rFPGA0_AnalogParameter4 0x88c
#define rFPGA0_XA_LSSIReadBack 0x8a0 /* Tranceiver LSSI Readback */ #define rFPGA0_XA_LSSIReadBack 0x8a0 /* Transceiver LSSI Readback */
#define rFPGA0_XB_LSSIReadBack 0x8a4 #define rFPGA0_XB_LSSIReadBack 0x8a4
#define rFPGA0_XC_LSSIReadBack 0x8a8 #define rFPGA0_XC_LSSIReadBack 0x8a8
#define rFPGA0_XD_LSSIReadBack 0x8ac #define rFPGA0_XD_LSSIReadBack 0x8ac
@ -167,7 +167,7 @@
/* RxIQ DC offset, Rx digital filter, DC notch filter */ /* RxIQ DC offset, Rx digital filter, DC notch filter */
#define rOFDM0_XARxAFE 0xc10 #define rOFDM0_XARxAFE 0xc10
#define rOFDM0_XARxIQImbalance 0xc14 /* RxIQ imblance matrix */ #define rOFDM0_XARxIQImbalance 0xc14 /* RxIQ imbalance matrix */
#define rOFDM0_XBRxAFE 0xc18 #define rOFDM0_XBRxAFE 0xc18
#define rOFDM0_XBRxIQImbalance 0xc1c #define rOFDM0_XBRxIQImbalance 0xc1c
#define rOFDM0_XCRxAFE 0xc20 #define rOFDM0_XCRxAFE 0xc20

View File

@ -167,7 +167,6 @@ struct adapter {
s32 bDriverStopped; s32 bDriverStopped;
s32 bSurpriseRemoved; s32 bSurpriseRemoved;
s32 bCardDisableWOHSM;
u8 hw_init_completed; u8 hw_init_completed;
s8 signal_strength; s8 signal_strength;

View File

@ -80,7 +80,6 @@ struct odm_rate_adapt {
#define HP_THERMAL_NUM 8 #define HP_THERMAL_NUM 8
#define AVG_THERMAL_NUM 8 #define AVG_THERMAL_NUM 8
#define IQK_Matrix_REG_NUM 8
struct odm_phy_dbg_info { struct odm_phy_dbg_info {
/* ODM Write,debug info */ /* ODM Write,debug info */
@ -119,7 +118,8 @@ enum odm_ability_def {
ODM_BB_PWR_TRA = BIT(8), ODM_BB_PWR_TRA = BIT(8),
}; };
# define ODM_ITRF_USB 0x2 #define ODM_ITRF_USB 0x2
#define ODM_CE 0x04
/* ODM_CMNINFO_WM_MODE */ /* ODM_CMNINFO_WM_MODE */
enum odm_wireless_mode { enum odm_wireless_mode {
@ -163,11 +163,6 @@ struct odm_ra_info {
u8 PTSmoothFactor; u8 PTSmoothFactor;
}; };
struct ijk_matrix_regs_set {
bool bIQKDone;
s32 Value[1][IQK_Matrix_REG_NUM];
};
struct odm_rf_cal { struct odm_rf_cal {
/* for tx power tracking */ /* for tx power tracking */
u32 RegA24; /* for TempCCK */ u32 RegA24; /* for TempCCK */
@ -205,7 +200,6 @@ struct odm_rf_cal {
u8 ThermalValue_HP[HP_THERMAL_NUM]; u8 ThermalValue_HP[HP_THERMAL_NUM];
u8 ThermalValue_HP_index; u8 ThermalValue_HP_index;
struct ijk_matrix_regs_set IQKMatrixRegSetting;
u8 Delta_IQK; u8 Delta_IQK;
u8 Delta_LCK; u8 Delta_LCK;

View File

@ -11,6 +11,13 @@
#define MAIN_ANT_CGCS_RX 0 #define MAIN_ANT_CGCS_RX 0
#define AUX_ANT_CGCS_RX 1 #define AUX_ANT_CGCS_RX 1
#define SET_TX_DESC_ANTSEL_A_88E(__ptxdesc, __value) \
le32p_replace_bits((__le32 *)(__ptxdesc + 8), __value, BIT(24))
#define SET_TX_DESC_ANTSEL_B_88E(__ptxdesc, __value) \
le32p_replace_bits((__le32 *)(__ptxdesc + 8), __value, BIT(25))
#define SET_TX_DESC_ANTSEL_C_88E(__ptxdesc, __value) \
le32p_replace_bits((__le32 *)(__ptxdesc + 28), __value, BIT(29))
void ODM_AntennaDiversityInit_88E(struct odm_dm_struct *pDM_Odm); void ODM_AntennaDiversityInit_88E(struct odm_dm_struct *pDM_Odm);
void ODM_AntennaDiversity_88E(struct odm_dm_struct *pDM_Odm); void ODM_AntennaDiversity_88E(struct odm_dm_struct *pDM_Odm);

View File

@ -1,16 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/* Copyright(c) 2007 - 2011 Realtek Corporation. */
#ifndef __ODM_TYPES_H__
#define __ODM_TYPES_H__
#define ODM_CE 0x04 /* BIT(2) */
#define SET_TX_DESC_ANTSEL_A_88E(__ptxdesc, __value) \
le32p_replace_bits((__le32 *)(__ptxdesc + 8), __value, BIT(24))
#define SET_TX_DESC_ANTSEL_B_88E(__ptxdesc, __value) \
le32p_replace_bits((__le32 *)(__ptxdesc + 8), __value, BIT(25))
#define SET_TX_DESC_ANTSEL_C_88E(__ptxdesc, __value) \
le32p_replace_bits((__le32 *)(__ptxdesc + 28), __value, BIT(29))
#endif /* __ODM_TYPES_H__ */

View File

@ -43,10 +43,10 @@ int netdev_open(struct net_device *pnetdev);
int netdev_close(struct net_device *pnetdev); int netdev_close(struct net_device *pnetdev);
u8 rtw_init_drv_sw(struct adapter *padapter); u8 rtw_init_drv_sw(struct adapter *padapter);
u8 rtw_free_drv_sw(struct adapter *padapter); void rtw_free_drv_sw(struct adapter *padapter);
u8 rtw_reset_drv_sw(struct adapter *padapter); void rtw_reset_drv_sw(struct adapter *padapter);
u32 rtw_start_drv_threads(struct adapter *padapter); int rtw_start_drv_threads(struct adapter *padapter);
void rtw_stop_drv_threads (struct adapter *padapter); void rtw_stop_drv_threads (struct adapter *padapter);
void rtw_cancel_all_timer(struct adapter *padapter); void rtw_cancel_all_timer(struct adapter *padapter);

View File

@ -53,7 +53,7 @@ static inline struct list_head *get_list_head(struct __queue *queue)
return (&(queue->queue)); return (&(queue->queue));
} }
static inline void _set_timer(struct timer_list *ptimer,u32 delay_time) static inline void _set_timer(struct timer_list *ptimer, u32 delay_time)
{ {
mod_timer(ptimer, jiffies + msecs_to_jiffies(delay_time)); mod_timer(ptimer, jiffies + msecs_to_jiffies(delay_time));
} }
@ -66,7 +66,7 @@ static inline int rtw_netif_queue_stopped(struct net_device *pnetdev)
netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 3)); netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev, 3));
} }
extern int RTW_STATUS_CODE(int error_code); int RTW_STATUS_CODE(int error_code);
void *rtw_malloc2d(int h, int w, int size); void *rtw_malloc2d(int h, int w, int size);
@ -108,7 +108,7 @@ void rtw_free_netdev(struct net_device *netdev);
#define FUNC_ADPT_FMT "%s(%s)" #define FUNC_ADPT_FMT "%s(%s)"
#define FUNC_ADPT_ARG(adapter) __func__, adapter->pnetdev->name #define FUNC_ADPT_ARG(adapter) __func__, adapter->pnetdev->name
#define rtw_signal_process(pid, sig) kill_pid(find_vpid((pid)),(sig), 1) #define rtw_signal_process(pid, sig) kill_pid(find_vpid((pid)), (sig), 1)
/* Macros for handling unaligned memory accesses */ /* Macros for handling unaligned memory accesses */

View File

@ -14,7 +14,6 @@
#include "rtl8188e_xmit.h" #include "rtl8188e_xmit.h"
#include "rtl8188e_cmd.h" #include "rtl8188e_cmd.h"
#include "rtw_efuse.h" #include "rtw_efuse.h"
#include "odm_types.h"
#include "odm.h" #include "odm.h"
#include "odm_HWConfig.h" #include "odm_HWConfig.h"
#include "odm_RegDefine11N.h" #include "odm_RegDefine11N.h"
@ -88,7 +87,7 @@ struct txpowerinfo24g {
/* 9bytes + 1byt + 5bytes and pre 1byte. */ /* 9bytes + 1byt + 5bytes and pre 1byte. */
/* For worst case: */ /* For worst case: */
/* | 2byte|----8bytes----|1byte|--7bytes--| 92D */ /* | 2byte|----8bytes----|1byte|--7bytes--| 92D */
/* PG data exclude header, dummy 7 bytes frome CP test and reserved 1byte. */ /* PG data exclude header, dummy 7 bytes from CP test and reserved 1byte. */
#define EFUSE_OOB_PROTECT_BYTES_88E 18 #define EFUSE_OOB_PROTECT_BYTES_88E 18
#define EFUSE_PROTECT_BYTES_BANK 16 #define EFUSE_PROTECT_BYTES_BANK 16
@ -165,9 +164,9 @@ void Hal_ReadTxPowerInfo88E(struct adapter *padapter, u8 *hwinfo,
void rtl8188e_EfuseParseChnlPlan(struct adapter *padapter, u8 *hwinfo, void rtl8188e_EfuseParseChnlPlan(struct adapter *padapter, u8 *hwinfo,
bool AutoLoadFail); bool AutoLoadFail);
void Hal_ReadAntennaDiversity88E(struct adapter *pAdapter,u8 *PROMContent, void Hal_ReadAntennaDiversity88E(struct adapter *pAdapter, u8 *PROMContent,
bool AutoLoadFail); bool AutoLoadFail);
void Hal_ReadThermalMeter_88E(struct adapter * dapter, u8 *PROMContent, void Hal_ReadThermalMeter_88E(struct adapter *padapter, u8 *PROMContent,
bool AutoloadFail); bool AutoloadFail);
void Hal_EfuseParseXtal_8188E(struct adapter *pAdapter, u8 *hwinfo, void Hal_EfuseParseXtal_8188E(struct adapter *pAdapter, u8 *hwinfo,
bool AutoLoadFail); bool AutoLoadFail);

View File

@ -4,7 +4,7 @@
#ifndef __RTL8188E_SPEC_H__ #ifndef __RTL8188E_SPEC_H__
#define __RTL8188E_SPEC_H__ #define __RTL8188E_SPEC_H__
/* 8192C Regsiter offset definition */ /* 8192C Register offset definition */
#define HAL_PS_TIMER_INT_DELAY 50 /* 50 microseconds */ #define HAL_PS_TIMER_INT_DELAY 50 /* 50 microseconds */
#define HAL_92C_NAV_UPPER_UNIT 128 /* micro-second */ #define HAL_92C_NAV_UPPER_UNIT 128 /* micro-second */
@ -674,7 +674,7 @@ Current IOREG MAP
#define REG_USB_HRPWM 0xFE58 #define REG_USB_HRPWM 0xFE58
#define REG_USB_HCPWM 0xFE57 #define REG_USB_HCPWM 0xFE57
/* 8192C Regsiter Bit and Content definition */ /* 8192C Register Bit and Content definition */
/* 0x0000h ~ 0x00FFh System Configuration */ /* 0x0000h ~ 0x00FFh System Configuration */
/* 2 SYS_ISO_CTRL */ /* 2 SYS_ISO_CTRL */
@ -900,12 +900,12 @@ Current IOREG MAP
#define HQSEL_HIQ BIT(5) #define HQSEL_HIQ BIT(5)
/* For normal driver, 0x10C */ /* For normal driver, 0x10C */
#define _TXDMA_HIQ_MAP(x) (((x)&0x3) << 14) #define _TXDMA_HIQ_MAP(x) (((x) & 0x3) << 14)
#define _TXDMA_MGQ_MAP(x) (((x)&0x3) << 12) #define _TXDMA_MGQ_MAP(x) (((x) & 0x3) << 12)
#define _TXDMA_BKQ_MAP(x) (((x)&0x3) << 10) #define _TXDMA_BKQ_MAP(x) (((x) & 0x3) << 10)
#define _TXDMA_BEQ_MAP(x) (((x)&0x3) << 8 ) #define _TXDMA_BEQ_MAP(x) (((x) & 0x3) << 8)
#define _TXDMA_VIQ_MAP(x) (((x)&0x3) << 6 ) #define _TXDMA_VIQ_MAP(x) (((x) & 0x3) << 6)
#define _TXDMA_VOQ_MAP(x) (((x)&0x3) << 4 ) #define _TXDMA_VOQ_MAP(x) (((x) & 0x3) << 4)
#define QUEUE_LOW 1 #define QUEUE_LOW 1
#define QUEUE_NORMAL 2 #define QUEUE_NORMAL 2
@ -1135,7 +1135,7 @@ Current IOREG MAP
#define EEPROM_Default_CrystalCap_88E 0x20 #define EEPROM_Default_CrystalCap_88E 0x20
#define EEPROM_Default_ThermalMeter_88E 0x18 #define EEPROM_Default_ThermalMeter_88E 0x18
/* New EFUSE deafult value */ /* New EFUSE default value */
#define EEPROM_DEFAULT_24G_INDEX 0x2D #define EEPROM_DEFAULT_24G_INDEX 0x2D
#define EEPROM_DEFAULT_24G_HT20_DIFF 0X02 #define EEPROM_DEFAULT_24G_HT20_DIFF 0X02
#define EEPROM_DEFAULT_24G_OFDM_DIFF 0X04 #define EEPROM_DEFAULT_24G_OFDM_DIFF 0X04

View File

@ -26,7 +26,7 @@ u8 bss_cap_update_on_sta_leave(struct adapter *padapter, struct sta_info *psta);
void sta_info_update(struct adapter *padapter, struct sta_info *psta); void sta_info_update(struct adapter *padapter, struct sta_info *psta);
u8 ap_free_sta(struct adapter *padapter, struct sta_info *psta, u8 ap_free_sta(struct adapter *padapter, struct sta_info *psta,
bool active, u16 reason); bool active, u16 reason);
int rtw_sta_flush(struct adapter *padapter); void rtw_sta_flush(struct adapter *padapter);
void start_ap_mode(struct adapter *padapter); void start_ap_mode(struct adapter *padapter);
void stop_ap_mode(struct adapter *padapter); void stop_ap_mode(struct adapter *padapter);
void update_bmc_sta(struct adapter *padapter); void update_bmc_sta(struct adapter *padapter);

View File

@ -6,15 +6,10 @@
#include "wlan_bssdef.h" #include "wlan_bssdef.h"
#include "rtw_rf.h" #include "rtw_rf.h"
#include "rtw_led.h"
#define C2H_MEM_SZ (16*1024)
#include "osdep_service.h" #include "osdep_service.h"
#include "ieee80211.h" /* <ieee80211/ieee80211.h> */ #include "ieee80211.h" /* <ieee80211/ieee80211.h> */
#define FREE_CMDOBJ_SZ 128
#define MAX_CMDSZ 1024 #define MAX_CMDSZ 1024
#define MAX_RSPSZ 512 #define MAX_RSPSZ 512
#define MAX_EVTSZ 1024 #define MAX_EVTSZ 1024
@ -82,10 +77,10 @@ void rtw_free_cmd_obj(struct cmd_obj *pcmd);
int rtw_cmd_thread(void *context); int rtw_cmd_thread(void *context);
u32 rtw_init_cmd_priv(struct cmd_priv *pcmdpriv); int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv);
void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv); void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv);
u32 rtw_init_evt_priv(struct evt_priv *pevtpriv); int rtw_init_evt_priv(struct evt_priv *pevtpriv);
void rtw_free_evt_priv(struct evt_priv *pevtpriv); void rtw_free_evt_priv(struct evt_priv *pevtpriv);
void rtw_evt_notify_isr(struct evt_priv *pevtpriv); void rtw_evt_notify_isr(struct evt_priv *pevtpriv);
u8 p2p_protocol_wk_cmd(struct adapter *padapter, int intCmdType); u8 p2p_protocol_wk_cmd(struct adapter *padapter, int intCmdType);
@ -445,8 +440,7 @@ struct getrfintfs_parm {
u8 rfintfs; u8 rfintfs;
}; };
struct Tx_Beacon_param struct Tx_Beacon_param {
{
struct wlan_bssid_ex network; struct wlan_bssid_ex network;
}; };
@ -455,7 +449,7 @@ struct Tx_Beacon_param
mac[0] == 0 mac[0] == 0
==> CMD mode, return H2C_SUCCESS. ==> CMD mode, return H2C_SUCCESS.
The following condition must be ture under CMD mode The following condition must be true under CMD mode
mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0; mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0;
s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7; s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7;
s2 == (b1 << 8 | b0); s2 == (b1 << 8 | b0);
@ -508,7 +502,7 @@ struct drvextra_cmd_parm {
unsigned char *pbuf; unsigned char *pbuf;
}; };
/*------------------- Below are used for RF/BB tunning ---------------------*/ /*------------------- Below are used for RF/BB tuning ---------------------*/
struct setantenna_parm { struct setantenna_parm {
u8 tx_antset; u8 tx_antset;
@ -592,14 +586,14 @@ struct setratable_parm {
}; };
struct getratable_parm { struct getratable_parm {
uint rsvd; uint rsvd;
}; };
struct getratable_rsp { struct getratable_rsp {
u8 ss_ForceUp[NumRates]; u8 ss_ForceUp[NumRates];
u8 ss_ULevel[NumRates]; u8 ss_ULevel[NumRates];
u8 ss_DLevel[NumRates]; u8 ss_DLevel[NumRates];
u8 count_judge[NumRates]; u8 count_judge[NumRates];
}; };
/* to get TX,RX retry count */ /* to get TX,RX retry count */
@ -682,26 +676,22 @@ struct set_ch_parm {
}; };
/*H2C Handler index: 59 */ /*H2C Handler index: 59 */
struct SetChannelPlan_param struct SetChannelPlan_param {
{
u8 channel_plan; u8 channel_plan;
}; };
/*H2C Handler index: 60 */ /*H2C Handler index: 60 */
struct LedBlink_param struct LedBlink_param {
{
struct LED_871x *pLed; struct LED_871x *pLed;
}; };
/*H2C Handler index: 61 */ /*H2C Handler index: 61 */
struct SetChannelSwitch_param struct SetChannelSwitch_param {
{
u8 new_ch_no; u8 new_ch_no;
}; };
/*H2C Handler index: 62 */ /*H2C Handler index: 62 */
struct TDLSoption_param struct TDLSoption_param {
{
u8 addr[ETH_ALEN]; u8 addr[ETH_ALEN];
u8 option; u8 option;
}; };
@ -730,31 +720,31 @@ Result:
#define H2C_CMD_OVERFLOW 0x06 #define H2C_CMD_OVERFLOW 0x06
#define H2C_RESERVED 0x07 #define H2C_RESERVED 0x07
u8 rtw_sitesurvey_cmd(struct adapter *padapter, struct ndis_802_11_ssid *ssid, int ssid_num); u8 rtw_sitesurvey_cmd(struct adapter *padapter, struct ndis_802_11_ssid *ssid, int ssid_num);
u8 rtw_createbss_cmd(struct adapter *padapter); u8 rtw_createbss_cmd(struct adapter *padapter);
u8 rtw_setstakey_cmd(struct adapter *padapter, u8 *psta, u8 unicast_key); u8 rtw_setstakey_cmd(struct adapter *padapter, u8 *psta, u8 unicast_key);
u8 rtw_clearstakey_cmd(struct adapter *padapter, u8 *psta, u8 entry, u8 enqueue); u8 rtw_clearstakey_cmd(struct adapter *padapter, u8 *psta, u8 entry, u8 enqueue);
u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network* pnetwork); u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network *pnetwork);
u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueue); u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueue);
u8 rtw_setopmode_cmd(struct adapter *padapter, enum ndis_802_11_network_infra networktype); u8 rtw_setopmode_cmd(struct adapter *padapter, enum ndis_802_11_network_infra networktype);
u8 rtw_setdatarate_cmd(struct adapter *padapter, u8 *rateset); int rtw_setdatarate_cmd(struct adapter *padapter, u8 *rateset);
u8 rtw_setrfintfs_cmd(struct adapter *padapter, u8 mode); u8 rtw_setrfintfs_cmd(struct adapter *padapter, u8 mode);
u8 rtw_gettssi_cmd(struct adapter *padapter, u8 offset,u8 *pval); u8 rtw_gettssi_cmd(struct adapter *padapter, u8 offset, u8 *pval);
u8 rtw_setfwdig_cmd(struct adapter*padapter, u8 type); u8 rtw_setfwdig_cmd(struct adapter *padapter, u8 type);
u8 rtw_setfwra_cmd(struct adapter*padapter, u8 type); u8 rtw_setfwra_cmd(struct adapter *padapter, u8 type);
u8 rtw_addbareq_cmd(struct adapter*padapter, u8 tid, u8 *addr); u8 rtw_addbareq_cmd(struct adapter *padapter, u8 tid, u8 *addr);
u8 rtw_dynamic_chk_wk_cmd(struct adapter *adapter); u8 rtw_dynamic_chk_wk_cmd(struct adapter *adapter);
u8 rtw_lps_ctrl_wk_cmd(struct adapter*padapter, u8 lps_ctrl_type, u8 enqueue); u8 rtw_lps_ctrl_wk_cmd(struct adapter *padapter, u8 lps_ctrl_type, u8 enqueue);
u8 rtw_rpt_timer_cfg_cmd(struct adapter*padapter, u16 minRptTime); u8 rtw_rpt_timer_cfg_cmd(struct adapter *padapter, u16 minRptTime);
u8 rtw_antenna_select_cmd(struct adapter*padapter, u8 antenna,u8 enqueue); u8 rtw_antenna_select_cmd(struct adapter *padapter, u8 antenna, u8 enqueue);
u8 rtw_ps_cmd(struct adapter*padapter); u8 rtw_ps_cmd(struct adapter *padapter);
u8 rtw_chk_hi_queue_cmd(struct adapter*padapter); u8 rtw_chk_hi_queue_cmd(struct adapter *padapter);
u8 rtw_set_chplan_cmd(struct adapter *padapter, u8 chplan); u8 rtw_set_chplan_cmd(struct adapter *padapter, u8 chplan);
@ -859,8 +849,7 @@ enum rtw_h2c_cmd {
#define _SetRFReg_CMD_ _Write_RFREG_CMD_ #define _SetRFReg_CMD_ _Write_RFREG_CMD_
#ifdef _RTW_CMD_C_ #ifdef _RTW_CMD_C_
static struct _cmd_callback rtw_cmd_callback[] = static struct _cmd_callback rtw_cmd_callback[] = {
{
{GEN_CMD_CODE(_Read_MACREG), NULL}, /*0*/ {GEN_CMD_CODE(_Read_MACREG), NULL}, /*0*/
{GEN_CMD_CODE(_Write_MACREG), NULL}, {GEN_CMD_CODE(_Write_MACREG), NULL},
{GEN_CMD_CODE(_Read_BBREG), &rtw_getbbrfreg_cmdrsp_callback}, {GEN_CMD_CODE(_Read_BBREG), &rtw_getbbrfreg_cmdrsp_callback},

View File

@ -209,7 +209,7 @@ struct io_priv {
}; };
uint ioreq_flush(struct adapter *adapter, struct io_queue *ioqueue); uint ioreq_flush(struct adapter *adapter, struct io_queue *ioqueue);
void sync_ioreq_enqueue(struct io_req *preq,struct io_queue *ioqueue); void sync_ioreq_enqueue(struct io_req *preq, struct io_queue *ioqueue);
uint sync_ioreq_flush(struct adapter *adapter, struct io_queue *ioqueue); uint sync_ioreq_flush(struct adapter *adapter, struct io_queue *ioqueue);
uint free_ioreq(struct io_req *preq, struct io_queue *pio_queue); uint free_ioreq(struct io_req *preq, struct io_queue *pio_queue);
struct io_req *alloc_ioreq(struct io_queue *pio_q); struct io_req *alloc_ioreq(struct io_queue *pio_q);
@ -285,18 +285,4 @@ void bus_sync_io(struct io_queue *pio_q);
u32 _ioreq2rwmem(struct io_queue *pio_q); u32 _ioreq2rwmem(struct io_queue *pio_q);
void dev_power_down(struct adapter *Adapter, u8 bpwrup); void dev_power_down(struct adapter *Adapter, u8 bpwrup);
#define PlatformEFIOWrite1Byte(_a,_b,_c) \
rtw_write8(_a,_b,_c)
#define PlatformEFIOWrite2Byte(_a,_b,_c) \
rtw_write16(_a,_b,_c)
#define PlatformEFIOWrite4Byte(_a,_b,_c) \
rtw_write32(_a,_b,_c)
#define PlatformEFIORead1Byte(_a,_b) \
rtw_read8(_a,_b)
#define PlatformEFIORead2Byte(_a,_b) \
rtw_read16(_a,_b)
#define PlatformEFIORead4Byte(_a,_b) \
rtw_read32(_a,_b)
#endif /* _RTL8711_IO_H_ */ #endif /* _RTL8711_IO_H_ */

View File

@ -10,10 +10,10 @@ typedef u8 NDIS_802_11_PMKID_VALUE[16];
u8 rtw_set_802_11_authentication_mode(struct adapter *adapt, u8 rtw_set_802_11_authentication_mode(struct adapter *adapt,
enum ndis_802_11_auth_mode authmode); enum ndis_802_11_auth_mode authmode);
u8 rtw_set_802_11_bssid(struct adapter*adapter, u8 *bssid); u8 rtw_set_802_11_bssid(struct adapter *adapter, u8 *bssid);
u8 rtw_set_802_11_add_wep(struct adapter *adapter, struct ndis_802_11_wep *wep); u8 rtw_set_802_11_add_wep(struct adapter *adapter, struct ndis_802_11_wep *wep);
u8 rtw_set_802_11_disassociate(struct adapter *adapter); void rtw_set_802_11_disassociate(struct adapter *adapter);
u8 rtw_set_802_11_bssid_list_scan(struct adapter*adapter, u8 rtw_set_802_11_bssid_list_scan(struct adapter *adapter,
struct ndis_802_11_ssid *pssid, struct ndis_802_11_ssid *pssid,
int ssid_max_num); int ssid_max_num);
u8 rtw_set_802_11_infrastructure_mode(struct adapter *adapter, u8 rtw_set_802_11_infrastructure_mode(struct adapter *adapter,

View File

@ -33,8 +33,6 @@ enum LED_STATE_871x {
}; };
struct led_priv { struct led_priv {
struct adapter *padapter;
bool bRegUseLed; bool bRegUseLed;
enum LED_STATE_871x CurrLedState; /* Current LED state. */ enum LED_STATE_871x CurrLedState; /* Current LED state. */
@ -47,7 +45,6 @@ struct led_priv {
u32 BlinkTimes; /* Number of times to toggle led state for blinking. */ u32 BlinkTimes; /* Number of times to toggle led state for blinking. */
bool bLedLinkBlinkInProgress;
bool bLedScanBlinkInProgress; bool bLedScanBlinkInProgress;
struct delayed_work blink_work; struct delayed_work blink_work;
}; };

View File

@ -101,17 +101,17 @@ struct rt_link_detect {
struct profile_info { struct profile_info {
u8 ssidlen; u8 ssidlen;
u8 ssid[ WLAN_SSID_MAXLEN ]; u8 ssid[WLAN_SSID_MAXLEN];
u8 peermac[ ETH_ALEN ]; u8 peermac[ETH_ALEN];
}; };
struct tx_invite_req_info { struct tx_invite_req_info {
u8 token; u8 token;
u8 benable; u8 benable;
u8 go_ssid[ WLAN_SSID_MAXLEN ]; u8 go_ssid[WLAN_SSID_MAXLEN];
u8 ssidlen; u8 ssidlen;
u8 go_bssid[ ETH_ALEN ]; u8 go_bssid[ETH_ALEN];
u8 peer_macaddr[ ETH_ALEN ]; u8 peer_macaddr[ETH_ALEN];
u8 operating_ch; /* This information will be set by using the u8 operating_ch; /* This information will be set by using the
* p2p_set op_ch=x */ * p2p_set op_ch=x */
u8 peer_ch; /* The listen channel for peer P2P device */ u8 peer_ch; /* The listen channel for peer P2P device */
@ -154,9 +154,9 @@ struct tx_nego_req_info {
}; };
struct group_id_info { struct group_id_info {
u8 go_device_addr[ ETH_ALEN ]; /* The GO's device address of u8 go_device_addr[ETH_ALEN]; /* The GO's device address of
* this P2P group */ * this P2P group */
u8 ssid[ WLAN_SSID_MAXLEN ]; /* The SSID of this P2P group */ u8 ssid[WLAN_SSID_MAXLEN]; /* The SSID of this P2P group */
}; };
struct scan_limit_info { struct scan_limit_info {
@ -443,11 +443,6 @@ static inline bool check_fwstate(struct mlme_priv *pmlmepriv, int state)
return false; return false;
} }
static inline int get_fwstate(struct mlme_priv *pmlmepriv)
{
return pmlmepriv->fw_state;
}
/* /*
* No Limit on the calling context, * No Limit on the calling context,
* therefore set it to be the critical section... * therefore set it to be the critical section...
@ -459,7 +454,7 @@ static inline void set_fwstate(struct mlme_priv *pmlmepriv, int state)
{ {
pmlmepriv->fw_state |= state; pmlmepriv->fw_state |= state;
/* FOR HW integration */ /* FOR HW integration */
if (_FW_UNDER_SURVEY==state) if (_FW_UNDER_SURVEY == state)
pmlmepriv->bScanInProcess = true; pmlmepriv->bScanInProcess = true;
} }
@ -467,7 +462,7 @@ static inline void _clr_fwstate_(struct mlme_priv *pmlmepriv, int state)
{ {
pmlmepriv->fw_state &= ~state; pmlmepriv->fw_state &= ~state;
/* FOR HW integration */ /* FOR HW integration */
if (_FW_UNDER_SURVEY==state) if (_FW_UNDER_SURVEY == state)
pmlmepriv->bScanInProcess = false; pmlmepriv->bScanInProcess = false;
} }
@ -528,7 +523,7 @@ void rtw_indicate_scan_done(struct adapter *padapter);
int rtw_restruct_sec_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, int rtw_restruct_sec_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie,
uint in_len); uint in_len);
int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie,
uint in_len, uint initial_out_len); uint in_len, uint initial_out_len);
void rtw_init_registrypriv_dev_network(struct adapter *adapter); void rtw_init_registrypriv_dev_network(struct adapter *adapter);
void rtw_update_registrypriv_dev_network(struct adapter *adapter); void rtw_update_registrypriv_dev_network(struct adapter *adapter);
@ -544,10 +539,8 @@ struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv);
void _rtw_free_network(struct mlme_priv *pmlmepriv, void _rtw_free_network(struct mlme_priv *pmlmepriv,
struct wlan_network *pnetwork, u8 isfreeall); struct wlan_network *pnetwork, u8 isfreeall);
void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv,
struct wlan_network *pnetwork);
struct wlan_network* _rtw_find_network(struct __queue *scanned_queue, u8 *addr); struct wlan_network *_rtw_find_network(struct __queue *scanned_queue, u8 *addr);
void _rtw_free_network_queue(struct adapter *padapter, u8 isfreeall); void _rtw_free_network_queue(struct adapter *padapter, u8 isfreeall);

View File

@ -184,7 +184,7 @@ enum SCAN_STATE {
SCAN_STATE_MAX, SCAN_STATE_MAX,
}; };
typedef unsigned int (*mlme_handler)(struct adapter *adapt, struct recv_frame *frame); typedef void (*mlme_handler)(struct adapter *adapt, struct recv_frame *frame);
struct ss_res { struct ss_res {
int state; int state;
@ -285,7 +285,6 @@ struct mlme_ext_info {
u8 bwmode_updated; u8 bwmode_updated;
u8 hidden_ssid_mode; u8 hidden_ssid_mode;
struct ADDBA_request ADDBA_req;
struct WMM_para_element WMM_param; struct WMM_para_element WMM_param;
struct HT_caps_element HT_caps; struct HT_caps_element HT_caps;
struct HT_info_element HT_info; struct HT_info_element HT_info;
@ -388,7 +387,7 @@ struct mlme_ext_priv {
void init_mlme_ext_priv(struct adapter *adapter); void init_mlme_ext_priv(struct adapter *adapter);
int init_hw_mlme_ext(struct adapter *padapter); int init_hw_mlme_ext(struct adapter *padapter);
void free_mlme_ext_priv (struct mlme_ext_priv *pmlmeext); void free_mlme_ext_priv (struct mlme_ext_priv *pmlmeext);
extern struct xmit_frame *alloc_mgtxmitframe(struct xmit_priv *pxmitpriv); struct xmit_frame *alloc_mgtxmitframe(struct xmit_priv *pxmitpriv);
unsigned char networktype_to_raid(unsigned char network_type); unsigned char networktype_to_raid(unsigned char network_type);
u8 judge_network_type(struct adapter *padapter, unsigned char *rate, int len); u8 judge_network_type(struct adapter *padapter, unsigned char *rate, int len);
@ -432,9 +431,9 @@ void update_network(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src,
u8 *get_my_bssid(struct wlan_bssid_ex *pnetwork); u8 *get_my_bssid(struct wlan_bssid_ex *pnetwork);
u16 get_beacon_interval(struct wlan_bssid_ex *bss); u16 get_beacon_interval(struct wlan_bssid_ex *bss);
int is_client_associated_to_ap(struct adapter *padapter); bool r8188eu_is_client_associated_to_ap(struct adapter *padapter);
int is_client_associated_to_ibss(struct adapter *padapter); bool r8188eu_is_client_associated_to_ibss(struct adapter *padapter);
int is_IBSS_empty(struct adapter *padapter); bool r8188eu_is_ibss_empty(struct adapter *padapter);
unsigned char check_assoc_AP(u8 *pframe, uint len); unsigned char check_assoc_AP(u8 *pframe, uint len);
@ -448,8 +447,7 @@ void HTOnAssocRsp(struct adapter *padapter);
void ERP_IE_handler(struct adapter *padapter, struct ndis_802_11_var_ie *pIE); void ERP_IE_handler(struct adapter *padapter, struct ndis_802_11_var_ie *pIE);
void VCS_update(struct adapter *padapter, struct sta_info *psta); void VCS_update(struct adapter *padapter, struct sta_info *psta);
void update_beacon_info(struct adapter *padapter, u8 *pframe, uint len, void update_beacon_info(struct adapter *padapter, u8 *ie_ptr, uint ie_len, struct sta_info *psta);
struct sta_info *psta);
int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len); int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len);
void update_IOT_info(struct adapter *padapter); void update_IOT_info(struct adapter *padapter);
void update_capinfo(struct adapter *adapter, u16 updatecap); void update_capinfo(struct adapter *adapter, u16 updatecap);
@ -479,11 +477,11 @@ void report_survey_event(struct adapter *padapter, struct recv_frame *precv_fram
void report_surveydone_event(struct adapter *padapter); void report_surveydone_event(struct adapter *padapter);
void report_del_sta_event(struct adapter *padapter, void report_del_sta_event(struct adapter *padapter,
unsigned char *addr, unsigned short reason); unsigned char *addr, unsigned short reason);
void report_add_sta_event(struct adapter *padapter, unsigned char* addr, void report_add_sta_event(struct adapter *padapter, unsigned char *addr,
int cam_idx); int cam_idx);
void beacon_timing_control(struct adapter *padapter); void beacon_timing_control(struct adapter *padapter);
extern u8 set_tx_beacon_cmd(struct adapter*padapter); u8 set_tx_beacon_cmd(struct adapter *padapter);
unsigned int setup_beacon_frame(struct adapter *padapter, unsigned int setup_beacon_frame(struct adapter *padapter,
unsigned char *beacon_frame); unsigned char *beacon_frame);
void update_mgnt_tx_rate(struct adapter *padapter, u8 rate); void update_mgnt_tx_rate(struct adapter *padapter, u8 rate);
@ -499,10 +497,10 @@ void issue_probersp_p2p(struct adapter *padapter, unsigned char *da);
void issue_p2p_provision_request(struct adapter *padapter, u8 *pssid, void issue_p2p_provision_request(struct adapter *padapter, u8 *pssid,
u8 ussidlen, u8 *pdev_raddr); u8 ussidlen, u8 *pdev_raddr);
void issue_p2p_GO_request(struct adapter *padapter, u8 *raddr); void issue_p2p_GO_request(struct adapter *padapter, u8 *raddr);
void issue_probereq_p2p(struct adapter *padapter, u8 *da); void issue_probereq_p2p(struct adapter *padapter);
void issue_p2p_invitation_response(struct adapter *padapter, u8 *raddr, void issue_p2p_invitation_response(struct adapter *padapter, u8 *raddr,
u8 dialogToken, u8 success); u8 dialogToken, u8 success);
void issue_p2p_invitation_request(struct adapter *padapter, u8* raddr); void issue_p2p_invitation_request(struct adapter *padapter, u8 *raddr);
void issue_beacon(struct adapter *padapter, int timeout_ms); void issue_beacon(struct adapter *padapter, int timeout_ms);
void issue_probersp(struct adapter *padapter, unsigned char *da, void issue_probersp(struct adapter *padapter, unsigned char *da,
u8 is_valid_p2p_probereq); u8 is_valid_p2p_probereq);
@ -513,8 +511,7 @@ void issue_auth(struct adapter *padapter, struct sta_info *psta,
unsigned short status); unsigned short status);
void issue_probereq(struct adapter *padapter, struct ndis_802_11_ssid *pssid, void issue_probereq(struct adapter *padapter, struct ndis_802_11_ssid *pssid,
u8 *da); u8 *da);
s32 issue_probereq_ex(struct adapter *adapter, struct ndis_802_11_ssid *pssid, void issue_probereq_ex(struct adapter *padapter, struct ndis_802_11_ssid *pssid, u8 *da);
u8* da, int try_cnt, int wait_ms);
int issue_nulldata(struct adapter *padapter, unsigned char *da, int issue_nulldata(struct adapter *padapter, unsigned char *da,
unsigned int power_mode, int try_cnt, int wait_ms); unsigned int power_mode, int try_cnt, int wait_ms);
int issue_qos_nulldata(struct adapter *padapter, unsigned char *da, int issue_qos_nulldata(struct adapter *padapter, unsigned char *da,
@ -523,7 +520,8 @@ int issue_deauth(struct adapter *padapter, unsigned char *da,
unsigned short reason); unsigned short reason);
int issue_deauth_ex(struct adapter *padapter, u8 *da, unsigned short reason, int issue_deauth_ex(struct adapter *padapter, u8 *da, unsigned short reason,
int try_cnt, int wait_ms); int try_cnt, int wait_ms);
void issue_action_BA(struct adapter *padapter, unsigned char *raddr, u8 action, u16 status); void issue_action_BA(struct adapter *padapter, unsigned char *raddr, u8 action,
u16 status, struct ieee80211_mgmt *mgmt_req);
unsigned int send_delba(struct adapter *padapter, u8 initiator, u8 *addr); unsigned int send_delba(struct adapter *padapter, u8 initiator, u8 *addr);
unsigned int send_beacon(struct adapter *padapter); unsigned int send_beacon(struct adapter *padapter);
bool get_beacon_valid_bit(struct adapter *adapter); bool get_beacon_valid_bit(struct adapter *adapter);
@ -536,34 +534,6 @@ void start_clnt_auth(struct adapter *padapter);
void start_clnt_join(struct adapter *padapter); void start_clnt_join(struct adapter *padapter);
void start_create_ibss(struct adapter *padapter); void start_create_ibss(struct adapter *padapter);
unsigned int OnAssocReq(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnAssocRsp(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnProbeReq(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnProbeRsp(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnBeacon(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnDisassoc(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnAuth(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnAuthClient(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnDeAuth(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnAction(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnAction_back(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int on_action_public(struct adapter *padapter,
struct recv_frame *precv_frame);
unsigned int OnAction_p2p(struct adapter *padapter,
struct recv_frame *precv_frame);
void mlmeext_joinbss_event_callback(struct adapter *padapter, int join_res); void mlmeext_joinbss_event_callback(struct adapter *padapter, int join_res);
void mlmeext_sta_del_event_callback(struct adapter *padapter); void mlmeext_sta_del_event_callback(struct adapter *padapter);
void mlmeext_sta_add_event_callback(struct adapter *padapter, void mlmeext_sta_add_event_callback(struct adapter *padapter,
@ -729,7 +699,7 @@ enum rtw_c2h_event {
GEN_EVT_CODE(_Survey), /*8*/ GEN_EVT_CODE(_Survey), /*8*/
GEN_EVT_CODE(_SurveyDone), /*9*/ GEN_EVT_CODE(_SurveyDone), /*9*/
GEN_EVT_CODE(_JoinBss) , /*10*/ GEN_EVT_CODE(_JoinBss), /*10*/
GEN_EVT_CODE(_AddSTA), GEN_EVT_CODE(_AddSTA),
GEN_EVT_CODE(_DelSTA), GEN_EVT_CODE(_DelSTA),
GEN_EVT_CODE(_AtimDone), GEN_EVT_CODE(_AtimDone),

View File

@ -92,7 +92,7 @@ struct rx_pkt_attrib {
u8 privacy; /* in frame_ctrl field */ u8 privacy; /* in frame_ctrl field */
u8 bdecrypted; u8 bdecrypted;
u8 encrypt; /* when 0 indicate no encrypt. when non-zero, u8 encrypt; /* when 0 indicate no encrypt. when non-zero,
* indicate the encrypt algorith */ * indicate the encrypt algorithm */
u8 iv_len; u8 iv_len;
u8 icv_len; u8 icv_len;
u8 crc_err; u8 crc_err;
@ -175,7 +175,7 @@ struct recv_priv {
u8 *precv_buf; /* 4 alignment */ u8 *precv_buf; /* 4 alignment */
struct __queue free_recv_buf_queue; struct __queue free_recv_buf_queue;
u32 free_recv_buf_queue_cnt; u32 free_recv_buf_queue_cnt;
/* For display the phy informatiom */ /* For display the phy information */
u8 is_signal_dbg; /* for debug */ u8 is_signal_dbg; /* for debug */
u8 signal_strength_dbg; /* for debug */ u8 signal_strength_dbg; /* for debug */
s8 rssi; s8 rssi;

View File

@ -116,7 +116,7 @@ struct pkt_attrib {
u32 last_txcmdsz; u32 last_txcmdsz;
u8 nr_frags; u8 nr_frags;
u8 encrypt; /* when 0 indicate no encrypt. when non-zero, u8 encrypt; /* when 0 indicate no encrypt. when non-zero,
* indicate the encrypt algorith */ * indicate the encrypt algorithm */
u8 iv_len; u8 iv_len;
u8 icv_len; u8 icv_len;
u8 iv[18]; u8 iv[18];
@ -351,7 +351,7 @@ s32 rtw_txframes_pending(struct adapter *padapter);
s32 rtw_txframes_sta_ac_pending(struct adapter *padapter, s32 rtw_txframes_sta_ac_pending(struct adapter *padapter,
struct pkt_attrib *pattrib); struct pkt_attrib *pattrib);
void rtw_init_hwxmits(struct hw_xmit *phwxmit, int entry); void rtw_init_hwxmits(struct hw_xmit *phwxmit, int entry);
s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter); int _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter);
void _rtw_free_xmit_priv(struct xmit_priv *pxmitpriv); void _rtw_free_xmit_priv(struct xmit_priv *pxmitpriv);
int rtw_alloc_hwxmits(struct adapter *padapter); int rtw_alloc_hwxmits(struct adapter *padapter);
void rtw_free_hwxmits(struct adapter *padapter); void rtw_free_hwxmits(struct adapter *padapter);

View File

@ -295,19 +295,19 @@ static inline u32 wifi_mac_hash(u8 *mac)
return x; return x;
} }
extern u32 _rtw_init_sta_priv(struct sta_priv *pstapriv); int _rtw_init_sta_priv(struct sta_priv *pstapriv);
extern void _rtw_free_sta_priv(struct sta_priv *pstapriv); void _rtw_free_sta_priv(struct sta_priv *pstapriv);
#define stainfo_offset_valid(offset) (offset < NUM_STA && offset >= 0) #define stainfo_offset_valid(offset) (offset < NUM_STA && offset >= 0)
int rtw_stainfo_offset(struct sta_priv *stapriv, struct sta_info *sta); int rtw_stainfo_offset(struct sta_priv *stapriv, struct sta_info *sta);
struct sta_info *rtw_get_stainfo_by_offset(struct sta_priv *stapriv, int off); struct sta_info *rtw_get_stainfo_by_offset(struct sta_priv *stapriv, int off);
extern struct sta_info *rtw_alloc_stainfo(struct sta_priv *stapriv, u8 *hwaddr); struct sta_info *rtw_alloc_stainfo(struct sta_priv *stapriv, u8 *hwaddr);
extern u32 rtw_free_stainfo(struct adapter *adapt, struct sta_info *psta); void rtw_free_stainfo(struct adapter *adapt, struct sta_info *psta);
extern void rtw_free_all_stainfo(struct adapter *adapt); void rtw_free_all_stainfo(struct adapter *adapt);
extern struct sta_info *rtw_get_stainfo(struct sta_priv *stapriv, u8 *hwaddr); struct sta_info *rtw_get_stainfo(struct sta_priv *stapriv, u8 *hwaddr);
extern u32 rtw_init_bcmc_stainfo(struct adapter *adapt); u32 rtw_init_bcmc_stainfo(struct adapter *adapt);
extern struct sta_info *rtw_get_bcmc_stainfo(struct adapter *padapter); struct sta_info *rtw_get_bcmc_stainfo(struct adapter *padapter);
extern u8 rtw_access_ctrl(struct adapter *padapter, u8 *mac_addr); u8 rtw_access_ctrl(struct adapter *padapter, u8 *mac_addr);
#endif /* _STA_INFO_H_ */ #endif /* _STA_INFO_H_ */

View File

@ -140,7 +140,6 @@ enum WIFI_REG_DOMAIN {
#define _PWRMGT_ BIT(12) #define _PWRMGT_ BIT(12)
#define _MORE_DATA_ BIT(13) #define _MORE_DATA_ BIT(13)
#define _PRIVACY_ BIT(14) #define _PRIVACY_ BIT(14)
#define _ORDER_ BIT(15)
#define SetToDs(pbuf) \ #define SetToDs(pbuf) \
*(__le16 *)(pbuf) |= cpu_to_le16(_TO_DS_) *(__le16 *)(pbuf) |= cpu_to_le16(_TO_DS_)
@ -171,9 +170,6 @@ enum WIFI_REG_DOMAIN {
#define SetPrivacy(pbuf) \ #define SetPrivacy(pbuf) \
*(__le16 *)(pbuf) |= cpu_to_le16(_PRIVACY_) *(__le16 *)(pbuf) |= cpu_to_le16(_PRIVACY_)
#define GetPrivacy(pbuf) \
(((*(__le16 *)(pbuf)) & cpu_to_le16(_PRIVACY_)) != 0)
#define GetFrameType(pbuf) \ #define GetFrameType(pbuf) \
(le16_to_cpu(*(__le16 *)(pbuf)) & (BIT(3) | BIT(2))) (le16_to_cpu(*(__le16 *)(pbuf)) & (BIT(3) | BIT(2)))
@ -187,17 +183,6 @@ enum WIFI_REG_DOMAIN {
*(__le16 *)(pbuf) |= cpu_to_le16(type); \ *(__le16 *)(pbuf) |= cpu_to_le16(type); \
} while (0) } while (0)
#define GetTupleCache(pbuf) \
(cpu_to_le16(*(unsigned short *)((size_t)(pbuf) + 22)))
#define SetFragNum(pbuf, num) \
do { \
*(unsigned short *)((size_t)(pbuf) + 22) = \
((*(unsigned short *)((size_t)(pbuf) + 22)) & \
le16_to_cpu(~(0x000f))) | \
cpu_to_le16(0x0f & (num)); \
} while (0)
#define SetSeqNum(pbuf, num) \ #define SetSeqNum(pbuf, num) \
do { \ do { \
*(__le16 *)((size_t)(pbuf) + 22) = \ *(__le16 *)((size_t)(pbuf) + 22) = \
@ -221,13 +206,6 @@ enum WIFI_REG_DOMAIN {
#define GetAMsdu(pbuf) (((le16_to_cpu(*(__le16 *)pbuf)) >> 7) & 0x1) #define GetAMsdu(pbuf) (((le16_to_cpu(*(__le16 *)pbuf)) >> 7) & 0x1)
#define SetAMsdu(pbuf, amsdu) \
*(__le16 *)(pbuf) |= cpu_to_le16((amsdu & 1) << 7)
#define GetTid(pbuf) (le16_to_cpu(*(__le16 *)((size_t)(pbuf) + \
(((GetToDs(pbuf)<<1) | GetFrDs(pbuf)) == 3 ? \
30 : 24))) & 0x000f)
#define GetAddr1Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 4)) #define GetAddr1Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 4))
#define GetAddr2Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 10)) #define GetAddr2Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 10))
@ -236,33 +214,6 @@ enum WIFI_REG_DOMAIN {
#define GetAddr4Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 24)) #define GetAddr4Ptr(pbuf) ((unsigned char *)((size_t)(pbuf) + 24))
static inline bool IS_MCAST(unsigned char *da)
{
return (*da) & 0x01;
}
static inline unsigned char *get_da(unsigned char *pframe)
{
unsigned char *da;
unsigned int to_fr_ds = (GetToDs(pframe) << 1) | GetFrDs(pframe);
switch (to_fr_ds) {
case 0x00: /* ToDs=0, FromDs=0 */
da = GetAddr1Ptr(pframe);
break;
case 0x01: /* ToDs=0, FromDs=1 */
da = GetAddr1Ptr(pframe);
break;
case 0x02: /* ToDs=1, FromDs=0 */
da = GetAddr3Ptr(pframe);
break;
default: /* ToDs=1, FromDs=1 */
da = GetAddr3Ptr(pframe);
break;
}
return da;
}
static inline unsigned char *get_sa(unsigned char *pframe) static inline unsigned char *get_sa(unsigned char *pframe)
{ {
unsigned char *sa; unsigned char *sa;
@ -415,14 +366,6 @@ static inline unsigned char *get_hdr_bssid(unsigned char *pframe)
Below is the definition for 802.11n Below is the definition for 802.11n
------------------------------------------------------------------------------*/ ------------------------------------------------------------------------------*/
#define SetOrderBit(pbuf) \
do { \
*(unsigned short *)(pbuf) |= cpu_to_le16(_ORDER_); \
} while (0)
#define GetOrderBit(pbuf) \
(((*(unsigned short *)(pbuf)) & le16_to_cpu(_ORDER_)) != 0)
/** /**
* struct rtw_ieee80211_bar - HT Block Ack Request * struct rtw_ieee80211_bar - HT Block Ack Request
* *
@ -484,14 +427,6 @@ struct WMM_para_element {
struct AC_param ac_param[4]; struct AC_param ac_param[4];
} __packed; } __packed;
struct ADDBA_request {
unsigned char action_code;
unsigned char dialog_token;
__le16 BA_para_set;
__le16 BA_timeout_value;
__le16 BA_starting_seqctrl;
} __packed;
#define MAX_AMPDU_FACTOR_64K 3 #define MAX_AMPDU_FACTOR_64K 3
/* Spatial Multiplexing Power Save Modes */ /* Spatial Multiplexing Power Save Modes */
@ -701,7 +636,7 @@ struct ADDBA_request {
#define P2P_WILDCARD_SSID_LEN 7 #define P2P_WILDCARD_SSID_LEN 7
/* default value, used when: (1)p2p disabed or (2)p2p enabled /* default value, used when: (1)p2p disabled or (2)p2p enabled
* but only do 1 scan phase */ * but only do 1 scan phase */
#define P2P_FINDPHASE_EX_NONE 0 #define P2P_FINDPHASE_EX_NONE 0
/* used when p2p enabled and want to do 1 scan phase and /* used when p2p enabled and want to do 1 scan phase and
@ -766,11 +701,11 @@ enum P2P_STATE {
P2P_STATE_TX_PROVISION_DIS_REQ = 6, P2P_STATE_TX_PROVISION_DIS_REQ = 6,
P2P_STATE_RX_PROVISION_DIS_RSP = 7, P2P_STATE_RX_PROVISION_DIS_RSP = 7,
P2P_STATE_RX_PROVISION_DIS_REQ = 8, P2P_STATE_RX_PROVISION_DIS_REQ = 8,
/* Doing the group owner negoitation handshake */ /* Doing the group owner negotiation handshake */
P2P_STATE_GONEGO_ING = 9, P2P_STATE_GONEGO_ING = 9,
/* finish the group negoitation handshake with success */ /* finish the group negotiation handshake with success */
P2P_STATE_GONEGO_OK = 10, P2P_STATE_GONEGO_OK = 10,
/* finish the group negoitation handshake with failure */ /* finish the group negotiation handshake with failure */
P2P_STATE_GONEGO_FAIL = 11, P2P_STATE_GONEGO_FAIL = 11,
/* receiving the P2P Inviation request and match with the profile. */ /* receiving the P2P Inviation request and match with the profile. */
P2P_STATE_RECV_INVITE_REQ_MATCH = 12, P2P_STATE_RECV_INVITE_REQ_MATCH = 12,
@ -790,9 +725,9 @@ enum P2P_STATE {
P2P_STATE_RECV_INVITE_REQ_JOIN = 19, P2P_STATE_RECV_INVITE_REQ_JOIN = 19,
/* recveing the P2P Inviation response with failure */ /* recveing the P2P Inviation response with failure */
P2P_STATE_RX_INVITE_RESP_FAIL = 20, P2P_STATE_RX_INVITE_RESP_FAIL = 20,
/* receiving p2p negoitation response with information is not available */ /* receiving p2p negotiation response with information is not available */
P2P_STATE_RX_INFOR_NOREADY = 21, P2P_STATE_RX_INFOR_NOREADY = 21,
/* sending p2p negoitation response with information is not available */ /* sending p2p negotiation response with information is not available */
P2P_STATE_TX_INFOR_NOREADY = 22, P2P_STATE_TX_INFOR_NOREADY = 22,
}; };

View File

@ -17,14 +17,6 @@ struct ndis_802_11_ssid {
u8 Ssid[32]; u8 Ssid[32];
}; };
enum NDIS_802_11_NETWORK_TYPE {
Ndis802_11FH,
Ndis802_11DS,
Ndis802_11OFDM5,
Ndis802_11OFDM24,
Ndis802_11NetworkTypeMax /* dummy upper bound */
};
struct ndis_802_11_config_fh { struct ndis_802_11_config_fh {
u32 Length; /* Length of structure */ u32 Length; /* Length of structure */
u32 HopPattern; /* As defined by 802.11, MSB set */ u32 HopPattern; /* As defined by 802.11, MSB set */
@ -185,20 +177,6 @@ struct ndis_802_11_status_ind {
/* MIC check time, 60 seconds. */ /* MIC check time, 60 seconds. */
#define MIC_CHECK_TIME 60000000 #define MIC_CHECK_TIME 60000000
struct ndis_802_11_auth_evt {
struct ndis_802_11_status_ind Status;
struct ndis_802_11_auth_req Request[1];
};
struct ndis_802_11_test {
u32 Length;
u32 Type;
union {
struct ndis_802_11_auth_evt AuthenticationEvent;
NDIS_802_11_RSSI RssiTrigger;
} tt;
};
#ifndef Ndis802_11APMode #ifndef Ndis802_11APMode
#define Ndis802_11APMode (Ndis802_11InfrastructureMax+1) #define Ndis802_11APMode (Ndis802_11InfrastructureMax+1)
#endif #endif
@ -233,7 +211,6 @@ struct wlan_bssid_ex {
struct ndis_802_11_ssid Ssid; struct ndis_802_11_ssid Ssid;
u32 Privacy; u32 Privacy;
NDIS_802_11_RSSI Rssi;/* in dBM,raw data ,get from PHY) */ NDIS_802_11_RSSI Rssi;/* in dBM,raw data ,get from PHY) */
enum NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
struct ndis_802_11_config Configuration; struct ndis_802_11_config Configuration;
enum ndis_802_11_network_infra InfrastructureMode; enum ndis_802_11_network_infra InfrastructureMode;
unsigned char SupportedRates[NDIS_802_11_LENGTH_RATES_EX]; unsigned char SupportedRates[NDIS_802_11_LENGTH_RATES_EX];
@ -288,34 +265,6 @@ enum UAPSD_MAX_SP {
#define NUM_PRE_AUTH_KEY 16 #define NUM_PRE_AUTH_KEY 16
#define NUM_PMKID_CACHE NUM_PRE_AUTH_KEY #define NUM_PMKID_CACHE NUM_PRE_AUTH_KEY
/*
* WPA2
*/
struct pmkid_candidate {
unsigned char BSSID[ETH_ALEN];
u32 Flags;
};
struct ndis_802_11_pmkid_list {
u32 Version; /* Version of the structure */
u32 NumCandidates; /* No. of pmkid candidates */
struct pmkid_candidate CandidateList[1];
};
struct ndis_802_11_auth_encrypt {
enum ndis_802_11_auth_mode AuthModeSupported;
enum ndis_802_11_wep_status EncryptStatusSupported;
};
struct ndis_802_11_cap {
u32 Length;
u32 Version;
u32 NoOfPMKIDs;
u32 NoOfAuthEncryptPairsSupported;
struct ndis_802_11_auth_encrypt AuthenticationEncryptionSupported[1];
};
u8 key_2char2num(u8 hch, u8 lch); u8 key_2char2num(u8 hch, u8 lch);
u8 key_char2num(u8 ch); u8 key_char2num(u8 ch);
u8 str_2char2num(u8 hch, u8 lch); u8 str_2char2num(u8 hch, u8 lch);

View File

@ -1011,7 +1011,6 @@ static int rtw_wx_set_mlme(struct net_device *dev,
struct iw_request_info *info, struct iw_request_info *info,
union iwreq_data *wrqu, char *extra) union iwreq_data *wrqu, char *extra)
{ {
int ret = 0;
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
struct iw_mlme *mlme = (struct iw_mlme *)extra; struct iw_mlme *mlme = (struct iw_mlme *)extra;
@ -1020,17 +1019,15 @@ static int rtw_wx_set_mlme(struct net_device *dev,
switch (mlme->cmd) { switch (mlme->cmd) {
case IW_MLME_DEAUTH: case IW_MLME_DEAUTH:
if (!rtw_set_802_11_disassociate(padapter)) rtw_set_802_11_disassociate(padapter);
ret = -1;
break; break;
case IW_MLME_DISASSOC: case IW_MLME_DISASSOC:
if (!rtw_set_802_11_disassociate(padapter)) rtw_set_802_11_disassociate(padapter);
ret = -1;
break; break;
default: default:
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
return ret; return 0;
} }
static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a,
@ -1340,7 +1337,7 @@ static int rtw_wx_set_rate(struct net_device *dev,
struct iw_request_info *a, struct iw_request_info *a,
union iwreq_data *wrqu, char *extra) union iwreq_data *wrqu, char *extra)
{ {
int i, ret = 0; int i;
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev); struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
u8 datarates[NumRates]; u8 datarates[NumRates];
u32 target_rate = wrqu->bitrate.value; u32 target_rate = wrqu->bitrate.value;
@ -1408,10 +1405,7 @@ set_rate:
} }
} }
if (rtw_setdatarate_cmd(padapter, datarates) != _SUCCESS) return rtw_setdatarate_cmd(padapter, datarates);
ret = -1;
return ret;
} }
static int rtw_wx_get_rate(struct net_device *dev, static int rtw_wx_get_rate(struct net_device *dev,
@ -2647,7 +2641,7 @@ static int rtw_p2p_connect(struct net_device *dev,
u32 peer_channel = 0; u32 peer_channel = 0;
/* Commented by Albert 20110304 */ /* Commented by Albert 20110304 */
/* The input data contains two informations. */ /* The input data contains two information. */
/* 1. First information is the MAC address which wants to formate with */ /* 1. First information is the MAC address which wants to formate with */
/* 2. Second information is the WPS PINCode or "pbc" string for push button method */ /* 2. Second information is the WPS PINCode or "pbc" string for push button method */
/* Format: 00:E0:4C:00:00:05 */ /* Format: 00:E0:4C:00:00:05 */
@ -2721,7 +2715,7 @@ static void rtw_p2p_invite_req(struct net_device *dev,
uint p2pielen = 0, attr_contentlen = 0; uint p2pielen = 0, attr_contentlen = 0;
struct tx_invite_req_info *pinvite_req_info = &pwdinfo->invitereq_info; struct tx_invite_req_info *pinvite_req_info = &pwdinfo->invitereq_info;
/* The input data contains two informations. */ /* The input data contains two information items. */
/* 1. First information is the P2P device address which you want to send to. */ /* 1. First information is the P2P device address which you want to send to. */
/* 2. Second information is the group id which combines with GO's mac address, space and GO's ssid. */ /* 2. Second information is the group id which combines with GO's mac address, space and GO's ssid. */
/* Command line sample: iwpriv wlan0 p2p_set invite ="00:11:22:33:44:55 00:E0:4C:00:00:05 DIRECT-xy" */ /* Command line sample: iwpriv wlan0 p2p_set invite ="00:11:22:33:44:55 00:E0:4C:00:00:05 DIRECT-xy" */
@ -2845,7 +2839,7 @@ static void rtw_p2p_prov_disc(struct net_device *dev,
u8 *p2pie; u8 *p2pie;
uint p2pielen = 0, attr_contentlen = 0; uint p2pielen = 0, attr_contentlen = 0;
/* The input data contains two informations. */ /* The input data contains two information items. */
/* 1. First information is the MAC address which wants to issue the provisioning discovery request frame. */ /* 1. First information is the MAC address which wants to issue the provisioning discovery request frame. */
/* 2. Second information is the WPS configuration method which wants to discovery */ /* 2. Second information is the WPS configuration method which wants to discovery */
/* Format: 00:E0:4C:00:00:05_display */ /* Format: 00:E0:4C:00:00:05_display */
@ -2979,8 +2973,6 @@ static int rtw_p2p_set(struct net_device *dev,
struct iw_request_info *info, struct iw_request_info *info,
union iwreq_data *wrqu, char *extra) union iwreq_data *wrqu, char *extra)
{ {
int ret = 0;
if (!memcmp(extra, "enable =", 7)) { if (!memcmp(extra, "enable =", 7)) {
rtw_wext_p2p_enable(dev, info, wrqu, &extra[7]); rtw_wext_p2p_enable(dev, info, wrqu, &extra[7]);
} else if (!memcmp(extra, "setDN =", 6)) { } else if (!memcmp(extra, "setDN =", 6)) {
@ -3027,7 +3019,7 @@ static int rtw_p2p_set(struct net_device *dev,
rtw_p2p_set_persistent(dev, info, wrqu, &extra[11]); rtw_p2p_set_persistent(dev, info, wrqu, &extra[11]);
} }
return ret; return 0;
} }
static int rtw_p2p_get2(struct net_device *dev, static int rtw_p2p_get2(struct net_device *dev,
@ -3568,7 +3560,7 @@ static int rtw_wx_set_priv(struct net_device *dev,
if ((_VENDOR_SPECIFIC_IE_ == probereq_wpsie[0]) && if ((_VENDOR_SPECIFIC_IE_ == probereq_wpsie[0]) &&
(!memcmp(&probereq_wpsie[2], wps_oui, 4))) { (!memcmp(&probereq_wpsie[2], wps_oui, 4))) {
cp_sz = probereq_wpsie_len > MAX_WPS_IE_LEN ? MAX_WPS_IE_LEN : probereq_wpsie_len; cp_sz = min(probereq_wpsie_len, MAX_WPS_IE_LEN);
pmlmepriv->wps_probe_req_ie_len = 0; pmlmepriv->wps_probe_req_ie_len = 0;
kfree(pmlmepriv->wps_probe_req_ie); kfree(pmlmepriv->wps_probe_req_ie);

View File

@ -363,18 +363,16 @@ struct net_device *rtw_init_netdev(struct adapter *old_padapter)
return pnetdev; return pnetdev;
} }
u32 rtw_start_drv_threads(struct adapter *padapter) int rtw_start_drv_threads(struct adapter *padapter)
{ {
u32 _status = _SUCCESS;
padapter->cmdThread = kthread_run(rtw_cmd_thread, padapter, "RTW_CMD_THREAD"); padapter->cmdThread = kthread_run(rtw_cmd_thread, padapter, "RTW_CMD_THREAD");
if (IS_ERR(padapter->cmdThread)) if (IS_ERR(padapter->cmdThread))
_status = _FAIL; return PTR_ERR(padapter->cmdThread);
else
/* wait for rtw_cmd_thread() to start running */
wait_for_completion(&padapter->cmdpriv.start_cmd_thread);
return _status; /* wait for rtw_cmd_thread() to start running */
wait_for_completion(&padapter->cmdpriv.start_cmd_thread);
return 0;
} }
void rtw_stop_drv_threads(struct adapter *padapter) void rtw_stop_drv_threads(struct adapter *padapter)
@ -407,7 +405,7 @@ static void rtw_init_default_value(struct adapter *padapter)
pmlmepriv->htpriv.ampdu_enable = false;/* set to disabled */ pmlmepriv->htpriv.ampdu_enable = false;/* set to disabled */
/* security_priv */ /* security_priv */
psecuritypriv->binstallGrpkey = _FAIL; psecuritypriv->binstallGrpkey = false;
psecuritypriv->sw_encrypt = pregistrypriv->software_encrypt; psecuritypriv->sw_encrypt = pregistrypriv->software_encrypt;
psecuritypriv->sw_decrypt = pregistrypriv->software_decrypt; psecuritypriv->sw_decrypt = pregistrypriv->software_decrypt;
psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; /* open system */ psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; /* open system */
@ -433,7 +431,7 @@ static void rtw_init_default_value(struct adapter *padapter)
padapter->bShowGetP2PState = 1; padapter->bShowGetP2PState = 1;
} }
u8 rtw_reset_drv_sw(struct adapter *padapter) void rtw_reset_drv_sw(struct adapter *padapter)
{ {
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@ -455,25 +453,23 @@ u8 rtw_reset_drv_sw(struct adapter *padapter)
padapter->mlmeextpriv.sitesurvey_res.state = SCAN_DISABLE; padapter->mlmeextpriv.sitesurvey_res.state = SCAN_DISABLE;
rtw_set_signal_stat_timer(&padapter->recvpriv); rtw_set_signal_stat_timer(&padapter->recvpriv);
return _SUCCESS;
} }
u8 rtw_init_drv_sw(struct adapter *padapter) u8 rtw_init_drv_sw(struct adapter *padapter)
{ {
if ((rtw_init_cmd_priv(&padapter->cmdpriv)) == _FAIL) { if (rtw_init_cmd_priv(&padapter->cmdpriv)) {
dev_err(dvobj_to_dev(padapter->dvobj), "rtw_init_cmd_priv failed\n"); dev_err(dvobj_to_dev(padapter->dvobj), "rtw_init_cmd_priv failed\n");
return _FAIL; return _FAIL;
} }
padapter->cmdpriv.padapter = padapter; padapter->cmdpriv.padapter = padapter;
if ((rtw_init_evt_priv(&padapter->evtpriv)) == _FAIL) { if (rtw_init_evt_priv(&padapter->evtpriv)) {
dev_err(dvobj_to_dev(padapter->dvobj), "rtw_init_evt_priv failed\n"); dev_err(dvobj_to_dev(padapter->dvobj), "rtw_init_evt_priv failed\n");
goto free_cmd_priv; goto free_cmd_priv;
} }
if (rtw_init_mlme_priv(padapter) == _FAIL) { if (rtw_init_mlme_priv(padapter)) {
dev_err(dvobj_to_dev(padapter->dvobj), "rtw_init_mlme_priv failed\n"); dev_err(dvobj_to_dev(padapter->dvobj), "rtw_init_mlme_priv failed\n");
goto free_evt_priv; goto free_evt_priv;
} }
@ -484,7 +480,7 @@ u8 rtw_init_drv_sw(struct adapter *padapter)
init_mlme_ext_priv(padapter); init_mlme_ext_priv(padapter);
if (_rtw_init_xmit_priv(&padapter->xmitpriv, padapter) == _FAIL) { if (_rtw_init_xmit_priv(&padapter->xmitpriv, padapter)) {
dev_err(dvobj_to_dev(padapter->dvobj), "_rtw_init_xmit_priv failed\n"); dev_err(dvobj_to_dev(padapter->dvobj), "_rtw_init_xmit_priv failed\n");
goto free_mlme_ext; goto free_mlme_ext;
} }
@ -494,7 +490,7 @@ u8 rtw_init_drv_sw(struct adapter *padapter)
goto free_xmit_priv; goto free_xmit_priv;
} }
if (_rtw_init_sta_priv(&padapter->stapriv) == _FAIL) { if (_rtw_init_sta_priv(&padapter->stapriv)) {
dev_err(dvobj_to_dev(padapter->dvobj), "_rtw_init_sta_priv failed\n"); dev_err(dvobj_to_dev(padapter->dvobj), "_rtw_init_sta_priv failed\n");
goto free_recv_priv; goto free_recv_priv;
} }
@ -550,7 +546,7 @@ void rtw_cancel_all_timer(struct adapter *padapter)
_cancel_timer_ex(&padapter->recvpriv.signal_stat_timer); _cancel_timer_ex(&padapter->recvpriv.signal_stat_timer);
} }
u8 rtw_free_drv_sw(struct adapter *padapter) void rtw_free_drv_sw(struct adapter *padapter)
{ {
/* we can call rtw_p2p_enable here, but: */ /* we can call rtw_p2p_enable here, but: */
/* 1. rtw_p2p_enable may have IO operation */ /* 1. rtw_p2p_enable may have IO operation */
@ -587,8 +583,6 @@ u8 rtw_free_drv_sw(struct adapter *padapter)
/* clear pbuddystruct adapter to avoid access wrong pointer. */ /* clear pbuddystruct adapter to avoid access wrong pointer. */
if (padapter->pbuddy_adapter) if (padapter->pbuddy_adapter)
padapter->pbuddy_adapter->pbuddy_adapter = NULL; padapter->pbuddy_adapter->pbuddy_adapter = NULL;
return _SUCCESS;
} }
void netdev_br_init(struct net_device *netdev) void netdev_br_init(struct net_device *netdev)
@ -624,7 +618,6 @@ static int _netdev_open(struct net_device *pnetdev)
if (!padapter->bup) { if (!padapter->bup) {
padapter->bDriverStopped = false; padapter->bDriverStopped = false;
padapter->bSurpriseRemoved = false; padapter->bSurpriseRemoved = false;
padapter->bCardDisableWOHSM = false;
status = rtw_hal_init(padapter); status = rtw_hal_init(padapter);
if (status == _FAIL) if (status == _FAIL)
@ -632,8 +625,7 @@ static int _netdev_open(struct net_device *pnetdev)
netdev_dbg(pnetdev, "MAC Address = %pM\n", pnetdev->dev_addr); netdev_dbg(pnetdev, "MAC Address = %pM\n", pnetdev->dev_addr);
status = rtw_start_drv_threads(padapter); if (rtw_start_drv_threads(padapter)) {
if (status == _FAIL) {
pr_info("Initialize driver software resource Failed!\n"); pr_info("Initialize driver software resource Failed!\n");
goto netdev_open_error; goto netdev_open_error;
} }
@ -690,7 +682,6 @@ static int ips_netdrv_open(struct adapter *padapter)
padapter->bDriverStopped = false; padapter->bDriverStopped = false;
padapter->bSurpriseRemoved = false; padapter->bSurpriseRemoved = false;
padapter->bCardDisableWOHSM = false;
status = rtw_hal_init(padapter); status = rtw_hal_init(padapter);
if (status == _FAIL) if (status == _FAIL)
@ -722,13 +713,11 @@ int rtw_ips_pwr_up(struct adapter *padapter)
void rtw_ips_pwr_down(struct adapter *padapter) void rtw_ips_pwr_down(struct adapter *padapter)
{ {
padapter->bCardDisableWOHSM = true;
padapter->net_closed = true; padapter->net_closed = true;
rtw_led_control(padapter, LED_CTL_POWER_OFF); rtw_led_control(padapter, LED_CTL_POWER_OFF);
rtw_ips_dev_unload(padapter); rtw_ips_dev_unload(padapter);
padapter->bCardDisableWOHSM = false;
} }
static void rtw_fifo_cleanup(struct adapter *adapter) static void rtw_fifo_cleanup(struct adapter *adapter)

View File

@ -1,2 +1,18 @@
* merge into drivers/net/wireless/rtllib/rtl8192e To-do list:
* merge into drivers/net/wireless/realtek/rtlwifi/rtl8192*
* clean up function naming * clean up function naming
* Correct the coding style according to Linux guidelines; please read the document
at https://www.kernel.org/doc/html/latest/process/coding-style.html.
* Remove unnecessary debugging/printing macros; for those that are still needed
use the proper kernel API (pr_debug(), dev_dbg(), netdev_dbg()).
* Remove dead code such as unusued functions, variables, fields, etc..
* Use in-kernel API and remove unnecessary wrappers where possible.
* Fix bugs due to code that sleeps in atomic context.
* Remove the HAL layer and migrate its functionality into the relevant parts of
the driver.
* Switch to use LIB80211.
* Switch to use MAC80211.
* Switch to use CFG80211.
* Improve the error handling of various functions, particularly those that use
existing kernel APIs.

View File

@ -154,21 +154,6 @@ struct tx_fwinfo_8190pci {
}; };
struct log_int_8190 {
u32 nIMR_COMDOK;
u32 nIMR_MGNTDOK;
u32 nIMR_HIGH;
u32 nIMR_VODOK;
u32 nIMR_VIDOK;
u32 nIMR_BEDOK;
u32 nIMR_BKDOK;
u32 nIMR_ROK;
u32 nIMR_RCOK;
u32 nIMR_TBDOK;
u32 nIMR_BDOK;
u32 nIMR_RXFOVW;
};
struct phy_ofdm_rx_status_rxsc_sgien_exintfflag { struct phy_ofdm_rx_status_rxsc_sgien_exintfflag {
u8 reserved:4; u8 reserved:4;
u8 rxsc:2; u8 rxsc:2;

View File

@ -224,8 +224,6 @@ void rtl92e_set_reg(struct net_device *dev, u8 variable, u8 *val)
u8 acm = pAciAifsn->f.acm; u8 acm = pAciAifsn->f.acm;
u8 AcmCtrl = rtl92e_readb(dev, AcmHwCtrl); u8 AcmCtrl = rtl92e_readb(dev, AcmHwCtrl);
AcmCtrl = AcmCtrl | ((priv->AcmMethod == 2) ? 0x0 : 0x1);
if (acm) { if (acm) {
switch (eACI) { switch (eACI) {
case AC0_BE: case AC0_BE:
@ -474,10 +472,10 @@ static void _rtl92e_read_eeprom_info(struct net_device *dev)
priv->rf_chip = RF_8256; priv->rf_chip = RF_8256;
if (priv->RegChannelPlan == 0xf) if (priv->reg_chnl_plan == 0xf)
priv->ChannelPlan = priv->eeprom_ChannelPlan; priv->ChannelPlan = priv->eeprom_ChannelPlan;
else else
priv->ChannelPlan = priv->RegChannelPlan; priv->ChannelPlan = priv->reg_chnl_plan;
if (priv->eeprom_vid == 0x1186 && priv->eeprom_did == 0x3304) if (priv->eeprom_vid == 0x1186 && priv->eeprom_did == 0x3304)
priv->CustomerID = RT_CID_DLINK; priv->CustomerID = RT_CID_DLINK;
@ -503,7 +501,6 @@ static void _rtl92e_read_eeprom_info(struct net_device *dev)
priv->ChannelPlan = 0x0; priv->ChannelPlan = 0x0;
break; break;
case EEPROM_CID_Nettronix: case EEPROM_CID_Nettronix:
priv->ScanDelay = 100;
priv->CustomerID = RT_CID_Nettronix; priv->CustomerID = RT_CID_Nettronix;
break; break;
case EEPROM_CID_Pronet: case EEPROM_CID_Pronet:
@ -618,15 +615,12 @@ bool rtl92e_start_adapter(struct net_device *dev)
start: start:
rtl92e_reset_desc_ring(dev); rtl92e_reset_desc_ring(dev);
priv->Rf_Mode = RF_OP_By_SW_3wire; priv->Rf_Mode = RF_OP_By_SW_3wire;
if (priv->ResetProgress == RESET_TYPE_NORESET) { if (priv->rst_progress == RESET_TYPE_NORESET) {
rtl92e_writeb(dev, ANAPAR, 0x37); rtl92e_writeb(dev, ANAPAR, 0x37);
mdelay(500); mdelay(500);
} }
priv->pFirmware->status = FW_STATUS_0_INIT; priv->pFirmware->status = FW_STATUS_0_INIT;
if (priv->RegRfOff)
priv->rtllib->rf_power_state = rf_off;
ulRegRead = rtl92e_readl(dev, CPU_GEN); ulRegRead = rtl92e_readl(dev, CPU_GEN);
if (priv->pFirmware->status == FW_STATUS_0_INIT) if (priv->pFirmware->status == FW_STATUS_0_INIT)
ulRegRead |= CPU_GEN_SYSTEM_RESET; ulRegRead |= CPU_GEN_SYSTEM_RESET;
@ -654,7 +648,7 @@ start:
} }
priv->LoopbackMode = RTL819X_NO_LOOPBACK; priv->LoopbackMode = RTL819X_NO_LOOPBACK;
if (priv->ResetProgress == RESET_TYPE_NORESET) { if (priv->rst_progress == RESET_TYPE_NORESET) {
ulRegRead = rtl92e_readl(dev, CPU_GEN); ulRegRead = rtl92e_readl(dev, CPU_GEN);
if (priv->LoopbackMode == RTL819X_NO_LOOPBACK) if (priv->LoopbackMode == RTL819X_NO_LOOPBACK)
ulRegRead = (ulRegRead & CPU_GEN_NO_LOOPBACK_MSK) | ulRegRead = (ulRegRead & CPU_GEN_NO_LOOPBACK_MSK) |
@ -703,7 +697,7 @@ start:
rtl92e_writeb(dev, ACK_TIMEOUT, 0x30); rtl92e_writeb(dev, ACK_TIMEOUT, 0x30);
if (priv->ResetProgress == RESET_TYPE_NORESET) if (priv->rst_progress == RESET_TYPE_NORESET)
rtl92e_set_wireless_mode(dev, priv->rtllib->mode); rtl92e_set_wireless_mode(dev, priv->rtllib->mode);
rtl92e_cam_reset(dev); rtl92e_cam_reset(dev);
{ {
@ -743,7 +737,7 @@ start:
} }
} }
if (priv->ResetProgress == RESET_TYPE_NORESET) { if (priv->rst_progress == RESET_TYPE_NORESET) {
rtStatus = rtl92e_config_phy(dev); rtStatus = rtl92e_config_phy(dev);
if (!rtStatus) { if (!rtStatus) {
netdev_info(dev, "RF Config failed\n"); netdev_info(dev, "RF Config failed\n");
@ -756,9 +750,7 @@ start:
rtl92e_writeb(dev, 0x87, 0x0); rtl92e_writeb(dev, 0x87, 0x0);
if (priv->RegRfOff) { if (priv->rtllib->rf_off_reason > RF_CHANGE_BY_PS) {
rtl92e_set_rf_state(dev, rf_off, RF_CHANGE_BY_SW);
} else if (priv->rtllib->rf_off_reason > RF_CHANGE_BY_PS) {
rtl92e_set_rf_state(dev, rf_off, priv->rtllib->rf_off_reason); rtl92e_set_rf_state(dev, rf_off, priv->rtllib->rf_off_reason);
} else if (priv->rtllib->rf_off_reason >= RF_CHANGE_BY_IPS) { } else if (priv->rtllib->rf_off_reason >= RF_CHANGE_BY_IPS) {
rtl92e_set_rf_state(dev, rf_off, priv->rtllib->rf_off_reason); rtl92e_set_rf_state(dev, rf_off, priv->rtllib->rf_off_reason);
@ -772,7 +764,7 @@ start:
else else
priv->Rf_Mode = RF_OP_By_SW_3wire; priv->Rf_Mode = RF_OP_By_SW_3wire;
if (priv->ResetProgress == RESET_TYPE_NORESET) { if (priv->rst_progress == RESET_TYPE_NORESET) {
rtl92e_dm_init_txpower_tracking(dev); rtl92e_dm_init_txpower_tracking(dev);
if (priv->IC_Cut >= IC_VersionCut_D) { if (priv->IC_Cut >= IC_VersionCut_D) {
@ -801,7 +793,7 @@ start:
} }
priv->CCKPresentAttentuation_40Mdefault = 0; priv->CCKPresentAttentuation_40Mdefault = 0;
priv->CCKPresentAttentuation_difference = 0; priv->CCKPresentAttentuation_difference = 0;
priv->CCKPresentAttentuation = priv->cck_present_attn =
priv->CCKPresentAttentuation_20Mdefault; priv->CCKPresentAttentuation_20Mdefault;
priv->btxpower_tracking = false; priv->btxpower_tracking = false;
} }
@ -865,7 +857,7 @@ void rtl92e_link_change(struct net_device *dev)
reg = rtl92e_readl(dev, RCR); reg = rtl92e_readl(dev, RCR);
if (priv->rtllib->state == RTLLIB_LINKED) { if (priv->rtllib->state == RTLLIB_LINKED) {
if (ieee->IntelPromiscuousModeInfo.bPromiscuousOn) if (ieee->intel_promiscuous_md_info.promiscuous_on)
; ;
else else
priv->ReceiveConfig = reg |= RCR_CBSSID; priv->ReceiveConfig = reg |= RCR_CBSSID;
@ -1112,9 +1104,8 @@ void rtl92e_fill_tx_desc(struct net_device *dev, struct tx_desc *pdesc,
if (cb_desc->bHwSec) { if (cb_desc->bHwSec) {
static u8 tmp; static u8 tmp;
if (!tmp) { if (!tmp)
tmp = 1; tmp = 1;
}
switch (priv->rtllib->pairwise_key_type) { switch (priv->rtllib->pairwise_key_type) {
case KEY_TYPE_WEP40: case KEY_TYPE_WEP40:
case KEY_TYPE_WEP104: case KEY_TYPE_WEP104:
@ -1143,8 +1134,8 @@ void rtl92e_fill_tx_desc(struct net_device *dev, struct tx_desc *pdesc,
cb_desc->priority); cb_desc->priority);
pdesc->TxFWInfoSize = sizeof(struct tx_fwinfo_8190pci); pdesc->TxFWInfoSize = sizeof(struct tx_fwinfo_8190pci);
pdesc->DISFB = cb_desc->bTxDisableRateFallBack; pdesc->DISFB = cb_desc->tx_dis_rate_fallback;
pdesc->USERATE = cb_desc->bTxUseDriverAssingedRate; pdesc->USERATE = cb_desc->tx_use_drv_assinged_rate;
pdesc->FirstSeg = 1; pdesc->FirstSeg = 1;
pdesc->LastSeg = 1; pdesc->LastSeg = 1;
@ -1935,7 +1926,7 @@ void rtl92e_stop_adapter(struct net_device *dev, bool reset)
if (!reset) { if (!reset) {
mdelay(150); mdelay(150);
priv->bHwRfOffAction = 2; priv->hw_rf_off_action = 2;
if (!priv->rtllib->bSupportRemoteWakeUp) { if (!priv->rtllib->bSupportRemoteWakeUp) {
rtl92e_set_rf_off(dev); rtl92e_set_rf_off(dev);
@ -1955,8 +1946,6 @@ void rtl92e_stop_adapter(struct net_device *dev, bool reset)
for (i = 0; i < MAX_QUEUE_SIZE; i++) for (i = 0; i < MAX_QUEUE_SIZE; i++)
skb_queue_purge(&priv->rtllib->skb_waitQ[i]); skb_queue_purge(&priv->rtllib->skb_waitQ[i]);
for (i = 0; i < MAX_QUEUE_SIZE; i++)
skb_queue_purge(&priv->rtllib->skb_aggQ[i]);
skb_queue_purge(&priv->skb_queue); skb_queue_purge(&priv->skb_queue);
} }
@ -1965,7 +1954,7 @@ void rtl92e_update_ratr_table(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rtllib_device *ieee = priv->rtllib; struct rtllib_device *ieee = priv->rtllib;
u8 *pMcsRate = ieee->dot11HTOperationalRateSet; u8 *pMcsRate = ieee->dot11ht_oper_rate_set;
u32 ratr_value = 0; u32 ratr_value = 0;
u16 rate_config = 0; u16 rate_config = 0;
u8 rate_index = 0; u8 rate_index = 0;
@ -1985,7 +1974,7 @@ void rtl92e_update_ratr_table(struct net_device *dev)
break; break;
case IEEE_N_24G: case IEEE_N_24G:
case IEEE_N_5G: case IEEE_N_5G:
if (ieee->pHTInfo->peer_mimo_ps == 0) { if (ieee->ht_info->peer_mimo_ps == 0) {
ratr_value &= 0x0007F007; ratr_value &= 0x0007F007;
} else { } else {
if (priv->rf_type == RF_1T2R) if (priv->rf_type == RF_1T2R)
@ -1998,11 +1987,11 @@ void rtl92e_update_ratr_table(struct net_device *dev)
break; break;
} }
ratr_value &= 0x0FFFFFFF; ratr_value &= 0x0FFFFFFF;
if (ieee->pHTInfo->cur_tx_bw40mhz && if (ieee->ht_info->cur_tx_bw40mhz &&
ieee->pHTInfo->bCurShortGI40MHz) ieee->ht_info->bCurShortGI40MHz)
ratr_value |= 0x80000000; ratr_value |= 0x80000000;
else if (!ieee->pHTInfo->cur_tx_bw40mhz && else if (!ieee->ht_info->cur_tx_bw40mhz &&
ieee->pHTInfo->bCurShortGI20MHz) ieee->ht_info->bCurShortGI20MHz)
ratr_value |= 0x80000000; ratr_value |= 0x80000000;
rtl92e_writel(dev, RATR0+rate_index*4, ratr_value); rtl92e_writel(dev, RATR0+rate_index*4, ratr_value);
rtl92e_writeb(dev, UFWP, 1); rtl92e_writeb(dev, UFWP, 1);
@ -2136,7 +2125,7 @@ bool rtl92e_is_rx_stuck(struct net_device *dev)
SlotIndex = (priv->SilentResetRxSlotIndex++)%SilentResetRxSoltNum; SlotIndex = (priv->SilentResetRxSlotIndex++)%SilentResetRxSoltNum;
if (priv->RxCounter == RegRxCounter) { if (priv->rx_ctr == RegRxCounter) {
priv->SilentResetRxStuckEvent[SlotIndex] = 1; priv->SilentResetRxStuckEvent[SlotIndex] = 1;
for (i = 0; i < SilentResetRxSoltNum; i++) for (i = 0; i < SilentResetRxSoltNum; i++)
@ -2154,7 +2143,7 @@ bool rtl92e_is_rx_stuck(struct net_device *dev)
priv->SilentResetRxStuckEvent[SlotIndex] = 0; priv->SilentResetRxStuckEvent[SlotIndex] = 0;
} }
priv->RxCounter = RegRxCounter; priv->rx_ctr = RegRxCounter;
return bStuck; return bStuck;
} }

View File

@ -522,9 +522,8 @@ static bool _rtl92e_bb_config_para_file(struct net_device *dev)
rtStatus = rtl92e_check_bb_and_rf(dev, rtStatus = rtl92e_check_bb_and_rf(dev,
(enum hw90_block)eCheckItem, (enum hw90_block)eCheckItem,
(enum rf90_radio_path)0); (enum rf90_radio_path)0);
if (!rtStatus) { if (!rtStatus)
return rtStatus; return rtStatus;
}
} }
rtl92e_set_bb_reg(dev, rFPGA0_RFMOD, bCCKEn|bOFDMEn, 0x0); rtl92e_set_bb_reg(dev, rFPGA0_RFMOD, bCCKEn|bOFDMEn, 0x0);
_rtl92e_phy_config_bb(dev, BaseBand_Config_PHY_REG); _rtl92e_phy_config_bb(dev, BaseBand_Config_PHY_REG);
@ -1009,16 +1008,16 @@ static void _rtl92e_cck_tx_power_track_bw_switch_tssi(struct net_device *dev)
switch (priv->CurrentChannelBW) { switch (priv->CurrentChannelBW) {
case HT_CHANNEL_WIDTH_20: case HT_CHANNEL_WIDTH_20:
priv->CCKPresentAttentuation = priv->cck_present_attn =
priv->CCKPresentAttentuation_20Mdefault + priv->CCKPresentAttentuation_20Mdefault +
priv->CCKPresentAttentuation_difference; priv->CCKPresentAttentuation_difference;
if (priv->CCKPresentAttentuation > if (priv->cck_present_attn >
(CCKTxBBGainTableLength-1)) (CCKTxBBGainTableLength-1))
priv->CCKPresentAttentuation = priv->cck_present_attn =
CCKTxBBGainTableLength-1; CCKTxBBGainTableLength-1;
if (priv->CCKPresentAttentuation < 0) if (priv->cck_present_attn < 0)
priv->CCKPresentAttentuation = 0; priv->cck_present_attn = 0;
if (priv->rtllib->current_network.channel == 14 && if (priv->rtllib->current_network.channel == 14 &&
!priv->bcck_in_ch14) { !priv->bcck_in_ch14) {
@ -1034,16 +1033,16 @@ static void _rtl92e_cck_tx_power_track_bw_switch_tssi(struct net_device *dev)
break; break;
case HT_CHANNEL_WIDTH_20_40: case HT_CHANNEL_WIDTH_20_40:
priv->CCKPresentAttentuation = priv->cck_present_attn =
priv->CCKPresentAttentuation_40Mdefault + priv->CCKPresentAttentuation_40Mdefault +
priv->CCKPresentAttentuation_difference; priv->CCKPresentAttentuation_difference;
if (priv->CCKPresentAttentuation > if (priv->cck_present_attn >
(CCKTxBBGainTableLength - 1)) (CCKTxBBGainTableLength - 1))
priv->CCKPresentAttentuation = priv->cck_present_attn =
CCKTxBBGainTableLength-1; CCKTxBBGainTableLength-1;
if (priv->CCKPresentAttentuation < 0) if (priv->cck_present_attn < 0)
priv->CCKPresentAttentuation = 0; priv->cck_present_attn = 0;
if (priv->rtllib->current_network.channel == 14 && if (priv->rtllib->current_network.channel == 14 &&
!priv->bcck_in_ch14) { !priv->bcck_in_ch14) {
@ -1304,8 +1303,8 @@ static bool _rtl92e_set_rf_power_state(struct net_device *dev,
enum rt_rf_power_state rf_power_state) enum rt_rf_power_state rf_power_state)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
(&(priv->rtllib->PowerSaveControl)); (&priv->rtllib->pwr_save_ctrl);
bool bResult = true; bool bResult = true;
u8 i = 0, QueueID = 0; u8 i = 0, QueueID = 0;
struct rtl8192_tx_ring *ring = NULL; struct rtl8192_tx_ring *ring = NULL;
@ -1319,13 +1318,12 @@ static bool _rtl92e_set_rf_power_state(struct net_device *dev,
switch (rf_power_state) { switch (rf_power_state) {
case rf_on: case rf_on:
if ((priv->rtllib->rf_power_state == rf_off) && if ((priv->rtllib->rf_power_state == rf_off) &&
RT_IN_PS_LEVEL(pPSC, RT_RF_OFF_LEVL_HALT_NIC)) { RT_IN_PS_LEVEL(psc, RT_RF_OFF_LEVL_HALT_NIC)) {
bool rtstatus; bool rtstatus;
u32 InitilizeCount = 3; u32 InitilizeCount = 3;
do { do {
InitilizeCount--; InitilizeCount--;
priv->RegRfOff = false;
rtstatus = rtl92e_enable_nic(dev); rtstatus = rtl92e_enable_nic(dev);
} while (!rtstatus && (InitilizeCount > 0)); } while (!rtstatus && (InitilizeCount > 0));
@ -1337,14 +1335,14 @@ static bool _rtl92e_set_rf_power_state(struct net_device *dev,
return false; return false;
} }
RT_CLEAR_PS_LEVEL(pPSC, RT_CLEAR_PS_LEVEL(psc,
RT_RF_OFF_LEVL_HALT_NIC); RT_RF_OFF_LEVL_HALT_NIC);
} else { } else {
rtl92e_writeb(dev, ANAPAR, 0x37); rtl92e_writeb(dev, ANAPAR, 0x37);
mdelay(1); mdelay(1);
rtl92e_set_bb_reg(dev, rFPGA0_AnalogParameter1, rtl92e_set_bb_reg(dev, rFPGA0_AnalogParameter1,
0x4, 0x1); 0x4, 0x1);
priv->bHwRfOffAction = 0; priv->hw_rf_off_action = 0;
rtl92e_set_bb_reg(dev, rFPGA0_XA_RFInterfaceOE, rtl92e_set_bb_reg(dev, rFPGA0_XA_RFInterfaceOE,
BIT4, 0x1); BIT4, 0x1);
@ -1379,9 +1377,8 @@ static bool _rtl92e_set_rf_power_state(struct net_device *dev,
i++; i++;
} }
if (i >= MAX_DOZE_WAITING_TIMES_9x) { if (i >= MAX_DOZE_WAITING_TIMES_9x)
break; break;
}
} }
rtl92e_set_rf_off(dev); rtl92e_set_rf_off(dev);
break; break;
@ -1398,16 +1395,15 @@ static bool _rtl92e_set_rf_power_state(struct net_device *dev,
i++; i++;
} }
if (i >= MAX_DOZE_WAITING_TIMES_9x) { if (i >= MAX_DOZE_WAITING_TIMES_9x)
break; break;
}
} }
if (pPSC->RegRfPsLevel & RT_RF_OFF_LEVL_HALT_NIC && if (psc->RegRfPsLevel & RT_RF_OFF_LEVL_HALT_NIC &&
!RT_IN_PS_LEVEL(pPSC, RT_RF_OFF_LEVL_HALT_NIC)) { !RT_IN_PS_LEVEL(psc, RT_RF_OFF_LEVL_HALT_NIC)) {
rtl92e_disable_nic(dev); rtl92e_disable_nic(dev);
RT_SET_PS_LEVEL(pPSC, RT_RF_OFF_LEVL_HALT_NIC); RT_SET_PS_LEVEL(psc, RT_RF_OFF_LEVL_HALT_NIC);
} else if (!(pPSC->RegRfPsLevel & } else if (!(psc->RegRfPsLevel &
RT_RF_OFF_LEVL_HALT_NIC)) { RT_RF_OFF_LEVL_HALT_NIC)) {
rtl92e_set_rf_off(dev); rtl92e_set_rf_off(dev);
} }
@ -1454,7 +1450,7 @@ bool rtl92e_set_rf_power_state(struct net_device *dev,
bool bResult = false; bool bResult = false;
if (rf_power_state == priv->rtllib->rf_power_state && if (rf_power_state == priv->rtllib->rf_power_state &&
priv->bHwRfOffAction == 0) { priv->hw_rf_off_action == 0) {
return bResult; return bResult;
} }

View File

@ -17,7 +17,7 @@ void rtl92e_cam_reset(struct net_device *dev)
{ {
u32 ulcommand = 0; u32 ulcommand = 0;
ulcommand |= BIT31|BIT30; ulcommand |= BIT31 | BIT30;
rtl92e_writel(dev, RWCAM, ulcommand); rtl92e_writel(dev, RWCAM, ulcommand);
} }
@ -40,9 +40,8 @@ void rtl92e_enable_hw_security_config(struct net_device *dev)
SECR_value |= SCR_TxUseDK; SECR_value |= SCR_TxUseDK;
} }
ieee->hwsec_active = 1; ieee->hwsec_active = 1;
if ((ieee->pHTInfo->iot_action & HT_IOT_ACT_PURE_N_MODE) || !hwwep) { if ((ieee->ht_info->iot_action & HT_IOT_ACT_PURE_N_MODE) || !hwwep) {
ieee->hwsec_active = 0; ieee->hwsec_active = 0;
SECR_value &= ~SCR_RxDecEnable; SECR_value &= ~SCR_RxDecEnable;
} }
@ -81,17 +80,15 @@ void rtl92e_set_key(struct net_device *dev, u8 EntryNo, u8 KeyIndex,
enum rt_rf_power_state rt_state; enum rt_rf_power_state rt_state;
rt_state = priv->rtllib->rf_power_state; rt_state = priv->rtllib->rf_power_state;
if (priv->rtllib->PowerSaveControl.bInactivePs) { if (rt_state == rf_off) {
if (rt_state == rf_off) { if (priv->rtllib->rf_off_reason > RF_CHANGE_BY_IPS) {
if (priv->rtllib->rf_off_reason > RF_CHANGE_BY_IPS) { netdev_warn(dev, "%s(): RF is OFF.\n",
netdev_warn(dev, "%s(): RF is OFF.\n", __func__);
__func__); return;
return;
}
mutex_lock(&priv->rtllib->ips_mutex);
rtl92e_ips_leave(dev);
mutex_unlock(&priv->rtllib->ips_mutex);
} }
mutex_lock(&priv->rtllib->ips_mutex);
rtl92e_ips_leave(dev);
mutex_unlock(&priv->rtllib->ips_mutex);
} }
priv->rtllib->is_set_key = true; priv->rtllib->is_set_key = true;
if (EntryNo >= TOTAL_CAM_ENTRY) { if (EntryNo >= TOTAL_CAM_ENTRY) {
@ -100,33 +97,33 @@ void rtl92e_set_key(struct net_device *dev, u8 EntryNo, u8 KeyIndex,
} }
if (DefaultKey) if (DefaultKey)
usConfig |= BIT15 | (KeyType<<2); usConfig |= BIT15 | (KeyType << 2);
else else
usConfig |= BIT15 | (KeyType<<2) | KeyIndex; usConfig |= BIT15 | (KeyType << 2) | KeyIndex;
for (i = 0; i < CAM_CONTENT_COUNT; i++) { for (i = 0; i < CAM_CONTENT_COUNT; i++) {
TargetCommand = i + CAM_CONTENT_COUNT * EntryNo; TargetCommand = i + CAM_CONTENT_COUNT * EntryNo;
TargetCommand |= BIT31|BIT16; TargetCommand |= BIT31 | BIT16;
if (i == 0) { if (i == 0) {
TargetContent = (u32)(*(MacAddr+0)) << 16 | TargetContent = (u32)(*(MacAddr + 0)) << 16 |
(u32)(*(MacAddr+1)) << 24 | (u32)(*(MacAddr + 1)) << 24 |
(u32)usConfig; (u32)usConfig;
rtl92e_writel(dev, WCAMI, TargetContent); rtl92e_writel(dev, WCAMI, TargetContent);
rtl92e_writel(dev, RWCAM, TargetCommand); rtl92e_writel(dev, RWCAM, TargetCommand);
} else if (i == 1) { } else if (i == 1) {
TargetContent = (u32)(*(MacAddr+2)) | TargetContent = (u32)(*(MacAddr + 2)) |
(u32)(*(MacAddr+3)) << 8 | (u32)(*(MacAddr + 3)) << 8 |
(u32)(*(MacAddr+4)) << 16 | (u32)(*(MacAddr + 4)) << 16 |
(u32)(*(MacAddr+5)) << 24; (u32)(*(MacAddr + 5)) << 24;
rtl92e_writel(dev, WCAMI, TargetContent); rtl92e_writel(dev, WCAMI, TargetContent);
rtl92e_writel(dev, RWCAM, TargetCommand); rtl92e_writel(dev, RWCAM, TargetCommand);
} else { } else {
if (KeyContent != NULL) { if (KeyContent != NULL) {
rtl92e_writel(dev, WCAMI, rtl92e_writel(dev, WCAMI,
(u32)(*(KeyContent+i-2))); (u32)(*(KeyContent + i - 2)));
rtl92e_writel(dev, RWCAM, TargetCommand); rtl92e_writel(dev, RWCAM, TargetCommand);
udelay(100); udelay(100);
} }

View File

@ -307,7 +307,7 @@ static void _rtl92e_update_cap(struct net_device *dev, u16 cap)
u8 cur_slot_time = priv->slot_time; u8 cur_slot_time = priv->slot_time;
if ((cap & WLAN_CAPABILITY_SHORT_SLOT_TIME) && if ((cap & WLAN_CAPABILITY_SHORT_SLOT_TIME) &&
(!priv->rtllib->pHTInfo->current_rt2rt_long_slot_time)) { (!priv->rtllib->ht_info->current_rt2rt_long_slot_time)) {
if (cur_slot_time != SHORT_SLOT_TIME) { if (cur_slot_time != SHORT_SLOT_TIME) {
slot_time_val = SHORT_SLOT_TIME; slot_time_val = SHORT_SLOT_TIME;
priv->rtllib->SetHwRegHandler(dev, priv->rtllib->SetHwRegHandler(dev,
@ -339,10 +339,10 @@ static void _rtl92e_update_beacon(void *data)
struct rtllib_device *ieee = priv->rtllib; struct rtllib_device *ieee = priv->rtllib;
struct rtllib_network *net = &ieee->current_network; struct rtllib_network *net = &ieee->current_network;
if (ieee->pHTInfo->bCurrentHTSupport) if (ieee->ht_info->bCurrentHTSupport)
HT_update_self_and_peer_setting(ieee, net); HT_update_self_and_peer_setting(ieee, net);
ieee->pHTInfo->current_rt2rt_long_slot_time = net->bssht.bd_rt2rt_long_slot_time; ieee->ht_info->current_rt2rt_long_slot_time = net->bssht.bd_rt2rt_long_slot_time;
ieee->pHTInfo->RT2RT_HT_Mode = net->bssht.rt2rt_ht_mode; ieee->ht_info->RT2RT_HT_Mode = net->bssht.rt2rt_ht_mode;
_rtl92e_update_cap(dev, net->capability); _rtl92e_update_cap(dev, net->capability);
} }
@ -494,8 +494,8 @@ static void _rtl92e_prepare_beacon(struct tasklet_struct *t)
tcb_desc->queue_index = BEACON_QUEUE; tcb_desc->queue_index = BEACON_QUEUE;
tcb_desc->data_rate = 2; tcb_desc->data_rate = 2;
tcb_desc->RATRIndex = 7; tcb_desc->RATRIndex = 7;
tcb_desc->bTxDisableRateFallBack = 1; tcb_desc->tx_dis_rate_fallback = 1;
tcb_desc->bTxUseDriverAssingedRate = 1; tcb_desc->tx_use_drv_assinged_rate = 1;
skb_push(pnewskb, priv->rtllib->tx_headroom); skb_push(pnewskb, priv->rtllib->tx_headroom);
pdesc = &ring->desc[0]; pdesc = &ring->desc[0];
@ -607,13 +607,13 @@ static void _rtl92e_refresh_support_rate(struct r8192_priv *priv)
if (ieee->mode == WIRELESS_MODE_N_24G || if (ieee->mode == WIRELESS_MODE_N_24G ||
ieee->mode == WIRELESS_MODE_N_5G) { ieee->mode == WIRELESS_MODE_N_5G) {
memcpy(ieee->Regdot11HTOperationalRateSet, memcpy(ieee->reg_dot11ht_oper_rate_set,
ieee->RegHTSuppRateSet, 16); ieee->reg_ht_supp_rate_set, 16);
memcpy(ieee->Regdot11TxHTOperationalRateSet, memcpy(ieee->reg_dot11tx_ht_oper_rate_set,
ieee->RegHTSuppRateSet, 16); ieee->reg_ht_supp_rate_set, 16);
} else { } else {
memset(ieee->Regdot11HTOperationalRateSet, 0, 16); memset(ieee->reg_dot11ht_oper_rate_set, 0, 16);
} }
} }
@ -642,19 +642,19 @@ static u8 _rtl92e_get_supported_wireless_mode(struct net_device *dev)
void rtl92e_set_wireless_mode(struct net_device *dev, u8 wireless_mode) void rtl92e_set_wireless_mode(struct net_device *dev, u8 wireless_mode)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
u8 bSupportMode = _rtl92e_get_supported_wireless_mode(dev); u8 support_mode = _rtl92e_get_supported_wireless_mode(dev);
if ((wireless_mode == WIRELESS_MODE_AUTO) || if ((wireless_mode == WIRELESS_MODE_AUTO) ||
((wireless_mode & bSupportMode) == 0)) { ((wireless_mode & support_mode) == 0)) {
if (bSupportMode & WIRELESS_MODE_N_24G) { if (support_mode & WIRELESS_MODE_N_24G) {
wireless_mode = WIRELESS_MODE_N_24G; wireless_mode = WIRELESS_MODE_N_24G;
} else if (bSupportMode & WIRELESS_MODE_N_5G) { } else if (support_mode & WIRELESS_MODE_N_5G) {
wireless_mode = WIRELESS_MODE_N_5G; wireless_mode = WIRELESS_MODE_N_5G;
} else if ((bSupportMode & WIRELESS_MODE_A)) { } else if ((support_mode & WIRELESS_MODE_A)) {
wireless_mode = WIRELESS_MODE_A; wireless_mode = WIRELESS_MODE_A;
} else if ((bSupportMode & WIRELESS_MODE_G)) { } else if ((support_mode & WIRELESS_MODE_G)) {
wireless_mode = WIRELESS_MODE_G; wireless_mode = WIRELESS_MODE_G;
} else if ((bSupportMode & WIRELESS_MODE_B)) { } else if ((support_mode & WIRELESS_MODE_B)) {
wireless_mode = WIRELESS_MODE_B; wireless_mode = WIRELESS_MODE_B;
} else { } else {
netdev_info(dev, netdev_info(dev,
@ -672,9 +672,9 @@ void rtl92e_set_wireless_mode(struct net_device *dev, u8 wireless_mode)
if ((wireless_mode == WIRELESS_MODE_N_24G) || if ((wireless_mode == WIRELESS_MODE_N_24G) ||
(wireless_mode == WIRELESS_MODE_N_5G)) { (wireless_mode == WIRELESS_MODE_N_5G)) {
priv->rtllib->pHTInfo->bEnableHT = 1; priv->rtllib->ht_info->enable_ht = 1;
} else { } else {
priv->rtllib->pHTInfo->bEnableHT = 0; priv->rtllib->ht_info->enable_ht = 0;
} }
_rtl92e_refresh_support_rate(priv); _rtl92e_refresh_support_rate(priv);
} }
@ -682,11 +682,10 @@ void rtl92e_set_wireless_mode(struct net_device *dev, u8 wireless_mode)
static int _rtl92e_sta_up(struct net_device *dev, bool is_silent_reset) static int _rtl92e_sta_up(struct net_device *dev, bool is_silent_reset)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
(&priv->rtllib->PowerSaveControl); (&priv->rtllib->pwr_save_ctrl);
bool init_status; bool init_status;
priv->bDriverIsGoingToUnload = false;
priv->bdisable_nic = false; priv->bdisable_nic = false;
priv->up = 1; priv->up = 1;
@ -701,7 +700,7 @@ static int _rtl92e_sta_up(struct net_device *dev, bool is_silent_reset)
return -1; return -1;
} }
RT_CLEAR_PS_LEVEL(pPSC, RT_RF_OFF_LEVL_HALT_NIC); RT_CLEAR_PS_LEVEL(psc, RT_RF_OFF_LEVL_HALT_NIC);
priv->bfirst_init = false; priv->bfirst_init = false;
if (priv->polling_timer_on == 0) if (priv->polling_timer_on == 0)
@ -724,7 +723,7 @@ static int _rtl92e_sta_down(struct net_device *dev, bool shutdownrf)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
unsigned long flags = 0; unsigned long flags = 0;
u8 RFInProgressTimeOut = 0; u8 rf_in_progress_timeout = 0;
if (priv->up == 0) if (priv->up == 0)
return -1; return -1;
@ -735,7 +734,6 @@ static int _rtl92e_sta_down(struct net_device *dev, bool shutdownrf)
if (priv->rtllib->state == RTLLIB_LINKED) if (priv->rtllib->state == RTLLIB_LINKED)
rtl92e_leisure_ps_leave(dev); rtl92e_leisure_ps_leave(dev);
priv->bDriverIsGoingToUnload = true;
priv->up = 0; priv->up = 0;
priv->rtllib->ieee_up = 0; priv->rtllib->ieee_up = 0;
priv->bfirst_after_down = true; priv->bfirst_after_down = true;
@ -757,12 +755,12 @@ static int _rtl92e_sta_down(struct net_device *dev, bool shutdownrf)
spin_lock_irqsave(&priv->rf_ps_lock, flags); spin_lock_irqsave(&priv->rf_ps_lock, flags);
while (priv->rf_change_in_progress) { while (priv->rf_change_in_progress) {
spin_unlock_irqrestore(&priv->rf_ps_lock, flags); spin_unlock_irqrestore(&priv->rf_ps_lock, flags);
if (RFInProgressTimeOut > 100) { if (rf_in_progress_timeout > 100) {
spin_lock_irqsave(&priv->rf_ps_lock, flags); spin_lock_irqsave(&priv->rf_ps_lock, flags);
break; break;
} }
mdelay(1); mdelay(1);
RFInProgressTimeOut++; rf_in_progress_timeout++;
spin_lock_irqsave(&priv->rf_ps_lock, flags); spin_lock_irqsave(&priv->rf_ps_lock, flags);
} }
priv->rf_change_in_progress = true; priv->rf_change_in_progress = true;
@ -821,10 +819,10 @@ static void _rtl92e_init_priv_handler(struct net_device *dev)
static void _rtl92e_init_priv_constant(struct net_device *dev) static void _rtl92e_init_priv_constant(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
&priv->rtllib->PowerSaveControl; &priv->rtllib->pwr_save_ctrl;
pPSC->RegMaxLPSAwakeIntvl = 5; psc->reg_max_lps_awake_intvl = 5;
} }
static void _rtl92e_init_priv_variable(struct net_device *dev) static void _rtl92e_init_priv_variable(struct net_device *dev)
@ -832,15 +830,12 @@ static void _rtl92e_init_priv_variable(struct net_device *dev)
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
u8 i; u8 i;
priv->AcmMethod = eAcmWay2_SW;
priv->dot11_current_preamble_mode = PREAMBLE_AUTO; priv->dot11_current_preamble_mode = PREAMBLE_AUTO;
priv->rtllib->status = 0; priv->rtllib->status = 0;
priv->polling_timer_on = 0; priv->polling_timer_on = 0;
priv->up_first_time = 1; priv->up_first_time = 1;
priv->blinked_ingpio = false; priv->blinked_ingpio = false;
priv->bDriverIsGoingToUnload = false;
priv->being_init_adapter = false; priv->being_init_adapter = false;
priv->initialized_at_probe = false;
priv->bdisable_nic = false; priv->bdisable_nic = false;
priv->bfirst_init = false; priv->bfirst_init = false;
priv->txringcount = 64; priv->txringcount = 64;
@ -848,12 +843,12 @@ static void _rtl92e_init_priv_variable(struct net_device *dev)
priv->rxringcount = MAX_RX_COUNT; priv->rxringcount = MAX_RX_COUNT;
priv->irq_enabled = 0; priv->irq_enabled = 0;
priv->chan = 1; priv->chan = 1;
priv->RegChannelPlan = 0xf; priv->reg_chnl_plan = 0xf;
priv->rtllib->mode = WIRELESS_MODE_AUTO; priv->rtllib->mode = WIRELESS_MODE_AUTO;
priv->rtllib->iw_mode = IW_MODE_INFRA; priv->rtllib->iw_mode = IW_MODE_INFRA;
priv->rtllib->bNetPromiscuousMode = false; priv->rtllib->net_promiscuous_md = false;
priv->rtllib->IntelPromiscuousModeInfo.bPromiscuousOn = false; priv->rtllib->intel_promiscuous_md_info.promiscuous_on = false;
priv->rtllib->IntelPromiscuousModeInfo.bFilterSourceStationFrame = priv->rtllib->intel_promiscuous_md_info.fltr_src_sta_frame =
false; false;
priv->rtllib->ieee_up = 0; priv->rtllib->ieee_up = 0;
priv->retry_rts = DEFAULT_RETRY_RTS; priv->retry_rts = DEFAULT_RETRY_RTS;
@ -864,32 +859,21 @@ static void _rtl92e_init_priv_variable(struct net_device *dev)
priv->promisc = (dev->flags & IFF_PROMISC) ? 1 : 0; priv->promisc = (dev->flags & IFF_PROMISC) ? 1 : 0;
priv->bcck_in_ch14 = false; priv->bcck_in_ch14 = false;
priv->bfsync_processing = false; priv->bfsync_processing = false;
priv->CCKPresentAttentuation = 0; priv->cck_present_attn = 0;
priv->rfa_txpowertrackingindex = 0; priv->rfa_txpowertrackingindex = 0;
priv->rfc_txpowertrackingindex = 0; priv->rfc_txpowertrackingindex = 0;
priv->CckPwEnl = 6; priv->CckPwEnl = 6;
priv->ScanDelay = 50; priv->rst_progress = RESET_TYPE_NORESET;
priv->ResetProgress = RESET_TYPE_NORESET;
priv->bForcedSilentReset = false;
priv->bDisableNormalResetCheck = false;
priv->force_reset = false; priv->force_reset = false;
memset(priv->rtllib->swcamtable, 0, sizeof(struct sw_cam_table) * 32); memset(priv->rtllib->swcamtable, 0, sizeof(struct sw_cam_table) * 32);
priv->rx_ctr = 0;
memset(&priv->InterruptLog, 0, sizeof(struct log_int_8190));
priv->RxCounter = 0;
priv->rtllib->wx_set_enc = 0; priv->rtllib->wx_set_enc = 0;
priv->hw_radio_off = false; priv->hw_radio_off = false;
priv->RegRfOff = false;
priv->isRFOff = false;
priv->bInPowerSaveMode = false;
priv->rtllib->rf_off_reason = 0; priv->rtllib->rf_off_reason = 0;
priv->rf_change_in_progress = false; priv->rf_change_in_progress = false;
priv->bHwRfOffAction = 0; priv->hw_rf_off_action = 0;
priv->SetRFPowerStateInProgress = false; priv->SetRFPowerStateInProgress = false;
priv->rtllib->PowerSaveControl.bInactivePs = true; priv->rtllib->pwr_save_ctrl.bLeisurePs = true;
priv->rtllib->PowerSaveControl.bIPSModeBackup = false;
priv->rtllib->PowerSaveControl.bLeisurePs = true;
priv->rtllib->PowerSaveControl.bFwCtrlLPS = false;
priv->rtllib->LPSDelayCnt = 0; priv->rtllib->LPSDelayCnt = 0;
priv->rtllib->sta_sleep = LPS_IS_WAKE; priv->rtllib->sta_sleep = LPS_IS_WAKE;
priv->rtllib->rf_power_state = rf_on; priv->rtllib->rf_power_state = rf_on;
@ -916,8 +900,6 @@ static void _rtl92e_init_priv_variable(struct net_device *dev)
for (i = 0; i < MAX_QUEUE_SIZE; i++) for (i = 0; i < MAX_QUEUE_SIZE; i++)
skb_queue_head_init(&priv->rtllib->skb_waitQ[i]); skb_queue_head_init(&priv->rtllib->skb_waitQ[i]);
for (i = 0; i < MAX_QUEUE_SIZE; i++)
skb_queue_head_init(&priv->rtllib->skb_aggQ[i]);
} }
static void _rtl92e_init_priv_lock(struct r8192_priv *priv) static void _rtl92e_init_priv_lock(struct r8192_priv *priv)
@ -1147,8 +1129,8 @@ static void _rtl92e_if_silent_reset(struct net_device *dev)
struct rtllib_device *ieee = priv->rtllib; struct rtllib_device *ieee = priv->rtllib;
unsigned long flag; unsigned long flag;
if (priv->ResetProgress == RESET_TYPE_NORESET) { if (priv->rst_progress == RESET_TYPE_NORESET) {
priv->ResetProgress = RESET_TYPE_SILENT; priv->rst_progress = RESET_TYPE_SILENT;
spin_lock_irqsave(&priv->rf_ps_lock, flag); spin_lock_irqsave(&priv->rf_ps_lock, flag);
if (priv->rf_change_in_progress) { if (priv->rf_change_in_progress) {
@ -1245,10 +1227,8 @@ RESET_START:
rtl92e_cam_restore(dev); rtl92e_cam_restore(dev);
rtl92e_dm_restore_state(dev); rtl92e_dm_restore_state(dev);
END: END:
priv->ResetProgress = RESET_TYPE_NORESET; priv->rst_progress = RESET_TYPE_NORESET;
priv->reset_count++; priv->reset_count++;
priv->bForcedSilentReset = false;
priv->bResetInProgress = false; priv->bResetInProgress = false;
rtl92e_writeb(dev, UFWP, 1); rtl92e_writeb(dev, UFWP, 1);
@ -1264,15 +1244,15 @@ static void _rtl92e_update_rxcounts(struct r8192_priv *priv, u32 *TotalRxBcnNum,
*TotalRxBcnNum = 0; *TotalRxBcnNum = 0;
*TotalRxDataNum = 0; *TotalRxDataNum = 0;
SlotIndex = (priv->rtllib->LinkDetectInfo.SlotIndex++) % SlotIndex = (priv->rtllib->link_detect_info.SlotIndex++) %
(priv->rtllib->LinkDetectInfo.SlotNum); (priv->rtllib->link_detect_info.SlotNum);
priv->rtllib->LinkDetectInfo.RxBcnNum[SlotIndex] = priv->rtllib->link_detect_info.RxBcnNum[SlotIndex] =
priv->rtllib->LinkDetectInfo.NumRecvBcnInPeriod; priv->rtllib->link_detect_info.NumRecvBcnInPeriod;
priv->rtllib->LinkDetectInfo.RxDataNum[SlotIndex] = priv->rtllib->link_detect_info.RxDataNum[SlotIndex] =
priv->rtllib->LinkDetectInfo.NumRecvDataInPeriod; priv->rtllib->link_detect_info.NumRecvDataInPeriod;
for (i = 0; i < priv->rtllib->LinkDetectInfo.SlotNum; i++) { for (i = 0; i < priv->rtllib->link_detect_info.SlotNum; i++) {
*TotalRxBcnNum += priv->rtllib->LinkDetectInfo.RxBcnNum[i]; *TotalRxBcnNum += priv->rtllib->link_detect_info.RxBcnNum[i];
*TotalRxDataNum += priv->rtllib->LinkDetectInfo.RxDataNum[i]; *TotalRxDataNum += priv->rtllib->link_detect_info.RxDataNum[i];
} }
} }
@ -1285,8 +1265,8 @@ static void _rtl92e_watchdog_wq_cb(void *data)
enum reset_type ResetType = RESET_TYPE_NORESET; enum reset_type ResetType = RESET_TYPE_NORESET;
static u8 check_reset_cnt; static u8 check_reset_cnt;
unsigned long flags; unsigned long flags;
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
(&priv->rtllib->PowerSaveControl); (&priv->rtllib->pwr_save_ctrl);
bool bBusyTraffic = false; bool bBusyTraffic = false;
bool bHigherBusyTraffic = false; bool bHigherBusyTraffic = false;
bool bHigherBusyRxTraffic = false; bool bHigherBusyRxTraffic = false;
@ -1309,31 +1289,31 @@ static void _rtl92e_watchdog_wq_cb(void *data)
RTLLIB_NOLINK) && RTLLIB_NOLINK) &&
(ieee->rf_power_state == rf_on) && !ieee->is_set_key && (ieee->rf_power_state == rf_on) && !ieee->is_set_key &&
(!ieee->proto_stoppping) && !ieee->wx_set_enc) { (!ieee->proto_stoppping) && !ieee->wx_set_enc) {
if ((ieee->PowerSaveControl.ReturnPoint == if ((ieee->pwr_save_ctrl.ReturnPoint ==
IPS_CALLBACK_NONE) && IPS_CALLBACK_NONE) &&
(!ieee->bNetPromiscuousMode)) { (!ieee->net_promiscuous_md)) {
rtl92e_ips_enter(dev); rtl92e_ips_enter(dev);
} }
} }
} }
if ((ieee->state == RTLLIB_LINKED) && (ieee->iw_mode == if ((ieee->state == RTLLIB_LINKED) && (ieee->iw_mode ==
IW_MODE_INFRA) && (!ieee->bNetPromiscuousMode)) { IW_MODE_INFRA) && (!ieee->net_promiscuous_md)) {
if (ieee->LinkDetectInfo.NumRxOkInPeriod > 100 || if (ieee->link_detect_info.NumRxOkInPeriod > 100 ||
ieee->LinkDetectInfo.NumTxOkInPeriod > 100) ieee->link_detect_info.NumTxOkInPeriod > 100)
bBusyTraffic = true; bBusyTraffic = true;
if (ieee->LinkDetectInfo.NumRxOkInPeriod > 4000 || if (ieee->link_detect_info.NumRxOkInPeriod > 4000 ||
ieee->LinkDetectInfo.NumTxOkInPeriod > 4000) { ieee->link_detect_info.NumTxOkInPeriod > 4000) {
bHigherBusyTraffic = true; bHigherBusyTraffic = true;
if (ieee->LinkDetectInfo.NumRxOkInPeriod > 5000) if (ieee->link_detect_info.NumRxOkInPeriod > 5000)
bHigherBusyRxTraffic = true; bHigherBusyRxTraffic = true;
else else
bHigherBusyRxTraffic = false; bHigherBusyRxTraffic = false;
} }
if (((ieee->LinkDetectInfo.NumRxUnicastOkInPeriod + if (((ieee->link_detect_info.NumRxUnicastOkInPeriod +
ieee->LinkDetectInfo.NumTxOkInPeriod) > 8) || ieee->link_detect_info.NumTxOkInPeriod) > 8) ||
(ieee->LinkDetectInfo.NumRxUnicastOkInPeriod > 2)) (ieee->link_detect_info.NumRxUnicastOkInPeriod > 2))
bEnterPS = false; bEnterPS = false;
else else
bEnterPS = true; bEnterPS = true;
@ -1350,13 +1330,13 @@ static void _rtl92e_watchdog_wq_cb(void *data)
rtl92e_leisure_ps_leave(dev); rtl92e_leisure_ps_leave(dev);
} }
ieee->LinkDetectInfo.NumRxOkInPeriod = 0; ieee->link_detect_info.NumRxOkInPeriod = 0;
ieee->LinkDetectInfo.NumTxOkInPeriod = 0; ieee->link_detect_info.NumTxOkInPeriod = 0;
ieee->LinkDetectInfo.NumRxUnicastOkInPeriod = 0; ieee->link_detect_info.NumRxUnicastOkInPeriod = 0;
ieee->LinkDetectInfo.bBusyTraffic = bBusyTraffic; ieee->link_detect_info.bBusyTraffic = bBusyTraffic;
ieee->LinkDetectInfo.bHigherBusyTraffic = bHigherBusyTraffic; ieee->link_detect_info.bHigherBusyTraffic = bHigherBusyTraffic;
ieee->LinkDetectInfo.bHigherBusyRxTraffic = bHigherBusyRxTraffic; ieee->link_detect_info.bHigherBusyRxTraffic = bHigherBusyRxTraffic;
if (ieee->state == RTLLIB_LINKED && ieee->iw_mode == IW_MODE_INFRA) { if (ieee->state == RTLLIB_LINKED && ieee->iw_mode == IW_MODE_INFRA) {
u32 TotalRxBcnNum = 0; u32 TotalRxBcnNum = 0;
@ -1397,28 +1377,26 @@ static void _rtl92e_watchdog_wq_cb(void *data)
priv->check_roaming_cnt = 0; priv->check_roaming_cnt = 0;
} }
ieee->LinkDetectInfo.NumRecvBcnInPeriod = 0; ieee->link_detect_info.NumRecvBcnInPeriod = 0;
ieee->LinkDetectInfo.NumRecvDataInPeriod = 0; ieee->link_detect_info.NumRecvDataInPeriod = 0;
} }
spin_lock_irqsave(&priv->tx_lock, flags); spin_lock_irqsave(&priv->tx_lock, flags);
if ((check_reset_cnt++ >= 3) && (!ieee->is_roaming) && if ((check_reset_cnt++ >= 3) && (!ieee->is_roaming) &&
(!priv->rf_change_in_progress) && (!pPSC->bSwRfProcessing)) { (!priv->rf_change_in_progress) && (!psc->bSwRfProcessing)) {
ResetType = _rtl92e_if_check_reset(dev); ResetType = _rtl92e_if_check_reset(dev);
check_reset_cnt = 3; check_reset_cnt = 3;
} }
spin_unlock_irqrestore(&priv->tx_lock, flags); spin_unlock_irqrestore(&priv->tx_lock, flags);
if (!priv->bDisableNormalResetCheck && ResetType == RESET_TYPE_NORMAL) { if (ResetType == RESET_TYPE_NORMAL) {
priv->ResetProgress = RESET_TYPE_NORMAL; priv->rst_progress = RESET_TYPE_NORMAL;
return; return;
} }
if (((priv->force_reset) || (!priv->bDisableNormalResetCheck && if ((priv->force_reset || ResetType == RESET_TYPE_SILENT))
ResetType == RESET_TYPE_SILENT)))
_rtl92e_if_silent_reset(dev); _rtl92e_if_silent_reset(dev);
priv->force_reset = false; priv->force_reset = false;
priv->bForcedSilentReset = false;
priv->bResetInProgress = false; priv->bResetInProgress = false;
} }
@ -1554,8 +1532,8 @@ static int _rtl92e_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
} }
tcb_desc->RATRIndex = 7; tcb_desc->RATRIndex = 7;
tcb_desc->bTxDisableRateFallBack = 1; tcb_desc->tx_dis_rate_fallback = 1;
tcb_desc->bTxUseDriverAssingedRate = 1; tcb_desc->tx_use_drv_assinged_rate = 1;
tcb_desc->bTxEnableFwCalcDur = 1; tcb_desc->bTxEnableFwCalcDur = 1;
skb_push(skb, priv->rtllib->tx_headroom); skb_push(skb, priv->rtllib->tx_headroom);
ret = _rtl92e_tx(dev, skb); ret = _rtl92e_tx(dev, skb);
@ -2205,7 +2183,6 @@ static irqreturn_t _rtl92e_irq(int irq, void *netdev)
if (inta & IMR_ROK) { if (inta & IMR_ROK) {
priv->stats.rxint++; priv->stats.rxint++;
priv->InterruptLog.nIMR_ROK++;
tasklet_schedule(&priv->irq_rx_tasklet); tasklet_schedule(&priv->irq_rx_tasklet);
} }
@ -2229,25 +2206,25 @@ static irqreturn_t _rtl92e_irq(int irq, void *netdev)
if (inta & IMR_BKDOK) { if (inta & IMR_BKDOK) {
priv->stats.txbkokint++; priv->stats.txbkokint++;
priv->rtllib->LinkDetectInfo.NumTxOkInPeriod++; priv->rtllib->link_detect_info.NumTxOkInPeriod++;
_rtl92e_tx_isr(dev, BK_QUEUE); _rtl92e_tx_isr(dev, BK_QUEUE);
} }
if (inta & IMR_BEDOK) { if (inta & IMR_BEDOK) {
priv->stats.txbeokint++; priv->stats.txbeokint++;
priv->rtllib->LinkDetectInfo.NumTxOkInPeriod++; priv->rtllib->link_detect_info.NumTxOkInPeriod++;
_rtl92e_tx_isr(dev, BE_QUEUE); _rtl92e_tx_isr(dev, BE_QUEUE);
} }
if (inta & IMR_VIDOK) { if (inta & IMR_VIDOK) {
priv->stats.txviokint++; priv->stats.txviokint++;
priv->rtllib->LinkDetectInfo.NumTxOkInPeriod++; priv->rtllib->link_detect_info.NumTxOkInPeriod++;
_rtl92e_tx_isr(dev, VI_QUEUE); _rtl92e_tx_isr(dev, VI_QUEUE);
} }
if (inta & IMR_VODOK) { if (inta & IMR_VODOK) {
priv->stats.txvookint++; priv->stats.txvookint++;
priv->rtllib->LinkDetectInfo.NumTxOkInPeriod++; priv->rtllib->link_detect_info.NumTxOkInPeriod++;
_rtl92e_tx_isr(dev, VO_QUEUE); _rtl92e_tx_isr(dev, VO_QUEUE);
} }
@ -2437,8 +2414,8 @@ bool rtl92e_enable_nic(struct net_device *dev)
{ {
bool init_status = true; bool init_status = true;
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
(&priv->rtllib->PowerSaveControl); (&priv->rtllib->pwr_save_ctrl);
if (!priv->up) { if (!priv->up) {
netdev_warn(dev, "%s(): Driver is already down!\n", __func__); netdev_warn(dev, "%s(): Driver is already down!\n", __func__);
@ -2453,7 +2430,7 @@ bool rtl92e_enable_nic(struct net_device *dev)
priv->bdisable_nic = false; priv->bdisable_nic = false;
return false; return false;
} }
RT_CLEAR_PS_LEVEL(pPSC, RT_RF_OFF_LEVL_HALT_NIC); RT_CLEAR_PS_LEVEL(psc, RT_RF_OFF_LEVL_HALT_NIC);
priv->bfirst_init = false; priv->bfirst_init = false;
rtl92e_irq_enable(dev); rtl92e_irq_enable(dev);

View File

@ -234,15 +234,6 @@ struct rt_stats {
u32 CurrentShowTxate; u32 CurrentShowTxate;
}; };
struct channel_access_setting {
u16 SIFS_Timer;
u16 DIFS_Timer;
u16 SlotTimeTimer;
u16 EIFS_Timer;
u16 CWminIndex;
u16 CWmaxIndex;
};
struct init_gain { struct init_gain {
u8 xaagccore1; u8 xaagccore1;
u8 xbagccore1; u8 xbagccore1;
@ -309,9 +300,7 @@ struct r8192_priv {
bool bfirst_init; bool bfirst_init;
bool bfirst_after_down; bool bfirst_after_down;
bool initialized_at_probe;
bool being_init_adapter; bool being_init_adapter;
bool bDriverIsGoingToUnload;
int irq; int irq;
short irq_enabled; short irq_enabled;
@ -323,16 +312,11 @@ struct r8192_priv {
struct delayed_work txpower_tracking_wq; struct delayed_work txpower_tracking_wq;
struct delayed_work rfpath_check_wq; struct delayed_work rfpath_check_wq;
struct delayed_work gpio_change_rf_wq; struct delayed_work gpio_change_rf_wq;
struct channel_access_setting ChannelAccessSetting;
struct rtl819x_ops *ops; struct rtl819x_ops *ops;
struct rtllib_device *rtllib; struct rtllib_device *rtllib;
struct work_struct reset_wq; struct work_struct reset_wq;
struct log_int_8190 InterruptLog;
enum rt_customer_id CustomerID; enum rt_customer_id CustomerID;
@ -341,8 +325,6 @@ struct r8192_priv {
struct bb_reg_definition PHYRegDef[4]; struct bb_reg_definition PHYRegDef[4];
struct rate_adaptive rate_adaptive; struct rate_adaptive rate_adaptive;
enum acm_method AcmMethod;
struct rt_firmware *pFirmware; struct rt_firmware *pFirmware;
enum rtl819x_loopback LoopbackMode; enum rtl819x_loopback LoopbackMode;
@ -410,8 +392,6 @@ struct r8192_priv {
short chan; short chan;
short sens; short sens;
short max_sens; short max_sens;
u8 ScanDelay;
bool ps_force; bool ps_force;
u32 irq_mask[2]; u32 irq_mask[2];
@ -470,13 +450,9 @@ struct r8192_priv {
bool bTXPowerDataReadFromEEPORM; bool bTXPowerDataReadFromEEPORM;
u16 RegChannelPlan; u16 reg_chnl_plan;
u16 ChannelPlan; u16 ChannelPlan;
u8 hw_rf_off_action;
bool RegRfOff;
bool isRFOff;
bool bInPowerSaveMode;
u8 bHwRfOffAction;
bool rf_change_in_progress; bool rf_change_in_progress;
bool SetRFPowerStateInProgress; bool SetRFPowerStateInProgress;
@ -490,7 +466,7 @@ struct r8192_priv {
u8 CCKPresentAttentuation_20Mdefault; u8 CCKPresentAttentuation_20Mdefault;
u8 CCKPresentAttentuation_40Mdefault; u8 CCKPresentAttentuation_40Mdefault;
s8 CCKPresentAttentuation_difference; s8 CCKPresentAttentuation_difference;
s8 CCKPresentAttentuation; s8 cck_present_attn;
long undecorated_smoothed_pwdb; long undecorated_smoothed_pwdb;
u32 MCSTxPowerLevelOriginalOffset[6]; u32 MCSTxPowerLevelOriginalOffset[6];
@ -543,11 +519,9 @@ struct r8192_priv {
u32 reset_count; u32 reset_count;
enum reset_type ResetProgress; enum reset_type rst_progress;
bool bForcedSilentReset;
bool bDisableNormalResetCheck;
u16 TxCounter; u16 TxCounter;
u16 RxCounter; u16 rx_ctr;
bool bResetInProgress; bool bResetInProgress;
bool force_reset; bool force_reset;
bool force_lps; bool force_lps;

View File

@ -267,10 +267,8 @@ static void _rtl92e_dm_check_ac_dc_power(struct net_device *dev)
"PATH=/usr/bin:/bin", "PATH=/usr/bin:/bin",
NULL}; NULL};
if (priv->ResetProgress == RESET_TYPE_SILENT) { if (priv->rst_progress == RESET_TYPE_SILENT)
return; return;
}
if (priv->rtllib->state != RTLLIB_LINKED) if (priv->rtllib->state != RTLLIB_LINKED)
return; return;
call_usermodehelper(ac_dc_script, argv, envp, UMH_WAIT_PROC); call_usermodehelper(ac_dc_script, argv, envp, UMH_WAIT_PROC);
@ -323,16 +321,15 @@ void rtl92e_init_adaptive_rate(struct net_device *dev)
static void _rtl92e_dm_check_rate_adaptive(struct net_device *dev) static void _rtl92e_dm_check_rate_adaptive(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_hi_throughput *pHTInfo = priv->rtllib->pHTInfo; struct rt_hi_throughput *ht_info = priv->rtllib->ht_info;
struct rate_adaptive *pra = &priv->rate_adaptive; struct rate_adaptive *pra = &priv->rate_adaptive;
u32 currentRATR, targetRATR = 0; u32 currentRATR, targetRATR = 0;
u32 LowRSSIThreshForRA = 0, HighRSSIThreshForRA = 0; u32 LowRSSIThreshForRA = 0, HighRSSIThreshForRA = 0;
bool bshort_gi_enabled = false; bool bshort_gi_enabled = false;
static u8 ping_rssi_state; static u8 ping_rssi_state;
if (!priv->up) { if (!priv->up)
return; return;
}
if (pra->rate_adaptive_disabled) if (pra->rate_adaptive_disabled)
return; return;
@ -343,10 +340,10 @@ static void _rtl92e_dm_check_rate_adaptive(struct net_device *dev)
if (priv->rtllib->state == RTLLIB_LINKED) { if (priv->rtllib->state == RTLLIB_LINKED) {
bshort_gi_enabled = (pHTInfo->cur_tx_bw40mhz && bshort_gi_enabled = (ht_info->cur_tx_bw40mhz &&
pHTInfo->bCurShortGI40MHz) || ht_info->bCurShortGI40MHz) ||
(!pHTInfo->cur_tx_bw40mhz && (!ht_info->cur_tx_bw40mhz &&
pHTInfo->bCurShortGI20MHz); ht_info->bCurShortGI20MHz);
pra->upper_rssi_threshold_ratr = pra->upper_rssi_threshold_ratr =
(pra->upper_rssi_threshold_ratr & (~BIT31)) | (pra->upper_rssi_threshold_ratr & (~BIT31)) |
@ -631,9 +628,9 @@ static void _rtl92e_dm_tx_power_tracking_callback_tssi(struct net_device *dev)
for (j = 0; j <= 30; j++) { for (j = 0; j <= 30; j++) {
tx_cmd.Op = TXCMD_SET_TX_PWR_TRACKING; tx_cmd.op = TXCMD_SET_TX_PWR_TRACKING;
tx_cmd.Length = 4; tx_cmd.length = 4;
tx_cmd.Value = Value; tx_cmd.value = Value;
rtl92e_send_cmd_pkt(dev, DESC_PACKET_TYPE_NORMAL, (u8 *)&tx_cmd, rtl92e_send_cmd_pkt(dev, DESC_PACKET_TYPE_NORMAL, (u8 *)&tx_cmd,
sizeof(struct dcmd_txcmd)); sizeof(struct dcmd_txcmd));
mdelay(1); mdelay(1);
@ -719,21 +716,21 @@ static void _rtl92e_dm_tx_power_tracking_callback_tssi(struct net_device *dev)
} }
if (priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20) if (priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20)
priv->CCKPresentAttentuation = priv->cck_present_attn =
priv->CCKPresentAttentuation_20Mdefault + priv->CCKPresentAttentuation_20Mdefault +
priv->CCKPresentAttentuation_difference; priv->CCKPresentAttentuation_difference;
else else
priv->CCKPresentAttentuation = priv->cck_present_attn =
priv->CCKPresentAttentuation_40Mdefault + priv->CCKPresentAttentuation_40Mdefault +
priv->CCKPresentAttentuation_difference; priv->CCKPresentAttentuation_difference;
if (priv->CCKPresentAttentuation > (CCKTxBBGainTableLength-1)) if (priv->cck_present_attn > (CCKTxBBGainTableLength-1))
priv->CCKPresentAttentuation = CCKTxBBGainTableLength-1; priv->cck_present_attn = CCKTxBBGainTableLength-1;
if (priv->CCKPresentAttentuation < 0) if (priv->cck_present_attn < 0)
priv->CCKPresentAttentuation = 0; priv->cck_present_attn = 0;
if (priv->CCKPresentAttentuation > -1 && if (priv->cck_present_attn > -1 &&
priv->CCKPresentAttentuation < CCKTxBBGainTableLength) { priv->cck_present_attn < CCKTxBBGainTableLength) {
if (priv->rtllib->current_network.channel == 14 && if (priv->rtllib->current_network.channel == 14 &&
!priv->bcck_in_ch14) { !priv->bcck_in_ch14) {
priv->bcck_in_ch14 = true; priv->bcck_in_ch14 = true;
@ -777,9 +774,8 @@ static void _rtl92e_dm_tx_power_tracking_cb_thermal(struct net_device *dev)
tmpRegA = rtl92e_get_bb_reg(dev, rOFDM0_XATxIQImbalance, tmpRegA = rtl92e_get_bb_reg(dev, rOFDM0_XATxIQImbalance,
bMaskDWord); bMaskDWord);
for (i = 0; i < OFDM_Table_Length; i++) { for (i = 0; i < OFDM_Table_Length; i++) {
if (tmpRegA == OFDMSwingTable[i]) { if (tmpRegA == OFDMSwingTable[i])
priv->OFDM_index[0] = i; priv->OFDM_index[0] = i;
}
} }
TempCCk = rtl92e_get_bb_reg(dev, rCCK0_TxFilter1, bMaskByte2); TempCCk = rtl92e_get_bb_reg(dev, rCCK0_TxFilter1, bMaskByte2);
@ -967,7 +963,7 @@ static void _rtl92e_dm_cck_tx_power_adjust_tssi(struct net_device *dev,
{ {
u32 TempVal; u32 TempVal;
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
u8 attenuation = priv->CCKPresentAttentuation; u8 attenuation = priv->cck_present_attn;
TempVal = 0; TempVal = 0;
if (!bInCH14) { if (!bInCH14) {
@ -1066,9 +1062,8 @@ void rtl92e_dm_restore_state(struct net_device *dev)
u32 reg_ratr = priv->rate_adaptive.last_ratr; u32 reg_ratr = priv->rate_adaptive.last_ratr;
u32 ratr_value; u32 ratr_value;
if (!priv->up) { if (!priv->up)
return; return;
}
if (priv->rate_adaptive.rate_adaptive_disabled) if (priv->rate_adaptive.rate_adaptive_disabled)
return; return;
@ -1143,8 +1138,8 @@ static void _rtl92e_dm_dig_init(struct net_device *dev)
dm_digtable.dig_state = DM_STA_DIG_MAX; dm_digtable.dig_state = DM_STA_DIG_MAX;
dm_digtable.dig_highpwr_state = DM_STA_DIG_MAX; dm_digtable.dig_highpwr_state = DM_STA_DIG_MAX;
dm_digtable.CurSTAConnectState = DIG_STA_DISCONNECT; dm_digtable.cur_sta_connect_state = DIG_STA_DISCONNECT;
dm_digtable.PreSTAConnectState = DIG_STA_DISCONNECT; dm_digtable.pre_sta_connect_state = DIG_STA_DISCONNECT;
dm_digtable.rssi_low_thresh = DM_DIG_THRESH_LOW; dm_digtable.rssi_low_thresh = DM_DIG_THRESH_LOW;
dm_digtable.rssi_high_thresh = DM_DIG_THRESH_HIGH; dm_digtable.rssi_high_thresh = DM_DIG_THRESH_HIGH;
@ -1212,9 +1207,9 @@ static void _rtl92e_dm_ctrl_initgain_byrssi_driver(struct net_device *dev)
} }
if (priv->rtllib->state == RTLLIB_LINKED) if (priv->rtllib->state == RTLLIB_LINKED)
dm_digtable.CurSTAConnectState = DIG_STA_CONNECT; dm_digtable.cur_sta_connect_state = DIG_STA_CONNECT;
else else
dm_digtable.CurSTAConnectState = DIG_STA_DISCONNECT; dm_digtable.cur_sta_connect_state = DIG_STA_DISCONNECT;
dm_digtable.rssi_val = priv->undecorated_smoothed_pwdb; dm_digtable.rssi_val = priv->undecorated_smoothed_pwdb;
@ -1223,7 +1218,7 @@ static void _rtl92e_dm_ctrl_initgain_byrssi_driver(struct net_device *dev)
_rtl92e_dm_cs_ratio(dev); _rtl92e_dm_cs_ratio(dev);
if (dm_digtable.dig_algorithm_switch) if (dm_digtable.dig_algorithm_switch)
dm_digtable.dig_algorithm_switch = 0; dm_digtable.dig_algorithm_switch = 0;
dm_digtable.PreSTAConnectState = dm_digtable.CurSTAConnectState; dm_digtable.pre_sta_connect_state = dm_digtable.cur_sta_connect_state;
} }
@ -1373,8 +1368,8 @@ static void _rtl92e_dm_initial_gain(struct net_device *dev)
return; return;
} }
if (dm_digtable.PreSTAConnectState == dm_digtable.CurSTAConnectState) { if (dm_digtable.pre_sta_connect_state == dm_digtable.cur_sta_connect_state) {
if (dm_digtable.CurSTAConnectState == DIG_STA_CONNECT) { if (dm_digtable.cur_sta_connect_state == DIG_STA_CONNECT) {
long gain_range = dm_digtable.rssi_val + 10 - long gain_range = dm_digtable.rssi_val + 10 -
dm_digtable.backoff_val; dm_digtable.backoff_val;
gain_range = clamp_t(long, gain_range, gain_range = clamp_t(long, gain_range,
@ -1424,8 +1419,8 @@ static void _rtl92e_dm_pd_th(struct net_device *dev)
reset_cnt = 0; reset_cnt = 0;
} }
if (dm_digtable.PreSTAConnectState == dm_digtable.CurSTAConnectState) { if (dm_digtable.pre_sta_connect_state == dm_digtable.cur_sta_connect_state) {
if (dm_digtable.CurSTAConnectState == DIG_STA_CONNECT) { if (dm_digtable.cur_sta_connect_state == DIG_STA_CONNECT) {
if (dm_digtable.rssi_val >= if (dm_digtable.rssi_val >=
dm_digtable.rssi_high_power_highthresh) dm_digtable.rssi_high_power_highthresh)
dm_digtable.curpd_thstate = dm_digtable.curpd_thstate =
@ -1492,8 +1487,8 @@ static void _rtl92e_dm_cs_ratio(struct net_device *dev)
reset_cnt = 0; reset_cnt = 0;
} }
if (dm_digtable.PreSTAConnectState == dm_digtable.CurSTAConnectState) { if (dm_digtable.pre_sta_connect_state == dm_digtable.cur_sta_connect_state) {
if (dm_digtable.CurSTAConnectState == DIG_STA_CONNECT) { if (dm_digtable.cur_sta_connect_state == DIG_STA_CONNECT) {
if (dm_digtable.rssi_val <= dm_digtable.rssi_low_thresh) if (dm_digtable.rssi_val <= dm_digtable.rssi_low_thresh)
dm_digtable.curcs_ratio_state = DIG_CS_RATIO_LOWER; dm_digtable.curcs_ratio_state = DIG_CS_RATIO_LOWER;
else if (dm_digtable.rssi_val >= dm_digtable.rssi_high_thresh) else if (dm_digtable.rssi_val >= dm_digtable.rssi_high_thresh)
@ -1537,7 +1532,7 @@ void rtl92e_dm_init_edca_turbo(struct net_device *dev)
static void _rtl92e_dm_check_edca_turbo(struct net_device *dev) static void _rtl92e_dm_check_edca_turbo(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_hi_throughput *pHTInfo = priv->rtllib->pHTInfo; struct rt_hi_throughput *ht_info = priv->rtllib->ht_info;
static unsigned long lastTxOkCnt; static unsigned long lastTxOkCnt;
static unsigned long lastRxOkCnt; static unsigned long lastRxOkCnt;
@ -1548,18 +1543,18 @@ static void _rtl92e_dm_check_edca_turbo(struct net_device *dev)
goto dm_CheckEdcaTurbo_EXIT; goto dm_CheckEdcaTurbo_EXIT;
if (priv->rtllib->state != RTLLIB_LINKED) if (priv->rtllib->state != RTLLIB_LINKED)
goto dm_CheckEdcaTurbo_EXIT; goto dm_CheckEdcaTurbo_EXIT;
if (priv->rtllib->pHTInfo->iot_action & HT_IOT_ACT_DISABLE_EDCA_TURBO) if (priv->rtllib->ht_info->iot_action & HT_IOT_ACT_DISABLE_EDCA_TURBO)
goto dm_CheckEdcaTurbo_EXIT; goto dm_CheckEdcaTurbo_EXIT;
if (!priv->rtllib->bis_any_nonbepkts) { if (!priv->rtllib->bis_any_nonbepkts) {
curTxOkCnt = priv->stats.txbytesunicast - lastTxOkCnt; curTxOkCnt = priv->stats.txbytesunicast - lastTxOkCnt;
curRxOkCnt = priv->stats.rxbytesunicast - lastRxOkCnt; curRxOkCnt = priv->stats.rxbytesunicast - lastRxOkCnt;
if (pHTInfo->iot_action & HT_IOT_ACT_EDCA_BIAS_ON_RX) { if (ht_info->iot_action & HT_IOT_ACT_EDCA_BIAS_ON_RX) {
if (curTxOkCnt > 4*curRxOkCnt) { if (curTxOkCnt > 4*curRxOkCnt) {
if (priv->bis_cur_rdlstate || if (priv->bis_cur_rdlstate ||
!priv->bcurrent_turbo_EDCA) { !priv->bcurrent_turbo_EDCA) {
rtl92e_writel(dev, EDCAPARA_BE, rtl92e_writel(dev, EDCAPARA_BE,
edca_setting_UL[pHTInfo->IOTPeer]); edca_setting_UL[ht_info->IOTPeer]);
priv->bis_cur_rdlstate = false; priv->bis_cur_rdlstate = false;
} }
} else { } else {
@ -1567,10 +1562,10 @@ static void _rtl92e_dm_check_edca_turbo(struct net_device *dev)
!priv->bcurrent_turbo_EDCA) { !priv->bcurrent_turbo_EDCA) {
if (priv->rtllib->mode == WIRELESS_MODE_G) if (priv->rtllib->mode == WIRELESS_MODE_G)
rtl92e_writel(dev, EDCAPARA_BE, rtl92e_writel(dev, EDCAPARA_BE,
edca_setting_DL_GMode[pHTInfo->IOTPeer]); edca_setting_DL_GMode[ht_info->IOTPeer]);
else else
rtl92e_writel(dev, EDCAPARA_BE, rtl92e_writel(dev, EDCAPARA_BE,
edca_setting_DL[pHTInfo->IOTPeer]); edca_setting_DL[ht_info->IOTPeer]);
priv->bis_cur_rdlstate = true; priv->bis_cur_rdlstate = true;
} }
} }
@ -1581,17 +1576,17 @@ static void _rtl92e_dm_check_edca_turbo(struct net_device *dev)
!priv->bcurrent_turbo_EDCA) { !priv->bcurrent_turbo_EDCA) {
if (priv->rtllib->mode == WIRELESS_MODE_G) if (priv->rtllib->mode == WIRELESS_MODE_G)
rtl92e_writel(dev, EDCAPARA_BE, rtl92e_writel(dev, EDCAPARA_BE,
edca_setting_DL_GMode[pHTInfo->IOTPeer]); edca_setting_DL_GMode[ht_info->IOTPeer]);
else else
rtl92e_writel(dev, EDCAPARA_BE, rtl92e_writel(dev, EDCAPARA_BE,
edca_setting_DL[pHTInfo->IOTPeer]); edca_setting_DL[ht_info->IOTPeer]);
priv->bis_cur_rdlstate = true; priv->bis_cur_rdlstate = true;
} }
} else { } else {
if (priv->bis_cur_rdlstate || if (priv->bis_cur_rdlstate ||
!priv->bcurrent_turbo_EDCA) { !priv->bcurrent_turbo_EDCA) {
rtl92e_writel(dev, EDCAPARA_BE, rtl92e_writel(dev, EDCAPARA_BE,
edca_setting_UL[pHTInfo->IOTPeer]); edca_setting_UL[ht_info->IOTPeer]);
priv->bis_cur_rdlstate = false; priv->bis_cur_rdlstate = false;
} }
@ -1626,23 +1621,23 @@ static void _rtl92e_dm_init_cts_to_self(struct net_device *dev)
static void _rtl92e_dm_cts_to_self(struct net_device *dev) static void _rtl92e_dm_cts_to_self(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv((struct net_device *)dev); struct r8192_priv *priv = rtllib_priv((struct net_device *)dev);
struct rt_hi_throughput *pHTInfo = priv->rtllib->pHTInfo; struct rt_hi_throughput *ht_info = priv->rtllib->ht_info;
static unsigned long lastTxOkCnt; static unsigned long lastTxOkCnt;
static unsigned long lastRxOkCnt; static unsigned long lastRxOkCnt;
unsigned long curTxOkCnt = 0; unsigned long curTxOkCnt = 0;
unsigned long curRxOkCnt = 0; unsigned long curRxOkCnt = 0;
if (!priv->rtllib->bCTSToSelfEnable) { if (!priv->rtllib->bCTSToSelfEnable) {
pHTInfo->iot_action &= ~HT_IOT_ACT_FORCED_CTS2SELF; ht_info->iot_action &= ~HT_IOT_ACT_FORCED_CTS2SELF;
return; return;
} }
if (pHTInfo->IOTPeer == HT_IOT_PEER_BROADCOM) { if (ht_info->IOTPeer == HT_IOT_PEER_BROADCOM) {
curTxOkCnt = priv->stats.txbytesunicast - lastTxOkCnt; curTxOkCnt = priv->stats.txbytesunicast - lastTxOkCnt;
curRxOkCnt = priv->stats.rxbytesunicast - lastRxOkCnt; curRxOkCnt = priv->stats.rxbytesunicast - lastRxOkCnt;
if (curRxOkCnt > 4*curTxOkCnt) if (curRxOkCnt > 4*curTxOkCnt)
pHTInfo->iot_action &= ~HT_IOT_ACT_FORCED_CTS2SELF; ht_info->iot_action &= ~HT_IOT_ACT_FORCED_CTS2SELF;
else else
pHTInfo->iot_action |= HT_IOT_ACT_FORCED_CTS2SELF; ht_info->iot_action |= HT_IOT_ACT_FORCED_CTS2SELF;
lastTxOkCnt = priv->stats.txbytesunicast; lastTxOkCnt = priv->stats.txbytesunicast;
lastRxOkCnt = priv->stats.rxbytesunicast; lastRxOkCnt = priv->stats.rxbytesunicast;
@ -1653,10 +1648,10 @@ static void _rtl92e_dm_cts_to_self(struct net_device *dev)
static void _rtl92e_dm_init_wa_broadcom_iot(struct net_device *dev) static void _rtl92e_dm_init_wa_broadcom_iot(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv((struct net_device *)dev); struct r8192_priv *priv = rtllib_priv((struct net_device *)dev);
struct rt_hi_throughput *pHTInfo = priv->rtllib->pHTInfo; struct rt_hi_throughput *ht_info = priv->rtllib->ht_info;
pHTInfo->bWAIotBroadcom = false; ht_info->bWAIotBroadcom = false;
pHTInfo->WAIotTH = WAIotTHVal; ht_info->WAIotTH = WAIotTHVal;
} }
static void _rtl92e_dm_check_rf_ctrl_gpio(void *data) static void _rtl92e_dm_check_rf_ctrl_gpio(void *data)
@ -1698,7 +1693,7 @@ static void _rtl92e_dm_check_rf_ctrl_gpio(void *data)
if (bActuallySet) { if (bActuallySet) {
mdelay(1000); mdelay(1000);
priv->bHwRfOffAction = 1; priv->hw_rf_off_action = 1;
rtl92e_set_rf_state(dev, rf_power_state_to_set, RF_CHANGE_BY_HW); rtl92e_set_rf_state(dev, rf_power_state_to_set, RF_CHANGE_BY_HW);
if (priv->hw_radio_off) if (priv->hw_radio_off)
argv[1] = "RFOFF"; argv[1] = "RFOFF";
@ -1997,7 +1992,7 @@ static void _rtl92e_dm_fsync_timer_callback(struct timer_list *t)
if (priv->rtllib->state == RTLLIB_LINKED && if (priv->rtllib->state == RTLLIB_LINKED &&
priv->rtllib->bfsync_enable && priv->rtllib->bfsync_enable &&
(priv->rtllib->pHTInfo->iot_action & HT_IOT_ACT_CDD_FSYNC)) { (priv->rtllib->ht_info->iot_action & HT_IOT_ACT_CDD_FSYNC)) {
u32 rate_bitmap; u32 rate_bitmap;
for (rate_index = 0; rate_index <= 27; rate_index++) { for (rate_index = 0; rate_index <= 27; rate_index++) {
@ -2126,8 +2121,8 @@ static void _rtl92e_dm_end_sw_fsync(struct net_device *dev)
static void _rtl92e_dm_start_sw_fsync(struct net_device *dev) static void _rtl92e_dm_start_sw_fsync(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
u32 rateIndex; u32 rate_index;
u32 rateBitmap; u32 rate_bitmap;
priv->rate_record = 0; priv->rate_record = 0;
priv->ContinueDiffCount = 0; priv->ContinueDiffCount = 0;
@ -2141,12 +2136,12 @@ static void _rtl92e_dm_start_sw_fsync(struct net_device *dev)
priv->rtllib->fsync_firstdiff_ratethreshold = 200; priv->rtllib->fsync_firstdiff_ratethreshold = 200;
priv->rtllib->fsync_seconddiff_ratethreshold = 200; priv->rtllib->fsync_seconddiff_ratethreshold = 200;
} }
for (rateIndex = 0; rateIndex <= 27; rateIndex++) { for (rate_index = 0; rate_index <= 27; rate_index++) {
rateBitmap = 1 << rateIndex; rate_bitmap = 1 << rate_index;
if (priv->rtllib->fsync_rate_bitmap & rateBitmap) if (priv->rtllib->fsync_rate_bitmap & rate_bitmap)
priv->rate_record += priv->rate_record +=
priv->stats.received_rate_histogram[1] priv->stats.received_rate_histogram[1]
[rateIndex]; [rate_index];
} }
if (timer_pending(&priv->fsync_timer)) if (timer_pending(&priv->fsync_timer))
del_timer_sync(&priv->fsync_timer); del_timer_sync(&priv->fsync_timer);
@ -2168,7 +2163,7 @@ static void _rtl92e_dm_check_fsync(struct net_device *dev)
static u32 reset_cnt; static u32 reset_cnt;
if (priv->rtllib->state == RTLLIB_LINKED && if (priv->rtllib->state == RTLLIB_LINKED &&
priv->rtllib->pHTInfo->IOTPeer == HT_IOT_PEER_BROADCOM) { priv->rtllib->ht_info->IOTPeer == HT_IOT_PEER_BROADCOM) {
if (priv->rtllib->bfsync_enable == 0) { if (priv->rtllib->bfsync_enable == 0) {
switch (priv->rtllib->fsync_state) { switch (priv->rtllib->fsync_state) {
case Default_Fsync: case Default_Fsync:
@ -2293,7 +2288,7 @@ static void _rtl92e_dm_dynamic_tx_power(struct net_device *dev)
priv->bDynamicTxLowPower = false; priv->bDynamicTxLowPower = false;
return; return;
} }
if ((priv->rtllib->pHTInfo->IOTPeer == HT_IOT_PEER_ATHEROS) && if ((priv->rtllib->ht_info->IOTPeer == HT_IOT_PEER_ATHEROS) &&
(priv->rtllib->mode == IEEE_G)) { (priv->rtllib->mode == IEEE_G)) {
txhipower_threshold = TX_POWER_ATHEROAP_THRESH_HIGH; txhipower_threshold = TX_POWER_ATHEROAP_THRESH_HIGH;
txlowpower_threshold = TX_POWER_ATHEROAP_THRESH_LOW; txlowpower_threshold = TX_POWER_ATHEROAP_THRESH_LOW;

View File

@ -66,8 +66,8 @@ struct dig_t {
u8 dig_state; u8 dig_state;
u8 dig_highpwr_state; u8 dig_highpwr_state;
u8 CurSTAConnectState; u8 cur_sta_connect_state;
u8 PreSTAConnectState; u8 pre_sta_connect_state;
u8 curpd_thstate; u8 curpd_thstate;
u8 prepd_thstate; u8 prepd_thstate;
@ -152,9 +152,9 @@ enum dm_cck_rx_path_method {
struct dcmd_txcmd { struct dcmd_txcmd {
u32 Op; u32 op;
u32 Length; u32 length;
u32 Value; u32 value;
}; };
/*------------------------------Define structure----------------------------*/ /*------------------------------Define structure----------------------------*/

View File

@ -79,6 +79,6 @@ u32 rtl92e_eeprom_read(struct net_device *dev, u32 addr)
ret = _rtl92e_eeprom_xfer(dev, (addr & 0x3F) | (0x6 << 6), 9); ret = _rtl92e_eeprom_xfer(dev, (addr & 0x3F) | (0x6 << 6), 9);
rtl92e_writeb(dev, EPROM_CMD, rtl92e_writeb(dev, EPROM_CMD,
(EPROM_CMD_NORMAL<<EPROM_CMD_OPERATING_MODE_SHIFT)); (EPROM_CMD_NORMAL << EPROM_CMD_OPERATING_MODE_SHIFT));
return ret; return ret;
} }

View File

@ -100,50 +100,43 @@ void rtl92e_enter_sleep(struct net_device *dev, u64 time)
static void _rtl92e_ps_update_rf_state(struct net_device *dev) static void _rtl92e_ps_update_rf_state(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
&(priv->rtllib->PowerSaveControl); &priv->rtllib->pwr_save_ctrl;
pPSC->bSwRfProcessing = true; psc->bSwRfProcessing = true;
rtl92e_set_rf_state(dev, pPSC->eInactivePowerState, RF_CHANGE_BY_IPS); rtl92e_set_rf_state(dev, psc->eInactivePowerState, RF_CHANGE_BY_IPS);
pPSC->bSwRfProcessing = false; psc->bSwRfProcessing = false;
} }
void rtl92e_ips_enter(struct net_device *dev) void rtl92e_ips_enter(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
&(priv->rtllib->PowerSaveControl); &priv->rtllib->pwr_save_ctrl;
enum rt_rf_power_state rt_state; enum rt_rf_power_state rt_state;
if (pPSC->bInactivePs) { rt_state = priv->rtllib->rf_power_state;
rt_state = priv->rtllib->rf_power_state; if (rt_state == rf_on && !psc->bSwRfProcessing &&
if (rt_state == rf_on && !pPSC->bSwRfProcessing && (priv->rtllib->state != RTLLIB_LINKED) &&
(priv->rtllib->state != RTLLIB_LINKED) && (priv->rtllib->iw_mode != IW_MODE_MASTER)) {
(priv->rtllib->iw_mode != IW_MODE_MASTER)) { psc->eInactivePowerState = rf_off;
pPSC->eInactivePowerState = rf_off; _rtl92e_ps_update_rf_state(dev);
priv->isRFOff = true;
priv->bInPowerSaveMode = true;
_rtl92e_ps_update_rf_state(dev);
}
} }
} }
void rtl92e_ips_leave(struct net_device *dev) void rtl92e_ips_leave(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
&(priv->rtllib->PowerSaveControl); &priv->rtllib->pwr_save_ctrl;
enum rt_rf_power_state rt_state; enum rt_rf_power_state rt_state;
if (pPSC->bInactivePs) { rt_state = priv->rtllib->rf_power_state;
rt_state = priv->rtllib->rf_power_state; if (rt_state != rf_on && !psc->bSwRfProcessing &&
if (rt_state != rf_on && !pPSC->bSwRfProcessing && priv->rtllib->rf_off_reason <= RF_CHANGE_BY_IPS) {
priv->rtllib->rf_off_reason <= RF_CHANGE_BY_IPS) { psc->eInactivePowerState = rf_on;
pPSC->eInactivePowerState = rf_on; _rtl92e_ps_update_rf_state(dev);
priv->bInPowerSaveMode = false;
_rtl92e_ps_update_rf_state(dev);
}
} }
} }
@ -165,18 +158,15 @@ void rtl92e_rtllib_ips_leave_wq(struct net_device *dev)
enum rt_rf_power_state rt_state; enum rt_rf_power_state rt_state;
rt_state = priv->rtllib->rf_power_state; rt_state = priv->rtllib->rf_power_state;
if (rt_state == rf_off) {
if (priv->rtllib->PowerSaveControl.bInactivePs) { if (priv->rtllib->rf_off_reason > RF_CHANGE_BY_IPS) {
if (rt_state == rf_off) { netdev_warn(dev, "%s(): RF is OFF.\n",
if (priv->rtllib->rf_off_reason > RF_CHANGE_BY_IPS) {
netdev_warn(dev, "%s(): RF is OFF.\n",
__func__);
return;
}
netdev_info(dev, "=========>%s(): rtl92e_ips_leave\n",
__func__); __func__);
schedule_work(&priv->rtllib->ips_leave_wq); return;
} }
netdev_info(dev, "=========>%s(): rtl92e_ips_leave\n",
__func__);
schedule_work(&priv->rtllib->ips_leave_wq);
} }
} }
@ -216,8 +206,8 @@ static bool _rtl92e_ps_set_mode(struct net_device *dev, u8 rtPsMode)
void rtl92e_leisure_ps_enter(struct net_device *dev) void rtl92e_leisure_ps_enter(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
&(priv->rtllib->PowerSaveControl); &priv->rtllib->pwr_save_ctrl;
if (!((priv->rtllib->iw_mode == IW_MODE_INFRA) && if (!((priv->rtllib->iw_mode == IW_MODE_INFRA) &&
(priv->rtllib->state == RTLLIB_LINKED)) (priv->rtllib->state == RTLLIB_LINKED))
@ -225,38 +215,31 @@ void rtl92e_leisure_ps_enter(struct net_device *dev)
(priv->rtllib->iw_mode == IW_MODE_MASTER)) (priv->rtllib->iw_mode == IW_MODE_MASTER))
return; return;
if (pPSC->bLeisurePs) { if (psc->bLeisurePs) {
if (pPSC->LpsIdleCount >= RT_CHECK_FOR_HANG_PERIOD) { if (psc->LpsIdleCount >= RT_CHECK_FOR_HANG_PERIOD) {
if (priv->rtllib->ps == RTLLIB_PS_DISABLED) { if (priv->rtllib->ps == RTLLIB_PS_DISABLED) {
if (!pPSC->bFwCtrlLPS) { if (priv->rtllib->SetFwCmdHandler)
if (priv->rtllib->SetFwCmdHandler) priv->rtllib->SetFwCmdHandler(dev, FW_CMD_LPS_ENTER);
priv->rtllib->SetFwCmdHandler(
dev, FW_CMD_LPS_ENTER);
}
_rtl92e_ps_set_mode(dev, RTLLIB_PS_MBCAST | _rtl92e_ps_set_mode(dev, RTLLIB_PS_MBCAST |
RTLLIB_PS_UNICAST); RTLLIB_PS_UNICAST);
} }
} else } else
pPSC->LpsIdleCount++; psc->LpsIdleCount++;
} }
} }
void rtl92e_leisure_ps_leave(struct net_device *dev) void rtl92e_leisure_ps_leave(struct net_device *dev)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
&(priv->rtllib->PowerSaveControl); &priv->rtllib->pwr_save_ctrl;
if (pPSC->bLeisurePs) { if (psc->bLeisurePs) {
if (priv->rtllib->ps != RTLLIB_PS_DISABLED) { if (priv->rtllib->ps != RTLLIB_PS_DISABLED) {
_rtl92e_ps_set_mode(dev, RTLLIB_PS_DISABLED); _rtl92e_ps_set_mode(dev, RTLLIB_PS_DISABLED);
if (priv->rtllib->SetFwCmdHandler)
if (!pPSC->bFwCtrlLPS) { priv->rtllib->SetFwCmdHandler(dev, FW_CMD_LPS_LEAVE);
if (priv->rtllib->SetFwCmdHandler)
priv->rtllib->SetFwCmdHandler(dev,
FW_CMD_LPS_LEAVE);
}
} }
} }
} }

View File

@ -159,21 +159,21 @@ static int _rtl92e_wx_adapter_power_status(struct net_device *dev,
union iwreq_data *wrqu, char *extra) union iwreq_data *wrqu, char *extra)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
(&priv->rtllib->PowerSaveControl); (&priv->rtllib->pwr_save_ctrl);
struct rtllib_device *ieee = priv->rtllib; struct rtllib_device *ieee = priv->rtllib;
mutex_lock(&priv->wx_mutex); mutex_lock(&priv->wx_mutex);
if (*extra || priv->force_lps) { if (*extra || priv->force_lps) {
priv->ps_force = false; priv->ps_force = false;
pPSC->bLeisurePs = true; psc->bLeisurePs = true;
} else { } else {
if (priv->rtllib->state == RTLLIB_LINKED) if (priv->rtllib->state == RTLLIB_LINKED)
rtl92e_leisure_ps_leave(dev); rtl92e_leisure_ps_leave(dev);
priv->ps_force = true; priv->ps_force = true;
pPSC->bLeisurePs = false; psc->bLeisurePs = false;
ieee->ps = *extra; ieee->ps = *extra;
} }
@ -188,15 +188,15 @@ static int _rtl92e_wx_set_lps_awake_interval(struct net_device *dev,
char *extra) char *extra)
{ {
struct r8192_priv *priv = rtllib_priv(dev); struct r8192_priv *priv = rtllib_priv(dev);
struct rt_pwr_save_ctrl *pPSC = (struct rt_pwr_save_ctrl *) struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
(&priv->rtllib->PowerSaveControl); (&priv->rtllib->pwr_save_ctrl);
mutex_lock(&priv->wx_mutex); mutex_lock(&priv->wx_mutex);
netdev_info(dev, "%s(): set lps awake interval ! extra is %d\n", netdev_info(dev, "%s(): set lps awake interval ! extra is %d\n",
__func__, *extra); __func__, *extra);
pPSC->RegMaxLPSAwakeIntvl = *extra; psc->reg_max_lps_awake_intvl = *extra;
mutex_unlock(&priv->wx_mutex); mutex_unlock(&priv->wx_mutex);
return 0; return 0;
} }
@ -251,23 +251,21 @@ static int _rtl92e_wx_set_mode(struct net_device *dev,
rt_state = priv->rtllib->rf_power_state; rt_state = priv->rtllib->rf_power_state;
mutex_lock(&priv->wx_mutex); mutex_lock(&priv->wx_mutex);
if (wrqu->mode == IW_MODE_ADHOC || wrqu->mode == IW_MODE_MONITOR || if (wrqu->mode == IW_MODE_ADHOC || wrqu->mode == IW_MODE_MONITOR ||
ieee->bNetPromiscuousMode) { ieee->net_promiscuous_md) {
if (priv->rtllib->PowerSaveControl.bInactivePs) { if (rt_state == rf_off) {
if (rt_state == rf_off) { if (priv->rtllib->rf_off_reason >
if (priv->rtllib->rf_off_reason > RF_CHANGE_BY_IPS) {
RF_CHANGE_BY_IPS) { netdev_warn(dev, "%s(): RF is OFF.\n",
netdev_warn(dev, "%s(): RF is OFF.\n",
__func__);
mutex_unlock(&priv->wx_mutex);
return -1;
}
netdev_info(dev,
"=========>%s(): rtl92e_ips_leave\n",
__func__); __func__);
mutex_lock(&priv->rtllib->ips_mutex); mutex_unlock(&priv->wx_mutex);
rtl92e_ips_leave(dev); return -1;
mutex_unlock(&priv->rtllib->ips_mutex);
} }
netdev_info(dev,
"=========>%s(): rtl92e_ips_leave\n",
__func__);
mutex_lock(&priv->rtllib->ips_mutex);
rtl92e_ips_leave(dev);
mutex_unlock(&priv->rtllib->ips_mutex);
} }
} }
ret = rtllib_wx_set_mode(priv->rtllib, a, wrqu, b); ret = rtllib_wx_set_mode(priv->rtllib, a, wrqu, b);
@ -395,7 +393,7 @@ static int _rtl92e_wx_set_scan(struct net_device *dev,
rt_state = priv->rtllib->rf_power_state; rt_state = priv->rtllib->rf_power_state;
if (!priv->up) if (!priv->up)
return -ENETDOWN; return -ENETDOWN;
if (priv->rtllib->LinkDetectInfo.bBusyTraffic == true) if (priv->rtllib->link_detect_info.bBusyTraffic == true)
return -EAGAIN; return -EAGAIN;
if (wrqu->data.flags & IW_SCAN_THIS_ESSID) { if (wrqu->data.flags & IW_SCAN_THIS_ESSID) {
@ -414,19 +412,17 @@ static int _rtl92e_wx_set_scan(struct net_device *dev,
priv->rtllib->FirstIe_InScan = true; priv->rtllib->FirstIe_InScan = true;
if (priv->rtllib->state != RTLLIB_LINKED) { if (priv->rtllib->state != RTLLIB_LINKED) {
if (priv->rtllib->PowerSaveControl.bInactivePs) { if (rt_state == rf_off) {
if (rt_state == rf_off) { if (priv->rtllib->rf_off_reason >
if (priv->rtllib->rf_off_reason > RF_CHANGE_BY_IPS) {
RF_CHANGE_BY_IPS) { netdev_warn(dev, "%s(): RF is OFF.\n",
netdev_warn(dev, "%s(): RF is OFF.\n", __func__);
__func__); mutex_unlock(&priv->wx_mutex);
mutex_unlock(&priv->wx_mutex); return -1;
return -1;
}
mutex_lock(&priv->rtllib->ips_mutex);
rtl92e_ips_leave(dev);
mutex_unlock(&priv->rtllib->ips_mutex);
} }
mutex_lock(&priv->rtllib->ips_mutex);
rtl92e_ips_leave(dev);
mutex_unlock(&priv->rtllib->ips_mutex);
} }
rtllib_stop_scan(priv->rtllib); rtllib_stop_scan(priv->rtllib);
if (priv->rtllib->LedControlHandler) if (priv->rtllib->LedControlHandler)
@ -919,7 +915,7 @@ static int _rtl92e_wx_set_encode_ext(struct net_device *dev,
key, 0); key, 0);
} else { } else {
if ((ieee->pairwise_key_type == KEY_TYPE_CCMP) && if ((ieee->pairwise_key_type == KEY_TYPE_CCMP) &&
ieee->pHTInfo->bCurrentHTSupport) ieee->ht_info->bCurrentHTSupport)
rtl92e_writeb(dev, 0x173, 1); rtl92e_writeb(dev, 0x173, 1);
rtl92e_set_key(dev, 4, idx, alg, rtl92e_set_key(dev, 4, idx, alg,
(u8 *)ieee->ap_mac_addr, 0, key); (u8 *)ieee->ap_mac_addr, 0, key);
@ -1018,29 +1014,29 @@ static int _rtl92e_wx_set_promisc_mode(struct net_device *dev,
u32 info_buf[3]; u32 info_buf[3];
u32 oid; u32 oid;
u32 bPromiscuousOn; u32 promiscuous_on;
u32 bFilterSourceStationFrame; u32 fltr_src_sta_frame;
if (copy_from_user(info_buf, wrqu->data.pointer, sizeof(info_buf))) if (copy_from_user(info_buf, wrqu->data.pointer, sizeof(info_buf)))
return -EFAULT; return -EFAULT;
oid = info_buf[0]; oid = info_buf[0];
bPromiscuousOn = info_buf[1]; promiscuous_on = info_buf[1];
bFilterSourceStationFrame = info_buf[2]; fltr_src_sta_frame = info_buf[2];
if (oid == OID_RT_INTEL_PROMISCUOUS_MODE) { if (oid == OID_RT_INTEL_PROMISCUOUS_MODE) {
ieee->IntelPromiscuousModeInfo.bPromiscuousOn = ieee->intel_promiscuous_md_info.promiscuous_on =
(bPromiscuousOn) ? (true) : (false); (promiscuous_on) ? (true) : (false);
ieee->IntelPromiscuousModeInfo.bFilterSourceStationFrame = ieee->intel_promiscuous_md_info.fltr_src_sta_frame =
(bFilterSourceStationFrame) ? (true) : (false); (fltr_src_sta_frame) ? (true) : (false);
(bPromiscuousOn) ? (promiscuous_on) ?
(rtllib_EnableIntelPromiscuousMode(dev, false)) : (rtllib_EnableIntelPromiscuousMode(dev, false)) :
(rtllib_DisableIntelPromiscuousMode(dev, false)); (rtllib_DisableIntelPromiscuousMode(dev, false));
netdev_info(dev, netdev_info(dev,
"=======>%s(), on = %d, filter src sta = %d\n", "=======>%s(), on = %d, filter src sta = %d\n",
__func__, bPromiscuousOn, __func__, promiscuous_on,
bFilterSourceStationFrame); fltr_src_sta_frame);
} else { } else {
return -1; return -1;
} }
@ -1058,8 +1054,8 @@ static int _rtl92e_wx_get_promisc_mode(struct net_device *dev,
mutex_lock(&priv->wx_mutex); mutex_lock(&priv->wx_mutex);
snprintf(extra, 45, "PromiscuousMode:%d, FilterSrcSTAFrame:%d", snprintf(extra, 45, "PromiscuousMode:%d, FilterSrcSTAFrame:%d",
ieee->IntelPromiscuousModeInfo.bPromiscuousOn, ieee->intel_promiscuous_md_info.promiscuous_on,
ieee->IntelPromiscuousModeInfo.bFilterSourceStationFrame); ieee->intel_promiscuous_md_info.fltr_src_sta_frame);
wrqu->data.length = strlen(extra) + 1; wrqu->data.length = strlen(extra) + 1;
mutex_unlock(&priv->wx_mutex); mutex_unlock(&priv->wx_mutex);

View File

@ -62,6 +62,7 @@ void ResetBaEntry(struct ba_record *pBA)
pBA->dialog_token = 0; pBA->dialog_token = 0;
pBA->ba_start_seq_ctrl.short_data = 0; pBA->ba_start_seq_ctrl.short_data = 0;
} }
static struct sk_buff *rtllib_ADDBA(struct rtllib_device *ieee, u8 *Dst, static struct sk_buff *rtllib_ADDBA(struct rtllib_device *ieee, u8 *Dst,
struct ba_record *pBA, struct ba_record *pBA,
u16 StatusCode, u8 type) u16 StatusCode, u8 type)
@ -111,7 +112,7 @@ static struct sk_buff *rtllib_ADDBA(struct rtllib_device *ieee, u8 *Dst,
tag += 2; tag += 2;
if (type == ACT_ADDBAREQ) { if (type == ACT_ADDBAREQ) {
memcpy(tag, (u8 *)&(pBA->ba_start_seq_ctrl), 2); memcpy(tag, (u8 *)&pBA->ba_start_seq_ctrl, 2);
tag += 2; tag += 2;
} }
@ -159,7 +160,6 @@ static struct sk_buff *rtllib_DELBA(struct rtllib_device *ieee, u8 *dst,
*tag++ = ACT_CAT_BA; *tag++ = ACT_CAT_BA;
*tag++ = ACT_DELBA; *tag++ = ACT_DELBA;
put_unaligned_le16(DelbaParamSet.short_data, tag); put_unaligned_le16(DelbaParamSet.short_data, tag);
tag += 2; tag += 2;
@ -180,11 +180,10 @@ static void rtllib_send_ADDBAReq(struct rtllib_device *ieee, u8 *dst,
skb = rtllib_ADDBA(ieee, dst, pBA, 0, ACT_ADDBAREQ); skb = rtllib_ADDBA(ieee, dst, pBA, 0, ACT_ADDBAREQ);
if (skb) { if (skb)
softmac_mgmt_xmit(skb, ieee); softmac_mgmt_xmit(skb, ieee);
} else { else
netdev_dbg(ieee->dev, "Failed to generate ADDBAReq packet.\n"); netdev_dbg(ieee->dev, "Failed to generate ADDBAReq packet.\n");
}
} }
static void rtllib_send_ADDBARsp(struct rtllib_device *ieee, u8 *dst, static void rtllib_send_ADDBARsp(struct rtllib_device *ieee, u8 *dst,
@ -245,17 +244,17 @@ int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct sk_buff *skb)
pBaStartSeqCtrl = (union sequence_control *)(req + 7); pBaStartSeqCtrl = (union sequence_control *)(req + 7);
if (!ieee->current_network.qos_data.active || if (!ieee->current_network.qos_data.active ||
!ieee->pHTInfo->bCurrentHTSupport || !ieee->ht_info->bCurrentHTSupport ||
(ieee->pHTInfo->iot_action & HT_IOT_ACT_REJECT_ADDBA_REQ)) { (ieee->ht_info->iot_action & HT_IOT_ACT_REJECT_ADDBA_REQ)) {
rc = ADDBA_STATUS_REFUSED; rc = ADDBA_STATUS_REFUSED;
netdev_warn(ieee->dev, netdev_warn(ieee->dev,
"Failed to reply on ADDBA_REQ as some capability is not ready(%d, %d)\n", "Failed to reply on ADDBA_REQ as some capability is not ready(%d, %d)\n",
ieee->current_network.qos_data.active, ieee->current_network.qos_data.active,
ieee->pHTInfo->bCurrentHTSupport); ieee->ht_info->bCurrentHTSupport);
goto OnADDBAReq_Fail; goto OnADDBAReq_Fail;
} }
if (!GetTs(ieee, (struct ts_common_info **)(&pTS), dst, if (!GetTs(ieee, (struct ts_common_info **)&pTS, dst,
(u8)(pBaParamSet->field.tid), RX_DIR, true)) { (u8)(pBaParamSet->field.tid), RX_DIR, true)) {
rc = ADDBA_STATUS_REFUSED; rc = ADDBA_STATUS_REFUSED;
netdev_warn(ieee->dev, "%s(): can't get TS\n", __func__); netdev_warn(ieee->dev, "%s(): can't get TS\n", __func__);
goto OnADDBAReq_Fail; goto OnADDBAReq_Fail;
@ -278,7 +277,7 @@ int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct sk_buff *skb)
pBA->ba_start_seq_ctrl = *pBaStartSeqCtrl; pBA->ba_start_seq_ctrl = *pBaStartSeqCtrl;
if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev) || if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev) ||
(ieee->pHTInfo->iot_action & HT_IOT_ACT_ALLOW_PEER_AGG_ONE_PKT)) (ieee->ht_info->iot_action & HT_IOT_ACT_ALLOW_PEER_AGG_ONE_PKT))
pBA->ba_param_set.field.buffer_size = 1; pBA->ba_param_set.field.buffer_size = 1;
else else
pBA->ba_param_set.field.buffer_size = 32; pBA->ba_param_set.field.buffer_size = 32;
@ -327,18 +326,18 @@ int rtllib_rx_ADDBARsp(struct rtllib_device *ieee, struct sk_buff *skb)
pBaTimeoutVal = (u16 *)(tag + 7); pBaTimeoutVal = (u16 *)(tag + 7);
if (!ieee->current_network.qos_data.active || if (!ieee->current_network.qos_data.active ||
!ieee->pHTInfo->bCurrentHTSupport || !ieee->ht_info->bCurrentHTSupport ||
!ieee->pHTInfo->bCurrentAMPDUEnable) { !ieee->ht_info->bCurrentAMPDUEnable) {
netdev_warn(ieee->dev, netdev_warn(ieee->dev,
"reject to ADDBA_RSP as some capability is not ready(%d, %d, %d)\n", "reject to ADDBA_RSP as some capability is not ready(%d, %d, %d)\n",
ieee->current_network.qos_data.active, ieee->current_network.qos_data.active,
ieee->pHTInfo->bCurrentHTSupport, ieee->ht_info->bCurrentHTSupport,
ieee->pHTInfo->bCurrentAMPDUEnable); ieee->ht_info->bCurrentAMPDUEnable);
ReasonCode = DELBA_REASON_UNKNOWN_BA; ReasonCode = DELBA_REASON_UNKNOWN_BA;
goto OnADDBARsp_Reject; goto OnADDBARsp_Reject;
} }
if (!GetTs(ieee, (struct ts_common_info **)(&pTS), dst, if (!GetTs(ieee, (struct ts_common_info **)&pTS, dst,
(u8)(pBaParamSet->field.tid), TX_DIR, false)) { (u8)(pBaParamSet->field.tid), TX_DIR, false)) {
netdev_warn(ieee->dev, "%s(): can't get TS\n", __func__); netdev_warn(ieee->dev, "%s(): can't get TS\n", __func__);
ReasonCode = DELBA_REASON_UNKNOWN_BA; ReasonCode = DELBA_REASON_UNKNOWN_BA;
@ -375,7 +374,6 @@ int rtllib_rx_ADDBARsp(struct rtllib_device *ieee, struct sk_buff *skb)
goto OnADDBARsp_Reject; goto OnADDBARsp_Reject;
} }
pAdmittedBA->dialog_token = *pDialogToken; pAdmittedBA->dialog_token = *pDialogToken;
pAdmittedBA->ba_timeout_value = *pBaTimeoutVal; pAdmittedBA->ba_timeout_value = *pBaTimeoutVal;
pAdmittedBA->ba_start_seq_ctrl = pPendingBA->ba_start_seq_ctrl; pAdmittedBA->ba_start_seq_ctrl = pPendingBA->ba_start_seq_ctrl;
@ -415,11 +413,11 @@ int rtllib_rx_DELBA(struct rtllib_device *ieee, struct sk_buff *skb)
} }
if (!ieee->current_network.qos_data.active || if (!ieee->current_network.qos_data.active ||
!ieee->pHTInfo->bCurrentHTSupport) { !ieee->ht_info->bCurrentHTSupport) {
netdev_warn(ieee->dev, netdev_warn(ieee->dev,
"received DELBA while QOS or HT is not supported(%d, %d)\n", "received DELBA while QOS or HT is not supported(%d, %d)\n",
ieee->current_network. qos_data.active, ieee->current_network. qos_data.active,
ieee->pHTInfo->bCurrentHTSupport); ieee->ht_info->bCurrentHTSupport);
return -1; return -1;
} }
@ -435,7 +433,7 @@ int rtllib_rx_DELBA(struct rtllib_device *ieee, struct sk_buff *skb)
struct rx_ts_record *pRxTs; struct rx_ts_record *pRxTs;
if (!GetTs(ieee, (struct ts_common_info **)&pRxTs, dst, if (!GetTs(ieee, (struct ts_common_info **)&pRxTs, dst,
(u8)pDelBaParamSet->field.tid, RX_DIR, false)) { (u8)pDelBaParamSet->field.tid, RX_DIR, false)) {
netdev_warn(ieee->dev, netdev_warn(ieee->dev,
"%s(): can't get TS for RXTS. dst:%pM TID:%d\n", "%s(): can't get TS for RXTS. dst:%pM TID:%d\n",
__func__, dst, __func__, dst,

View File

@ -96,7 +96,7 @@ enum ht_aggre_mode {
struct rt_hi_throughput { struct rt_hi_throughput {
u8 bEnableHT; u8 enable_ht;
u8 bCurrentHTSupport; u8 bCurrentHTSupport;
u8 bRegBW40MHz; u8 bRegBW40MHz;

View File

@ -69,47 +69,48 @@ static u8 LINKSYS_MARVELL_4400N[3] = {0x00, 0x14, 0xa4};
void HTUpdateDefaultSetting(struct rtllib_device *ieee) void HTUpdateDefaultSetting(struct rtllib_device *ieee)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
pHTInfo->bRegShortGI20MHz = 1;
pHTInfo->bRegShortGI40MHz = 1;
pHTInfo->bRegBW40MHz = 1; ht_info->bRegShortGI20MHz = 1;
ht_info->bRegShortGI40MHz = 1;
if (pHTInfo->bRegBW40MHz) ht_info->bRegBW40MHz = 1;
pHTInfo->bRegSuppCCK = 1;
if (ht_info->bRegBW40MHz)
ht_info->bRegSuppCCK = 1;
else else
pHTInfo->bRegSuppCCK = true; ht_info->bRegSuppCCK = true;
pHTInfo->nAMSDU_MaxSize = 7935UL; ht_info->nAMSDU_MaxSize = 7935UL;
pHTInfo->bAMSDU_Support = 0; ht_info->bAMSDU_Support = 0;
pHTInfo->bAMPDUEnable = 1; ht_info->bAMPDUEnable = 1;
pHTInfo->AMPDU_Factor = 2; ht_info->AMPDU_Factor = 2;
pHTInfo->MPDU_Density = 0; ht_info->MPDU_Density = 0;
pHTInfo->self_mimo_ps = 3; ht_info->self_mimo_ps = 3;
if (pHTInfo->self_mimo_ps == 2) if (ht_info->self_mimo_ps == 2)
pHTInfo->self_mimo_ps = 3; ht_info->self_mimo_ps = 3;
ieee->bTxDisableRateFallBack = 0; ieee->tx_dis_rate_fallback = 0;
ieee->bTxUseDriverAssingedRate = 0; ieee->tx_use_drv_assinged_rate = 0;
ieee->bTxEnableFwCalcDur = 1; ieee->bTxEnableFwCalcDur = 1;
pHTInfo->reg_rt2rt_aggregation = 1; ht_info->reg_rt2rt_aggregation = 1;
pHTInfo->reg_rx_reorder_enable = 1; ht_info->reg_rx_reorder_enable = 1;
pHTInfo->rx_reorder_win_size = 64; ht_info->rx_reorder_win_size = 64;
pHTInfo->rx_reorder_pending_time = 30; ht_info->rx_reorder_pending_time = 30;
} }
static u16 HTMcsToDataRate(struct rtllib_device *ieee, u8 nMcsRate) static u16 HTMcsToDataRate(struct rtllib_device *ieee, u8 nMcsRate)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
u8 is40MHz = (pHTInfo->bCurBW40MHz) ? 1 : 0; u8 is40MHz = (ht_info->bCurBW40MHz) ? 1 : 0;
u8 isShortGI = (pHTInfo->bCurBW40MHz) ? u8 isShortGI = (ht_info->bCurBW40MHz) ?
((pHTInfo->bCurShortGI40MHz) ? 1 : 0) : ((ht_info->bCurShortGI40MHz) ? 1 : 0) :
((pHTInfo->bCurShortGI20MHz) ? 1 : 0); ((ht_info->bCurShortGI20MHz) ? 1 : 0);
return MCS_DATA_RATE[is40MHz][isShortGI][(nMcsRate & 0x7f)]; return MCS_DATA_RATE[is40MHz][isShortGI][(nMcsRate & 0x7f)];
} }
@ -151,8 +152,8 @@ bool IsHTHalfNmodeAPs(struct rtllib_device *ieee)
(net->ralink_cap_exist)) (net->ralink_cap_exist))
retValue = true; retValue = true;
else if (!memcmp(net->bssid, UNKNOWN_BORADCOM, 3) || else if (!memcmp(net->bssid, UNKNOWN_BORADCOM, 3) ||
!memcmp(net->bssid, LINKSYSWRT330_LINKSYSWRT300_BROADCOM, 3) || !memcmp(net->bssid, LINKSYSWRT330_LINKSYSWRT300_BROADCOM, 3) ||
!memcmp(net->bssid, LINKSYSWRT350_LINKSYSWRT150_BROADCOM, 3) || !memcmp(net->bssid, LINKSYSWRT350_LINKSYSWRT150_BROADCOM, 3) ||
(net->broadcom_cap_exist)) (net->broadcom_cap_exist))
retValue = true; retValue = true;
else if (net->bssht.bd_rt2rt_aggregation) else if (net->bssht.bd_rt2rt_aggregation)
@ -165,45 +166,45 @@ bool IsHTHalfNmodeAPs(struct rtllib_device *ieee)
static void HTIOTPeerDetermine(struct rtllib_device *ieee) static void HTIOTPeerDetermine(struct rtllib_device *ieee)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
struct rtllib_network *net = &ieee->current_network; struct rtllib_network *net = &ieee->current_network;
if (net->bssht.bd_rt2rt_aggregation) { if (net->bssht.bd_rt2rt_aggregation) {
pHTInfo->IOTPeer = HT_IOT_PEER_REALTEK; ht_info->IOTPeer = HT_IOT_PEER_REALTEK;
if (net->bssht.rt2rt_ht_mode & RT_HT_CAP_USE_92SE) if (net->bssht.rt2rt_ht_mode & RT_HT_CAP_USE_92SE)
pHTInfo->IOTPeer = HT_IOT_PEER_REALTEK_92SE; ht_info->IOTPeer = HT_IOT_PEER_REALTEK_92SE;
if (net->bssht.rt2rt_ht_mode & RT_HT_CAP_USE_SOFTAP) if (net->bssht.rt2rt_ht_mode & RT_HT_CAP_USE_SOFTAP)
pHTInfo->IOTPeer = HT_IOT_PEER_92U_SOFTAP; ht_info->IOTPeer = HT_IOT_PEER_92U_SOFTAP;
} else if (net->broadcom_cap_exist) { } else if (net->broadcom_cap_exist) {
pHTInfo->IOTPeer = HT_IOT_PEER_BROADCOM; ht_info->IOTPeer = HT_IOT_PEER_BROADCOM;
} else if (!memcmp(net->bssid, UNKNOWN_BORADCOM, 3) || } else if (!memcmp(net->bssid, UNKNOWN_BORADCOM, 3) ||
!memcmp(net->bssid, LINKSYSWRT330_LINKSYSWRT300_BROADCOM, 3) || !memcmp(net->bssid, LINKSYSWRT330_LINKSYSWRT300_BROADCOM, 3) ||
!memcmp(net->bssid, LINKSYSWRT350_LINKSYSWRT150_BROADCOM, 3)) { !memcmp(net->bssid, LINKSYSWRT350_LINKSYSWRT150_BROADCOM, 3)) {
pHTInfo->IOTPeer = HT_IOT_PEER_BROADCOM; ht_info->IOTPeer = HT_IOT_PEER_BROADCOM;
} else if ((memcmp(net->bssid, BELKINF5D8233V1_RALINK, 3) == 0) || } else if ((memcmp(net->bssid, BELKINF5D8233V1_RALINK, 3) == 0) ||
(memcmp(net->bssid, BELKINF5D82334V3_RALINK, 3) == 0) || (memcmp(net->bssid, BELKINF5D82334V3_RALINK, 3) == 0) ||
(memcmp(net->bssid, PCI_RALINK, 3) == 0) || (memcmp(net->bssid, PCI_RALINK, 3) == 0) ||
(memcmp(net->bssid, EDIMAX_RALINK, 3) == 0) || (memcmp(net->bssid, EDIMAX_RALINK, 3) == 0) ||
(memcmp(net->bssid, AIRLINK_RALINK, 3) == 0) || (memcmp(net->bssid, AIRLINK_RALINK, 3) == 0) ||
net->ralink_cap_exist) { net->ralink_cap_exist) {
pHTInfo->IOTPeer = HT_IOT_PEER_RALINK; ht_info->IOTPeer = HT_IOT_PEER_RALINK;
} else if ((net->atheros_cap_exist) || } else if ((net->atheros_cap_exist) ||
(memcmp(net->bssid, DLINK_ATHEROS_1, 3) == 0) || (memcmp(net->bssid, DLINK_ATHEROS_1, 3) == 0) ||
(memcmp(net->bssid, DLINK_ATHEROS_2, 3) == 0)) { (memcmp(net->bssid, DLINK_ATHEROS_2, 3) == 0)) {
pHTInfo->IOTPeer = HT_IOT_PEER_ATHEROS; ht_info->IOTPeer = HT_IOT_PEER_ATHEROS;
} else if ((memcmp(net->bssid, CISCO_BROADCOM, 3) == 0) || } else if ((memcmp(net->bssid, CISCO_BROADCOM, 3) == 0) ||
net->cisco_cap_exist) { net->cisco_cap_exist) {
pHTInfo->IOTPeer = HT_IOT_PEER_CISCO; ht_info->IOTPeer = HT_IOT_PEER_CISCO;
} else if ((memcmp(net->bssid, LINKSYS_MARVELL_4400N, 3) == 0) || } else if ((memcmp(net->bssid, LINKSYS_MARVELL_4400N, 3) == 0) ||
net->marvell_cap_exist) { net->marvell_cap_exist) {
pHTInfo->IOTPeer = HT_IOT_PEER_MARVELL; ht_info->IOTPeer = HT_IOT_PEER_MARVELL;
} else if (net->airgo_cap_exist) { } else if (net->airgo_cap_exist) {
pHTInfo->IOTPeer = HT_IOT_PEER_AIRGO; ht_info->IOTPeer = HT_IOT_PEER_AIRGO;
} else { } else {
pHTInfo->IOTPeer = HT_IOT_PEER_UNKNOWN; ht_info->IOTPeer = HT_IOT_PEER_UNKNOWN;
} }
netdev_dbg(ieee->dev, "IOTPEER: %x\n", pHTInfo->IOTPeer); netdev_dbg(ieee->dev, "IOTPEER: %x\n", ht_info->IOTPeer);
} }
static u8 HTIOTActIsDisableMCS14(struct rtllib_device *ieee, u8 *PeerMacAddr) static u8 HTIOTActIsDisableMCS14(struct rtllib_device *ieee, u8 *PeerMacAddr)
@ -232,7 +233,7 @@ static u8 HTIOTActIsMgntUseCCK6M(struct rtllib_device *ieee,
{ {
u8 retValue = 0; u8 retValue = 0;
if (ieee->pHTInfo->IOTPeer == HT_IOT_PEER_BROADCOM) if (ieee->ht_info->IOTPeer == HT_IOT_PEER_BROADCOM)
retValue = 1; retValue = 1;
return retValue; return retValue;
@ -242,49 +243,49 @@ static u8 HTIOTActIsCCDFsync(struct rtllib_device *ieee)
{ {
u8 retValue = 0; u8 retValue = 0;
if (ieee->pHTInfo->IOTPeer == HT_IOT_PEER_BROADCOM) if (ieee->ht_info->IOTPeer == HT_IOT_PEER_BROADCOM)
retValue = 1; retValue = 1;
return retValue; return retValue;
} }
static void HTIOTActDetermineRaFunc(struct rtllib_device *ieee, bool bPeerRx2ss) static void HTIOTActDetermineRaFunc(struct rtllib_device *ieee, bool bPeerRx2ss)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
pHTInfo->iot_ra_func &= HT_IOT_RAFUNC_DISABLE_ALL; ht_info->iot_ra_func &= HT_IOT_RAFUNC_DISABLE_ALL;
if (pHTInfo->IOTPeer == HT_IOT_PEER_RALINK && !bPeerRx2ss) if (ht_info->IOTPeer == HT_IOT_PEER_RALINK && !bPeerRx2ss)
pHTInfo->iot_ra_func |= HT_IOT_RAFUNC_PEER_1R; ht_info->iot_ra_func |= HT_IOT_RAFUNC_PEER_1R;
if (pHTInfo->iot_action & HT_IOT_ACT_AMSDU_ENABLE) if (ht_info->iot_action & HT_IOT_ACT_AMSDU_ENABLE)
pHTInfo->iot_ra_func |= HT_IOT_RAFUNC_TX_AMSDU; ht_info->iot_ra_func |= HT_IOT_RAFUNC_TX_AMSDU;
} }
void HTResetIOTSetting(struct rt_hi_throughput *pHTInfo) void HTResetIOTSetting(struct rt_hi_throughput *ht_info)
{ {
pHTInfo->iot_action = 0; ht_info->iot_action = 0;
pHTInfo->IOTPeer = HT_IOT_PEER_UNKNOWN; ht_info->IOTPeer = HT_IOT_PEER_UNKNOWN;
pHTInfo->iot_ra_func = 0; ht_info->iot_ra_func = 0;
} }
void HTConstructCapabilityElement(struct rtllib_device *ieee, u8 *posHTCap, void HTConstructCapabilityElement(struct rtllib_device *ieee, u8 *posHTCap,
u8 *len, u8 IsEncrypt, bool bAssoc) u8 *len, u8 IsEncrypt, bool bAssoc)
{ {
struct rt_hi_throughput *pHT = ieee->pHTInfo; struct rt_hi_throughput *pHT = ieee->ht_info;
struct ht_capab_ele *pCapELE = NULL; struct ht_capab_ele *pCapELE = NULL;
if (!posHTCap || !pHT) { if (!posHTCap || !pHT) {
netdev_warn(ieee->dev, netdev_warn(ieee->dev,
"%s(): posHTCap and pHTInfo are null\n", __func__); "%s(): posHTCap and ht_info are null\n", __func__);
return; return;
} }
memset(posHTCap, 0, *len); memset(posHTCap, 0, *len);
if ((bAssoc) && (pHT->ePeerHTSpecVer == HT_SPEC_VER_EWC)) { if ((bAssoc) && (pHT->ePeerHTSpecVer == HT_SPEC_VER_EWC)) {
u8 EWC11NHTCap[] = {0x00, 0x90, 0x4c, 0x33}; static const u8 EWC11NHTCap[] = { 0x00, 0x90, 0x4c, 0x33 };
memcpy(posHTCap, EWC11NHTCap, sizeof(EWC11NHTCap)); memcpy(posHTCap, EWC11NHTCap, sizeof(EWC11NHTCap));
pCapELE = (struct ht_capab_ele *)&(posHTCap[4]); pCapELE = (struct ht_capab_ele *)&posHTCap[4];
*len = 30 + 2; *len = 30 + 2;
} else { } else {
pCapELE = (struct ht_capab_ele *)posHTCap; pCapELE = (struct ht_capab_ele *)posHTCap;
@ -322,7 +323,7 @@ void HTConstructCapabilityElement(struct rtllib_device *ieee, u8 *posHTCap,
pCapELE->MPDUDensity = 0; pCapELE->MPDUDensity = 0;
} }
memcpy(pCapELE->MCS, ieee->Regdot11HTOperationalRateSet, 16); memcpy(pCapELE->MCS, ieee->reg_dot11ht_oper_rate_set, 16);
memset(&pCapELE->ExtHTCapInfo, 0, 2); memset(&pCapELE->ExtHTCapInfo, 0, 2);
memset(pCapELE->TxBFCap, 0, 4); memset(pCapELE->TxBFCap, 0, 4);
@ -351,7 +352,7 @@ void HTConstructCapabilityElement(struct rtllib_device *ieee, u8 *posHTCap,
void HTConstructInfoElement(struct rtllib_device *ieee, u8 *posHTInfo, void HTConstructInfoElement(struct rtllib_device *ieee, u8 *posHTInfo,
u8 *len, u8 IsEncrypt) u8 *len, u8 IsEncrypt)
{ {
struct rt_hi_throughput *pHT = ieee->pHTInfo; struct rt_hi_throughput *pHT = ieee->ht_info;
struct ht_info_ele *pHTInfoEle = (struct ht_info_ele *)posHTInfo; struct ht_info_ele *pHTInfoEle = (struct ht_info_ele *)posHTInfo;
if (!posHTInfo || !pHTInfoEle) { if (!posHTInfo || !pHTInfoEle) {
@ -488,7 +489,7 @@ static u8 HTFilterMCSRate(struct rtllib_device *ieee, u8 *pSupportMCS,
u8 i; u8 i;
for (i = 0; i <= 15; i++) for (i = 0; i <= 15; i++)
pOperateMCS[i] = ieee->Regdot11TxHTOperationalRateSet[i] & pOperateMCS[i] = ieee->reg_dot11tx_ht_oper_rate_set[i] &
pSupportMCS[i]; pSupportMCS[i];
HT_PickMCSRate(ieee, pOperateMCS); HT_PickMCSRate(ieee, pOperateMCS);
@ -508,163 +509,159 @@ void HTSetConnectBwMode(struct rtllib_device *ieee,
void HTOnAssocRsp(struct rtllib_device *ieee) void HTOnAssocRsp(struct rtllib_device *ieee)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
struct ht_capab_ele *pPeerHTCap = NULL; struct ht_capab_ele *pPeerHTCap = NULL;
struct ht_info_ele *pPeerHTInfo = NULL; struct ht_info_ele *pPeerHTInfo = NULL;
u16 nMaxAMSDUSize = 0; u16 nMaxAMSDUSize = 0;
u8 *pMcsFilter = NULL; u8 *pMcsFilter = NULL;
static u8 EWC11NHTCap[] = {0x00, 0x90, 0x4c, 0x33}; static const u8 EWC11NHTCap[] = { 0x00, 0x90, 0x4c, 0x33 };
static u8 EWC11NHTInfo[] = {0x00, 0x90, 0x4c, 0x34}; static const u8 EWC11NHTInfo[] = { 0x00, 0x90, 0x4c, 0x34 };
if (!pHTInfo->bCurrentHTSupport) { if (!ht_info->bCurrentHTSupport) {
netdev_warn(ieee->dev, "%s(): HT_DISABLE\n", __func__); netdev_warn(ieee->dev, "%s(): HT_DISABLE\n", __func__);
return; return;
} }
netdev_dbg(ieee->dev, "%s(): HT_ENABLE\n", __func__); netdev_dbg(ieee->dev, "%s(): HT_ENABLE\n", __func__);
if (!memcmp(pHTInfo->PeerHTCapBuf, EWC11NHTCap, sizeof(EWC11NHTCap))) if (!memcmp(ht_info->PeerHTCapBuf, EWC11NHTCap, sizeof(EWC11NHTCap)))
pPeerHTCap = (struct ht_capab_ele *)(&pHTInfo->PeerHTCapBuf[4]); pPeerHTCap = (struct ht_capab_ele *)(&ht_info->PeerHTCapBuf[4]);
else else
pPeerHTCap = (struct ht_capab_ele *)(pHTInfo->PeerHTCapBuf); pPeerHTCap = (struct ht_capab_ele *)(ht_info->PeerHTCapBuf);
if (!memcmp(pHTInfo->PeerHTInfoBuf, EWC11NHTInfo, sizeof(EWC11NHTInfo))) if (!memcmp(ht_info->PeerHTInfoBuf, EWC11NHTInfo, sizeof(EWC11NHTInfo)))
pPeerHTInfo = (struct ht_info_ele *) pPeerHTInfo = (struct ht_info_ele *)
(&pHTInfo->PeerHTInfoBuf[4]); (&ht_info->PeerHTInfoBuf[4]);
else else
pPeerHTInfo = (struct ht_info_ele *)(pHTInfo->PeerHTInfoBuf); pPeerHTInfo = (struct ht_info_ele *)(ht_info->PeerHTInfoBuf);
#ifdef VERBOSE_DEBUG #ifdef VERBOSE_DEBUG
print_hex_dump_bytes("%s: ", __func__, DUMP_PREFIX_NONE, print_hex_dump_bytes("%s: ", __func__, DUMP_PREFIX_NONE,
pPeerHTCap, sizeof(struct ht_capab_ele)); pPeerHTCap, sizeof(struct ht_capab_ele));
#endif #endif
HTSetConnectBwMode(ieee, (enum ht_channel_width)(pPeerHTCap->ChlWidth), HTSetConnectBwMode(ieee, (enum ht_channel_width)(pPeerHTCap->ChlWidth),
(enum ht_extchnl_offset)(pPeerHTInfo->ExtChlOffset)); (enum ht_extchnl_offset)(pPeerHTInfo->ExtChlOffset));
pHTInfo->cur_tx_bw40mhz = ((pPeerHTInfo->RecommemdedTxWidth == 1) ? ht_info->cur_tx_bw40mhz = ((pPeerHTInfo->RecommemdedTxWidth == 1) ?
true : false); true : false);
pHTInfo->bCurShortGI20MHz = ((pHTInfo->bRegShortGI20MHz) ? ht_info->bCurShortGI20MHz = ((ht_info->bRegShortGI20MHz) ?
((pPeerHTCap->ShortGI20Mhz == 1) ? ((pPeerHTCap->ShortGI20Mhz == 1) ?
true : false) : false); true : false) : false);
pHTInfo->bCurShortGI40MHz = ((pHTInfo->bRegShortGI40MHz) ? ht_info->bCurShortGI40MHz = ((ht_info->bRegShortGI40MHz) ?
((pPeerHTCap->ShortGI40Mhz == 1) ? ((pPeerHTCap->ShortGI40Mhz == 1) ?
true : false) : false); true : false) : false);
pHTInfo->bCurSuppCCK = ((pHTInfo->bRegSuppCCK) ? ht_info->bCurSuppCCK = ((ht_info->bRegSuppCCK) ?
((pPeerHTCap->DssCCk == 1) ? true : ((pPeerHTCap->DssCCk == 1) ? true :
false) : false); false) : false);
pHTInfo->bCurrent_AMSDU_Support = pHTInfo->bAMSDU_Support; ht_info->bCurrent_AMSDU_Support = ht_info->bAMSDU_Support;
nMaxAMSDUSize = (pPeerHTCap->MaxAMSDUSize == 0) ? 3839 : 7935; nMaxAMSDUSize = (pPeerHTCap->MaxAMSDUSize == 0) ? 3839 : 7935;
if (pHTInfo->nAMSDU_MaxSize > nMaxAMSDUSize) if (ht_info->nAMSDU_MaxSize > nMaxAMSDUSize)
pHTInfo->nCurrent_AMSDU_MaxSize = nMaxAMSDUSize; ht_info->nCurrent_AMSDU_MaxSize = nMaxAMSDUSize;
else else
pHTInfo->nCurrent_AMSDU_MaxSize = pHTInfo->nAMSDU_MaxSize; ht_info->nCurrent_AMSDU_MaxSize = ht_info->nAMSDU_MaxSize;
pHTInfo->bCurrentAMPDUEnable = pHTInfo->bAMPDUEnable; ht_info->bCurrentAMPDUEnable = ht_info->bAMPDUEnable;
if (ieee->rtllib_ap_sec_type && if (ieee->rtllib_ap_sec_type &&
(ieee->rtllib_ap_sec_type(ieee) & (SEC_ALG_WEP | SEC_ALG_TKIP))) { (ieee->rtllib_ap_sec_type(ieee) & (SEC_ALG_WEP | SEC_ALG_TKIP))) {
if ((pHTInfo->IOTPeer == HT_IOT_PEER_ATHEROS) || if ((ht_info->IOTPeer == HT_IOT_PEER_ATHEROS) ||
(pHTInfo->IOTPeer == HT_IOT_PEER_UNKNOWN)) (ht_info->IOTPeer == HT_IOT_PEER_UNKNOWN))
pHTInfo->bCurrentAMPDUEnable = false; ht_info->bCurrentAMPDUEnable = false;
} }
if (!pHTInfo->reg_rt2rt_aggregation) { if (!ht_info->reg_rt2rt_aggregation) {
if (pHTInfo->AMPDU_Factor > pPeerHTCap->MaxRxAMPDUFactor) if (ht_info->AMPDU_Factor > pPeerHTCap->MaxRxAMPDUFactor)
pHTInfo->CurrentAMPDUFactor = ht_info->CurrentAMPDUFactor =
pPeerHTCap->MaxRxAMPDUFactor; pPeerHTCap->MaxRxAMPDUFactor;
else else
pHTInfo->CurrentAMPDUFactor = pHTInfo->AMPDU_Factor; ht_info->CurrentAMPDUFactor = ht_info->AMPDU_Factor;
} else { } else {
if (ieee->current_network.bssht.bd_rt2rt_aggregation) { if (ieee->current_network.bssht.bd_rt2rt_aggregation) {
if (ieee->pairwise_key_type != KEY_TYPE_NA) if (ieee->pairwise_key_type != KEY_TYPE_NA)
pHTInfo->CurrentAMPDUFactor = ht_info->CurrentAMPDUFactor =
pPeerHTCap->MaxRxAMPDUFactor; pPeerHTCap->MaxRxAMPDUFactor;
else else
pHTInfo->CurrentAMPDUFactor = HT_AGG_SIZE_64K; ht_info->CurrentAMPDUFactor = HT_AGG_SIZE_64K;
} else { } else {
if (pPeerHTCap->MaxRxAMPDUFactor < HT_AGG_SIZE_32K) ht_info->CurrentAMPDUFactor = min_t(u32, pPeerHTCap->MaxRxAMPDUFactor,
pHTInfo->CurrentAMPDUFactor = HT_AGG_SIZE_32K);
pPeerHTCap->MaxRxAMPDUFactor;
else
pHTInfo->CurrentAMPDUFactor = HT_AGG_SIZE_32K;
} }
} }
if (pHTInfo->MPDU_Density > pPeerHTCap->MPDUDensity) ht_info->current_mpdu_density = max_t(u8, ht_info->MPDU_Density,
pHTInfo->current_mpdu_density = pHTInfo->MPDU_Density; pPeerHTCap->MPDUDensity);
else if (ht_info->iot_action & HT_IOT_ACT_TX_USE_AMSDU_8K) {
pHTInfo->current_mpdu_density = pPeerHTCap->MPDUDensity; ht_info->bCurrentAMPDUEnable = false;
if (pHTInfo->iot_action & HT_IOT_ACT_TX_USE_AMSDU_8K) { ht_info->ForcedAMSDUMode = HT_AGG_FORCE_ENABLE;
pHTInfo->bCurrentAMPDUEnable = false;
pHTInfo->ForcedAMSDUMode = HT_AGG_FORCE_ENABLE;
} }
pHTInfo->cur_rx_reorder_enable = pHTInfo->reg_rx_reorder_enable; ht_info->cur_rx_reorder_enable = ht_info->reg_rx_reorder_enable;
if (pPeerHTCap->MCS[0] == 0) if (pPeerHTCap->MCS[0] == 0)
pPeerHTCap->MCS[0] = 0xff; pPeerHTCap->MCS[0] = 0xff;
HTIOTActDetermineRaFunc(ieee, ((pPeerHTCap->MCS[1]) != 0)); HTIOTActDetermineRaFunc(ieee, ((pPeerHTCap->MCS[1]) != 0));
HTFilterMCSRate(ieee, pPeerHTCap->MCS, ieee->dot11HTOperationalRateSet); HTFilterMCSRate(ieee, pPeerHTCap->MCS, ieee->dot11ht_oper_rate_set);
pHTInfo->peer_mimo_ps = pPeerHTCap->MimoPwrSave; ht_info->peer_mimo_ps = pPeerHTCap->MimoPwrSave;
if (pHTInfo->peer_mimo_ps == MIMO_PS_STATIC) if (ht_info->peer_mimo_ps == MIMO_PS_STATIC)
pMcsFilter = MCS_FILTER_1SS; pMcsFilter = MCS_FILTER_1SS;
else else
pMcsFilter = MCS_FILTER_ALL; pMcsFilter = MCS_FILTER_ALL;
ieee->HTHighestOperaRate = HTGetHighestMCSRate(ieee, ieee->HTHighestOperaRate = HTGetHighestMCSRate(ieee,
ieee->dot11HTOperationalRateSet, pMcsFilter); ieee->dot11ht_oper_rate_set,
pMcsFilter);
ieee->HTCurrentOperaRate = ieee->HTHighestOperaRate; ieee->HTCurrentOperaRate = ieee->HTHighestOperaRate;
pHTInfo->current_op_mode = pPeerHTInfo->OptMode; ht_info->current_op_mode = pPeerHTInfo->OptMode;
} }
void HTInitializeHTInfo(struct rtllib_device *ieee) void HTInitializeHTInfo(struct rtllib_device *ieee)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
pHTInfo->bCurrentHTSupport = false; ht_info->bCurrentHTSupport = false;
pHTInfo->bCurBW40MHz = false; ht_info->bCurBW40MHz = false;
pHTInfo->cur_tx_bw40mhz = false; ht_info->cur_tx_bw40mhz = false;
pHTInfo->bCurShortGI20MHz = false; ht_info->bCurShortGI20MHz = false;
pHTInfo->bCurShortGI40MHz = false; ht_info->bCurShortGI40MHz = false;
pHTInfo->forced_short_gi = false; ht_info->forced_short_gi = false;
pHTInfo->bCurSuppCCK = true; ht_info->bCurSuppCCK = true;
pHTInfo->bCurrent_AMSDU_Support = false; ht_info->bCurrent_AMSDU_Support = false;
pHTInfo->nCurrent_AMSDU_MaxSize = pHTInfo->nAMSDU_MaxSize; ht_info->nCurrent_AMSDU_MaxSize = ht_info->nAMSDU_MaxSize;
pHTInfo->current_mpdu_density = pHTInfo->MPDU_Density; ht_info->current_mpdu_density = ht_info->MPDU_Density;
pHTInfo->CurrentAMPDUFactor = pHTInfo->AMPDU_Factor; ht_info->CurrentAMPDUFactor = ht_info->AMPDU_Factor;
memset((void *)(&(pHTInfo->SelfHTCap)), 0, memset((void *)(&ht_info->SelfHTCap), 0,
sizeof(pHTInfo->SelfHTCap)); sizeof(ht_info->SelfHTCap));
memset((void *)(&(pHTInfo->SelfHTInfo)), 0, memset((void *)(&ht_info->SelfHTInfo), 0,
sizeof(pHTInfo->SelfHTInfo)); sizeof(ht_info->SelfHTInfo));
memset((void *)(&(pHTInfo->PeerHTCapBuf)), 0, memset((void *)(&ht_info->PeerHTCapBuf), 0,
sizeof(pHTInfo->PeerHTCapBuf)); sizeof(ht_info->PeerHTCapBuf));
memset((void *)(&(pHTInfo->PeerHTInfoBuf)), 0, memset((void *)(&ht_info->PeerHTInfoBuf), 0,
sizeof(pHTInfo->PeerHTInfoBuf)); sizeof(ht_info->PeerHTInfoBuf));
pHTInfo->sw_bw_in_progress = false; ht_info->sw_bw_in_progress = false;
pHTInfo->ePeerHTSpecVer = HT_SPEC_VER_IEEE; ht_info->ePeerHTSpecVer = HT_SPEC_VER_IEEE;
pHTInfo->current_rt2rt_aggregation = false; ht_info->current_rt2rt_aggregation = false;
pHTInfo->current_rt2rt_long_slot_time = false; ht_info->current_rt2rt_long_slot_time = false;
pHTInfo->RT2RT_HT_Mode = (enum rt_ht_capability)0; ht_info->RT2RT_HT_Mode = (enum rt_ht_capability)0;
pHTInfo->IOTPeer = 0; ht_info->IOTPeer = 0;
pHTInfo->iot_action = 0; ht_info->iot_action = 0;
pHTInfo->iot_ra_func = 0; ht_info->iot_ra_func = 0;
{ {
u8 *RegHTSuppRateSets = &(ieee->RegHTSuppRateSet[0]); u8 *RegHTSuppRateSets = &ieee->reg_ht_supp_rate_set[0];
RegHTSuppRateSets[0] = 0xFF; RegHTSuppRateSets[0] = 0xFF;
RegHTSuppRateSets[1] = 0xFF; RegHTSuppRateSets[1] = 0xFF;
@ -690,130 +687,130 @@ void HTInitializeBssDesc(struct bss_ht *pBssHT)
void HTResetSelfAndSavePeerSetting(struct rtllib_device *ieee, void HTResetSelfAndSavePeerSetting(struct rtllib_device *ieee,
struct rtllib_network *pNetwork) struct rtllib_network *pNetwork)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
u8 bIOTAction = 0; u8 bIOTAction = 0;
/* unmark bEnableHT flag here is the same reason why unmarked in /* unmark enable_ht flag here is the same reason why unmarked in
* function rtllib_softmac_new_net. WB 2008.09.10 * function rtllib_softmac_new_net. WB 2008.09.10
*/ */
if (pNetwork->bssht.bd_support_ht) { if (pNetwork->bssht.bd_support_ht) {
pHTInfo->bCurrentHTSupport = true; ht_info->bCurrentHTSupport = true;
pHTInfo->ePeerHTSpecVer = pNetwork->bssht.bd_ht_spec_ver; ht_info->ePeerHTSpecVer = pNetwork->bssht.bd_ht_spec_ver;
if (pNetwork->bssht.bd_ht_cap_len > 0 && if (pNetwork->bssht.bd_ht_cap_len > 0 &&
pNetwork->bssht.bd_ht_cap_len <= sizeof(pHTInfo->PeerHTCapBuf)) pNetwork->bssht.bd_ht_cap_len <= sizeof(ht_info->PeerHTCapBuf))
memcpy(pHTInfo->PeerHTCapBuf, memcpy(ht_info->PeerHTCapBuf,
pNetwork->bssht.bd_ht_cap_buf, pNetwork->bssht.bd_ht_cap_buf,
pNetwork->bssht.bd_ht_cap_len); pNetwork->bssht.bd_ht_cap_len);
if (pNetwork->bssht.bd_ht_info_len > 0 && if (pNetwork->bssht.bd_ht_info_len > 0 &&
pNetwork->bssht.bd_ht_info_len <= pNetwork->bssht.bd_ht_info_len <=
sizeof(pHTInfo->PeerHTInfoBuf)) sizeof(ht_info->PeerHTInfoBuf))
memcpy(pHTInfo->PeerHTInfoBuf, memcpy(ht_info->PeerHTInfoBuf,
pNetwork->bssht.bd_ht_info_buf, pNetwork->bssht.bd_ht_info_buf,
pNetwork->bssht.bd_ht_info_len); pNetwork->bssht.bd_ht_info_len);
if (pHTInfo->reg_rt2rt_aggregation) { if (ht_info->reg_rt2rt_aggregation) {
pHTInfo->current_rt2rt_aggregation = ht_info->current_rt2rt_aggregation =
pNetwork->bssht.bd_rt2rt_aggregation; pNetwork->bssht.bd_rt2rt_aggregation;
pHTInfo->current_rt2rt_long_slot_time = ht_info->current_rt2rt_long_slot_time =
pNetwork->bssht.bd_rt2rt_long_slot_time; pNetwork->bssht.bd_rt2rt_long_slot_time;
pHTInfo->RT2RT_HT_Mode = pNetwork->bssht.rt2rt_ht_mode; ht_info->RT2RT_HT_Mode = pNetwork->bssht.rt2rt_ht_mode;
} else { } else {
pHTInfo->current_rt2rt_aggregation = false; ht_info->current_rt2rt_aggregation = false;
pHTInfo->current_rt2rt_long_slot_time = false; ht_info->current_rt2rt_long_slot_time = false;
pHTInfo->RT2RT_HT_Mode = (enum rt_ht_capability)0; ht_info->RT2RT_HT_Mode = (enum rt_ht_capability)0;
} }
HTIOTPeerDetermine(ieee); HTIOTPeerDetermine(ieee);
pHTInfo->iot_action = 0; ht_info->iot_action = 0;
bIOTAction = HTIOTActIsDisableMCS14(ieee, pNetwork->bssid); bIOTAction = HTIOTActIsDisableMCS14(ieee, pNetwork->bssid);
if (bIOTAction) if (bIOTAction)
pHTInfo->iot_action |= HT_IOT_ACT_DISABLE_MCS14; ht_info->iot_action |= HT_IOT_ACT_DISABLE_MCS14;
bIOTAction = HTIOTActIsDisableMCS15(ieee); bIOTAction = HTIOTActIsDisableMCS15(ieee);
if (bIOTAction) if (bIOTAction)
pHTInfo->iot_action |= HT_IOT_ACT_DISABLE_MCS15; ht_info->iot_action |= HT_IOT_ACT_DISABLE_MCS15;
bIOTAction = HTIOTActIsDisableMCSTwoSpatialStream(ieee); bIOTAction = HTIOTActIsDisableMCSTwoSpatialStream(ieee);
if (bIOTAction) if (bIOTAction)
pHTInfo->iot_action |= HT_IOT_ACT_DISABLE_ALL_2SS; ht_info->iot_action |= HT_IOT_ACT_DISABLE_ALL_2SS;
bIOTAction = HTIOTActIsDisableEDCATurbo(ieee, pNetwork->bssid); bIOTAction = HTIOTActIsDisableEDCATurbo(ieee, pNetwork->bssid);
if (bIOTAction) if (bIOTAction)
pHTInfo->iot_action |= HT_IOT_ACT_DISABLE_EDCA_TURBO; ht_info->iot_action |= HT_IOT_ACT_DISABLE_EDCA_TURBO;
bIOTAction = HTIOTActIsMgntUseCCK6M(ieee, pNetwork); bIOTAction = HTIOTActIsMgntUseCCK6M(ieee, pNetwork);
if (bIOTAction) if (bIOTAction)
pHTInfo->iot_action |= HT_IOT_ACT_MGNT_USE_CCK_6M; ht_info->iot_action |= HT_IOT_ACT_MGNT_USE_CCK_6M;
bIOTAction = HTIOTActIsCCDFsync(ieee); bIOTAction = HTIOTActIsCCDFsync(ieee);
if (bIOTAction) if (bIOTAction)
pHTInfo->iot_action |= HT_IOT_ACT_CDD_FSYNC; ht_info->iot_action |= HT_IOT_ACT_CDD_FSYNC;
} else { } else {
pHTInfo->bCurrentHTSupport = false; ht_info->bCurrentHTSupport = false;
pHTInfo->current_rt2rt_aggregation = false; ht_info->current_rt2rt_aggregation = false;
pHTInfo->current_rt2rt_long_slot_time = false; ht_info->current_rt2rt_long_slot_time = false;
pHTInfo->RT2RT_HT_Mode = (enum rt_ht_capability)0; ht_info->RT2RT_HT_Mode = (enum rt_ht_capability)0;
pHTInfo->iot_action = 0; ht_info->iot_action = 0;
pHTInfo->iot_ra_func = 0; ht_info->iot_ra_func = 0;
} }
} }
void HT_update_self_and_peer_setting(struct rtllib_device *ieee, void HT_update_self_and_peer_setting(struct rtllib_device *ieee,
struct rtllib_network *pNetwork) struct rtllib_network *pNetwork)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
struct ht_info_ele *pPeerHTInfo = struct ht_info_ele *pPeerHTInfo =
(struct ht_info_ele *)pNetwork->bssht.bd_ht_info_buf; (struct ht_info_ele *)pNetwork->bssht.bd_ht_info_buf;
if (pHTInfo->bCurrentHTSupport) { if (ht_info->bCurrentHTSupport) {
if (pNetwork->bssht.bd_ht_info_len != 0) if (pNetwork->bssht.bd_ht_info_len != 0)
pHTInfo->current_op_mode = pPeerHTInfo->OptMode; ht_info->current_op_mode = pPeerHTInfo->OptMode;
} }
} }
EXPORT_SYMBOL(HT_update_self_and_peer_setting); EXPORT_SYMBOL(HT_update_self_and_peer_setting);
void HTUseDefaultSetting(struct rtllib_device *ieee) void HTUseDefaultSetting(struct rtllib_device *ieee)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
if (pHTInfo->bEnableHT) { if (ht_info->enable_ht) {
pHTInfo->bCurrentHTSupport = true; ht_info->bCurrentHTSupport = true;
pHTInfo->bCurSuppCCK = pHTInfo->bRegSuppCCK; ht_info->bCurSuppCCK = ht_info->bRegSuppCCK;
pHTInfo->bCurBW40MHz = pHTInfo->bRegBW40MHz; ht_info->bCurBW40MHz = ht_info->bRegBW40MHz;
pHTInfo->bCurShortGI20MHz = pHTInfo->bRegShortGI20MHz; ht_info->bCurShortGI20MHz = ht_info->bRegShortGI20MHz;
pHTInfo->bCurShortGI40MHz = pHTInfo->bRegShortGI40MHz; ht_info->bCurShortGI40MHz = ht_info->bRegShortGI40MHz;
if (ieee->iw_mode == IW_MODE_ADHOC) if (ieee->iw_mode == IW_MODE_ADHOC)
ieee->current_network.qos_data.active = ieee->current_network.qos_data.active =
ieee->current_network.qos_data.supported; ieee->current_network.qos_data.supported;
pHTInfo->bCurrent_AMSDU_Support = pHTInfo->bAMSDU_Support; ht_info->bCurrent_AMSDU_Support = ht_info->bAMSDU_Support;
pHTInfo->nCurrent_AMSDU_MaxSize = pHTInfo->nAMSDU_MaxSize; ht_info->nCurrent_AMSDU_MaxSize = ht_info->nAMSDU_MaxSize;
pHTInfo->bCurrentAMPDUEnable = pHTInfo->bAMPDUEnable; ht_info->bCurrentAMPDUEnable = ht_info->bAMPDUEnable;
pHTInfo->CurrentAMPDUFactor = pHTInfo->AMPDU_Factor; ht_info->CurrentAMPDUFactor = ht_info->AMPDU_Factor;
pHTInfo->current_mpdu_density = pHTInfo->current_mpdu_density; ht_info->current_mpdu_density = ht_info->current_mpdu_density;
HTFilterMCSRate(ieee, ieee->Regdot11TxHTOperationalRateSet, HTFilterMCSRate(ieee, ieee->reg_dot11tx_ht_oper_rate_set,
ieee->dot11HTOperationalRateSet); ieee->dot11ht_oper_rate_set);
ieee->HTHighestOperaRate = HTGetHighestMCSRate(ieee, ieee->HTHighestOperaRate = HTGetHighestMCSRate(ieee,
ieee->dot11HTOperationalRateSet, ieee->dot11ht_oper_rate_set,
MCS_FILTER_ALL); MCS_FILTER_ALL);
ieee->HTCurrentOperaRate = ieee->HTHighestOperaRate; ieee->HTCurrentOperaRate = ieee->HTHighestOperaRate;
} else { } else {
pHTInfo->bCurrentHTSupport = false; ht_info->bCurrentHTSupport = false;
} }
} }
u8 HTCCheck(struct rtllib_device *ieee, u8 *pFrame) u8 HTCCheck(struct rtllib_device *ieee, u8 *pFrame)
{ {
if (ieee->pHTInfo->bCurrentHTSupport) { if (ieee->ht_info->bCurrentHTSupport) {
if ((IsQoSDataFrame(pFrame) && Frame_Order(pFrame)) == 1) { if ((IsQoSDataFrame(pFrame) && Frame_Order(pFrame)) == 1) {
netdev_dbg(ieee->dev, "HT CONTROL FILED EXIST!!\n"); netdev_dbg(ieee->dev, "HT CONTROL FILED EXIST!!\n");
return true; return true;
@ -824,13 +821,13 @@ u8 HTCCheck(struct rtllib_device *ieee, u8 *pFrame)
static void HTSetConnectBwModeCallback(struct rtllib_device *ieee) static void HTSetConnectBwModeCallback(struct rtllib_device *ieee)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
if (pHTInfo->bCurBW40MHz) { if (ht_info->bCurBW40MHz) {
if (pHTInfo->CurSTAExtChnlOffset == HT_EXTCHNL_OFFSET_UPPER) if (ht_info->CurSTAExtChnlOffset == HT_EXTCHNL_OFFSET_UPPER)
ieee->set_chan(ieee->dev, ieee->set_chan(ieee->dev,
ieee->current_network.channel + 2); ieee->current_network.channel + 2);
else if (pHTInfo->CurSTAExtChnlOffset == else if (ht_info->CurSTAExtChnlOffset ==
HT_EXTCHNL_OFFSET_LOWER) HT_EXTCHNL_OFFSET_LOWER)
ieee->set_chan(ieee->dev, ieee->set_chan(ieee->dev,
ieee->current_network.channel - 2); ieee->current_network.channel - 2);
@ -839,29 +836,29 @@ static void HTSetConnectBwModeCallback(struct rtllib_device *ieee)
ieee->current_network.channel); ieee->current_network.channel);
ieee->SetBWModeHandler(ieee->dev, HT_CHANNEL_WIDTH_20_40, ieee->SetBWModeHandler(ieee->dev, HT_CHANNEL_WIDTH_20_40,
pHTInfo->CurSTAExtChnlOffset); ht_info->CurSTAExtChnlOffset);
} else { } else {
ieee->set_chan(ieee->dev, ieee->current_network.channel); ieee->set_chan(ieee->dev, ieee->current_network.channel);
ieee->SetBWModeHandler(ieee->dev, HT_CHANNEL_WIDTH_20, ieee->SetBWModeHandler(ieee->dev, HT_CHANNEL_WIDTH_20,
HT_EXTCHNL_OFFSET_NO_EXT); HT_EXTCHNL_OFFSET_NO_EXT);
} }
pHTInfo->sw_bw_in_progress = false; ht_info->sw_bw_in_progress = false;
} }
void HTSetConnectBwMode(struct rtllib_device *ieee, void HTSetConnectBwMode(struct rtllib_device *ieee,
enum ht_channel_width bandwidth, enum ht_channel_width bandwidth,
enum ht_extchnl_offset Offset) enum ht_extchnl_offset Offset)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
if (!pHTInfo->bRegBW40MHz) if (!ht_info->bRegBW40MHz)
return; return;
if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev)) if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev))
bandwidth = HT_CHANNEL_WIDTH_20; bandwidth = HT_CHANNEL_WIDTH_20;
if (pHTInfo->sw_bw_in_progress) { if (ht_info->sw_bw_in_progress) {
pr_info("%s: sw_bw_in_progress!!\n", __func__); pr_info("%s: sw_bw_in_progress!!\n", __func__);
return; return;
} }
@ -871,21 +868,21 @@ void HTSetConnectBwMode(struct rtllib_device *ieee,
Offset = HT_EXTCHNL_OFFSET_NO_EXT; Offset = HT_EXTCHNL_OFFSET_NO_EXT;
if (Offset == HT_EXTCHNL_OFFSET_UPPER || if (Offset == HT_EXTCHNL_OFFSET_UPPER ||
Offset == HT_EXTCHNL_OFFSET_LOWER) { Offset == HT_EXTCHNL_OFFSET_LOWER) {
pHTInfo->bCurBW40MHz = true; ht_info->bCurBW40MHz = true;
pHTInfo->CurSTAExtChnlOffset = Offset; ht_info->CurSTAExtChnlOffset = Offset;
} else { } else {
pHTInfo->bCurBW40MHz = false; ht_info->bCurBW40MHz = false;
pHTInfo->CurSTAExtChnlOffset = HT_EXTCHNL_OFFSET_NO_EXT; ht_info->CurSTAExtChnlOffset = HT_EXTCHNL_OFFSET_NO_EXT;
} }
} else { } else {
pHTInfo->bCurBW40MHz = false; ht_info->bCurBW40MHz = false;
pHTInfo->CurSTAExtChnlOffset = HT_EXTCHNL_OFFSET_NO_EXT; ht_info->CurSTAExtChnlOffset = HT_EXTCHNL_OFFSET_NO_EXT;
} }
netdev_dbg(ieee->dev, "%s():pHTInfo->bCurBW40MHz:%x\n", __func__, netdev_dbg(ieee->dev, "%s():ht_info->bCurBW40MHz:%x\n", __func__,
pHTInfo->bCurBW40MHz); ht_info->bCurBW40MHz);
pHTInfo->sw_bw_in_progress = true; ht_info->sw_bw_in_progress = true;
HTSetConnectBwModeCallback(ieee); HTSetConnectBwModeCallback(ieee);
} }

View File

@ -97,13 +97,6 @@ enum direction_value {
DIR_BI_DIR = 3, DIR_BI_DIR = 3,
}; };
enum acm_method {
eAcmWay0_SwAndHw = 0,
eAcmWay1_HW = 1,
eAcmWay2_SW = 2,
};
struct acm { struct acm {
u64 UsedTime; u64 UsedTime;
u64 MediumTime; u64 MediumTime;

View File

@ -83,7 +83,7 @@ static void RxPktPendingTimeout(struct timer_list *t)
if (bPktInBuf && (pRxTs->rx_timeout_indicate_seq == 0xffff)) { if (bPktInBuf && (pRxTs->rx_timeout_indicate_seq == 0xffff)) {
pRxTs->rx_timeout_indicate_seq = pRxTs->rx_indicate_seq; pRxTs->rx_timeout_indicate_seq = pRxTs->rx_indicate_seq;
mod_timer(&pRxTs->rx_pkt_pending_timer, jiffies + mod_timer(&pRxTs->rx_pkt_pending_timer, jiffies +
msecs_to_jiffies(ieee->pHTInfo->rx_reorder_pending_time) msecs_to_jiffies(ieee->ht_info->rx_reorder_pending_time)
); );
} }
spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags); spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags);

View File

@ -111,11 +111,11 @@ static inline void *netdev_priv_rsl(struct net_device *dev)
#define SUPPORT_CKIP_MIC 0x08 #define SUPPORT_CKIP_MIC 0x08
#define SUPPORT_CKIP_PK 0x10 #define SUPPORT_CKIP_PK 0x10
#define RT_RF_OFF_LEVL_HALT_NIC BIT3 #define RT_RF_OFF_LEVL_HALT_NIC BIT3
#define RT_IN_PS_LEVEL(pPSC, _PS_FLAG) \ #define RT_IN_PS_LEVEL(psc, _PS_FLAG) \
((pPSC->CurPsLevel & _PS_FLAG) ? true : false) ((psc->CurPsLevel & _PS_FLAG) ? true : false)
#define RT_CLEAR_PS_LEVEL(pPSC, _PS_FLAG) \ #define RT_CLEAR_PS_LEVEL(psc, _PS_FLAG) \
(pPSC->CurPsLevel &= (~(_PS_FLAG))) (psc->CurPsLevel &= (~(_PS_FLAG)))
#define RT_SET_PS_LEVEL(pPSC, _PS_FLAG) (pPSC->CurPsLevel |= _PS_FLAG) #define RT_SET_PS_LEVEL(psc, _PS_FLAG) (psc->CurPsLevel |= _PS_FLAG)
/* defined for skb cb field */ /* defined for skb cb field */
/* At most 28 byte */ /* At most 28 byte */
@ -126,8 +126,8 @@ struct cb_desc {
u8 bFirstSeg:1; u8 bFirstSeg:1;
u8 bLastSeg:1; u8 bLastSeg:1;
u8 bEncrypt:1; u8 bEncrypt:1;
u8 bTxDisableRateFallBack:1; u8 tx_dis_rate_fallback:1;
u8 bTxUseDriverAssingedRate:1; u8 tx_use_drv_assinged_rate:1;
u8 bHwSec:1; u8 bHwSec:1;
u8 nStuckCount; u8 nStuckCount;
@ -1250,23 +1250,17 @@ enum rt_rf_power_state {
}; };
struct rt_pwr_save_ctrl { struct rt_pwr_save_ctrl {
bool bInactivePs;
bool bIPSModeBackup;
bool bSwRfProcessing; bool bSwRfProcessing;
enum rt_rf_power_state eInactivePowerState; enum rt_rf_power_state eInactivePowerState;
enum ips_callback_function ReturnPoint; enum ips_callback_function ReturnPoint;
bool bLeisurePs; bool bLeisurePs;
u8 LpsIdleCount; u8 LpsIdleCount;
u8 RegMaxLPSAwakeIntvl; u8 reg_max_lps_awake_intvl;
u8 LPSAwakeIntvl; u8 LPSAwakeIntvl;
u32 CurPsLevel; u32 CurPsLevel;
u32 RegRfPsLevel; u32 RegRfPsLevel;
bool bFwCtrlLPS;
}; };
#define RT_RF_CHANGE_SOURCE u32 #define RT_RF_CHANGE_SOURCE u32
@ -1390,8 +1384,8 @@ struct rt_pmkid_list {
}; };
struct rt_intel_promisc_mode { struct rt_intel_promisc_mode {
bool bPromiscuousOn; bool promiscuous_on;
bool bFilterSourceStationFrame; bool fltr_src_sta_frame;
}; };
@ -1438,17 +1432,17 @@ struct rtllib_device {
RT_RF_CHANGE_SOURCE rf_off_reason; RT_RF_CHANGE_SOURCE rf_off_reason;
bool is_set_key; bool is_set_key;
bool wx_set_enc; bool wx_set_enc;
struct rt_hi_throughput *pHTInfo; struct rt_hi_throughput *ht_info;
spinlock_t reorder_spinlock; spinlock_t reorder_spinlock;
u8 Regdot11HTOperationalRateSet[16]; u8 reg_dot11ht_oper_rate_set[16];
u8 Regdot11TxHTOperationalRateSet[16]; u8 reg_dot11tx_ht_oper_rate_set[16];
u8 dot11HTOperationalRateSet[16]; u8 dot11ht_oper_rate_set[16];
u8 RegHTSuppRateSet[16]; u8 reg_ht_supp_rate_set[16];
u8 HTCurrentOperaRate; u8 HTCurrentOperaRate;
u8 HTHighestOperaRate; u8 HTHighestOperaRate;
u8 bTxDisableRateFallBack; u8 tx_dis_rate_fallback;
u8 bTxUseDriverAssingedRate; u8 tx_use_drv_assinged_rate;
u8 bTxEnableFwCalcDur; u8 bTxEnableFwCalcDur;
atomic_t atm_swbw; atomic_t atm_swbw;
@ -1476,8 +1470,8 @@ struct rtllib_device {
int scan_age; int scan_age;
int iw_mode; /* operating mode (IW_MODE_*) */ int iw_mode; /* operating mode (IW_MODE_*) */
bool bNetPromiscuousMode; bool net_promiscuous_md;
struct rt_intel_promisc_mode IntelPromiscuousModeInfo; struct rt_intel_promisc_mode intel_promiscuous_md_info;
spinlock_t lock; spinlock_t lock;
spinlock_t wpax_suitlist_lock; spinlock_t wpax_suitlist_lock;
@ -1630,7 +1624,6 @@ struct rtllib_device {
int mgmt_queue_tail; int mgmt_queue_tail;
u8 AsocRetryCount; u8 AsocRetryCount;
struct sk_buff_head skb_waitQ[MAX_QUEUE_SIZE]; struct sk_buff_head skb_waitQ[MAX_QUEUE_SIZE];
struct sk_buff_head skb_aggQ[MAX_QUEUE_SIZE];
bool bdynamic_txpower_enable; bool bdynamic_txpower_enable;
@ -1649,9 +1642,9 @@ struct rtllib_device {
struct bandwidth_autoswitch bandwidth_auto_switch; struct bandwidth_autoswitch bandwidth_auto_switch;
bool FwRWRF; bool FwRWRF;
struct rt_link_detect LinkDetectInfo; struct rt_link_detect link_detect_info;
bool bIsAggregateFrame; bool bIsAggregateFrame;
struct rt_pwr_save_ctrl PowerSaveControl; struct rt_pwr_save_ctrl pwr_save_ctrl;
/* used if IEEE_SOFTMAC_TX_QUEUE is set */ /* used if IEEE_SOFTMAC_TX_QUEUE is set */
struct tx_pending tx_pending; struct tx_pending tx_pending;
@ -2095,7 +2088,7 @@ u8 HTGetHighestMCSRate(struct rtllib_device *ieee, u8 *pMCSRateSet,
extern u8 MCS_FILTER_ALL[]; extern u8 MCS_FILTER_ALL[];
extern u16 MCS_DATA_RATE[2][2][77]; extern u16 MCS_DATA_RATE[2][2][77];
u8 HTCCheck(struct rtllib_device *ieee, u8 *pFrame); u8 HTCCheck(struct rtllib_device *ieee, u8 *pFrame);
void HTResetIOTSetting(struct rt_hi_throughput *pHTInfo); void HTResetIOTSetting(struct rt_hi_throughput *ht_info);
bool IsHTHalfNmodeAPs(struct rtllib_device *ieee); bool IsHTHalfNmodeAPs(struct rtllib_device *ieee);
u16 TxCountToDataRate(struct rtllib_device *ieee, u8 nDataRate); u16 TxCountToDataRate(struct rtllib_device *ieee, u8 nDataRate);
int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct sk_buff *skb); int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct sk_buff *skb);

View File

@ -62,7 +62,7 @@ static void *rtllib_tkip_init(int key_idx)
return NULL; return NULL;
priv = kzalloc(sizeof(*priv), GFP_ATOMIC); priv = kzalloc(sizeof(*priv), GFP_ATOMIC);
if (priv == NULL) if (!priv)
goto fail; goto fail;
priv->key_idx = key_idx; priv->key_idx = key_idx;
@ -91,7 +91,6 @@ fail:
return NULL; return NULL;
} }
static void rtllib_tkip_deinit(void *priv) static void rtllib_tkip_deinit(void *priv)
{ {
struct rtllib_tkip_data *_priv = priv; struct rtllib_tkip_data *_priv = priv;
@ -103,49 +102,41 @@ static void rtllib_tkip_deinit(void *priv)
kfree_sensitive(priv); kfree_sensitive(priv);
} }
static inline u16 RotR1(u16 val) static inline u16 RotR1(u16 val)
{ {
return (val >> 1) | (val << 15); return (val >> 1) | (val << 15);
} }
static inline u8 Lo8(u16 val) static inline u8 Lo8(u16 val)
{ {
return val & 0xff; return val & 0xff;
} }
static inline u8 Hi8(u16 val) static inline u8 Hi8(u16 val)
{ {
return val >> 8; return val >> 8;
} }
static inline u16 Lo16(u32 val) static inline u16 Lo16(u32 val)
{ {
return val & 0xffff; return val & 0xffff;
} }
static inline u16 Hi16(u32 val) static inline u16 Hi16(u32 val)
{ {
return val >> 16; return val >> 16;
} }
static inline u16 Mk16(u8 hi, u8 lo) static inline u16 Mk16(u8 hi, u8 lo)
{ {
return lo | (hi << 8); return lo | (hi << 8);
} }
static inline u16 Mk16_le(u16 *v) static inline u16 Mk16_le(u16 *v)
{ {
return *v; return *v;
} }
static const u16 Sbox[256] = { static const u16 Sbox[256] = {
0xC6A5, 0xF884, 0xEE99, 0xF68D, 0xFF0D, 0xD6BD, 0xDEB1, 0x9154, 0xC6A5, 0xF884, 0xEE99, 0xF68D, 0xFF0D, 0xD6BD, 0xDEB1, 0x9154,
0x6050, 0x0203, 0xCEA9, 0x567D, 0xE719, 0xB562, 0x4DE6, 0xEC9A, 0x6050, 0x0203, 0xCEA9, 0x567D, 0xE719, 0xB562, 0x4DE6, 0xEC9A,
@ -181,17 +172,14 @@ static const u16 Sbox[256] = {
0x82C3, 0x29B0, 0x5A77, 0x1E11, 0x7BCB, 0xA8FC, 0x6DD6, 0x2C3A, 0x82C3, 0x29B0, 0x5A77, 0x1E11, 0x7BCB, 0xA8FC, 0x6DD6, 0x2C3A,
}; };
static inline u16 _S_(u16 v) static inline u16 _S_(u16 v)
{ {
u16 t = Sbox[Hi8(v)]; u16 t = Sbox[Hi8(v)];
return Sbox[Lo8(v)] ^ ((t << 8) | (t >> 8)); return Sbox[Lo8(v)] ^ ((t << 8) | (t >> 8));
} }
#define PHASE1_LOOP_COUNT 8 #define PHASE1_LOOP_COUNT 8
static void tkip_mixing_phase1(u16 *TTAK, const u8 *TK, const u8 *TA, u32 IV32) static void tkip_mixing_phase1(u16 *TTAK, const u8 *TK, const u8 *TA, u32 IV32)
{ {
int i, j; int i, j;
@ -213,7 +201,6 @@ static void tkip_mixing_phase1(u16 *TTAK, const u8 *TK, const u8 *TA, u32 IV32)
} }
} }
static void tkip_mixing_phase2(u8 *WEPSeed, const u8 *TK, const u16 *TTAK, static void tkip_mixing_phase2(u8 *WEPSeed, const u8 *TK, const u16 *TTAK,
u16 IV16) u16 IV16)
{ {
@ -263,7 +250,6 @@ static void tkip_mixing_phase2(u8 *WEPSeed, const u8 *TK, const u16 *TTAK,
#endif #endif
} }
static int rtllib_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv) static int rtllib_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
{ {
struct rtllib_tkip_data *tkey = priv; struct rtllib_tkip_data *tkey = priv;
@ -285,14 +271,14 @@ static int rtllib_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
if (!tcb_desc->bHwSec) { if (!tcb_desc->bHwSec) {
if (!tkey->tx_phase1_done) { if (!tkey->tx_phase1_done) {
tkip_mixing_phase1(tkey->tx_ttak, tkey->key, hdr->addr2, tkip_mixing_phase1(tkey->tx_ttak, tkey->key, hdr->addr2,
tkey->tx_iv32); tkey->tx_iv32);
tkey->tx_phase1_done = 1; tkey->tx_phase1_done = 1;
} }
tkip_mixing_phase2(rc4key, tkey->key, tkey->tx_ttak, tkip_mixing_phase2(rc4key, tkey->key, tkey->tx_ttak,
tkey->tx_iv16); tkey->tx_iv16);
} else } else {
tkey->tx_phase1_done = 1; tkey->tx_phase1_done = 1;
}
len = skb->len - hdr_len; len = skb->len - hdr_len;
pos = skb_push(skb, 8); pos = skb_push(skb, 8);
@ -336,8 +322,6 @@ static int rtllib_tkip_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
if (!tcb_desc->bHwSec) if (!tcb_desc->bHwSec)
return ret; return ret;
return 0; return 0;
} }
static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
@ -389,8 +373,8 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
if (!tcb_desc->bHwSec || (skb->cb[0] == 1)) { if (!tcb_desc->bHwSec || (skb->cb[0] == 1)) {
if ((iv32 < tkey->rx_iv32 || if ((iv32 < tkey->rx_iv32 ||
(iv32 == tkey->rx_iv32 && iv16 <= tkey->rx_iv16)) && (iv32 == tkey->rx_iv32 && iv16 <= tkey->rx_iv16)) &&
tkey->initialized) { tkey->initialized) {
if (net_ratelimit()) { if (net_ratelimit()) {
netdev_dbg(skb->dev, netdev_dbg(skb->dev,
"Replay detected: STA= %pM previous TSC %08x%04x received TSC %08x%04x\n", "Replay detected: STA= %pM previous TSC %08x%04x received TSC %08x%04x\n",
@ -436,7 +420,6 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
tkey->dot11RSNAStatsTKIPICVErrors++; tkey->dot11RSNAStatsTKIPICVErrors++;
return -5; return -5;
} }
} }
/* Update real counters only after Michael MIC verification has /* Update real counters only after Michael MIC verification has
@ -453,7 +436,6 @@ static int rtllib_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
return keyidx; return keyidx;
} }
static int michael_mic(struct crypto_shash *tfm_michael, u8 *key, u8 *hdr, static int michael_mic(struct crypto_shash *tfm_michael, u8 *key, u8 *hdr,
u8 *data, size_t data_len, u8 *mic) u8 *data, size_t data_len, u8 *mic)
{ {
@ -506,12 +488,15 @@ static void michael_mic_hdr(struct sk_buff *skb, u8 *hdr)
break; break;
} }
hdr[12] = 0; /* priority */ /* priority */
hdr[12] = 0;
hdr[13] = hdr[14] = hdr[15] = 0; /* reserved */ /* reserved */
hdr[13] = 0;
hdr[14] = 0;
hdr[15] = 0;
} }
static int rtllib_michael_mic_add(struct sk_buff *skb, int hdr_len, void *priv) static int rtllib_michael_mic_add(struct sk_buff *skb, int hdr_len, void *priv)
{ {
struct rtllib_tkip_data *tkey = priv; struct rtllib_tkip_data *tkey = priv;
@ -533,13 +518,12 @@ static int rtllib_michael_mic_add(struct sk_buff *skb, int hdr_len, void *priv)
tkey->tx_hdr[12] = *(skb->data + hdr_len - 2) & 0x07; tkey->tx_hdr[12] = *(skb->data + hdr_len - 2) & 0x07;
pos = skb_put(skb, 8); pos = skb_put(skb, 8);
if (michael_mic(tkey->tx_tfm_michael, &tkey->key[16], tkey->tx_hdr, if (michael_mic(tkey->tx_tfm_michael, &tkey->key[16], tkey->tx_hdr,
skb->data + hdr_len, skb->len - 8 - hdr_len, pos)) skb->data + hdr_len, skb->len - 8 - hdr_len, pos))
return -1; return -1;
return 0; return 0;
} }
static void rtllib_michael_mic_failure(struct net_device *dev, static void rtllib_michael_mic_failure(struct net_device *dev,
struct rtllib_hdr_4addr *hdr, struct rtllib_hdr_4addr *hdr,
int keyidx) int keyidx)
@ -609,7 +593,6 @@ static int rtllib_michael_mic_verify(struct sk_buff *skb, int keyidx,
return 0; return 0;
} }
static int rtllib_tkip_set_key(void *key, int len, u8 *seq, void *priv) static int rtllib_tkip_set_key(void *key, int len, u8 *seq, void *priv)
{ {
struct rtllib_tkip_data *tkey = priv; struct rtllib_tkip_data *tkey = priv;
@ -632,15 +615,15 @@ static int rtllib_tkip_set_key(void *key, int len, u8 *seq, void *priv)
(seq[3] << 8) | seq[2]; (seq[3] << 8) | seq[2];
tkey->rx_iv16 = (seq[1] << 8) | seq[0]; tkey->rx_iv16 = (seq[1] << 8) | seq[0];
} }
} else if (len == 0) } else if (len == 0) {
tkey->key_set = 0; tkey->key_set = 0;
else } else {
return -1; return -1;
}
return 0; return 0;
} }
static int rtllib_tkip_get_key(void *key, int len, u8 *seq, void *priv) static int rtllib_tkip_get_key(void *key, int len, u8 *seq, void *priv)
{ {
struct rtllib_tkip_data *tkey = priv; struct rtllib_tkip_data *tkey = priv;
@ -671,7 +654,6 @@ static int rtllib_tkip_get_key(void *key, int len, u8 *seq, void *priv)
return TKIP_KEY_LEN; return TKIP_KEY_LEN;
} }
static void rtllib_tkip_print_stats(struct seq_file *m, void *priv) static void rtllib_tkip_print_stats(struct seq_file *m, void *priv)
{ {
struct rtllib_tkip_data *tkip = priv; struct rtllib_tkip_data *tkip = priv;
@ -713,13 +695,11 @@ static struct lib80211_crypto_ops rtllib_crypt_tkip = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
}; };
static int __init rtllib_crypto_tkip_init(void) static int __init rtllib_crypto_tkip_init(void)
{ {
return lib80211_register_crypto_ops(&rtllib_crypt_tkip); return lib80211_register_crypto_ops(&rtllib_crypt_tkip);
} }
static void __exit rtllib_crypto_tkip_exit(void) static void __exit rtllib_crypto_tkip_exit(void)
{ {
lib80211_unregister_crypto_ops(&rtllib_crypt_tkip); lib80211_unregister_crypto_ops(&rtllib_crypt_tkip);

View File

@ -27,7 +27,6 @@ struct prism2_wep_data {
struct arc4_ctx tx_ctx_arc4; struct arc4_ctx tx_ctx_arc4;
}; };
static void *prism2_wep_init(int keyidx) static void *prism2_wep_init(int keyidx)
{ {
struct prism2_wep_data *priv; struct prism2_wep_data *priv;
@ -46,7 +45,6 @@ static void *prism2_wep_init(int keyidx)
return priv; return priv;
} }
static void prism2_wep_deinit(void *priv) static void prism2_wep_deinit(void *priv)
{ {
kfree_sensitive(priv); kfree_sensitive(priv);
@ -120,7 +118,6 @@ static int prism2_wep_encrypt(struct sk_buff *skb, int hdr_len, void *priv)
return 0; return 0;
} }
/* Perform WEP decryption on given struct buffer. Buffer includes whole WEP /* Perform WEP decryption on given struct buffer. Buffer includes whole WEP
* part of the frame: IV (4 bytes), encrypted payload (including SNAP header), * part of the frame: IV (4 bytes), encrypted payload (including SNAP header),
* ICV (4 bytes). len includes both IV and ICV. * ICV (4 bytes). len includes both IV and ICV.
@ -180,7 +177,6 @@ static int prism2_wep_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
return 0; return 0;
} }
static int prism2_wep_set_key(void *key, int len, u8 *seq, void *priv) static int prism2_wep_set_key(void *key, int len, u8 *seq, void *priv)
{ {
struct prism2_wep_data *wep = priv; struct prism2_wep_data *wep = priv;
@ -194,7 +190,6 @@ static int prism2_wep_set_key(void *key, int len, u8 *seq, void *priv)
return 0; return 0;
} }
static int prism2_wep_get_key(void *key, int len, u8 *seq, void *priv) static int prism2_wep_get_key(void *key, int len, u8 *seq, void *priv)
{ {
struct prism2_wep_data *wep = priv; struct prism2_wep_data *wep = priv;
@ -207,7 +202,6 @@ static int prism2_wep_get_key(void *key, int len, u8 *seq, void *priv)
return wep->key_len; return wep->key_len;
} }
static void prism2_wep_print_stats(struct seq_file *m, void *priv) static void prism2_wep_print_stats(struct seq_file *m, void *priv)
{ {
struct prism2_wep_data *wep = priv; struct prism2_wep_data *wep = priv;
@ -231,13 +225,11 @@ static struct lib80211_crypto_ops rtllib_crypt_wep = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
}; };
static int __init rtllib_crypto_wep_init(void) static int __init rtllib_crypto_wep_init(void)
{ {
return lib80211_register_crypto_ops(&rtllib_crypt_wep); return lib80211_register_crypto_ops(&rtllib_crypt_wep);
} }
static void __exit rtllib_crypto_wep_exit(void) static void __exit rtllib_crypto_wep_exit(void)
{ {
lib80211_unregister_crypto_ops(&rtllib_crypt_wep); lib80211_unregister_crypto_ops(&rtllib_crypt_wep);

View File

@ -107,7 +107,7 @@ struct net_device *alloc_rtllib(int sizeof_priv)
spin_lock_init(&ieee->lock); spin_lock_init(&ieee->lock);
spin_lock_init(&ieee->wpax_suitlist_lock); spin_lock_init(&ieee->wpax_suitlist_lock);
spin_lock_init(&ieee->reorder_spinlock); spin_lock_init(&ieee->reorder_spinlock);
atomic_set(&(ieee->atm_swbw), 0); atomic_set(&ieee->atm_swbw, 0);
/* SAM FIXME */ /* SAM FIXME */
lib80211_crypt_info_init(&ieee->crypt_info, "RTLLIB", &ieee->lock); lib80211_crypt_info_init(&ieee->crypt_info, "RTLLIB", &ieee->lock);
@ -125,8 +125,8 @@ struct net_device *alloc_rtllib(int sizeof_priv)
if (err) if (err)
goto free_crypt_info; goto free_crypt_info;
ieee->pHTInfo = kzalloc(sizeof(struct rt_hi_throughput), GFP_KERNEL); ieee->ht_info = kzalloc(sizeof(struct rt_hi_throughput), GFP_KERNEL);
if (!ieee->pHTInfo) if (!ieee->ht_info)
goto free_softmac; goto free_softmac;
HTUpdateDefaultSetting(ieee); HTUpdateDefaultSetting(ieee);
@ -160,7 +160,7 @@ void free_rtllib(struct net_device *dev)
struct rtllib_device *ieee = (struct rtllib_device *) struct rtllib_device *ieee = (struct rtllib_device *)
netdev_priv_rsl(dev); netdev_priv_rsl(dev);
kfree(ieee->pHTInfo); kfree(ieee->ht_info);
rtllib_softmac_free(ieee); rtllib_softmac_free(ieee);
lib80211_crypt_info_free(&ieee->crypt_info); lib80211_crypt_info_free(&ieee->crypt_info);

View File

@ -567,9 +567,9 @@ static void RxReorderIndicatePacket(struct rtllib_device *ieee,
struct rtllib_rxb *prxb, struct rtllib_rxb *prxb,
struct rx_ts_record *pTS, u16 SeqNum) struct rx_ts_record *pTS, u16 SeqNum)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
struct rx_reorder_entry *pReorderEntry = NULL; struct rx_reorder_entry *pReorderEntry = NULL;
u8 WinSize = pHTInfo->rx_reorder_win_size; u8 WinSize = ht_info->rx_reorder_win_size;
u16 WinEnd = 0; u16 WinEnd = 0;
u8 index = 0; u8 index = 0;
bool bMatchWinStart = false, bPktInBuf = false; bool bMatchWinStart = false, bPktInBuf = false;
@ -591,7 +591,7 @@ static void RxReorderIndicatePacket(struct rtllib_device *ieee,
netdev_dbg(ieee->dev, netdev_dbg(ieee->dev,
"Packet Drop! IndicateSeq: %d, NewSeq: %d\n", "Packet Drop! IndicateSeq: %d, NewSeq: %d\n",
pTS->rx_indicate_seq, SeqNum); pTS->rx_indicate_seq, SeqNum);
pHTInfo->rx_reorder_drop_counter++; ht_info->rx_reorder_drop_counter++;
{ {
int i; int i;
@ -755,7 +755,7 @@ static void RxReorderIndicatePacket(struct rtllib_device *ieee,
netdev_dbg(ieee->dev, "%s(): SET rx timeout timer\n", __func__); netdev_dbg(ieee->dev, "%s(): SET rx timeout timer\n", __func__);
pTS->rx_timeout_indicate_seq = pTS->rx_indicate_seq; pTS->rx_timeout_indicate_seq = pTS->rx_indicate_seq;
mod_timer(&pTS->rx_pkt_pending_timer, jiffies + mod_timer(&pTS->rx_pkt_pending_timer, jiffies +
msecs_to_jiffies(pHTInfo->rx_reorder_pending_time)); msecs_to_jiffies(ht_info->rx_reorder_pending_time));
} }
spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags); spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags);
} }
@ -924,7 +924,7 @@ static int rtllib_rx_check_duplicate(struct rtllib_device *ieee,
sc = le16_to_cpu(hdr->seq_ctl); sc = le16_to_cpu(hdr->seq_ctl);
frag = WLAN_GET_SEQ_FRAG(sc); frag = WLAN_GET_SEQ_FRAG(sc);
if (!ieee->pHTInfo->cur_rx_reorder_enable || if (!ieee->ht_info->cur_rx_reorder_enable ||
!ieee->current_network.qos_data.active || !ieee->current_network.qos_data.active ||
!IsDataFrame(skb->data) || !IsDataFrame(skb->data) ||
IsLegacyDataFrame(skb->data)) { IsLegacyDataFrame(skb->data)) {
@ -999,8 +999,8 @@ static int rtllib_rx_data_filter(struct rtllib_device *ieee, u16 fc,
} }
/* Filter packets sent by an STA that will be forwarded by AP */ /* Filter packets sent by an STA that will be forwarded by AP */
if (ieee->IntelPromiscuousModeInfo.bPromiscuousOn && if (ieee->intel_promiscuous_md_info.promiscuous_on &&
ieee->IntelPromiscuousModeInfo.bFilterSourceStationFrame) { ieee->intel_promiscuous_md_info.fltr_src_sta_frame) {
if ((fc & RTLLIB_FCTL_TODS) && !(fc & RTLLIB_FCTL_FROMDS) && if ((fc & RTLLIB_FCTL_TODS) && !(fc & RTLLIB_FCTL_FROMDS) &&
!ether_addr_equal(dst, ieee->current_network.bssid) && !ether_addr_equal(dst, ieee->current_network.bssid) &&
ether_addr_equal(bssid, ieee->current_network.bssid)) { ether_addr_equal(bssid, ieee->current_network.bssid)) {
@ -1011,7 +1011,7 @@ static int rtllib_rx_data_filter(struct rtllib_device *ieee, u16 fc,
/* Nullfunc frames may have PS-bit set, so they must be passed to /* Nullfunc frames may have PS-bit set, so they must be passed to
* hostap_handle_sta_rx() before being dropped here. * hostap_handle_sta_rx() before being dropped here.
*/ */
if (!ieee->IntelPromiscuousModeInfo.bPromiscuousOn) { if (!ieee->intel_promiscuous_md_info.promiscuous_on) {
if (stype != RTLLIB_STYPE_DATA && if (stype != RTLLIB_STYPE_DATA &&
stype != RTLLIB_STYPE_DATA_CFACK && stype != RTLLIB_STYPE_DATA_CFACK &&
stype != RTLLIB_STYPE_DATA_CFPOLL && stype != RTLLIB_STYPE_DATA_CFPOLL &&
@ -1211,9 +1211,9 @@ static void rtllib_rx_check_leave_lps(struct rtllib_device *ieee, u8 unicast,
if (unicast) { if (unicast) {
if (ieee->state == RTLLIB_LINKED) { if (ieee->state == RTLLIB_LINKED) {
if (((ieee->LinkDetectInfo.NumRxUnicastOkInPeriod + if (((ieee->link_detect_info.NumRxUnicastOkInPeriod +
ieee->LinkDetectInfo.NumTxOkInPeriod) > 8) || ieee->link_detect_info.NumTxOkInPeriod) > 8) ||
(ieee->LinkDetectInfo.NumRxUnicastOkInPeriod > 2)) { (ieee->link_detect_info.NumRxUnicastOkInPeriod > 2)) {
if (ieee->LeisurePSLeave) if (ieee->LeisurePSLeave)
ieee->LeisurePSLeave(ieee->dev); ieee->LeisurePSLeave(ieee->dev);
} }
@ -1317,7 +1317,7 @@ static int rtllib_rx_InfraAdhoc(struct rtllib_device *ieee, struct sk_buff *skb,
multicast = is_multicast_ether_addr(hdr->addr1); multicast = is_multicast_ether_addr(hdr->addr1);
unicast = !multicast; unicast = !multicast;
if (unicast && !ether_addr_equal(dev->dev_addr, hdr->addr1)) { if (unicast && !ether_addr_equal(dev->dev_addr, hdr->addr1)) {
if (ieee->bNetPromiscuousMode) if (ieee->net_promiscuous_md)
bToOtherSTA = true; bToOtherSTA = true;
else else
goto rx_dropped; goto rx_dropped;
@ -1355,8 +1355,8 @@ static int rtllib_rx_InfraAdhoc(struct rtllib_device *ieee, struct sk_buff *skb,
/* Update statstics for AP roaming */ /* Update statstics for AP roaming */
if (!bToOtherSTA) { if (!bToOtherSTA) {
ieee->LinkDetectInfo.NumRecvDataInPeriod++; ieee->link_detect_info.NumRecvDataInPeriod++;
ieee->LinkDetectInfo.NumRxOkInPeriod++; ieee->link_detect_info.NumRxOkInPeriod++;
} }
/* Data frame - extract src/dst addresses */ /* Data frame - extract src/dst addresses */
@ -1437,12 +1437,12 @@ static int rtllib_rx_InfraAdhoc(struct rtllib_device *ieee, struct sk_buff *skb,
else else
nr_subframes = 1; nr_subframes = 1;
if (unicast) if (unicast)
ieee->LinkDetectInfo.NumRxUnicastOkInPeriod += nr_subframes; ieee->link_detect_info.NumRxUnicastOkInPeriod += nr_subframes;
rtllib_rx_check_leave_lps(ieee, unicast, nr_subframes); rtllib_rx_check_leave_lps(ieee, unicast, nr_subframes);
} }
/* Indicate packets to upper layer or Rx Reorder */ /* Indicate packets to upper layer or Rx Reorder */
if (!ieee->pHTInfo->cur_rx_reorder_enable || pTS == NULL || bToOtherSTA) if (!ieee->ht_info->cur_rx_reorder_enable || pTS == NULL || bToOtherSTA)
rtllib_rx_indicate_pkt_legacy(ieee, rx_stats, rxb, dst, src); rtllib_rx_indicate_pkt_legacy(ieee, rx_stats, rxb, dst, src);
else else
RxReorderIndicatePacket(ieee, rxb, pTS, SeqNum); RxReorderIndicatePacket(ieee, rxb, pTS, SeqNum);
@ -1489,9 +1489,9 @@ static int rtllib_rx_Monitor(struct rtllib_device *ieee, struct sk_buff *skb,
hdrlen += 4; hdrlen += 4;
} }
rtllib_monitor_rx(ieee, skb, rx_stats, hdrlen);
ieee->stats.rx_packets++; ieee->stats.rx_packets++;
ieee->stats.rx_bytes += skb->len; ieee->stats.rx_bytes += skb->len;
rtllib_monitor_rx(ieee, skb, rx_stats, hdrlen);
return 1; return 1;
} }
@ -1776,7 +1776,7 @@ static inline void rtllib_extract_country_ie(
if (rtllib_act_scanning(ieee, false) && if (rtllib_act_scanning(ieee, false) &&
ieee->FirstIe_InScan) ieee->FirstIe_InScan)
netdev_info(ieee->dev, netdev_info(ieee->dev,
"Received beacon ContryIE, SSID: <%s>\n", "Received beacon CountryIE, SSID: <%s>\n",
network->ssid); network->ssid);
dot11d_update_country(ieee, addr2, dot11d_update_country(ieee, addr2,
info_element->len, info_element->len,
@ -2620,7 +2620,7 @@ static inline void rtllib_process_probe_response(
} }
if (is_beacon(frame_ctl)) { if (is_beacon(frame_ctl)) {
if (ieee->state >= RTLLIB_LINKED) if (ieee->state >= RTLLIB_LINKED)
ieee->LinkDetectInfo.NumRecvBcnInPeriod++; ieee->link_detect_info.NumRecvBcnInPeriod++;
} }
} }
list_for_each_entry(target, &ieee->network_list, list) { list_for_each_entry(target, &ieee->network_list, list) {

View File

@ -148,8 +148,7 @@ static void init_mgmt_queue(struct rtllib_device *ieee)
} }
u8 u8 MgntQuery_TxRateExcludeCCKRates(struct rtllib_device *ieee)
MgntQuery_TxRateExcludeCCKRates(struct rtllib_device *ieee)
{ {
u16 i; u16 i;
u8 QueryRate = 0; u8 QueryRate = 0;
@ -177,10 +176,10 @@ MgntQuery_TxRateExcludeCCKRates(struct rtllib_device *ieee)
static u8 MgntQuery_MgntFrameTxRate(struct rtllib_device *ieee) static u8 MgntQuery_MgntFrameTxRate(struct rtllib_device *ieee)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
u8 rate; u8 rate;
if (pHTInfo->iot_action & HT_IOT_ACT_MGNT_USE_CCK_6M) if (ht_info->iot_action & HT_IOT_ACT_MGNT_USE_CCK_6M)
rate = 0x0c; rate = 0x0c;
else else
rate = ieee->basic_rate & 0x7f; rate = ieee->basic_rate & 0x7f;
@ -188,7 +187,7 @@ static u8 MgntQuery_MgntFrameTxRate(struct rtllib_device *ieee)
if (rate == 0) { if (rate == 0) {
if (ieee->mode == IEEE_A || if (ieee->mode == IEEE_A ||
ieee->mode == IEEE_N_5G || ieee->mode == IEEE_N_5G ||
(ieee->mode == IEEE_N_24G && !pHTInfo->bCurSuppCCK)) (ieee->mode == IEEE_N_24G && !ht_info->bCurSuppCCK))
rate = 0x0c; rate = 0x0c;
else else
rate = 0x02; rate = 0x02;
@ -221,8 +220,8 @@ inline void softmac_mgmt_xmit(struct sk_buff *skb, struct rtllib_device *ieee)
tcb_desc->data_rate = MgntQuery_MgntFrameTxRate(ieee); tcb_desc->data_rate = MgntQuery_MgntFrameTxRate(ieee);
tcb_desc->RATRIndex = 7; tcb_desc->RATRIndex = 7;
tcb_desc->bTxDisableRateFallBack = 1; tcb_desc->tx_dis_rate_fallback = 1;
tcb_desc->bTxUseDriverAssingedRate = 1; tcb_desc->tx_use_drv_assinged_rate = 1;
if (single) { if (single) {
if (ieee->queue_stop) { if (ieee->queue_stop) {
enqueue_mgmt(ieee, skb); enqueue_mgmt(ieee, skb);
@ -299,8 +298,8 @@ softmac_ps_mgmt_xmit(struct sk_buff *skb,
tcb_desc->data_rate = MgntQuery_MgntFrameTxRate(ieee); tcb_desc->data_rate = MgntQuery_MgntFrameTxRate(ieee);
tcb_desc->RATRIndex = 7; tcb_desc->RATRIndex = 7;
tcb_desc->bTxDisableRateFallBack = 1; tcb_desc->tx_dis_rate_fallback = 1;
tcb_desc->bTxUseDriverAssingedRate = 1; tcb_desc->tx_use_drv_assinged_rate = 1;
if (single) { if (single) {
if (type != RTLLIB_FTYPE_CTL) { if (type != RTLLIB_FTYPE_CTL) {
header->seq_ctl = cpu_to_le16(ieee->seq_ctrl[0] << 4); header->seq_ctl = cpu_to_le16(ieee->seq_ctrl[0] << 4);
@ -446,7 +445,7 @@ void rtllib_EnableIntelPromiscuousMode(struct net_device *dev,
ieee->SetHwRegHandler(dev, HW_VAR_CECHK_BSSID, ieee->SetHwRegHandler(dev, HW_VAR_CECHK_BSSID,
(u8 *)&bFilterOutNonAssociatedBSSID); (u8 *)&bFilterOutNonAssociatedBSSID);
ieee->bNetPromiscuousMode = true; ieee->net_promiscuous_md = true;
} }
EXPORT_SYMBOL(rtllib_EnableIntelPromiscuousMode); EXPORT_SYMBOL(rtllib_EnableIntelPromiscuousMode);
@ -467,7 +466,7 @@ void rtllib_DisableIntelPromiscuousMode(struct net_device *dev,
ieee->SetHwRegHandler(dev, HW_VAR_CECHK_BSSID, ieee->SetHwRegHandler(dev, HW_VAR_CECHK_BSSID,
(u8 *)&bFilterOutNonAssociatedBSSID); (u8 *)&bFilterOutNonAssociatedBSSID);
ieee->bNetPromiscuousMode = false; ieee->net_promiscuous_md = false;
} }
EXPORT_SYMBOL(rtllib_DisableIntelPromiscuousMode); EXPORT_SYMBOL(rtllib_DisableIntelPromiscuousMode);
@ -830,7 +829,7 @@ static struct sk_buff *rtllib_probe_resp(struct rtllib_device *ieee,
u8 tmp_ht_cap_len = 0; u8 tmp_ht_cap_len = 0;
u8 *tmp_ht_info_buf = NULL; u8 *tmp_ht_info_buf = NULL;
u8 tmp_ht_info_len = 0; u8 tmp_ht_info_len = 0;
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
u8 *tmp_generic_ie_buf = NULL; u8 *tmp_generic_ie_buf = NULL;
u8 tmp_generic_ie_len = 0; u8 tmp_generic_ie_len = 0;
@ -844,7 +843,7 @@ static struct sk_buff *rtllib_probe_resp(struct rtllib_device *ieee,
if ((ieee->current_network.mode == IEEE_G) || if ((ieee->current_network.mode == IEEE_G) ||
(ieee->current_network.mode == IEEE_N_24G && (ieee->current_network.mode == IEEE_N_24G &&
ieee->pHTInfo->bCurSuppCCK)) { ieee->ht_info->bCurSuppCCK)) {
erp_len = 3; erp_len = 3;
erpinfo_content = 0; erpinfo_content = 0;
if (ieee->current_network.buseprotection) if (ieee->current_network.buseprotection)
@ -855,20 +854,20 @@ static struct sk_buff *rtllib_probe_resp(struct rtllib_device *ieee,
crypt = ieee->crypt_info.crypt[ieee->crypt_info.tx_keyidx]; crypt = ieee->crypt_info.crypt[ieee->crypt_info.tx_keyidx];
encrypt = ieee->host_encrypt && crypt && crypt->ops && encrypt = ieee->host_encrypt && crypt && crypt->ops &&
((strcmp(crypt->ops->name, "R-WEP") == 0 || wpa_ie_len)); ((strcmp(crypt->ops->name, "R-WEP") == 0 || wpa_ie_len));
if (ieee->pHTInfo->bCurrentHTSupport) { if (ieee->ht_info->bCurrentHTSupport) {
tmp_ht_cap_buf = (u8 *)&(ieee->pHTInfo->SelfHTCap); tmp_ht_cap_buf = (u8 *)&(ieee->ht_info->SelfHTCap);
tmp_ht_cap_len = sizeof(ieee->pHTInfo->SelfHTCap); tmp_ht_cap_len = sizeof(ieee->ht_info->SelfHTCap);
tmp_ht_info_buf = (u8 *)&(ieee->pHTInfo->SelfHTInfo); tmp_ht_info_buf = (u8 *)&(ieee->ht_info->SelfHTInfo);
tmp_ht_info_len = sizeof(ieee->pHTInfo->SelfHTInfo); tmp_ht_info_len = sizeof(ieee->ht_info->SelfHTInfo);
HTConstructCapabilityElement(ieee, tmp_ht_cap_buf, HTConstructCapabilityElement(ieee, tmp_ht_cap_buf,
&tmp_ht_cap_len, encrypt, false); &tmp_ht_cap_len, encrypt, false);
HTConstructInfoElement(ieee, tmp_ht_info_buf, &tmp_ht_info_len, HTConstructInfoElement(ieee, tmp_ht_info_buf, &tmp_ht_info_len,
encrypt); encrypt);
if (pHTInfo->reg_rt2rt_aggregation) { if (ht_info->reg_rt2rt_aggregation) {
tmp_generic_ie_buf = ieee->pHTInfo->sz_rt2rt_agg_buf; tmp_generic_ie_buf = ieee->ht_info->sz_rt2rt_agg_buf;
tmp_generic_ie_len = tmp_generic_ie_len =
sizeof(ieee->pHTInfo->sz_rt2rt_agg_buf); sizeof(ieee->ht_info->sz_rt2rt_agg_buf);
HTConstructRT2RTAggElement(ieee, tmp_generic_ie_buf, HTConstructRT2RTAggElement(ieee, tmp_generic_ie_buf,
&tmp_generic_ie_len); &tmp_generic_ie_len);
} }
@ -1180,19 +1179,19 @@ rtllib_association_req(struct rtllib_network *beacon,
if ((ieee->rtllib_ap_sec_type && if ((ieee->rtllib_ap_sec_type &&
(ieee->rtllib_ap_sec_type(ieee) & SEC_ALG_TKIP)) || (ieee->rtllib_ap_sec_type(ieee) & SEC_ALG_TKIP)) ||
ieee->bForcedBgMode) { ieee->bForcedBgMode) {
ieee->pHTInfo->bEnableHT = 0; ieee->ht_info->enable_ht = 0;
ieee->mode = WIRELESS_MODE_G; ieee->mode = WIRELESS_MODE_G;
} }
if (ieee->pHTInfo->bCurrentHTSupport && ieee->pHTInfo->bEnableHT) { if (ieee->ht_info->bCurrentHTSupport && ieee->ht_info->enable_ht) {
ht_cap_buf = (u8 *)&(ieee->pHTInfo->SelfHTCap); ht_cap_buf = (u8 *)&(ieee->ht_info->SelfHTCap);
ht_cap_len = sizeof(ieee->pHTInfo->SelfHTCap); ht_cap_len = sizeof(ieee->ht_info->SelfHTCap);
HTConstructCapabilityElement(ieee, ht_cap_buf, &ht_cap_len, HTConstructCapabilityElement(ieee, ht_cap_buf, &ht_cap_len,
encrypt, true); encrypt, true);
if (ieee->pHTInfo->current_rt2rt_aggregation) { if (ieee->ht_info->current_rt2rt_aggregation) {
realtek_ie_buf = ieee->pHTInfo->sz_rt2rt_agg_buf; realtek_ie_buf = ieee->ht_info->sz_rt2rt_agg_buf;
realtek_ie_len = realtek_ie_len =
sizeof(ieee->pHTInfo->sz_rt2rt_agg_buf); sizeof(ieee->ht_info->sz_rt2rt_agg_buf);
HTConstructRT2RTAggElement(ieee, realtek_ie_buf, HTConstructRT2RTAggElement(ieee, realtek_ie_buf,
&realtek_ie_len); &realtek_ie_len);
} }
@ -1325,8 +1324,8 @@ rtllib_association_req(struct rtllib_network *beacon,
memcpy(tag, osCcxVerNum.Octet, osCcxVerNum.Length); memcpy(tag, osCcxVerNum.Octet, osCcxVerNum.Length);
tag += osCcxVerNum.Length; tag += osCcxVerNum.Length;
} }
if (ieee->pHTInfo->bCurrentHTSupport && ieee->pHTInfo->bEnableHT) { if (ieee->ht_info->bCurrentHTSupport && ieee->ht_info->enable_ht) {
if (ieee->pHTInfo->ePeerHTSpecVer != HT_SPEC_VER_EWC) { if (ieee->ht_info->ePeerHTSpecVer != HT_SPEC_VER_EWC) {
tag = skb_put(skb, ht_cap_len); tag = skb_put(skb, ht_cap_len);
*tag++ = MFIE_TYPE_HT_CAP; *tag++ = MFIE_TYPE_HT_CAP;
*tag++ = ht_cap_len - 2; *tag++ = ht_cap_len - 2;
@ -1359,8 +1358,8 @@ rtllib_association_req(struct rtllib_network *beacon,
rtllib_TURBO_Info(ieee, &tag); rtllib_TURBO_Info(ieee, &tag);
} }
if (ieee->pHTInfo->bCurrentHTSupport && ieee->pHTInfo->bEnableHT) { if (ieee->ht_info->bCurrentHTSupport && ieee->ht_info->enable_ht) {
if (ieee->pHTInfo->ePeerHTSpecVer == HT_SPEC_VER_EWC) { if (ieee->ht_info->ePeerHTSpecVer == HT_SPEC_VER_EWC) {
tag = skb_put(skb, ht_cap_len); tag = skb_put(skb, ht_cap_len);
*tag++ = MFIE_TYPE_GENERIC; *tag++ = MFIE_TYPE_GENERIC;
*tag++ = ht_cap_len - 2; *tag++ = ht_cap_len - 2;
@ -1368,7 +1367,7 @@ rtllib_association_req(struct rtllib_network *beacon,
tag += ht_cap_len - 2; tag += ht_cap_len - 2;
} }
if (ieee->pHTInfo->current_rt2rt_aggregation) { if (ieee->ht_info->current_rt2rt_aggregation) {
tag = skb_put(skb, realtek_ie_len); tag = skb_put(skb, realtek_ie_len);
*tag++ = MFIE_TYPE_GENERIC; *tag++ = MFIE_TYPE_GENERIC;
*tag++ = realtek_ie_len - 2; *tag++ = realtek_ie_len - 2;
@ -1505,7 +1504,7 @@ static void rtllib_associate_complete_wq(void *data)
container_of_work_rsl(data, container_of_work_rsl(data,
struct rtllib_device, struct rtllib_device,
associate_complete_wq); associate_complete_wq);
struct rt_pwr_save_ctrl *pPSC = &(ieee->PowerSaveControl); struct rt_pwr_save_ctrl *psc = &ieee->pwr_save_ctrl;
netdev_info(ieee->dev, "Associated successfully with %pM\n", netdev_info(ieee->dev, "Associated successfully with %pM\n",
ieee->current_network.bssid); ieee->current_network.bssid);
@ -1525,25 +1524,25 @@ static void rtllib_associate_complete_wq(void *data)
ieee->SetWirelessMode(ieee->dev, IEEE_B); ieee->SetWirelessMode(ieee->dev, IEEE_B);
netdev_info(ieee->dev, "Using B rates:%d\n", ieee->rate); netdev_info(ieee->dev, "Using B rates:%d\n", ieee->rate);
} }
if (ieee->pHTInfo->bCurrentHTSupport && ieee->pHTInfo->bEnableHT) { if (ieee->ht_info->bCurrentHTSupport && ieee->ht_info->enable_ht) {
netdev_info(ieee->dev, "Successfully associated, ht enabled\n"); netdev_info(ieee->dev, "Successfully associated, ht enabled\n");
HTOnAssocRsp(ieee); HTOnAssocRsp(ieee);
} else { } else {
netdev_info(ieee->dev, netdev_info(ieee->dev,
"Successfully associated, ht not enabled(%d, %d)\n", "Successfully associated, ht not enabled(%d, %d)\n",
ieee->pHTInfo->bCurrentHTSupport, ieee->ht_info->bCurrentHTSupport,
ieee->pHTInfo->bEnableHT); ieee->ht_info->enable_ht);
memset(ieee->dot11HTOperationalRateSet, 0, 16); memset(ieee->dot11ht_oper_rate_set, 0, 16);
} }
ieee->LinkDetectInfo.SlotNum = 2 * (1 + ieee->link_detect_info.SlotNum = 2 * (1 +
ieee->current_network.beacon_interval / ieee->current_network.beacon_interval /
500); 500);
if (ieee->LinkDetectInfo.NumRecvBcnInPeriod == 0 || if (ieee->link_detect_info.NumRecvBcnInPeriod == 0 ||
ieee->LinkDetectInfo.NumRecvDataInPeriod == 0) { ieee->link_detect_info.NumRecvDataInPeriod == 0) {
ieee->LinkDetectInfo.NumRecvBcnInPeriod = 1; ieee->link_detect_info.NumRecvBcnInPeriod = 1;
ieee->LinkDetectInfo.NumRecvDataInPeriod = 1; ieee->link_detect_info.NumRecvDataInPeriod = 1;
} }
pPSC->LpsIdleCount = 0; psc->LpsIdleCount = 0;
ieee->link_change(ieee->dev); ieee->link_change(ieee->dev);
if (ieee->is_silent_reset) { if (ieee->is_silent_reset) {
@ -1685,7 +1684,7 @@ inline void rtllib_softmac_new_net(struct rtllib_device *ieee,
ieee->current_network.ssid, ieee->current_network.ssid,
ieee->current_network.channel, ieee->current_network.channel,
ieee->current_network.qos_data.supported, ieee->current_network.qos_data.supported,
ieee->pHTInfo->bEnableHT, ieee->ht_info->enable_ht,
ieee->current_network.bssht.bd_support_ht, ieee->current_network.bssht.bd_support_ht,
ieee->current_network.mode, ieee->current_network.mode,
ieee->current_network.flags); ieee->current_network.flags);
@ -1694,7 +1693,7 @@ inline void rtllib_softmac_new_net(struct rtllib_device *ieee,
!(ieee->softmac_features & IEEE_SOFTMAC_SCAN)) !(ieee->softmac_features & IEEE_SOFTMAC_SCAN))
rtllib_stop_scan_syncro(ieee); rtllib_stop_scan_syncro(ieee);
HTResetIOTSetting(ieee->pHTInfo); HTResetIOTSetting(ieee->ht_info);
ieee->wmm_acm = 0; ieee->wmm_acm = 0;
if (ieee->iw_mode == IW_MODE_INFRA) { if (ieee->iw_mode == IW_MODE_INFRA) {
/* Join the network for the first time */ /* Join the network for the first time */
@ -1704,7 +1703,7 @@ inline void rtllib_softmac_new_net(struct rtllib_device *ieee,
HTResetSelfAndSavePeerSetting(ieee, HTResetSelfAndSavePeerSetting(ieee,
&(ieee->current_network)); &(ieee->current_network));
else else
ieee->pHTInfo->bCurrentHTSupport = ieee->ht_info->bCurrentHTSupport =
false; false;
ieee->state = RTLLIB_ASSOCIATING; ieee->state = RTLLIB_ASSOCIATING;
@ -1729,7 +1728,7 @@ inline void rtllib_softmac_new_net(struct rtllib_device *ieee,
netdev_info(ieee->dev, netdev_info(ieee->dev,
"Using B rates\n"); "Using B rates\n");
} }
memset(ieee->dot11HTOperationalRateSet, 0, 16); memset(ieee->dot11ht_oper_rate_set, 0, 16);
ieee->state = RTLLIB_LINKED; ieee->state = RTLLIB_LINKED;
} }
} }
@ -1894,7 +1893,7 @@ static inline u16 assoc_parse(struct rtllib_device *ieee, struct sk_buff *skb,
((ieee->mode == IEEE_G) && ((ieee->mode == IEEE_G) &&
(ieee->current_network.mode == IEEE_N_24G) && (ieee->current_network.mode == IEEE_N_24G) &&
(ieee->AsocRetryCount++ < (RT_ASOC_RETRY_LIMIT-1)))) { (ieee->AsocRetryCount++ < (RT_ASOC_RETRY_LIMIT-1)))) {
ieee->pHTInfo->iot_action |= HT_IOT_ACT_PURE_N_MODE; ieee->ht_info->iot_action |= HT_IOT_ACT_PURE_N_MODE;
} else { } else {
ieee->AsocRetryCount = 0; ieee->AsocRetryCount = 0;
} }
@ -1961,7 +1960,7 @@ static short rtllib_sta_ps_sleep(struct rtllib_device *ieee, u64 *time)
{ {
int timeout; int timeout;
u8 dtim; u8 dtim;
struct rt_pwr_save_ctrl *pPSC = &(ieee->PowerSaveControl); struct rt_pwr_save_ctrl *psc = &ieee->pwr_save_ctrl;
if (ieee->LPSDelayCnt) { if (ieee->LPSDelayCnt) {
ieee->LPSDelayCnt--; ieee->LPSDelayCnt--;
@ -1991,21 +1990,21 @@ static short rtllib_sta_ps_sleep(struct rtllib_device *ieee, u64 *time)
if (time) { if (time) {
if (ieee->bAwakePktSent) { if (ieee->bAwakePktSent) {
pPSC->LPSAwakeIntvl = 1; psc->LPSAwakeIntvl = 1;
} else { } else {
u8 MaxPeriod = 1; u8 MaxPeriod = 1;
if (pPSC->LPSAwakeIntvl == 0) if (psc->LPSAwakeIntvl == 0)
pPSC->LPSAwakeIntvl = 1; psc->LPSAwakeIntvl = 1;
if (pPSC->RegMaxLPSAwakeIntvl == 0) if (psc->reg_max_lps_awake_intvl == 0)
MaxPeriod = 1; MaxPeriod = 1;
else if (pPSC->RegMaxLPSAwakeIntvl == 0xFF) else if (psc->reg_max_lps_awake_intvl == 0xFF)
MaxPeriod = ieee->current_network.dtim_period; MaxPeriod = ieee->current_network.dtim_period;
else else
MaxPeriod = pPSC->RegMaxLPSAwakeIntvl; MaxPeriod = psc->reg_max_lps_awake_intvl;
pPSC->LPSAwakeIntvl = (pPSC->LPSAwakeIntvl >= psc->LPSAwakeIntvl = (psc->LPSAwakeIntvl >=
MaxPeriod) ? MaxPeriod : MaxPeriod) ? MaxPeriod :
(pPSC->LPSAwakeIntvl + 1); (psc->LPSAwakeIntvl + 1);
} }
{ {
u8 LPSAwakeIntvl_tmp = 0; u8 LPSAwakeIntvl_tmp = 0;
@ -2013,23 +2012,23 @@ static short rtllib_sta_ps_sleep(struct rtllib_device *ieee, u64 *time)
u8 count = ieee->current_network.tim.tim_count; u8 count = ieee->current_network.tim.tim_count;
if (count == 0) { if (count == 0) {
if (pPSC->LPSAwakeIntvl > period) if (psc->LPSAwakeIntvl > period)
LPSAwakeIntvl_tmp = period + LPSAwakeIntvl_tmp = period +
(pPSC->LPSAwakeIntvl - (psc->LPSAwakeIntvl -
period) - period) -
((pPSC->LPSAwakeIntvl-period) % ((psc->LPSAwakeIntvl-period) %
period); period);
else else
LPSAwakeIntvl_tmp = pPSC->LPSAwakeIntvl; LPSAwakeIntvl_tmp = psc->LPSAwakeIntvl;
} else { } else {
if (pPSC->LPSAwakeIntvl > if (psc->LPSAwakeIntvl >
ieee->current_network.tim.tim_count) ieee->current_network.tim.tim_count)
LPSAwakeIntvl_tmp = count + LPSAwakeIntvl_tmp = count +
(pPSC->LPSAwakeIntvl - count) - (psc->LPSAwakeIntvl - count) -
((pPSC->LPSAwakeIntvl-count)%period); ((psc->LPSAwakeIntvl-count)%period);
else else
LPSAwakeIntvl_tmp = pPSC->LPSAwakeIntvl; LPSAwakeIntvl_tmp = psc->LPSAwakeIntvl;
} }
*time = ieee->current_network.last_dtim_sta_time *time = ieee->current_network.last_dtim_sta_time
@ -2101,7 +2100,7 @@ static void rtllib_sta_wakeup(struct rtllib_device *ieee, short nl)
{ {
if (ieee->sta_sleep == LPS_IS_WAKE) { if (ieee->sta_sleep == LPS_IS_WAKE) {
if (nl) { if (nl) {
if (ieee->pHTInfo->iot_action & if (ieee->ht_info->iot_action &
HT_IOT_ACT_NULL_DATA_POWER_SAVING) { HT_IOT_ACT_NULL_DATA_POWER_SAVING) {
ieee->ack_tx_to_ieee = 1; ieee->ack_tx_to_ieee = 1;
rtllib_sta_ps_send_null_frame(ieee, 0); rtllib_sta_ps_send_null_frame(ieee, 0);
@ -2117,7 +2116,7 @@ static void rtllib_sta_wakeup(struct rtllib_device *ieee, short nl)
if (ieee->sta_sleep == LPS_IS_SLEEP) if (ieee->sta_sleep == LPS_IS_SLEEP)
ieee->sta_wake_up(ieee->dev); ieee->sta_wake_up(ieee->dev);
if (nl) { if (nl) {
if (ieee->pHTInfo->iot_action & if (ieee->ht_info->iot_action &
HT_IOT_ACT_NULL_DATA_POWER_SAVING) { HT_IOT_ACT_NULL_DATA_POWER_SAVING) {
ieee->ack_tx_to_ieee = 1; ieee->ack_tx_to_ieee = 1;
rtllib_sta_ps_send_null_frame(ieee, 0); rtllib_sta_ps_send_null_frame(ieee, 0);
@ -2152,7 +2151,7 @@ void rtllib_ps_tx_ack(struct rtllib_device *ieee, short success)
if ((ieee->sta_sleep == LPS_IS_WAKE) && !success) { if ((ieee->sta_sleep == LPS_IS_WAKE) && !success) {
spin_lock_irqsave(&ieee->mgmt_tx_lock, flags2); spin_lock_irqsave(&ieee->mgmt_tx_lock, flags2);
if (ieee->pHTInfo->iot_action & if (ieee->ht_info->iot_action &
HT_IOT_ACT_NULL_DATA_POWER_SAVING) HT_IOT_ACT_NULL_DATA_POWER_SAVING)
rtllib_sta_ps_send_null_frame(ieee, 0); rtllib_sta_ps_send_null_frame(ieee, 0);
else else
@ -2236,10 +2235,10 @@ rtllib_rx_assoc_resp(struct rtllib_device *ieee, struct sk_buff *skb,
kfree(network); kfree(network);
return 1; return 1;
} }
memcpy(ieee->pHTInfo->PeerHTCapBuf, memcpy(ieee->ht_info->PeerHTCapBuf,
network->bssht.bd_ht_cap_buf, network->bssht.bd_ht_cap_buf,
network->bssht.bd_ht_cap_len); network->bssht.bd_ht_cap_len);
memcpy(ieee->pHTInfo->PeerHTInfoBuf, memcpy(ieee->ht_info->PeerHTInfoBuf,
network->bssht.bd_ht_info_buf, network->bssht.bd_ht_info_buf,
network->bssht.bd_ht_info_len); network->bssht.bd_ht_info_len);
if (ieee->handle_assoc_response != NULL) if (ieee->handle_assoc_response != NULL)
@ -2296,7 +2295,7 @@ static void rtllib_rx_auth_resp(struct rtllib_device *ieee, struct sk_buff *skb)
if (ieee->open_wep || !challenge) { if (ieee->open_wep || !challenge) {
ieee->state = RTLLIB_ASSOCIATING_AUTHENTICATED; ieee->state = RTLLIB_ASSOCIATING_AUTHENTICATED;
ieee->softmac_stats.rx_auth_rs_ok++; ieee->softmac_stats.rx_auth_rs_ok++;
if (!(ieee->pHTInfo->iot_action & HT_IOT_ACT_PURE_N_MODE)) { if (!(ieee->ht_info->iot_action & HT_IOT_ACT_PURE_N_MODE)) {
if (!ieee->GetNmodeSupportBySecCfg(ieee->dev)) { if (!ieee->GetNmodeSupportBySecCfg(ieee->dev)) {
if (IsHTHalfNmodeAPs(ieee)) { if (IsHTHalfNmodeAPs(ieee)) {
bSupportNmode = true; bSupportNmode = true;
@ -2370,7 +2369,7 @@ rtllib_rx_deauth(struct rtllib_device *ieee, struct sk_buff *skb)
ieee->state = RTLLIB_ASSOCIATING; ieee->state = RTLLIB_ASSOCIATING;
ieee->softmac_stats.reassoc++; ieee->softmac_stats.reassoc++;
ieee->is_roaming = true; ieee->is_roaming = true;
ieee->LinkDetectInfo.bBusyTraffic = false; ieee->link_detect_info.bBusyTraffic = false;
rtllib_disassociate(ieee); rtllib_disassociate(ieee);
RemovePeerTS(ieee, header->addr2); RemovePeerTS(ieee, header->addr2);
if (ieee->LedControlHandler != NULL) if (ieee->LedControlHandler != NULL)
@ -2670,7 +2669,7 @@ static void rtllib_start_ibss_wq(void *data)
if ((ieee->mode == IEEE_N_24G) || (ieee->mode == IEEE_N_5G)) if ((ieee->mode == IEEE_N_24G) || (ieee->mode == IEEE_N_5G))
HTUseDefaultSetting(ieee); HTUseDefaultSetting(ieee);
else else
ieee->pHTInfo->bCurrentHTSupport = false; ieee->ht_info->bCurrentHTSupport = false;
ieee->SetHwRegHandler(ieee->dev, HW_VAR_MEDIA_STATUS, ieee->SetHwRegHandler(ieee->dev, HW_VAR_MEDIA_STATUS,
(u8 *)(&ieee->state)); (u8 *)(&ieee->state));
@ -2964,13 +2963,13 @@ int rtllib_softmac_init(struct rtllib_device *ieee)
if (!ieee->dot11d_info) if (!ieee->dot11d_info)
return -ENOMEM; return -ENOMEM;
ieee->LinkDetectInfo.SlotIndex = 0; ieee->link_detect_info.SlotIndex = 0;
ieee->LinkDetectInfo.SlotNum = 2; ieee->link_detect_info.SlotNum = 2;
ieee->LinkDetectInfo.NumRecvBcnInPeriod = 0; ieee->link_detect_info.NumRecvBcnInPeriod = 0;
ieee->LinkDetectInfo.NumRecvDataInPeriod = 0; ieee->link_detect_info.NumRecvDataInPeriod = 0;
ieee->LinkDetectInfo.NumTxOkInPeriod = 0; ieee->link_detect_info.NumTxOkInPeriod = 0;
ieee->LinkDetectInfo.NumRxOkInPeriod = 0; ieee->link_detect_info.NumRxOkInPeriod = 0;
ieee->LinkDetectInfo.NumRxUnicastOkInPeriod = 0; ieee->link_detect_info.NumRxUnicastOkInPeriod = 0;
ieee->bIsAggregateFrame = false; ieee->bIsAggregateFrame = false;
ieee->assoc_id = 0; ieee->assoc_id = 0;
ieee->queue_stop = 0; ieee->queue_stop = 0;
@ -2985,13 +2984,13 @@ int rtllib_softmac_init(struct rtllib_device *ieee)
ieee->ps = RTLLIB_PS_DISABLED; ieee->ps = RTLLIB_PS_DISABLED;
ieee->sta_sleep = LPS_IS_WAKE; ieee->sta_sleep = LPS_IS_WAKE;
ieee->Regdot11HTOperationalRateSet[0] = 0xff; ieee->reg_dot11ht_oper_rate_set[0] = 0xff;
ieee->Regdot11HTOperationalRateSet[1] = 0xff; ieee->reg_dot11ht_oper_rate_set[1] = 0xff;
ieee->Regdot11HTOperationalRateSet[4] = 0x01; ieee->reg_dot11ht_oper_rate_set[4] = 0x01;
ieee->Regdot11TxHTOperationalRateSet[0] = 0xff; ieee->reg_dot11tx_ht_oper_rate_set[0] = 0xff;
ieee->Regdot11TxHTOperationalRateSet[1] = 0xff; ieee->reg_dot11tx_ht_oper_rate_set[1] = 0xff;
ieee->Regdot11TxHTOperationalRateSet[4] = 0x01; ieee->reg_dot11tx_ht_oper_rate_set[4] = 0x01;
ieee->FirstIe_InScan = false; ieee->FirstIe_InScan = false;
ieee->actscanning = false; ieee->actscanning = false;

View File

@ -359,11 +359,11 @@ void rtllib_wx_sync_scan_wq(void *data)
if (ieee->ScanOperationBackupHandler) if (ieee->ScanOperationBackupHandler)
ieee->ScanOperationBackupHandler(ieee->dev, SCAN_OPT_BACKUP); ieee->ScanOperationBackupHandler(ieee->dev, SCAN_OPT_BACKUP);
if (ieee->pHTInfo->bCurrentHTSupport && ieee->pHTInfo->bEnableHT && if (ieee->ht_info->bCurrentHTSupport && ieee->ht_info->enable_ht &&
ieee->pHTInfo->bCurBW40MHz) { ieee->ht_info->bCurBW40MHz) {
b40M = 1; b40M = 1;
chan_offset = ieee->pHTInfo->CurSTAExtChnlOffset; chan_offset = ieee->ht_info->CurSTAExtChnlOffset;
bandwidth = (enum ht_channel_width)ieee->pHTInfo->bCurBW40MHz; bandwidth = (enum ht_channel_width)ieee->ht_info->bCurBW40MHz;
ieee->SetBWModeHandler(ieee->dev, HT_CHANNEL_WIDTH_20, ieee->SetBWModeHandler(ieee->dev, HT_CHANNEL_WIDTH_20,
HT_EXTCHNL_OFFSET_NO_EXT); HT_EXTCHNL_OFFSET_NO_EXT);
} }
@ -391,10 +391,10 @@ void rtllib_wx_sync_scan_wq(void *data)
/* Notify AP that I wake up again */ /* Notify AP that I wake up again */
rtllib_sta_ps_send_null_frame(ieee, 0); rtllib_sta_ps_send_null_frame(ieee, 0);
if (ieee->LinkDetectInfo.NumRecvBcnInPeriod == 0 || if (ieee->link_detect_info.NumRecvBcnInPeriod == 0 ||
ieee->LinkDetectInfo.NumRecvDataInPeriod == 0) { ieee->link_detect_info.NumRecvDataInPeriod == 0) {
ieee->LinkDetectInfo.NumRecvBcnInPeriod = 1; ieee->link_detect_info.NumRecvBcnInPeriod = 1;
ieee->LinkDetectInfo.NumRecvDataInPeriod = 1; ieee->link_detect_info.NumRecvDataInPeriod = 1;
} }
if (ieee->data_hard_resume) if (ieee->data_hard_resume)
@ -564,9 +564,8 @@ int rtllib_wx_set_power(struct rtllib_device *ieee,
ieee->ps = RTLLIB_PS_DISABLED; ieee->ps = RTLLIB_PS_DISABLED;
goto exit; goto exit;
} }
if (wrqu->power.flags & IW_POWER_TIMEOUT) { if (wrqu->power.flags & IW_POWER_TIMEOUT)
ieee->ps_timeout = wrqu->power.value / 1000; ieee->ps_timeout = wrqu->power.value / 1000;
}
if (wrqu->power.flags & IW_POWER_PERIOD) if (wrqu->power.flags & IW_POWER_PERIOD)
ieee->ps_period = wrqu->power.value / 1000; ieee->ps_period = wrqu->power.value / 1000;

View File

@ -191,7 +191,6 @@ int rtllib_encrypt_fragment(struct rtllib_device *ieee, struct sk_buff *frag,
return 0; return 0;
} }
void rtllib_txb_free(struct rtllib_txb *txb) void rtllib_txb_free(struct rtllib_txb *txb)
{ {
if (unlikely(!txb)) if (unlikely(!txb))
@ -267,14 +266,14 @@ static void rtllib_tx_query_agg_cap(struct rtllib_device *ieee,
struct sk_buff *skb, struct sk_buff *skb,
struct cb_desc *tcb_desc) struct cb_desc *tcb_desc)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
struct tx_ts_record *pTxTs = NULL; struct tx_ts_record *pTxTs = NULL;
struct rtllib_hdr_1addr *hdr = (struct rtllib_hdr_1addr *)skb->data; struct rtllib_hdr_1addr *hdr = (struct rtllib_hdr_1addr *)skb->data;
if (rtllib_act_scanning(ieee, false)) if (rtllib_act_scanning(ieee, false))
return; return;
if (!pHTInfo->bCurrentHTSupport || !pHTInfo->bEnableHT) if (!ht_info->bCurrentHTSupport || !ht_info->enable_ht)
return; return;
if (!IsQoSDataFrame(skb->data)) if (!IsQoSDataFrame(skb->data))
return; return;
@ -284,14 +283,14 @@ static void rtllib_tx_query_agg_cap(struct rtllib_device *ieee,
if (tcb_desc->bdhcp || ieee->CntAfterLink < 2) if (tcb_desc->bdhcp || ieee->CntAfterLink < 2)
return; return;
if (pHTInfo->iot_action & HT_IOT_ACT_TX_NO_AGGREGATION) if (ht_info->iot_action & HT_IOT_ACT_TX_NO_AGGREGATION)
return; return;
if (!ieee->GetNmodeSupportBySecCfg(ieee->dev)) if (!ieee->GetNmodeSupportBySecCfg(ieee->dev))
return; return;
if (pHTInfo->bCurrentAMPDUEnable) { if (ht_info->bCurrentAMPDUEnable) {
if (!GetTs(ieee, (struct ts_common_info **)(&pTxTs), hdr->addr1, if (!GetTs(ieee, (struct ts_common_info **)(&pTxTs), hdr->addr1,
skb->priority, TX_DIR, true)) { skb->priority, TX_DIR, true)) {
netdev_info(ieee->dev, "%s: can't get TS\n", __func__); netdev_info(ieee->dev, "%s: can't get TS\n", __func__);
return; return;
} }
@ -307,26 +306,26 @@ static void rtllib_tx_query_agg_cap(struct rtllib_device *ieee,
goto FORCED_AGG_SETTING; goto FORCED_AGG_SETTING;
} else if (!pTxTs->bUsingBa) { } else if (!pTxTs->bUsingBa) {
if (SN_LESS(pTxTs->TxAdmittedBARecord.ba_start_seq_ctrl.field.seq_num, if (SN_LESS(pTxTs->TxAdmittedBARecord.ba_start_seq_ctrl.field.seq_num,
(pTxTs->TxCurSeq+1)%4096)) (pTxTs->TxCurSeq + 1) % 4096))
pTxTs->bUsingBa = true; pTxTs->bUsingBa = true;
else else
goto FORCED_AGG_SETTING; goto FORCED_AGG_SETTING;
} }
if (ieee->iw_mode == IW_MODE_INFRA) { if (ieee->iw_mode == IW_MODE_INFRA) {
tcb_desc->bAMPDUEnable = true; tcb_desc->bAMPDUEnable = true;
tcb_desc->ampdu_factor = pHTInfo->CurrentAMPDUFactor; tcb_desc->ampdu_factor = ht_info->CurrentAMPDUFactor;
tcb_desc->ampdu_density = pHTInfo->current_mpdu_density; tcb_desc->ampdu_density = ht_info->current_mpdu_density;
} }
} }
FORCED_AGG_SETTING: FORCED_AGG_SETTING:
switch (pHTInfo->ForcedAMPDUMode) { switch (ht_info->ForcedAMPDUMode) {
case HT_AGG_AUTO: case HT_AGG_AUTO:
break; break;
case HT_AGG_FORCE_ENABLE: case HT_AGG_FORCE_ENABLE:
tcb_desc->bAMPDUEnable = true; tcb_desc->bAMPDUEnable = true;
tcb_desc->ampdu_density = pHTInfo->forced_mpdu_density; tcb_desc->ampdu_density = ht_info->forced_mpdu_density;
tcb_desc->ampdu_factor = pHTInfo->forced_ampdu_factor; tcb_desc->ampdu_factor = ht_info->forced_ampdu_factor;
break; break;
case HT_AGG_FORCE_DISABLE: case HT_AGG_FORCE_DISABLE:
@ -351,32 +350,32 @@ static void rtllib_query_ShortPreambleMode(struct rtllib_device *ieee,
static void rtllib_query_HTCapShortGI(struct rtllib_device *ieee, static void rtllib_query_HTCapShortGI(struct rtllib_device *ieee,
struct cb_desc *tcb_desc) struct cb_desc *tcb_desc)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
tcb_desc->bUseShortGI = false; tcb_desc->bUseShortGI = false;
if (!pHTInfo->bCurrentHTSupport || !pHTInfo->bEnableHT) if (!ht_info->bCurrentHTSupport || !ht_info->enable_ht)
return; return;
if (pHTInfo->forced_short_gi) { if (ht_info->forced_short_gi) {
tcb_desc->bUseShortGI = true; tcb_desc->bUseShortGI = true;
return; return;
} }
if (pHTInfo->bCurBW40MHz && pHTInfo->bCurShortGI40MHz) if (ht_info->bCurBW40MHz && ht_info->bCurShortGI40MHz)
tcb_desc->bUseShortGI = true; tcb_desc->bUseShortGI = true;
else if (!pHTInfo->bCurBW40MHz && pHTInfo->bCurShortGI20MHz) else if (!ht_info->bCurBW40MHz && ht_info->bCurShortGI20MHz)
tcb_desc->bUseShortGI = true; tcb_desc->bUseShortGI = true;
} }
static void rtllib_query_BandwidthMode(struct rtllib_device *ieee, static void rtllib_query_BandwidthMode(struct rtllib_device *ieee,
struct cb_desc *tcb_desc) struct cb_desc *tcb_desc)
{ {
struct rt_hi_throughput *pHTInfo = ieee->pHTInfo; struct rt_hi_throughput *ht_info = ieee->ht_info;
tcb_desc->bPacketBW = false; tcb_desc->bPacketBW = false;
if (!pHTInfo->bCurrentHTSupport || !pHTInfo->bEnableHT) if (!ht_info->bCurrentHTSupport || !ht_info->enable_ht)
return; return;
if (tcb_desc->bMulticast || tcb_desc->bBroadcast) if (tcb_desc->bMulticast || tcb_desc->bBroadcast)
@ -384,7 +383,7 @@ static void rtllib_query_BandwidthMode(struct rtllib_device *ieee,
if ((tcb_desc->data_rate & 0x80) == 0) if ((tcb_desc->data_rate & 0x80) == 0)
return; return;
if (pHTInfo->bCurBW40MHz && pHTInfo->cur_tx_bw40mhz && if (ht_info->bCurBW40MHz && ht_info->cur_tx_bw40mhz &&
!ieee->bandwidth_auto_switch.bforced_tx20Mhz) !ieee->bandwidth_auto_switch.bforced_tx20Mhz)
tcb_desc->bPacketBW = true; tcb_desc->bPacketBW = true;
} }
@ -393,7 +392,7 @@ static void rtllib_query_protectionmode(struct rtllib_device *ieee,
struct cb_desc *tcb_desc, struct cb_desc *tcb_desc,
struct sk_buff *skb) struct sk_buff *skb)
{ {
struct rt_hi_throughput *pHTInfo; struct rt_hi_throughput *ht_info;
tcb_desc->bRTSSTBC = false; tcb_desc->bRTSSTBC = false;
tcb_desc->bRTSUseShortGI = false; tcb_desc->bRTSUseShortGI = false;
@ -404,7 +403,7 @@ static void rtllib_query_protectionmode(struct rtllib_device *ieee,
if (tcb_desc->bBroadcast || tcb_desc->bMulticast) if (tcb_desc->bBroadcast || tcb_desc->bMulticast)
return; return;
if (is_broadcast_ether_addr(skb->data+16)) if (is_broadcast_ether_addr(skb->data + 16))
return; return;
if (ieee->mode < IEEE_N_24G) { if (ieee->mode < IEEE_N_24G) {
@ -419,15 +418,15 @@ static void rtllib_query_protectionmode(struct rtllib_device *ieee,
return; return;
} }
pHTInfo = ieee->pHTInfo; ht_info = ieee->ht_info;
while (true) { while (true) {
if (pHTInfo->iot_action & HT_IOT_ACT_FORCED_CTS2SELF) { if (ht_info->iot_action & HT_IOT_ACT_FORCED_CTS2SELF) {
tcb_desc->bCTSEnable = true; tcb_desc->bCTSEnable = true;
tcb_desc->rts_rate = MGN_24M; tcb_desc->rts_rate = MGN_24M;
tcb_desc->bRTSEnable = true; tcb_desc->bRTSEnable = true;
break; break;
} else if (pHTInfo->iot_action & (HT_IOT_ACT_FORCED_RTS | } else if (ht_info->iot_action & (HT_IOT_ACT_FORCED_RTS |
HT_IOT_ACT_PURE_N_MODE)) { HT_IOT_ACT_PURE_N_MODE)) {
tcb_desc->bRTSEnable = true; tcb_desc->bRTSEnable = true;
tcb_desc->rts_rate = MGN_24M; tcb_desc->rts_rate = MGN_24M;
@ -439,12 +438,12 @@ static void rtllib_query_protectionmode(struct rtllib_device *ieee,
tcb_desc->rts_rate = MGN_24M; tcb_desc->rts_rate = MGN_24M;
break; break;
} }
if (pHTInfo->bCurrentHTSupport && pHTInfo->bEnableHT) { if (ht_info->bCurrentHTSupport && ht_info->enable_ht) {
u8 HTOpMode = pHTInfo->current_op_mode; u8 HTOpMode = ht_info->current_op_mode;
if ((pHTInfo->bCurBW40MHz && (HTOpMode == 2 || if ((ht_info->bCurBW40MHz && (HTOpMode == 2 ||
HTOpMode == 3)) || HTOpMode == 3)) ||
(!pHTInfo->bCurBW40MHz && HTOpMode == 3)) { (!ht_info->bCurBW40MHz && HTOpMode == 3)) {
tcb_desc->rts_rate = MGN_24M; tcb_desc->rts_rate = MGN_24M;
tcb_desc->bRTSEnable = true; tcb_desc->bRTSEnable = true;
break; break;
@ -475,17 +474,16 @@ NO_PROTECTION:
tcb_desc->bRTSBW = false; tcb_desc->bRTSBW = false;
} }
static void rtllib_txrate_selectmode(struct rtllib_device *ieee, static void rtllib_txrate_selectmode(struct rtllib_device *ieee,
struct cb_desc *tcb_desc) struct cb_desc *tcb_desc)
{ {
if (ieee->bTxDisableRateFallBack) if (ieee->tx_dis_rate_fallback)
tcb_desc->bTxDisableRateFallBack = true; tcb_desc->tx_dis_rate_fallback = true;
if (ieee->bTxUseDriverAssingedRate) if (ieee->tx_use_drv_assinged_rate)
tcb_desc->bTxUseDriverAssingedRate = true; tcb_desc->tx_use_drv_assinged_rate = true;
if (!tcb_desc->bTxDisableRateFallBack || if (!tcb_desc->tx_dis_rate_fallback ||
!tcb_desc->bTxUseDriverAssingedRate) { !tcb_desc->tx_use_drv_assinged_rate) {
if (ieee->iw_mode == IW_MODE_INFRA || if (ieee->iw_mode == IW_MODE_INFRA ||
ieee->iw_mode == IW_MODE_ADHOC) ieee->iw_mode == IW_MODE_ADHOC)
tcb_desc->RATRIndex = 0; tcb_desc->RATRIndex = 0;
@ -503,10 +501,10 @@ static u16 rtllib_query_seqnum(struct rtllib_device *ieee, struct sk_buff *skb,
struct tx_ts_record *pTS = NULL; struct tx_ts_record *pTS = NULL;
if (!GetTs(ieee, (struct ts_common_info **)(&pTS), dst, if (!GetTs(ieee, (struct ts_common_info **)(&pTS), dst,
skb->priority, TX_DIR, true)) skb->priority, TX_DIR, true))
return 0; return 0;
seqnum = pTS->TxCurSeq; seqnum = pTS->TxCurSeq;
pTS->TxCurSeq = (pTS->TxCurSeq+1)%4096; pTS->TxCurSeq = (pTS->TxCurSeq + 1) % 4096;
return seqnum; return seqnum;
} }
return 0; return 0;
@ -582,7 +580,6 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
goto success; goto success;
} }
if (likely(ieee->raw_tx == 0)) { if (likely(ieee->raw_tx == 0)) {
if (unlikely(skb->len < SNAP_SIZE + sizeof(u16))) { if (unlikely(skb->len < SNAP_SIZE + sizeof(u16))) {
netdev_warn(ieee->dev, "skb too small (%d).\n", netdev_warn(ieee->dev, "skb too small (%d).\n",
@ -614,14 +611,14 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
if (skb->len > 282) { if (skb->len > 282) {
if (ether_type == ETH_P_IP) { if (ether_type == ETH_P_IP) {
const struct iphdr *ip = (struct iphdr *) const struct iphdr *ip = (struct iphdr *)
((u8 *)skb->data+14); ((u8 *)skb->data + 14);
if (ip->protocol == IPPROTO_UDP) { if (ip->protocol == IPPROTO_UDP) {
struct udphdr *udp; struct udphdr *udp;
udp = (struct udphdr *)((u8 *)ip + udp = (struct udphdr *)((u8 *)ip +
(ip->ihl << 2)); (ip->ihl << 2));
if (((((u8 *)udp)[1] == 68) && if (((((u8 *)udp)[1] == 68) &&
(((u8 *)udp)[3] == 67)) || (((u8 *)udp)[3] == 67)) ||
((((u8 *)udp)[1] == 67) && ((((u8 *)udp)[1] == 67) &&
(((u8 *)udp)[3] == 68))) { (((u8 *)udp)[3] == 68))) {
bdhcp = true; bdhcp = true;
@ -715,11 +712,11 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
/* in case we are a client verify acm is not set for this ac */ /* in case we are a client verify acm is not set for this ac */
while (unlikely(ieee->wmm_acm & (0x01 << skb->priority))) { while (unlikely(ieee->wmm_acm & (0x01 << skb->priority))) {
netdev_info(ieee->dev, "skb->priority = %x\n", netdev_info(ieee->dev, "skb->priority = %x\n",
skb->priority); skb->priority);
if (wme_downgrade_ac(skb)) if (wme_downgrade_ac(skb))
break; break;
netdev_info(ieee->dev, "converted skb->priority = %x\n", netdev_info(ieee->dev, "converted skb->priority = %x\n",
skb->priority); skb->priority);
} }
qos_ctl |= skb->priority; qos_ctl |= skb->priority;
@ -805,8 +802,8 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
* MOREFRAGS bit to the frame control * MOREFRAGS bit to the frame control
*/ */
if (i != nr_frags - 1) { if (i != nr_frags - 1) {
frag_hdr->frame_ctl = cpu_to_le16( frag_hdr->frame_ctl = cpu_to_le16(fc |
fc | RTLLIB_FCTL_MOREFRAGS); RTLLIB_FCTL_MOREFRAGS);
bytes = bytes_per_frag; bytes = bytes_per_frag;
} else { } else {
@ -816,18 +813,18 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
if ((qos_activated) && (!bIsMulticast)) { if ((qos_activated) && (!bIsMulticast)) {
frag_hdr->seq_ctl = frag_hdr->seq_ctl =
cpu_to_le16(rtllib_query_seqnum(ieee, skb_frag, cpu_to_le16(rtllib_query_seqnum(ieee, skb_frag,
header.addr1)); header.addr1));
frag_hdr->seq_ctl = frag_hdr->seq_ctl =
cpu_to_le16(le16_to_cpu(frag_hdr->seq_ctl)<<4 | i); cpu_to_le16(le16_to_cpu(frag_hdr->seq_ctl) << 4 | i);
} else { } else {
frag_hdr->seq_ctl = frag_hdr->seq_ctl =
cpu_to_le16(ieee->seq_ctrl[0]<<4 | i); cpu_to_le16(ieee->seq_ctrl[0] << 4 | i);
} }
/* Put a SNAP header on the first fragment */ /* Put a SNAP header on the first fragment */
if (i == 0) { if (i == 0) {
rtllib_put_snap( rtllib_put_snap(skb_put(skb_frag,
skb_put(skb_frag, SNAP_SIZE + SNAP_SIZE +
sizeof(u16)), ether_type); sizeof(u16)), ether_type);
bytes -= SNAP_SIZE + sizeof(u16); bytes -= SNAP_SIZE + sizeof(u16);
} }
@ -885,19 +882,18 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
tcb_desc->priority = skb->priority; tcb_desc->priority = skb->priority;
if (ether_type == ETH_P_PAE) { if (ether_type == ETH_P_PAE) {
if (ieee->pHTInfo->iot_action & if (ieee->ht_info->iot_action &
HT_IOT_ACT_WA_IOT_Broadcom) { HT_IOT_ACT_WA_IOT_Broadcom) {
tcb_desc->data_rate = tcb_desc->data_rate =
MgntQuery_TxRateExcludeCCKRates(ieee); MgntQuery_TxRateExcludeCCKRates(ieee);
tcb_desc->bTxDisableRateFallBack = false; tcb_desc->tx_dis_rate_fallback = false;
} else { } else {
tcb_desc->data_rate = ieee->basic_rate; tcb_desc->data_rate = ieee->basic_rate;
tcb_desc->bTxDisableRateFallBack = 1; tcb_desc->tx_dis_rate_fallback = 1;
} }
tcb_desc->RATRIndex = 7; tcb_desc->RATRIndex = 7;
tcb_desc->bTxUseDriverAssingedRate = 1; tcb_desc->tx_use_drv_assinged_rate = 1;
} else { } else {
if (is_multicast_ether_addr(header.addr1)) if (is_multicast_ether_addr(header.addr1))
tcb_desc->bMulticast = 1; tcb_desc->bMulticast = 1;
@ -910,19 +906,18 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
tcb_desc->data_rate = rtllib_current_rate(ieee); tcb_desc->data_rate = rtllib_current_rate(ieee);
if (bdhcp) { if (bdhcp) {
if (ieee->pHTInfo->iot_action & if (ieee->ht_info->iot_action &
HT_IOT_ACT_WA_IOT_Broadcom) { HT_IOT_ACT_WA_IOT_Broadcom) {
tcb_desc->data_rate = tcb_desc->data_rate =
MgntQuery_TxRateExcludeCCKRates(ieee); MgntQuery_TxRateExcludeCCKRates(ieee);
tcb_desc->bTxDisableRateFallBack = false; tcb_desc->tx_dis_rate_fallback = false;
} else { } else {
tcb_desc->data_rate = MGN_1M; tcb_desc->data_rate = MGN_1M;
tcb_desc->bTxDisableRateFallBack = 1; tcb_desc->tx_dis_rate_fallback = 1;
} }
tcb_desc->RATRIndex = 7; tcb_desc->RATRIndex = 7;
tcb_desc->bTxUseDriverAssingedRate = 1; tcb_desc->tx_use_drv_assinged_rate = 1;
tcb_desc->bdhcp = 1; tcb_desc->bdhcp = 1;
} }
@ -959,7 +954,6 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
netif_stop_queue(dev); netif_stop_queue(dev);
stats->tx_errors++; stats->tx_errors++;
return 1; return 1;
} }
netdev_tx_t rtllib_xmit(struct sk_buff *skb, struct net_device *dev) netdev_tx_t rtllib_xmit(struct sk_buff *skb, struct net_device *dev)

View File

@ -217,7 +217,7 @@ static inline char *rtl819x_translate_scan(struct rtllib_device *ieee,
p = custom; p = custom;
p += scnprintf(p, MAX_CUSTOM_LEN - (p - custom), p += scnprintf(p, MAX_CUSTOM_LEN - (p - custom),
" Last beacon: %lums ago", " Last beacon: %lums ago",
(jiffies - network->last_scanned) / (HZ / 100)); (100 * (jiffies - network->last_scanned)) / HZ);
iwe.u.data.length = p - custom; iwe.u.data.length = p - custom;
if (iwe.u.data.length) if (iwe.u.data.length)
start = iwe_stream_add_point_rsl(info, start, stop, start = iwe_stream_add_point_rsl(info, start, stop,
@ -258,8 +258,8 @@ int rtllib_wx_get_scan(struct rtllib_device *ieee,
escape_essid(network->ssid, escape_essid(network->ssid,
network->ssid_len), network->ssid_len),
network->bssid, network->bssid,
(jiffies - network->last_scanned) / (100 * (jiffies - network->last_scanned)) /
(HZ / 100)); HZ);
} }
spin_unlock_irqrestore(&ieee->lock, flags); spin_unlock_irqrestore(&ieee->lock, flags);

View File

@ -0,0 +1,16 @@
To-do list:
* Correct the coding style according to Linux guidelines; please read the document
at https://www.kernel.org/doc/html/latest/process/coding-style.html.
* Remove unnecessary debugging/printing macros; for those that are still needed
use the proper kernel API (pr_debug(), dev_dbg(), netdev_dbg()).
* Remove dead code such as unusued functions, variables, fields, etc..
* Use in-kernel API and remove unnecessary wrappers where possible.
* Fix bugs due to code that sleeps in atomic context.
* Remove the HAL layer and migrate its functionality into the relevant parts of
the driver.
* Switch to use LIB80211.
* Switch to use MAC80211.
* Switch to use CFG80211.
* Improve the error handling of various functions, particularly those that use
existing kernel APIs.

View File

@ -223,73 +223,10 @@ struct cb_desc {
#define MAX_IE_LEN 0xff #define MAX_IE_LEN 0xff
// added for kernel conflict // added for kernel conflict
#define ieee80211_crypt_deinit_entries ieee80211_crypt_deinit_entries_rsl
#define ieee80211_crypt_deinit_handler ieee80211_crypt_deinit_handler_rsl
#define ieee80211_crypt_delayed_deinit ieee80211_crypt_delayed_deinit_rsl
#define ieee80211_register_crypto_ops ieee80211_register_crypto_ops_rsl
#define ieee80211_unregister_crypto_ops ieee80211_unregister_crypto_ops_rsl
#define ieee80211_get_crypto_ops ieee80211_get_crypto_ops_rsl
#define ieee80211_ccmp_null ieee80211_ccmp_null_rsl
#define ieee80211_tkip_null ieee80211_tkip_null_rsl
#define free_ieee80211 free_ieee80211_rsl
#define alloc_ieee80211 alloc_ieee80211_rsl
#define ieee80211_rx ieee80211_rx_rsl
#define ieee80211_rx_mgt ieee80211_rx_mgt_rsl
#define ieee80211_get_beacon ieee80211_get_beacon_rsl
#define ieee80211_wake_queue ieee80211_wake_queue_rsl #define ieee80211_wake_queue ieee80211_wake_queue_rsl
#define ieee80211_stop_queue ieee80211_stop_queue_rsl #define ieee80211_stop_queue ieee80211_stop_queue_rsl
#define ieee80211_reset_queue ieee80211_reset_queue_rsl
#define ieee80211_softmac_stop_protocol ieee80211_softmac_stop_protocol_rsl
#define ieee80211_softmac_start_protocol ieee80211_softmac_start_protocol_rsl
#define ieee80211_is_shortslot ieee80211_is_shortslot_rsl
#define ieee80211_is_54g ieee80211_is_54g_rsl
#define ieee80211_wpa_supplicant_ioctl ieee80211_wpa_supplicant_ioctl_rsl
#define ieee80211_ps_tx_ack ieee80211_ps_tx_ack_rsl
#define ieee80211_softmac_xmit ieee80211_softmac_xmit_rsl
#define ieee80211_stop_send_beacons ieee80211_stop_send_beacons_rsl
#define notify_wx_assoc_event notify_wx_assoc_event_rsl #define notify_wx_assoc_event notify_wx_assoc_event_rsl
#define SendDisassociation SendDisassociation_rsl #define SendDisassociation SendDisassociation_rsl
#define ieee80211_disassociate ieee80211_disassociate_rsl
#define ieee80211_start_send_beacons ieee80211_start_send_beacons_rsl
#define ieee80211_stop_scan ieee80211_stop_scan_rsl
#define ieee80211_send_probe_requests ieee80211_send_probe_requests_rsl
#define ieee80211_softmac_scan_syncro ieee80211_softmac_scan_syncro_rsl
#define ieee80211_start_scan_syncro ieee80211_start_scan_syncro_rsl
#define ieee80211_wx_get_essid ieee80211_wx_get_essid_rsl
#define ieee80211_wx_set_essid ieee80211_wx_set_essid_rsl
#define ieee80211_wx_set_rate ieee80211_wx_set_rate_rsl
#define ieee80211_wx_get_rate ieee80211_wx_get_rate_rsl
#define ieee80211_wx_set_wap ieee80211_wx_set_wap_rsl
#define ieee80211_wx_get_wap ieee80211_wx_get_wap_rsl
#define ieee80211_wx_set_mode ieee80211_wx_set_mode_rsl
#define ieee80211_wx_get_mode ieee80211_wx_get_mode_rsl
#define ieee80211_wx_set_scan ieee80211_wx_set_scan_rsl
#define ieee80211_wx_get_freq ieee80211_wx_get_freq_rsl
#define ieee80211_wx_set_freq ieee80211_wx_set_freq_rsl
#define ieee80211_wx_set_rawtx ieee80211_wx_set_rawtx_rsl
#define ieee80211_wx_get_name ieee80211_wx_get_name_rsl
#define ieee80211_wx_set_power ieee80211_wx_set_power_rsl
#define ieee80211_wx_get_power ieee80211_wx_get_power_rsl
#define ieee80211_wlan_frequencies ieee80211_wlan_frequencies_rsl
#define ieee80211_wx_set_rts ieee80211_wx_set_rts_rsl
#define ieee80211_wx_get_rts ieee80211_wx_get_rts_rsl
#define ieee80211_txb_free ieee80211_txb_free_rsl
#define ieee80211_wx_set_gen_ie ieee80211_wx_set_gen_ie_rsl
#define ieee80211_wx_get_scan ieee80211_wx_get_scan_rsl
#define ieee80211_wx_set_encode ieee80211_wx_set_encode_rsl
#define ieee80211_wx_get_encode ieee80211_wx_get_encode_rsl
#define ieee80211_wx_set_mlme ieee80211_wx_set_mlme_rsl
#define ieee80211_wx_set_auth ieee80211_wx_set_auth_rsl
#define ieee80211_wx_set_encode_ext ieee80211_wx_set_encode_ext_rsl
#define ieee80211_wx_get_encode_ext ieee80211_wx_get_encode_ext_rsl
struct ieee_param { struct ieee_param {
@ -2256,7 +2193,6 @@ void ieee80211_ps_tx_ack(struct ieee80211_device *ieee, short success);
void softmac_mgmt_xmit(struct sk_buff *skb, struct ieee80211_device *ieee); void softmac_mgmt_xmit(struct sk_buff *skb, struct ieee80211_device *ieee);
/* ieee80211_crypt_ccmp&tkip&wep.c */ /* ieee80211_crypt_ccmp&tkip&wep.c */
void ieee80211_tkip_null(void);
int ieee80211_crypto_init(void); int ieee80211_crypto_init(void);
void ieee80211_crypto_deinit(void); void ieee80211_crypto_deinit(void);

View File

@ -716,9 +716,3 @@ void ieee80211_crypto_tkip_exit(void)
{ {
ieee80211_unregister_crypto_ops(&ieee80211_crypt_tkip); ieee80211_unregister_crypto_ops(&ieee80211_crypt_tkip);
} }
void ieee80211_tkip_null(void)
{
// printk("============>%s()\n", __func__);
return;
}

View File

@ -159,9 +159,6 @@ struct net_device *alloc_ieee80211(int sizeof_priv)
ieee->last_packet_time[i] = 0; ieee->last_packet_time[i] = 0;
} }
/* These function were added to load crypte module autoly */
ieee80211_tkip_null();
return dev; return dev;
failed: failed:

View File

@ -951,9 +951,11 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
#endif #endif
if (ieee->iw_mode == IW_MODE_MONITOR) { if (ieee->iw_mode == IW_MODE_MONITOR) {
unsigned int len = skb->len;
ieee80211_monitor_rx(ieee, skb, rx_stats); ieee80211_monitor_rx(ieee, skb, rx_stats);
stats->rx_packets++; stats->rx_packets++;
stats->rx_bytes += skb->len; stats->rx_bytes += len;
return 1; return 1;
} }
@ -1806,7 +1808,7 @@ int ieee80211_parse_info_param(struct ieee80211_device *ieee,
info_element->data[0] == 0x00 && info_element->data[0] == 0x00 &&
info_element->data[1] == 0x13 && info_element->data[1] == 0x13 &&
info_element->data[2] == 0x74)) { info_element->data[2] == 0x74)) {
netdev_dbg(ieee->dev, "========> athros AP is exist\n"); netdev_dbg(ieee->dev, "========> Atheros AP exists\n");
network->atheros_cap_exist = true; network->atheros_cap_exist = true;
} else } else
network->atheros_cap_exist = false; network->atheros_cap_exist = false;

View File

@ -304,25 +304,42 @@ int r8712_init_drv_sw(struct _adapter *padapter)
padapter->cmdpriv.padapter = padapter; padapter->cmdpriv.padapter = padapter;
ret = r8712_init_evt_priv(&padapter->evtpriv); ret = r8712_init_evt_priv(&padapter->evtpriv);
if (ret) if (ret)
return ret; goto free_cmd;
ret = r8712_init_mlme_priv(padapter); ret = r8712_init_mlme_priv(padapter);
if (ret) if (ret)
return ret; goto free_evt;
_r8712_init_xmit_priv(&padapter->xmitpriv, padapter); ret = _r8712_init_xmit_priv(&padapter->xmitpriv, padapter);
_r8712_init_recv_priv(&padapter->recvpriv, padapter); if (ret)
goto free_mlme;
ret = _r8712_init_recv_priv(&padapter->recvpriv, padapter);
if (ret)
goto free_xmit;
memset((unsigned char *)&padapter->securitypriv, 0, memset((unsigned char *)&padapter->securitypriv, 0,
sizeof(struct security_priv)); sizeof(struct security_priv));
timer_setup(&padapter->securitypriv.tkip_timer, timer_setup(&padapter->securitypriv.tkip_timer,
r8712_use_tkipkey_handler, 0); r8712_use_tkipkey_handler, 0);
ret = _r8712_init_sta_priv(&padapter->stapriv); ret = _r8712_init_sta_priv(&padapter->stapriv);
if (ret) if (ret)
return ret; goto free_recv;
padapter->stapriv.padapter = padapter; padapter->stapriv.padapter = padapter;
r8712_init_bcmc_stainfo(padapter); r8712_init_bcmc_stainfo(padapter);
r8712_init_pwrctrl_priv(padapter); r8712_init_pwrctrl_priv(padapter);
mp871xinit(padapter); mp871xinit(padapter);
init_default_value(padapter); init_default_value(padapter);
r8712_InitSwLeds(padapter); r8712_InitSwLeds(padapter);
return 0;
free_recv:
_r8712_free_recv_priv(&padapter->recvpriv);
free_xmit:
_free_xmit_priv(&padapter->xmitpriv);
free_mlme:
r8712_free_mlme_priv(&padapter->mlmepriv);
free_evt:
r8712_free_evt_priv(&padapter->evtpriv);
free_cmd:
r8712_free_cmd_priv(&padapter->cmdpriv);
return ret; return ret;
} }

View File

@ -18,15 +18,15 @@
#include "drv_types.h" #include "drv_types.h"
#include <linux/skbuff.h> #include <linux/skbuff.h>
void _r8712_init_recv_priv(struct recv_priv *precvpriv, int _r8712_init_recv_priv(struct recv_priv *precvpriv,
struct _adapter *padapter); struct _adapter *padapter);
void _r8712_free_recv_priv(struct recv_priv *precvpriv); void _r8712_free_recv_priv(struct recv_priv *precvpriv);
void r8712_recv_entry(union recv_frame *precv_frame); void r8712_recv_entry(union recv_frame *precv_frame);
void r8712_recv_indicatepkt(struct _adapter *adapter, void r8712_recv_indicatepkt(struct _adapter *adapter,
union recv_frame *precv_frame); union recv_frame *precv_frame);
void r8712_handle_tkip_mic_err(struct _adapter *padapter, u8 bgroup); void r8712_handle_tkip_mic_err(struct _adapter *padapter, u8 bgroup);
void r8712_init_recv_priv(struct recv_priv *precvpriv, int r8712_init_recv_priv(struct recv_priv *precvpriv,
struct _adapter *padapter); struct _adapter *padapter);
void r8712_free_recv_priv(struct recv_priv *precvpriv); void r8712_free_recv_priv(struct recv_priv *precvpriv);
void r8712_os_recv_resource_alloc(struct _adapter *padapter, void r8712_os_recv_resource_alloc(struct _adapter *padapter,
union recv_frame *precvframe); union recv_frame *precvframe);

View File

@ -30,8 +30,8 @@
static void recv_tasklet(struct tasklet_struct *t); static void recv_tasklet(struct tasklet_struct *t);
void r8712_init_recv_priv(struct recv_priv *precvpriv, int r8712_init_recv_priv(struct recv_priv *precvpriv,
struct _adapter *padapter) struct _adapter *padapter)
{ {
int i; int i;
struct recv_buf *precvbuf; struct recv_buf *precvbuf;
@ -44,7 +44,7 @@ void r8712_init_recv_priv(struct recv_priv *precvpriv,
precvpriv->pallocated_recv_buf = precvpriv->pallocated_recv_buf =
kzalloc(NR_RECVBUFF * sizeof(struct recv_buf) + 4, GFP_ATOMIC); kzalloc(NR_RECVBUFF * sizeof(struct recv_buf) + 4, GFP_ATOMIC);
if (!precvpriv->pallocated_recv_buf) if (!precvpriv->pallocated_recv_buf)
return; return -ENOMEM;
precvpriv->precv_buf = precvpriv->pallocated_recv_buf + 4 - precvpriv->precv_buf = precvpriv->pallocated_recv_buf + 4 -
((addr_t)(precvpriv->pallocated_recv_buf) & 3); ((addr_t)(precvpriv->pallocated_recv_buf) & 3);
precvbuf = (struct recv_buf *)precvpriv->precv_buf; precvbuf = (struct recv_buf *)precvpriv->precv_buf;
@ -75,6 +75,7 @@ void r8712_init_recv_priv(struct recv_priv *precvpriv,
} }
pskb = NULL; pskb = NULL;
} }
return 0;
} }
void r8712_free_recv_priv(struct recv_priv *precvpriv) void r8712_free_recv_priv(struct recv_priv *precvpriv)

View File

@ -601,7 +601,7 @@ int r8712_xmitframe_complete(struct _adapter *padapter,
#ifdef CONFIG_R8712_TX_AGGR #ifdef CONFIG_R8712_TX_AGGR
struct xmit_frame *p2ndxmitframe = NULL; struct xmit_frame *p2ndxmitframe = NULL;
#else #else
int res = _SUCCESS, xcnt = 0; int res = _SUCCESS;
#endif #endif
phwxmits = pxmitpriv->hwxmits; phwxmits = pxmitpriv->hwxmits;
@ -673,7 +673,6 @@ int r8712_xmitframe_complete(struct _adapter *padapter,
dump_xframe(padapter, pxmitframe); dump_xframe(padapter, pxmitframe);
else else
r8712_free_xmitframe_ex(pxmitpriv, pxmitframe); r8712_free_xmitframe_ex(pxmitpriv, pxmitframe);
xcnt++;
#endif #endif
} else { /* pxmitframe == NULL && p2ndxmitframe == NULL */ } else { /* pxmitframe == NULL && p2ndxmitframe == NULL */

View File

@ -17,9 +17,7 @@
#define _RTL871X_RECV_C_ #define _RTL871X_RECV_C_
#include <linux/ip.h> #include <linux/ip.h>
#include <linux/slab.h>
#include <linux/if_ether.h> #include <linux/if_ether.h>
#include <linux/kmemleak.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/ieee80211.h> #include <linux/ieee80211.h>
#include <net/cfg80211.h> #include <net/cfg80211.h>
@ -44,9 +42,10 @@ void _r8712_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv)
_init_queue(&psta_recvpriv->defrag_q); _init_queue(&psta_recvpriv->defrag_q);
} }
void _r8712_init_recv_priv(struct recv_priv *precvpriv, int _r8712_init_recv_priv(struct recv_priv *precvpriv,
struct _adapter *padapter) struct _adapter *padapter)
{ {
int ret;
sint i; sint i;
union recv_frame *precvframe; union recv_frame *precvframe;
@ -60,8 +59,7 @@ void _r8712_init_recv_priv(struct recv_priv *precvpriv,
sizeof(union recv_frame) + RXFRAME_ALIGN_SZ, sizeof(union recv_frame) + RXFRAME_ALIGN_SZ,
GFP_ATOMIC); GFP_ATOMIC);
if (!precvpriv->pallocated_frame_buf) if (!precvpriv->pallocated_frame_buf)
return; return -ENOMEM;
kmemleak_not_leak(precvpriv->pallocated_frame_buf);
precvpriv->precv_frame_buf = precvpriv->pallocated_frame_buf + precvpriv->precv_frame_buf = precvpriv->pallocated_frame_buf +
RXFRAME_ALIGN_SZ - RXFRAME_ALIGN_SZ -
((addr_t)(precvpriv->pallocated_frame_buf) & ((addr_t)(precvpriv->pallocated_frame_buf) &
@ -76,7 +74,11 @@ void _r8712_init_recv_priv(struct recv_priv *precvpriv,
precvframe++; precvframe++;
} }
precvpriv->rx_pending_cnt = 1; precvpriv->rx_pending_cnt = 1;
r8712_init_recv_priv(precvpriv, padapter); ret = r8712_init_recv_priv(precvpriv, padapter);
if (ret)
kfree(precvpriv->pallocated_frame_buf);
return ret;
} }
void _r8712_free_recv_priv(struct recv_priv *precvpriv) void _r8712_free_recv_priv(struct recv_priv *precvpriv)

View File

@ -282,7 +282,7 @@ u8 efuse_OneByteWrite(struct adapter *padapter, u16 addr, u8 data, bool bPseudoT
{ {
u8 tmpidx = 0; u8 tmpidx = 0;
u8 bResult = false; u8 bResult = false;
u32 efuseValue = 0; u32 efuseValue;
if (bPseudoTest) if (bPseudoTest)
return Efuse_Write1ByteToFakeContent(addr, data); return Efuse_Write1ByteToFakeContent(addr, data);

View File

@ -1063,18 +1063,18 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork)
/* parsing HT_CAP_IE */ /* parsing HT_CAP_IE */
p = rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAPABILITY, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_); p = rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_CAPABILITY, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_);
if (p && len > 0) { if (p && len > 0) {
pht_cap = (struct ieee80211_ht_cap *)(p + 2); pht_cap = (struct ieee80211_ht_cap *)(p + 2);
pnetwork->bcn_info.ht_cap_info = le16_to_cpu(pht_cap->cap_info); pnetwork->bcn_info.ht_cap_info = le16_to_cpu(pht_cap->cap_info);
} else { } else {
pnetwork->bcn_info.ht_cap_info = 0; pnetwork->bcn_info.ht_cap_info = 0;
} }
/* parsing HT_INFO_IE */ /* parsing HT_INFO_IE */
p = rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_OPERATION, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_); p = rtw_get_ie(pnetwork->network.ies + _FIXED_IE_LENGTH_, WLAN_EID_HT_OPERATION, &len, pnetwork->network.ie_length - _FIXED_IE_LENGTH_);
if (p && len > 0) { if (p && len > 0) {
pht_info = (struct HT_info_element *)(p + 2); pht_info = (struct HT_info_element *)(p + 2);
pnetwork->bcn_info.ht_info_infos_0 = pht_info->infos[0]; pnetwork->bcn_info.ht_info_infos_0 = pht_info->infos[0];
} else { } else {
pnetwork->bcn_info.ht_info_infos_0 = 0; pnetwork->bcn_info.ht_info_infos_0 = 0;
} }
} }

View File

@ -78,6 +78,7 @@ u8 rtw_do_join(struct adapter *padapter)
goto exit; goto exit;
} else { } else {
int select_ret; int select_ret;
spin_unlock_bh(&(pmlmepriv->scanned_queue.lock)); spin_unlock_bh(&(pmlmepriv->scanned_queue.lock));
select_ret = rtw_select_and_join_from_scanned_queue(pmlmepriv); select_ret = rtw_select_and_join_from_scanned_queue(pmlmepriv);
if (select_ret == _SUCCESS) { if (select_ret == _SUCCESS) {
@ -159,7 +160,7 @@ u8 rtw_set_802_11_ssid(struct adapter *padapter, struct ndis_802_11_ssid *ssid)
if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE) == true) { if (check_fwstate(pmlmepriv, _FW_LINKED|WIFI_ADHOC_MASTER_STATE) == true) {
if ((pmlmepriv->assoc_ssid.ssid_length == ssid->ssid_length) && if ((pmlmepriv->assoc_ssid.ssid_length == ssid->ssid_length) &&
(!memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid, ssid->ssid_length))) { (!memcmp(&pmlmepriv->assoc_ssid.ssid, ssid->ssid, ssid->ssid_length))) {
if ((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == false)) { if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == false) {
if (rtw_is_same_ibss(padapter, pnetwork) == false) { if (rtw_is_same_ibss(padapter, pnetwork) == false) {
/* if in WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE, create bss or rejoin again */ /* if in WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE, create bss or rejoin again */
rtw_disassoc_cmd(padapter, 0, true); rtw_disassoc_cmd(padapter, 0, true);
@ -311,7 +312,7 @@ u8 rtw_set_802_11_infrastructure_mode(struct adapter *padapter,
if ((*pold_state == Ndis802_11Infrastructure) || (*pold_state == Ndis802_11IBSS)) { if ((*pold_state == Ndis802_11Infrastructure) || (*pold_state == Ndis802_11IBSS)) {
if (check_fwstate(pmlmepriv, _FW_LINKED) == true) if (check_fwstate(pmlmepriv, _FW_LINKED) == true)
rtw_indicate_disconnect(padapter); /* will clr Linked_state; before this function, we must have checked whether issue dis-assoc_cmd or not */ rtw_indicate_disconnect(padapter); /* will clr Linked_state; before this function, we must have checked whether issue dis-assoc_cmd or not */
} }
*pold_state = networktype; *pold_state = networktype;
@ -367,7 +368,7 @@ u8 rtw_set_802_11_disassociate(struct adapter *padapter)
u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_802_11_ssid *pssid, int ssid_max_num) u8 rtw_set_802_11_bssid_list_scan(struct adapter *padapter, struct ndis_802_11_ssid *pssid, int ssid_max_num)
{ {
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
u8 res = true; u8 res = true;
if (!padapter) { if (!padapter) {
@ -462,11 +463,11 @@ exit:
} }
/* /*
* rtw_get_cur_max_rate - * rtw_get_cur_max_rate -
* @adapter: pointer to struct adapter structure * @adapter: pointer to struct adapter structure
* *
* Return 0 or 100Kbps * Return 0 or 100Kbps
*/ */
u16 rtw_get_cur_max_rate(struct adapter *adapter) u16 rtw_get_cur_max_rate(struct adapter *adapter)
{ {
int i = 0; int i = 0;

View File

@ -389,7 +389,7 @@ int is_same_network(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst, u8 fea
__le16 tmps, tmpd; __le16 tmps, tmpd;
if (rtw_bug_check(dst, src, &s_cap, &d_cap) == false) if (rtw_bug_check(dst, src, &s_cap, &d_cap) == false)
return false; return false;
memcpy((u8 *)&tmps, rtw_get_capability_from_ie(src->ies), 2); memcpy((u8 *)&tmps, rtw_get_capability_from_ie(src->ies), 2);
memcpy((u8 *)&tmpd, rtw_get_capability_from_ie(dst->ies), 2); memcpy((u8 *)&tmpd, rtw_get_capability_from_ie(dst->ies), 2);
@ -669,7 +669,7 @@ int rtw_is_desired_network(struct adapter *adapter, struct wlan_network *pnetwor
uint ie_len = 0; uint ie_len = 0;
if ((desired_encmode == Ndis802_11EncryptionDisabled) && (privacy != 0)) if ((desired_encmode == Ndis802_11EncryptionDisabled) && (privacy != 0))
bselected = false; bselected = false;
if (psecuritypriv->ndisauthtype == Ndis802_11AuthModeWPA2PSK) { if (psecuritypriv->ndisauthtype == Ndis802_11AuthModeWPA2PSK) {
p = rtw_get_ie(pnetwork->network.ies + _BEACON_IE_OFFSET_, WLAN_EID_RSN, &ie_len, (pnetwork->network.ie_length - _BEACON_IE_OFFSET_)); p = rtw_get_ie(pnetwork->network.ies + _BEACON_IE_OFFSET_, WLAN_EID_RSN, &ie_len, (pnetwork->network.ie_length - _BEACON_IE_OFFSET_));
@ -795,7 +795,7 @@ void rtw_surveydone_event_callback(struct adapter *adapter, u8 *pbuf)
pmlmepriv->to_join = false; pmlmepriv->to_join = false;
s_ret = rtw_select_and_join_from_scanned_queue(pmlmepriv); s_ret = rtw_select_and_join_from_scanned_queue(pmlmepriv);
if (s_ret == _SUCCESS) { if (s_ret == _SUCCESS) {
_set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT); _set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT);
} else if (s_ret == 2) {/* there is no need to wait for join */ } else if (s_ret == 2) {/* there is no need to wait for join */
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING); _clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
rtw_indicate_connect(adapter); rtw_indicate_connect(adapter);
@ -2010,8 +2010,8 @@ int rtw_restruct_wmm_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, uint in_
if (in_ie[i] == 0xDD && in_ie[i+2] == 0x00 && in_ie[i+3] == 0x50 && in_ie[i+4] == 0xF2 && in_ie[i+5] == 0x02 && i+5 < in_len) { /* WMM element ID and OUI */ if (in_ie[i] == 0xDD && in_ie[i+2] == 0x00 && in_ie[i+3] == 0x50 && in_ie[i+4] == 0xF2 && in_ie[i+5] == 0x02 && i+5 < in_len) { /* WMM element ID and OUI */
for (j = i; j < i + 9; j++) { for (j = i; j < i + 9; j++) {
out_ie[ielength] = in_ie[j]; out_ie[ielength] = in_ie[j];
ielength++; ielength++;
} }
out_ie[initial_out_len + 1] = 0x07; out_ie[initial_out_len + 1] = 0x07;
out_ie[initial_out_len + 6] = 0x00; out_ie[initial_out_len + 6] = 0x00;
@ -2064,15 +2064,13 @@ static int rtw_append_pmkid(struct adapter *Adapter, int iEntry, u8 *ie, uint ie
if (ie[13] <= 20) { if (ie[13] <= 20) {
/* The RSN IE didn't include the PMK ID, append the PMK information */ /* The RSN IE didn't include the PMK ID, append the PMK information */
ie[ie_len] = 1; ie[ie_len] = 1;
ie_len++; ie_len++;
ie[ie_len] = 0; /* PMKID count = 0x0100 */ ie[ie_len] = 0; /* PMKID count = 0x0100 */
ie_len++; ie_len++;
memcpy(&ie[ie_len], &psecuritypriv->PMKIDList[iEntry].PMKID, 16); memcpy(&ie[ie_len], &psecuritypriv->PMKIDList[iEntry].PMKID, 16);
ie_len += 16;
ie_len += 16; ie[13] += 18;/* PMKID length = 2+16 */
ie[13] += 18;/* PMKID length = 2+16 */
} }
return ie_len; return ie_len;
} }
@ -2091,9 +2089,9 @@ signed int rtw_restruct_sec_ie(struct adapter *adapter, u8 *in_ie, u8 *out_ie, u
memcpy(out_ie, in_ie, 12); memcpy(out_ie, in_ie, 12);
ielength = 12; ielength = 12;
if ((ndisauthmode == Ndis802_11AuthModeWPA) || (ndisauthmode == Ndis802_11AuthModeWPAPSK)) if ((ndisauthmode == Ndis802_11AuthModeWPA) || (ndisauthmode == Ndis802_11AuthModeWPAPSK))
authmode = WLAN_EID_VENDOR_SPECIFIC; authmode = WLAN_EID_VENDOR_SPECIFIC;
if ((ndisauthmode == Ndis802_11AuthModeWPA2) || (ndisauthmode == Ndis802_11AuthModeWPA2PSK)) if ((ndisauthmode == Ndis802_11AuthModeWPA2) || (ndisauthmode == Ndis802_11AuthModeWPA2PSK))
authmode = WLAN_EID_RSN; authmode = WLAN_EID_RSN;
if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) { if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) {
memcpy(out_ie+ielength, psecuritypriv->wps_ie, psecuritypriv->wps_ie_len); memcpy(out_ie+ielength, psecuritypriv->wps_ie, psecuritypriv->wps_ie_len);

Some files were not shown because too many files have changed in this diff Show More