mirror of
https://github.com/amazingfate/rtl8723ds.git
synced 2026-06-18 18:29:01 +01:00
rtl8723ds: Fix builds for kernel 4.14
Signed-off-by: Alexander Kaplan <alex@nextthing.co> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
@@ -669,6 +669,10 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter)
|
||||
#endif
|
||||
struct cfg80211_bss *bss = NULL;
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
|
||||
struct cfg80211_roam_info roam_info ={};
|
||||
#endif
|
||||
|
||||
RTW_INFO(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter));
|
||||
if (pwdev->iftype != NL80211_IFTYPE_STATION
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE)
|
||||
@@ -736,7 +740,15 @@ check_bss:
|
||||
notify_channel = ieee80211_get_channel(wiphy, freq);
|
||||
#endif
|
||||
|
||||
RTW_INFO(FUNC_ADPT_FMT" call cfg80211_roamed\n", FUNC_ADPT_ARG(padapter));
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
|
||||
roam_info.bssid = cur_network->network.MacAddress;
|
||||
roam_info.req_ie = pmlmepriv->assoc_req + sizeof(struct rtw_ieee80211_hdr_3addr) + 2;
|
||||
roam_info.req_ie_len = pmlmepriv->assoc_req_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 2;
|
||||
roam_info.resp_ie = pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6;
|
||||
roam_info.resp_ie_len = pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6;
|
||||
|
||||
cfg80211_roamed(padapter->pnetdev, &roam_info, GFP_ATOMIC);
|
||||
#else
|
||||
cfg80211_roamed(padapter->pnetdev
|
||||
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE)
|
||||
, notify_channel
|
||||
@@ -747,6 +759,10 @@ check_bss:
|
||||
, pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6
|
||||
, pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6
|
||||
, GFP_ATOMIC);
|
||||
#endif /*LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)*/
|
||||
|
||||
RTW_INFO(FUNC_ADPT_FMT" call cfg80211_roamed\n", FUNC_ADPT_ARG(padapter));
|
||||
|
||||
#ifdef CONFIG_RTW_80211R
|
||||
if ((rtw_to_roam(padapter) > 0) && rtw_chk_ft_flags(padapter, RTW_FT_SUPPORTED))
|
||||
rtw_set_ft_status(padapter, RTW_FT_ASSOCIATED_STA);
|
||||
@@ -1728,7 +1744,10 @@ enum nl80211_iftype {
|
||||
#endif
|
||||
static int cfg80211_rtw_change_iface(struct wiphy *wiphy,
|
||||
struct net_device *ndev,
|
||||
enum nl80211_iftype type, u32 *flags,
|
||||
enum nl80211_iftype type,
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0))
|
||||
u32 *flags,
|
||||
#endif
|
||||
struct vif_params *params)
|
||||
{
|
||||
enum nl80211_iftype old_type;
|
||||
@@ -3783,7 +3802,11 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne
|
||||
mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP;
|
||||
strncpy(mon_ndev->name, name, IFNAMSIZ);
|
||||
mon_ndev->name[IFNAMSIZ - 1] = 0;
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(4, 11, 8))
|
||||
mon_ndev->priv_destructor = rtw_ndev_destructor;
|
||||
#else
|
||||
mon_ndev->destructor = rtw_ndev_destructor;
|
||||
#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29))
|
||||
mon_ndev->netdev_ops = &rtw_cfg80211_monitor_if_ops;
|
||||
@@ -3849,7 +3872,11 @@ static int
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
|
||||
unsigned char name_assign_type,
|
||||
#endif
|
||||
enum nl80211_iftype type, u32 *flags, struct vif_params *params)
|
||||
enum nl80211_iftype type,
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0))
|
||||
u32 *flags,
|
||||
#endif
|
||||
struct vif_params *params)
|
||||
{
|
||||
int ret = 0;
|
||||
struct wireless_dev *wdev = NULL;
|
||||
@@ -6718,7 +6745,8 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy)
|
||||
/* wiphy->flags |= WIPHY_FLAG_OFFCHAN_TX | WIPHY_FLAG_HAVE_AP_SME; */
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0))
|
||||
#if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0) && \
|
||||
LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0))
|
||||
wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN;
|
||||
#ifdef CONFIG_PNO_SUPPORT
|
||||
wiphy->max_sched_scan_ssids = MAX_PNO_LIST_COUNT;
|
||||
|
||||
+101
-115
@@ -552,6 +552,7 @@ static inline char *iwe_stream_rate_process(_adapter *padapter,
|
||||
max_rate = vht_data_rate;
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (ht_cap == _TRUE) {
|
||||
if (mcs_rate & 0x8000) /* MCS15 */
|
||||
max_rate = (bw_40MHz) ? ((short_GI) ? 300 : 270) : ((short_GI) ? 144 : 130);
|
||||
@@ -565,12 +566,12 @@ static inline char *iwe_stream_rate_process(_adapter *padapter,
|
||||
|
||||
max_rate = max_rate * 2; /* Mbps/2; */
|
||||
}
|
||||
|
||||
}
|
||||
iwe->cmd = SIOCGIWRATE;
|
||||
iwe->u.bitrate.fixed = iwe->u.bitrate.disabled = 0;
|
||||
iwe->u.bitrate.value = max_rate * 500000;
|
||||
start = iwe_stream_add_event(info, start, stop, iwe, IW_EV_PARAM_LEN);
|
||||
return start ;
|
||||
return start;
|
||||
}
|
||||
|
||||
static inline char *iwe_stream_wpa_wpa2_process(_adapter *padapter,
|
||||
@@ -6539,96 +6540,86 @@ static int rtw_dbg_port(struct net_device *dev,
|
||||
}
|
||||
break;
|
||||
case 0x78: /* IOL test */
|
||||
switch (minor_cmd) {
|
||||
#ifdef CONFIG_IOL
|
||||
switch (minor_cmd) {
|
||||
case 0x04: { /* LLT table initialization test */
|
||||
u8 page_boundary = 0xf9;
|
||||
{
|
||||
struct xmit_frame *xmit_frame;
|
||||
struct xmit_frame *xmit_frame;
|
||||
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
rtw_IOL_append_LLT_cmd(xmit_frame, page_boundary);
|
||||
|
||||
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, 500, 0))
|
||||
ret = -EPERM;
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
rtw_IOL_append_LLT_cmd(xmit_frame, page_boundary);
|
||||
|
||||
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, 500, 0))
|
||||
ret = -EPERM;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case 0x05: { /* blink LED test */
|
||||
u16 reg = 0x4c;
|
||||
u32 blink_num = 50;
|
||||
u32 blink_delay_ms = 200;
|
||||
int i;
|
||||
struct xmit_frame *xmit_frame;
|
||||
|
||||
{
|
||||
struct xmit_frame *xmit_frame;
|
||||
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < blink_num; i++) {
|
||||
#ifdef CONFIG_IOL_NEW_GENERATION
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, 0x00, 0xff);
|
||||
rtw_IOL_append_DELAY_MS_cmd(xmit_frame, blink_delay_ms);
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, 0x08, 0xff);
|
||||
rtw_IOL_append_DELAY_MS_cmd(xmit_frame, blink_delay_ms);
|
||||
#else
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, 0x00);
|
||||
rtw_IOL_append_DELAY_MS_cmd(xmit_frame, blink_delay_ms);
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, 0x08);
|
||||
rtw_IOL_append_DELAY_MS_cmd(xmit_frame, blink_delay_ms);
|
||||
#endif
|
||||
}
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, (blink_delay_ms * blink_num * 2) + 200, 0))
|
||||
ret = -EPERM;
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
for (i = 0; i < blink_num; i++) {
|
||||
#ifdef CONFIG_IOL_NEW_GENERATION
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, 0x00, 0xff);
|
||||
rtw_IOL_append_DELAY_MS_cmd(xmit_frame, blink_delay_ms);
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, 0x08, 0xff);
|
||||
rtw_IOL_append_DELAY_MS_cmd(xmit_frame, blink_delay_ms);
|
||||
#else
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, 0x00);
|
||||
rtw_IOL_append_DELAY_MS_cmd(xmit_frame, blink_delay_ms);
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, 0x08);
|
||||
rtw_IOL_append_DELAY_MS_cmd(xmit_frame, blink_delay_ms);
|
||||
#endif
|
||||
}
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, (blink_delay_ms * blink_num * 2) + 200, 0))
|
||||
ret = -EPERM;
|
||||
}
|
||||
break;
|
||||
case 0x06: { /* continuous wirte byte test */
|
||||
u16 reg = arg;
|
||||
u16 start_value = 0;
|
||||
u32 write_num = extra_arg;
|
||||
int i;
|
||||
u8 final;
|
||||
struct xmit_frame *xmit_frame;
|
||||
|
||||
{
|
||||
struct xmit_frame *xmit_frame;
|
||||
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < write_num; i++) {
|
||||
#ifdef CONFIG_IOL_NEW_GENERATION
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, i + start_value, 0xFF);
|
||||
#else
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, i + start_value);
|
||||
#endif
|
||||
}
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, 5000, 0))
|
||||
ret = -EPERM;
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < write_num; i++) {
|
||||
#ifdef CONFIG_IOL_NEW_GENERATION
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, i + start_value, 0xFF);
|
||||
#else
|
||||
rtw_IOL_append_WB_cmd(xmit_frame, reg, i + start_value);
|
||||
#endif
|
||||
}
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, 5000, 0))
|
||||
ret = -EPERM;
|
||||
|
||||
final = rtw_read8(padapter, reg);
|
||||
if (start_value + write_num - 1 == final)
|
||||
RTW_INFO("continuous IOL_CMD_WB_REG to 0x%x %u times Success, start:%u, final:%u\n", reg, write_num, start_value, final);
|
||||
else
|
||||
RTW_INFO("continuous IOL_CMD_WB_REG to 0x%x %u times Fail, start:%u, final:%u\n", reg, write_num, start_value, final);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x07: { /* continuous wirte word test */
|
||||
u16 reg = arg;
|
||||
u16 start_value = 200;
|
||||
@@ -6636,35 +6627,31 @@ static int rtw_dbg_port(struct net_device *dev,
|
||||
|
||||
int i;
|
||||
u16 final;
|
||||
struct xmit_frame *xmit_frame;
|
||||
|
||||
{
|
||||
struct xmit_frame *xmit_frame;
|
||||
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < write_num; i++) {
|
||||
#ifdef CONFIG_IOL_NEW_GENERATION
|
||||
rtw_IOL_append_WW_cmd(xmit_frame, reg, i + start_value, 0xFFFF);
|
||||
#else
|
||||
rtw_IOL_append_WW_cmd(xmit_frame, reg, i + start_value);
|
||||
#endif
|
||||
}
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, 5000, 0))
|
||||
ret = -EPERM;
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < write_num; i++) {
|
||||
#ifdef CONFIG_IOL_NEW_GENERATION
|
||||
rtw_IOL_append_WW_cmd(xmit_frame, reg, i + start_value, 0xFFFF);
|
||||
#else
|
||||
rtw_IOL_append_WW_cmd(xmit_frame, reg, i + start_value);
|
||||
#endif
|
||||
}
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, 5000, 0))
|
||||
ret = -EPERM;
|
||||
|
||||
final = rtw_read16(padapter, reg);
|
||||
if (start_value + write_num - 1 == final)
|
||||
RTW_INFO("continuous IOL_CMD_WW_REG to 0x%x %u times Success, start:%u, final:%u\n", reg, write_num, start_value, final);
|
||||
else
|
||||
RTW_INFO("continuous IOL_CMD_WW_REG to 0x%x %u times Fail, start:%u, final:%u\n", reg, write_num, start_value, final);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x08: { /* continuous wirte dword test */
|
||||
u16 reg = arg;
|
||||
u32 start_value = 0x110000c7;
|
||||
@@ -6672,37 +6659,33 @@ static int rtw_dbg_port(struct net_device *dev,
|
||||
|
||||
int i;
|
||||
u32 final;
|
||||
struct xmit_frame *xmit_frame;
|
||||
|
||||
{
|
||||
struct xmit_frame *xmit_frame;
|
||||
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < write_num; i++) {
|
||||
#ifdef CONFIG_IOL_NEW_GENERATION
|
||||
rtw_IOL_append_WD_cmd(xmit_frame, reg, i + start_value, 0xFFFFFFFF);
|
||||
#else
|
||||
rtw_IOL_append_WD_cmd(xmit_frame, reg, i + start_value);
|
||||
#endif
|
||||
}
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, 5000, 0))
|
||||
ret = -EPERM;
|
||||
|
||||
xmit_frame = rtw_IOL_accquire_xmit_frame(padapter);
|
||||
if (xmit_frame == NULL) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < write_num; i++) {
|
||||
#ifdef CONFIG_IOL_NEW_GENERATION
|
||||
rtw_IOL_append_WD_cmd(xmit_frame, reg, i + start_value, 0xFFFFFFFF);
|
||||
#else
|
||||
rtw_IOL_append_WD_cmd(xmit_frame, reg, i + start_value);
|
||||
#endif
|
||||
}
|
||||
if (_SUCCESS != rtw_IOL_exec_cmds_sync(padapter, xmit_frame, 5000, 0))
|
||||
ret = -EPERM;
|
||||
|
||||
final = rtw_read32(padapter, reg);
|
||||
if (start_value + write_num - 1 == final)
|
||||
RTW_INFO("continuous IOL_CMD_WD_REG to 0x%x %u times Success, start:%u, final:%u\n", reg, write_num, start_value, final);
|
||||
else
|
||||
RTW_INFO("continuous IOL_CMD_WD_REG to 0x%x %u times Fail, start:%u, final:%u\n", reg, write_num, start_value, final);
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif /* CONFIG_IOL */
|
||||
}
|
||||
#endif /* CONFIG_IOL */
|
||||
break;
|
||||
case 0x79: {
|
||||
/*
|
||||
@@ -6939,31 +6922,34 @@ static int rtw_dbg_port(struct net_device *dev,
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
/* 0: disable, bit(0):enable 2.4g, bit(1):enable 5g, 0x3: enable both 2.4g and 5g */
|
||||
/* default is set to enable 2.4GHZ for IOT issue with bufflao's AP at 5GHZ */
|
||||
if (pregpriv && (extra_arg == 0 || extra_arg == 1 || extra_arg == 2 || extra_arg == 3)) {
|
||||
if (!pregpriv)
|
||||
break;
|
||||
if (extra_arg == 0 || extra_arg == 1 || extra_arg == 2 || extra_arg == 3) {
|
||||
pregpriv->rx_stbc = extra_arg;
|
||||
RTW_INFO("set rx_stbc=%d\n", pregpriv->rx_stbc);
|
||||
} else
|
||||
} else {
|
||||
RTW_INFO("get rx_stbc=%d\n", pregpriv->rx_stbc);
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x13: { /* set ampdu_enable */
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
/* 0: disable, 0x1:enable */
|
||||
if (pregpriv && extra_arg < 2) {
|
||||
if (!pregpriv)
|
||||
break;
|
||||
if (extra_arg < 2) {
|
||||
pregpriv->ampdu_enable = extra_arg;
|
||||
RTW_INFO("set ampdu_enable=%d\n", pregpriv->ampdu_enable);
|
||||
} else
|
||||
} else {
|
||||
RTW_INFO("get ampdu_enable=%d\n", pregpriv->ampdu_enable);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case 0x14: { /* get wifi_spec */
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
RTW_INFO("get wifi_spec=%d\n", pregpriv->wifi_spec);
|
||||
|
||||
}
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
RTW_INFO("get wifi_spec=%d\n", pregpriv->wifi_spec);
|
||||
}
|
||||
break;
|
||||
case 0x16: {
|
||||
if (arg == 0xff)
|
||||
|
||||
Reference in New Issue
Block a user