Compare commits

...

10 commits

Author SHA1 Message Date
dmpstr 8086b4e7c0 a34x: defconfig: Always permissive 2024-06-25 12:37:08 +08:00
dmpstr 386815debe a34x: defconfig: regen 2024-06-25 12:34:39 +08:00
Mohammad Afaneh aaf36b2803 selinux: Add togglable selinux boot status 2024-06-25 12:12:52 +08:00
Fede2782 a4195b3e8b
a34x: defconfig: disable Knox features 2024-04-28 17:35:48 +02:00
Fede2782 b3cfd33cd4
build: add build script
Use latest Clang 17
2024-04-28 17:35:46 +02:00
Fede2782 6059e0c826
drivers: connectivity: build everything in kernel image 2024-04-28 17:35:43 +02:00
Fede2782 a1e16881b9
drivers: mediatek: connectivity: fix duplcate symbol error
ld.lld: error: duplicate symbol: hmac_sha256
>>> defined at rpmb-mtk.c:211 (/home/federico/Projects/android_kernel_samsung_a34x/out/../drivers/char/rpmb/rpmb-mtk.c:211)
>>>            drivers/char/rpmb/rpmb-mtk.o:(hmac_sha256) in archive built-in.a
>>> defined at sha256.c:136 (/home/federico/Projects/android_kernel_samsung_a34x/out/../drivers/misc/mediatek/connectivity/wlan/core/gen4m/wpa_supp/src/crypto/sha256.c:136)
2024-04-28 17:35:40 +02:00
Fede2782 a5699f57b3
drivers: mediatek: connectivity: remove Samsung custom duplicate driver
Already present in core/gen4m
2024-04-28 17:35:37 +02:00
Fede2782 5824aa28ce
a34x: defconfig: enable Built-In connectivity drivers 2024-04-28 17:35:35 +02:00
Fede2782 437ee1b02a
drivers: mediatek: connectivity: Various changes
connectivity: Add an option to build wlan driver in kernel

connectivity: bt: Allow platform to be overridden when building inline

connectivity: gen4m: Fix built-in config detection

connectivity: bt: Don't define module init/exit if built-in to kernel

connectivity: {connfem,gps}: Build modules into kernel

connectivity: Remove autoconf checks

drivers: misc/mediatek: connectivity: wlan-gen4m: Change logging levels

drivers: misc/mtk: connectivity-wlan: Queue delayed work on power efficient wq

connectivity: mtk-conninfra: Use g_evt_ctx pointer to avoid errors
2024-04-28 17:35:32 +02:00
30 changed files with 87 additions and 273 deletions

View file

@ -4,12 +4,12 @@
#
#
# Compiler: Android (6443078 based on r383902) clang version 11.0.1 (https://android.googlesource.com/toolchain/llvm-project b397f81060ce6d701042b782172ed13bee898b79)
# Compiler: Android (10087095, +pgo, +bolt, +lto, -mlgo, based on r487747c) clang version 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362)
#
CONFIG_GCC_VERSION=0
CONFIG_CC_IS_CLANG=y
CONFIG_LD_IS_LLD=y
CONFIG_CLANG_VERSION=110001
CONFIG_CLANG_VERSION=170002
CONFIG_CC_HAS_ASM_GOTO=y
CONFIG_TOOLS_SUPPORT_RELR=y
CONFIG_IRQ_WORK=y
@ -448,12 +448,7 @@ CONFIG_KUSER_HELPERS=y
#
# Hypervisor
#
CONFIG_UH=y
CONFIG_UH_DEBUG=y
CONFIG_RKP=y
CONFIG_KDP=y
CONFIG_KDP_CRED=y
CONFIG_KDP_NS=y
# CONFIG_UH is not set
#
# Power management options
@ -1887,9 +1882,9 @@ CONFIG_MTK_COMBO_CHIP_CONSYS_6877=y
CONFIG_MTK_COMBO_CHIP="CONSYS_6877"
CONFIG_MTK_COMBO_PLAT_PATH=""
# CONFIG_MTK_COMBO_COMM is not set
# CONFIG_MTK_COMBO_BT is not set
CONFIG_MTK_COMBO_BT=y
# CONFIG_MTK_COMBO_ANT is not set
# CONFIG_MTK_COMBO_BT_HCI is not set
CONFIG_MTK_COMBO_BT_HCI=y
CONFIG_MTK_COMBO_GPS=y
CONFIG_MTK_COMBO_WIFI=y
# CONFIG_MTK_PASSPOINT_R1_SUPPORT is not set
@ -1905,8 +1900,10 @@ CONFIG_MTK_FMRADIO=y
CONFIG_MTK_FM_CHIP="MT6635_FM"
# CONFIG_MTK_FM_50KHZ_SUPPORT is not set
# CONFIG_MTK_MERGE_INTERFACE_SUPPORT is not set
CONFIG_MTK_CONNFEM=y
# CONFIG_MTK_CONN_MT3337_CHIP_SUPPORT is not set
CONFIG_MTK_CONNSYS_DEDICATED_LOG_PATH=y
CONFIG_WLAN_DRV_BUILD_IN=y
CONFIG_MTK_CONN_MD=y
# CONFIG_NFC_CHIP_SUPPORT is not set
CONFIG_MTK_NFC_CLKBUF_ENABLE=y
@ -5310,7 +5307,6 @@ CONFIG_SEC_VIBRATOR=y
# Samsung STI Options
#
CONFIG_SEC_STI=y
CONFIG_SEC_AUTO_INPUT=y
CONFIG_SEC_INPUT_BOOSTER=y
# CONFIG_SEC_INPUT_BOOSTER_MODE is not set
# CONFIG_SEC_INPUT_BOOSTER_QC is not set
@ -5758,6 +5754,8 @@ CONFIG_SECURITY_SELINUX=y
# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
# CONFIG_SECURITY_SELINUX_DISABLE is not set
CONFIG_SECURITY_SELINUX_DEVELOP=y
# CONFIG_SECURITY_SELINUX_ALWAYS_ENFORCE is not set
CONFIG_SECURITY_SELINUX_ALWAYS_PERMISSIVE=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0
CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9
@ -5785,34 +5783,14 @@ CONFIG_DEFAULT_SECURITY="selinux"
# Memory initialization
#
CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y
CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y
CONFIG_INIT_STACK_NONE=y
# CONFIG_INIT_STACK_ALL_PATTERN is not set
# CONFIG_INIT_STACK_ALL_ZERO is not set
# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set
# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
CONFIG_SECURITY_DEFEX=y
# CONFIG_DEFEX_KERNEL_ONLY is not set
# CONFIG_SECURITY_DEFEX_USER is not set
CONFIG_PROCA=y
# CONFIG_PROCA_GKI_10 is not set
CONFIG_PROCA_S_OS=y
CONFIG_GAF=y
# CONFIG_GAF_V3 is not set
# CONFIG_GAF_V4 is not set
# CONFIG_GAF_V5 is not set
CONFIG_GAF_V6=y
CONFIG_SECURITY_DSMS=y
CONFIG_FIVE=y
# CONFIG_FIVE_GKI_10 is not set
# CONFIG_FIVE_GKI_20 is not set
# CONFIG_FIVE_DEBUG is not set
CONFIG_FIVE_CERT_USER="x509_five_user.der"
CONFIG_FIVE_DEFAULT_HASH_SHA1=y
# CONFIG_FIVE_DEFAULT_HASH_SHA256 is not set
# CONFIG_FIVE_DEFAULT_HASH_SHA512 is not set
CONFIG_FIVE_DEFAULT_HASH="sha1"
CONFIG_FIVE_TRUSTED_KEYRING=y
# CONFIG_SECURITY_DEFEX is not set
# CONFIG_GAF is not set
# CONFIG_SECURITY_DSMS is not set
# CONFIG_FIVE is not set
CONFIG_CRYPTO=y
#

10
build_kernel.sh Normal file → Executable file
View file

@ -1,11 +1,13 @@
#!/bin/bash
export PATH=$(pwd)/toolchain/clang/host/linux-x86/clang-r383902/bin:$PATH
export CROSS_COMPILE=$(pwd)/toolchain/clang/host/linux-x86/clang-r383902/bin/aarch64-linux-gnu-
export CC=$(pwd)/toolchain/clang/host/linux-x86/clang-r383902/bin/clang
export PATH=$(pwd)/toolchain/clang/host/linux-x86/clang-r487747c/bin:$PATH
export CROSS_COMPILE=$(pwd)/toolchain/clang/host/linux-x86/clang-r487747c/bin/aarch64-linux-gnu-
export CC=$(pwd)/toolchain/clang/host/linux-x86/clang-r487747c/bin/clang
export CLANG_TRIPLE=aarch64-linux-gnu-
export ARCH=arm64
export PLATFORM_VERSION=12
export PLATFORM_VERSION=14
export TARGET_SOC=mt6877
export TARGET_BUILD_VARIANT=user
export KCFLAGS=-w
export CONFIG_SECTION_MISMATCH_WARN_ONLY=y

View file

@ -457,3 +457,11 @@ config MTK_CONNSYS_DEDICATED_LOG_PATH
from connsys (by EMI or other specific path)
2. The scope may include (but not limited) Wi-Fi firmware log,
BT firmware log, GPS firmware log etc.
config WLAN_DRV_BUILD_IN
bool "Build Wlan module in kernel"
help
This will build the wlan driver and the corresponding componenets
into the kernel.
If unsure say n

View file

@ -129,7 +129,7 @@ ccflags-y += -Werror
$(MOD_NAME)-objs := $(CFILES:.c=.o)
obj-m += $(MOD_NAME).o
obj-y += $(MOD_NAME).o
ifneq ($(TARGET_BUILD_VARIANT), user)
ccflags-y += -DBTMTK_DEBUG_SOP

View file

@ -71,7 +71,7 @@ ccflags-y += -I$(src)/include/ -I$(src)/
$(MOD_NAME)-objs := $(CFILES:.c=.o)
obj-m += $(MOD_NAME).o
obj-y += $(MOD_NAME).o
#VPATH = /opt/toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux

View file

@ -18,16 +18,6 @@ endif
# Force build fail on modpost warning
KBUILD_MODPOST_FAIL_ON_WARNINGS := y
# platform
ifeq ($(CONFIG_WLAN_DRV_BUILD_IN),y)
$(info build-in mode!)
$(info _MTK_BT_CHIP = $(_MTK_BT_CHIP))
# _MTK_BT_CHIP comes from conninfra setting
BT_PLATFORM = $(patsubst MTK_CONSYS_MT%,%,$(strip $(_MTK_BT_CHIP)))
endif
$(info $(LOG_TAG) TARGET_BUILD_VARIANT = $(TARGET_BUILD_VARIANT))
ifeq ("$(TARGET_BUILD_VARIANT)","user")
ccflags-y += -D FW_LOG_DEFAULT_ON=0

View file

@ -4137,8 +4137,10 @@ void __exit main_driver_exit(void)
main_exit();
}
#ifndef MTK_WCN_REMOVE_KERNEL_MODULE
module_init(main_driver_init);
module_exit(main_driver_exit);
#endif
/**
* Module Common Information

View file

@ -42,7 +42,7 @@ ccflags-y += -I$(KO_CODE_PATH)/include
# ConnFem Module
###############################################################################
MODULE_NAME := connfem
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
$(MODULE_NAME)-objs += connfem_module.o
$(MODULE_NAME)-objs += connfem_api.o

View file

@ -40,7 +40,7 @@ ccflags-y += -I$(src)/include
# ConnFem Module
###############################################################################
MODULE_NAME := connfem
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
$(MODULE_NAME)-objs += connfem_module.o
$(MODULE_NAME)-objs += connfem_api.o

View file

@ -74,7 +74,7 @@
*/
struct work_struct rst_worker;
struct msg_thread_ctx g_ctx;
struct msg_thread_ctx g_evt_ctx;
typedef enum {
INFRA_TEST_OPID_1 = 0,
@ -108,10 +108,10 @@ int opfunc_test_2(struct msg_op_data *op)
static void msg_thrd_handler(struct work_struct *work)
{
msg_thread_send_1(&g_ctx, INFRA_TEST_OPID_2, 2011);
msg_thread_send_1(&g_evt_ctx, INFRA_TEST_OPID_2, 2011);
osal_sleep_ms(5);
msg_thread_send_wait_1(&g_ctx, INFRA_TEST_OPID_2, 0, 2022);
msg_thread_send_wait_1(&g_ctx, INFRA_TEST_OPID_2, 0, 2033);
msg_thread_send_wait_1(&g_evt_ctx, INFRA_TEST_OPID_2, 0, 2022);
msg_thread_send_wait_1(&g_evt_ctx, INFRA_TEST_OPID_2, 0, 2033);
}
int msg_evt_test(void)
@ -120,7 +120,7 @@ int msg_evt_test(void)
INIT_WORK(&rst_worker, msg_thrd_handler);
ret = msg_thread_init(&g_ctx, "TestThread",
ret = msg_thread_init(&g_evt_ctx, "TestThread",
test_op_func, INFRA_TEST_OPID_MAX);
if (ret) {
pr_err("inti msg_thread fail ret=[%d]\n", ret);
@ -129,20 +129,20 @@ int msg_evt_test(void)
schedule_work(&rst_worker);
msg_thread_send_wait_1(&g_ctx, INFRA_TEST_OPID_2, 0, 1011);
msg_thread_send_wait_1(&g_evt_ctx, INFRA_TEST_OPID_2, 0, 1011);
//osal_sleep_ms(10);
msg_thread_send_1(&g_ctx, INFRA_TEST_OPID_2, 1022);
msg_thread_send_1(&g_evt_ctx, INFRA_TEST_OPID_2, 1022);
osal_sleep_ms(10);
msg_thread_send_wait_1(&g_ctx, INFRA_TEST_OPID_2, 0, 1033);
msg_thread_send_wait_1(&g_evt_ctx, INFRA_TEST_OPID_2, 0, 1033);
osal_sleep_ms(1000);
pr_info("<<<<<>>>>>>> freeOpq=[%u][%u] ActiveQ=[%u][%u]",
g_ctx.free_op_q.write, g_ctx.free_op_q.read,
g_ctx.active_op_q.write, g_ctx.active_op_q.read);
g_evt_ctx.free_op_q.write, g_evt_ctx.free_op_q.read,
g_evt_ctx.active_op_q.write, g_evt_ctx.active_op_q.read);
osal_sleep_ms(500);
ret = msg_thread_deinit(&g_ctx);
ret = msg_thread_deinit(&g_evt_ctx);
pr_info("[%s] msg_thread_deinit\n", __func__);
pr_info("[%s] test PASS\n", __func__);

View file

@ -52,7 +52,7 @@ endif
# Makefile generated by Mediatek
# fm support
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
ifeq ($(CFG_FM_CHIP),)
FM_CHIP := mt6631_6635

View file

@ -66,7 +66,7 @@ ccflags-y += -I$(srctree)/drivers/devfreq
###############################################################################
MODULE_NAME := gps_drv
obj-m += $(MODULE_NAME).o
obj-o += $(MODULE_NAME).o
GPS_DRV_CONTROL_LNA := n
GPS_DL_SUPPORT := n

View file

@ -14,11 +14,6 @@
$(warning build in gps_dl)
ifeq ($(CONFIG_MTK_GPS_SUPPORT), y)
ifeq ($(AUTOCONF_H),)
$(error AUTOCONF_H is not defined)
endif
ccflags-y += -imacros $(AUTOCONF_H)
ifndef TOP
TOP := $(srctree)/..
endif
@ -62,7 +57,7 @@ KBUILD_MODPOST_FAIL_ON_WARNINGS := y
###############################################################################
MODULE_NAME := gps_drv_dl_$(GPS_PLATFORM)
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
GPS_DRV_CONTROL_LNA := n
GPS_DL_HAS_MOCK := n

View file

@ -14,11 +14,6 @@
$(warning build in gps_dl)
ifeq ($(CONFIG_MTK_GPS_SUPPORT), y)
ifeq ($(AUTOCONF_H),)
$(error AUTOCONF_H is not defined)
endif
ccflags-y += -imacros $(AUTOCONF_H)
ifndef TOP
TOP := $(srctree)/..
endif
@ -62,7 +57,7 @@ KBUILD_MODPOST_FAIL_ON_WARNINGS := y
###############################################################################
GPS_PLATFORM := v010
MODULE_NAME := gps_drv_dl_$(GPS_PLATFORM)
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
GPS_DRV_CONTROL_LNA := n
GPS_DL_HAS_MOCK := n

View file

@ -14,11 +14,6 @@
$(warning build in gps_dl)
ifeq ($(CONFIG_MTK_GPS_SUPPORT), y)
ifeq ($(AUTOCONF_H),)
$(error AUTOCONF_H is not defined)
endif
ccflags-y += -imacros $(AUTOCONF_H)
ifndef TOP
TOP := $(srctree)/..
endif
@ -62,7 +57,7 @@ KBUILD_MODPOST_FAIL_ON_WARNINGS := y
###############################################################################
export GPS_PLATFORM := v030
MODULE_NAME := gps_drv_dl_$(GPS_PLATFORM)
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
GPS_DRV_CONTROL_LNA := n
GPS_DL_HAS_MOCK := n

View file

@ -14,11 +14,6 @@
$(warning build in gps_dl)
ifeq ($(CONFIG_MTK_GPS_SUPPORT), y)
ifeq ($(AUTOCONF_H),)
$(error AUTOCONF_H is not defined)
endif
ccflags-y += -imacros $(AUTOCONF_H)
ifndef TOP
TOP := $(srctree)/..
endif
@ -62,7 +57,7 @@ KBUILD_MODPOST_FAIL_ON_WARNINGS := y
###############################################################################
export GPS_PLATFORM := v050
MODULE_NAME := gps_drv_dl_$(GPS_PLATFORM)
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
GPS_DRV_CONTROL_LNA := n
GPS_DL_HAS_MOCK := n

View file

@ -33,7 +33,7 @@ ccflags-y += -I$(srctree)/drivers/misc/mediatek/connectivity/power_throttling
###############################################################################
GPS_PWR_TEST_SUPPORT :=n
MODULE_NAME := gps_pwr
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
$(MODULE_NAME)-objs += gps_pwr.o
ifeq ($(GPS_PWR_TEST_SUPPORT),y)

View file

@ -33,7 +33,7 @@ ccflags-y += -I$(srctree)/drivers/misc/mediatek/connectivity/power_throttling
###############################################################################
GPS_PWR_TEST_SUPPORT :=n
MODULE_NAME := gps_pwr
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
$(MODULE_NAME)-objs += gps_pwr.o
ifeq ($(GPS_PWR_TEST_SUPPORT),y)

View file

@ -33,7 +33,7 @@ ccflags-y += -I$(srctree)/drivers/misc/mediatek/conn_scp/conap_scp
###############################################################################
GPS2SCP_TEST_SUPPORT :=n
MODULE_NAME := gps_scp
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
$(MODULE_NAME)-objs += gps2scp.o
ifeq ($(GPS2SCP_TEST_SUPPORT),y)

View file

@ -33,7 +33,7 @@ ccflags-y += -I$(srctree)/drivers/misc/mediatek/conn_scp/conap_scp
###############################################################################
GPS2SCP_TEST_SUPPORT :=n
MODULE_NAME := gps_scp
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
$(MODULE_NAME)-objs += gps2scp.o
ifeq ($(GPS2SCP_TEST_SUPPORT),y)

View file

@ -13,11 +13,6 @@
# Necessary Check
ifeq ($(CONFIG_MTK_GPS_SUPPORT), y)
ifeq ($(AUTOCONF_H),)
$(error AUTOCONF_H is not defined)
endif
ccflags-y += -imacros $(AUTOCONF_H)
ifndef TOP
TOP := $(srctree)/..
endif
@ -62,7 +57,7 @@ ccflags-y += -I$(srctree)/drivers/misc/mediatek/connectivity/common
###############################################################################
MODULE_NAME := gps_drv_stp
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
GPS_DRV_CONTROL_LNA := y
GPS_SRC_FOLDER := $(srctree)/drivers/misc/mediatek/connectivity/gps/gps_stp

View file

@ -61,7 +61,7 @@ ccflags-y += -I$(srctree)/drivers/misc/mediatek/connectivity/common
###############################################################################
MODULE_NAME := gps_drv_stp
obj-m += $(MODULE_NAME).o
obj-y += $(MODULE_NAME).o
GPS_DRV_CONTROL_LNA := y
GPS_SRC_FOLDER := $(TOP)/vendor/mediatek/kernel_modules/connectivity/gps/gps_stp

View file

@ -70,7 +70,6 @@ $(MODULE_NAME)-objs += wmt_cdev_wifi.o
ifneq ($(CONFIG_MTK_CONNSYS_DEDICATED_LOG_PATH),)
$(MODULE_NAME)-objs += fw_log_wifi.o
$(MODULE_NAME)-objs += fw_log_ics.o
$(MODULE_NAME)-objs += wlan_ring.o
endif
ifeq ($(CONNAC_VER), 2_0)
$(MODULE_NAME)-objs += wifi_pwr_on.o

View file

@ -1,143 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2021 MediaTek Inc.
*/
#include "ring.h"
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/bug.h>
void wlan_ring_init(void *base, unsigned int max_size, unsigned int read,
unsigned int write, struct ring *ring)
{
WARN_ON(!base);
/* making sure max_size is power of 2 */
WARN_ON(!max_size || (max_size & (max_size - 1)));
/* making sure write largger than read */
WARN_ON(read > write);
ring->base = base;
ring->read = read;
ring->write = write;
ring->max_size = max_size;
}
void wlan_ring_dump(const char *title, struct ring *ring)
{
pr_info("[%s] ring:{write=%d, read=%d, max_size=%d}\n",
title, ring->write, ring->read, ring->max_size);
}
void wlan_ring_dump_segment(const char *title, struct ring_segment *seg)
{
pr_info("[%s] seg:{ring_pt=0x%p, data_pos=%d, sz=%d, remain=%d}\n",
title, seg->ring_pt, seg->data_pos,
seg->sz, seg->remain);
}
/*
* Function prepares the ring_segment and
* returns the number of valid bytes for read.
*/
unsigned int wlan_ring_read_prepare(unsigned int sz,
struct ring_segment *seg,
struct ring *ring)
{
unsigned int wt = ring->write;
unsigned int rd = ring->read;
memset(seg, 0, sizeof(struct ring_segment));
if (sz > wt - rd)
sz = wt - rd;
seg->remain = sz;
/* wlan_ring_dump(__func__, ring); */
/* wlan_ring_dump_segment(__func__, seg); */
return seg->remain;
}
/*
* Function prepares the ring_segment and
* returns the number of bytes available for write.
*/
unsigned int wlan_ring_write_prepare(unsigned int sz,
struct ring_segment *seg,
struct ring *ring)
{
unsigned int wt = ring->write;
unsigned int rd = ring->read;
memset(seg, 0, sizeof(struct ring_segment));
if (sz > ring->max_size - (wt - rd))
sz = ring->max_size - (wt - rd);
seg->remain = sz;
/* wlan_ring_dump(__func__, ring); */
/* wlan_ring_dump_segment(__func__, seg); */
return seg->remain;
}
unsigned int wlan_ring_overwrite_prepare(unsigned int sz, struct ring_segment *seg,
struct ring *ring)
{
unsigned int wt = ring->write;
unsigned int rd = ring->read;
memset(seg, 0, sizeof(struct ring_segment));
if (sz > ring->max_size - (wt - rd))
ring->read += sz - (ring->max_size - (wt - rd));
seg->remain = sz;
/* wlan_ring_dump(__func__, ring); */
/* wlan_ring_dump_segment(__func__, seg); */
return seg->remain;
}
void __wlan_ring_segment_prepare(unsigned int from, unsigned int sz,
struct ring_segment *seg,
struct ring *ring)
{
unsigned int ring_pos = from & (ring->max_size - 1);
seg->ring_pt = ring->base + ring_pos;
seg->data_pos = (seg->sz ? seg->data_pos + seg->sz : 0);
if (ring_pos + sz <= ring->max_size)
seg->sz = sz;
else
seg->sz = ring->max_size - ring_pos;
seg->remain -= seg->sz;
/* wlan_ring_dump(__func__, ring); */
/* wlan_ring_dump_segment(__func__, seg); */
}
void _wlan_ring_segment_prepare(unsigned int from,
struct ring_segment *seg,
struct ring *ring)
{
__wlan_ring_segment_prepare(from, seg->remain, seg, ring);
}
void _wlan_ring_segment_prepare_item(unsigned int from,
struct ring_segment *seg,
struct ring *ring)
{
unsigned int size;
size = (seg->remain ? 1 : 0);
__wlan_ring_segment_prepare(from, size, seg, ring);
}
void _wlan_ring_read_commit(struct ring_segment *seg, struct ring *ring)
{
ring->read += seg->sz;
/* wlan_ring_dump(__func__, ring); */
/* wlan_ring_dump_segment(__func__, seg); */
}
void _wlan_ring_write_commit(struct ring_segment *seg, struct ring *ring)
{
ring->write += seg->sz;
/* wlan_ring_dump(__func__, ring); */
/* wlan_ring_dump_segment(__func__, seg); */
}

View file

@ -403,7 +403,7 @@ else
ccflags-y += -DCFG_WIFI_IP_SET=1
endif
ifneq ($(filter MTK_WCN_REMOVE_KERNEL_MODULE,$(KBUILD_SUBDIR_CCFLAGS)),)
ifeq ($(CONFIG_WLAN_DRV_BUILD_IN),y)
ccflags-y += -DCFG_BUILT_IN_DRIVER=1
else
ccflags-y += -DCFG_BUILT_IN_DRIVER=0

View file

@ -110,14 +110,14 @@ extern uint32_t get_wifi_standalone_log_mode(void);
#define DBG_CLASS_MASK BITS(0, 7)
#define DBG_LOG_LEVEL_DEFAULT \
(DBG_CLASS_ERROR | \
(DBG_CLASS_ERROR)
#define DBG_LOG_LEVEL_MORE \
(DBG_LOG_LEVEL_DEFAULT | \
DBG_CLASS_TRACE | \
DBG_CLASS_WARN | \
DBG_CLASS_STATE | \
DBG_CLASS_EVENT | \
DBG_CLASS_INFO)
#define DBG_LOG_LEVEL_MORE \
(DBG_LOG_LEVEL_DEFAULT | \
DBG_CLASS_TRACE)
#define DBG_LOG_LEVEL_EXTREME \
(DBG_LOG_LEVEL_MORE | \
DBG_CLASS_LOUD)

View file

@ -1921,7 +1921,7 @@ static void wlanSetMulticastList(struct net_device *prDev)
DBGLOG(INIT, TRACE, "flags: 0x%x\n", prDev->flags);
prDev->flags |= (IFF_MULTICAST | IFF_ALLMULTI);
gPrDev = prDev;
schedule_delayed_work(&workq, 0);
queue_delayed_work(system_power_efficient_wq, &workq, 0);
}
/* FIXME: Since we cannot sleep in the wlanSetMulticastList, we arrange

View file

@ -132,7 +132,7 @@ hmac_sha256_vector(const u8 *key, size_t key_len, size_t num_elem,
* Returns: 0 on success, -1 on failure
*/
int
hmac_sha256(const u8 *key, size_t key_len, const u8 *data, size_t data_len,
hmac_sha256_sm(const u8 *key, size_t key_len, const u8 *data, size_t data_len,
u8 *mac) {
return hmac_sha256_vector(key, key_len, 1, &data, &data_len, mac);
}
@ -172,7 +172,7 @@ void caculate_pmkid(u8 *key, u8 *IMAC, u8 *RMAC, u8 *serviceName, u8 *pmkid)
os_memcpy(pmkIdSrc+post, RMAC, 6);
post += 6;
os_memcpy(pmkIdSrc+post, aucServiceID, 6);
hmac_sha256(key, 32, pmkIdSrc, pmkIdSrcLen, pmkid);
hmac_sha256_sm(key, 32, pmkIdSrc, pmkIdSrcLen, pmkid);
os_free(pmkIdSrc);
}

View file

@ -71,6 +71,20 @@ config SECURITY_SELINUX_DEVELOP
can interactively toggle the kernel between enforcing mode and
permissive mode (if permitted by the policy) via /selinux/enforce.
config SECURITY_SELINUX_ALWAYS_ENFORCE
bool "NSA SELinux Always Enforcing"
depends on SECURITY_SELINUX_DEVELOP
default n
help
This option will prevent anything from setting SELinux to permissive.
config SECURITY_SELINUX_ALWAYS_PERMISSIVE
bool "NSA SELinux Always Permissive"
depends on SECURITY_SELINUX_DEVELOP
default n
help
This option will prevent anything from setting SELinux to enforcing.
config SECURITY_SELINUX_AVC_STATS
bool "NSA SELinux AVC Statistics"
depends on SECURITY_SELINUX

View file

@ -160,27 +160,16 @@ static ssize_t sel_write_enforce(struct file *file, const char __user *buf,
new_value = !!new_value;
old_value = enforcing_enabled(state);
// [ SEC_SELINUX_PORTING_COMMON
#ifdef CONFIG_ALWAYS_ENFORCE
// If build is user build and enforce option is set, selinux is always enforcing
#ifdef CONFIG_SECURITY_SELINUX_ALWAYS_ENFORCE
// If always enforce option is set, selinux is always enforcing
new_value = 1;
length = avc_has_perm(&selinux_state,
current_sid(), SECINITSID_SECURITY,
SECCLASS_SECURITY, SECURITY__SETENFORCE,
NULL);
audit_log(audit_context(), GFP_KERNEL, AUDIT_MAC_STATUS,
"enforcing=%d old_enforcing=%d auid=%u ses=%u"
" enabled=%d old-enabled=%d lsm=selinux res=1",
new_value, selinux_enforcing,
from_kuid(&init_user_ns, audit_get_loginuid(current)),
audit_get_sessionid(current),
selinux_enabled, selinux_enabled);
enforcing_set(state, new_value);
avc_ss_reset(state->avc, 0);
selnl_notify_setenforce(new_value);
selinux_status_update_setenforce(state, new_value);
#else
if (new_value != selinux_enforcing) { // SEC_SELINUX_PORTING_COMMON Change to use RKP
#elif defined(CONFIG_SECURITY_SELINUX_ALWAYS_PERMISSIVE)
// If always permissive option is set, selinux is always permissive
new_value = 0;
#endif
if (new_value != old_value) {
length = avc_has_perm(&selinux_state,
current_sid(), SECINITSID_SECURITY,
SECCLASS_SECURITY, SECURITY__SETENFORCE,