From 238f62cf18e6ead7d4cdd092e49307f29874802d Mon Sep 17 00:00:00 2001 From: Ondrej Jirman Date: Mon, 15 Jun 2020 12:33:09 +0200 Subject: [PATCH] 8723cs: Port to Linux 5.8 --- core/rtw_security.c | 10 +++++----- include/rtw_security.h | 2 +- os_dep/linux/ioctl_cfg80211.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/core/rtw_security.c b/core/rtw_security.c index 8dac771..d471b45 100644 --- a/core/rtw_security.c +++ b/core/rtw_security.c @@ -2281,7 +2281,7 @@ BIP_exit: #ifndef PLATFORM_FREEBSD /* compress 512-bits */ -static int sha256_compress(struct sha256_state *md, unsigned char *buf) +static int sha256_compress(struct rtw_sha256_state *md, unsigned char *buf) { u32 S[8], W[64], t0, t1; u32 t; @@ -2323,7 +2323,7 @@ static int sha256_compress(struct sha256_state *md, unsigned char *buf) } /* Initialize the hash state */ -static void sha256_init(struct sha256_state *md) +static void sha256_init(struct rtw_sha256_state *md) { md->curlen = 0; md->length = 0; @@ -2344,7 +2344,7 @@ static void sha256_init(struct sha256_state *md) @param inlen The length of the data (octets) @return CRYPT_OK if successful */ -static int sha256_process(struct sha256_state *md, unsigned char *in, +static int sha256_process(struct rtw_sha256_state *md, unsigned char *in, unsigned long inlen) { unsigned long n; @@ -2385,7 +2385,7 @@ static int sha256_process(struct sha256_state *md, unsigned char *in, @param out [out] The destination of the hash (32 bytes) @return CRYPT_OK if successful */ -static int sha256_done(struct sha256_state *md, unsigned char *out) +static int sha256_done(struct rtw_sha256_state *md, unsigned char *out) { int i; @@ -2437,7 +2437,7 @@ static int sha256_done(struct sha256_state *md, unsigned char *out) static int sha256_vector(size_t num_elem, u8 *addr[], size_t *len, u8 *mac) { - struct sha256_state ctx; + struct rtw_sha256_state ctx; size_t i; sha256_init(&ctx); diff --git a/include/rtw_security.h b/include/rtw_security.h index 5820a55..a8a24d7 100644 --- a/include/rtw_security.h +++ b/include/rtw_security.h @@ -238,7 +238,7 @@ struct security_priv #endif /* DBG_SW_SEC_CNT */ }; -struct sha256_state { +struct rtw_sha256_state { u64 length; u32 state[8], curlen; u8 buf[64]; diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 302947c..e5e0592 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -5662,6 +5662,33 @@ exit: return ret; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)) + +static void +cfg80211_rtw_update_mgmt_frame_registrations(struct wiphy *wiphy, + struct wireless_dev *wdev, + struct mgmt_frame_regs *upd) +{ + struct net_device *ndev = wdev_to_ndev(wdev); + struct rtw_wdev_priv *pwdev_priv; + _adapter *adapter; + + if (ndev == NULL) + return; + + adapter = (_adapter *)rtw_netdev_priv(ndev); + pwdev_priv = adapter_wdev_data(adapter); + +#ifdef CONFIG_DEBUG_CFG80211 + RTW_INFO(FUNC_ADPT_FMT" stypes:%x\n", FUNC_ADPT_ARG(adapter), + upd->interface_stypes); +#endif + + /* not implemented, see bellow */ +} + +#else + static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy, #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) struct wireless_dev *wdev, @@ -5706,6 +5733,8 @@ exit: return; } +#endif + #if defined(CONFIG_TDLS) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) static int cfg80211_rtw_tdls_mgmt(struct wiphy *wiphy, struct net_device *ndev, @@ -6615,7 +6644,11 @@ static struct cfg80211_ops rtw_cfg80211_ops = { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) || defined(COMPAT_KERNEL_RELEASE) .mgmt_tx = cfg80211_rtw_mgmt_tx, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)) + .update_mgmt_frame_registrations = cfg80211_rtw_update_mgmt_frame_registrations, +#else .mgmt_frame_register = cfg80211_rtw_mgmt_frame_register, +#endif #elif (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,34) && LINUX_VERSION_CODE<=KERNEL_VERSION(2,6,35)) .action = cfg80211_rtw_mgmt_tx, #endif