X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=kernel%2Fdrivers%2Fstaging%2Frtl8188eu%2Fos_dep%2Fos_intfs.c;fp=kernel%2Fdrivers%2Fstaging%2Frtl8188eu%2Fos_dep%2Fos_intfs.c;h=d063d02db7f0977e3339070791f440db4541b0e1;hb=e09b41010ba33a20a87472ee821fa407a5b8da36;hp=750c87b46365bd317201280beb8b7a6c703579f5;hpb=f93b97fd65072de626c074dbe099a1fff05ce060;p=kvmfornfv.git diff --git a/kernel/drivers/staging/rtl8188eu/os_dep/os_intfs.c b/kernel/drivers/staging/rtl8188eu/os_dep/os_intfs.c index 750c87b46..d063d02db 100644 --- a/kernel/drivers/staging/rtl8188eu/os_dep/os_intfs.c +++ b/kernel/drivers/staging/rtl8188eu/os_dep/os_intfs.c @@ -41,7 +41,8 @@ MODULE_VERSION(DRIVERVERSION); static int rtw_chip_version; static int rtw_rfintfs = HWPI; static int rtw_lbkmode;/* RTL8712_AIR_TRX; */ -static int rtw_network_mode = Ndis802_11IBSS;/* Ndis802_11Infrastructure; infra, ad-hoc, auto */ +/* Ndis802_11Infrastructure; infra, ad-hoc, auto */ +static int rtw_network_mode = Ndis802_11IBSS; static int rtw_channel = 1;/* ad-hoc support requirement */ static int rtw_wireless_mode = WIRELESS_11BG_24N; static int rtw_vrtl_carrier_sense = AUTO_VCS; @@ -81,21 +82,37 @@ static int rtw_uapsd_acvi_en; static int rtw_uapsd_acvo_en; static int rtw_ht_enable = 1; -static int rtw_cbw40_enable = 3; /* 0 :disable, bit(0): enable 2.4g, bit(1): enable 5g */ +/* 0 :disable, bit(0): enable 2.4g, bit(1): enable 5g */ +static int rtw_cbw40_enable = 3; static int rtw_ampdu_enable = 1;/* for enable tx_ampdu */ -static int rtw_rx_stbc = 1;/* 0: disable, bit(0):enable 2.4g, bit(1):enable 5g, default is set to enable 2.4GHZ for IOT issue with bufflao's AP at 5GHZ */ + +/* 0: disable + * bit(0):enable 2.4g + * bit(1):enable 5g + * default is set to enable 2.4GHZ for IOT issue with bufflao's AP at 5GHZ + */ +static int rtw_rx_stbc = 1; static int rtw_ampdu_amsdu;/* 0: disabled, 1:enabled, 2:auto */ -static int rtw_lowrate_two_xmit = 1;/* Use 2 path Tx to transmit MCS0~7 and legacy mode */ +/* Use 2 path Tx to transmit MCS0~7 and legacy mode */ +static int rtw_lowrate_two_xmit = 1; static int rtw_rf_config = RF_819X_MAX_TYPE; /* auto */ static int rtw_low_power; static int rtw_wifi_spec; static int rtw_channel_plan = RT_CHANNEL_DOMAIN_MAX; -static int rtw_AcceptAddbaReq = true;/* 0:Reject AP's Add BA req, 1:Accept AP's Add BA req. */ +/* 0:Reject AP's Add BA req, 1:Accept AP's Add BA req. */ +static int rtw_AcceptAddbaReq = true; static int rtw_antdiv_cfg = 2; /* 0:OFF , 1:ON, 2:decide by Efuse config */ -static int rtw_antdiv_type; /* 0:decide by efuse 1: for 88EE, 1Tx and 1RxCG are diversity.(2 Ant with SPDT), 2: for 88EE, 1Tx and 2Rx are diversity.(2 Ant, Tx and RxCG are both on aux port, RxCS is on main port), 3: for 88EE, 1Tx and 1RxCG are fixed.(1Ant, Tx and RxCG are both on aux port) */ + +/* 0: decide by efuse + * 1: for 88EE, 1Tx and 1RxCG are diversity (2 Ant with SPDT) + * 2: for 88EE, 1Tx and 2Rx are diversity (2 Ant, Tx and RxCG are both on aux + * port, RxCS is on main port) + * 3: for 88EE, 1Tx and 1RxCG are fixed (1Ant, Tx and RxCG are both on aux port) + */ +static int rtw_antdiv_type; static int rtw_enusbss;/* 0:disable, 1:enable */ @@ -117,7 +134,8 @@ static char *if2name = "wlan%d"; module_param(if2name, charp, 0644); MODULE_PARM_DESC(if2name, "The default name to allocate for second interface"); -char *rtw_initmac; /* temp mac address if users want to use instead of the mac address in Efuse */ +/* temp mac address if users want to use instead of the mac address in Efuse */ +char *rtw_initmac; module_param(rtw_initmac, charp, 0644); module_param(rtw_channel_plan, int, 0644); @@ -167,17 +185,24 @@ MODULE_PARM_DESC(rtw_notch_filter, "0:Disable, 1:Enable, 2:Enable only for P2P") module_param_named(debug, rtw_debug, int, 0444); MODULE_PARM_DESC(debug, "Set debug level (1-9) (default 1)"); +static bool rtw_monitor_enable; +module_param_named(monitor_enable, rtw_monitor_enable, bool, 0444); +MODULE_PARM_DESC(monitor_enable, "Enable monitor inferface (default: false)"); + +static int netdev_open(struct net_device *pnetdev); +static int netdev_close(struct net_device *pnetdev); + /* dummy routines */ void rtw_proc_remove_one(struct net_device *dev) { } -void rtw_proc_init_one(struct net_device *dev) +static void rtw_proc_init_one(struct net_device *dev) { } #if 0 /* TODO: Convert these to /sys */ -void rtw_proc_init_one(struct net_device *dev) +static void rtw_proc_init_one(struct net_device *dev) { struct proc_dir_entry *dir_dev = NULL; struct proc_dir_entry *entry = NULL; @@ -187,13 +212,16 @@ void rtw_proc_init_one(struct net_device *dev) if (rtw_proc == NULL) { memcpy(rtw_proc_name, DRV_NAME, sizeof(DRV_NAME)); - rtw_proc = create_proc_entry(rtw_proc_name, S_IFDIR, init_net.proc_net); + rtw_proc = create_proc_entry(rtw_proc_name, S_IFDIR, + init_net.proc_net); if (rtw_proc == NULL) { DBG_88E(KERN_ERR "Unable to create rtw_proc directory\n"); return; } - entry = create_proc_read_entry("ver_info", S_IFREG | S_IRUGO, rtw_proc, proc_get_drv_version, dev); + entry = create_proc_read_entry("ver_info", S_IFREG | S_IRUGO, + rtw_proc, proc_get_drv_version, + dev); if (!entry) { pr_info("Unable to create_proc_read_entry!\n"); return; @@ -206,11 +234,9 @@ void rtw_proc_init_one(struct net_device *dev) rtw_proc); dir_dev = padapter->dir_dev; if (dir_dev == NULL) { - if (rtw_proc_cnt == 0) { - if (rtw_proc) { - remove_proc_entry(rtw_proc_name, init_net.proc_net); - rtw_proc = NULL; - } + if (rtw_proc_cnt == 0 && rtw_proc) { + remove_proc_entry(rtw_proc_name, init_net.proc_net); + rtw_proc = NULL; } pr_info("Unable to create dir_dev directory\n"); @@ -360,15 +386,17 @@ void rtw_proc_init_one(struct net_device *dev) rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); if ((RF_1T2R == rf_type) || (RF_1T1R == rf_type)) { - entry = create_proc_read_entry("rf_reg_dump3", S_IFREG | S_IRUGO, - dir_dev, proc_get_rf_reg_dump3, dev); + entry = create_proc_read_entry("rf_reg_dump3", + S_IFREG | S_IRUGO, dir_dev, + proc_get_rf_reg_dump3, dev); if (!entry) { pr_info("Unable to create_proc_read_entry!\n"); return; } - entry = create_proc_read_entry("rf_reg_dump4", S_IFREG | S_IRUGO, - dir_dev, proc_get_rf_reg_dump4, dev); + entry = create_proc_read_entry("rf_reg_dump4", + S_IFREG | S_IRUGO, dir_dev, + proc_get_rf_reg_dump4, dev); if (!entry) { pr_info("Unable to create_proc_read_entry!\n"); return; @@ -510,11 +538,10 @@ void rtw_proc_remove_one(struct net_device *dev) } #endif -static uint loadparam(struct adapter *padapter, struct net_device *pnetdev) +static void loadparam(struct adapter *padapter, struct net_device *pnetdev) { struct registry_priv *registry_par = &padapter->registrypriv; - GlobalDebugLevel = rtw_debug; registry_par->chip_version = (u8)rtw_chip_version; registry_par->rfintfs = (u8)rtw_rfintfs; @@ -569,8 +596,8 @@ static uint loadparam(struct adapter *padapter, struct net_device *pnetdev) registry_par->bAcceptAddbaReq = (u8)rtw_AcceptAddbaReq; registry_par->antdiv_cfg = (u8)rtw_antdiv_cfg; registry_par->antdiv_type = (u8)rtw_antdiv_type; - registry_par->hwpdn_mode = (u8)rtw_hwpdn_mode;/* 0:disable, 1:enable, 2:by EFUSE config */ - registry_par->hwpwrp_detect = (u8)rtw_hwpwrp_detect;/* 0:disable, 1:enable */ + registry_par->hwpdn_mode = (u8)rtw_hwpdn_mode; + registry_par->hwpwrp_detect = (u8)rtw_hwpwrp_detect; registry_par->hw_wps_pbc = (u8)rtw_hw_wps_pbc; registry_par->max_roaming_times = (u8)rtw_max_roaming_times; @@ -581,7 +608,7 @@ static uint loadparam(struct adapter *padapter, struct net_device *pnetdev) snprintf(registry_par->ifname, 16, "%s", ifname); snprintf(registry_par->if2name, 16, "%s", if2name); registry_par->notch_filter = (u8)rtw_notch_filter; - return _SUCCESS; + registry_par->monitor_enable = rtw_monitor_enable; } static int rtw_net_set_mac_address(struct net_device *pnetdev, void *p) @@ -601,8 +628,8 @@ static struct net_device_stats *rtw_net_get_stats(struct net_device *pnetdev) struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); struct recv_priv *precvpriv = &(padapter->recvpriv); - padapter->stats.tx_packets = pxmitpriv->tx_pkts;/* pxmitpriv->tx_pkts++; */ - padapter->stats.rx_packets = precvpriv->rx_pkts;/* precvpriv->rx_pkts++; */ + padapter->stats.tx_packets = pxmitpriv->tx_pkts; + padapter->stats.rx_packets = precvpriv->rx_pkts; padapter->stats.tx_dropped = pxmitpriv->tx_drop; padapter->stats.rx_dropped = precvpriv->rx_drop; padapter->stats.tx_bytes = pxmitpriv->tx_bytes; @@ -725,32 +752,33 @@ struct net_device *rtw_init_netdev(struct adapter *old_padapter) pnetdev->watchdog_timeo = HZ*3; /* 3 second timeout */ pnetdev->wireless_handlers = (struct iw_handler_def *)&rtw_handlers_def; - /* step 2. */ loadparam(padapter, pnetdev); return pnetdev; } -u32 rtw_start_drv_threads(struct adapter *padapter) +static int rtw_start_drv_threads(struct adapter *padapter) { - u32 _status = _SUCCESS; + int err = 0; RT_TRACE(_module_os_intfs_c_, _drv_info_, ("+rtw_start_drv_threads\n")); - padapter->cmdThread = kthread_run(rtw_cmd_thread, padapter, "RTW_CMD_THREAD"); + padapter->cmdThread = kthread_run(rtw_cmd_thread, padapter, + "RTW_CMD_THREAD"); if (IS_ERR(padapter->cmdThread)) - _status = _FAIL; + err = PTR_ERR(padapter->cmdThread); else - _rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema); /* wait for cmd_thread to run */ + /* wait for cmd_thread to run */ + _rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema); - return _status; + return err; } void rtw_stop_drv_threads(struct adapter *padapter) { RT_TRACE(_module_os_intfs_c_, _drv_info_, ("+rtw_stop_drv_threads\n")); - /* Below is to termindate rtw_cmd_thread & event_thread... */ + /* Below is to terminate rtw_cmd_thread & event_thread... */ up(&padapter->cmdpriv.cmd_queue_sema); if (padapter->cmdThread) _rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema); @@ -781,7 +809,7 @@ static u8 rtw_init_default_value(struct adapter *padapter) psecuritypriv->binstallGrpkey = _FAIL; psecuritypriv->sw_encrypt = pregistrypriv->software_encrypt; psecuritypriv->sw_decrypt = pregistrypriv->software_decrypt; - psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; /* open system */ + psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; psecuritypriv->dot11PrivacyAlgrthm = _NO_PRIVACY_; psecuritypriv->dot11PrivacyKeyIndex = 0; psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_; @@ -931,7 +959,8 @@ u8 rtw_free_drv_sw(struct adapter *padapter) rtw_free_mlme_priv(&padapter->mlmepriv); _rtw_free_xmit_priv(&padapter->xmitpriv); - _rtw_free_sta_priv(&padapter->stapriv); /* will free bcmc_stainfo here */ + /* will free bcmc_stainfo here */ + _rtw_free_sta_priv(&padapter->stapriv); _rtw_free_recv_priv(&padapter->recvpriv); @@ -952,9 +981,10 @@ u8 rtw_free_drv_sw(struct adapter *padapter) return _SUCCESS; } -int _netdev_open(struct net_device *pnetdev) +static int _netdev_open(struct net_device *pnetdev) { uint status; + int err; struct adapter *padapter = (struct adapter *)rtw_netdev_priv(pnetdev); struct pwrctrl_priv *pwrctrlpriv = &padapter->pwrctrlpriv; @@ -978,8 +1008,8 @@ int _netdev_open(struct net_device *pnetdev) pr_info("MAC Address = %pM\n", pnetdev->dev_addr); - status = rtw_start_drv_threads(padapter); - if (status == _FAIL) { + err = rtw_start_drv_threads(padapter); + if (err) { pr_info("Initialize driver software resource Failed!\n"); goto netdev_open_error; } @@ -1023,12 +1053,13 @@ netdev_open_error: return -1; } -int netdev_open(struct net_device *pnetdev) +static int netdev_open(struct net_device *pnetdev) { int ret; struct adapter *padapter = (struct adapter *)rtw_netdev_priv(pnetdev); - _enter_critical_mutex(&padapter->hw_init_mutex, NULL); + if (mutex_lock_interruptible(&padapter->hw_init_mutex)) + return -ERESTARTSYS; ret = _netdev_open(pnetdev); mutex_unlock(&padapter->hw_init_mutex); return ret; @@ -1037,6 +1068,7 @@ int netdev_open(struct net_device *pnetdev) static int ips_netdrv_open(struct adapter *padapter) { int status = _SUCCESS; + padapter->net_closed = false; DBG_88E("===> %s.........\n", __func__); @@ -1069,6 +1101,7 @@ int rtw_ips_pwr_up(struct adapter *padapter) { int result; u32 start_time = jiffies; + DBG_88E("===> rtw_ips_pwr_up..............\n"); rtw_reset_drv_sw(padapter); @@ -1083,6 +1116,7 @@ int rtw_ips_pwr_up(struct adapter *padapter) void rtw_ips_pwr_down(struct adapter *padapter) { u32 start_time = jiffies; + DBG_88E("===> rtw_ips_pwr_down...................\n"); padapter->net_closed = true; @@ -1118,7 +1152,7 @@ int pm_netdev_open(struct net_device *pnetdev, u8 bnormal) return status; } -int netdev_close(struct net_device *pnetdev) +static int netdev_close(struct net_device *pnetdev) { struct adapter *padapter = (struct adapter *)rtw_netdev_priv(pnetdev); struct hal_data_8188e *rtlhal = GET_HAL_DATA(padapter); @@ -1147,7 +1181,7 @@ int netdev_close(struct net_device *pnetdev) /* s2-2. indicate disconnect to os */ rtw_indicate_disconnect(padapter); /* s2-3. */ - rtw_free_assoc_resources(padapter, 1); + rtw_free_assoc_resources(padapter); /* s2-4. */ rtw_free_network_queue(padapter, true); /* Close LED */