Lines Matching refs:wimax_dev
93 void wimax_report_rfkill_hw(struct wimax_dev *wimax_dev, in wimax_report_rfkill_hw() argument
97 struct device *dev = wimax_dev_to_dev(wimax_dev); in wimax_report_rfkill_hw()
100 d_fnstart(3, dev, "(wimax_dev %p state %u)\n", wimax_dev, state); in wimax_report_rfkill_hw()
104 mutex_lock(&wimax_dev->mutex); in wimax_report_rfkill_hw()
105 result = wimax_dev_is_ready(wimax_dev); in wimax_report_rfkill_hw()
109 if (state != wimax_dev->rf_hw) { in wimax_report_rfkill_hw()
110 wimax_dev->rf_hw = state; in wimax_report_rfkill_hw()
111 if (wimax_dev->rf_hw == WIMAX_RF_ON && in wimax_report_rfkill_hw()
112 wimax_dev->rf_sw == WIMAX_RF_ON) in wimax_report_rfkill_hw()
117 result = rfkill_set_hw_state(wimax_dev->rfkill, in wimax_report_rfkill_hw()
120 __wimax_state_change(wimax_dev, wimax_state); in wimax_report_rfkill_hw()
123 mutex_unlock(&wimax_dev->mutex); in wimax_report_rfkill_hw()
125 wimax_dev, state, result); in wimax_report_rfkill_hw()
148 void wimax_report_rfkill_sw(struct wimax_dev *wimax_dev, in wimax_report_rfkill_sw() argument
152 struct device *dev = wimax_dev_to_dev(wimax_dev); in wimax_report_rfkill_sw()
155 d_fnstart(3, dev, "(wimax_dev %p state %u)\n", wimax_dev, state); in wimax_report_rfkill_sw()
159 mutex_lock(&wimax_dev->mutex); in wimax_report_rfkill_sw()
160 result = wimax_dev_is_ready(wimax_dev); in wimax_report_rfkill_sw()
164 if (state != wimax_dev->rf_sw) { in wimax_report_rfkill_sw()
165 wimax_dev->rf_sw = state; in wimax_report_rfkill_sw()
166 if (wimax_dev->rf_hw == WIMAX_RF_ON && in wimax_report_rfkill_sw()
167 wimax_dev->rf_sw == WIMAX_RF_ON) in wimax_report_rfkill_sw()
171 __wimax_state_change(wimax_dev, wimax_state); in wimax_report_rfkill_sw()
172 rfkill_set_sw_state(wimax_dev->rfkill, state == WIMAX_RF_OFF); in wimax_report_rfkill_sw()
175 mutex_unlock(&wimax_dev->mutex); in wimax_report_rfkill_sw()
177 wimax_dev, state, result); in wimax_report_rfkill_sw()
205 int __wimax_rf_toggle_radio(struct wimax_dev *wimax_dev, in __wimax_rf_toggle_radio() argument
209 struct device *dev = wimax_dev_to_dev(wimax_dev); in __wimax_rf_toggle_radio()
213 d_fnstart(3, dev, "(wimax_dev %p state %u)\n", wimax_dev, state); in __wimax_rf_toggle_radio()
214 if (wimax_dev->rf_sw == state) in __wimax_rf_toggle_radio()
216 if (wimax_dev->op_rfkill_sw_toggle != NULL) in __wimax_rf_toggle_radio()
217 result = wimax_dev->op_rfkill_sw_toggle(wimax_dev, state); in __wimax_rf_toggle_radio()
224 wimax_dev->rf_sw = state; in __wimax_rf_toggle_radio()
227 __wimax_state_change(wimax_dev, wimax_state); in __wimax_rf_toggle_radio()
231 wimax_dev, state, result); in __wimax_rf_toggle_radio()
251 struct wimax_dev *wimax_dev = data; in wimax_rfkill_set_radio_block() local
252 struct device *dev = wimax_dev_to_dev(wimax_dev); in wimax_rfkill_set_radio_block()
255 d_fnstart(3, dev, "(wimax_dev %p blocked %u)\n", wimax_dev, blocked); in wimax_rfkill_set_radio_block()
259 mutex_lock(&wimax_dev->mutex); in wimax_rfkill_set_radio_block()
260 if (wimax_dev->state <= __WIMAX_ST_QUIESCING) in wimax_rfkill_set_radio_block()
263 result = __wimax_rf_toggle_radio(wimax_dev, rf_state); in wimax_rfkill_set_radio_block()
264 mutex_unlock(&wimax_dev->mutex); in wimax_rfkill_set_radio_block()
266 wimax_dev, blocked, result); in wimax_rfkill_set_radio_block()
300 int wimax_rfkill(struct wimax_dev *wimax_dev, enum wimax_rf_state state) in wimax_rfkill() argument
303 struct device *dev = wimax_dev_to_dev(wimax_dev); in wimax_rfkill()
305 d_fnstart(3, dev, "(wimax_dev %p state %u)\n", wimax_dev, state); in wimax_rfkill()
306 mutex_lock(&wimax_dev->mutex); in wimax_rfkill()
307 result = wimax_dev_is_ready(wimax_dev); in wimax_rfkill()
320 result = __wimax_rf_toggle_radio(wimax_dev, state); in wimax_rfkill()
323 rfkill_set_sw_state(wimax_dev->rfkill, state == WIMAX_RF_OFF); in wimax_rfkill()
331 result = wimax_dev->rf_sw << 1 | wimax_dev->rf_hw; in wimax_rfkill()
334 mutex_unlock(&wimax_dev->mutex); in wimax_rfkill()
336 wimax_dev, state, result); in wimax_rfkill()
347 int wimax_rfkill_add(struct wimax_dev *wimax_dev) in wimax_rfkill_add() argument
351 struct device *dev = wimax_dev_to_dev(wimax_dev); in wimax_rfkill_add()
353 d_fnstart(3, dev, "(wimax_dev %p)\n", wimax_dev); in wimax_rfkill_add()
356 rfkill = rfkill_alloc(wimax_dev->name, dev, RFKILL_TYPE_WIMAX, in wimax_rfkill_add()
357 &wimax_rfkill_ops, wimax_dev); in wimax_rfkill_add()
363 wimax_dev->rfkill = rfkill; in wimax_rfkill_add()
366 result = rfkill_register(wimax_dev->rfkill); in wimax_rfkill_add()
371 if (wimax_dev->op_rfkill_sw_toggle == NULL) in wimax_rfkill_add()
372 wimax_dev->rf_sw = WIMAX_RF_ON; in wimax_rfkill_add()
374 d_fnend(3, dev, "(wimax_dev %p) = 0\n", wimax_dev); in wimax_rfkill_add()
378 rfkill_destroy(wimax_dev->rfkill); in wimax_rfkill_add()
380 d_fnend(3, dev, "(wimax_dev %p) = %d\n", wimax_dev, result); in wimax_rfkill_add()
393 void wimax_rfkill_rm(struct wimax_dev *wimax_dev) in wimax_rfkill_rm() argument
395 struct device *dev = wimax_dev_to_dev(wimax_dev); in wimax_rfkill_rm()
396 d_fnstart(3, dev, "(wimax_dev %p)\n", wimax_dev); in wimax_rfkill_rm()
397 rfkill_unregister(wimax_dev->rfkill); in wimax_rfkill_rm()
398 rfkill_destroy(wimax_dev->rfkill); in wimax_rfkill_rm()
399 d_fnend(3, dev, "(wimax_dev %p)\n", wimax_dev); in wimax_rfkill_rm()
416 struct wimax_dev *wimax_dev; in wimax_gnl_doit_rfkill() local
427 wimax_dev = wimax_dev_get_by_genl_info(info, ifindex); in wimax_gnl_doit_rfkill()
428 if (wimax_dev == NULL) in wimax_gnl_doit_rfkill()
430 dev = wimax_dev_to_dev(wimax_dev); in wimax_gnl_doit_rfkill()
440 result = wimax_rfkill(wimax_dev, new_state); in wimax_gnl_doit_rfkill()
442 dev_put(wimax_dev->net_dev); in wimax_gnl_doit_rfkill()