aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rtl8712
diff options
context:
space:
mode:
authorLarry Finger <Larry.Finger@lwfinger.net>2012-02-08 20:42:03 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-02-09 12:12:55 -0500
commit86587b671bf87ed81d2d89cd1199af912402a05f (patch)
treea4b45e66fdb5399a5082deadcf79f6a19ad0c346 /drivers/staging/rtl8712
parentd8e4cd99d5a13f65fb961e627b63ae70ab0fe951 (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.h1
-rw-r--r--drivers/staging/rtl8712/os_intfs.c1
-rw-r--r--drivers/staging/rtl8712/osdep_service.h17
-rw-r--r--drivers/staging/rtl8712/rtl8712_recv.c2
-rw-r--r--drivers/staging/rtl8712/rtl871x_io.c1
-rw-r--r--drivers/staging/rtl8712/rtl871x_io.h1
-rw-r--r--drivers/staging/rtl8712/rtl871x_pwrctrl.c11
-rw-r--r--drivers/staging/rtl8712/rtl871x_pwrctrl.h1
-rw-r--r--drivers/staging/rtl8712/rtl871x_recv.c1
-rw-r--r--drivers/staging/rtl8712/rtl871x_recv.h3
-rw-r--r--drivers/staging/rtl8712/rtl871x_xmit.c3
-rw-r--r--drivers/staging/rtl8712/rtl871x_xmit.h3
-rw-r--r--drivers/staging/rtl8712/usb_intf.c1
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
75static inline void _enter_hwio_critical(struct semaphore *prwlock,
76 unsigned long *pirqL)
77{
78 down(prwlock);
79}
80
81static inline void _exit_hwio_critical(struct semaphore *prwlock,
82 unsigned long *pirqL)
83{
84 up(prwlock);
85}
86
87static inline void list_delete(struct list_head *plist) 75static 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
155static inline void _rtl_rwlock_init(struct semaphore *prwlock)
156{
157 sema_init(prwlock, 1);
158}
159
160static inline void _init_listhead(struct list_head *list) 143static 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
156static void rpwm_workitem_callback(struct work_struct *work) 153static 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
172static void rpwm_check_handler (void *FunctionContext) 169static 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*/
86struct recv_priv { 86struct 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
203struct xmit_priv { 203struct 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