diff options
Diffstat (limited to 'drivers/staging/rtl8712/os_intfs.c')
-rw-r--r-- | drivers/staging/rtl8712/os_intfs.c | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c index 3f38e8e..4bb2797 100644 --- a/drivers/staging/rtl8712/os_intfs.c +++ b/drivers/staging/rtl8712/os_intfs.c @@ -31,6 +31,7 @@ #include <linux/module.h> #include <linux/init.h> #include <linux/kthread.h> +#include <linux/firmware.h> #include "osdep_service.h" #include "drv_types.h" #include "xmit_osdep.h" @@ -177,7 +178,7 @@ static uint loadparam(struct _adapter *padapter, struct net_device *pnetdev) static int r871x_net_set_mac_address(struct net_device *pnetdev, void *p) { - struct _adapter *padapter = (struct _adapter *)_netdev_priv(pnetdev); + struct _adapter *padapter = (struct _adapter *)netdev_priv(pnetdev); struct sockaddr *addr = p; if (padapter->bup == false) @@ -187,7 +188,7 @@ static int r871x_net_set_mac_address(struct net_device *pnetdev, void *p) static struct net_device_stats *r871x_net_get_stats(struct net_device *pnetdev) { - struct _adapter *padapter = (struct _adapter *) _netdev_priv(pnetdev); + struct _adapter *padapter = (struct _adapter *) netdev_priv(pnetdev); struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); struct recv_priv *precvpriv = &(padapter->recvpriv); @@ -221,7 +222,7 @@ struct net_device *r8712_init_netdev(void) strcpy(ifname, "wlan%d"); dev_alloc_name(pnetdev, ifname); } - padapter = (struct _adapter *) _netdev_priv(pnetdev); + padapter = (struct _adapter *) netdev_priv(pnetdev); padapter->pnetdev = pnetdev; printk(KERN_INFO "r8712u: register rtl8712_netdev_ops to" " netdev_ops\n"); @@ -261,15 +262,15 @@ static void start_drv_timers(struct _adapter *padapter) _set_timer(&padapter->mlmepriv.wdg_timer, 2000); } -static void stop_drv_timers(struct _adapter *padapter) +void r8712_stop_drv_timers(struct _adapter *padapter) { _cancel_timer_ex(&padapter->mlmepriv.assoc_timer); - _cancel_timer_ex(&padapter->mlmepriv.sitesurveyctrl. - sitesurvey_ctrl_timer); _cancel_timer_ex(&padapter->securitypriv.tkip_timer); _cancel_timer_ex(&padapter->mlmepriv.scan_to_timer); _cancel_timer_ex(&padapter->mlmepriv.dhcp_timer); _cancel_timer_ex(&padapter->mlmepriv.wdg_timer); + _cancel_timer_ex(&padapter->mlmepriv.sitesurveyctrl. + sitesurvey_ctrl_timer); } static u8 init_default_value(struct _adapter *padapter) @@ -286,6 +287,9 @@ static u8 init_default_value(struct _adapter *padapter) pxmitpriv->vcs_type = pregistrypriv->vcs_type; pxmitpriv->rts_thresh = pregistrypriv->rts_thresh; pxmitpriv->frag_len = pregistrypriv->frag_thresh; + /* mlme_priv */ + /* Maybe someday we should rename this variable to "active_mode"(Jeff)*/ + pmlmepriv->passive_mode = 1; /* 1: active, 0: passive. */ /*ht_priv*/ { int i; @@ -344,11 +348,12 @@ u8 r8712_free_drv_sw(struct _adapter *padapter) r8712_free_mlme_priv(&padapter->mlmepriv); r8712_free_io_queue(padapter); _free_xmit_priv(&padapter->xmitpriv); - _r8712_free_sta_priv(&padapter->stapriv); + if (padapter->fw_found) + _r8712_free_sta_priv(&padapter->stapriv); _r8712_free_recv_priv(&padapter->recvpriv); mp871xdeinit(padapter); if (pnetdev) - os_free_netdev(pnetdev); + free_netdev(pnetdev); return _SUCCESS; } @@ -375,10 +380,17 @@ static void enable_video_mode(struct _adapter *padapter, int cbw40_value) r8712_fw_cmd(padapter, intcmd); } +/** + * + * This function intends to handle the activation of an interface + * i.e. when it is brought Up/Active from a Down state. + * + */ static int netdev_open(struct net_device *pnetdev) { - struct _adapter *padapter = (struct _adapter *)_netdev_priv(pnetdev); + struct _adapter *padapter = (struct _adapter *)netdev_priv(pnetdev); + mutex_lock(&padapter->mutex_start); if (padapter->bup == false) { padapter->bDriverStopped = false; padapter->bSurpriseRemoved = false; @@ -426,17 +438,25 @@ static int netdev_open(struct net_device *pnetdev) /* start driver mlme relation timer */ start_drv_timers(padapter); padapter->ledpriv.LedControlHandler(padapter, LED_CTL_NO_LINK); + mutex_unlock(&padapter->mutex_start); return 0; netdev_open_error: padapter->bup = false; netif_carrier_off(pnetdev); netif_stop_queue(pnetdev); + mutex_unlock(&padapter->mutex_start); return -1; } +/** + * + * This function intends to handle the shutdown of an interface + * i.e. when it is brought Down from an Up/Active state. + * + */ static int netdev_close(struct net_device *pnetdev) { - struct _adapter *padapter = (struct _adapter *) _netdev_priv(pnetdev); + struct _adapter *padapter = (struct _adapter *) netdev_priv(pnetdev); /* Close LED*/ padapter->ledpriv.LedControlHandler(padapter, LED_CTL_POWER_OFF); @@ -456,8 +476,6 @@ static int netdev_close(struct net_device *pnetdev) r8712_free_assoc_resources(padapter); /*s2-4.*/ r8712_free_network_queue(padapter); - /*Stop driver mlme relation timer*/ - stop_drv_timers(padapter); return 0; } |