Lines Matching refs:mac
125 static void housekeeping_init(struct zd_mac *mac);
126 static void housekeeping_enable(struct zd_mac *mac);
127 static void housekeeping_disable(struct zd_mac *mac);
128 static void beacon_init(struct zd_mac *mac);
129 static void beacon_enable(struct zd_mac *mac);
130 static void beacon_disable(struct zd_mac *mac);
131 static void set_rts_cts(struct zd_mac *mac, unsigned int short_preamble);
152 struct zd_mac *mac = zd_hw_mac(hw); in zd_check_signal() local
154 dev_dbg_f_cond(zd_mac_dev(mac), signal < 0 || signal > 100, in zd_check_signal()
170 struct zd_mac *mac = zd_hw_mac(hw); in zd_mac_preinit_hw() local
172 r = zd_chip_read_mac_addr_fw(&mac->chip, addr); in zd_mac_preinit_hw()
184 struct zd_mac *mac = zd_hw_mac(hw); in zd_mac_init_hw() local
185 struct zd_chip *chip = &mac->chip; in zd_mac_init_hw()
201 spin_lock_irq(&mac->lock); in zd_mac_init_hw()
202 mac->regdomain = mac->default_regdomain = default_regdomain; in zd_mac_init_hw()
203 spin_unlock_irq(&mac->lock); in zd_mac_init_hw()
211 r = zd_reg2alpha2(mac->regdomain, alpha2); in zd_mac_init_hw()
222 void zd_mac_clear(struct zd_mac *mac) in zd_mac_clear() argument
225 zd_chip_clear(&mac->chip); in zd_mac_clear()
226 ZD_MEMCLEAR(mac, sizeof(struct zd_mac)); in zd_mac_clear()
229 static int set_rx_filter(struct zd_mac *mac) in set_rx_filter() argument
234 spin_lock_irqsave(&mac->lock, flags); in set_rx_filter()
235 if (mac->pass_ctrl) in set_rx_filter()
237 spin_unlock_irqrestore(&mac->lock, flags); in set_rx_filter()
239 return zd_iowrite32(&mac->chip, CR_RX_FILTER, filter); in set_rx_filter()
242 static int set_mac_and_bssid(struct zd_mac *mac) in set_mac_and_bssid() argument
246 if (!mac->vif) in set_mac_and_bssid()
249 r = zd_write_mac_addr(&mac->chip, mac->vif->addr); in set_mac_and_bssid()
256 if (mac->type != NL80211_IFTYPE_AP) in set_mac_and_bssid()
257 return set_rx_filter(mac); in set_mac_and_bssid()
259 return zd_write_bssid(&mac->chip, mac->vif->addr); in set_mac_and_bssid()
262 static int set_mc_hash(struct zd_mac *mac) in set_mc_hash() argument
266 return zd_chip_set_multicast_hash(&mac->chip, &hash); in set_mc_hash()
271 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_start() local
272 struct zd_chip *chip = &mac->chip; in zd_op_start()
289 r = set_rx_filter(mac); in zd_op_start()
292 r = set_mc_hash(mac); in zd_op_start()
315 housekeeping_enable(mac); in zd_op_start()
316 beacon_enable(mac); in zd_op_start()
317 set_bit(ZD_DEVICE_RUNNING, &mac->flags); in zd_op_start()
331 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_stop() local
332 struct zd_chip *chip = &mac->chip; in zd_op_stop()
334 struct sk_buff_head *ack_wait_queue = &mac->ack_wait_queue; in zd_op_stop()
336 clear_bit(ZD_DEVICE_RUNNING, &mac->flags); in zd_op_stop()
344 beacon_disable(mac); in zd_op_stop()
345 housekeeping_disable(mac); in zd_op_stop()
357 int zd_restore_settings(struct zd_mac *mac) in zd_restore_settings() argument
365 dev_dbg_f(zd_mac_dev(mac), "\n"); in zd_restore_settings()
367 spin_lock_irq(&mac->lock); in zd_restore_settings()
368 multicast_hash = mac->multicast_hash; in zd_restore_settings()
369 short_preamble = mac->short_preamble; in zd_restore_settings()
370 beacon_interval = mac->beacon.interval; in zd_restore_settings()
371 beacon_period = mac->beacon.period; in zd_restore_settings()
372 channel = mac->channel; in zd_restore_settings()
373 spin_unlock_irq(&mac->lock); in zd_restore_settings()
375 r = set_mac_and_bssid(mac); in zd_restore_settings()
377 dev_dbg_f(zd_mac_dev(mac), "set_mac_and_bssid failed, %d\n", r); in zd_restore_settings()
381 r = zd_chip_set_channel(&mac->chip, channel); in zd_restore_settings()
383 dev_dbg_f(zd_mac_dev(mac), "zd_chip_set_channel failed, %d\n", in zd_restore_settings()
388 set_rts_cts(mac, short_preamble); in zd_restore_settings()
390 r = zd_chip_set_multicast_hash(&mac->chip, &multicast_hash); in zd_restore_settings()
392 dev_dbg_f(zd_mac_dev(mac), in zd_restore_settings()
397 if (mac->type == NL80211_IFTYPE_MESH_POINT || in zd_restore_settings()
398 mac->type == NL80211_IFTYPE_ADHOC || in zd_restore_settings()
399 mac->type == NL80211_IFTYPE_AP) { in zd_restore_settings()
400 if (mac->vif != NULL) { in zd_restore_settings()
401 beacon = ieee80211_beacon_get(mac->hw, mac->vif, 0); in zd_restore_settings()
403 zd_mac_config_beacon(mac->hw, beacon, false); in zd_restore_settings()
406 zd_set_beacon_interval(&mac->chip, beacon_interval, in zd_restore_settings()
407 beacon_period, mac->type); in zd_restore_settings()
409 spin_lock_irq(&mac->lock); in zd_restore_settings()
410 mac->beacon.last_update = jiffies; in zd_restore_settings()
411 spin_unlock_irq(&mac->lock); in zd_restore_settings()
488 struct zd_mac *mac = zd_hw_mac(hw); in zd_mac_tx_failed() local
489 struct sk_buff_head *q = &mac->ack_wait_queue; in zd_mac_tx_failed()
512 if (tx_status->failure && mac->ack_pending && in zd_mac_tx_failed()
520 if (unlikely(!ether_addr_equal(tx_hdr->addr1, tx_status->mac))) in zd_mac_tx_failed()
547 mac->ack_pending ? mac->ack_signal : 0, in zd_mac_tx_failed()
549 mac->ack_pending = 0; in zd_mac_tx_failed()
570 struct zd_mac *mac = zd_hw_mac(hw); in zd_mac_tx_to_dev() local
582 struct sk_buff_head *q = &mac->ack_wait_queue; in zd_mac_tx_to_dev()
587 mac->ack_pending ? mac->ack_signal : 0, in zd_mac_tx_to_dev()
589 mac->ack_pending = 0; in zd_mac_tx_to_dev()
641 static void cs_set_control(struct zd_mac *mac, struct zd_ctrlset *cs, in cs_set_control() argument
674 static bool zd_mac_match_cur_beacon(struct zd_mac *mac, struct sk_buff *beacon) in zd_mac_match_cur_beacon() argument
676 if (!mac->beacon.cur_beacon) in zd_mac_match_cur_beacon()
679 if (mac->beacon.cur_beacon->len != beacon->len) in zd_mac_match_cur_beacon()
682 return !memcmp(beacon->data, mac->beacon.cur_beacon->data, beacon->len); in zd_mac_match_cur_beacon()
685 static void zd_mac_free_cur_beacon_locked(struct zd_mac *mac) in zd_mac_free_cur_beacon_locked() argument
687 ZD_ASSERT(mutex_is_locked(&mac->chip.mutex)); in zd_mac_free_cur_beacon_locked()
689 kfree_skb(mac->beacon.cur_beacon); in zd_mac_free_cur_beacon_locked()
690 mac->beacon.cur_beacon = NULL; in zd_mac_free_cur_beacon_locked()
693 static void zd_mac_free_cur_beacon(struct zd_mac *mac) in zd_mac_free_cur_beacon() argument
695 mutex_lock(&mac->chip.mutex); in zd_mac_free_cur_beacon()
696 zd_mac_free_cur_beacon_locked(mac); in zd_mac_free_cur_beacon()
697 mutex_unlock(&mac->chip.mutex); in zd_mac_free_cur_beacon()
703 struct zd_mac *mac = zd_hw_mac(hw); in zd_mac_config_beacon() local
711 mutex_lock(&mac->chip.mutex); in zd_mac_config_beacon()
714 if (zd_mac_match_cur_beacon(mac, beacon)) { in zd_mac_config_beacon()
720 num_cmds = 1 + zd_chip_is_zd1211b(&mac->chip) + full_len; in zd_mac_config_beacon()
728 r = zd_iowrite32_locked(&mac->chip, 0, CR_BCN_FIFO_SEMAPHORE); in zd_mac_config_beacon()
731 r = zd_ioread32_locked(&mac->chip, &tmp, CR_BCN_FIFO_SEMAPHORE); in zd_mac_config_beacon()
742 r = zd_ioread32_locked(&mac->chip, &tmp, CR_BCN_FIFO_SEMAPHORE); in zd_mac_config_beacon()
747 dev_err(zd_mac_dev(mac), in zd_mac_config_beacon()
750 dev_err(zd_mac_dev(mac), in zd_mac_config_beacon()
762 if (zd_chip_is_zd1211b(&mac->chip)) { in zd_mac_config_beacon()
782 r = zd_iowrite32a_locked(&mac->chip, ioreqs, num_cmds); in zd_mac_config_beacon()
790 ret = zd_iowrite32_locked(&mac->chip, 1, CR_BCN_FIFO_SEMAPHORE); in zd_mac_config_beacon()
798 ret = zd_iowrite32_locked(&mac->chip, 1, CR_BCN_FIFO_SEMAPHORE); in zd_mac_config_beacon()
802 dev_err(zd_mac_dev(mac), "Could not release " in zd_mac_config_beacon()
810 zd_mac_free_cur_beacon_locked(mac); in zd_mac_config_beacon()
816 zd_mac_free_cur_beacon_locked(mac); in zd_mac_config_beacon()
817 mac->beacon.cur_beacon = beacon; in zd_mac_config_beacon()
824 r = zd_iowrite32_locked(&mac->chip, 0x00000400 | (full_len << 19), in zd_mac_config_beacon()
830 mutex_unlock(&mac->chip.mutex); in zd_mac_config_beacon()
835 zd_mac_free_cur_beacon_locked(mac); in zd_mac_config_beacon()
838 mutex_unlock(&mac->chip.mutex); in zd_mac_config_beacon()
842 dev_warn(zd_mac_dev(mac), "CR_BCN_FIFO_SEMAPHORE stuck, " in zd_mac_config_beacon()
844 usb_queue_reset_device(mac->chip.usb.intf); in zd_mac_config_beacon()
849 static int fill_ctrlset(struct zd_mac *mac, in fill_ctrlset() argument
870 txrate = ieee80211_get_tx_rate(mac->hw, info); in fill_ctrlset()
878 cs_set_control(mac, cs, hdr, info); in fill_ctrlset()
885 cs->packet_length = cpu_to_le16(zd_chip_is_zd1211b(&mac->chip) ? in fill_ctrlset()
927 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_tx() local
931 r = fill_ctrlset(mac, skb); in zd_op_tx()
937 r = zd_usb_tx(&mac->chip.usb, skb); in zd_op_tx()
963 struct zd_mac *mac = zd_hw_mac(hw); in filter_ack() local
973 q = &mac->ack_wait_queue; in filter_ack()
980 if (mac->ack_pending && skb_queue_is_first(q, skb)) in filter_ack()
995 mac->ack_pending ? mac->ack_signal : 0, in filter_ack()
997 mac->ack_pending = 0; in filter_ack()
1000 mac->ack_pending = 1; in filter_ack()
1001 mac->ack_signal = stats->signal; in filter_ack()
1004 if (mac->type == NL80211_IFTYPE_AP) { in filter_ack()
1006 zd_mac_tx_status(hw, skb, mac->ack_signal, NULL); in filter_ack()
1007 mac->ack_pending = 0; in filter_ack()
1017 struct zd_mac *mac = zd_hw_mac(hw); in zd_mac_rx() local
1046 if (mac->pass_failed_fcs && in zd_mac_rx()
1055 stats.freq = zd_channels[_zd_chip_get_channel(&mac->chip) - 1].center_freq; in zd_mac_rx()
1062 for (i = 0; i < mac->band.n_bitrates; i++) in zd_mac_rx()
1063 if (rate == mac->band.bitrates[i].hw_value) in zd_mac_rx()
1076 && !mac->pass_ctrl) in zd_mac_rx()
1101 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_add_interface() local
1104 if (mac->type != NL80211_IFTYPE_UNSPECIFIED) in zd_op_add_interface()
1113 mac->type = vif->type; in zd_op_add_interface()
1119 mac->vif = vif; in zd_op_add_interface()
1121 return set_mac_and_bssid(mac); in zd_op_add_interface()
1127 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_remove_interface() local
1128 mac->type = NL80211_IFTYPE_UNSPECIFIED; in zd_op_remove_interface()
1129 mac->vif = NULL; in zd_op_remove_interface()
1130 zd_set_beacon_interval(&mac->chip, 0, 0, NL80211_IFTYPE_UNSPECIFIED); in zd_op_remove_interface()
1131 zd_write_mac_addr(&mac->chip, NULL); in zd_op_remove_interface()
1133 zd_mac_free_cur_beacon(mac); in zd_op_remove_interface()
1138 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_config() local
1141 spin_lock_irq(&mac->lock); in zd_op_config()
1142 mac->channel = conf->chandef.chan->hw_value; in zd_op_config()
1143 spin_unlock_irq(&mac->lock); in zd_op_config()
1145 return zd_chip_set_channel(&mac->chip, conf->chandef.chan->hw_value); in zd_op_config()
1148 static void zd_beacon_done(struct zd_mac *mac) in zd_beacon_done() argument
1152 if (!test_bit(ZD_DEVICE_RUNNING, &mac->flags)) in zd_beacon_done()
1154 if (!mac->vif || mac->vif->type != NL80211_IFTYPE_AP) in zd_beacon_done()
1160 while (!ieee80211_queue_stopped(mac->hw, 0)) { in zd_beacon_done()
1161 skb = ieee80211_get_buffered_bc(mac->hw, mac->vif); in zd_beacon_done()
1164 zd_op_tx(mac->hw, NULL, skb); in zd_beacon_done()
1170 beacon = ieee80211_beacon_get(mac->hw, mac->vif, 0); in zd_beacon_done()
1172 zd_mac_config_beacon(mac->hw, beacon, true); in zd_beacon_done()
1174 spin_lock_irq(&mac->lock); in zd_beacon_done()
1175 mac->beacon.last_update = jiffies; in zd_beacon_done()
1176 spin_unlock_irq(&mac->lock); in zd_beacon_done()
1183 struct zd_mac *mac = container_of(work, struct zd_mac, process_intr); in zd_process_intr() local
1185 spin_lock_irqsave(&mac->lock, flags); in zd_process_intr()
1186 int_status = le16_to_cpu(*(__le16 *)(mac->intr_buffer + 4)); in zd_process_intr()
1187 spin_unlock_irqrestore(&mac->lock, flags); in zd_process_intr()
1191 zd_beacon_done(mac); in zd_process_intr()
1193 dev_dbg_f(zd_mac_dev(mac), "Unsupported interrupt\n"); in zd_process_intr()
1196 zd_chip_enable_hwint(&mac->chip); in zd_process_intr()
1203 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_prepare_multicast() local
1210 dev_dbg_f(zd_mac_dev(mac), "mc addr %pM\n", ha->addr); in zd_op_prepare_multicast()
1229 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_configure_filter() local
1247 spin_lock_irqsave(&mac->lock, flags); in zd_op_configure_filter()
1248 mac->pass_failed_fcs = !!(*new_flags & FIF_FCSFAIL); in zd_op_configure_filter()
1249 mac->pass_ctrl = !!(*new_flags & FIF_CONTROL); in zd_op_configure_filter()
1250 mac->multicast_hash = hash; in zd_op_configure_filter()
1251 spin_unlock_irqrestore(&mac->lock, flags); in zd_op_configure_filter()
1253 zd_chip_set_multicast_hash(&mac->chip, &hash); in zd_op_configure_filter()
1256 r = set_rx_filter(mac); in zd_op_configure_filter()
1258 dev_err(zd_mac_dev(mac), "set_rx_filter error %d\n", r); in zd_op_configure_filter()
1271 static void set_rts_cts(struct zd_mac *mac, unsigned int short_preamble) in set_rts_cts() argument
1273 mutex_lock(&mac->chip.mutex); in set_rts_cts()
1274 zd_chip_set_rts_cts_rate_locked(&mac->chip, short_preamble); in set_rts_cts()
1275 mutex_unlock(&mac->chip.mutex); in set_rts_cts()
1283 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_bss_info_changed() local
1286 dev_dbg_f(zd_mac_dev(mac), "changes: %llx\n", changes); in zd_op_bss_info_changed()
1288 if (mac->type == NL80211_IFTYPE_MESH_POINT || in zd_op_bss_info_changed()
1289 mac->type == NL80211_IFTYPE_ADHOC || in zd_op_bss_info_changed()
1290 mac->type == NL80211_IFTYPE_AP) { in zd_op_bss_info_changed()
1297 zd_chip_disable_hwint(&mac->chip); in zd_op_bss_info_changed()
1299 zd_chip_enable_hwint(&mac->chip); in zd_op_bss_info_changed()
1312 spin_lock_irq(&mac->lock); in zd_op_bss_info_changed()
1313 mac->beacon.period = period; in zd_op_bss_info_changed()
1314 mac->beacon.interval = interval; in zd_op_bss_info_changed()
1315 mac->beacon.last_update = jiffies; in zd_op_bss_info_changed()
1316 spin_unlock_irq(&mac->lock); in zd_op_bss_info_changed()
1318 zd_set_beacon_interval(&mac->chip, interval, period, in zd_op_bss_info_changed()
1319 mac->type); in zd_op_bss_info_changed()
1324 spin_lock_irq(&mac->lock); in zd_op_bss_info_changed()
1325 mac->associated = associated; in zd_op_bss_info_changed()
1326 spin_unlock_irq(&mac->lock); in zd_op_bss_info_changed()
1331 spin_lock_irq(&mac->lock); in zd_op_bss_info_changed()
1332 mac->short_preamble = bss_conf->use_short_preamble; in zd_op_bss_info_changed()
1333 spin_unlock_irq(&mac->lock); in zd_op_bss_info_changed()
1335 set_rts_cts(mac, bss_conf->use_short_preamble); in zd_op_bss_info_changed()
1341 struct zd_mac *mac = zd_hw_mac(hw); in zd_op_get_tsf() local
1342 return zd_chip_get_tsf(&mac->chip); in zd_op_get_tsf()
1360 struct zd_mac *mac; in zd_mac_alloc_hw() local
1369 mac = zd_hw_mac(hw); in zd_mac_alloc_hw()
1371 memset(mac, 0, sizeof(*mac)); in zd_mac_alloc_hw()
1372 spin_lock_init(&mac->lock); in zd_mac_alloc_hw()
1373 mac->hw = hw; in zd_mac_alloc_hw()
1375 mac->type = NL80211_IFTYPE_UNSPECIFIED; in zd_mac_alloc_hw()
1377 memcpy(mac->channels, zd_channels, sizeof(zd_channels)); in zd_mac_alloc_hw()
1378 memcpy(mac->rates, zd_rates, sizeof(zd_rates)); in zd_mac_alloc_hw()
1379 mac->band.n_bitrates = ARRAY_SIZE(zd_rates); in zd_mac_alloc_hw()
1380 mac->band.bitrates = mac->rates; in zd_mac_alloc_hw()
1381 mac->band.n_channels = ARRAY_SIZE(zd_channels); in zd_mac_alloc_hw()
1382 mac->band.channels = mac->channels; in zd_mac_alloc_hw()
1384 hw->wiphy->bands[NL80211_BAND_2GHZ] = &mac->band; in zd_mac_alloc_hw()
1409 skb_queue_head_init(&mac->ack_wait_queue); in zd_mac_alloc_hw()
1410 mac->ack_pending = 0; in zd_mac_alloc_hw()
1412 zd_chip_init(&mac->chip, hw, intf); in zd_mac_alloc_hw()
1413 housekeeping_init(mac); in zd_mac_alloc_hw()
1414 beacon_init(mac); in zd_mac_alloc_hw()
1415 INIT_WORK(&mac->process_intr, zd_process_intr); in zd_mac_alloc_hw()
1425 struct zd_mac *mac = in beacon_watchdog_handler() local
1431 if (!test_bit(ZD_DEVICE_RUNNING, &mac->flags)) in beacon_watchdog_handler()
1433 if (mac->type != NL80211_IFTYPE_AP || !mac->vif) in beacon_watchdog_handler()
1436 spin_lock_irq(&mac->lock); in beacon_watchdog_handler()
1437 interval = mac->beacon.interval; in beacon_watchdog_handler()
1438 period = mac->beacon.period; in beacon_watchdog_handler()
1439 timeout = mac->beacon.last_update + in beacon_watchdog_handler()
1441 spin_unlock_irq(&mac->lock); in beacon_watchdog_handler()
1444 dev_dbg_f(zd_mac_dev(mac), "beacon interrupt stalled, " in beacon_watchdog_handler()
1449 zd_chip_disable_hwint(&mac->chip); in beacon_watchdog_handler()
1451 beacon = ieee80211_beacon_get(mac->hw, mac->vif, 0); in beacon_watchdog_handler()
1453 zd_mac_free_cur_beacon(mac); in beacon_watchdog_handler()
1455 zd_mac_config_beacon(mac->hw, beacon, false); in beacon_watchdog_handler()
1458 zd_set_beacon_interval(&mac->chip, interval, period, mac->type); in beacon_watchdog_handler()
1460 zd_chip_enable_hwint(&mac->chip); in beacon_watchdog_handler()
1462 spin_lock_irq(&mac->lock); in beacon_watchdog_handler()
1463 mac->beacon.last_update = jiffies; in beacon_watchdog_handler()
1464 spin_unlock_irq(&mac->lock); in beacon_watchdog_handler()
1468 queue_delayed_work(zd_workqueue, &mac->beacon.watchdog_work, in beacon_watchdog_handler()
1472 static void beacon_init(struct zd_mac *mac) in beacon_init() argument
1474 INIT_DELAYED_WORK(&mac->beacon.watchdog_work, beacon_watchdog_handler); in beacon_init()
1477 static void beacon_enable(struct zd_mac *mac) in beacon_enable() argument
1479 dev_dbg_f(zd_mac_dev(mac), "\n"); in beacon_enable()
1481 mac->beacon.last_update = jiffies; in beacon_enable()
1482 queue_delayed_work(zd_workqueue, &mac->beacon.watchdog_work, in beacon_enable()
1486 static void beacon_disable(struct zd_mac *mac) in beacon_disable() argument
1488 dev_dbg_f(zd_mac_dev(mac), "\n"); in beacon_disable()
1489 cancel_delayed_work_sync(&mac->beacon.watchdog_work); in beacon_disable()
1491 zd_mac_free_cur_beacon(mac); in beacon_disable()
1498 struct zd_mac *mac = in link_led_handler() local
1500 struct zd_chip *chip = &mac->chip; in link_led_handler()
1504 if (!test_bit(ZD_DEVICE_RUNNING, &mac->flags)) in link_led_handler()
1507 spin_lock_irq(&mac->lock); in link_led_handler()
1508 is_associated = mac->associated; in link_led_handler()
1509 spin_unlock_irq(&mac->lock); in link_led_handler()
1514 dev_dbg_f(zd_mac_dev(mac), "zd_chip_control_leds error %d\n", r); in link_led_handler()
1517 queue_delayed_work(zd_workqueue, &mac->housekeeping.link_led_work, in link_led_handler()
1521 static void housekeeping_init(struct zd_mac *mac) in housekeeping_init() argument
1523 INIT_DELAYED_WORK(&mac->housekeeping.link_led_work, link_led_handler); in housekeeping_init()
1526 static void housekeeping_enable(struct zd_mac *mac) in housekeeping_enable() argument
1528 dev_dbg_f(zd_mac_dev(mac), "\n"); in housekeeping_enable()
1529 queue_delayed_work(zd_workqueue, &mac->housekeeping.link_led_work, in housekeeping_enable()
1533 static void housekeeping_disable(struct zd_mac *mac) in housekeeping_disable() argument
1535 dev_dbg_f(zd_mac_dev(mac), "\n"); in housekeeping_disable()
1536 cancel_delayed_work_sync(&mac->housekeeping.link_led_work); in housekeeping_disable()
1537 zd_chip_control_leds(&mac->chip, ZD_LED_OFF); in housekeeping_disable()