mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
Staging driver cleanups for 6.9-rc1
Here is the big set of Staging driver cleanups for 6.9-rc1. Nothing major in here, lots of small coding style cleanups for most drivers, and the removal of some obsolete hardare (the emxx_udc and some drivers/staging/board/ files). All of these have been in linux-next for a long time with no reported issues. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCZfwrLg8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ylpnACfWebhSWZTOYu73xF72cI4RwC6AjkAn2Y4kcD4 YJPkynO4ScM+C0pFD9Fv =gSrW -----END PGP SIGNATURE----- Merge tag 'staging-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging Pull staging driver updates from Greg KH: "Here is the big set of Staging driver cleanups for 6.9-rc1. Nothing major in here, lots of small coding style cleanups for most drivers, and the removal of some obsolete hardare (the emxx_udc and some drivers/staging/board/ files). All of these have been in linux-next for a long time with no reported issues" * tag 'staging-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (122 commits) staging: greybus: Replaces directive __attribute__((packed)) by __packed as suggested by checkpatch staging: greybus: Replace __attribute__((packed)) by __packed in various instances Staging: rtl8192e: Rename function GetHalfNmodeSupportByAPsHandler() Staging: rtl8192e: Rename function rtllib_FlushRxTsPendingPkts() Staging: rtl8192e: Rename goto OnADDBARsp_Reject Staging: rtl8192e: Rename goto OnADDBAReq_Fail Staging: rtl8192e: Rename function rtllib_send_ADDBARsp() Staging: rtl8192e: Rename function rtllib_send_ADDBAReq() Staging: rtl8192e: Rename variable TxRxSelect Staging: rtl8192e: Fix 5 chckpatch alignment warnings in rtl819x_BAProc.c Staging: rtl8192e: Rename function MgntQuery_MgntFrameTxRate Staging: rtl8192e: Rename boolean variable bHalfWirelessN24GMode Staging: rtl8192e: Rename reference AllowAllDestAddrHandler Staging: rtl8192e: Rename varoable asSta Staging: rtl8192e: Rename varoable osCcxVerNum Staging: rtl8192e: Rename variable CcxAironetBuf Staging: rtl8192e: Rename variable osCcxAironetIE Staging: rtl8192e: Rename variable AironetIeOui Staging: rtl8192e: Rename variable asRsn Staging: rtl8192e: Rename variable CcxVerNumBuf ...
This commit is contained in:
commit
0a59b3f42e
@ -46,14 +46,10 @@ source "drivers/staging/iio/Kconfig"
|
||||
|
||||
source "drivers/staging/sm750fb/Kconfig"
|
||||
|
||||
source "drivers/staging/emxx_udc/Kconfig"
|
||||
|
||||
source "drivers/staging/nvec/Kconfig"
|
||||
|
||||
source "drivers/staging/media/Kconfig"
|
||||
|
||||
source "drivers/staging/board/Kconfig"
|
||||
|
||||
source "drivers/staging/gdm724x/Kconfig"
|
||||
|
||||
source "drivers/staging/fbtft/Kconfig"
|
||||
|
@ -14,9 +14,7 @@ obj-$(CONFIG_VT6656) += vt6656/
|
||||
obj-$(CONFIG_VME_BUS) += vme_user/
|
||||
obj-$(CONFIG_IIO) += iio/
|
||||
obj-$(CONFIG_FB_SM750) += sm750fb/
|
||||
obj-$(CONFIG_USB_EMXX) += emxx_udc/
|
||||
obj-$(CONFIG_MFD_NVEC) += nvec/
|
||||
obj-$(CONFIG_STAGING_BOARD) += board/
|
||||
obj-$(CONFIG_LTE_GDM724X) += gdm724x/
|
||||
obj-$(CONFIG_FB_TFT) += fbtft/
|
||||
obj-$(CONFIG_MOST) += most/
|
||||
|
@ -165,14 +165,9 @@ static ssize_t sysfs_read(struct device *dev, char *buf,
|
||||
{
|
||||
struct axis_fifo *fifo = dev_get_drvdata(dev);
|
||||
unsigned int read_val;
|
||||
unsigned int len;
|
||||
char tmp[32];
|
||||
|
||||
read_val = ioread32(fifo->base_addr + addr_offset);
|
||||
len = snprintf(tmp, sizeof(tmp), "0x%x\n", read_val);
|
||||
memcpy(buf, tmp, len);
|
||||
|
||||
return len;
|
||||
return sysfs_emit(buf, "0x%x\n", read_val);
|
||||
}
|
||||
|
||||
static ssize_t isr_store(struct device *dev, struct device_attribute *attr,
|
||||
|
@ -1,12 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
config STAGING_BOARD
|
||||
bool "Staging Board Support"
|
||||
depends on OF_ADDRESS && OF_IRQ && HAVE_CLK
|
||||
help
|
||||
Staging board base is to support continuous upstream
|
||||
in-tree development and integration of platform devices.
|
||||
|
||||
Helps developers integrate devices as platform devices for
|
||||
device drivers that only provide platform device bindings.
|
||||
This in turn allows for incremental development of both
|
||||
hardware feature support and DT binding work in parallel.
|
@ -1,4 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-y := board.o
|
||||
obj-$(CONFIG_ARCH_EMEV2) += kzm9d.o
|
||||
obj-$(CONFIG_ARCH_R8A7740) += armadillo800eva.o
|
@ -1,2 +0,0 @@
|
||||
* replace platform device code with DT nodes once the driver supports DT
|
||||
* remove staging board code when no more platform devices are needed
|
@ -1,88 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Staging board support for Armadillo 800 eva.
|
||||
* Enable not-yet-DT-capable devices here.
|
||||
*
|
||||
* Based on board-armadillo800eva.c
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Solutions Corp.
|
||||
* Copyright (C) 2012 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
|
||||
*/
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/fb.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/videodev2.h>
|
||||
|
||||
#include <video/sh_mobile_lcdc.h>
|
||||
|
||||
#include "board.h"
|
||||
|
||||
static struct fb_videomode lcdc0_mode = {
|
||||
.name = "AMPIER/AM-800480",
|
||||
.xres = 800,
|
||||
.yres = 480,
|
||||
.left_margin = 88,
|
||||
.right_margin = 40,
|
||||
.hsync_len = 128,
|
||||
.upper_margin = 20,
|
||||
.lower_margin = 5,
|
||||
.vsync_len = 5,
|
||||
.sync = 0,
|
||||
};
|
||||
|
||||
static struct sh_mobile_lcdc_info lcdc0_info = {
|
||||
.clock_source = LCDC_CLK_BUS,
|
||||
.ch[0] = {
|
||||
.chan = LCDC_CHAN_MAINLCD,
|
||||
.fourcc = V4L2_PIX_FMT_RGB565,
|
||||
.interface_type = RGB24,
|
||||
.clock_divider = 5,
|
||||
.flags = 0,
|
||||
.lcd_modes = &lcdc0_mode,
|
||||
.num_modes = 1,
|
||||
.panel_cfg = {
|
||||
.width = 111,
|
||||
.height = 68,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static struct resource lcdc0_resources[] = {
|
||||
DEFINE_RES_MEM_NAMED(0xfe940000, 0x4000, "LCD0"),
|
||||
DEFINE_RES_IRQ(177 + 32),
|
||||
};
|
||||
|
||||
static struct platform_device lcdc0_device = {
|
||||
.name = "sh_mobile_lcdc_fb",
|
||||
.num_resources = ARRAY_SIZE(lcdc0_resources),
|
||||
.resource = lcdc0_resources,
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &lcdc0_info,
|
||||
.coherent_dma_mask = DMA_BIT_MASK(32),
|
||||
},
|
||||
};
|
||||
|
||||
static const struct board_staging_clk lcdc0_clocks[] __initconst = {
|
||||
{ "lcdc0", NULL, "sh_mobile_lcdc_fb.0" },
|
||||
};
|
||||
|
||||
static const struct board_staging_dev armadillo800eva_devices[] __initconst = {
|
||||
{
|
||||
.pdev = &lcdc0_device,
|
||||
.clocks = lcdc0_clocks,
|
||||
.nclocks = ARRAY_SIZE(lcdc0_clocks),
|
||||
.domain = "/system-controller@e6180000/pm-domains/c5/a4lc@1"
|
||||
},
|
||||
};
|
||||
|
||||
static void __init armadillo800eva_init(void)
|
||||
{
|
||||
board_staging_gic_setup_xlate("arm,pl390", 32);
|
||||
board_staging_register_devices(armadillo800eva_devices,
|
||||
ARRAY_SIZE(armadillo800eva_devices));
|
||||
}
|
||||
|
||||
board_staging("renesas,armadillo800eva", armadillo800eva_init);
|
@ -1,204 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (C) 2014 Magnus Damm
|
||||
* Copyright (C) 2015 Glider bvba
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) "board_staging: " fmt
|
||||
|
||||
#include <linux/clkdev.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_domain.h>
|
||||
|
||||
#include "board.h"
|
||||
|
||||
static struct device_node *irqc_node __initdata;
|
||||
static unsigned int irqc_base __initdata;
|
||||
|
||||
static bool find_by_address(u64 base_address)
|
||||
{
|
||||
struct device_node *dn = of_find_all_nodes(NULL);
|
||||
struct resource res;
|
||||
|
||||
while (dn) {
|
||||
if (!of_address_to_resource(dn, 0, &res)) {
|
||||
if (res.start == base_address) {
|
||||
of_node_put(dn);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
dn = of_find_all_nodes(dn);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool __init board_staging_dt_node_available(const struct resource *resource,
|
||||
unsigned int num_resources)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < num_resources; i++) {
|
||||
const struct resource *r = resource + i;
|
||||
|
||||
if (resource_type(r) == IORESOURCE_MEM)
|
||||
if (find_by_address(r->start))
|
||||
return true; /* DT node available */
|
||||
}
|
||||
|
||||
return false; /* Nothing found */
|
||||
}
|
||||
|
||||
int __init board_staging_gic_setup_xlate(const char *gic_match,
|
||||
unsigned int base)
|
||||
{
|
||||
WARN_ON(irqc_node);
|
||||
|
||||
irqc_node = of_find_compatible_node(NULL, NULL, gic_match);
|
||||
|
||||
WARN_ON(!irqc_node);
|
||||
if (!irqc_node)
|
||||
return -ENOENT;
|
||||
|
||||
irqc_base = base;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __init gic_fixup_resource(struct resource *res)
|
||||
{
|
||||
struct of_phandle_args irq_data;
|
||||
unsigned int hwirq = res->start;
|
||||
unsigned int virq;
|
||||
|
||||
if (resource_type(res) != IORESOURCE_IRQ || !irqc_node)
|
||||
return;
|
||||
|
||||
irq_data.np = irqc_node;
|
||||
irq_data.args_count = 3;
|
||||
irq_data.args[0] = 0;
|
||||
irq_data.args[1] = hwirq - irqc_base;
|
||||
switch (res->flags &
|
||||
(IORESOURCE_IRQ_LOWEDGE | IORESOURCE_IRQ_HIGHEDGE |
|
||||
IORESOURCE_IRQ_LOWLEVEL | IORESOURCE_IRQ_HIGHLEVEL)) {
|
||||
case IORESOURCE_IRQ_LOWEDGE:
|
||||
irq_data.args[2] = IRQ_TYPE_EDGE_FALLING;
|
||||
break;
|
||||
case IORESOURCE_IRQ_HIGHEDGE:
|
||||
irq_data.args[2] = IRQ_TYPE_EDGE_RISING;
|
||||
break;
|
||||
case IORESOURCE_IRQ_LOWLEVEL:
|
||||
irq_data.args[2] = IRQ_TYPE_LEVEL_LOW;
|
||||
break;
|
||||
case IORESOURCE_IRQ_HIGHLEVEL:
|
||||
default:
|
||||
irq_data.args[2] = IRQ_TYPE_LEVEL_HIGH;
|
||||
break;
|
||||
}
|
||||
|
||||
virq = irq_create_of_mapping(&irq_data);
|
||||
if (WARN_ON(!virq))
|
||||
return;
|
||||
|
||||
pr_debug("hwirq %u -> virq %u\n", hwirq, virq);
|
||||
res->start = virq;
|
||||
}
|
||||
|
||||
void __init board_staging_gic_fixup_resources(struct resource *res,
|
||||
unsigned int nres)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < nres; i++)
|
||||
gic_fixup_resource(&res[i]);
|
||||
}
|
||||
|
||||
int __init board_staging_register_clock(const struct board_staging_clk *bsc)
|
||||
{
|
||||
int error;
|
||||
|
||||
pr_debug("Aliasing clock %s for con_id %s dev_id %s\n", bsc->clk,
|
||||
bsc->con_id, bsc->dev_id);
|
||||
error = clk_add_alias(bsc->con_id, bsc->dev_id, bsc->clk, NULL);
|
||||
if (error)
|
||||
pr_err("Failed to alias clock %s (%d)\n", bsc->clk, error);
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_GENERIC_DOMAINS_OF
|
||||
static int board_staging_add_dev_domain(struct platform_device *pdev,
|
||||
const char *domain)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct of_phandle_args pd_args;
|
||||
struct device_node *np;
|
||||
|
||||
np = of_find_node_by_path(domain);
|
||||
if (!np) {
|
||||
pr_err("Cannot find domain node %s\n", domain);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
pd_args.np = np;
|
||||
pd_args.args_count = 0;
|
||||
|
||||
/* Initialization similar to device_pm_init_common() */
|
||||
spin_lock_init(&dev->power.lock);
|
||||
dev->power.early_init = true;
|
||||
|
||||
return of_genpd_add_device(&pd_args, dev);
|
||||
}
|
||||
#else
|
||||
static inline int board_staging_add_dev_domain(struct platform_device *pdev,
|
||||
const char *domain)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
int __init board_staging_register_device(const struct board_staging_dev *dev)
|
||||
{
|
||||
struct platform_device *pdev = dev->pdev;
|
||||
unsigned int i;
|
||||
int error;
|
||||
|
||||
pr_debug("Trying to register device %s\n", pdev->name);
|
||||
if (board_staging_dt_node_available(pdev->resource,
|
||||
pdev->num_resources)) {
|
||||
pr_warn("Skipping %s, already in DT\n", pdev->name);
|
||||
return -EEXIST;
|
||||
}
|
||||
|
||||
board_staging_gic_fixup_resources(pdev->resource, pdev->num_resources);
|
||||
|
||||
for (i = 0; i < dev->nclocks; i++)
|
||||
board_staging_register_clock(&dev->clocks[i]);
|
||||
|
||||
if (dev->domain)
|
||||
board_staging_add_dev_domain(pdev, dev->domain);
|
||||
|
||||
error = platform_device_register(pdev);
|
||||
if (error) {
|
||||
pr_err("Failed to register device %s (%d)\n", pdev->name,
|
||||
error);
|
||||
return error;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
void __init board_staging_register_devices(const struct board_staging_dev *devs,
|
||||
unsigned int ndevs)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < ndevs; i++)
|
||||
board_staging_register_device(&devs[i]);
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef __BOARD_H__
|
||||
#define __BOARD_H__
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
struct board_staging_clk {
|
||||
const char *clk;
|
||||
const char *con_id;
|
||||
const char *dev_id;
|
||||
};
|
||||
|
||||
struct board_staging_dev {
|
||||
/* Platform Device */
|
||||
struct platform_device *pdev;
|
||||
/* Clocks (optional) */
|
||||
const struct board_staging_clk *clocks;
|
||||
unsigned int nclocks;
|
||||
/* Generic PM Domain (optional) */
|
||||
const char *domain;
|
||||
};
|
||||
|
||||
struct resource;
|
||||
|
||||
bool board_staging_dt_node_available(const struct resource *resource,
|
||||
unsigned int num_resources);
|
||||
int board_staging_gic_setup_xlate(const char *gic_match, unsigned int base);
|
||||
void board_staging_gic_fixup_resources(struct resource *res, unsigned int nres);
|
||||
int board_staging_register_clock(const struct board_staging_clk *bsc);
|
||||
int board_staging_register_device(const struct board_staging_dev *dev);
|
||||
void board_staging_register_devices(const struct board_staging_dev *devs,
|
||||
unsigned int ndevs);
|
||||
|
||||
#define board_staging(str, fn) \
|
||||
static int __init runtime_board_check(void) \
|
||||
{ \
|
||||
if (of_machine_is_compatible(str)) \
|
||||
fn(); \
|
||||
\
|
||||
return 0; \
|
||||
} \
|
||||
\
|
||||
device_initcall(runtime_board_check)
|
||||
|
||||
#endif /* __BOARD_H__ */
|
@ -1,26 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/* Staging board support for KZM9D. Enable not-yet-DT-capable devices here. */
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include "board.h"
|
||||
|
||||
static struct resource usbs1_res[] __initdata = {
|
||||
DEFINE_RES_MEM(0xe2800000, 0x2000),
|
||||
DEFINE_RES_IRQ(159),
|
||||
};
|
||||
|
||||
static void __init kzm9d_init(void)
|
||||
{
|
||||
board_staging_gic_setup_xlate("arm,pl390", 32);
|
||||
|
||||
if (!board_staging_dt_node_available(usbs1_res,
|
||||
ARRAY_SIZE(usbs1_res))) {
|
||||
board_staging_gic_fixup_resources(usbs1_res,
|
||||
ARRAY_SIZE(usbs1_res));
|
||||
platform_device_register_simple("emxx_udc", -1, usbs1_res,
|
||||
ARRAY_SIZE(usbs1_res));
|
||||
}
|
||||
}
|
||||
|
||||
board_staging("renesas,kzm9d", kzm9d_init);
|
@ -1,11 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
config USB_EMXX
|
||||
tristate "EMXX USB Function Device Controller"
|
||||
depends on USB_GADGET && (ARCH_RENESAS || COMPILE_TEST)
|
||||
help
|
||||
The Emma Mobile series of SoCs from Renesas Electronics and
|
||||
former NEC Electronics include USB Function hardware.
|
||||
|
||||
Say "y" to link the driver statically, or "m" to build a
|
||||
dynamically linked module called "emxx_udc" and force all
|
||||
gadget drivers to also be dynamically linked.
|
@ -1,2 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-$(CONFIG_USB_EMXX) := emxx_udc.o
|
@ -1,6 +0,0 @@
|
||||
* add clock framework support (platform device with CCF needs special care)
|
||||
* break out board-specific VBUS GPIO to work with multiplatform
|
||||
* convert VBUS GPIO to use GPIO descriptors from <linux/gpio/consumer.h>
|
||||
and stop using the old GPIO API
|
||||
* DT bindings
|
||||
* move driver into drivers/usb/gadget/
|
File diff suppressed because it is too large
Load Diff
@ -1,554 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* EMXX FCD (Function Controller Driver) for USB.
|
||||
*
|
||||
* Copyright (C) 2010 Renesas Electronics Corporation
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_EMXX_H
|
||||
#define _LINUX_EMXX_H
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
/*----------------- Default define */
|
||||
#define USE_DMA 1
|
||||
#define USE_SUSPEND_WAIT 1
|
||||
|
||||
/*------------ Board dependence(Resource) */
|
||||
#define VBUS_VALUE GPIO_VBUS
|
||||
|
||||
/* below hacked up for staging integration */
|
||||
#define GPIO_VBUS 0 /* GPIO_P153 on KZM9D */
|
||||
#define INT_VBUS 0 /* IRQ for GPIO_P153 */
|
||||
|
||||
/*------------ Board dependence(Wait) */
|
||||
|
||||
/* CHATTERING wait time ms */
|
||||
#define VBUS_CHATTERING_MDELAY 1
|
||||
/* DMA Abort wait time ms */
|
||||
#define DMA_DISABLE_TIME 10
|
||||
|
||||
/*------------ Controller dependence */
|
||||
#define NUM_ENDPOINTS 14 /* Endpoint */
|
||||
#define REG_EP_NUM 15 /* Endpoint Register */
|
||||
#define DMA_MAX_COUNT 256 /* DMA Block */
|
||||
|
||||
#define EPC_RST_DISABLE_TIME 1 /* 1 usec */
|
||||
#define EPC_DIRPD_DISABLE_TIME 1 /* 1 msec */
|
||||
#define EPC_PLL_LOCK_COUNT 1000 /* 1000 */
|
||||
#define IN_DATA_EMPTY_COUNT 1000 /* 1000 */
|
||||
|
||||
#define CHATGER_TIME 700 /* 700msec */
|
||||
#define USB_SUSPEND_TIME 2000 /* 2 sec */
|
||||
|
||||
/* U2F FLAG */
|
||||
#define U2F_ENABLE 1
|
||||
#define U2F_DISABLE 0
|
||||
|
||||
#define TEST_FORCE_ENABLE (BIT(18) | BIT(16))
|
||||
|
||||
#define INT_SEL BIT(10)
|
||||
#define CONSTFS BIT(9)
|
||||
#define SOF_RCV BIT(8)
|
||||
#define RSUM_IN BIT(7)
|
||||
#define SUSPEND BIT(6)
|
||||
#define CONF BIT(5)
|
||||
#define DEFAULT BIT(4)
|
||||
#define CONNECTB BIT(3)
|
||||
#define PUE2 BIT(2)
|
||||
|
||||
#define MAX_TEST_MODE_NUM 0x05
|
||||
#define TEST_MODE_SHIFT 16
|
||||
|
||||
/*------- (0x0004) USB Status Register */
|
||||
#define SPEED_MODE BIT(6)
|
||||
#define HIGH_SPEED BIT(6)
|
||||
|
||||
#define CONF BIT(5)
|
||||
#define DEFAULT BIT(4)
|
||||
#define USB_RST BIT(3)
|
||||
#define SPND_OUT BIT(2)
|
||||
#define RSUM_OUT BIT(1)
|
||||
|
||||
/*------- (0x0008) USB Address Register */
|
||||
#define USB_ADDR 0x007F0000
|
||||
#define SOF_STATUS BIT(15)
|
||||
#define UFRAME (BIT(14) | BIT(13) | BIT(12))
|
||||
#define FRAME 0x000007FF
|
||||
|
||||
#define USB_ADRS_SHIFT 16
|
||||
|
||||
/*------- (0x000C) UTMI Characteristic 1 Register */
|
||||
#define SQUSET (BIT(7) | BIT(6) | BIT(5) | BIT(4))
|
||||
|
||||
#define USB_SQUSET (BIT(6) | BIT(5) | BIT(4))
|
||||
|
||||
/*------- (0x0010) TEST Control Register */
|
||||
#define FORCEHS BIT(2)
|
||||
#define CS_TESTMODEEN BIT(1)
|
||||
#define LOOPBACK BIT(0)
|
||||
|
||||
/*------- (0x0018) Setup Data 0 Register */
|
||||
/*------- (0x001C) Setup Data 1 Register */
|
||||
|
||||
/*------- (0x0020) USB Interrupt Status Register */
|
||||
#define EPN_INT 0x00FFFF00
|
||||
#define EP15_INT BIT(23)
|
||||
#define EP14_INT BIT(22)
|
||||
#define EP13_INT BIT(21)
|
||||
#define EP12_INT BIT(20)
|
||||
#define EP11_INT BIT(19)
|
||||
#define EP10_INT BIT(18)
|
||||
#define EP9_INT BIT(17)
|
||||
#define EP8_INT BIT(16)
|
||||
#define EP7_INT BIT(15)
|
||||
#define EP6_INT BIT(14)
|
||||
#define EP5_INT BIT(13)
|
||||
#define EP4_INT BIT(12)
|
||||
#define EP3_INT BIT(11)
|
||||
#define EP2_INT BIT(10)
|
||||
#define EP1_INT BIT(9)
|
||||
#define EP0_INT BIT(8)
|
||||
#define SPEED_MODE_INT BIT(6)
|
||||
#define SOF_ERROR_INT BIT(5)
|
||||
#define SOF_INT BIT(4)
|
||||
#define USB_RST_INT BIT(3)
|
||||
#define SPND_INT BIT(2)
|
||||
#define RSUM_INT BIT(1)
|
||||
|
||||
#define USB_INT_STA_RW 0x7E
|
||||
|
||||
/*------- (0x0024) USB Interrupt Enable Register */
|
||||
#define EP15_0_EN 0x00FFFF00
|
||||
#define EP15_EN BIT(23)
|
||||
#define EP14_EN BIT(22)
|
||||
#define EP13_EN BIT(21)
|
||||
#define EP12_EN BIT(20)
|
||||
#define EP11_EN BIT(19)
|
||||
#define EP10_EN BIT(18)
|
||||
#define EP9_EN BIT(17)
|
||||
#define EP8_EN BIT(16)
|
||||
#define EP7_EN BIT(15)
|
||||
#define EP6_EN BIT(14)
|
||||
#define EP5_EN BIT(13)
|
||||
#define EP4_EN BIT(12)
|
||||
#define EP3_EN BIT(11)
|
||||
#define EP2_EN BIT(10)
|
||||
#define EP1_EN BIT(9)
|
||||
#define EP0_EN BIT(8)
|
||||
#define SPEED_MODE_EN BIT(6)
|
||||
#define SOF_ERROR_EN BIT(5)
|
||||
#define SOF_EN BIT(4)
|
||||
#define USB_RST_EN BIT(3)
|
||||
#define SPND_EN BIT(2)
|
||||
#define RSUM_EN BIT(1)
|
||||
|
||||
#define USB_INT_EN_BIT \
|
||||
(EP0_EN | SPEED_MODE_EN | USB_RST_EN | SPND_EN | RSUM_EN)
|
||||
|
||||
/*------- (0x0028) EP0 Control Register */
|
||||
#define EP0_STGSEL BIT(18)
|
||||
#define EP0_OVERSEL BIT(17)
|
||||
#define EP0_AUTO BIT(16)
|
||||
#define EP0_PIDCLR BIT(9)
|
||||
#define EP0_BCLR BIT(8)
|
||||
#define EP0_DEND BIT(7)
|
||||
#define EP0_DW (BIT(6) | BIT(5))
|
||||
#define EP0_DW4 0
|
||||
#define EP0_DW3 (BIT(6) | BIT(5))
|
||||
#define EP0_DW2 BIT(6)
|
||||
#define EP0_DW1 BIT(5)
|
||||
|
||||
#define EP0_INAK_EN BIT(4)
|
||||
#define EP0_PERR_NAK_CLR BIT(3)
|
||||
#define EP0_STL BIT(2)
|
||||
#define EP0_INAK BIT(1)
|
||||
#define EP0_ONAK BIT(0)
|
||||
|
||||
/*------- (0x002C) EP0 Status Register */
|
||||
#define EP0_PID BIT(18)
|
||||
#define EP0_PERR_NAK BIT(17)
|
||||
#define EP0_PERR_NAK_INT BIT(16)
|
||||
#define EP0_OUT_NAK_INT BIT(15)
|
||||
#define EP0_OUT_NULL BIT(14)
|
||||
#define EP0_OUT_FULL BIT(13)
|
||||
#define EP0_OUT_EMPTY BIT(12)
|
||||
#define EP0_IN_NAK_INT BIT(11)
|
||||
#define EP0_IN_DATA BIT(10)
|
||||
#define EP0_IN_FULL BIT(9)
|
||||
#define EP0_IN_EMPTY BIT(8)
|
||||
#define EP0_OUT_NULL_INT BIT(7)
|
||||
#define EP0_OUT_OR_INT BIT(6)
|
||||
#define EP0_OUT_INT BIT(5)
|
||||
#define EP0_IN_INT BIT(4)
|
||||
#define EP0_STALL_INT BIT(3)
|
||||
#define STG_END_INT BIT(2)
|
||||
#define STG_START_INT BIT(1)
|
||||
#define SETUP_INT BIT(0)
|
||||
|
||||
#define EP0_STATUS_RW_BIT (BIT(16) | BIT(15) | BIT(11) | 0xFF)
|
||||
|
||||
/*------- (0x0030) EP0 Interrupt Enable Register */
|
||||
#define EP0_PERR_NAK_EN BIT(16)
|
||||
#define EP0_OUT_NAK_EN BIT(15)
|
||||
|
||||
#define EP0_IN_NAK_EN BIT(11)
|
||||
|
||||
#define EP0_OUT_NULL_EN BIT(7)
|
||||
#define EP0_OUT_OR_EN BIT(6)
|
||||
#define EP0_OUT_EN BIT(5)
|
||||
#define EP0_IN_EN BIT(4)
|
||||
#define EP0_STALL_EN BIT(3)
|
||||
#define STG_END_EN BIT(2)
|
||||
#define STG_START_EN BIT(1)
|
||||
#define SETUP_EN BIT(0)
|
||||
|
||||
#define EP0_INT_EN_BIT \
|
||||
(EP0_OUT_OR_EN | EP0_OUT_EN | EP0_IN_EN | STG_END_EN | SETUP_EN)
|
||||
|
||||
/*------- (0x0034) EP0 Length Register */
|
||||
#define EP0_LDATA 0x0000007F
|
||||
|
||||
/*------- (0x0038) EP0 Read Register */
|
||||
/*------- (0x003C) EP0 Write Register */
|
||||
|
||||
/*------- (0x0040:) EPN Control Register */
|
||||
#define EPN_EN BIT(31)
|
||||
#define EPN_BUF_TYPE BIT(30)
|
||||
#define EPN_BUF_SINGLE BIT(30)
|
||||
|
||||
#define EPN_DIR0 BIT(26)
|
||||
#define EPN_MODE (BIT(25) | BIT(24))
|
||||
#define EPN_BULK 0
|
||||
#define EPN_INTERRUPT BIT(24)
|
||||
#define EPN_ISO BIT(25)
|
||||
|
||||
#define EPN_OVERSEL BIT(17)
|
||||
#define EPN_AUTO BIT(16)
|
||||
|
||||
#define EPN_IPIDCLR BIT(11)
|
||||
#define EPN_OPIDCLR BIT(10)
|
||||
#define EPN_BCLR BIT(9)
|
||||
#define EPN_CBCLR BIT(8)
|
||||
#define EPN_DEND BIT(7)
|
||||
#define EPN_DW (BIT(6) | BIT(5))
|
||||
#define EPN_DW4 0
|
||||
#define EPN_DW3 (BIT(6) | BIT(5))
|
||||
#define EPN_DW2 BIT(6)
|
||||
#define EPN_DW1 BIT(5)
|
||||
|
||||
#define EPN_OSTL_EN BIT(4)
|
||||
#define EPN_ISTL BIT(3)
|
||||
#define EPN_OSTL BIT(2)
|
||||
|
||||
#define EPN_ONAK BIT(0)
|
||||
|
||||
/*------- (0x0044:) EPN Status Register */
|
||||
#define EPN_ISO_PIDERR BIT(29) /* R */
|
||||
#define EPN_OPID BIT(28) /* R */
|
||||
#define EPN_OUT_NOTKN BIT(27) /* R */
|
||||
#define EPN_ISO_OR BIT(26) /* R */
|
||||
|
||||
#define EPN_ISO_CRC BIT(24) /* R */
|
||||
#define EPN_OUT_END_INT BIT(23) /* RW */
|
||||
#define EPN_OUT_OR_INT BIT(22) /* RW */
|
||||
#define EPN_OUT_NAK_ERR_INT BIT(21) /* RW */
|
||||
#define EPN_OUT_STALL_INT BIT(20) /* RW */
|
||||
#define EPN_OUT_INT BIT(19) /* RW */
|
||||
#define EPN_OUT_NULL_INT BIT(18) /* RW */
|
||||
#define EPN_OUT_FULL BIT(17) /* R */
|
||||
#define EPN_OUT_EMPTY BIT(16) /* R */
|
||||
|
||||
#define EPN_IPID BIT(10) /* R */
|
||||
#define EPN_IN_NOTKN BIT(9) /* R */
|
||||
#define EPN_ISO_UR BIT(8) /* R */
|
||||
#define EPN_IN_END_INT BIT(7) /* RW */
|
||||
|
||||
#define EPN_IN_NAK_ERR_INT BIT(5) /* RW */
|
||||
#define EPN_IN_STALL_INT BIT(4) /* RW */
|
||||
#define EPN_IN_INT BIT(3) /* RW */
|
||||
#define EPN_IN_DATA BIT(2) /* R */
|
||||
#define EPN_IN_FULL BIT(1) /* R */
|
||||
#define EPN_IN_EMPTY BIT(0) /* R */
|
||||
|
||||
#define EPN_INT_EN \
|
||||
(EPN_OUT_END_INT | EPN_OUT_INT | EPN_IN_END_INT | EPN_IN_INT)
|
||||
|
||||
/*------- (0x0048:) EPN Interrupt Enable Register */
|
||||
#define EPN_OUT_END_EN BIT(23) /* RW */
|
||||
#define EPN_OUT_OR_EN BIT(22) /* RW */
|
||||
#define EPN_OUT_NAK_ERR_EN BIT(21) /* RW */
|
||||
#define EPN_OUT_STALL_EN BIT(20) /* RW */
|
||||
#define EPN_OUT_EN BIT(19) /* RW */
|
||||
#define EPN_OUT_NULL_EN BIT(18) /* RW */
|
||||
|
||||
#define EPN_IN_END_EN BIT(7) /* RW */
|
||||
|
||||
#define EPN_IN_NAK_ERR_EN BIT(5) /* RW */
|
||||
#define EPN_IN_STALL_EN BIT(4) /* RW */
|
||||
#define EPN_IN_EN BIT(3) /* RW */
|
||||
|
||||
/*------- (0x004C:) EPN Interrupt Enable Register */
|
||||
#define EPN_STOP_MODE BIT(11)
|
||||
#define EPN_DEND_SET BIT(10)
|
||||
#define EPN_BURST_SET BIT(9)
|
||||
#define EPN_STOP_SET BIT(8)
|
||||
|
||||
#define EPN_DMA_EN BIT(4)
|
||||
|
||||
#define EPN_DMAMODE0 BIT(0)
|
||||
|
||||
/*------- (0x0050:) EPN MaxPacket & BaseAddress Register */
|
||||
#define EPN_BASEAD 0x1FFF0000
|
||||
#define EPN_MPKT 0x000007FF
|
||||
|
||||
/*------- (0x0054:) EPN Length & DMA Count Register */
|
||||
#define EPN_DMACNT 0x01FF0000
|
||||
#define EPN_LDATA 0x000007FF
|
||||
|
||||
/*------- (0x0058:) EPN Read Register */
|
||||
/*------- (0x005C:) EPN Write Register */
|
||||
|
||||
/*------- (0x1000) AHBSCTR Register */
|
||||
#define WAIT_MODE BIT(0)
|
||||
|
||||
/*------- (0x1004) AHBMCTR Register */
|
||||
#define ARBITER_CTR BIT(31) /* RW */
|
||||
#define MCYCLE_RST BIT(12) /* RW */
|
||||
|
||||
#define ENDIAN_CTR (BIT(9) | BIT(8)) /* RW */
|
||||
#define ENDIAN_BYTE_SWAP BIT(9)
|
||||
#define ENDIAN_HALF_WORD_SWAP ENDIAN_CTR
|
||||
|
||||
#define HBUSREQ_MODE BIT(5) /* RW */
|
||||
#define HTRANS_MODE BIT(4) /* RW */
|
||||
|
||||
#define WBURST_TYPE BIT(2) /* RW */
|
||||
#define BURST_TYPE (BIT(1) | BIT(0)) /* RW */
|
||||
#define BURST_MAX_16 0
|
||||
#define BURST_MAX_8 BIT(0)
|
||||
#define BURST_MAX_4 BIT(1)
|
||||
#define BURST_SINGLE BURST_TYPE
|
||||
|
||||
/*------- (0x1008) AHBBINT Register */
|
||||
#define DMA_ENDINT 0xFFFE0000 /* RW */
|
||||
|
||||
#define AHB_VBUS_INT BIT(13) /* RW */
|
||||
|
||||
#define MBUS_ERRINT BIT(6) /* RW */
|
||||
|
||||
#define SBUS_ERRINT0 BIT(4) /* RW */
|
||||
#define ERR_MASTER 0x0000000F /* R */
|
||||
|
||||
/*------- (0x100C) AHBBINTEN Register */
|
||||
#define DMA_ENDINTEN 0xFFFE0000 /* RW */
|
||||
|
||||
#define VBUS_INTEN BIT(13) /* RW */
|
||||
|
||||
#define MBUS_ERRINTEN BIT(6) /* RW */
|
||||
|
||||
#define SBUS_ERRINT0EN BIT(4) /* RW */
|
||||
|
||||
/*------- (0x1010) EPCTR Register */
|
||||
#define DIRPD BIT(12) /* RW */
|
||||
|
||||
#define VBUS_LEVEL BIT(8) /* R */
|
||||
|
||||
#define PLL_RESUME BIT(5) /* RW */
|
||||
#define PLL_LOCK BIT(4) /* R */
|
||||
|
||||
#define EPC_RST BIT(0) /* RW */
|
||||
|
||||
/*------- (0x1014) USBF_EPTEST Register */
|
||||
#define LINESTATE (BIT(9) | BIT(8)) /* R */
|
||||
#define DM_LEVEL BIT(9) /* R */
|
||||
#define DP_LEVEL BIT(8) /* R */
|
||||
|
||||
#define PHY_TST BIT(1) /* RW */
|
||||
#define PHY_TSTCLK BIT(0) /* RW */
|
||||
|
||||
/*------- (0x1020) USBSSVER Register */
|
||||
#define AHBB_VER 0x00FF0000 /* R */
|
||||
#define EPC_VER 0x0000FF00 /* R */
|
||||
#define SS_VER 0x000000FF /* R */
|
||||
|
||||
/*------- (0x1024) USBSSCONF Register */
|
||||
#define EP_AVAILABLE 0xFFFF0000 /* R */
|
||||
#define DMA_AVAILABLE 0x0000FFFF /* R */
|
||||
|
||||
/*------- (0x1110:) EPNDCR1 Register */
|
||||
#define DCR1_EPN_DMACNT 0x00FF0000 /* RW */
|
||||
|
||||
#define DCR1_EPN_DIR0 BIT(1) /* RW */
|
||||
#define DCR1_EPN_REQEN BIT(0) /* RW */
|
||||
|
||||
/*------- (0x1114:) EPNDCR2 Register */
|
||||
#define DCR2_EPN_LMPKT 0x07FF0000 /* RW */
|
||||
|
||||
#define DCR2_EPN_MPKT 0x000007FF /* RW */
|
||||
|
||||
/*------- (0x1118:) EPNTADR Register */
|
||||
#define EPN_TADR 0xFFFFFFFF /* RW */
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Struct */
|
||||
/*------- ep_regs */
|
||||
struct ep_regs {
|
||||
u32 EP_CONTROL; /* EP Control */
|
||||
u32 EP_STATUS; /* EP Status */
|
||||
u32 EP_INT_ENA; /* EP Interrupt Enable */
|
||||
u32 EP_DMA_CTRL; /* EP DMA Control */
|
||||
u32 EP_PCKT_ADRS; /* EP Maxpacket & BaseAddress */
|
||||
u32 EP_LEN_DCNT; /* EP Length & DMA count */
|
||||
u32 EP_READ; /* EP Read */
|
||||
u32 EP_WRITE; /* EP Write */
|
||||
};
|
||||
|
||||
/*------- ep_dcr */
|
||||
struct ep_dcr {
|
||||
u32 EP_DCR1; /* EP_DCR1 */
|
||||
u32 EP_DCR2; /* EP_DCR2 */
|
||||
u32 EP_TADR; /* EP_TADR */
|
||||
u32 Reserved; /* Reserved */
|
||||
};
|
||||
|
||||
/*------- Function Registers */
|
||||
struct fc_regs {
|
||||
u32 USB_CONTROL; /* (0x0000) USB Control */
|
||||
u32 USB_STATUS; /* (0x0004) USB Status */
|
||||
u32 USB_ADDRESS; /* (0x0008) USB Address */
|
||||
u32 UTMI_CHARACTER_1; /* (0x000C) UTMI Setting */
|
||||
u32 TEST_CONTROL; /* (0x0010) TEST Control */
|
||||
u32 reserved_14; /* (0x0014) Reserved */
|
||||
u32 SETUP_DATA0; /* (0x0018) Setup Data0 */
|
||||
u32 SETUP_DATA1; /* (0x001C) Setup Data1 */
|
||||
u32 USB_INT_STA; /* (0x0020) USB Interrupt Status */
|
||||
u32 USB_INT_ENA; /* (0x0024) USB Interrupt Enable */
|
||||
u32 EP0_CONTROL; /* (0x0028) EP0 Control */
|
||||
u32 EP0_STATUS; /* (0x002C) EP0 Status */
|
||||
u32 EP0_INT_ENA; /* (0x0030) EP0 Interrupt Enable */
|
||||
u32 EP0_LENGTH; /* (0x0034) EP0 Length */
|
||||
u32 EP0_READ; /* (0x0038) EP0 Read */
|
||||
u32 EP0_WRITE; /* (0x003C) EP0 Write */
|
||||
|
||||
struct ep_regs EP_REGS[REG_EP_NUM]; /* Endpoint Register */
|
||||
|
||||
u8 reserved_220[0x1000 - 0x220]; /* (0x0220:0x0FFF) Reserved */
|
||||
|
||||
u32 AHBSCTR; /* (0x1000) AHBSCTR */
|
||||
u32 AHBMCTR; /* (0x1004) AHBMCTR */
|
||||
u32 AHBBINT; /* (0x1008) AHBBINT */
|
||||
u32 AHBBINTEN; /* (0x100C) AHBBINTEN */
|
||||
u32 EPCTR; /* (0x1010) EPCTR */
|
||||
u32 USBF_EPTEST; /* (0x1014) USBF_EPTEST */
|
||||
|
||||
u8 reserved_1018[0x20 - 0x18]; /* (0x1018:0x101F) Reserved */
|
||||
|
||||
u32 USBSSVER; /* (0x1020) USBSSVER */
|
||||
u32 USBSSCONF; /* (0x1024) USBSSCONF */
|
||||
|
||||
u8 reserved_1028[0x110 - 0x28]; /* (0x1028:0x110F) Reserved */
|
||||
|
||||
struct ep_dcr EP_DCR[REG_EP_NUM]; /* */
|
||||
|
||||
u8 reserved_1200[0x1000 - 0x200]; /* Reserved */
|
||||
} __aligned(32);
|
||||
|
||||
#define EP0_PACKETSIZE 64
|
||||
#define EP_PACKETSIZE 1024
|
||||
|
||||
/* EPN RAM SIZE */
|
||||
#define D_RAM_SIZE_CTRL 64
|
||||
|
||||
/* EPN Bulk Endpoint Max Packet Size */
|
||||
#define D_FS_RAM_SIZE_BULK 64
|
||||
#define D_HS_RAM_SIZE_BULK 512
|
||||
|
||||
struct nbu2ss_udc;
|
||||
|
||||
enum ep0_state {
|
||||
EP0_IDLE,
|
||||
EP0_IN_DATA_PHASE,
|
||||
EP0_OUT_DATA_PHASE,
|
||||
EP0_IN_STATUS_PHASE,
|
||||
EP0_OUT_STATUS_PAHSE,
|
||||
EP0_END_XFER,
|
||||
EP0_SUSPEND,
|
||||
EP0_STALL,
|
||||
};
|
||||
|
||||
struct nbu2ss_req {
|
||||
struct usb_request req;
|
||||
struct list_head queue;
|
||||
|
||||
u32 div_len;
|
||||
bool dma_flag;
|
||||
bool zero;
|
||||
|
||||
bool unaligned;
|
||||
|
||||
unsigned mapped:1;
|
||||
};
|
||||
|
||||
struct nbu2ss_ep {
|
||||
struct usb_ep ep;
|
||||
struct list_head queue;
|
||||
|
||||
struct nbu2ss_udc *udc;
|
||||
|
||||
const struct usb_endpoint_descriptor *desc;
|
||||
|
||||
u8 epnum;
|
||||
u8 direct;
|
||||
u8 ep_type;
|
||||
|
||||
unsigned wedged:1;
|
||||
unsigned halted:1;
|
||||
unsigned stalled:1;
|
||||
|
||||
u8 *virt_buf;
|
||||
dma_addr_t phys_buf;
|
||||
};
|
||||
|
||||
struct nbu2ss_udc {
|
||||
struct usb_gadget gadget;
|
||||
struct usb_gadget_driver *driver;
|
||||
struct platform_device *pdev;
|
||||
struct device *dev;
|
||||
spinlock_t lock; /* Protects nbu2ss_udc structure fields */
|
||||
struct completion *pdone;
|
||||
|
||||
enum ep0_state ep0state;
|
||||
enum usb_device_state devstate;
|
||||
struct usb_ctrlrequest ctrl;
|
||||
struct nbu2ss_req ep0_req;
|
||||
u8 ep0_buf[EP0_PACKETSIZE];
|
||||
|
||||
struct nbu2ss_ep ep[NUM_ENDPOINTS];
|
||||
|
||||
unsigned softconnect:1;
|
||||
unsigned vbus_active:1;
|
||||
unsigned linux_suspended:1;
|
||||
unsigned linux_resume:1;
|
||||
unsigned usb_suspended:1;
|
||||
unsigned remote_wakeup:1;
|
||||
unsigned udc_enabled:1;
|
||||
|
||||
unsigned int mA;
|
||||
|
||||
u32 curr_config; /* Current Configuration Number */
|
||||
|
||||
struct fc_regs __iomem *p_regs;
|
||||
};
|
||||
|
||||
/* USB register access structure */
|
||||
union usb_reg_access {
|
||||
struct {
|
||||
unsigned char DATA[4];
|
||||
} byte;
|
||||
unsigned int dw;
|
||||
};
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
#endif /* _LINUX_EMXX_H */
|
@ -327,7 +327,6 @@ static void fbtft_deferred_io(struct fb_info *info, struct list_head *pagereflis
|
||||
unsigned int dirty_lines_start, dirty_lines_end;
|
||||
struct fb_deferred_io_pageref *pageref;
|
||||
unsigned int y_low = 0, y_high = 0;
|
||||
int count = 0;
|
||||
|
||||
spin_lock(&par->dirty_lock);
|
||||
dirty_lines_start = par->dirty_lines_start;
|
||||
@ -339,7 +338,6 @@ static void fbtft_deferred_io(struct fb_info *info, struct list_head *pagereflis
|
||||
|
||||
/* Mark display lines as dirty */
|
||||
list_for_each_entry(pageref, pagereflist, list) {
|
||||
count++;
|
||||
y_low = pageref->offset / info->fix.line_length;
|
||||
y_high = (pageref->offset + PAGE_SIZE - 1) / info->fix.line_length;
|
||||
dev_dbg(info->device,
|
||||
|
@ -285,7 +285,7 @@ static int controller_probe(struct platform_device *pdev)
|
||||
}
|
||||
}
|
||||
|
||||
id = ida_simple_get(&controller_index_ida, 0, 0, GFP_KERNEL);
|
||||
id = ida_alloc(&controller_index_ida, GFP_KERNEL);
|
||||
if (id < 0) {
|
||||
err = id;
|
||||
goto out_reset;
|
||||
@ -318,7 +318,7 @@ static int controller_probe(struct platform_device *pdev)
|
||||
out_dev:
|
||||
put_device(cd->class_dev);
|
||||
out_ida:
|
||||
ida_simple_remove(&controller_index_ida, id);
|
||||
ida_free(&controller_index_ida, id);
|
||||
out_reset:
|
||||
gpiod_set_value_cansleep(cd->reset_gpiod, 1);
|
||||
return err;
|
||||
@ -330,7 +330,7 @@ static void controller_remove(struct platform_device *pdev)
|
||||
int id = cd->class_dev->id;
|
||||
|
||||
device_unregister(cd->class_dev);
|
||||
ida_simple_remove(&controller_index_ida, id);
|
||||
ida_free(&controller_index_ida, id);
|
||||
gpiod_set_value_cansleep(cd->reset_gpiod, 1);
|
||||
}
|
||||
|
||||
|
@ -1195,7 +1195,7 @@ static void anybus_bus_remove(struct device *dev)
|
||||
adrv->remove(to_anybuss_client(dev));
|
||||
}
|
||||
|
||||
static struct bus_type anybus_bus = {
|
||||
static const struct bus_type anybus_bus = {
|
||||
.name = "anybuss",
|
||||
.match = anybus_bus_match,
|
||||
.probe = anybus_bus_probe,
|
||||
|
@ -152,7 +152,7 @@ static const struct attribute_group fieldbus_group = {
|
||||
};
|
||||
__ATTRIBUTE_GROUPS(fieldbus);
|
||||
|
||||
static struct class fieldbus_class = {
|
||||
static const struct class fieldbus_class = {
|
||||
.name = "fieldbus_dev",
|
||||
.dev_groups = fieldbus_groups,
|
||||
};
|
||||
@ -247,7 +247,7 @@ static void __fieldbus_dev_unregister(struct fieldbus_dev *fb)
|
||||
return;
|
||||
device_destroy(&fieldbus_class, fb->cdev.dev);
|
||||
cdev_del(&fb->cdev);
|
||||
ida_simple_remove(&fieldbus_ida, fb->id);
|
||||
ida_free(&fieldbus_ida, fb->id);
|
||||
}
|
||||
|
||||
void fieldbus_dev_unregister(struct fieldbus_dev *fb)
|
||||
@ -267,7 +267,7 @@ static int __fieldbus_dev_register(struct fieldbus_dev *fb)
|
||||
return -EINVAL;
|
||||
if (!fb->read_area || !fb->write_area || !fb->fieldbus_id_get)
|
||||
return -EINVAL;
|
||||
fb->id = ida_simple_get(&fieldbus_ida, 0, MAX_FIELDBUSES, GFP_KERNEL);
|
||||
fb->id = ida_alloc_max(&fieldbus_ida, MAX_FIELDBUSES - 1, GFP_KERNEL);
|
||||
if (fb->id < 0)
|
||||
return fb->id;
|
||||
devno = MKDEV(MAJOR(fieldbus_devt), fb->id);
|
||||
@ -290,7 +290,7 @@ static int __fieldbus_dev_register(struct fieldbus_dev *fb)
|
||||
err_dev_create:
|
||||
cdev_del(&fb->cdev);
|
||||
err_cdev:
|
||||
ida_simple_remove(&fieldbus_ida, fb->id);
|
||||
ida_free(&fieldbus_ida, fb->id);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ static struct {
|
||||
struct sock *sock;
|
||||
} lte_event;
|
||||
|
||||
static struct device_type wwan_type = {
|
||||
static const struct device_type wwan_type = {
|
||||
.name = "wwan",
|
||||
};
|
||||
|
||||
|
@ -65,7 +65,6 @@
|
||||
struct audio_apbridgea_hdr {
|
||||
__u8 type;
|
||||
__le16 i2s_port;
|
||||
__u8 data[];
|
||||
} __packed;
|
||||
|
||||
struct audio_apbridgea_set_config_request {
|
||||
|
@ -44,14 +44,14 @@ int gb_audio_manager_add(struct gb_audio_manager_module_descriptor *desc)
|
||||
int id;
|
||||
int err;
|
||||
|
||||
id = ida_simple_get(&module_id, 0, 0, GFP_KERNEL);
|
||||
id = ida_alloc(&module_id, GFP_KERNEL);
|
||||
if (id < 0)
|
||||
return id;
|
||||
|
||||
err = gb_audio_manager_module_create(&module, manager_kset,
|
||||
id, desc);
|
||||
if (err) {
|
||||
ida_simple_remove(&module_id, id);
|
||||
ida_free(&module_id, id);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ int gb_audio_manager_remove(int id)
|
||||
list_del(&module->list);
|
||||
kobject_put(&module->kobj);
|
||||
up_write(&modules_rwsem);
|
||||
ida_simple_remove(&module_id, id);
|
||||
ida_free(&module_id, id);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(gb_audio_manager_remove);
|
||||
@ -92,7 +92,7 @@ void gb_audio_manager_remove_all(void)
|
||||
|
||||
list_for_each_entry_safe(module, next, &modules_list, list) {
|
||||
list_del(&module->list);
|
||||
ida_simple_remove(&module_id, module->id);
|
||||
ida_free(&module_id, module->id);
|
||||
kobject_put(&module->kobj);
|
||||
}
|
||||
|
||||
|
@ -761,7 +761,6 @@ static int gbcodec_enum_dapm_ctl_put(struct snd_kcontrol *kcontrol,
|
||||
{
|
||||
int ret, wi, ctl_id;
|
||||
unsigned int val, mux, change;
|
||||
unsigned int mask;
|
||||
struct snd_soc_dapm_widget_list *wlist = snd_kcontrol_chip(kcontrol);
|
||||
struct snd_soc_dapm_widget *widget = wlist->widgets[0];
|
||||
struct gb_audio_ctl_elem_value gbvalue;
|
||||
@ -802,7 +801,6 @@ static int gbcodec_enum_dapm_ctl_put(struct snd_kcontrol *kcontrol,
|
||||
|
||||
mux = ucontrol->value.enumerated.item[0];
|
||||
val = mux << e->shift_l;
|
||||
mask = e->mask << e->shift_l;
|
||||
|
||||
if (le32_to_cpu(gbvalue.value.enumerated_item[0]) !=
|
||||
ucontrol->value.enumerated.item[0]) {
|
||||
@ -815,7 +813,6 @@ static int gbcodec_enum_dapm_ctl_put(struct snd_kcontrol *kcontrol,
|
||||
if (ucontrol->value.enumerated.item[1] > e->items - 1)
|
||||
return -EINVAL;
|
||||
val |= ucontrol->value.enumerated.item[1] << e->shift_r;
|
||||
mask |= e->mask << e->shift_r;
|
||||
if (le32_to_cpu(gbvalue.value.enumerated_item[1]) !=
|
||||
ucontrol->value.enumerated.item[1]) {
|
||||
change = 1;
|
||||
|
@ -324,7 +324,7 @@ int gb_cap_connection_init(struct gb_connection *connection)
|
||||
if (ret)
|
||||
goto err_list_del;
|
||||
|
||||
minor = ida_simple_get(&cap_minors_map, 0, NUM_MINORS, GFP_KERNEL);
|
||||
minor = ida_alloc_max(&cap_minors_map, NUM_MINORS - 1, GFP_KERNEL);
|
||||
if (minor < 0) {
|
||||
ret = minor;
|
||||
goto err_connection_disable;
|
||||
@ -351,7 +351,7 @@ int gb_cap_connection_init(struct gb_connection *connection)
|
||||
err_del_cdev:
|
||||
cdev_del(&cap->cdev);
|
||||
err_remove_ida:
|
||||
ida_simple_remove(&cap_minors_map, minor);
|
||||
ida_free(&cap_minors_map, minor);
|
||||
err_connection_disable:
|
||||
gb_connection_disable(connection);
|
||||
err_list_del:
|
||||
@ -375,7 +375,7 @@ void gb_cap_connection_exit(struct gb_connection *connection)
|
||||
|
||||
device_destroy(&cap_class, cap->dev_num);
|
||||
cdev_del(&cap->cdev);
|
||||
ida_simple_remove(&cap_minors_map, MINOR(cap->dev_num));
|
||||
ida_free(&cap_minors_map, MINOR(cap->dev_num));
|
||||
|
||||
/*
|
||||
* Disallow any new ioctl operations on the char device and wait for
|
||||
|
@ -243,10 +243,10 @@ static int gb_bootrom_get_firmware(struct gb_operation *op)
|
||||
struct gb_bootrom *bootrom = gb_connection_get_data(op->connection);
|
||||
const struct firmware *fw;
|
||||
struct gb_bootrom_get_firmware_request *firmware_request;
|
||||
struct gb_bootrom_get_firmware_response *firmware_response;
|
||||
struct device *dev = &op->connection->bundle->dev;
|
||||
unsigned int offset, size;
|
||||
enum next_request_type next_request;
|
||||
u8 *firmware_response;
|
||||
int ret = 0;
|
||||
|
||||
/* Disable timeouts */
|
||||
@ -280,15 +280,15 @@ static int gb_bootrom_get_firmware(struct gb_operation *op)
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
if (!gb_operation_response_alloc(op, sizeof(*firmware_response) + size,
|
||||
GFP_KERNEL)) {
|
||||
/* gb_bootrom_get_firmware_response contains only a byte array */
|
||||
if (!gb_operation_response_alloc(op, size, GFP_KERNEL)) {
|
||||
dev_err(dev, "%s: error allocating response\n", __func__);
|
||||
ret = -ENOMEM;
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
firmware_response = op->response->payload;
|
||||
memcpy(firmware_response->data, fw->data + offset, size);
|
||||
memcpy(firmware_response, fw->data + offset, size);
|
||||
|
||||
dev_dbg(dev, "responding with firmware (offs = %u, size = %u)\n",
|
||||
offset, size);
|
||||
|
@ -63,8 +63,7 @@ static void fw_req_release(struct kref *kref)
|
||||
* just hope that it never happens.
|
||||
*/
|
||||
if (!fw_req->timedout)
|
||||
ida_simple_remove(&fw_req->fw_download->id_map,
|
||||
fw_req->firmware_id);
|
||||
ida_free(&fw_req->fw_download->id_map, fw_req->firmware_id);
|
||||
|
||||
kfree(fw_req);
|
||||
}
|
||||
@ -171,7 +170,7 @@ static struct fw_request *find_firmware(struct fw_download *fw_download,
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
/* Allocate ids from 1 to 255 (u8-max), 0 is an invalid id */
|
||||
ret = ida_simple_get(&fw_download->id_map, 1, 256, GFP_KERNEL);
|
||||
ret = ida_alloc_range(&fw_download->id_map, 1, 255, GFP_KERNEL);
|
||||
if (ret < 0) {
|
||||
dev_err(fw_download->parent,
|
||||
"failed to allocate firmware id (%d)\n", ret);
|
||||
@ -212,7 +211,7 @@ static struct fw_request *find_firmware(struct fw_download *fw_download,
|
||||
return fw_req;
|
||||
|
||||
err_free_id:
|
||||
ida_simple_remove(&fw_download->id_map, fw_req->firmware_id);
|
||||
ida_free(&fw_download->id_map, fw_req->firmware_id);
|
||||
err_free_req:
|
||||
kfree(fw_req);
|
||||
|
||||
@ -271,11 +270,11 @@ static int fw_download_fetch_firmware(struct gb_operation *op)
|
||||
struct gb_connection *connection = op->connection;
|
||||
struct fw_download *fw_download = gb_connection_get_data(connection);
|
||||
struct gb_fw_download_fetch_firmware_request *request;
|
||||
struct gb_fw_download_fetch_firmware_response *response;
|
||||
struct fw_request *fw_req;
|
||||
const struct firmware *fw;
|
||||
unsigned int offset, size;
|
||||
u8 firmware_id;
|
||||
u8 *response;
|
||||
int ret = 0;
|
||||
|
||||
if (op->request->payload_size != sizeof(*request)) {
|
||||
@ -325,8 +324,8 @@ static int fw_download_fetch_firmware(struct gb_operation *op)
|
||||
goto put_fw;
|
||||
}
|
||||
|
||||
if (!gb_operation_response_alloc(op, sizeof(*response) + size,
|
||||
GFP_KERNEL)) {
|
||||
/* gb_fw_download_fetch_firmware_response contains only a byte array */
|
||||
if (!gb_operation_response_alloc(op, size, GFP_KERNEL)) {
|
||||
dev_err(fw_download->parent,
|
||||
"error allocating fetch firmware response\n");
|
||||
ret = -ENOMEM;
|
||||
@ -334,7 +333,7 @@ static int fw_download_fetch_firmware(struct gb_operation *op)
|
||||
}
|
||||
|
||||
response = op->response->payload;
|
||||
memcpy(response->data, fw->data + offset, size);
|
||||
memcpy(response, fw->data + offset, size);
|
||||
|
||||
dev_dbg(fw_download->parent,
|
||||
"responding with firmware (offs = %u, size = %u)\n", offset,
|
||||
|
@ -165,7 +165,7 @@ static int fw_mgmt_load_and_validate_operation(struct fw_mgmt *fw_mgmt,
|
||||
}
|
||||
|
||||
/* Allocate ids from 1 to 255 (u8-max), 0 is an invalid id */
|
||||
ret = ida_simple_get(&fw_mgmt->id_map, 1, 256, GFP_KERNEL);
|
||||
ret = ida_alloc_range(&fw_mgmt->id_map, 1, 255, GFP_KERNEL);
|
||||
if (ret < 0) {
|
||||
dev_err(fw_mgmt->parent, "failed to allocate request id (%d)\n",
|
||||
ret);
|
||||
@ -180,8 +180,7 @@ static int fw_mgmt_load_and_validate_operation(struct fw_mgmt *fw_mgmt,
|
||||
GB_FW_MGMT_TYPE_LOAD_AND_VALIDATE_FW, &request,
|
||||
sizeof(request), NULL, 0);
|
||||
if (ret) {
|
||||
ida_simple_remove(&fw_mgmt->id_map,
|
||||
fw_mgmt->intf_fw_request_id);
|
||||
ida_free(&fw_mgmt->id_map, fw_mgmt->intf_fw_request_id);
|
||||
fw_mgmt->intf_fw_request_id = 0;
|
||||
dev_err(fw_mgmt->parent,
|
||||
"load and validate firmware request failed (%d)\n",
|
||||
@ -220,7 +219,7 @@ static int fw_mgmt_interface_fw_loaded_operation(struct gb_operation *op)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
ida_simple_remove(&fw_mgmt->id_map, fw_mgmt->intf_fw_request_id);
|
||||
ida_free(&fw_mgmt->id_map, fw_mgmt->intf_fw_request_id);
|
||||
fw_mgmt->intf_fw_request_id = 0;
|
||||
fw_mgmt->intf_fw_status = request->status;
|
||||
fw_mgmt->intf_fw_major = le16_to_cpu(request->major);
|
||||
@ -316,7 +315,7 @@ static int fw_mgmt_backend_fw_update_operation(struct fw_mgmt *fw_mgmt,
|
||||
}
|
||||
|
||||
/* Allocate ids from 1 to 255 (u8-max), 0 is an invalid id */
|
||||
ret = ida_simple_get(&fw_mgmt->id_map, 1, 256, GFP_KERNEL);
|
||||
ret = ida_alloc_range(&fw_mgmt->id_map, 1, 255, GFP_KERNEL);
|
||||
if (ret < 0) {
|
||||
dev_err(fw_mgmt->parent, "failed to allocate request id (%d)\n",
|
||||
ret);
|
||||
@ -330,8 +329,7 @@ static int fw_mgmt_backend_fw_update_operation(struct fw_mgmt *fw_mgmt,
|
||||
GB_FW_MGMT_TYPE_BACKEND_FW_UPDATE, &request,
|
||||
sizeof(request), NULL, 0);
|
||||
if (ret) {
|
||||
ida_simple_remove(&fw_mgmt->id_map,
|
||||
fw_mgmt->backend_fw_request_id);
|
||||
ida_free(&fw_mgmt->id_map, fw_mgmt->backend_fw_request_id);
|
||||
fw_mgmt->backend_fw_request_id = 0;
|
||||
dev_err(fw_mgmt->parent,
|
||||
"backend %s firmware update request failed (%d)\n", tag,
|
||||
@ -369,7 +367,7 @@ static int fw_mgmt_backend_fw_updated_operation(struct gb_operation *op)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
ida_simple_remove(&fw_mgmt->id_map, fw_mgmt->backend_fw_request_id);
|
||||
ida_free(&fw_mgmt->id_map, fw_mgmt->backend_fw_request_id);
|
||||
fw_mgmt->backend_fw_request_id = 0;
|
||||
fw_mgmt->backend_fw_status = request->status;
|
||||
|
||||
@ -617,7 +615,7 @@ int gb_fw_mgmt_connection_init(struct gb_connection *connection)
|
||||
if (ret)
|
||||
goto err_list_del;
|
||||
|
||||
minor = ida_simple_get(&fw_mgmt_minors_map, 0, NUM_MINORS, GFP_KERNEL);
|
||||
minor = ida_alloc_max(&fw_mgmt_minors_map, NUM_MINORS - 1, GFP_KERNEL);
|
||||
if (minor < 0) {
|
||||
ret = minor;
|
||||
goto err_connection_disable;
|
||||
@ -645,7 +643,7 @@ int gb_fw_mgmt_connection_init(struct gb_connection *connection)
|
||||
err_del_cdev:
|
||||
cdev_del(&fw_mgmt->cdev);
|
||||
err_remove_ida:
|
||||
ida_simple_remove(&fw_mgmt_minors_map, minor);
|
||||
ida_free(&fw_mgmt_minors_map, minor);
|
||||
err_connection_disable:
|
||||
gb_connection_disable(connection);
|
||||
err_list_del:
|
||||
@ -669,7 +667,7 @@ void gb_fw_mgmt_connection_exit(struct gb_connection *connection)
|
||||
|
||||
device_destroy(&fw_mgmt_class, fw_mgmt->dev_num);
|
||||
cdev_del(&fw_mgmt->cdev);
|
||||
ida_simple_remove(&fw_mgmt_minors_map, MINOR(fw_mgmt->dev_num));
|
||||
ida_free(&fw_mgmt_minors_map, MINOR(fw_mgmt->dev_num));
|
||||
|
||||
/*
|
||||
* Disallow any new ioctl operations on the char device and wait for
|
||||
|
@ -46,7 +46,7 @@ static void gbphy_dev_release(struct device *dev)
|
||||
{
|
||||
struct gbphy_device *gbphy_dev = to_gbphy_dev(dev);
|
||||
|
||||
ida_simple_remove(&gbphy_id, gbphy_dev->id);
|
||||
ida_free(&gbphy_id, gbphy_dev->id);
|
||||
kfree(gbphy_dev);
|
||||
}
|
||||
|
||||
@ -182,7 +182,7 @@ static void gbphy_dev_remove(struct device *dev)
|
||||
pm_runtime_dont_use_autosuspend(dev);
|
||||
}
|
||||
|
||||
static struct bus_type gbphy_bus_type = {
|
||||
static const struct bus_type gbphy_bus_type = {
|
||||
.name = "gbphy",
|
||||
.match = gbphy_dev_match,
|
||||
.probe = gbphy_dev_probe,
|
||||
@ -225,13 +225,13 @@ static struct gbphy_device *gb_gbphy_create_dev(struct gb_bundle *bundle,
|
||||
int retval;
|
||||
int id;
|
||||
|
||||
id = ida_simple_get(&gbphy_id, 1, 0, GFP_KERNEL);
|
||||
id = ida_alloc_min(&gbphy_id, 1, GFP_KERNEL);
|
||||
if (id < 0)
|
||||
return ERR_PTR(id);
|
||||
|
||||
gbphy_dev = kzalloc(sizeof(*gbphy_dev), GFP_KERNEL);
|
||||
if (!gbphy_dev) {
|
||||
ida_simple_remove(&gbphy_id, id);
|
||||
ida_free(&gbphy_id, id);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@
|
||||
/* IOCTL support */
|
||||
struct cap_ioc_get_endpoint_uid {
|
||||
__u8 uid[8];
|
||||
} __attribute__ ((__packed__));
|
||||
} __packed;
|
||||
|
||||
struct cap_ioc_get_ims_certificate {
|
||||
__u32 certificate_class;
|
||||
@ -53,7 +53,7 @@ struct cap_ioc_get_ims_certificate {
|
||||
__u8 result_code;
|
||||
__u32 cert_size;
|
||||
__u8 certificate[CAP_CERTIFICATE_MAX_SIZE];
|
||||
} __attribute__ ((__packed__));
|
||||
} __packed;
|
||||
|
||||
struct cap_ioc_authenticate {
|
||||
__u32 auth_type;
|
||||
@ -64,7 +64,7 @@ struct cap_ioc_authenticate {
|
||||
__u8 response[64];
|
||||
__u32 signature_size;
|
||||
__u8 signature[CAP_SIGNATURE_MAX_SIZE];
|
||||
} __attribute__ ((__packed__));
|
||||
} __packed;
|
||||
|
||||
#define CAP_IOCTL_BASE 'C'
|
||||
#define CAP_IOC_GET_ENDPOINT_UID _IOR(CAP_IOCTL_BASE, 0, struct cap_ioc_get_endpoint_uid)
|
||||
|
@ -41,14 +41,14 @@ struct fw_mgmt_ioc_get_intf_version {
|
||||
__u8 firmware_tag[GB_FIRMWARE_U_TAG_MAX_SIZE];
|
||||
__u16 major;
|
||||
__u16 minor;
|
||||
} __attribute__ ((__packed__));
|
||||
} __packed;
|
||||
|
||||
struct fw_mgmt_ioc_get_backend_version {
|
||||
__u8 firmware_tag[GB_FIRMWARE_U_TAG_MAX_SIZE];
|
||||
__u16 major;
|
||||
__u16 minor;
|
||||
__u8 status;
|
||||
} __attribute__ ((__packed__));
|
||||
} __packed;
|
||||
|
||||
struct fw_mgmt_ioc_intf_load_and_validate {
|
||||
__u8 firmware_tag[GB_FIRMWARE_U_TAG_MAX_SIZE];
|
||||
@ -56,12 +56,12 @@ struct fw_mgmt_ioc_intf_load_and_validate {
|
||||
__u8 status;
|
||||
__u16 major;
|
||||
__u16 minor;
|
||||
} __attribute__ ((__packed__));
|
||||
} __packed;
|
||||
|
||||
struct fw_mgmt_ioc_backend_fw_update {
|
||||
__u8 firmware_tag[GB_FIRMWARE_U_TAG_MAX_SIZE];
|
||||
__u8 status;
|
||||
} __attribute__ ((__packed__));
|
||||
} __packed;
|
||||
|
||||
#define FW_MGMT_IOCTL_BASE 'F'
|
||||
#define FW_MGMT_IOC_GET_INTF_FW _IOR(FW_MGMT_IOCTL_BASE, 0, struct fw_mgmt_ioc_get_intf_version)
|
||||
|
@ -95,15 +95,15 @@ static struct led_classdev *get_channel_cdev(struct gb_channel *channel)
|
||||
static struct gb_channel *get_channel_from_mode(struct gb_light *light,
|
||||
u32 mode)
|
||||
{
|
||||
struct gb_channel *channel = NULL;
|
||||
struct gb_channel *channel;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < light->channels_count; i++) {
|
||||
channel = &light->channels[i];
|
||||
if (channel && channel->mode == mode)
|
||||
break;
|
||||
if (channel->mode == mode)
|
||||
return channel;
|
||||
}
|
||||
return channel;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int __gb_lights_flash_intensity_set(struct gb_channel *channel,
|
||||
|
@ -1028,7 +1028,7 @@ static int gb_loopback_probe(struct gb_bundle *bundle,
|
||||
gb->file = debugfs_create_file(name, S_IFREG | 0444, gb_dev.root, gb,
|
||||
&gb_loopback_dbgfs_latency_fops);
|
||||
|
||||
gb->id = ida_simple_get(&loopback_ida, 0, 0, GFP_KERNEL);
|
||||
gb->id = ida_alloc(&loopback_ida, GFP_KERNEL);
|
||||
if (gb->id < 0) {
|
||||
retval = gb->id;
|
||||
goto out_debugfs_remove;
|
||||
@ -1079,7 +1079,7 @@ out_conn:
|
||||
out_connection_disable:
|
||||
gb_connection_disable(connection);
|
||||
out_ida_remove:
|
||||
ida_simple_remove(&loopback_ida, gb->id);
|
||||
ida_free(&loopback_ida, gb->id);
|
||||
out_debugfs_remove:
|
||||
debugfs_remove(gb->file);
|
||||
out_connection_destroy:
|
||||
@ -1121,7 +1121,7 @@ static void gb_loopback_disconnect(struct gb_bundle *bundle)
|
||||
spin_unlock_irqrestore(&gb_dev.lock, flags);
|
||||
|
||||
device_unregister(gb->dev);
|
||||
ida_simple_remove(&loopback_ida, gb->id);
|
||||
ida_free(&loopback_ida, gb->id);
|
||||
|
||||
gb_connection_destroy(gb->connection);
|
||||
kfree(gb);
|
||||
|
@ -181,7 +181,7 @@ static int gb_raw_probe(struct gb_bundle *bundle,
|
||||
raw->connection = connection;
|
||||
greybus_set_drvdata(bundle, raw);
|
||||
|
||||
minor = ida_simple_get(&minors, 0, 0, GFP_KERNEL);
|
||||
minor = ida_alloc(&minors, GFP_KERNEL);
|
||||
if (minor < 0) {
|
||||
retval = minor;
|
||||
goto error_connection_destroy;
|
||||
@ -214,7 +214,7 @@ error_connection_disable:
|
||||
gb_connection_disable(connection);
|
||||
|
||||
error_remove_ida:
|
||||
ida_simple_remove(&minors, minor);
|
||||
ida_free(&minors, minor);
|
||||
|
||||
error_connection_destroy:
|
||||
gb_connection_destroy(connection);
|
||||
@ -235,7 +235,7 @@ static void gb_raw_disconnect(struct gb_bundle *bundle)
|
||||
device_destroy(&raw_class, raw->dev);
|
||||
cdev_del(&raw->cdev);
|
||||
gb_connection_disable(connection);
|
||||
ida_simple_remove(&minors, MINOR(raw->dev));
|
||||
ida_free(&minors, MINOR(raw->dev));
|
||||
gb_connection_destroy(connection);
|
||||
|
||||
mutex_lock(&raw->list_lock);
|
||||
|
@ -153,7 +153,7 @@ static int gb_vibrator_probe(struct gb_bundle *bundle,
|
||||
* there is a "real" device somewhere in the kernel for this, but I
|
||||
* can't find it at the moment...
|
||||
*/
|
||||
vib->minor = ida_simple_get(&minors, 0, 0, GFP_KERNEL);
|
||||
vib->minor = ida_alloc(&minors, GFP_KERNEL);
|
||||
if (vib->minor < 0) {
|
||||
retval = vib->minor;
|
||||
goto err_connection_disable;
|
||||
@ -173,7 +173,7 @@ static int gb_vibrator_probe(struct gb_bundle *bundle,
|
||||
return 0;
|
||||
|
||||
err_ida_remove:
|
||||
ida_simple_remove(&minors, vib->minor);
|
||||
ida_free(&minors, vib->minor);
|
||||
err_connection_disable:
|
||||
gb_connection_disable(connection);
|
||||
err_connection_destroy:
|
||||
@ -197,7 +197,7 @@ static void gb_vibrator_disconnect(struct gb_bundle *bundle)
|
||||
turn_off(vib);
|
||||
|
||||
device_unregister(vib->dev);
|
||||
ida_simple_remove(&minors, vib->minor);
|
||||
ida_free(&minors, vib->minor);
|
||||
gb_connection_disable(vib->connection);
|
||||
gb_connection_destroy(vib->connection);
|
||||
kfree(vib);
|
||||
|
@ -1,6 +1,5 @@
|
||||
ToDo list (incomplete, unordered)
|
||||
- add compile as module support
|
||||
- move half of the nvec init stuff to i2c-tegra.c
|
||||
- move event handling to nvec_events
|
||||
- move the driver to the new i2c slave framework
|
||||
- finish suspend/resume support
|
||||
- add support for more device implementations
|
||||
- fix udelay in the isr
|
||||
- add atomic ops in order to fix shutoff/reboot problems
|
||||
|
@ -709,10 +709,11 @@ static irqreturn_t nvec_interrupt(int irq, void *dev)
|
||||
status & RNW ? " RNW" : "");
|
||||
|
||||
/*
|
||||
* TODO: A correct fix needs to be found for this.
|
||||
* TODO: replace the udelay with a read back after each writel above
|
||||
* in order to work around a hardware issue, see i2c-tegra.c
|
||||
*
|
||||
* We experience less incomplete messages with this delay than without
|
||||
* it, but we don't know why. Help is appreciated.
|
||||
* Unfortunately, this change causes an intialisation issue with the
|
||||
* touchpad, which needs to be fixed first.
|
||||
*/
|
||||
udelay(100);
|
||||
|
||||
|
@ -10,7 +10,6 @@
|
||||
#include <linux/phy.h>
|
||||
#include <linux/ratelimit.h>
|
||||
#include <linux/of_mdio.h>
|
||||
#include <generated/utsrelease.h>
|
||||
#include <net/dst.h>
|
||||
|
||||
#include "octeon-ethernet.h"
|
||||
@ -22,7 +21,6 @@ static void cvm_oct_get_drvinfo(struct net_device *dev,
|
||||
struct ethtool_drvinfo *info)
|
||||
{
|
||||
strscpy(info->driver, KBUILD_MODNAME, sizeof(info->driver));
|
||||
strscpy(info->version, UTS_RELEASE, sizeof(info->version));
|
||||
strscpy(info->bus_info, "Builtin", sizeof(info->bus_info));
|
||||
}
|
||||
|
||||
|
@ -1362,7 +1362,7 @@ static inline struct cvmx_wqe *cvmx_pow_work_request_sync(cvmx_pow_wait_t wait)
|
||||
}
|
||||
|
||||
static inline int cvmx_spi_restart_interface(int interface,
|
||||
cvmx_spi_mode_t mode, int timeout)
|
||||
cvmx_spi_mode_t mode, int timeout)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -49,6 +49,7 @@
|
||||
#define N_PI433_MINORS BIT(MINORBITS) /*32*/ /* ... up to 256 */
|
||||
#define MAX_MSG_SIZE 900 /* min: FIFO_SIZE! */
|
||||
#define MSG_FIFO_SIZE 65536 /* 65536 = 2^16 */
|
||||
#define FIFO_THRESHOLD 15 /* bytes */
|
||||
#define NUM_DIO 2
|
||||
|
||||
static dev_t pi433_dev;
|
||||
|
@ -8,12 +8,12 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/units.h>
|
||||
|
||||
#include "rf69.h"
|
||||
#include "rf69_registers.h"
|
||||
|
||||
#define F_OSC 32000000 /* in Hz */
|
||||
#define FIFO_SIZE 66 /* in byte */
|
||||
#define F_OSC (32 * HZ_PER_MHZ)
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
|
@ -11,11 +11,7 @@
|
||||
#include "rf69_enum.h"
|
||||
#include "rf69_registers.h"
|
||||
|
||||
/* NOTE: Modifying FREQUENCY value impacts CE certification */
|
||||
#define F_OSC 32000000 /* Hz */
|
||||
#define FREQUENCY 433920000 /* Hz */
|
||||
#define FIFO_SIZE 66 /* bytes */
|
||||
#define FIFO_THRESHOLD 15 /* bytes */
|
||||
|
||||
u8 rf69_read_reg(struct spi_device *spi, u8 addr);
|
||||
int rf69_get_version(struct spi_device *spi);
|
||||
|
@ -164,7 +164,7 @@ void rtl92e_set_reg(struct net_device *dev, u8 variable, u8 *val)
|
||||
eACI);
|
||||
break;
|
||||
}
|
||||
priv->rtllib->SetHwRegHandler(dev, HW_VAR_ACM_CTRL,
|
||||
priv->rtllib->set_hw_reg_handler(dev, HW_VAR_ACM_CTRL,
|
||||
&pAcParam);
|
||||
break;
|
||||
}
|
||||
@ -693,11 +693,10 @@ void rtl92e_link_change(struct net_device *dev)
|
||||
u32 reg;
|
||||
|
||||
reg = rtl92e_readl(dev, RCR);
|
||||
if (priv->rtllib->link_state == MAC80211_LINKED) {
|
||||
if (priv->rtllib->link_state == MAC80211_LINKED)
|
||||
priv->receive_config = reg |= RCR_CBSSID;
|
||||
} else {
|
||||
else
|
||||
priv->receive_config = reg &= ~RCR_CBSSID;
|
||||
}
|
||||
|
||||
rtl92e_writel(dev, RCR, reg);
|
||||
}
|
||||
@ -1296,7 +1295,6 @@ static void _rtl92e_query_rxphystatus(
|
||||
pwdb_all = rtl92e_rx_db_to_percent(rx_pwr_all);
|
||||
|
||||
pstats->RxPWDBAll = precord_stats->RxPWDBAll = pwdb_all;
|
||||
pstats->RxPower = precord_stats->RxPower = rx_pwr_all;
|
||||
pstats->RecvSignalPower = rx_pwr_all;
|
||||
if (pdrvinfo->RxHT && pdrvinfo->RxRate >= DESC90_RATEMCS8 &&
|
||||
pdrvinfo->RxRate <= DESC90_RATEMCS15)
|
||||
@ -1348,14 +1346,7 @@ static void _rtl92e_process_phyinfo(struct r8192_priv *priv, u8 *buffer,
|
||||
static u32 slide_beacon_adc_pwdb_index;
|
||||
static u32 slide_beacon_adc_pwdb_statistics;
|
||||
static u32 last_beacon_adc_pwdb;
|
||||
struct ieee80211_hdr_3addr *hdr;
|
||||
u16 sc;
|
||||
unsigned int seq;
|
||||
|
||||
hdr = (struct ieee80211_hdr_3addr *)buffer;
|
||||
sc = le16_to_cpu(hdr->seq_ctrl);
|
||||
seq = WLAN_GET_SEQ_SEQ(sc);
|
||||
curr_st->Seq_Num = seq;
|
||||
if (!prev_st->bIsAMPDU)
|
||||
bcheck = true;
|
||||
|
||||
@ -1536,7 +1527,7 @@ static void _rtl92e_update_received_rate_histogram_stats(
|
||||
{
|
||||
struct r8192_priv *priv = (struct r8192_priv *)rtllib_priv(dev);
|
||||
u32 rcvType = 1;
|
||||
u32 rateIndex;
|
||||
u32 rate_index;
|
||||
|
||||
if (pstats->bCRC)
|
||||
rcvType = 2;
|
||||
@ -1545,95 +1536,95 @@ static void _rtl92e_update_received_rate_histogram_stats(
|
||||
|
||||
switch (pstats->rate) {
|
||||
case MGN_1M:
|
||||
rateIndex = 0;
|
||||
rate_index = 0;
|
||||
break;
|
||||
case MGN_2M:
|
||||
rateIndex = 1;
|
||||
rate_index = 1;
|
||||
break;
|
||||
case MGN_5_5M:
|
||||
rateIndex = 2;
|
||||
rate_index = 2;
|
||||
break;
|
||||
case MGN_11M:
|
||||
rateIndex = 3;
|
||||
rate_index = 3;
|
||||
break;
|
||||
case MGN_6M:
|
||||
rateIndex = 4;
|
||||
rate_index = 4;
|
||||
break;
|
||||
case MGN_9M:
|
||||
rateIndex = 5;
|
||||
rate_index = 5;
|
||||
break;
|
||||
case MGN_12M:
|
||||
rateIndex = 6;
|
||||
rate_index = 6;
|
||||
break;
|
||||
case MGN_18M:
|
||||
rateIndex = 7;
|
||||
rate_index = 7;
|
||||
break;
|
||||
case MGN_24M:
|
||||
rateIndex = 8;
|
||||
rate_index = 8;
|
||||
break;
|
||||
case MGN_36M:
|
||||
rateIndex = 9;
|
||||
rate_index = 9;
|
||||
break;
|
||||
case MGN_48M:
|
||||
rateIndex = 10;
|
||||
rate_index = 10;
|
||||
break;
|
||||
case MGN_54M:
|
||||
rateIndex = 11;
|
||||
rate_index = 11;
|
||||
break;
|
||||
case MGN_MCS0:
|
||||
rateIndex = 12;
|
||||
rate_index = 12;
|
||||
break;
|
||||
case MGN_MCS1:
|
||||
rateIndex = 13;
|
||||
rate_index = 13;
|
||||
break;
|
||||
case MGN_MCS2:
|
||||
rateIndex = 14;
|
||||
rate_index = 14;
|
||||
break;
|
||||
case MGN_MCS3:
|
||||
rateIndex = 15;
|
||||
rate_index = 15;
|
||||
break;
|
||||
case MGN_MCS4:
|
||||
rateIndex = 16;
|
||||
rate_index = 16;
|
||||
break;
|
||||
case MGN_MCS5:
|
||||
rateIndex = 17;
|
||||
rate_index = 17;
|
||||
break;
|
||||
case MGN_MCS6:
|
||||
rateIndex = 18;
|
||||
rate_index = 18;
|
||||
break;
|
||||
case MGN_MCS7:
|
||||
rateIndex = 19;
|
||||
rate_index = 19;
|
||||
break;
|
||||
case MGN_MCS8:
|
||||
rateIndex = 20;
|
||||
rate_index = 20;
|
||||
break;
|
||||
case MGN_MCS9:
|
||||
rateIndex = 21;
|
||||
rate_index = 21;
|
||||
break;
|
||||
case MGN_MCS10:
|
||||
rateIndex = 22;
|
||||
rate_index = 22;
|
||||
break;
|
||||
case MGN_MCS11:
|
||||
rateIndex = 23;
|
||||
rate_index = 23;
|
||||
break;
|
||||
case MGN_MCS12:
|
||||
rateIndex = 24;
|
||||
rate_index = 24;
|
||||
break;
|
||||
case MGN_MCS13:
|
||||
rateIndex = 25;
|
||||
rate_index = 25;
|
||||
break;
|
||||
case MGN_MCS14:
|
||||
rateIndex = 26;
|
||||
rate_index = 26;
|
||||
break;
|
||||
case MGN_MCS15:
|
||||
rateIndex = 27;
|
||||
rate_index = 27;
|
||||
break;
|
||||
default:
|
||||
rateIndex = 28;
|
||||
rate_index = 28;
|
||||
break;
|
||||
}
|
||||
priv->stats.received_rate_histogram[0][rateIndex]++;
|
||||
priv->stats.received_rate_histogram[rcvType][rateIndex]++;
|
||||
priv->stats.received_rate_histogram[0][rate_index]++;
|
||||
priv->stats.received_rate_histogram[rcvType][rate_index]++;
|
||||
}
|
||||
|
||||
bool rtl92e_get_rx_stats(struct net_device *dev, struct rtllib_rx_stats *stats,
|
||||
@ -1650,7 +1641,6 @@ bool rtl92e_get_rx_stats(struct net_device *dev, struct rtllib_rx_stats *stats,
|
||||
stats->bHwError |= 1;
|
||||
|
||||
if (stats->bHwError) {
|
||||
stats->bShift = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1662,7 +1652,6 @@ bool rtl92e_get_rx_stats(struct net_device *dev, struct rtllib_rx_stats *stats,
|
||||
|
||||
stats->rate = _rtl92e_rate_hw_to_mgn((bool)pDrvInfo->RxHT,
|
||||
pDrvInfo->RxRate);
|
||||
stats->bShortPreamble = pDrvInfo->SPLCP;
|
||||
|
||||
_rtl92e_update_received_rate_histogram_stats(dev, stats);
|
||||
|
||||
@ -1673,19 +1662,9 @@ bool rtl92e_get_rx_stats(struct net_device *dev, struct rtllib_rx_stats *stats,
|
||||
stats->TimeStampLow = pDrvInfo->TSFL;
|
||||
stats->TimeStampHigh = rtl92e_readl(dev, TSFR + 4);
|
||||
|
||||
if ((stats->RxBufShift + stats->RxDrvInfoSize) > 0)
|
||||
stats->bShift = 1;
|
||||
|
||||
stats->RxIs40MHzPacket = pDrvInfo->BW;
|
||||
|
||||
_rtl92e_translate_rx_signal_stats(dev, skb, stats, pdesc, pDrvInfo);
|
||||
skb_trim(skb, skb->len - S_CRC_LEN);
|
||||
|
||||
|
||||
stats->packetlength = stats->Length - 4;
|
||||
stats->fraglength = stats->packetlength;
|
||||
stats->fragoffset = 0;
|
||||
stats->ntotalfrag = 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1698,7 +1677,7 @@ void rtl92e_stop_adapter(struct net_device *dev, bool reset)
|
||||
u32 ulRegRead;
|
||||
|
||||
op_mode = RT_OP_MODE_NO_LINK;
|
||||
priv->rtllib->SetHwRegHandler(dev, HW_VAR_MEDIA_STATUS, &op_mode);
|
||||
priv->rtllib->set_hw_reg_handler(dev, HW_VAR_MEDIA_STATUS, &op_mode);
|
||||
|
||||
if (!priv->rtllib->bSupportRemoteWakeUp) {
|
||||
u1bTmp = 0x0;
|
||||
@ -1852,7 +1831,7 @@ bool rtl92e_is_rx_stuck(struct net_device *dev)
|
||||
u16 RegRxCounter = rtl92e_readw(dev, 0x130);
|
||||
bool bStuck = false;
|
||||
static u8 rx_chk_cnt;
|
||||
u32 SlotIndex = 0, TotalRxStuckCount = 0;
|
||||
u32 slot_index = 0, TotalRxStuckCount = 0;
|
||||
u8 i;
|
||||
u8 SilentResetRxSoltNum = 4;
|
||||
|
||||
@ -1882,10 +1861,10 @@ bool rtl92e_is_rx_stuck(struct net_device *dev)
|
||||
}
|
||||
|
||||
|
||||
SlotIndex = (priv->silent_reset_rx_slot_index++) % SilentResetRxSoltNum;
|
||||
slot_index = (priv->silent_reset_rx_slot_index++) % SilentResetRxSoltNum;
|
||||
|
||||
if (priv->rx_ctr == RegRxCounter) {
|
||||
priv->silent_reset_rx_stuck_event[SlotIndex] = 1;
|
||||
priv->silent_reset_rx_stuck_event[slot_index] = 1;
|
||||
|
||||
for (i = 0; i < SilentResetRxSoltNum; i++)
|
||||
TotalRxStuckCount += priv->silent_reset_rx_stuck_event[i];
|
||||
@ -1897,7 +1876,7 @@ bool rtl92e_is_rx_stuck(struct net_device *dev)
|
||||
priv->silent_reset_rx_stuck_event[i];
|
||||
}
|
||||
} else {
|
||||
priv->silent_reset_rx_stuck_event[SlotIndex] = 0;
|
||||
priv->silent_reset_rx_stuck_event[slot_index] = 0;
|
||||
}
|
||||
|
||||
priv->rx_ctr = RegRxCounter;
|
||||
@ -1938,5 +1917,5 @@ bool rtl92e_is_halfn_supported_by_ap(struct net_device *dev)
|
||||
struct r8192_priv *priv = rtllib_priv(dev);
|
||||
struct rtllib_device *ieee = priv->rtllib;
|
||||
|
||||
return ieee->bHalfWirelessN24GMode;
|
||||
return ieee->half_wireless_n24g_mode;
|
||||
}
|
||||
|
@ -714,7 +714,6 @@ void rtl92e_set_channel(struct net_device *dev, u8 channel)
|
||||
if (priv->up)
|
||||
_rtl92e_phy_switch_channel_work_item(dev);
|
||||
priv->sw_chnl_in_progress = false;
|
||||
return;
|
||||
}
|
||||
|
||||
static void _rtl92e_cck_tx_power_track_bw_switch_tssi(struct net_device *dev)
|
||||
|
@ -172,7 +172,7 @@ bool rtl92e_set_rf_state(struct net_device *dev,
|
||||
priv->blinked_ingpio = true;
|
||||
else
|
||||
priv->blinked_ingpio = false;
|
||||
rtllib_MgntDisconnect(priv->rtllib,
|
||||
rtllib_mgnt_disconnect(priv->rtllib,
|
||||
WLAN_REASON_DISASSOC_STA_HAS_LEFT);
|
||||
}
|
||||
}
|
||||
@ -236,14 +236,14 @@ static void _rtl92e_update_cap(struct net_device *dev, u16 cap)
|
||||
if (priv->dot11_current_preamble_mode != PREAMBLE_SHORT) {
|
||||
ShortPreamble = true;
|
||||
priv->dot11_current_preamble_mode = PREAMBLE_SHORT;
|
||||
priv->rtllib->SetHwRegHandler(dev, HW_VAR_ACK_PREAMBLE,
|
||||
priv->rtllib->set_hw_reg_handler(dev, HW_VAR_ACK_PREAMBLE,
|
||||
(unsigned char *)&ShortPreamble);
|
||||
}
|
||||
} else {
|
||||
if (priv->dot11_current_preamble_mode != PREAMBLE_LONG) {
|
||||
ShortPreamble = false;
|
||||
priv->dot11_current_preamble_mode = PREAMBLE_LONG;
|
||||
priv->rtllib->SetHwRegHandler(dev, HW_VAR_ACK_PREAMBLE,
|
||||
priv->rtllib->set_hw_reg_handler(dev, HW_VAR_ACK_PREAMBLE,
|
||||
(unsigned char *)&ShortPreamble);
|
||||
}
|
||||
}
|
||||
@ -256,13 +256,13 @@ static void _rtl92e_update_cap(struct net_device *dev, u16 cap)
|
||||
(!priv->rtllib->ht_info->current_rt2rt_long_slot_time)) {
|
||||
if (cur_slot_time != SHORT_SLOT_TIME) {
|
||||
slot_time_val = SHORT_SLOT_TIME;
|
||||
priv->rtllib->SetHwRegHandler(dev,
|
||||
priv->rtllib->set_hw_reg_handler(dev,
|
||||
HW_VAR_SLOT_TIME, &slot_time_val);
|
||||
}
|
||||
} else {
|
||||
if (cur_slot_time != NON_SHORT_SLOT_TIME) {
|
||||
slot_time_val = NON_SHORT_SLOT_TIME;
|
||||
priv->rtllib->SetHwRegHandler(dev,
|
||||
priv->rtllib->set_hw_reg_handler(dev,
|
||||
HW_VAR_SLOT_TIME, &slot_time_val);
|
||||
}
|
||||
}
|
||||
@ -301,7 +301,7 @@ static void _rtl92e_qos_activate(void *data)
|
||||
goto success;
|
||||
|
||||
for (i = 0; i < QOS_QUEUE_NUM; i++)
|
||||
priv->rtllib->SetHwRegHandler(dev, HW_VAR_AC_PARAM, (u8 *)(&i));
|
||||
priv->rtllib->set_hw_reg_handler(dev, HW_VAR_AC_PARAM, (u8 *)(&i));
|
||||
|
||||
success:
|
||||
mutex_unlock(&priv->mutex);
|
||||
@ -656,12 +656,12 @@ static void _rtl92e_init_priv_handler(struct net_device *dev)
|
||||
priv->rtllib->enter_sleep_state = rtl92e_enter_sleep;
|
||||
priv->rtllib->ps_is_queue_empty = _rtl92e_is_tx_queue_empty;
|
||||
|
||||
priv->rtllib->GetNmodeSupportBySecCfg = rtl92e_get_nmode_support_by_sec;
|
||||
priv->rtllib->GetHalfNmodeSupportByAPsHandler =
|
||||
priv->rtllib->get_nmode_support_by_sec_cfg = rtl92e_get_nmode_support_by_sec;
|
||||
priv->rtllib->get_half_nmode_support_by_aps_handler =
|
||||
rtl92e_is_halfn_supported_by_ap;
|
||||
|
||||
priv->rtllib->SetHwRegHandler = rtl92e_set_reg;
|
||||
priv->rtllib->AllowAllDestAddrHandler = rtl92e_set_monitor_mode;
|
||||
priv->rtllib->set_hw_reg_handler = rtl92e_set_reg;
|
||||
priv->rtllib->allow_all_dest_addr_handler = rtl92e_set_monitor_mode;
|
||||
priv->rtllib->init_gain_handler = rtl92e_init_gain;
|
||||
priv->rtllib->rtllib_ips_leave_wq = rtl92e_rtllib_ips_leave_wq;
|
||||
priv->rtllib->rtllib_ips_leave = rtl92e_rtllib_ips_leave;
|
||||
@ -705,7 +705,7 @@ static void _rtl92e_init_priv_variable(struct net_device *dev)
|
||||
priv->hw_rf_off_action = 0;
|
||||
priv->set_rf_pwr_state_in_progress = false;
|
||||
priv->rtllib->pwr_save_ctrl.bLeisurePs = true;
|
||||
priv->rtllib->LPSDelayCnt = 0;
|
||||
priv->rtllib->lps_delay_cnt = 0;
|
||||
priv->rtllib->sta_sleep = LPS_IS_WAKE;
|
||||
priv->rtllib->rf_power_state = rf_on;
|
||||
|
||||
@ -909,25 +909,24 @@ static void _rtl92e_if_check_reset(struct net_device *dev)
|
||||
netdev_info(dev, "%s(): TxResetType is %d, RxResetType is %d\n",
|
||||
__func__, TxResetType, RxResetType);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
static void _rtl92e_update_rxcounts(struct r8192_priv *priv, u32 *TotalRxBcnNum,
|
||||
u32 *TotalRxDataNum)
|
||||
{
|
||||
u16 SlotIndex;
|
||||
u16 slot_index;
|
||||
u8 i;
|
||||
|
||||
*TotalRxBcnNum = 0;
|
||||
*TotalRxDataNum = 0;
|
||||
|
||||
SlotIndex = (priv->rtllib->link_detect_info.SlotIndex++) %
|
||||
(priv->rtllib->link_detect_info.SlotNum);
|
||||
priv->rtllib->link_detect_info.RxBcnNum[SlotIndex] =
|
||||
priv->rtllib->link_detect_info.NumRecvBcnInPeriod;
|
||||
priv->rtllib->link_detect_info.RxDataNum[SlotIndex] =
|
||||
priv->rtllib->link_detect_info.NumRecvDataInPeriod;
|
||||
for (i = 0; i < priv->rtllib->link_detect_info.SlotNum; i++) {
|
||||
slot_index = (priv->rtllib->link_detect_info.slot_index++) %
|
||||
(priv->rtllib->link_detect_info.slot_num);
|
||||
priv->rtllib->link_detect_info.RxBcnNum[slot_index] =
|
||||
priv->rtllib->link_detect_info.num_recv_bcn_in_period;
|
||||
priv->rtllib->link_detect_info.RxDataNum[slot_index] =
|
||||
priv->rtllib->link_detect_info.num_recv_data_in_period;
|
||||
for (i = 0; i < priv->rtllib->link_detect_info.slot_num; i++) {
|
||||
*TotalRxBcnNum += priv->rtllib->link_detect_info.RxBcnNum[i];
|
||||
*TotalRxDataNum += priv->rtllib->link_detect_info.RxDataNum[i];
|
||||
}
|
||||
@ -943,7 +942,7 @@ static void _rtl92e_watchdog_wq_cb(void *data)
|
||||
unsigned long flags;
|
||||
struct rt_pwr_save_ctrl *psc = (struct rt_pwr_save_ctrl *)
|
||||
(&priv->rtllib->pwr_save_ctrl);
|
||||
bool bBusyTraffic = false;
|
||||
bool busy_traffic = false;
|
||||
bool bHigherBusyTraffic = false;
|
||||
bool bHigherBusyRxTraffic = false;
|
||||
bool bEnterPS = false;
|
||||
@ -965,15 +964,14 @@ static void _rtl92e_watchdog_wq_cb(void *data)
|
||||
MAC80211_NOLINK) &&
|
||||
(ieee->rf_power_state == rf_on) && !ieee->is_set_key &&
|
||||
(!ieee->proto_stoppping) && !ieee->wx_set_enc) {
|
||||
if (ieee->pwr_save_ctrl.ReturnPoint == IPS_CALLBACK_NONE) {
|
||||
if (ieee->pwr_save_ctrl.ReturnPoint == IPS_CALLBACK_NONE)
|
||||
rtl92e_ips_enter(dev);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((ieee->link_state == MAC80211_LINKED) && (ieee->iw_mode == IW_MODE_INFRA)) {
|
||||
if (ieee->link_detect_info.num_rx_ok_in_period > 100 ||
|
||||
ieee->link_detect_info.num_tx_ok_in_period > 100)
|
||||
bBusyTraffic = true;
|
||||
busy_traffic = true;
|
||||
|
||||
if (ieee->link_detect_info.num_rx_ok_in_period > 4000 ||
|
||||
ieee->link_detect_info.num_tx_ok_in_period > 4000) {
|
||||
@ -984,9 +982,9 @@ static void _rtl92e_watchdog_wq_cb(void *data)
|
||||
bHigherBusyRxTraffic = false;
|
||||
}
|
||||
|
||||
if (((ieee->link_detect_info.NumRxUnicastOkInPeriod +
|
||||
if (((ieee->link_detect_info.num_rx_unicast_ok_in_period +
|
||||
ieee->link_detect_info.num_tx_ok_in_period) > 8) ||
|
||||
(ieee->link_detect_info.NumRxUnicastOkInPeriod > 2))
|
||||
(ieee->link_detect_info.num_rx_unicast_ok_in_period > 2))
|
||||
bEnterPS = false;
|
||||
else
|
||||
bEnterPS = true;
|
||||
@ -1005,8 +1003,8 @@ static void _rtl92e_watchdog_wq_cb(void *data)
|
||||
|
||||
ieee->link_detect_info.num_rx_ok_in_period = 0;
|
||||
ieee->link_detect_info.num_tx_ok_in_period = 0;
|
||||
ieee->link_detect_info.NumRxUnicastOkInPeriod = 0;
|
||||
ieee->link_detect_info.bBusyTraffic = bBusyTraffic;
|
||||
ieee->link_detect_info.num_rx_unicast_ok_in_period = 0;
|
||||
ieee->link_detect_info.busy_traffic = busy_traffic;
|
||||
|
||||
ieee->link_detect_info.bHigherBusyTraffic = bHigherBusyTraffic;
|
||||
ieee->link_detect_info.bHigherBusyRxTraffic = bHigherBusyRxTraffic;
|
||||
@ -1032,7 +1030,7 @@ static void _rtl92e_watchdog_wq_cb(void *data)
|
||||
|
||||
ieee->link_state = RTLLIB_ASSOCIATING;
|
||||
|
||||
RemovePeerTS(priv->rtllib,
|
||||
remove_peer_ts(priv->rtllib,
|
||||
priv->rtllib->current_network.bssid);
|
||||
ieee->is_roaming = true;
|
||||
ieee->is_set_key = false;
|
||||
@ -1046,8 +1044,8 @@ static void _rtl92e_watchdog_wq_cb(void *data)
|
||||
|
||||
priv->check_roaming_cnt = 0;
|
||||
}
|
||||
ieee->link_detect_info.NumRecvBcnInPeriod = 0;
|
||||
ieee->link_detect_info.NumRecvDataInPeriod = 0;
|
||||
ieee->link_detect_info.num_recv_bcn_in_period = 0;
|
||||
ieee->link_detect_info.num_recv_data_in_period = 0;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&priv->tx_lock, flags);
|
||||
@ -1257,7 +1255,7 @@ static short _rtl92e_tx(struct net_device *dev, struct sk_buff *skb)
|
||||
int idx;
|
||||
u32 fwinfo_size = 0;
|
||||
|
||||
priv->rtllib->bAwakePktSent = true;
|
||||
priv->rtllib->awake_pkt_sent = true;
|
||||
|
||||
fwinfo_size = sizeof(struct tx_fwinfo_8190pci);
|
||||
|
||||
@ -1502,8 +1500,6 @@ static void _rtl92e_rx_normal(struct net_device *dev)
|
||||
};
|
||||
unsigned int count = priv->rxringcount;
|
||||
|
||||
stats.nic_type = NIC_8192E;
|
||||
|
||||
while (count--) {
|
||||
struct rx_desc *pdesc = &priv->rx_ring
|
||||
[priv->rx_idx];
|
||||
|
@ -354,7 +354,7 @@ static void _rtl92e_dm_check_rate_adaptive(struct net_device *dev)
|
||||
}
|
||||
}
|
||||
|
||||
if (priv->rtllib->GetHalfNmodeSupportByAPsHandler(dev))
|
||||
if (priv->rtllib->get_half_nmode_support_by_aps_handler(dev))
|
||||
target_ratr &= 0xf00fffff;
|
||||
|
||||
current_ratr = rtl92e_readl(dev, RATR0);
|
||||
@ -1185,7 +1185,7 @@ static void _rtl92e_dm_check_edca_turbo(struct net_device *dev)
|
||||
if (priv->bcurrent_turbo_EDCA) {
|
||||
u8 tmp = AC0_BE;
|
||||
|
||||
priv->rtllib->SetHwRegHandler(dev, HW_VAR_AC_PARAM,
|
||||
priv->rtllib->set_hw_reg_handler(dev, HW_VAR_AC_PARAM,
|
||||
(u8 *)(&tmp));
|
||||
priv->bcurrent_turbo_EDCA = false;
|
||||
}
|
||||
@ -1523,7 +1523,7 @@ static void _rtl92e_dm_init_fsync(struct net_device *dev)
|
||||
priv->rtllib->fsync_multiple_timeinterval = 3;
|
||||
priv->rtllib->fsync_firstdiff_ratethreshold = 100;
|
||||
priv->rtllib->fsync_seconddiff_ratethreshold = 200;
|
||||
priv->rtllib->fsync_state = Default_Fsync;
|
||||
priv->rtllib->fsync_state = DEFAULT_FSYNC;
|
||||
|
||||
timer_setup(&priv->fsync_timer, _rtl92e_dm_fsync_timer_callback, 0);
|
||||
}
|
||||
@ -1636,7 +1636,7 @@ static void _rtl92e_dm_start_hw_fsync(struct net_device *dev)
|
||||
struct r8192_priv *priv = rtllib_priv(dev);
|
||||
|
||||
rtl92e_writel(dev, rOFDM0_RxDetector2, 0x465c12cf);
|
||||
priv->rtllib->SetHwRegHandler(dev, HW_VAR_RF_TIMING,
|
||||
priv->rtllib->set_hw_reg_handler(dev, HW_VAR_RF_TIMING,
|
||||
(u8 *)(&rf_timing));
|
||||
rtl92e_writeb(dev, 0xc3b, 0x41);
|
||||
}
|
||||
@ -1647,7 +1647,7 @@ static void _rtl92e_dm_end_hw_fsync(struct net_device *dev)
|
||||
struct r8192_priv *priv = rtllib_priv(dev);
|
||||
|
||||
rtl92e_writel(dev, rOFDM0_RxDetector2, 0x465c52cd);
|
||||
priv->rtllib->SetHwRegHandler(dev, HW_VAR_RF_TIMING, (u8 *)
|
||||
priv->rtllib->set_hw_reg_handler(dev, HW_VAR_RF_TIMING, (u8 *)
|
||||
(&rf_timing));
|
||||
rtl92e_writeb(dev, 0xc3b, 0x49);
|
||||
}
|
||||
@ -1716,31 +1716,29 @@ static void _rtl92e_dm_check_fsync(struct net_device *dev)
|
||||
priv->rtllib->ht_info->iot_peer == HT_IOT_PEER_BROADCOM) {
|
||||
if (priv->rtllib->bfsync_enable == 0) {
|
||||
switch (priv->rtllib->fsync_state) {
|
||||
case Default_Fsync:
|
||||
case DEFAULT_FSYNC:
|
||||
_rtl92e_dm_start_hw_fsync(dev);
|
||||
priv->rtllib->fsync_state = HW_Fsync;
|
||||
priv->rtllib->fsync_state = HW_FSYNC;
|
||||
break;
|
||||
case SW_Fsync:
|
||||
case SW_FSYNC:
|
||||
_rtl92e_dm_end_sw_fsync(dev);
|
||||
_rtl92e_dm_start_hw_fsync(dev);
|
||||
priv->rtllib->fsync_state = HW_Fsync;
|
||||
priv->rtllib->fsync_state = HW_FSYNC;
|
||||
break;
|
||||
case HW_Fsync:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (priv->rtllib->fsync_state) {
|
||||
case Default_Fsync:
|
||||
case DEFAULT_FSYNC:
|
||||
_rtl92e_dm_start_sw_fsync(dev);
|
||||
priv->rtllib->fsync_state = SW_Fsync;
|
||||
priv->rtllib->fsync_state = SW_FSYNC;
|
||||
break;
|
||||
case HW_Fsync:
|
||||
case HW_FSYNC:
|
||||
_rtl92e_dm_end_hw_fsync(dev);
|
||||
_rtl92e_dm_start_sw_fsync(dev);
|
||||
priv->rtllib->fsync_state = SW_Fsync;
|
||||
priv->rtllib->fsync_state = SW_FSYNC;
|
||||
break;
|
||||
case SW_Fsync:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1752,15 +1750,14 @@ static void _rtl92e_dm_check_fsync(struct net_device *dev)
|
||||
}
|
||||
} else {
|
||||
switch (priv->rtllib->fsync_state) {
|
||||
case HW_Fsync:
|
||||
case HW_FSYNC:
|
||||
_rtl92e_dm_end_hw_fsync(dev);
|
||||
priv->rtllib->fsync_state = Default_Fsync;
|
||||
priv->rtllib->fsync_state = DEFAULT_FSYNC;
|
||||
break;
|
||||
case SW_Fsync:
|
||||
case SW_FSYNC:
|
||||
_rtl92e_dm_end_sw_fsync(dev);
|
||||
priv->rtllib->fsync_state = Default_Fsync;
|
||||
priv->rtllib->fsync_state = DEFAULT_FSYNC;
|
||||
break;
|
||||
case Default_Fsync:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -208,12 +208,12 @@ void rtl92e_leisure_ps_enter(struct net_device *dev)
|
||||
return;
|
||||
|
||||
if (psc->bLeisurePs) {
|
||||
if (psc->LpsIdleCount >= RT_CHECK_FOR_HANG_PERIOD) {
|
||||
if (psc->lps_idle_count >= RT_CHECK_FOR_HANG_PERIOD) {
|
||||
|
||||
if (priv->rtllib->ps == RTLLIB_PS_DISABLED)
|
||||
_rtl92e_ps_set_mode(dev, RTLLIB_PS_MBCAST | RTLLIB_PS_UNICAST);
|
||||
} else {
|
||||
psc->LpsIdleCount++;
|
||||
psc->lps_idle_count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -253,7 +253,7 @@ static int _rtl92e_wx_set_scan(struct net_device *dev,
|
||||
rt_state = priv->rtllib->rf_power_state;
|
||||
if (!priv->up)
|
||||
return -ENETDOWN;
|
||||
if (priv->rtllib->link_detect_info.bBusyTraffic)
|
||||
if (priv->rtllib->link_detect_info.busy_traffic)
|
||||
return -EAGAIN;
|
||||
|
||||
if (wrqu->data.flags & IW_SCAN_THIS_ESSID) {
|
||||
@ -269,7 +269,7 @@ static int _rtl92e_wx_set_scan(struct net_device *dev,
|
||||
|
||||
mutex_lock(&priv->wx_mutex);
|
||||
|
||||
priv->rtllib->FirstIe_InScan = true;
|
||||
priv->rtllib->first_ie_in_scan = true;
|
||||
|
||||
if (priv->rtllib->link_state != MAC80211_LINKED) {
|
||||
if (rt_state == rf_off) {
|
||||
|
@ -125,7 +125,7 @@ static struct sk_buff *rtllib_ADDBA(struct rtllib_device *ieee, u8 *dst,
|
||||
|
||||
static struct sk_buff *rtllib_DELBA(struct rtllib_device *ieee, u8 *dst,
|
||||
struct ba_record *ba,
|
||||
enum tr_select TxRxSelect, u16 reason_code)
|
||||
enum tr_select tx_rx_select, u16 reason_code)
|
||||
{
|
||||
union delba_param_set del_ba_param_set;
|
||||
struct sk_buff *skb = NULL;
|
||||
@ -139,7 +139,7 @@ static struct sk_buff *rtllib_DELBA(struct rtllib_device *ieee, u8 *dst,
|
||||
|
||||
memset(&del_ba_param_set, 0, 2);
|
||||
|
||||
del_ba_param_set.field.initiator = (TxRxSelect == TX_DIR) ? 1 : 0;
|
||||
del_ba_param_set.field.initiator = (tx_rx_select == TX_DIR) ? 1 : 0;
|
||||
del_ba_param_set.field.tid = ba->ba_param_set.field.tid;
|
||||
|
||||
skb = dev_alloc_skb(len + sizeof(struct ieee80211_hdr_3addr));
|
||||
@ -173,8 +173,8 @@ static struct sk_buff *rtllib_DELBA(struct rtllib_device *ieee, u8 *dst,
|
||||
return skb;
|
||||
}
|
||||
|
||||
static void rtllib_send_ADDBAReq(struct rtllib_device *ieee, u8 *dst,
|
||||
struct ba_record *ba)
|
||||
static void rtllib_send_add_ba_req(struct rtllib_device *ieee, u8 *dst,
|
||||
struct ba_record *ba)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
@ -186,8 +186,8 @@ static void rtllib_send_ADDBAReq(struct rtllib_device *ieee, u8 *dst,
|
||||
netdev_dbg(ieee->dev, "Failed to generate ADDBAReq packet.\n");
|
||||
}
|
||||
|
||||
static void rtllib_send_ADDBARsp(struct rtllib_device *ieee, u8 *dst,
|
||||
struct ba_record *ba, u16 status_code)
|
||||
static void rtllib_send_add_ba_rsp(struct rtllib_device *ieee, u8 *dst,
|
||||
struct ba_record *ba, u16 status_code)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
@ -199,19 +199,19 @@ static void rtllib_send_ADDBARsp(struct rtllib_device *ieee, u8 *dst,
|
||||
}
|
||||
|
||||
static void rtllib_send_DELBA(struct rtllib_device *ieee, u8 *dst,
|
||||
struct ba_record *ba, enum tr_select TxRxSelect,
|
||||
struct ba_record *ba, enum tr_select tx_rx_select,
|
||||
u16 reason_code)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
skb = rtllib_DELBA(ieee, dst, ba, TxRxSelect, reason_code);
|
||||
skb = rtllib_DELBA(ieee, dst, ba, tx_rx_select, reason_code);
|
||||
if (skb)
|
||||
softmac_mgmt_xmit(skb, ieee);
|
||||
else
|
||||
netdev_dbg(ieee->dev, "Failed to generate DELBA packet.\n");
|
||||
}
|
||||
|
||||
int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
int rtllib_rx_add_ba_req(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
{
|
||||
struct ieee80211_hdr_3addr *req = NULL;
|
||||
u16 rc = 0;
|
||||
@ -251,13 +251,13 @@ int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
"Failed to reply on ADDBA_REQ as some capability is not ready(%d, %d)\n",
|
||||
ieee->current_network.qos_data.active,
|
||||
ieee->ht_info->current_ht_support);
|
||||
goto OnADDBAReq_Fail;
|
||||
goto on_add_ba_req_fail;
|
||||
}
|
||||
if (!rtllib_get_ts(ieee, (struct ts_common_info **)&ts, dst,
|
||||
(u8)(ba_param_set->field.tid), RX_DIR, true)) {
|
||||
(u8)(ba_param_set->field.tid), RX_DIR, true)) {
|
||||
rc = ADDBA_STATUS_REFUSED;
|
||||
netdev_warn(ieee->dev, "%s(): can't get TS\n", __func__);
|
||||
goto OnADDBAReq_Fail;
|
||||
goto on_add_ba_req_fail;
|
||||
}
|
||||
ba = &ts->rx_admitted_ba_record;
|
||||
|
||||
@ -265,10 +265,10 @@ int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
rc = ADDBA_STATUS_INVALID_PARAM;
|
||||
netdev_warn(ieee->dev, "%s(): BA Policy is not correct\n",
|
||||
__func__);
|
||||
goto OnADDBAReq_Fail;
|
||||
goto on_add_ba_req_fail;
|
||||
}
|
||||
|
||||
rtllib_FlushRxTsPendingPkts(ieee, ts);
|
||||
rtllib_flush_rx_ts_pending_pkts(ieee, ts);
|
||||
|
||||
deactivate_ba_entry(ieee, ba);
|
||||
ba->dialog_token = *dialog_token;
|
||||
@ -276,18 +276,18 @@ int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
ba->ba_timeout_value = *ba_timeout_value;
|
||||
ba->ba_start_seq_ctrl = *ba_start_seq_ctrl;
|
||||
|
||||
if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev) ||
|
||||
(ieee->ht_info->iot_action & HT_IOT_ACT_ALLOW_PEER_AGG_ONE_PKT))
|
||||
if (ieee->get_half_nmode_support_by_aps_handler(ieee->dev) ||
|
||||
(ieee->ht_info->iot_action & HT_IOT_ACT_ALLOW_PEER_AGG_ONE_PKT))
|
||||
ba->ba_param_set.field.buffer_size = 1;
|
||||
else
|
||||
ba->ba_param_set.field.buffer_size = 32;
|
||||
|
||||
activate_ba_entry(ba, 0);
|
||||
rtllib_send_ADDBARsp(ieee, dst, ba, ADDBA_STATUS_SUCCESS);
|
||||
rtllib_send_add_ba_rsp(ieee, dst, ba, ADDBA_STATUS_SUCCESS);
|
||||
|
||||
return 0;
|
||||
|
||||
OnADDBAReq_Fail:
|
||||
on_add_ba_req_fail:
|
||||
{
|
||||
struct ba_record BA;
|
||||
|
||||
@ -295,12 +295,12 @@ OnADDBAReq_Fail:
|
||||
BA.ba_timeout_value = *ba_timeout_value;
|
||||
BA.dialog_token = *dialog_token;
|
||||
BA.ba_param_set.field.ba_policy = BA_POLICY_IMMEDIATE;
|
||||
rtllib_send_ADDBARsp(ieee, dst, &BA, rc);
|
||||
rtllib_send_add_ba_rsp(ieee, dst, &BA, rc);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int rtllib_rx_ADDBARsp(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
int rtllib_rx_add_ba_rsp(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
{
|
||||
struct ieee80211_hdr_3addr *rsp = NULL;
|
||||
struct ba_record *pending_ba, *admitted_ba;
|
||||
@ -334,14 +334,14 @@ int rtllib_rx_ADDBARsp(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
ieee->ht_info->current_ht_support,
|
||||
ieee->ht_info->current_ampdu_enable);
|
||||
reason_code = DELBA_REASON_UNKNOWN_BA;
|
||||
goto OnADDBARsp_Reject;
|
||||
goto on_add_ba_rsp_reject;
|
||||
}
|
||||
|
||||
if (!rtllib_get_ts(ieee, (struct ts_common_info **)&ts, dst,
|
||||
(u8)(ba_param_set->field.tid), TX_DIR, false)) {
|
||||
(u8)(ba_param_set->field.tid), TX_DIR, false)) {
|
||||
netdev_warn(ieee->dev, "%s(): can't get TS\n", __func__);
|
||||
reason_code = DELBA_REASON_UNKNOWN_BA;
|
||||
goto OnADDBARsp_Reject;
|
||||
goto on_add_ba_rsp_reject;
|
||||
}
|
||||
|
||||
ts->add_ba_req_in_progress = false;
|
||||
@ -358,7 +358,7 @@ int rtllib_rx_ADDBARsp(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
"%s(): ADDBA Rsp. BA invalid, DELBA!\n",
|
||||
__func__);
|
||||
reason_code = DELBA_REASON_UNKNOWN_BA;
|
||||
goto OnADDBARsp_Reject;
|
||||
goto on_add_ba_rsp_reject;
|
||||
} else {
|
||||
netdev_dbg(ieee->dev,
|
||||
"%s(): Recv ADDBA Rsp. BA is admitted! Status code:%X\n",
|
||||
@ -371,7 +371,7 @@ int rtllib_rx_ADDBARsp(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
ts->add_ba_req_delayed = true;
|
||||
deactivate_ba_entry(ieee, admitted_ba);
|
||||
reason_code = DELBA_REASON_END_BA;
|
||||
goto OnADDBARsp_Reject;
|
||||
goto on_add_ba_rsp_reject;
|
||||
}
|
||||
|
||||
admitted_ba->dialog_token = *dialog_token;
|
||||
@ -384,12 +384,12 @@ int rtllib_rx_ADDBARsp(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
ts->add_ba_req_delayed = true;
|
||||
ts->disable_add_ba = true;
|
||||
reason_code = DELBA_REASON_END_BA;
|
||||
goto OnADDBARsp_Reject;
|
||||
goto on_add_ba_rsp_reject;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
OnADDBARsp_Reject:
|
||||
on_add_ba_rsp_reject:
|
||||
{
|
||||
struct ba_record BA;
|
||||
|
||||
@ -433,7 +433,7 @@ int rtllib_rx_DELBA(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
struct rx_ts_record *ts;
|
||||
|
||||
if (!rtllib_get_ts(ieee, (struct ts_common_info **)&ts, dst,
|
||||
(u8)del_ba_param_set->field.tid, RX_DIR, false)) {
|
||||
(u8)del_ba_param_set->field.tid, RX_DIR, false)) {
|
||||
netdev_warn(ieee->dev,
|
||||
"%s(): can't get TS for RXTS. dst:%pM TID:%d\n",
|
||||
__func__, dst,
|
||||
@ -446,7 +446,7 @@ int rtllib_rx_DELBA(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
struct tx_ts_record *ts;
|
||||
|
||||
if (!rtllib_get_ts(ieee, (struct ts_common_info **)&ts, dst,
|
||||
(u8)del_ba_param_set->field.tid, TX_DIR, false)) {
|
||||
(u8)del_ba_param_set->field.tid, TX_DIR, false)) {
|
||||
netdev_warn(ieee->dev, "%s(): can't get TS for TXTS\n",
|
||||
__func__);
|
||||
return -1;
|
||||
@ -481,14 +481,14 @@ void rtllib_ts_init_add_ba(struct rtllib_device *ieee, struct tx_ts_record *ts,
|
||||
|
||||
activate_ba_entry(ba, BA_SETUP_TIMEOUT);
|
||||
|
||||
rtllib_send_ADDBAReq(ieee, ts->ts_common_info.addr, ba);
|
||||
rtllib_send_add_ba_req(ieee, ts->ts_common_info.addr, ba);
|
||||
}
|
||||
|
||||
void rtllib_ts_init_del_ba(struct rtllib_device *ieee,
|
||||
struct ts_common_info *ts_common_info,
|
||||
enum tr_select TxRxSelect)
|
||||
enum tr_select tx_rx_select)
|
||||
{
|
||||
if (TxRxSelect == TX_DIR) {
|
||||
if (tx_rx_select == TX_DIR) {
|
||||
struct tx_ts_record *ts =
|
||||
(struct tx_ts_record *)ts_common_info;
|
||||
|
||||
@ -497,14 +497,14 @@ void rtllib_ts_init_del_ba(struct rtllib_device *ieee,
|
||||
(ts->tx_admitted_ba_record.b_valid) ?
|
||||
(&ts->tx_admitted_ba_record) :
|
||||
(&ts->tx_pending_ba_record),
|
||||
TxRxSelect, DELBA_REASON_END_BA);
|
||||
} else if (TxRxSelect == RX_DIR) {
|
||||
tx_rx_select, DELBA_REASON_END_BA);
|
||||
} else if (tx_rx_select == RX_DIR) {
|
||||
struct rx_ts_record *ts =
|
||||
(struct rx_ts_record *)ts_common_info;
|
||||
if (rx_ts_delete_ba(ieee, ts))
|
||||
rtllib_send_DELBA(ieee, ts_common_info->addr,
|
||||
&ts->rx_admitted_ba_record,
|
||||
TxRxSelect, DELBA_REASON_END_BA);
|
||||
tx_rx_select, DELBA_REASON_END_BA);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,9 +98,9 @@ struct rt_hi_throughput {
|
||||
u8 cur_short_gi_40mhz;
|
||||
u8 cur_short_gi_20mhz;
|
||||
enum ht_spec_ver peer_ht_spec_ver;
|
||||
struct ht_capab_ele SelfHTCap;
|
||||
u8 PeerHTCapBuf[32];
|
||||
u8 PeerHTInfoBuf[32];
|
||||
struct ht_capab_ele self_ht_cap;
|
||||
u8 peer_ht_cap_buf[32];
|
||||
u8 peer_ht_info_buf[32];
|
||||
u8 ampdu_enable;
|
||||
u8 current_ampdu_enable;
|
||||
u8 ampdu_factor;
|
||||
|
@ -252,7 +252,7 @@ void ht_construct_capability_element(struct rtllib_device *ieee, u8 *pos_ht_cap,
|
||||
}
|
||||
|
||||
cap_ele->AdvCoding = 0;
|
||||
if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev))
|
||||
if (ieee->get_half_nmode_support_by_aps_handler(ieee->dev))
|
||||
cap_ele->ChlWidth = 0;
|
||||
else
|
||||
cap_ele->ChlWidth = 1;
|
||||
@ -301,7 +301,7 @@ void ht_construct_capability_element(struct rtllib_device *ieee, u8 *pos_ht_cap,
|
||||
if (ht->iot_action & HT_IOT_ACT_DISABLE_RX_40MHZ_SHORT_GI)
|
||||
cap_ele->ShortGI40Mhz = 0;
|
||||
|
||||
if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev)) {
|
||||
if (ieee->get_half_nmode_support_by_aps_handler(ieee->dev)) {
|
||||
cap_ele->ChlWidth = 0;
|
||||
cap_ele->MCS[1] = 0;
|
||||
}
|
||||
@ -408,7 +408,7 @@ static u8 ht_filter_mcs_rate(struct rtllib_device *ieee, u8 *pSupportMCS,
|
||||
|
||||
ht_pick_mcs_rate(ieee, pOperateMCS);
|
||||
|
||||
if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev))
|
||||
if (ieee->get_half_nmode_support_by_aps_handler(ieee->dev))
|
||||
pOperateMCS[1] = 0;
|
||||
|
||||
for (i = 2; i <= 15; i++)
|
||||
@ -437,16 +437,16 @@ void ht_on_assoc_rsp(struct rtllib_device *ieee)
|
||||
}
|
||||
netdev_dbg(ieee->dev, "%s(): HT_ENABLE\n", __func__);
|
||||
|
||||
if (!memcmp(ht_info->PeerHTCapBuf, EWC11NHTCap, sizeof(EWC11NHTCap)))
|
||||
pPeerHTCap = (struct ht_capab_ele *)(&ht_info->PeerHTCapBuf[4]);
|
||||
if (!memcmp(ht_info->peer_ht_cap_buf, EWC11NHTCap, sizeof(EWC11NHTCap)))
|
||||
pPeerHTCap = (struct ht_capab_ele *)(&ht_info->peer_ht_cap_buf[4]);
|
||||
else
|
||||
pPeerHTCap = (struct ht_capab_ele *)(ht_info->PeerHTCapBuf);
|
||||
pPeerHTCap = (struct ht_capab_ele *)(ht_info->peer_ht_cap_buf);
|
||||
|
||||
if (!memcmp(ht_info->PeerHTInfoBuf, EWC11NHTInfo, sizeof(EWC11NHTInfo)))
|
||||
if (!memcmp(ht_info->peer_ht_info_buf, EWC11NHTInfo, sizeof(EWC11NHTInfo)))
|
||||
pPeerHTInfo = (struct ht_info_ele *)
|
||||
(&ht_info->PeerHTInfoBuf[4]);
|
||||
(&ht_info->peer_ht_info_buf[4]);
|
||||
else
|
||||
pPeerHTInfo = (struct ht_info_ele *)(ht_info->PeerHTInfoBuf);
|
||||
pPeerHTInfo = (struct ht_info_ele *)(ht_info->peer_ht_info_buf);
|
||||
|
||||
#ifdef VERBOSE_DEBUG
|
||||
print_hex_dump_bytes("%s: ", __func__, DUMP_PREFIX_NONE,
|
||||
@ -480,9 +480,9 @@ void ht_on_assoc_rsp(struct rtllib_device *ieee)
|
||||
}
|
||||
|
||||
ht_info->current_mpdu_density = pPeerHTCap->MPDUDensity;
|
||||
if (ht_info->iot_action & HT_IOT_ACT_TX_USE_AMSDU_8K) {
|
||||
if (ht_info->iot_action & HT_IOT_ACT_TX_USE_AMSDU_8K)
|
||||
ht_info->current_ampdu_enable = false;
|
||||
}
|
||||
|
||||
ht_info->cur_rx_reorder_enable = 1;
|
||||
|
||||
if (pPeerHTCap->MCS[0] == 0)
|
||||
@ -516,12 +516,12 @@ void ht_initialize_ht_info(struct rtllib_device *ieee)
|
||||
ht_info->current_mpdu_density = 0;
|
||||
ht_info->CurrentAMPDUFactor = ht_info->ampdu_factor;
|
||||
|
||||
memset((void *)(&ht_info->SelfHTCap), 0,
|
||||
sizeof(ht_info->SelfHTCap));
|
||||
memset((void *)(&ht_info->PeerHTCapBuf), 0,
|
||||
sizeof(ht_info->PeerHTCapBuf));
|
||||
memset((void *)(&ht_info->PeerHTInfoBuf), 0,
|
||||
sizeof(ht_info->PeerHTInfoBuf));
|
||||
memset((void *)(&ht_info->self_ht_cap), 0,
|
||||
sizeof(ht_info->self_ht_cap));
|
||||
memset((void *)(&ht_info->peer_ht_cap_buf), 0,
|
||||
sizeof(ht_info->peer_ht_cap_buf));
|
||||
memset((void *)(&ht_info->peer_ht_info_buf), 0,
|
||||
sizeof(ht_info->peer_ht_info_buf));
|
||||
|
||||
ht_info->sw_bw_in_progress = false;
|
||||
|
||||
@ -572,15 +572,15 @@ void ht_reset_self_and_save_peer_setting(struct rtllib_device *ieee,
|
||||
ht_info->peer_ht_spec_ver = pNetwork->bssht.bd_ht_spec_ver;
|
||||
|
||||
if (pNetwork->bssht.bd_ht_cap_len > 0 &&
|
||||
pNetwork->bssht.bd_ht_cap_len <= sizeof(ht_info->PeerHTCapBuf))
|
||||
memcpy(ht_info->PeerHTCapBuf,
|
||||
pNetwork->bssht.bd_ht_cap_len <= sizeof(ht_info->peer_ht_cap_buf))
|
||||
memcpy(ht_info->peer_ht_cap_buf,
|
||||
pNetwork->bssht.bd_ht_cap_buf,
|
||||
pNetwork->bssht.bd_ht_cap_len);
|
||||
|
||||
if (pNetwork->bssht.bd_ht_info_len > 0 &&
|
||||
pNetwork->bssht.bd_ht_info_len <=
|
||||
sizeof(ht_info->PeerHTInfoBuf))
|
||||
memcpy(ht_info->PeerHTInfoBuf,
|
||||
sizeof(ht_info->peer_ht_info_buf))
|
||||
memcpy(ht_info->peer_ht_info_buf,
|
||||
pNetwork->bssht.bd_ht_info_buf,
|
||||
pNetwork->bssht.bd_ht_info_len);
|
||||
|
||||
@ -666,7 +666,7 @@ void ht_set_connect_bw_mode(struct rtllib_device *ieee,
|
||||
{
|
||||
struct rt_hi_throughput *ht_info = ieee->ht_info;
|
||||
|
||||
if (ieee->GetHalfNmodeSupportByAPsHandler(ieee->dev))
|
||||
if (ieee->get_half_nmode_support_by_aps_handler(ieee->dev))
|
||||
bandwidth = HT_CHANNEL_WIDTH_20;
|
||||
|
||||
if (ht_info->sw_bw_in_progress) {
|
||||
|
@ -13,7 +13,7 @@ struct qos_tsinfo {
|
||||
};
|
||||
|
||||
struct octet_string {
|
||||
u8 *Octet;
|
||||
u8 *octet;
|
||||
u16 Length;
|
||||
};
|
||||
|
||||
|
@ -171,14 +171,14 @@ void rtllib_ts_init(struct rtllib_device *ieee)
|
||||
|
||||
static struct ts_common_info *SearchAdmitTRStream(struct rtllib_device *ieee,
|
||||
u8 *addr, u8 TID,
|
||||
enum tr_select TxRxSelect)
|
||||
enum tr_select tx_rx_select)
|
||||
{
|
||||
u8 dir;
|
||||
bool search_dir[4] = {0};
|
||||
struct list_head *psearch_list;
|
||||
struct ts_common_info *pRet = NULL;
|
||||
|
||||
if (TxRxSelect == TX_DIR) {
|
||||
if (tx_rx_select == TX_DIR) {
|
||||
search_dir[DIR_UP] = true;
|
||||
search_dir[DIR_BI_DIR] = true;
|
||||
search_dir[DIR_DIRECT] = true;
|
||||
@ -188,7 +188,7 @@ static struct ts_common_info *SearchAdmitTRStream(struct rtllib_device *ieee,
|
||||
search_dir[DIR_DIRECT] = true;
|
||||
}
|
||||
|
||||
if (TxRxSelect == TX_DIR)
|
||||
if (tx_rx_select == TX_DIR)
|
||||
psearch_list = &ieee->Tx_TS_Admit_List;
|
||||
else
|
||||
psearch_list = &ieee->Rx_TS_Admit_List;
|
||||
@ -225,7 +225,7 @@ static void MakeTSEntry(struct ts_common_info *ts_common_info, u8 *addr,
|
||||
}
|
||||
|
||||
bool rtllib_get_ts(struct rtllib_device *ieee, struct ts_common_info **ppTS,
|
||||
u8 *addr, u8 TID, enum tr_select TxRxSelect, bool bAddNewTs)
|
||||
u8 *addr, u8 TID, enum tr_select tx_rx_select, bool bAddNewTs)
|
||||
{
|
||||
u8 UP = 0;
|
||||
struct qos_tsinfo tspec;
|
||||
@ -265,7 +265,7 @@ bool rtllib_get_ts(struct rtllib_device *ieee, struct ts_common_info **ppTS,
|
||||
}
|
||||
}
|
||||
|
||||
*ppTS = SearchAdmitTRStream(ieee, addr, UP, TxRxSelect);
|
||||
*ppTS = SearchAdmitTRStream(ieee, addr, UP, tx_rx_select);
|
||||
if (*ppTS)
|
||||
return true;
|
||||
|
||||
@ -274,21 +274,21 @@ bool rtllib_get_ts(struct rtllib_device *ieee, struct ts_common_info **ppTS,
|
||||
return false;
|
||||
}
|
||||
|
||||
pUnusedList = (TxRxSelect == TX_DIR) ?
|
||||
pUnusedList = (tx_rx_select == TX_DIR) ?
|
||||
(&ieee->Tx_TS_Unused_List) :
|
||||
(&ieee->Rx_TS_Unused_List);
|
||||
|
||||
pAddmitList = (TxRxSelect == TX_DIR) ?
|
||||
pAddmitList = (tx_rx_select == TX_DIR) ?
|
||||
(&ieee->Tx_TS_Admit_List) :
|
||||
(&ieee->Rx_TS_Admit_List);
|
||||
|
||||
Dir = ((TxRxSelect == TX_DIR) ? DIR_UP : DIR_DOWN);
|
||||
Dir = ((tx_rx_select == TX_DIR) ? DIR_UP : DIR_DOWN);
|
||||
|
||||
if (!list_empty(pUnusedList)) {
|
||||
(*ppTS) = list_entry(pUnusedList->next,
|
||||
struct ts_common_info, list);
|
||||
list_del_init(&(*ppTS)->list);
|
||||
if (TxRxSelect == TX_DIR) {
|
||||
if (tx_rx_select == TX_DIR) {
|
||||
struct tx_ts_record *tmp =
|
||||
container_of(*ppTS,
|
||||
struct tx_ts_record,
|
||||
@ -321,11 +321,11 @@ bool rtllib_get_ts(struct rtllib_device *ieee, struct ts_common_info **ppTS,
|
||||
}
|
||||
|
||||
static void RemoveTsEntry(struct rtllib_device *ieee,
|
||||
struct ts_common_info *pTs, enum tr_select TxRxSelect)
|
||||
struct ts_common_info *pTs, enum tr_select tx_rx_select)
|
||||
{
|
||||
rtllib_ts_init_del_ba(ieee, pTs, TxRxSelect);
|
||||
rtllib_ts_init_del_ba(ieee, pTs, tx_rx_select);
|
||||
|
||||
if (TxRxSelect == RX_DIR) {
|
||||
if (tx_rx_select == RX_DIR) {
|
||||
struct rx_reorder_entry *pRxReorderEntry;
|
||||
struct rx_ts_record *ts = (struct rx_ts_record *)pTs;
|
||||
|
||||
@ -360,7 +360,7 @@ static void RemoveTsEntry(struct rtllib_device *ieee,
|
||||
}
|
||||
}
|
||||
|
||||
void RemovePeerTS(struct rtllib_device *ieee, u8 *addr)
|
||||
void remove_peer_ts(struct rtllib_device *ieee, u8 *addr)
|
||||
{
|
||||
struct ts_common_info *ts, *pTmpTS;
|
||||
|
||||
@ -400,9 +400,9 @@ void RemovePeerTS(struct rtllib_device *ieee, u8 *addr)
|
||||
}
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(RemovePeerTS);
|
||||
EXPORT_SYMBOL(remove_peer_ts);
|
||||
|
||||
void RemoveAllTS(struct rtllib_device *ieee)
|
||||
void remove_all_ts(struct rtllib_device *ieee)
|
||||
{
|
||||
struct ts_common_info *ts, *pTmpTS;
|
||||
|
||||
|
@ -123,7 +123,7 @@ struct cb_desc {
|
||||
u8 bPacketBW:1;
|
||||
u8 bRTSUseShortPreamble:1;
|
||||
u8 bRTSUseShortGI:1;
|
||||
u8 bMulticast:1;
|
||||
u8 multicast:1;
|
||||
u8 bBroadcast:1;
|
||||
u8 drv_agg_enable:1;
|
||||
u8 reserved2:1;
|
||||
@ -474,47 +474,30 @@ struct rtllib_rx_stats {
|
||||
u8 control;
|
||||
u8 mask;
|
||||
u16 len;
|
||||
u64 tsf;
|
||||
u32 beacon_time;
|
||||
u8 nic_type;
|
||||
u16 Length;
|
||||
u8 SignalQuality;
|
||||
s32 RecvSignalPower;
|
||||
s8 RxPower;
|
||||
u8 SignalStrength;
|
||||
u16 bHwError:1;
|
||||
u16 bCRC:1;
|
||||
u16 bICV:1;
|
||||
u16 bShortPreamble:1;
|
||||
u16 Antenna:1;
|
||||
u16 Decrypted:1;
|
||||
u16 Wakeup:1;
|
||||
u16 Reserved0:1;
|
||||
u8 AGC;
|
||||
u32 TimeStampLow;
|
||||
u32 TimeStampHigh;
|
||||
bool bShift;
|
||||
bool bIsQosData;
|
||||
|
||||
u8 RxDrvInfoSize;
|
||||
u8 RxBufShift;
|
||||
bool bIsAMPDU;
|
||||
bool bFirstMPDU;
|
||||
bool bContainHTC;
|
||||
bool RxIs40MHzPacket;
|
||||
u32 RxPWDBAll;
|
||||
u8 RxMIMOSignalStrength[4];
|
||||
s8 RxMIMOSignalQuality[2];
|
||||
bool bPacketMatchBSSID;
|
||||
bool bIsCCK;
|
||||
bool bPacketToSelf;
|
||||
u16 packetlength;
|
||||
u16 fraglength;
|
||||
u16 fragoffset;
|
||||
u16 ntotalfrag;
|
||||
bool bPacketBeacon;
|
||||
bool bToSelfBA;
|
||||
u16 Seq_Num;
|
||||
};
|
||||
|
||||
/* IEEE 802.11 requires that STA supports concurrent reception of at least
|
||||
@ -928,14 +911,14 @@ struct rtllib_network {
|
||||
struct rtllib_qos_data qos_data;
|
||||
|
||||
bool bWithAironetIE;
|
||||
bool bCkipSupported;
|
||||
bool bCcxRmEnable;
|
||||
bool ckip_supported;
|
||||
bool ccx_rm_enable;
|
||||
u8 CcxRmState[2];
|
||||
bool bMBssidValid;
|
||||
u8 MBssidMask;
|
||||
u8 MBssid[ETH_ALEN];
|
||||
bool bWithCcxVerNum;
|
||||
u8 BssCcxVerNumber;
|
||||
u8 bss_ccx_ver_number;
|
||||
/* These are network statistics */
|
||||
struct rtllib_rx_stats stats;
|
||||
u16 capability;
|
||||
@ -965,7 +948,7 @@ struct rtllib_network {
|
||||
|
||||
u8 wmm_info;
|
||||
struct rtllib_wmm_ac_param wmm_param[4];
|
||||
u8 Turbo_Enable;
|
||||
u8 turbo_enable;
|
||||
u16 CountryIeLen;
|
||||
u8 CountryIeBuf[MAX_IE_LEN];
|
||||
struct bss_ht bssht;
|
||||
@ -1048,9 +1031,9 @@ struct rx_reorder_entry {
|
||||
};
|
||||
|
||||
enum fsync_state {
|
||||
Default_Fsync,
|
||||
HW_Fsync,
|
||||
SW_Fsync
|
||||
DEFAULT_FSYNC,
|
||||
HW_FSYNC,
|
||||
SW_FSYNC
|
||||
};
|
||||
|
||||
enum ips_callback_function {
|
||||
@ -1071,8 +1054,8 @@ struct rt_pwr_save_ctrl {
|
||||
enum ips_callback_function ReturnPoint;
|
||||
|
||||
bool bLeisurePs;
|
||||
u8 LpsIdleCount;
|
||||
u8 LPSAwakeIntvl;
|
||||
u8 lps_idle_count;
|
||||
u8 lps_awake_intvl;
|
||||
|
||||
u32 CurPsLevel;
|
||||
};
|
||||
@ -1110,18 +1093,18 @@ enum scan_op_backup_opt {
|
||||
|
||||
#define RT_MAX_LD_SLOT_NUM 10
|
||||
struct rt_link_detect {
|
||||
u32 NumRecvBcnInPeriod;
|
||||
u32 NumRecvDataInPeriod;
|
||||
u32 num_recv_bcn_in_period;
|
||||
u32 num_recv_data_in_period;
|
||||
|
||||
u32 RxBcnNum[RT_MAX_LD_SLOT_NUM];
|
||||
u32 RxDataNum[RT_MAX_LD_SLOT_NUM];
|
||||
u16 SlotNum;
|
||||
u16 SlotIndex;
|
||||
u16 slot_num;
|
||||
u16 slot_index;
|
||||
|
||||
u32 num_tx_ok_in_period;
|
||||
u32 num_rx_ok_in_period;
|
||||
u32 NumRxUnicastOkInPeriod;
|
||||
bool bBusyTraffic;
|
||||
u32 num_rx_unicast_ok_in_period;
|
||||
bool busy_traffic;
|
||||
bool bHigherBusyTraffic;
|
||||
bool bHigherBusyRxTraffic;
|
||||
};
|
||||
@ -1161,7 +1144,7 @@ struct rate_adaptive {
|
||||
|
||||
#define NUM_PMKID_CACHE 16
|
||||
struct rt_pmkid_list {
|
||||
u8 Bssid[ETH_ALEN];
|
||||
u8 bssid[ETH_ALEN];
|
||||
u8 PMKID[16];
|
||||
u8 SsidBuf[33];
|
||||
u8 used;
|
||||
@ -1193,7 +1176,7 @@ struct rtllib_device {
|
||||
u8 *assocreq_ies, *assocresp_ies;
|
||||
size_t assocreq_ies_len, assocresp_ies_len;
|
||||
|
||||
bool bForcedBgMode;
|
||||
bool forced_bg_mode;
|
||||
|
||||
u8 hwsec_active;
|
||||
bool is_roaming;
|
||||
@ -1201,7 +1184,7 @@ struct rtllib_device {
|
||||
bool cannot_notify;
|
||||
bool bSupportRemoteWakeUp;
|
||||
bool actscanning;
|
||||
bool FirstIe_InScan;
|
||||
bool first_ie_in_scan;
|
||||
bool be_scan_inprogress;
|
||||
bool beinretry;
|
||||
enum rt_rf_power_state rf_power_state;
|
||||
@ -1264,7 +1247,7 @@ struct rtllib_device {
|
||||
int ieee802_1x; /* is IEEE 802.1X used */
|
||||
|
||||
/* WPA data */
|
||||
bool bHalfWirelessN24GMode;
|
||||
bool half_wireless_n24g_mode;
|
||||
int wpa_enabled;
|
||||
int drop_unencrypted;
|
||||
int tkip_countermeasures;
|
||||
@ -1281,7 +1264,7 @@ struct rtllib_device {
|
||||
|
||||
struct sw_cam_table swcamtable[TOTAL_CAM_ENTRY];
|
||||
|
||||
struct rt_pmkid_list PMKIDList[NUM_PMKID_CACHE];
|
||||
struct rt_pmkid_list pmkid_list[NUM_PMKID_CACHE];
|
||||
|
||||
/* Fragmentation structures */
|
||||
struct rtllib_frag_entry frag_cache[17][RTLLIB_FRAG_CACHE_LEN];
|
||||
@ -1374,14 +1357,14 @@ struct rtllib_device {
|
||||
|
||||
/* for PS mode */
|
||||
unsigned long last_rx_ps_time;
|
||||
bool bAwakePktSent;
|
||||
u8 LPSDelayCnt;
|
||||
bool awake_pkt_sent;
|
||||
u8 lps_delay_cnt;
|
||||
|
||||
/* used if IEEE_SOFTMAC_SINGLE_QUEUE is set */
|
||||
struct sk_buff *mgmt_queue_ring[MGMT_QUEUE_NUM];
|
||||
int mgmt_queue_head;
|
||||
int mgmt_queue_tail;
|
||||
u8 AsocRetryCount;
|
||||
u8 asoc_retry_count;
|
||||
struct sk_buff_head skb_waitq[MAX_QUEUE_SIZE];
|
||||
|
||||
bool bdynamic_txpower_enable;
|
||||
@ -1484,17 +1467,18 @@ struct rtllib_device {
|
||||
void (*set_bw_mode_handler)(struct net_device *dev,
|
||||
enum ht_channel_width bandwidth,
|
||||
enum ht_extchnl_offset Offset);
|
||||
bool (*GetNmodeSupportBySecCfg)(struct net_device *dev);
|
||||
bool (*get_nmode_support_by_sec_cfg)(struct net_device *dev);
|
||||
void (*set_wireless_mode)(struct net_device *dev, u8 wireless_mode);
|
||||
bool (*GetHalfNmodeSupportByAPsHandler)(struct net_device *dev);
|
||||
bool (*get_half_nmode_support_by_aps_handler)(struct net_device *dev);
|
||||
u8 (*rtllib_ap_sec_type)(struct rtllib_device *ieee);
|
||||
void (*init_gain_handler)(struct net_device *dev, u8 Operation);
|
||||
void (*ScanOperationBackupHandler)(struct net_device *dev,
|
||||
u8 Operation);
|
||||
void (*SetHwRegHandler)(struct net_device *dev, u8 variable, u8 *val);
|
||||
void (*set_hw_reg_handler)(struct net_device *dev, u8 variable, u8 *val);
|
||||
|
||||
void (*AllowAllDestAddrHandler)(struct net_device *dev,
|
||||
bool bAllowAllDA, bool WriteIntoReg);
|
||||
void (*allow_all_dest_addr_handler)(struct net_device *dev,
|
||||
bool bAllowAllDA,
|
||||
bool WriteIntoReg);
|
||||
|
||||
void (*rtllib_ips_leave_wq)(struct net_device *dev);
|
||||
void (*rtllib_ips_leave)(struct net_device *dev);
|
||||
@ -1662,7 +1646,7 @@ int rtllib_rx_frame_softmac(struct rtllib_device *ieee, struct sk_buff *skb,
|
||||
void rtllib_softmac_new_net(struct rtllib_device *ieee,
|
||||
struct rtllib_network *net);
|
||||
|
||||
void SendDisassociation(struct rtllib_device *ieee, bool deauth, u16 asRsn);
|
||||
void send_disassociation(struct rtllib_device *ieee, bool deauth, u16 rsn);
|
||||
void rtllib_softmac_xmit(struct rtllib_txb *txb, struct rtllib_device *ieee);
|
||||
|
||||
int rtllib_softmac_init(struct rtllib_device *ieee);
|
||||
@ -1771,25 +1755,25 @@ u8 ht_c_check(struct rtllib_device *ieee, u8 *pFrame);
|
||||
void ht_reset_iot_setting(struct rt_hi_throughput *ht_info);
|
||||
bool is_ht_half_nmode_aps(struct rtllib_device *ieee);
|
||||
u16 tx_count_to_data_rate(struct rtllib_device *ieee, u8 nDataRate);
|
||||
int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct sk_buff *skb);
|
||||
int rtllib_rx_ADDBARsp(struct rtllib_device *ieee, struct sk_buff *skb);
|
||||
int rtllib_rx_add_ba_req(struct rtllib_device *ieee, struct sk_buff *skb);
|
||||
int rtllib_rx_add_ba_rsp(struct rtllib_device *ieee, struct sk_buff *skb);
|
||||
int rtllib_rx_DELBA(struct rtllib_device *ieee, struct sk_buff *skb);
|
||||
void rtllib_ts_init_add_ba(struct rtllib_device *ieee, struct tx_ts_record *ts,
|
||||
u8 policy, u8 overwrite_pending);
|
||||
void rtllib_ts_init_del_ba(struct rtllib_device *ieee,
|
||||
struct ts_common_info *ts_common_info,
|
||||
enum tr_select TxRxSelect);
|
||||
enum tr_select tx_rx_select);
|
||||
void rtllib_ba_setup_timeout(struct timer_list *t);
|
||||
void rtllib_tx_ba_inact_timeout(struct timer_list *t);
|
||||
void rtllib_rx_ba_inact_timeout(struct timer_list *t);
|
||||
void rtllib_reset_ba_entry(struct ba_record *ba);
|
||||
bool rtllib_get_ts(struct rtllib_device *ieee, struct ts_common_info **ppTS, u8 *addr,
|
||||
u8 TID, enum tr_select TxRxSelect, bool bAddNewTs);
|
||||
u8 TID, enum tr_select tx_rx_select, bool bAddNewTs);
|
||||
void rtllib_ts_init(struct rtllib_device *ieee);
|
||||
void TsStartAddBaProcess(struct rtllib_device *ieee,
|
||||
struct tx_ts_record *pTxTS);
|
||||
void RemovePeerTS(struct rtllib_device *ieee, u8 *addr);
|
||||
void RemoveAllTS(struct rtllib_device *ieee);
|
||||
void remove_peer_ts(struct rtllib_device *ieee, u8 *addr);
|
||||
void remove_all_ts(struct rtllib_device *ieee);
|
||||
|
||||
static inline const char *escape_essid(const char *essid, u8 essid_len)
|
||||
{
|
||||
@ -1805,13 +1789,13 @@ static inline const char *escape_essid(const char *essid, u8 essid_len)
|
||||
}
|
||||
|
||||
/* fun with the built-in rtllib stack... */
|
||||
bool rtllib_MgntDisconnect(struct rtllib_device *rtllib, u8 asRsn);
|
||||
bool rtllib_mgnt_disconnect(struct rtllib_device *rtllib, u8 rsn);
|
||||
|
||||
/* For the function is more related to hardware setting, it's better to use the
|
||||
* ieee handler to refer to it.
|
||||
*/
|
||||
void rtllib_FlushRxTsPendingPkts(struct rtllib_device *ieee,
|
||||
struct rx_ts_record *ts);
|
||||
void rtllib_flush_rx_ts_pending_pkts(struct rtllib_device *ieee,
|
||||
struct rx_ts_record *ts);
|
||||
int rtllib_parse_info_param(struct rtllib_device *ieee,
|
||||
struct rtllib_info_element *info_element,
|
||||
u16 length,
|
||||
@ -1821,6 +1805,6 @@ int rtllib_parse_info_param(struct rtllib_device *ieee,
|
||||
void rtllib_indicate_packets(struct rtllib_device *ieee,
|
||||
struct rtllib_rxb **prxbIndicateArray, u8 index);
|
||||
#define RT_ASOC_RETRY_LIMIT 5
|
||||
u8 MgntQuery_TxRateExcludeCCKRates(struct rtllib_device *ieee);
|
||||
u8 mgnt_query_tx_rate_exclude_cck_rates(struct rtllib_device *ieee);
|
||||
|
||||
#endif /* RTLLIB_H */
|
||||
|
@ -487,8 +487,8 @@ void rtllib_indicate_packets(struct rtllib_device *ieee,
|
||||
}
|
||||
}
|
||||
|
||||
void rtllib_FlushRxTsPendingPkts(struct rtllib_device *ieee,
|
||||
struct rx_ts_record *ts)
|
||||
void rtllib_flush_rx_ts_pending_pkts(struct rtllib_device *ieee,
|
||||
struct rx_ts_record *ts)
|
||||
{
|
||||
struct rx_reorder_entry *pRxReorderEntry;
|
||||
u8 RfdCnt = 0;
|
||||
@ -865,9 +865,6 @@ static size_t rtllib_rx_get_hdrlen(struct rtllib_device *ieee,
|
||||
rx_stats->bContainHTC = true;
|
||||
}
|
||||
|
||||
if (RTLLIB_QOS_HAS_SEQ(fc))
|
||||
rx_stats->bIsQosData = true;
|
||||
|
||||
return hdrlen;
|
||||
}
|
||||
|
||||
@ -943,10 +940,9 @@ static void rtllib_rx_extract_addr(struct rtllib_device *ieee,
|
||||
static int rtllib_rx_data_filter(struct rtllib_device *ieee, struct ieee80211_hdr *hdr,
|
||||
u8 *dst, u8 *src, u8 *bssid, u8 *addr2)
|
||||
{
|
||||
u8 type, stype;
|
||||
u16 fc = le16_to_cpu(hdr->frame_control);
|
||||
type = WLAN_FC_GET_TYPE(fc);
|
||||
stype = WLAN_FC_GET_STYPE(fc);
|
||||
u8 type = WLAN_FC_GET_TYPE(fc);
|
||||
u8 stype = WLAN_FC_GET_STYPE(fc);
|
||||
|
||||
/* Filter frames from different BSS */
|
||||
if (ieee80211_has_a4(hdr->frame_control) &&
|
||||
@ -1149,9 +1145,9 @@ static void rtllib_rx_check_leave_lps(struct rtllib_device *ieee, u8 unicast,
|
||||
{
|
||||
if (unicast) {
|
||||
if (ieee->link_state == MAC80211_LINKED) {
|
||||
if (((ieee->link_detect_info.NumRxUnicastOkInPeriod +
|
||||
if (((ieee->link_detect_info.num_rx_unicast_ok_in_period +
|
||||
ieee->link_detect_info.num_tx_ok_in_period) > 8) ||
|
||||
(ieee->link_detect_info.NumRxUnicastOkInPeriod > 2)) {
|
||||
(ieee->link_detect_info.num_rx_unicast_ok_in_period > 2)) {
|
||||
ieee->leisure_ps_leave(ieee->dev);
|
||||
}
|
||||
}
|
||||
@ -1284,7 +1280,7 @@ static int rtllib_rx_InfraAdhoc(struct rtllib_device *ieee, struct sk_buff *skb,
|
||||
/* Filter WAPI DATA Frame */
|
||||
|
||||
/* Update statstics for AP roaming */
|
||||
ieee->link_detect_info.NumRecvDataInPeriod++;
|
||||
ieee->link_detect_info.num_recv_data_in_period++;
|
||||
ieee->link_detect_info.num_rx_ok_in_period++;
|
||||
|
||||
/* Data frame - extract src/dst addresses */
|
||||
@ -1363,7 +1359,7 @@ static int rtllib_rx_InfraAdhoc(struct rtllib_device *ieee, struct sk_buff *skb,
|
||||
else
|
||||
nr_subframes = 1;
|
||||
if (unicast)
|
||||
ieee->link_detect_info.NumRxUnicastOkInPeriod += nr_subframes;
|
||||
ieee->link_detect_info.num_rx_unicast_ok_in_period += nr_subframes;
|
||||
rtllib_rx_check_leave_lps(ieee, unicast, nr_subframes);
|
||||
|
||||
/* Indicate packets to upper layer or Rx Reorder */
|
||||
@ -1689,7 +1685,7 @@ static void rtllib_parse_mife_generic(struct rtllib_device *ieee,
|
||||
info_element->data[2] == 0x4c &&
|
||||
info_element->data[3] == 0x01 &&
|
||||
info_element->data[4] == 0x02)
|
||||
network->Turbo_Enable = 1;
|
||||
network->turbo_enable = 1;
|
||||
|
||||
if (*tmp_htcap_len == 0) {
|
||||
if (info_element->len >= 4 &&
|
||||
@ -1819,9 +1815,9 @@ static void rtllib_parse_mife_generic(struct rtllib_device *ieee,
|
||||
if (info_element->len == 6) {
|
||||
memcpy(network->CcxRmState, &info_element->data[4], 2);
|
||||
if (network->CcxRmState[0] != 0)
|
||||
network->bCcxRmEnable = true;
|
||||
network->ccx_rm_enable = true;
|
||||
else
|
||||
network->bCcxRmEnable = false;
|
||||
network->ccx_rm_enable = false;
|
||||
network->MBssidMask = network->CcxRmState[1] & 0x07;
|
||||
if (network->MBssidMask != 0) {
|
||||
network->bMBssidValid = true;
|
||||
@ -1834,7 +1830,7 @@ static void rtllib_parse_mife_generic(struct rtllib_device *ieee,
|
||||
network->bMBssidValid = false;
|
||||
}
|
||||
} else {
|
||||
network->bCcxRmEnable = false;
|
||||
network->ccx_rm_enable = false;
|
||||
}
|
||||
}
|
||||
if (info_element->len > 4 &&
|
||||
@ -1844,10 +1840,10 @@ static void rtllib_parse_mife_generic(struct rtllib_device *ieee,
|
||||
info_element->data[3] == 0x03) {
|
||||
if (info_element->len == 5) {
|
||||
network->bWithCcxVerNum = true;
|
||||
network->BssCcxVerNumber = info_element->data[4];
|
||||
network->bss_ccx_ver_number = info_element->data[4];
|
||||
} else {
|
||||
network->bWithCcxVerNum = false;
|
||||
network->BssCcxVerNumber = 0;
|
||||
network->bss_ccx_ver_number = 0;
|
||||
}
|
||||
}
|
||||
if (info_element->len > 4 &&
|
||||
@ -2100,12 +2096,12 @@ int rtllib_parse_info_param(struct rtllib_device *ieee,
|
||||
& SUPPORT_CKIP_MIC) ||
|
||||
(info_element->data[IE_CISCO_FLAG_POSITION]
|
||||
& SUPPORT_CKIP_PK))
|
||||
network->bCkipSupported = true;
|
||||
network->ckip_supported = true;
|
||||
else
|
||||
network->bCkipSupported = false;
|
||||
network->ckip_supported = false;
|
||||
} else {
|
||||
network->bWithAironetIE = false;
|
||||
network->bCkipSupported = false;
|
||||
network->ckip_supported = false;
|
||||
}
|
||||
break;
|
||||
case MFIE_TYPE_QOS_PARAMETER:
|
||||
@ -2184,7 +2180,7 @@ static inline int rtllib_network_init(
|
||||
network->realtek_cap_exit = false;
|
||||
network->marvell_cap_exist = false;
|
||||
network->airgo_cap_exist = false;
|
||||
network->Turbo_Enable = 0;
|
||||
network->turbo_enable = 0;
|
||||
network->SignalStrength = stats->SignalStrength;
|
||||
network->RSSI = stats->SignalStrength;
|
||||
network->CountryIeLen = 0;
|
||||
@ -2344,20 +2340,20 @@ static inline void update_network(struct rtllib_device *ieee,
|
||||
|
||||
dst->SignalStrength = src->SignalStrength;
|
||||
dst->RSSI = src->RSSI;
|
||||
dst->Turbo_Enable = src->Turbo_Enable;
|
||||
dst->turbo_enable = src->turbo_enable;
|
||||
|
||||
dst->CountryIeLen = src->CountryIeLen;
|
||||
memcpy(dst->CountryIeBuf, src->CountryIeBuf, src->CountryIeLen);
|
||||
|
||||
dst->bWithAironetIE = src->bWithAironetIE;
|
||||
dst->bCkipSupported = src->bCkipSupported;
|
||||
dst->ckip_supported = src->ckip_supported;
|
||||
memcpy(dst->CcxRmState, src->CcxRmState, 2);
|
||||
dst->bCcxRmEnable = src->bCcxRmEnable;
|
||||
dst->ccx_rm_enable = src->ccx_rm_enable;
|
||||
dst->MBssidMask = src->MBssidMask;
|
||||
dst->bMBssidValid = src->bMBssidValid;
|
||||
memcpy(dst->MBssid, src->MBssid, 6);
|
||||
dst->bWithCcxVerNum = src->bWithCcxVerNum;
|
||||
dst->BssCcxVerNumber = src->BssCcxVerNumber;
|
||||
dst->bss_ccx_ver_number = src->bss_ccx_ver_number;
|
||||
}
|
||||
|
||||
static int IsPassiveChannel(struct rtllib_device *rtllib, u8 channel)
|
||||
@ -2470,7 +2466,7 @@ static inline void rtllib_process_probe_response(
|
||||
}
|
||||
if (ieee80211_is_beacon(frame_ctl)) {
|
||||
if (ieee->link_state >= MAC80211_LINKED)
|
||||
ieee->link_detect_info.NumRecvBcnInPeriod++;
|
||||
ieee->link_detect_info.num_recv_bcn_in_period++;
|
||||
}
|
||||
}
|
||||
list_for_each_entry(target, &ieee->network_list, list) {
|
||||
|
@ -138,7 +138,7 @@ static void init_mgmt_queue(struct rtllib_device *ieee)
|
||||
ieee->mgmt_queue_head = 0;
|
||||
}
|
||||
|
||||
u8 MgntQuery_TxRateExcludeCCKRates(struct rtllib_device *ieee)
|
||||
u8 mgnt_query_tx_rate_exclude_cck_rates(struct rtllib_device *ieee)
|
||||
{
|
||||
u16 i;
|
||||
u8 query_rate = 0;
|
||||
@ -163,7 +163,7 @@ u8 MgntQuery_TxRateExcludeCCKRates(struct rtllib_device *ieee)
|
||||
return query_rate;
|
||||
}
|
||||
|
||||
static u8 MgntQuery_MgntFrameTxRate(struct rtllib_device *ieee)
|
||||
static u8 mgnt_query_mgnt_frame_tx_rate(struct rtllib_device *ieee)
|
||||
{
|
||||
struct rt_hi_throughput *ht_info = ieee->ht_info;
|
||||
u8 rate;
|
||||
@ -201,7 +201,7 @@ inline void softmac_mgmt_xmit(struct sk_buff *skb, struct rtllib_device *ieee)
|
||||
if (ieee->disable_mgnt_queue)
|
||||
tcb_desc->queue_index = HIGH_QUEUE;
|
||||
|
||||
tcb_desc->data_rate = MgntQuery_MgntFrameTxRate(ieee);
|
||||
tcb_desc->data_rate = mgnt_query_mgnt_frame_tx_rate(ieee);
|
||||
tcb_desc->ratr_index = 7;
|
||||
tcb_desc->tx_dis_rate_fallback = 1;
|
||||
tcb_desc->tx_use_drv_assinged_rate = 1;
|
||||
@ -277,7 +277,7 @@ softmac_ps_mgmt_xmit(struct sk_buff *skb,
|
||||
if (ieee->disable_mgnt_queue)
|
||||
tcb_desc->queue_index = HIGH_QUEUE;
|
||||
|
||||
tcb_desc->data_rate = MgntQuery_MgntFrameTxRate(ieee);
|
||||
tcb_desc->data_rate = mgnt_query_mgnt_frame_tx_rate(ieee);
|
||||
tcb_desc->ratr_index = 7;
|
||||
tcb_desc->tx_dis_rate_fallback = 1;
|
||||
tcb_desc->tx_use_drv_assinged_rate = 1;
|
||||
@ -355,20 +355,19 @@ void rtllib_enable_net_monitor_mode(struct net_device *dev,
|
||||
|
||||
netdev_info(dev, "========>Enter Monitor Mode\n");
|
||||
|
||||
ieee->AllowAllDestAddrHandler(dev, true, !init_state);
|
||||
ieee->allow_all_dest_addr_handler(dev, true, !init_state);
|
||||
}
|
||||
|
||||
/* Disables network monitor mode. Only packets destinated to
|
||||
* us will be received.
|
||||
*/
|
||||
void rtllib_disable_net_monitor_mode(struct net_device *dev,
|
||||
bool init_state)
|
||||
void rtllib_disable_net_monitor_mode(struct net_device *dev, bool init_state)
|
||||
{
|
||||
struct rtllib_device *ieee = netdev_priv_rsl(dev);
|
||||
|
||||
netdev_info(dev, "========>Exit Monitor Mode\n");
|
||||
|
||||
ieee->AllowAllDestAddrHandler(dev, false, !init_state);
|
||||
ieee->allow_all_dest_addr_handler(dev, false, !init_state);
|
||||
}
|
||||
|
||||
static void rtllib_send_probe(struct rtllib_device *ieee)
|
||||
@ -665,13 +664,13 @@ static struct sk_buff *rtllib_pspoll_func(struct rtllib_device *ieee)
|
||||
return skb;
|
||||
}
|
||||
|
||||
static inline int SecIsInPMKIDList(struct rtllib_device *ieee, u8 *bssid)
|
||||
static inline int sec_is_in_pmkid_list(struct rtllib_device *ieee, u8 *bssid)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
do {
|
||||
if ((ieee->PMKIDList[i].used) &&
|
||||
(memcmp(ieee->PMKIDList[i].Bssid, bssid, ETH_ALEN) == 0))
|
||||
if ((ieee->pmkid_list[i].used) &&
|
||||
(memcmp(ieee->pmkid_list[i].bssid, bssid, ETH_ALEN) == 0))
|
||||
break;
|
||||
i++;
|
||||
} while (i < NUM_PMKID_CACHE);
|
||||
@ -700,7 +699,7 @@ rtllib_association_req(struct rtllib_network *beacon,
|
||||
unsigned int cxvernum_ie_len = 0;
|
||||
struct lib80211_crypt_data *crypt;
|
||||
int encrypt;
|
||||
int PMKCacheIdx;
|
||||
int pmk_cache_idx;
|
||||
|
||||
unsigned int rate_len = (beacon->rates_len ?
|
||||
(beacon->rates_len + 2) : 0) +
|
||||
@ -708,7 +707,7 @@ rtllib_association_req(struct rtllib_network *beacon,
|
||||
2 : 0);
|
||||
|
||||
unsigned int wmm_info_len = beacon->qos_data.supported ? 9 : 0;
|
||||
unsigned int turbo_info_len = beacon->Turbo_Enable ? 9 : 0;
|
||||
unsigned int turbo_info_len = beacon->turbo_enable ? 9 : 0;
|
||||
|
||||
int len = 0;
|
||||
|
||||
@ -722,14 +721,14 @@ rtllib_association_req(struct rtllib_network *beacon,
|
||||
|
||||
if ((ieee->rtllib_ap_sec_type &&
|
||||
(ieee->rtllib_ap_sec_type(ieee) & SEC_ALG_TKIP)) ||
|
||||
ieee->bForcedBgMode) {
|
||||
ieee->forced_bg_mode) {
|
||||
ieee->ht_info->enable_ht = 0;
|
||||
ieee->mode = WIRELESS_MODE_G;
|
||||
}
|
||||
|
||||
if (ieee->ht_info->current_ht_support && ieee->ht_info->enable_ht) {
|
||||
ht_cap_buf = (u8 *)&ieee->ht_info->SelfHTCap;
|
||||
ht_cap_len = sizeof(ieee->ht_info->SelfHTCap);
|
||||
ht_cap_buf = (u8 *)&ieee->ht_info->self_ht_cap;
|
||||
ht_cap_len = sizeof(ieee->ht_info->self_ht_cap);
|
||||
ht_construct_capability_element(ieee, ht_cap_buf, &ht_cap_len,
|
||||
encrypt, true);
|
||||
if (ieee->ht_info->current_rt2rt_aggregation) {
|
||||
@ -741,15 +740,15 @@ rtllib_association_req(struct rtllib_network *beacon,
|
||||
}
|
||||
}
|
||||
|
||||
if (beacon->bCkipSupported)
|
||||
if (beacon->ckip_supported)
|
||||
ckip_ie_len = 30 + 2;
|
||||
if (beacon->bCcxRmEnable)
|
||||
if (beacon->ccx_rm_enable)
|
||||
ccxrm_ie_len = 6 + 2;
|
||||
if (beacon->BssCcxVerNumber >= 2)
|
||||
if (beacon->bss_ccx_ver_number >= 2)
|
||||
cxvernum_ie_len = 5 + 2;
|
||||
|
||||
PMKCacheIdx = SecIsInPMKIDList(ieee, ieee->current_network.bssid);
|
||||
if (PMKCacheIdx >= 0) {
|
||||
pmk_cache_idx = sec_is_in_pmkid_list(ieee, ieee->current_network.bssid);
|
||||
if (pmk_cache_idx >= 0) {
|
||||
wpa_ie_len += 18;
|
||||
netdev_info(ieee->dev, "[PMK cache]: WPA2 IE length: %x\n",
|
||||
wpa_ie_len);
|
||||
@ -818,52 +817,52 @@ rtllib_association_req(struct rtllib_network *beacon,
|
||||
*tag++ = beacon->rates_ex[i];
|
||||
}
|
||||
|
||||
if (beacon->bCkipSupported) {
|
||||
static const u8 AironetIeOui[] = {0x00, 0x01, 0x66};
|
||||
u8 CcxAironetBuf[30];
|
||||
struct octet_string osCcxAironetIE;
|
||||
if (beacon->ckip_supported) {
|
||||
static const u8 aironet_ie_oui[] = {0x00, 0x01, 0x66};
|
||||
u8 ccx_aironet_buf[30];
|
||||
struct octet_string os_ccx_aironet_ie;
|
||||
|
||||
memset(CcxAironetBuf, 0, 30);
|
||||
osCcxAironetIE.Octet = CcxAironetBuf;
|
||||
osCcxAironetIE.Length = sizeof(CcxAironetBuf);
|
||||
memcpy(osCcxAironetIE.Octet, AironetIeOui,
|
||||
sizeof(AironetIeOui));
|
||||
memset(ccx_aironet_buf, 0, 30);
|
||||
os_ccx_aironet_ie.octet = ccx_aironet_buf;
|
||||
os_ccx_aironet_ie.Length = sizeof(ccx_aironet_buf);
|
||||
memcpy(os_ccx_aironet_ie.octet, aironet_ie_oui,
|
||||
sizeof(aironet_ie_oui));
|
||||
|
||||
osCcxAironetIE.Octet[IE_CISCO_FLAG_POSITION] |=
|
||||
os_ccx_aironet_ie.octet[IE_CISCO_FLAG_POSITION] |=
|
||||
(SUPPORT_CKIP_PK | SUPPORT_CKIP_MIC);
|
||||
tag = skb_put(skb, ckip_ie_len);
|
||||
*tag++ = MFIE_TYPE_AIRONET;
|
||||
*tag++ = osCcxAironetIE.Length;
|
||||
memcpy(tag, osCcxAironetIE.Octet, osCcxAironetIE.Length);
|
||||
tag += osCcxAironetIE.Length;
|
||||
*tag++ = os_ccx_aironet_ie.Length;
|
||||
memcpy(tag, os_ccx_aironet_ie.octet, os_ccx_aironet_ie.Length);
|
||||
tag += os_ccx_aironet_ie.Length;
|
||||
}
|
||||
|
||||
if (beacon->bCcxRmEnable) {
|
||||
static const u8 CcxRmCapBuf[] = {0x00, 0x40, 0x96, 0x01, 0x01,
|
||||
if (beacon->ccx_rm_enable) {
|
||||
static const u8 ccx_rm_cap_buf[] = {0x00, 0x40, 0x96, 0x01, 0x01,
|
||||
0x00};
|
||||
struct octet_string osCcxRmCap;
|
||||
struct octet_string os_ccx_rm_cap;
|
||||
|
||||
osCcxRmCap.Octet = (u8 *)CcxRmCapBuf;
|
||||
osCcxRmCap.Length = sizeof(CcxRmCapBuf);
|
||||
os_ccx_rm_cap.octet = (u8 *)ccx_rm_cap_buf;
|
||||
os_ccx_rm_cap.Length = sizeof(ccx_rm_cap_buf);
|
||||
tag = skb_put(skb, ccxrm_ie_len);
|
||||
*tag++ = MFIE_TYPE_GENERIC;
|
||||
*tag++ = osCcxRmCap.Length;
|
||||
memcpy(tag, osCcxRmCap.Octet, osCcxRmCap.Length);
|
||||
tag += osCcxRmCap.Length;
|
||||
*tag++ = os_ccx_rm_cap.Length;
|
||||
memcpy(tag, os_ccx_rm_cap.octet, os_ccx_rm_cap.Length);
|
||||
tag += os_ccx_rm_cap.Length;
|
||||
}
|
||||
|
||||
if (beacon->BssCcxVerNumber >= 2) {
|
||||
u8 CcxVerNumBuf[] = {0x00, 0x40, 0x96, 0x03, 0x00};
|
||||
struct octet_string osCcxVerNum;
|
||||
if (beacon->bss_ccx_ver_number >= 2) {
|
||||
u8 ccx_ver_num_buf[] = {0x00, 0x40, 0x96, 0x03, 0x00};
|
||||
struct octet_string os_ccx_ver_num;
|
||||
|
||||
CcxVerNumBuf[4] = beacon->BssCcxVerNumber;
|
||||
osCcxVerNum.Octet = CcxVerNumBuf;
|
||||
osCcxVerNum.Length = sizeof(CcxVerNumBuf);
|
||||
ccx_ver_num_buf[4] = beacon->bss_ccx_ver_number;
|
||||
os_ccx_ver_num.octet = ccx_ver_num_buf;
|
||||
os_ccx_ver_num.Length = sizeof(ccx_ver_num_buf);
|
||||
tag = skb_put(skb, cxvernum_ie_len);
|
||||
*tag++ = MFIE_TYPE_GENERIC;
|
||||
*tag++ = osCcxVerNum.Length;
|
||||
memcpy(tag, osCcxVerNum.Octet, osCcxVerNum.Length);
|
||||
tag += osCcxVerNum.Length;
|
||||
*tag++ = os_ccx_ver_num.Length;
|
||||
memcpy(tag, os_ccx_ver_num.octet, os_ccx_ver_num.Length);
|
||||
tag += os_ccx_ver_num.Length;
|
||||
}
|
||||
if (ieee->ht_info->current_ht_support && ieee->ht_info->enable_ht) {
|
||||
if (ieee->ht_info->peer_ht_spec_ver != HT_SPEC_VER_EWC) {
|
||||
@ -878,11 +877,11 @@ rtllib_association_req(struct rtllib_network *beacon,
|
||||
if (wpa_ie_len) {
|
||||
skb_put_data(skb, ieee->wpa_ie, ieee->wpa_ie_len);
|
||||
|
||||
if (PMKCacheIdx >= 0) {
|
||||
if (pmk_cache_idx >= 0) {
|
||||
tag = skb_put(skb, 18);
|
||||
*tag = 1;
|
||||
*(tag + 1) = 0;
|
||||
memcpy((tag + 2), &ieee->PMKIDList[PMKCacheIdx].PMKID,
|
||||
memcpy((tag + 2), &ieee->pmkid_list[pmk_cache_idx].PMKID,
|
||||
16);
|
||||
}
|
||||
}
|
||||
@ -1072,17 +1071,16 @@ static void rtllib_associate_complete_wq(void *data)
|
||||
ieee->ht_info->enable_ht);
|
||||
memset(ieee->dot11ht_oper_rate_set, 0, 16);
|
||||
}
|
||||
ieee->link_detect_info.SlotNum = 2 * (1 +
|
||||
ieee->link_detect_info.slot_num = 2 * (1 +
|
||||
ieee->current_network.beacon_interval /
|
||||
500);
|
||||
if (ieee->link_detect_info.NumRecvBcnInPeriod == 0 ||
|
||||
ieee->link_detect_info.NumRecvDataInPeriod == 0) {
|
||||
ieee->link_detect_info.NumRecvBcnInPeriod = 1;
|
||||
ieee->link_detect_info.NumRecvDataInPeriod = 1;
|
||||
if (ieee->link_detect_info.num_recv_bcn_in_period == 0 ||
|
||||
ieee->link_detect_info.num_recv_data_in_period == 0) {
|
||||
ieee->link_detect_info.num_recv_bcn_in_period = 1;
|
||||
ieee->link_detect_info.num_recv_data_in_period = 1;
|
||||
}
|
||||
psc->LpsIdleCount = 0;
|
||||
psc->lps_idle_count = 0;
|
||||
ieee->link_change(ieee->dev);
|
||||
|
||||
}
|
||||
|
||||
static void rtllib_sta_send_associnfo(struct rtllib_device *ieee)
|
||||
@ -1209,18 +1207,18 @@ inline void rtllib_softmac_new_net(struct rtllib_device *ieee,
|
||||
ieee->current_network.flags);
|
||||
|
||||
if ((rtllib_act_scanning(ieee, false)) &&
|
||||
!(ieee->softmac_features & IEEE_SOFTMAC_SCAN))
|
||||
!(ieee->softmac_features & IEEE_SOFTMAC_SCAN))
|
||||
rtllib_stop_scan_syncro(ieee);
|
||||
|
||||
ht_reset_iot_setting(ieee->ht_info);
|
||||
ieee->wmm_acm = 0;
|
||||
if (ieee->iw_mode == IW_MODE_INFRA) {
|
||||
/* Join the network for the first time */
|
||||
ieee->AsocRetryCount = 0;
|
||||
ieee->asoc_retry_count = 0;
|
||||
if ((ieee->current_network.qos_data.supported == 1) &&
|
||||
ieee->current_network.bssht.bd_support_ht)
|
||||
ht_reset_self_and_save_peer_setting(ieee,
|
||||
&(ieee->current_network));
|
||||
&ieee->current_network);
|
||||
else
|
||||
ieee->ht_info->current_ht_support = false;
|
||||
|
||||
@ -1319,10 +1317,10 @@ static inline u16 assoc_parse(struct rtllib_device *ieee, struct sk_buff *skb,
|
||||
status_code == WLAN_STATUS_CAPS_UNSUPPORTED) &&
|
||||
((ieee->mode == WIRELESS_MODE_G) &&
|
||||
(ieee->current_network.mode == WIRELESS_MODE_N_24G) &&
|
||||
(ieee->AsocRetryCount++ < (RT_ASOC_RETRY_LIMIT - 1)))) {
|
||||
(ieee->asoc_retry_count++ < (RT_ASOC_RETRY_LIMIT - 1)))) {
|
||||
ieee->ht_info->iot_action |= HT_IOT_ACT_PURE_N_MODE;
|
||||
} else {
|
||||
ieee->AsocRetryCount = 0;
|
||||
ieee->asoc_retry_count = 0;
|
||||
}
|
||||
|
||||
return le16_to_cpu(response_head->status);
|
||||
@ -1351,8 +1349,8 @@ static short rtllib_sta_ps_sleep(struct rtllib_device *ieee, u64 *time)
|
||||
u8 dtim;
|
||||
struct rt_pwr_save_ctrl *psc = &ieee->pwr_save_ctrl;
|
||||
|
||||
if (ieee->LPSDelayCnt) {
|
||||
ieee->LPSDelayCnt--;
|
||||
if (ieee->lps_delay_cnt) {
|
||||
ieee->lps_delay_cnt--;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1378,45 +1376,45 @@ static short rtllib_sta_ps_sleep(struct rtllib_device *ieee, u64 *time)
|
||||
return 0;
|
||||
|
||||
if (time) {
|
||||
if (ieee->bAwakePktSent) {
|
||||
psc->LPSAwakeIntvl = 1;
|
||||
if (ieee->awake_pkt_sent) {
|
||||
psc->lps_awake_intvl = 1;
|
||||
} else {
|
||||
u8 MaxPeriod = 5;
|
||||
u8 max_period = 5;
|
||||
|
||||
if (psc->LPSAwakeIntvl == 0)
|
||||
psc->LPSAwakeIntvl = 1;
|
||||
psc->LPSAwakeIntvl = (psc->LPSAwakeIntvl >=
|
||||
MaxPeriod) ? MaxPeriod :
|
||||
(psc->LPSAwakeIntvl + 1);
|
||||
if (psc->lps_awake_intvl == 0)
|
||||
psc->lps_awake_intvl = 1;
|
||||
psc->lps_awake_intvl = (psc->lps_awake_intvl >=
|
||||
max_period) ? max_period :
|
||||
(psc->lps_awake_intvl + 1);
|
||||
}
|
||||
{
|
||||
u8 LPSAwakeIntvl_tmp = 0;
|
||||
u8 lps_awake_intvl_tmp = 0;
|
||||
u8 period = ieee->current_network.dtim_period;
|
||||
u8 count = ieee->current_network.tim.tim_count;
|
||||
|
||||
if (count == 0) {
|
||||
if (psc->LPSAwakeIntvl > period)
|
||||
LPSAwakeIntvl_tmp = period +
|
||||
(psc->LPSAwakeIntvl -
|
||||
if (psc->lps_awake_intvl > period)
|
||||
lps_awake_intvl_tmp = period +
|
||||
(psc->lps_awake_intvl -
|
||||
period) -
|
||||
((psc->LPSAwakeIntvl - period) %
|
||||
((psc->lps_awake_intvl - period) %
|
||||
period);
|
||||
else
|
||||
LPSAwakeIntvl_tmp = psc->LPSAwakeIntvl;
|
||||
lps_awake_intvl_tmp = psc->lps_awake_intvl;
|
||||
|
||||
} else {
|
||||
if (psc->LPSAwakeIntvl >
|
||||
if (psc->lps_awake_intvl >
|
||||
ieee->current_network.tim.tim_count)
|
||||
LPSAwakeIntvl_tmp = count +
|
||||
(psc->LPSAwakeIntvl - count) -
|
||||
((psc->LPSAwakeIntvl - count) % period);
|
||||
lps_awake_intvl_tmp = count +
|
||||
(psc->lps_awake_intvl - count) -
|
||||
((psc->lps_awake_intvl - count) % period);
|
||||
else
|
||||
LPSAwakeIntvl_tmp = psc->LPSAwakeIntvl;
|
||||
lps_awake_intvl_tmp = psc->lps_awake_intvl;
|
||||
}
|
||||
|
||||
*time = ieee->current_network.last_dtim_sta_time
|
||||
+ msecs_to_jiffies(ieee->current_network.beacon_interval *
|
||||
LPSAwakeIntvl_tmp);
|
||||
lps_awake_intvl_tmp);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1461,7 +1459,7 @@ static inline void rtllib_sta_ps(struct work_struct *work)
|
||||
spin_unlock_irqrestore(&ieee->mgmt_tx_lock, flags2);
|
||||
}
|
||||
|
||||
ieee->bAwakePktSent = false;
|
||||
ieee->awake_pkt_sent = false;
|
||||
|
||||
} else if (sleep == 2) {
|
||||
spin_lock_irqsave(&ieee->mgmt_tx_lock, flags2);
|
||||
@ -1553,10 +1551,10 @@ static void rtllib_process_action(struct rtllib_device *ieee,
|
||||
case ACT_CAT_BA:
|
||||
switch (*act) {
|
||||
case ACT_ADDBAREQ:
|
||||
rtllib_rx_ADDBAReq(ieee, skb);
|
||||
rtllib_rx_add_ba_req(ieee, skb);
|
||||
break;
|
||||
case ACT_ADDBARSP:
|
||||
rtllib_rx_ADDBARsp(ieee, skb);
|
||||
rtllib_rx_add_ba_rsp(ieee, skb);
|
||||
break;
|
||||
case ACT_DELBA:
|
||||
rtllib_rx_DELBA(ieee, skb);
|
||||
@ -1606,10 +1604,10 @@ rtllib_rx_assoc_resp(struct rtllib_device *ieee, struct sk_buff *skb,
|
||||
kfree(network);
|
||||
return 1;
|
||||
}
|
||||
memcpy(ieee->ht_info->PeerHTCapBuf,
|
||||
memcpy(ieee->ht_info->peer_ht_cap_buf,
|
||||
network->bssht.bd_ht_cap_buf,
|
||||
network->bssht.bd_ht_cap_len);
|
||||
memcpy(ieee->ht_info->PeerHTInfoBuf,
|
||||
memcpy(ieee->ht_info->peer_ht_info_buf,
|
||||
network->bssht.bd_ht_info_buf,
|
||||
network->bssht.bd_ht_info_len);
|
||||
ieee->handle_assoc_response(ieee->dev,
|
||||
@ -1634,7 +1632,7 @@ rtllib_rx_assoc_resp(struct rtllib_device *ieee, struct sk_buff *skb,
|
||||
netdev_info(ieee->dev,
|
||||
"Association response status code 0x%x\n",
|
||||
errcode);
|
||||
if (ieee->AsocRetryCount < RT_ASOC_RETRY_LIMIT)
|
||||
if (ieee->asoc_retry_count < RT_ASOC_RETRY_LIMIT)
|
||||
schedule_delayed_work(&ieee->associate_procedure_wq, 0);
|
||||
else
|
||||
rtllib_associate_abort(ieee);
|
||||
@ -1648,7 +1646,7 @@ static void rtllib_rx_auth_resp(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
int errcode;
|
||||
u8 *challenge;
|
||||
int chlen = 0;
|
||||
bool bSupportNmode = true, bHalfSupportNmode = false;
|
||||
bool support_nmode = true, half_support_nmode = false;
|
||||
|
||||
errcode = auth_parse(ieee->dev, skb, &challenge, &chlen);
|
||||
|
||||
@ -1664,18 +1662,18 @@ static void rtllib_rx_auth_resp(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
ieee->link_state = RTLLIB_ASSOCIATING_AUTHENTICATED;
|
||||
ieee->softmac_stats.rx_auth_rs_ok++;
|
||||
if (!(ieee->ht_info->iot_action & HT_IOT_ACT_PURE_N_MODE)) {
|
||||
if (!ieee->GetNmodeSupportBySecCfg(ieee->dev)) {
|
||||
if (!ieee->get_nmode_support_by_sec_cfg(ieee->dev)) {
|
||||
if (is_ht_half_nmode_aps(ieee)) {
|
||||
bSupportNmode = true;
|
||||
bHalfSupportNmode = true;
|
||||
support_nmode = true;
|
||||
half_support_nmode = true;
|
||||
} else {
|
||||
bSupportNmode = false;
|
||||
bHalfSupportNmode = false;
|
||||
support_nmode = false;
|
||||
half_support_nmode = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Dummy wirless mode setting to avoid encryption issue */
|
||||
if (bSupportNmode) {
|
||||
if (support_nmode) {
|
||||
ieee->set_wireless_mode(ieee->dev,
|
||||
ieee->current_network.mode);
|
||||
} else {
|
||||
@ -1684,11 +1682,11 @@ static void rtllib_rx_auth_resp(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
}
|
||||
|
||||
if ((ieee->current_network.mode == WIRELESS_MODE_N_24G) &&
|
||||
bHalfSupportNmode) {
|
||||
half_support_nmode) {
|
||||
netdev_info(ieee->dev, "======>enter half N mode\n");
|
||||
ieee->bHalfWirelessN24GMode = true;
|
||||
ieee->half_wireless_n24g_mode = true;
|
||||
} else {
|
||||
ieee->bHalfWirelessN24GMode = false;
|
||||
ieee->half_wireless_n24g_mode = false;
|
||||
}
|
||||
rtllib_associate_step2(ieee);
|
||||
} else {
|
||||
@ -1734,13 +1732,11 @@ rtllib_rx_deauth(struct rtllib_device *ieee, struct sk_buff *skb)
|
||||
ieee->link_state = RTLLIB_ASSOCIATING;
|
||||
ieee->softmac_stats.reassoc++;
|
||||
ieee->is_roaming = true;
|
||||
ieee->link_detect_info.bBusyTraffic = false;
|
||||
ieee->link_detect_info.busy_traffic = false;
|
||||
rtllib_disassociate(ieee);
|
||||
RemovePeerTS(ieee, header->addr2);
|
||||
if (!(ieee->rtllib_ap_sec_type(ieee) &
|
||||
(SEC_ALG_CCMP | SEC_ALG_TKIP)))
|
||||
schedule_delayed_work(
|
||||
&ieee->associate_procedure_wq, 5);
|
||||
remove_peer_ts(ieee, header->addr2);
|
||||
if (!(ieee->rtllib_ap_sec_type(ieee) & (SEC_ALG_CCMP | SEC_ALG_TKIP)))
|
||||
schedule_delayed_work(&ieee->associate_procedure_wq, 5);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -1816,7 +1812,7 @@ void rtllib_softmac_xmit(struct rtllib_txb *txb, struct rtllib_device *ieee)
|
||||
/* update the tx status */
|
||||
tcb_desc = (struct cb_desc *)(txb->fragments[0]->cb +
|
||||
MAX_DEV_ADDR_SIZE);
|
||||
if (tcb_desc->bMulticast)
|
||||
if (tcb_desc->multicast)
|
||||
ieee->stats.multicast++;
|
||||
|
||||
/* if xmit available, just xmit it immediately, else just insert it to
|
||||
@ -1998,11 +1994,11 @@ void rtllib_stop_protocol(struct rtllib_device *ieee)
|
||||
|
||||
if (ieee->link_state == MAC80211_LINKED) {
|
||||
if (ieee->iw_mode == IW_MODE_INFRA)
|
||||
SendDisassociation(ieee, 1, WLAN_REASON_DEAUTH_LEAVING);
|
||||
send_disassociation(ieee, 1, WLAN_REASON_DEAUTH_LEAVING);
|
||||
rtllib_disassociate(ieee);
|
||||
}
|
||||
|
||||
RemoveAllTS(ieee);
|
||||
remove_all_ts(ieee);
|
||||
ieee->proto_stoppping = 0;
|
||||
|
||||
kfree(ieee->assocreq_ies);
|
||||
@ -2072,13 +2068,13 @@ int rtllib_softmac_init(struct rtllib_device *ieee)
|
||||
for (i = 0; i < 5; i++)
|
||||
ieee->seq_ctrl[i] = 0;
|
||||
|
||||
ieee->link_detect_info.SlotIndex = 0;
|
||||
ieee->link_detect_info.SlotNum = 2;
|
||||
ieee->link_detect_info.NumRecvBcnInPeriod = 0;
|
||||
ieee->link_detect_info.NumRecvDataInPeriod = 0;
|
||||
ieee->link_detect_info.slot_index = 0;
|
||||
ieee->link_detect_info.slot_num = 2;
|
||||
ieee->link_detect_info.num_recv_bcn_in_period = 0;
|
||||
ieee->link_detect_info.num_recv_data_in_period = 0;
|
||||
ieee->link_detect_info.num_tx_ok_in_period = 0;
|
||||
ieee->link_detect_info.num_rx_ok_in_period = 0;
|
||||
ieee->link_detect_info.NumRxUnicastOkInPeriod = 0;
|
||||
ieee->link_detect_info.num_rx_unicast_ok_in_period = 0;
|
||||
ieee->is_aggregate_frame = false;
|
||||
ieee->assoc_id = 0;
|
||||
ieee->queue_stop = 0;
|
||||
@ -2101,7 +2097,7 @@ int rtllib_softmac_init(struct rtllib_device *ieee)
|
||||
ieee->reg_dot11tx_ht_oper_rate_set[1] = 0xff;
|
||||
ieee->reg_dot11tx_ht_oper_rate_set[4] = 0x01;
|
||||
|
||||
ieee->FirstIe_InScan = false;
|
||||
ieee->first_ie_in_scan = false;
|
||||
ieee->actscanning = false;
|
||||
ieee->beinretry = false;
|
||||
ieee->is_set_key = false;
|
||||
@ -2148,7 +2144,7 @@ void rtllib_softmac_free(struct rtllib_device *ieee)
|
||||
|
||||
static inline struct sk_buff *
|
||||
rtllib_disauth_skb(struct rtllib_network *beacon,
|
||||
struct rtllib_device *ieee, u16 asRsn)
|
||||
struct rtllib_device *ieee, u16 rsn)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
struct rtllib_disauth *disauth;
|
||||
@ -2168,13 +2164,13 @@ rtllib_disauth_skb(struct rtllib_network *beacon,
|
||||
ether_addr_copy(disauth->header.addr2, ieee->dev->dev_addr);
|
||||
ether_addr_copy(disauth->header.addr3, beacon->bssid);
|
||||
|
||||
disauth->reason = cpu_to_le16(asRsn);
|
||||
disauth->reason = cpu_to_le16(rsn);
|
||||
return skb;
|
||||
}
|
||||
|
||||
static inline struct sk_buff *
|
||||
rtllib_disassociate_skb(struct rtllib_network *beacon,
|
||||
struct rtllib_device *ieee, u16 asRsn)
|
||||
struct rtllib_device *ieee, u16 rsn)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
struct rtllib_disassoc *disass;
|
||||
@ -2195,19 +2191,19 @@ rtllib_disassociate_skb(struct rtllib_network *beacon,
|
||||
ether_addr_copy(disass->header.addr2, ieee->dev->dev_addr);
|
||||
ether_addr_copy(disass->header.addr3, beacon->bssid);
|
||||
|
||||
disass->reason = cpu_to_le16(asRsn);
|
||||
disass->reason = cpu_to_le16(rsn);
|
||||
return skb;
|
||||
}
|
||||
|
||||
void SendDisassociation(struct rtllib_device *ieee, bool deauth, u16 asRsn)
|
||||
void send_disassociation(struct rtllib_device *ieee, bool deauth, u16 rsn)
|
||||
{
|
||||
struct rtllib_network *beacon = &ieee->current_network;
|
||||
struct sk_buff *skb;
|
||||
|
||||
if (deauth)
|
||||
skb = rtllib_disauth_skb(beacon, ieee, asRsn);
|
||||
skb = rtllib_disauth_skb(beacon, ieee, rsn);
|
||||
else
|
||||
skb = rtllib_disassociate_skb(beacon, ieee, asRsn);
|
||||
skb = rtllib_disassociate_skb(beacon, ieee, rsn);
|
||||
|
||||
if (skb)
|
||||
softmac_mgmt_xmit(skb, ieee);
|
||||
@ -2241,56 +2237,56 @@ u8 rtllib_ap_sec_type(struct rtllib_device *ieee)
|
||||
}
|
||||
}
|
||||
|
||||
static void rtllib_MlmeDisassociateRequest(struct rtllib_device *rtllib,
|
||||
u8 *asSta, u8 asRsn)
|
||||
static void rtllib_mlme_disassociate_request(struct rtllib_device *rtllib,
|
||||
u8 *addr, u8 rsn)
|
||||
{
|
||||
u8 i;
|
||||
u8 op_mode;
|
||||
|
||||
RemovePeerTS(rtllib, asSta);
|
||||
remove_peer_ts(rtllib, addr);
|
||||
|
||||
if (memcmp(rtllib->current_network.bssid, asSta, 6) == 0) {
|
||||
if (memcmp(rtllib->current_network.bssid, addr, 6) == 0) {
|
||||
rtllib->link_state = MAC80211_NOLINK;
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
rtllib->current_network.bssid[i] = 0x22;
|
||||
op_mode = RT_OP_MODE_NO_LINK;
|
||||
rtllib->op_mode = RT_OP_MODE_NO_LINK;
|
||||
rtllib->SetHwRegHandler(rtllib->dev, HW_VAR_MEDIA_STATUS,
|
||||
rtllib->set_hw_reg_handler(rtllib->dev, HW_VAR_MEDIA_STATUS,
|
||||
(u8 *)(&op_mode));
|
||||
rtllib_disassociate(rtllib);
|
||||
|
||||
rtllib->SetHwRegHandler(rtllib->dev, HW_VAR_BSSID,
|
||||
rtllib->set_hw_reg_handler(rtllib->dev, HW_VAR_BSSID,
|
||||
rtllib->current_network.bssid);
|
||||
}
|
||||
}
|
||||
|
||||
static void rtllib_MgntDisconnectAP(struct rtllib_device *rtllib, u8 asRsn)
|
||||
static void rtllib_mgnt_disconnect_ap(struct rtllib_device *rtllib, u8 rsn)
|
||||
{
|
||||
bool bFilterOutNonAssociatedBSSID = false;
|
||||
bool filter_out_nonassociated_bssid = false;
|
||||
|
||||
bFilterOutNonAssociatedBSSID = false;
|
||||
rtllib->SetHwRegHandler(rtllib->dev, HW_VAR_CECHK_BSSID,
|
||||
(u8 *)(&bFilterOutNonAssociatedBSSID));
|
||||
rtllib_MlmeDisassociateRequest(rtllib, rtllib->current_network.bssid,
|
||||
asRsn);
|
||||
filter_out_nonassociated_bssid = false;
|
||||
rtllib->set_hw_reg_handler(rtllib->dev, HW_VAR_CECHK_BSSID,
|
||||
(u8 *)(&filter_out_nonassociated_bssid));
|
||||
rtllib_mlme_disassociate_request(rtllib, rtllib->current_network.bssid,
|
||||
rsn);
|
||||
|
||||
rtllib->link_state = MAC80211_NOLINK;
|
||||
}
|
||||
|
||||
bool rtllib_MgntDisconnect(struct rtllib_device *rtllib, u8 asRsn)
|
||||
bool rtllib_mgnt_disconnect(struct rtllib_device *rtllib, u8 rsn)
|
||||
{
|
||||
if (rtllib->ps != RTLLIB_PS_DISABLED)
|
||||
rtllib->sta_wake_up(rtllib->dev);
|
||||
|
||||
if (rtllib->link_state == MAC80211_LINKED) {
|
||||
if (rtllib->iw_mode == IW_MODE_INFRA)
|
||||
rtllib_MgntDisconnectAP(rtllib, asRsn);
|
||||
rtllib_mgnt_disconnect_ap(rtllib, rsn);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
EXPORT_SYMBOL(rtllib_MgntDisconnect);
|
||||
EXPORT_SYMBOL(rtllib_mgnt_disconnect);
|
||||
|
||||
void notify_wx_assoc_event(struct rtllib_device *ieee)
|
||||
{
|
||||
|
@ -347,10 +347,10 @@ void rtllib_wx_sync_scan_wq(void *data)
|
||||
/* Notify AP that I wake up again */
|
||||
rtllib_sta_ps_send_null_frame(ieee, 0);
|
||||
|
||||
if (ieee->link_detect_info.NumRecvBcnInPeriod == 0 ||
|
||||
ieee->link_detect_info.NumRecvDataInPeriod == 0) {
|
||||
ieee->link_detect_info.NumRecvBcnInPeriod = 1;
|
||||
ieee->link_detect_info.NumRecvDataInPeriod = 1;
|
||||
if (ieee->link_detect_info.num_recv_bcn_in_period == 0 ||
|
||||
ieee->link_detect_info.num_recv_data_in_period == 0) {
|
||||
ieee->link_detect_info.num_recv_bcn_in_period = 1;
|
||||
ieee->link_detect_info.num_recv_data_in_period = 1;
|
||||
}
|
||||
rtllib_wake_all_queues(ieee);
|
||||
|
||||
|
@ -286,7 +286,7 @@ static void rtllib_tx_query_agg_cap(struct rtllib_device *ieee,
|
||||
if (ht_info->iot_action & HT_IOT_ACT_TX_NO_AGGREGATION)
|
||||
return;
|
||||
|
||||
if (!ieee->GetNmodeSupportBySecCfg(ieee->dev))
|
||||
if (!ieee->get_nmode_support_by_sec_cfg(ieee->dev))
|
||||
return;
|
||||
if (ht_info->current_ampdu_enable) {
|
||||
if (!rtllib_get_ts(ieee, (struct ts_common_info **)(&ts), hdr->addr1,
|
||||
@ -356,7 +356,7 @@ static void rtllib_query_BandwidthMode(struct rtllib_device *ieee,
|
||||
if (!ht_info->current_ht_support || !ht_info->enable_ht)
|
||||
return;
|
||||
|
||||
if (tcb_desc->bMulticast || tcb_desc->bBroadcast)
|
||||
if (tcb_desc->multicast || tcb_desc->bBroadcast)
|
||||
return;
|
||||
|
||||
if ((tcb_desc->data_rate & 0x80) == 0)
|
||||
@ -378,7 +378,7 @@ static void rtllib_query_protectionmode(struct rtllib_device *ieee,
|
||||
tcb_desc->RTSSC = 0;
|
||||
tcb_desc->bRTSBW = false;
|
||||
|
||||
if (tcb_desc->bBroadcast || tcb_desc->bMulticast)
|
||||
if (tcb_desc->bBroadcast || tcb_desc->multicast)
|
||||
return;
|
||||
|
||||
if (is_broadcast_ether_addr(skb->data + 16))
|
||||
@ -595,14 +595,14 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
|
||||
((((u8 *)udp)[1] == 67) &&
|
||||
(((u8 *)udp)[3] == 68))) {
|
||||
bdhcp = true;
|
||||
ieee->LPSDelayCnt = 200;
|
||||
ieee->lps_delay_cnt = 200;
|
||||
}
|
||||
}
|
||||
} else if (ether_type == ETH_P_ARP) {
|
||||
netdev_info(ieee->dev,
|
||||
"=================>DHCP Protocol start tx ARP pkt!!\n");
|
||||
bdhcp = true;
|
||||
ieee->LPSDelayCnt =
|
||||
ieee->lps_delay_cnt =
|
||||
ieee->current_network.tim.tim_count;
|
||||
}
|
||||
}
|
||||
@ -832,7 +832,7 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
|
||||
if (ieee->ht_info->iot_action &
|
||||
HT_IOT_ACT_WA_IOT_Broadcom) {
|
||||
tcb_desc->data_rate =
|
||||
MgntQuery_TxRateExcludeCCKRates(ieee);
|
||||
mgnt_query_tx_rate_exclude_cck_rates(ieee);
|
||||
tcb_desc->tx_dis_rate_fallback = false;
|
||||
} else {
|
||||
tcb_desc->data_rate = ieee->basic_rate;
|
||||
@ -843,11 +843,11 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
|
||||
tcb_desc->tx_use_drv_assinged_rate = 1;
|
||||
} else {
|
||||
if (is_multicast_ether_addr(header.addr1))
|
||||
tcb_desc->bMulticast = 1;
|
||||
tcb_desc->multicast = 1;
|
||||
if (is_broadcast_ether_addr(header.addr1))
|
||||
tcb_desc->bBroadcast = 1;
|
||||
rtllib_txrate_selectmode(ieee, tcb_desc);
|
||||
if (tcb_desc->bMulticast || tcb_desc->bBroadcast)
|
||||
if (tcb_desc->multicast || tcb_desc->bBroadcast)
|
||||
tcb_desc->data_rate = ieee->basic_rate;
|
||||
else
|
||||
tcb_desc->data_rate = rtllib_current_rate(ieee);
|
||||
@ -856,7 +856,7 @@ static int rtllib_xmit_inter(struct sk_buff *skb, struct net_device *dev)
|
||||
if (ieee->ht_info->iot_action &
|
||||
HT_IOT_ACT_WA_IOT_Broadcom) {
|
||||
tcb_desc->data_rate =
|
||||
MgntQuery_TxRateExcludeCCKRates(ieee);
|
||||
mgnt_query_tx_rate_exclude_cck_rates(ieee);
|
||||
tcb_desc->tx_dis_rate_fallback = false;
|
||||
} else {
|
||||
tcb_desc->data_rate = MGN_1M;
|
||||
|
@ -636,7 +636,7 @@ int rtllib_wx_set_mlme(struct rtllib_device *ieee,
|
||||
|
||||
ieee->cannot_notify = true;
|
||||
|
||||
SendDisassociation(ieee, deauth, mlme->reason_code);
|
||||
send_disassociation(ieee, deauth, mlme->reason_code);
|
||||
rtllib_disassociate(ieee);
|
||||
|
||||
ieee->wap_set = 0;
|
||||
|
@ -1035,8 +1035,8 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork)
|
||||
u16 wpa_len = 0, rsn_len = 0;
|
||||
struct HT_info_element *pht_info = NULL;
|
||||
struct ieee80211_ht_cap *pht_cap = NULL;
|
||||
unsigned int len;
|
||||
unsigned char *p;
|
||||
unsigned int len;
|
||||
unsigned char *p;
|
||||
__le16 le_cap;
|
||||
|
||||
memcpy((u8 *)&le_cap, rtw_get_capability_from_ie(pnetwork->network.ies), 2);
|
||||
|
@ -169,7 +169,6 @@ void _rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwor
|
||||
{
|
||||
unsigned int delta_time;
|
||||
u32 lifetime = SCANQUEUE_LIFETIME;
|
||||
/* _irqL irqL; */
|
||||
struct __queue *free_queue = &(pmlmepriv->free_bss_pool);
|
||||
|
||||
if (!pnetwork)
|
||||
@ -389,7 +388,6 @@ int is_same_network(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst, u8 fea
|
||||
d_cap = le16_to_cpu(tmpd);
|
||||
|
||||
return (src->ssid.ssid_length == dst->ssid.ssid_length) &&
|
||||
/* (src->configuration.ds_config == dst->configuration.ds_config) && */
|
||||
((!memcmp(src->mac_address, dst->mac_address, ETH_ALEN))) &&
|
||||
((!memcmp(src->ssid.ssid, dst->ssid.ssid, src->ssid.ssid_length))) &&
|
||||
((s_cap & WLAN_CAPABILITY_IBSS) ==
|
||||
@ -1548,9 +1546,9 @@ void _rtw_join_timeout_handler(struct timer_list *t)
|
||||
int do_join_r;
|
||||
|
||||
do_join_r = rtw_do_join(adapter);
|
||||
if (do_join_r != _SUCCESS) {
|
||||
if (do_join_r != _SUCCESS)
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
} else {
|
||||
rtw_indicate_disconnect(adapter);
|
||||
@ -2432,9 +2430,8 @@ void rtw_update_ht_cap(struct adapter *padapter, u8 *pie, uint ie_len, u8 channe
|
||||
return;
|
||||
|
||||
/* maybe needs check if ap supports rx ampdu. */
|
||||
if (!(phtpriv->ampdu_enable) && pregistrypriv->ampdu_enable == 1) {
|
||||
if (!(phtpriv->ampdu_enable) && pregistrypriv->ampdu_enable == 1)
|
||||
phtpriv->ampdu_enable = true;
|
||||
}
|
||||
|
||||
/* check Max Rx A-MPDU Size */
|
||||
len = 0;
|
||||
|
@ -127,9 +127,8 @@ void kfree_all_stainfo(struct sta_priv *pstapriv)
|
||||
phead = get_list_head(&pstapriv->free_sta_queue);
|
||||
plist = get_next(phead);
|
||||
|
||||
while (phead != plist) {
|
||||
while (phead != plist)
|
||||
plist = get_next(plist);
|
||||
}
|
||||
|
||||
spin_unlock_bh(&pstapriv->sta_hash_lock);
|
||||
}
|
||||
|
@ -954,7 +954,7 @@ static u16 hal_EfuseGetCurrentSize_WiFi(
|
||||
#endif
|
||||
u16 efuse_addr = 0;
|
||||
u16 start_addr = 0; /* for debug */
|
||||
u8 hoffset = 0, hworden = 0;
|
||||
u8 hworden = 0;
|
||||
u8 efuse_data, word_cnts = 0;
|
||||
u32 count = 0; /* for debug */
|
||||
|
||||
@ -1001,16 +1001,13 @@ static u16 hal_EfuseGetCurrentSize_WiFi(
|
||||
}
|
||||
|
||||
if (EXT_HEADER(efuse_data)) {
|
||||
hoffset = GET_HDR_OFFSET_2_0(efuse_data);
|
||||
efuse_addr++;
|
||||
efuse_OneByteRead(padapter, efuse_addr, &efuse_data, bPseudoTest);
|
||||
if (ALL_WORDS_DISABLED(efuse_data))
|
||||
continue;
|
||||
|
||||
hoffset |= ((efuse_data & 0xF0) >> 1);
|
||||
hworden = efuse_data & 0x0F;
|
||||
} else {
|
||||
hoffset = (efuse_data>>4) & 0x0F;
|
||||
hworden = efuse_data & 0x0F;
|
||||
}
|
||||
|
||||
@ -1047,7 +1044,7 @@ static u16 hal_EfuseGetCurrentSize_BT(struct adapter *padapter, u8 bPseudoTest)
|
||||
u16 btusedbytes;
|
||||
u16 efuse_addr;
|
||||
u8 bank, startBank;
|
||||
u8 hoffset = 0, hworden = 0;
|
||||
u8 hworden = 0;
|
||||
u8 efuse_data, word_cnts = 0;
|
||||
u16 retU2 = 0;
|
||||
|
||||
@ -1085,7 +1082,6 @@ static u16 hal_EfuseGetCurrentSize_BT(struct adapter *padapter, u8 bPseudoTest)
|
||||
break;
|
||||
|
||||
if (EXT_HEADER(efuse_data)) {
|
||||
hoffset = GET_HDR_OFFSET_2_0(efuse_data);
|
||||
efuse_addr++;
|
||||
efuse_OneByteRead(padapter, efuse_addr, &efuse_data, bPseudoTest);
|
||||
|
||||
@ -1094,11 +1090,8 @@ static u16 hal_EfuseGetCurrentSize_BT(struct adapter *padapter, u8 bPseudoTest)
|
||||
continue;
|
||||
}
|
||||
|
||||
/* hoffset = ((hoffset & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); */
|
||||
hoffset |= ((efuse_data & 0xF0) >> 1);
|
||||
hworden = efuse_data & 0x0F;
|
||||
} else {
|
||||
hoffset = (efuse_data>>4) & 0x0F;
|
||||
hworden = efuse_data & 0x0F;
|
||||
}
|
||||
|
||||
@ -1114,18 +1107,15 @@ static u16 hal_EfuseGetCurrentSize_BT(struct adapter *padapter, u8 bPseudoTest)
|
||||
) {
|
||||
if (efuse_data != 0xFF) {
|
||||
if ((efuse_data&0x1F) == 0x0F) { /* extended header */
|
||||
hoffset = efuse_data;
|
||||
efuse_addr++;
|
||||
efuse_OneByteRead(padapter, efuse_addr, &efuse_data, bPseudoTest);
|
||||
if ((efuse_data & 0x0F) == 0x0F) {
|
||||
efuse_addr++;
|
||||
continue;
|
||||
} else {
|
||||
hoffset = ((hoffset & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1);
|
||||
hworden = efuse_data & 0x0F;
|
||||
}
|
||||
} else {
|
||||
hoffset = (efuse_data>>4) & 0x0F;
|
||||
hworden = efuse_data & 0x0F;
|
||||
}
|
||||
word_cnts = Efuse_CalculateWordCnts(hworden);
|
||||
|
@ -1259,8 +1259,7 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
|
||||
goto check_need_indicate_scan_done;
|
||||
}
|
||||
|
||||
ssid = kzalloc(RTW_SSID_SCAN_AMOUNT * sizeof(struct ndis_802_11_ssid),
|
||||
GFP_KERNEL);
|
||||
ssid = kcalloc(RTW_SSID_SCAN_AMOUNT, sizeof(*ssid), GFP_KERNEL);
|
||||
if (!ssid) {
|
||||
ret = -ENOMEM;
|
||||
goto check_need_indicate_scan_done;
|
||||
|
@ -350,12 +350,11 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
|
||||
if (is_capturing(dev)) {
|
||||
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
|
||||
"Grab another frame");
|
||||
vchiq_mmal_port_parameter_set(
|
||||
instance,
|
||||
dev->capture.camera_port,
|
||||
MMAL_PARAMETER_CAPTURE,
|
||||
&dev->capture.frame_count,
|
||||
sizeof(dev->capture.frame_count));
|
||||
vchiq_mmal_port_parameter_set(instance,
|
||||
dev->capture.camera_port,
|
||||
MMAL_PARAMETER_CAPTURE,
|
||||
&dev->capture.frame_count,
|
||||
sizeof(dev->capture.frame_count));
|
||||
}
|
||||
if (vchiq_mmal_submit_buffer(instance, port,
|
||||
&buf->mmal))
|
||||
@ -406,12 +405,11 @@ static void buffer_cb(struct vchiq_mmal_instance *instance,
|
||||
is_capturing(dev)) {
|
||||
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
|
||||
"Grab another frame as buffer has EOS");
|
||||
vchiq_mmal_port_parameter_set(
|
||||
instance,
|
||||
dev->capture.camera_port,
|
||||
MMAL_PARAMETER_CAPTURE,
|
||||
&dev->capture.frame_count,
|
||||
sizeof(dev->capture.frame_count));
|
||||
vchiq_mmal_port_parameter_set(instance,
|
||||
dev->capture.camera_port,
|
||||
MMAL_PARAMETER_CAPTURE,
|
||||
&dev->capture.frame_count,
|
||||
sizeof(dev->capture.frame_count));
|
||||
}
|
||||
}
|
||||
|
||||
@ -420,11 +418,10 @@ static int enable_camera(struct bcm2835_mmal_dev *dev)
|
||||
int ret;
|
||||
|
||||
if (!dev->camera_use_count) {
|
||||
ret = vchiq_mmal_port_parameter_set(
|
||||
dev->instance,
|
||||
&dev->component[COMP_CAMERA]->control,
|
||||
MMAL_PARAMETER_CAMERA_NUM, &dev->camera_num,
|
||||
sizeof(dev->camera_num));
|
||||
ret = vchiq_mmal_port_parameter_set(dev->instance,
|
||||
&dev->component[COMP_CAMERA]->control,
|
||||
MMAL_PARAMETER_CAMERA_NUM, &dev->camera_num,
|
||||
sizeof(dev->camera_num));
|
||||
if (ret < 0) {
|
||||
v4l2_err(&dev->v4l2_dev,
|
||||
"Failed setting camera num, ret %d\n", ret);
|
||||
@ -468,11 +465,11 @@ static int disable_camera(struct bcm2835_mmal_dev *dev)
|
||||
"Failed disabling camera, ret %d\n", ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
vchiq_mmal_port_parameter_set(
|
||||
dev->instance,
|
||||
&dev->component[COMP_CAMERA]->control,
|
||||
MMAL_PARAMETER_CAMERA_NUM, &i,
|
||||
sizeof(i));
|
||||
vchiq_mmal_port_parameter_set(dev->instance,
|
||||
&dev->component[COMP_CAMERA]->control,
|
||||
MMAL_PARAMETER_CAMERA_NUM,
|
||||
&i,
|
||||
sizeof(i));
|
||||
}
|
||||
v4l2_dbg(1, bcm2835_v4l2_debug, &dev->v4l2_dev,
|
||||
"Camera refcount now %d\n", dev->camera_use_count);
|
||||
@ -786,9 +783,8 @@ static int vidioc_overlay(struct file *file, void *f, unsigned int on)
|
||||
ret = vchiq_mmal_port_connect_tunnel(dev->instance, src,
|
||||
NULL);
|
||||
if (ret >= 0)
|
||||
ret = vchiq_mmal_component_disable(
|
||||
dev->instance,
|
||||
dev->component[COMP_PREVIEW]);
|
||||
ret = vchiq_mmal_component_disable(dev->instance,
|
||||
dev->component[COMP_PREVIEW]);
|
||||
|
||||
disable_camera(dev);
|
||||
return ret;
|
||||
@ -1006,7 +1002,6 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int mmal_setup_video_component(struct bcm2835_mmal_dev *dev,
|
||||
struct v4l2_format *f)
|
||||
{
|
||||
@ -1042,8 +1037,8 @@ static int mmal_setup_video_component(struct bcm2835_mmal_dev *dev,
|
||||
|
||||
if (overlay_enabled) {
|
||||
ret = vchiq_mmal_port_connect_tunnel(dev->instance,
|
||||
preview_port,
|
||||
&dev->component[COMP_PREVIEW]->input[0]);
|
||||
preview_port,
|
||||
&dev->component[COMP_PREVIEW]->input[0]);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -1720,11 +1715,11 @@ static int mmal_init(struct bcm2835_mmal_dev *dev)
|
||||
{
|
||||
unsigned int enable = 1;
|
||||
|
||||
vchiq_mmal_port_parameter_set(
|
||||
dev->instance,
|
||||
&dev->component[COMP_VIDEO_ENCODE]->control,
|
||||
MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT,
|
||||
&enable, sizeof(enable));
|
||||
vchiq_mmal_port_parameter_set(dev->instance,
|
||||
&dev->component[COMP_VIDEO_ENCODE]->control,
|
||||
MMAL_PARAMETER_VIDEO_IMMUTABLE_INPUT,
|
||||
&enable,
|
||||
sizeof(enable));
|
||||
|
||||
vchiq_mmal_port_parameter_set(dev->instance,
|
||||
&dev->component[COMP_VIDEO_ENCODE]->control,
|
||||
|
@ -37,7 +37,7 @@ static int vchiq_bus_probe(struct device *dev)
|
||||
return driver->probe(device);
|
||||
}
|
||||
|
||||
struct bus_type vchiq_bus_type = {
|
||||
const struct bus_type vchiq_bus_type = {
|
||||
.name = "vchiq-bus",
|
||||
.match = vchiq_bus_type_match,
|
||||
.uevent = vchiq_bus_uevent,
|
||||
|
@ -34,7 +34,7 @@ static inline struct vchiq_driver *to_vchiq_driver(struct device_driver *d)
|
||||
return container_of(d, struct vchiq_driver, driver);
|
||||
}
|
||||
|
||||
extern struct bus_type vchiq_bus_type;
|
||||
extern const struct bus_type vchiq_bus_type;
|
||||
|
||||
struct vchiq_device *
|
||||
vchiq_device_register(struct device *parent, const char *name);
|
||||
|
@ -1970,7 +1970,7 @@ static void vme_bus_remove(struct device *dev)
|
||||
driver->remove(vdev);
|
||||
}
|
||||
|
||||
struct bus_type vme_bus_type = {
|
||||
const struct bus_type vme_bus_type = {
|
||||
.name = "vme",
|
||||
.match = vme_bus_match,
|
||||
.probe = vme_bus_probe,
|
||||
|
@ -81,7 +81,7 @@ struct vme_resource {
|
||||
struct list_head *entry;
|
||||
};
|
||||
|
||||
extern struct bus_type vme_bus_type;
|
||||
extern const struct bus_type vme_bus_type;
|
||||
|
||||
/* Number of VME interrupt vectors */
|
||||
#define VME_NUM_STATUSID 256
|
||||
|
@ -691,8 +691,7 @@ static const int TSI148_GCSR_MBOX[4] = { TSI148_GCSR_MBOX0,
|
||||
|
||||
#define TSI148_LCSR_VMCTRL_RMWEN BIT(20) /* RMW Enable */
|
||||
|
||||
#define TSI148_LCSR_VMCTRL_ATO_M (7 << 16) /* Master Access Time-out Mask
|
||||
*/
|
||||
#define TSI148_LCSR_VMCTRL_ATO_M (7 << 16) /* Master Access Time-out Mask */
|
||||
#define TSI148_LCSR_VMCTRL_ATO_32 (0 << 16) /* 32 us */
|
||||
#define TSI148_LCSR_VMCTRL_ATO_128 BIT(16) /* 128 us */
|
||||
#define TSI148_LCSR_VMCTRL_ATO_512 (2 << 16) /* 512 us */
|
||||
@ -753,8 +752,7 @@ static const int TSI148_GCSR_MBOX[4] = { TSI148_GCSR_MBOX0,
|
||||
#define TSI148_LCSR_VCTRL_DLT_16384 (0xB << 24) /* 16384 VCLKS */
|
||||
#define TSI148_LCSR_VCTRL_DLT_32768 (0xC << 24) /* 32768 VCLKS */
|
||||
|
||||
#define TSI148_LCSR_VCTRL_NERBB BIT(20) /* No Early Release of Bus Busy
|
||||
*/
|
||||
#define TSI148_LCSR_VCTRL_NERBB BIT(20) /* No Early Release of Bus Busy */
|
||||
|
||||
#define TSI148_LCSR_VCTRL_SRESET BIT(17) /* System Reset */
|
||||
#define TSI148_LCSR_VCTRL_LRESET BIT(16) /* Local Reset */
|
||||
|
@ -81,9 +81,9 @@ static void vt6655_mac_set_bb_type(void __iomem *iobase, u32 mask)
|
||||
* Return Value: none
|
||||
*/
|
||||
static void calculate_ofdmr_parameter(unsigned char rate,
|
||||
u8 bb_type,
|
||||
unsigned char *tx_rate,
|
||||
unsigned char *rsv_time)
|
||||
u8 bb_type,
|
||||
unsigned char *tx_rate,
|
||||
unsigned char *rsv_time)
|
||||
{
|
||||
switch (rate) {
|
||||
case RATE_6M:
|
||||
@ -288,7 +288,7 @@ bool card_set_phy_parameter(struct vnt_private *priv, u8 bb_type)
|
||||
* Return Value: none
|
||||
*/
|
||||
bool card_update_tsf(struct vnt_private *priv, unsigned char rx_rate,
|
||||
u64 bss_timestamp)
|
||||
u64 bss_timestamp)
|
||||
{
|
||||
u64 local_tsf;
|
||||
u64 tsf_offset = 0;
|
||||
@ -297,7 +297,7 @@ bool card_update_tsf(struct vnt_private *priv, unsigned char rx_rate,
|
||||
|
||||
if (bss_timestamp != local_tsf) {
|
||||
tsf_offset = card_get_tsf_offset(rx_rate, bss_timestamp,
|
||||
local_tsf);
|
||||
local_tsf);
|
||||
/* adjust TSF, HW's TSF add TSF Offset reg */
|
||||
tsf_offset = le64_to_cpu(tsf_offset);
|
||||
iowrite32((u32)tsf_offset, priv->port_offset + MAC_REG_TSFOFST);
|
||||
@ -321,7 +321,7 @@ bool card_update_tsf(struct vnt_private *priv, unsigned char rx_rate,
|
||||
* Return Value: true if succeed; otherwise false
|
||||
*/
|
||||
bool card_set_beacon_period(struct vnt_private *priv,
|
||||
unsigned short beacon_interval)
|
||||
unsigned short beacon_interval)
|
||||
{
|
||||
u64 next_tbtt;
|
||||
|
||||
@ -586,61 +586,61 @@ void card_set_rspinf(struct vnt_private *priv, u8 bb_type)
|
||||
|
||||
/* RSPINF_a_6 */
|
||||
calculate_ofdmr_parameter(RATE_6M,
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
iowrite16(MAKEWORD(byTxRate, byRsvTime), priv->port_offset + MAC_REG_RSPINF_A_6);
|
||||
/* RSPINF_a_9 */
|
||||
calculate_ofdmr_parameter(RATE_9M,
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
iowrite16(MAKEWORD(byTxRate, byRsvTime), priv->port_offset + MAC_REG_RSPINF_A_9);
|
||||
/* RSPINF_a_12 */
|
||||
calculate_ofdmr_parameter(RATE_12M,
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
iowrite16(MAKEWORD(byTxRate, byRsvTime), priv->port_offset + MAC_REG_RSPINF_A_12);
|
||||
/* RSPINF_a_18 */
|
||||
calculate_ofdmr_parameter(RATE_18M,
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
iowrite16(MAKEWORD(byTxRate, byRsvTime), priv->port_offset + MAC_REG_RSPINF_A_18);
|
||||
/* RSPINF_a_24 */
|
||||
calculate_ofdmr_parameter(RATE_24M,
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
iowrite16(MAKEWORD(byTxRate, byRsvTime), priv->port_offset + MAC_REG_RSPINF_A_24);
|
||||
/* RSPINF_a_36 */
|
||||
calculate_ofdmr_parameter(CARDwGetOFDMControlRate((void *)priv,
|
||||
RATE_36M),
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
RATE_36M),
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
iowrite16(MAKEWORD(byTxRate, byRsvTime), priv->port_offset + MAC_REG_RSPINF_A_36);
|
||||
/* RSPINF_a_48 */
|
||||
calculate_ofdmr_parameter(CARDwGetOFDMControlRate((void *)priv,
|
||||
RATE_48M),
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
RATE_48M),
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
iowrite16(MAKEWORD(byTxRate, byRsvTime), priv->port_offset + MAC_REG_RSPINF_A_48);
|
||||
/* RSPINF_a_54 */
|
||||
calculate_ofdmr_parameter(CARDwGetOFDMControlRate((void *)priv,
|
||||
RATE_54M),
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
RATE_54M),
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
iowrite16(MAKEWORD(byTxRate, byRsvTime), priv->port_offset + MAC_REG_RSPINF_A_54);
|
||||
/* RSPINF_a_72 */
|
||||
calculate_ofdmr_parameter(CARDwGetOFDMControlRate((void *)priv,
|
||||
RATE_54M),
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
RATE_54M),
|
||||
bb_type,
|
||||
&byTxRate,
|
||||
&byRsvTime);
|
||||
iowrite16(MAKEWORD(byTxRate, byRsvTime), priv->port_offset + MAC_REG_RSPINF_A_72);
|
||||
/* Set to Page0 */
|
||||
VT6655_MAC_SELECT_PAGE0(priv->port_offset);
|
||||
|
@ -19,7 +19,6 @@
|
||||
#define DEFAULT_MSDU_LIFETIME_RES_64us 8000 /* 64us */
|
||||
#define DEFAULT_MGN_LIFETIME_RES_64us 125 /* 64us */
|
||||
|
||||
|
||||
/*--------------------- Export Definitions -------------------------*/
|
||||
|
||||
/*--------------------- Export Variables --------------------------*/
|
||||
|
@ -232,9 +232,7 @@ struct gb_fw_download_fetch_firmware_request {
|
||||
__le32 size;
|
||||
} __packed;
|
||||
|
||||
struct gb_fw_download_fetch_firmware_response {
|
||||
__u8 data[0];
|
||||
} __packed;
|
||||
/* gb_fw_download_fetch_firmware_response contains no other data */
|
||||
|
||||
/* firmware download release firmware request */
|
||||
struct gb_fw_download_release_firmware_request {
|
||||
@ -414,9 +412,7 @@ struct gb_bootrom_get_firmware_request {
|
||||
__le32 size;
|
||||
} __packed;
|
||||
|
||||
struct gb_bootrom_get_firmware_response {
|
||||
__u8 data[0];
|
||||
} __packed;
|
||||
/* gb_bootrom_get_firmware_response contains no other data */
|
||||
|
||||
/* Bootrom protocol Ready to boot request */
|
||||
struct gb_bootrom_ready_to_boot_request {
|
||||
|
Loading…
Reference in New Issue
Block a user