staging: r8712u: Simplify semaphores

I am preparing to convert this driver from semaphore to mutex locking,
The first step has been to eliminate a number of semaphores that were
initialized but never used, and one whose only use was a single "up"
after initialization. A total of 9 semaphores were removed in this process.

One other change was to remove some inline semaphore routines that were
unused.

In addition, several cases had the following structure:

down()
if () {
   ...
}
up()

The locking overhead was reduced by moving the up/down inside the if
block.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Larry Finger 2012-02-08 19:42:03 -06:00 committed by Greg Kroah-Hartman
parent d8e4cd99d5
commit 86587b671b
13 changed files with 4 additions and 42 deletions

View File

@ -138,7 +138,6 @@ struct dvobj_priv {
u8 ishighspeed; u8 ishighspeed;
uint(*inirp_init)(struct _adapter *adapter); uint(*inirp_init)(struct _adapter *adapter);
uint(*inirp_deinit)(struct _adapter *adapter); uint(*inirp_deinit)(struct _adapter *adapter);
struct semaphore usb_suspend_sema;
struct usb_device *pusbdev; struct usb_device *pusbdev;
}; };

View File

@ -329,7 +329,6 @@ u8 r8712_init_drv_sw(struct _adapter *padapter)
padapter->stapriv.padapter = padapter; padapter->stapriv.padapter = padapter;
r8712_init_bcmc_stainfo(padapter); r8712_init_bcmc_stainfo(padapter);
r8712_init_pwrctrl_priv(padapter); r8712_init_pwrctrl_priv(padapter);
sema_init(&(padapter->pwrctrlpriv.pnp_pwr_mgnt_sema), 0);
mp871xinit(padapter); mp871xinit(padapter);
if (init_default_value(padapter) != _SUCCESS) if (init_default_value(padapter) != _SUCCESS)
return _FAIL; return _FAIL;

View File

@ -72,18 +72,6 @@ static inline struct list_head *get_list_head(struct __queue *queue)
#define LIST_CONTAINOR(ptr, type, member) \ #define LIST_CONTAINOR(ptr, type, member) \
((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member))) ((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member)))
static inline void _enter_hwio_critical(struct semaphore *prwlock,
unsigned long *pirqL)
{
down(prwlock);
}
static inline void _exit_hwio_critical(struct semaphore *prwlock,
unsigned long *pirqL)
{
up(prwlock);
}
static inline void list_delete(struct list_head *plist) static inline void list_delete(struct list_head *plist)
{ {
list_del_init(plist); list_del_init(plist);
@ -152,11 +140,6 @@ static inline u32 _down_sema(struct semaphore *sema)
return _SUCCESS; return _SUCCESS;
} }
static inline void _rtl_rwlock_init(struct semaphore *prwlock)
{
sema_init(prwlock, 1);
}
static inline void _init_listhead(struct list_head *list) static inline void _init_listhead(struct list_head *list)
{ {
INIT_LIST_HEAD(list); INIT_LIST_HEAD(list);

View File

@ -55,8 +55,6 @@ int r8712_init_recv_priv(struct recv_priv *precvpriv, struct _adapter *padapter)
int alignment = 0; int alignment = 0;
struct sk_buff *pskb = NULL; struct sk_buff *pskb = NULL;
sema_init(&precvpriv->recv_sema, 0);
sema_init(&precvpriv->terminate_recvthread_sema, 0);
/*init recv_buf*/ /*init recv_buf*/
_init_queue(&precvpriv->free_recv_buf_queue); _init_queue(&precvpriv->free_recv_buf_queue);
precvpriv->pallocated_recv_buf = _malloc(NR_RECVBUFF * precvpriv->pallocated_recv_buf = _malloc(NR_RECVBUFF *

View File

@ -131,7 +131,6 @@ uint r8712_alloc_io_queue(struct _adapter *adapter)
pio_req = (struct io_req *)(pio_queue->free_ioreqs_buf); pio_req = (struct io_req *)(pio_queue->free_ioreqs_buf);
for (i = 0; i < NUM_IOREQ; i++) { for (i = 0; i < NUM_IOREQ; i++) {
_init_listhead(&pio_req->list); _init_listhead(&pio_req->list);
sema_init(&pio_req->sema, 0);
list_insert_tail(&pio_req->list, &pio_queue->free_ioreqs); list_insert_tail(&pio_req->list, &pio_queue->free_ioreqs);
pio_req++; pio_req++;
} }

View File

@ -117,7 +117,6 @@ struct io_req {
u32 command; u32 command;
u32 status; u32 status;
u8 *pbuf; u8 *pbuf;
struct semaphore sema;
void (*_async_io_callback)(struct _adapter *padater, void (*_async_io_callback)(struct _adapter *padater,
struct io_req *pio_req, u8 *cnxt); struct io_req *pio_req, u8 *cnxt);
u8 *cnxt; u8 *cnxt;

View File

@ -100,7 +100,6 @@ void r8712_cpwm_int_hdl(struct _adapter *padapter,
{ {
struct pwrctrl_priv *pwrpriv = &(padapter->pwrctrlpriv); struct pwrctrl_priv *pwrpriv = &(padapter->pwrctrlpriv);
struct cmd_priv *pcmdpriv = &(padapter->cmdpriv); struct cmd_priv *pcmdpriv = &(padapter->cmdpriv);
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
if (pwrpriv->cpwm_tog == ((preportpwrstate->state) & 0x80)) if (pwrpriv->cpwm_tog == ((preportpwrstate->state) & 0x80))
return; return;
@ -110,8 +109,6 @@ void r8712_cpwm_int_hdl(struct _adapter *padapter,
if (pwrpriv->cpwm >= PS_STATE_S2) { if (pwrpriv->cpwm >= PS_STATE_S2) {
if (pwrpriv->alives & CMD_ALIVE) if (pwrpriv->alives & CMD_ALIVE)
up(&(pcmdpriv->cmd_queue_sema)); up(&(pcmdpriv->cmd_queue_sema));
if (pwrpriv->alives & XMIT_ALIVE)
up(&(pxmitpriv->xmit_sema));
} }
pwrpriv->cpwm_tog = (preportpwrstate->state) & 0x80; pwrpriv->cpwm_tog = (preportpwrstate->state) & 0x80;
up(&pwrpriv->lock); up(&pwrpriv->lock);
@ -145,12 +142,12 @@ static void SetPSModeWorkItemCallback(struct work_struct *work)
struct pwrctrl_priv, SetPSModeWorkItem); struct pwrctrl_priv, SetPSModeWorkItem);
struct _adapter *padapter = container_of(pwrpriv, struct _adapter *padapter = container_of(pwrpriv,
struct _adapter, pwrctrlpriv); struct _adapter, pwrctrlpriv);
_enter_pwrlock(&pwrpriv->lock);
if (!pwrpriv->bSleep) { if (!pwrpriv->bSleep) {
_enter_pwrlock(&pwrpriv->lock);
if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) if (pwrpriv->pwr_mode == PS_MODE_ACTIVE)
r8712_set_rpwm(padapter, PS_STATE_S4); r8712_set_rpwm(padapter, PS_STATE_S4);
}
up(&pwrpriv->lock); up(&pwrpriv->lock);
}
} }
static void rpwm_workitem_callback(struct work_struct *work) static void rpwm_workitem_callback(struct work_struct *work)
@ -160,13 +157,13 @@ static void rpwm_workitem_callback(struct work_struct *work)
struct _adapter *padapter = container_of(pwrpriv, struct _adapter *padapter = container_of(pwrpriv,
struct _adapter, pwrctrlpriv); struct _adapter, pwrctrlpriv);
u8 cpwm = pwrpriv->cpwm; u8 cpwm = pwrpriv->cpwm;
_enter_pwrlock(&pwrpriv->lock);
if (pwrpriv->cpwm != pwrpriv->rpwm) { if (pwrpriv->cpwm != pwrpriv->rpwm) {
_enter_pwrlock(&pwrpriv->lock);
cpwm = r8712_read8(padapter, SDIO_HCPWM); cpwm = r8712_read8(padapter, SDIO_HCPWM);
pwrpriv->rpwm_retry = 1; pwrpriv->rpwm_retry = 1;
r8712_set_rpwm(padapter, pwrpriv->rpwm); r8712_set_rpwm(padapter, pwrpriv->rpwm);
}
up(&pwrpriv->lock); up(&pwrpriv->lock);
}
} }
static void rpwm_check_handler (void *FunctionContext) static void rpwm_check_handler (void *FunctionContext)

View File

@ -133,7 +133,6 @@ struct pwrctrl_priv {
u8 rpwm_retry; u8 rpwm_retry;
uint bSetPSModeWorkItemInProgress; uint bSetPSModeWorkItemInProgress;
struct semaphore pnp_pwr_mgnt_sema;
spinlock_t pnp_pwr_mgnt_lock; spinlock_t pnp_pwr_mgnt_lock;
s32 pnp_current_pwr_state; s32 pnp_current_pwr_state;
u8 pnp_bstop_trx; u8 pnp_bstop_trx;

View File

@ -93,7 +93,6 @@ sint _r8712_init_recv_priv(struct recv_priv *precvpriv,
precvframe++; precvframe++;
} }
precvpriv->rx_pending_cnt = 1; precvpriv->rx_pending_cnt = 1;
sema_init(&precvpriv->allrxreturnevt, 0);
return r8712_init_recv_priv(precvpriv, padapter); return r8712_init_recv_priv(precvpriv, padapter);
} }

View File

@ -85,8 +85,6 @@ using enter_critical section to protect
*/ */
struct recv_priv { struct recv_priv {
spinlock_t lock; spinlock_t lock;
struct semaphore recv_sema;
struct semaphore terminate_recvthread_sema;
struct __queue free_recv_queue; struct __queue free_recv_queue;
struct __queue recv_pending_queue; struct __queue recv_pending_queue;
u8 *pallocated_frame_buf; u8 *pallocated_frame_buf;
@ -100,7 +98,6 @@ struct recv_priv {
uint rx_largepacket_crcerr; uint rx_largepacket_crcerr;
uint rx_smallpacket_crcerr; uint rx_smallpacket_crcerr;
uint rx_middlepacket_crcerr; uint rx_middlepacket_crcerr;
struct semaphore allrxreturnevt;
u8 rx_pending_cnt; u8 rx_pending_cnt;
uint ff_hwaddr; uint ff_hwaddr;
struct tasklet_struct recv_tasklet; struct tasklet_struct recv_tasklet;

View File

@ -71,8 +71,6 @@ sint _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv,
memset((unsigned char *)pxmitpriv, 0, sizeof(struct xmit_priv)); memset((unsigned char *)pxmitpriv, 0, sizeof(struct xmit_priv));
spin_lock_init(&pxmitpriv->lock); spin_lock_init(&pxmitpriv->lock);
sema_init(&pxmitpriv->xmit_sema, 0);
sema_init(&pxmitpriv->terminate_xmitthread_sema, 0);
/* /*
Please insert all the queue initializaiton using _init_queue below Please insert all the queue initializaiton using _init_queue below
*/ */
@ -121,7 +119,6 @@ sint _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv,
_r8712_init_hw_txqueue(&pxmitpriv->bmc_txqueue, BMC_QUEUE_INX); _r8712_init_hw_txqueue(&pxmitpriv->bmc_txqueue, BMC_QUEUE_INX);
pxmitpriv->frag_len = MAX_FRAG_THRESHOLD; pxmitpriv->frag_len = MAX_FRAG_THRESHOLD;
pxmitpriv->txirp_cnt = 1; pxmitpriv->txirp_cnt = 1;
sema_init(&(pxmitpriv->tx_retevt), 0);
/*per AC pending irp*/ /*per AC pending irp*/
pxmitpriv->beq_cnt = 0; pxmitpriv->beq_cnt = 0;
pxmitpriv->bkq_cnt = 0; pxmitpriv->bkq_cnt = 0;

View File

@ -202,8 +202,6 @@ struct hw_txqueue {
struct xmit_priv { struct xmit_priv {
spinlock_t lock; spinlock_t lock;
struct semaphore xmit_sema;
struct semaphore terminate_xmitthread_sema;
struct __queue be_pending; struct __queue be_pending;
struct __queue bk_pending; struct __queue bk_pending;
struct __queue vi_pending; struct __queue vi_pending;
@ -233,7 +231,6 @@ struct xmit_priv {
uint tx_drop; uint tx_drop;
struct hw_xmit *hwxmits; struct hw_xmit *hwxmits;
u8 hwxmit_entry; u8 hwxmit_entry;
struct semaphore tx_retevt;/*all tx return event;*/
u8 txirp_cnt; u8 txirp_cnt;
struct tasklet_struct xmit_tasklet; struct tasklet_struct xmit_tasklet;
_workitem xmit_pipe4_reset_wi; _workitem xmit_pipe4_reset_wi;

View File

@ -280,7 +280,6 @@ static uint r8712_usb_dvobj_init(struct _adapter *padapter)
} }
if ((r8712_alloc_io_queue(padapter)) == _FAIL) if ((r8712_alloc_io_queue(padapter)) == _FAIL)
status = _FAIL; status = _FAIL;
sema_init(&(padapter->dvobjpriv.usb_suspend_sema), 0);
return status; return status;
} }