diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2012-02-08 20:42:03 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-02-09 12:12:55 -0500 |
commit | 86587b671bf87ed81d2d89cd1199af912402a05f (patch) | |
tree | a4b45e66fdb5399a5082deadcf79f6a19ad0c346 /drivers/staging/rtl8712 | |
parent | d8e4cd99d5a13f65fb961e627b63ae70ab0fe951 (diff) |
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>
Diffstat (limited to 'drivers/staging/rtl8712')
-rw-r--r-- | drivers/staging/rtl8712/drv_types.h | 1 | ||||
-rw-r--r-- | drivers/staging/rtl8712/os_intfs.c | 1 | ||||
-rw-r--r-- | drivers/staging/rtl8712/osdep_service.h | 17 | ||||
-rw-r--r-- | drivers/staging/rtl8712/rtl8712_recv.c | 2 | ||||
-rw-r--r-- | drivers/staging/rtl8712/rtl871x_io.c | 1 | ||||
-rw-r--r-- | drivers/staging/rtl8712/rtl871x_io.h | 1 | ||||
-rw-r--r-- | drivers/staging/rtl8712/rtl871x_pwrctrl.c | 11 | ||||
-rw-r--r-- | drivers/staging/rtl8712/rtl871x_pwrctrl.h | 1 | ||||
-rw-r--r-- | drivers/staging/rtl8712/rtl871x_recv.c | 1 | ||||
-rw-r--r-- | drivers/staging/rtl8712/rtl871x_recv.h | 3 | ||||
-rw-r--r-- | drivers/staging/rtl8712/rtl871x_xmit.c | 3 | ||||
-rw-r--r-- | drivers/staging/rtl8712/rtl871x_xmit.h | 3 | ||||
-rw-r--r-- | drivers/staging/rtl8712/usb_intf.c | 1 |
13 files changed, 4 insertions, 42 deletions
diff --git a/drivers/staging/rtl8712/drv_types.h b/drivers/staging/rtl8712/drv_types.h index 9b5d771e650..0735de9aad9 100644 --- a/drivers/staging/rtl8712/drv_types.h +++ b/drivers/staging/rtl8712/drv_types.h | |||
@@ -138,7 +138,6 @@ struct dvobj_priv { | |||
138 | u8 ishighspeed; | 138 | u8 ishighspeed; |
139 | uint(*inirp_init)(struct _adapter *adapter); | 139 | uint(*inirp_init)(struct _adapter *adapter); |
140 | uint(*inirp_deinit)(struct _adapter *adapter); | 140 | uint(*inirp_deinit)(struct _adapter *adapter); |
141 | struct semaphore usb_suspend_sema; | ||
142 | struct usb_device *pusbdev; | 141 | struct usb_device *pusbdev; |
143 | }; | 142 | }; |
144 | 143 | ||
diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c index 9a75c6dbe50..250cd116f0c 100644 --- a/drivers/staging/rtl8712/os_intfs.c +++ b/drivers/staging/rtl8712/os_intfs.c | |||
@@ -329,7 +329,6 @@ u8 r8712_init_drv_sw(struct _adapter *padapter) | |||
329 | padapter->stapriv.padapter = padapter; | 329 | padapter->stapriv.padapter = padapter; |
330 | r8712_init_bcmc_stainfo(padapter); | 330 | r8712_init_bcmc_stainfo(padapter); |
331 | r8712_init_pwrctrl_priv(padapter); | 331 | r8712_init_pwrctrl_priv(padapter); |
332 | sema_init(&(padapter->pwrctrlpriv.pnp_pwr_mgnt_sema), 0); | ||
333 | mp871xinit(padapter); | 332 | mp871xinit(padapter); |
334 | if (init_default_value(padapter) != _SUCCESS) | 333 | if (init_default_value(padapter) != _SUCCESS) |
335 | return _FAIL; | 334 | return _FAIL; |
diff --git a/drivers/staging/rtl8712/osdep_service.h b/drivers/staging/rtl8712/osdep_service.h index 1ee943a58c4..9ba603310fd 100644 --- a/drivers/staging/rtl8712/osdep_service.h +++ b/drivers/staging/rtl8712/osdep_service.h | |||
@@ -72,18 +72,6 @@ static inline struct list_head *get_list_head(struct __queue *queue) | |||
72 | #define LIST_CONTAINOR(ptr, type, member) \ | 72 | #define LIST_CONTAINOR(ptr, type, member) \ |
73 | ((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member))) | 73 | ((type *)((char *)(ptr)-(SIZE_T)(&((type *)0)->member))) |
74 | 74 | ||
75 | static inline void _enter_hwio_critical(struct semaphore *prwlock, | ||
76 | unsigned long *pirqL) | ||
77 | { | ||
78 | down(prwlock); | ||
79 | } | ||
80 | |||
81 | static inline void _exit_hwio_critical(struct semaphore *prwlock, | ||
82 | unsigned long *pirqL) | ||
83 | { | ||
84 | up(prwlock); | ||
85 | } | ||
86 | |||
87 | static inline void list_delete(struct list_head *plist) | 75 | static inline void list_delete(struct list_head *plist) |
88 | { | 76 | { |
89 | list_del_init(plist); | 77 | list_del_init(plist); |
@@ -152,11 +140,6 @@ static inline u32 _down_sema(struct semaphore *sema) | |||
152 | return _SUCCESS; | 140 | return _SUCCESS; |
153 | } | 141 | } |
154 | 142 | ||
155 | static inline void _rtl_rwlock_init(struct semaphore *prwlock) | ||
156 | { | ||
157 | sema_init(prwlock, 1); | ||
158 | } | ||
159 | |||
160 | static inline void _init_listhead(struct list_head *list) | 143 | static inline void _init_listhead(struct list_head *list) |
161 | { | 144 | { |
162 | INIT_LIST_HEAD(list); | 145 | INIT_LIST_HEAD(list); |
diff --git a/drivers/staging/rtl8712/rtl8712_recv.c b/drivers/staging/rtl8712/rtl8712_recv.c index 6d692657e78..fa6dc9c09b3 100644 --- a/drivers/staging/rtl8712/rtl8712_recv.c +++ b/drivers/staging/rtl8712/rtl8712_recv.c | |||
@@ -55,8 +55,6 @@ int r8712_init_recv_priv(struct recv_priv *precvpriv, struct _adapter *padapter) | |||
55 | int alignment = 0; | 55 | int alignment = 0; |
56 | struct sk_buff *pskb = NULL; | 56 | struct sk_buff *pskb = NULL; |
57 | 57 | ||
58 | sema_init(&precvpriv->recv_sema, 0); | ||
59 | sema_init(&precvpriv->terminate_recvthread_sema, 0); | ||
60 | /*init recv_buf*/ | 58 | /*init recv_buf*/ |
61 | _init_queue(&precvpriv->free_recv_buf_queue); | 59 | _init_queue(&precvpriv->free_recv_buf_queue); |
62 | precvpriv->pallocated_recv_buf = _malloc(NR_RECVBUFF * | 60 | precvpriv->pallocated_recv_buf = _malloc(NR_RECVBUFF * |
diff --git a/drivers/staging/rtl8712/rtl871x_io.c b/drivers/staging/rtl8712/rtl871x_io.c index ca84ee02eac..abc1c97378f 100644 --- a/drivers/staging/rtl8712/rtl871x_io.c +++ b/drivers/staging/rtl8712/rtl871x_io.c | |||
@@ -131,7 +131,6 @@ uint r8712_alloc_io_queue(struct _adapter *adapter) | |||
131 | pio_req = (struct io_req *)(pio_queue->free_ioreqs_buf); | 131 | pio_req = (struct io_req *)(pio_queue->free_ioreqs_buf); |
132 | for (i = 0; i < NUM_IOREQ; i++) { | 132 | for (i = 0; i < NUM_IOREQ; i++) { |
133 | _init_listhead(&pio_req->list); | 133 | _init_listhead(&pio_req->list); |
134 | sema_init(&pio_req->sema, 0); | ||
135 | list_insert_tail(&pio_req->list, &pio_queue->free_ioreqs); | 134 | list_insert_tail(&pio_req->list, &pio_queue->free_ioreqs); |
136 | pio_req++; | 135 | pio_req++; |
137 | } | 136 | } |
diff --git a/drivers/staging/rtl8712/rtl871x_io.h b/drivers/staging/rtl8712/rtl871x_io.h index 86308a0093e..d3d8727c2ec 100644 --- a/drivers/staging/rtl8712/rtl871x_io.h +++ b/drivers/staging/rtl8712/rtl871x_io.h | |||
@@ -117,7 +117,6 @@ struct io_req { | |||
117 | u32 command; | 117 | u32 command; |
118 | u32 status; | 118 | u32 status; |
119 | u8 *pbuf; | 119 | u8 *pbuf; |
120 | struct semaphore sema; | ||
121 | void (*_async_io_callback)(struct _adapter *padater, | 120 | void (*_async_io_callback)(struct _adapter *padater, |
122 | struct io_req *pio_req, u8 *cnxt); | 121 | struct io_req *pio_req, u8 *cnxt); |
123 | u8 *cnxt; | 122 | u8 *cnxt; |
diff --git a/drivers/staging/rtl8712/rtl871x_pwrctrl.c b/drivers/staging/rtl8712/rtl871x_pwrctrl.c index 23e72a0401a..9fd2ec7596c 100644 --- a/drivers/staging/rtl8712/rtl871x_pwrctrl.c +++ b/drivers/staging/rtl8712/rtl871x_pwrctrl.c | |||
@@ -100,7 +100,6 @@ void r8712_cpwm_int_hdl(struct _adapter *padapter, | |||
100 | { | 100 | { |
101 | struct pwrctrl_priv *pwrpriv = &(padapter->pwrctrlpriv); | 101 | struct pwrctrl_priv *pwrpriv = &(padapter->pwrctrlpriv); |
102 | struct cmd_priv *pcmdpriv = &(padapter->cmdpriv); | 102 | struct cmd_priv *pcmdpriv = &(padapter->cmdpriv); |
103 | struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); | ||
104 | 103 | ||
105 | if (pwrpriv->cpwm_tog == ((preportpwrstate->state) & 0x80)) | 104 | if (pwrpriv->cpwm_tog == ((preportpwrstate->state) & 0x80)) |
106 | return; | 105 | return; |
@@ -110,8 +109,6 @@ void r8712_cpwm_int_hdl(struct _adapter *padapter, | |||
110 | if (pwrpriv->cpwm >= PS_STATE_S2) { | 109 | if (pwrpriv->cpwm >= PS_STATE_S2) { |
111 | if (pwrpriv->alives & CMD_ALIVE) | 110 | if (pwrpriv->alives & CMD_ALIVE) |
112 | up(&(pcmdpriv->cmd_queue_sema)); | 111 | up(&(pcmdpriv->cmd_queue_sema)); |
113 | if (pwrpriv->alives & XMIT_ALIVE) | ||
114 | up(&(pxmitpriv->xmit_sema)); | ||
115 | } | 112 | } |
116 | pwrpriv->cpwm_tog = (preportpwrstate->state) & 0x80; | 113 | pwrpriv->cpwm_tog = (preportpwrstate->state) & 0x80; |
117 | up(&pwrpriv->lock); | 114 | up(&pwrpriv->lock); |
@@ -145,12 +142,12 @@ static void SetPSModeWorkItemCallback(struct work_struct *work) | |||
145 | struct pwrctrl_priv, SetPSModeWorkItem); | 142 | struct pwrctrl_priv, SetPSModeWorkItem); |
146 | struct _adapter *padapter = container_of(pwrpriv, | 143 | struct _adapter *padapter = container_of(pwrpriv, |
147 | struct _adapter, pwrctrlpriv); | 144 | struct _adapter, pwrctrlpriv); |
148 | _enter_pwrlock(&pwrpriv->lock); | ||
149 | if (!pwrpriv->bSleep) { | 145 | if (!pwrpriv->bSleep) { |
146 | _enter_pwrlock(&pwrpriv->lock); | ||
150 | if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) | 147 | if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) |
151 | r8712_set_rpwm(padapter, PS_STATE_S4); | 148 | r8712_set_rpwm(padapter, PS_STATE_S4); |
149 | up(&pwrpriv->lock); | ||
152 | } | 150 | } |
153 | up(&pwrpriv->lock); | ||
154 | } | 151 | } |
155 | 152 | ||
156 | static void rpwm_workitem_callback(struct work_struct *work) | 153 | static void rpwm_workitem_callback(struct work_struct *work) |
@@ -160,13 +157,13 @@ static void rpwm_workitem_callback(struct work_struct *work) | |||
160 | struct _adapter *padapter = container_of(pwrpriv, | 157 | struct _adapter *padapter = container_of(pwrpriv, |
161 | struct _adapter, pwrctrlpriv); | 158 | struct _adapter, pwrctrlpriv); |
162 | u8 cpwm = pwrpriv->cpwm; | 159 | u8 cpwm = pwrpriv->cpwm; |
163 | _enter_pwrlock(&pwrpriv->lock); | ||
164 | if (pwrpriv->cpwm != pwrpriv->rpwm) { | 160 | if (pwrpriv->cpwm != pwrpriv->rpwm) { |
161 | _enter_pwrlock(&pwrpriv->lock); | ||
165 | cpwm = r8712_read8(padapter, SDIO_HCPWM); | 162 | cpwm = r8712_read8(padapter, SDIO_HCPWM); |
166 | pwrpriv->rpwm_retry = 1; | 163 | pwrpriv->rpwm_retry = 1; |
167 | r8712_set_rpwm(padapter, pwrpriv->rpwm); | 164 | r8712_set_rpwm(padapter, pwrpriv->rpwm); |
165 | up(&pwrpriv->lock); | ||
168 | } | 166 | } |
169 | up(&pwrpriv->lock); | ||
170 | } | 167 | } |
171 | 168 | ||
172 | static void rpwm_check_handler (void *FunctionContext) | 169 | static void rpwm_check_handler (void *FunctionContext) |
diff --git a/drivers/staging/rtl8712/rtl871x_pwrctrl.h b/drivers/staging/rtl8712/rtl871x_pwrctrl.h index b41ca2892be..6024c4f63d5 100644 --- a/drivers/staging/rtl8712/rtl871x_pwrctrl.h +++ b/drivers/staging/rtl8712/rtl871x_pwrctrl.h | |||
@@ -133,7 +133,6 @@ struct pwrctrl_priv { | |||
133 | u8 rpwm_retry; | 133 | u8 rpwm_retry; |
134 | uint bSetPSModeWorkItemInProgress; | 134 | uint bSetPSModeWorkItemInProgress; |
135 | 135 | ||
136 | struct semaphore pnp_pwr_mgnt_sema; | ||
137 | spinlock_t pnp_pwr_mgnt_lock; | 136 | spinlock_t pnp_pwr_mgnt_lock; |
138 | s32 pnp_current_pwr_state; | 137 | s32 pnp_current_pwr_state; |
139 | u8 pnp_bstop_trx; | 138 | u8 pnp_bstop_trx; |
diff --git a/drivers/staging/rtl8712/rtl871x_recv.c b/drivers/staging/rtl8712/rtl871x_recv.c index 7069f06d9b5..5b03b405883 100644 --- a/drivers/staging/rtl8712/rtl871x_recv.c +++ b/drivers/staging/rtl8712/rtl871x_recv.c | |||
@@ -93,7 +93,6 @@ sint _r8712_init_recv_priv(struct recv_priv *precvpriv, | |||
93 | precvframe++; | 93 | precvframe++; |
94 | } | 94 | } |
95 | precvpriv->rx_pending_cnt = 1; | 95 | precvpriv->rx_pending_cnt = 1; |
96 | sema_init(&precvpriv->allrxreturnevt, 0); | ||
97 | return r8712_init_recv_priv(precvpriv, padapter); | 96 | return r8712_init_recv_priv(precvpriv, padapter); |
98 | } | 97 | } |
99 | 98 | ||
diff --git a/drivers/staging/rtl8712/rtl871x_recv.h b/drivers/staging/rtl8712/rtl871x_recv.h index cc7a72fee1c..e42e6f0a15e 100644 --- a/drivers/staging/rtl8712/rtl871x_recv.h +++ b/drivers/staging/rtl8712/rtl871x_recv.h | |||
@@ -85,8 +85,6 @@ using enter_critical section to protect | |||
85 | */ | 85 | */ |
86 | struct recv_priv { | 86 | struct recv_priv { |
87 | spinlock_t lock; | 87 | spinlock_t lock; |
88 | struct semaphore recv_sema; | ||
89 | struct semaphore terminate_recvthread_sema; | ||
90 | struct __queue free_recv_queue; | 88 | struct __queue free_recv_queue; |
91 | struct __queue recv_pending_queue; | 89 | struct __queue recv_pending_queue; |
92 | u8 *pallocated_frame_buf; | 90 | u8 *pallocated_frame_buf; |
@@ -100,7 +98,6 @@ struct recv_priv { | |||
100 | uint rx_largepacket_crcerr; | 98 | uint rx_largepacket_crcerr; |
101 | uint rx_smallpacket_crcerr; | 99 | uint rx_smallpacket_crcerr; |
102 | uint rx_middlepacket_crcerr; | 100 | uint rx_middlepacket_crcerr; |
103 | struct semaphore allrxreturnevt; | ||
104 | u8 rx_pending_cnt; | 101 | u8 rx_pending_cnt; |
105 | uint ff_hwaddr; | 102 | uint ff_hwaddr; |
106 | struct tasklet_struct recv_tasklet; | 103 | struct tasklet_struct recv_tasklet; |
diff --git a/drivers/staging/rtl8712/rtl871x_xmit.c b/drivers/staging/rtl8712/rtl871x_xmit.c index 8bbdee70f86..aa57e7754f0 100644 --- a/drivers/staging/rtl8712/rtl871x_xmit.c +++ b/drivers/staging/rtl8712/rtl871x_xmit.c | |||
@@ -71,8 +71,6 @@ sint _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv, | |||
71 | 71 | ||
72 | memset((unsigned char *)pxmitpriv, 0, sizeof(struct xmit_priv)); | 72 | memset((unsigned char *)pxmitpriv, 0, sizeof(struct xmit_priv)); |
73 | spin_lock_init(&pxmitpriv->lock); | 73 | spin_lock_init(&pxmitpriv->lock); |
74 | sema_init(&pxmitpriv->xmit_sema, 0); | ||
75 | sema_init(&pxmitpriv->terminate_xmitthread_sema, 0); | ||
76 | /* | 74 | /* |
77 | Please insert all the queue initializaiton using _init_queue below | 75 | Please insert all the queue initializaiton using _init_queue below |
78 | */ | 76 | */ |
@@ -121,7 +119,6 @@ sint _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv, | |||
121 | _r8712_init_hw_txqueue(&pxmitpriv->bmc_txqueue, BMC_QUEUE_INX); | 119 | _r8712_init_hw_txqueue(&pxmitpriv->bmc_txqueue, BMC_QUEUE_INX); |
122 | pxmitpriv->frag_len = MAX_FRAG_THRESHOLD; | 120 | pxmitpriv->frag_len = MAX_FRAG_THRESHOLD; |
123 | pxmitpriv->txirp_cnt = 1; | 121 | pxmitpriv->txirp_cnt = 1; |
124 | sema_init(&(pxmitpriv->tx_retevt), 0); | ||
125 | /*per AC pending irp*/ | 122 | /*per AC pending irp*/ |
126 | pxmitpriv->beq_cnt = 0; | 123 | pxmitpriv->beq_cnt = 0; |
127 | pxmitpriv->bkq_cnt = 0; | 124 | pxmitpriv->bkq_cnt = 0; |
diff --git a/drivers/staging/rtl8712/rtl871x_xmit.h b/drivers/staging/rtl8712/rtl871x_xmit.h index a034c0fec71..638b79b4c5a 100644 --- a/drivers/staging/rtl8712/rtl871x_xmit.h +++ b/drivers/staging/rtl8712/rtl871x_xmit.h | |||
@@ -202,8 +202,6 @@ struct hw_txqueue { | |||
202 | 202 | ||
203 | struct xmit_priv { | 203 | struct xmit_priv { |
204 | spinlock_t lock; | 204 | spinlock_t lock; |
205 | struct semaphore xmit_sema; | ||
206 | struct semaphore terminate_xmitthread_sema; | ||
207 | struct __queue be_pending; | 205 | struct __queue be_pending; |
208 | struct __queue bk_pending; | 206 | struct __queue bk_pending; |
209 | struct __queue vi_pending; | 207 | struct __queue vi_pending; |
@@ -233,7 +231,6 @@ struct xmit_priv { | |||
233 | uint tx_drop; | 231 | uint tx_drop; |
234 | struct hw_xmit *hwxmits; | 232 | struct hw_xmit *hwxmits; |
235 | u8 hwxmit_entry; | 233 | u8 hwxmit_entry; |
236 | struct semaphore tx_retevt;/*all tx return event;*/ | ||
237 | u8 txirp_cnt; | 234 | u8 txirp_cnt; |
238 | struct tasklet_struct xmit_tasklet; | 235 | struct tasklet_struct xmit_tasklet; |
239 | _workitem xmit_pipe4_reset_wi; | 236 | _workitem xmit_pipe4_reset_wi; |
diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c index 5385da2e9cd..01378eaa79b 100644 --- a/drivers/staging/rtl8712/usb_intf.c +++ b/drivers/staging/rtl8712/usb_intf.c | |||
@@ -280,7 +280,6 @@ static uint r8712_usb_dvobj_init(struct _adapter *padapter) | |||
280 | } | 280 | } |
281 | if ((r8712_alloc_io_queue(padapter)) == _FAIL) | 281 | if ((r8712_alloc_io_queue(padapter)) == _FAIL) |
282 | status = _FAIL; | 282 | status = _FAIL; |
283 | sema_init(&(padapter->dvobjpriv.usb_suspend_sema), 0); | ||
284 | return status; | 283 | return status; |
285 | } | 284 | } |
286 | 285 | ||