Lines Matching full:mac
42 struct qtnf_wmac *mac = NULL; in qtnf_core_get_mac() local
45 pr_err("invalid MAC index %u\n", macid); in qtnf_core_get_mac()
50 mac = bus->mac[macid]; in qtnf_core_get_mac()
52 if (unlikely(!mac)) { in qtnf_core_get_mac()
53 pr_err("MAC%u: not initialized\n", macid); in qtnf_core_get_mac()
57 return mac; in qtnf_core_get_mac()
84 queue_work(vif->mac->bus->hprio_workqueue, &vif->high_pri_tx_work); in qtnf_packet_send_hi_pri()
93 struct qtnf_wmac *mac; in qtnf_netdev_hard_start_xmit() local
109 mac = vif->mac; in qtnf_netdev_hard_start_xmit()
110 if (unlikely(!mac)) { in qtnf_netdev_hard_start_xmit()
111 pr_err_ratelimited("%s: NULL mac pointer", ndev->name); in qtnf_netdev_hard_start_xmit()
133 return qtnf_bus_data_tx(mac->bus, skb, mac->macid, vif->vifid); in qtnf_netdev_hard_start_xmit()
156 struct qtnf_wmac *mac; in qtnf_netdev_tx_timeout() local
159 if (unlikely(!vif || !vif->mac || !vif->mac->bus)) in qtnf_netdev_tx_timeout()
162 mac = vif->mac; in qtnf_netdev_tx_timeout()
163 bus = mac->bus; in qtnf_netdev_tx_timeout()
165 pr_warn("VIF%u.%u: Tx timeout- %lu\n", mac->macid, vif->vifid, jiffies); in qtnf_netdev_tx_timeout()
190 qtnf_scan_done(vif->mac, true); in qtnf_netdev_set_mac_address()
206 const struct qtnf_bus *bus = vif->mac->bus; in qtnf_netdev_port_parent_id()
226 struct qtnf_wmac *mac, in qtnf_mac_init_single_band() argument
237 ret = qtnf_cmd_band_info_get(mac, wiphy->bands[band]); in qtnf_mac_init_single_band()
239 pr_err("MAC%u: band %u: failed to get chans info: %d\n", in qtnf_mac_init_single_band()
240 mac->macid, band, ret); in qtnf_mac_init_single_band()
249 static int qtnf_mac_init_bands(struct qtnf_wmac *mac) in qtnf_mac_init_bands() argument
251 struct wiphy *wiphy = priv_to_wiphy(mac); in qtnf_mac_init_bands()
254 if (mac->macinfo.bands_cap & QLINK_BAND_2GHZ) { in qtnf_mac_init_bands()
255 ret = qtnf_mac_init_single_band(wiphy, mac, NL80211_BAND_2GHZ); in qtnf_mac_init_bands()
260 if (mac->macinfo.bands_cap & QLINK_BAND_5GHZ) { in qtnf_mac_init_bands()
261 ret = qtnf_mac_init_single_band(wiphy, mac, NL80211_BAND_5GHZ); in qtnf_mac_init_bands()
266 if (mac->macinfo.bands_cap & QLINK_BAND_60GHZ) in qtnf_mac_init_bands()
267 ret = qtnf_mac_init_single_band(wiphy, mac, NL80211_BAND_60GHZ); in qtnf_mac_init_bands()
273 struct qtnf_vif *qtnf_mac_get_free_vif(struct qtnf_wmac *mac) in qtnf_mac_get_free_vif() argument
279 vif = &mac->iflist[i]; in qtnf_mac_get_free_vif()
287 struct qtnf_vif *qtnf_mac_get_base_vif(struct qtnf_wmac *mac) in qtnf_mac_get_base_vif() argument
291 vif = &mac->iflist[QTNF_PRIMARY_VIF_IDX]; in qtnf_mac_get_base_vif()
299 void qtnf_mac_iface_comb_free(struct qtnf_wmac *mac) in qtnf_mac_iface_comb_free() argument
304 if (mac->macinfo.if_comb) { in qtnf_mac_iface_comb_free()
305 for (i = 0; i < mac->macinfo.n_if_comb; i++) { in qtnf_mac_iface_comb_free()
306 comb = &mac->macinfo.if_comb[i]; in qtnf_mac_iface_comb_free()
311 kfree(mac->macinfo.if_comb); in qtnf_mac_iface_comb_free()
312 mac->macinfo.if_comb = NULL; in qtnf_mac_iface_comb_free()
316 void qtnf_mac_ext_caps_free(struct qtnf_wmac *mac) in qtnf_mac_ext_caps_free() argument
318 if (mac->macinfo.extended_capabilities_len) { in qtnf_mac_ext_caps_free()
319 kfree(mac->macinfo.extended_capabilities); in qtnf_mac_ext_caps_free()
320 mac->macinfo.extended_capabilities = NULL; in qtnf_mac_ext_caps_free()
322 kfree(mac->macinfo.extended_capabilities_mask); in qtnf_mac_ext_caps_free()
323 mac->macinfo.extended_capabilities_mask = NULL; in qtnf_mac_ext_caps_free()
325 mac->macinfo.extended_capabilities_len = 0; in qtnf_mac_ext_caps_free()
350 static void qtnf_mac_init_primary_intf(struct qtnf_wmac *mac) in qtnf_mac_init_primary_intf() argument
352 struct qtnf_vif *vif = &mac->iflist[QTNF_PRIMARY_VIF_IDX]; in qtnf_mac_init_primary_intf()
356 vif->wdev.wiphy = priv_to_wiphy(mac); in qtnf_mac_init_primary_intf()
361 static void qtnf_mac_scan_finish(struct qtnf_wmac *mac, bool aborted) in qtnf_mac_scan_finish() argument
367 mutex_lock(&mac->mac_lock); in qtnf_mac_scan_finish()
369 if (mac->scan_req) { in qtnf_mac_scan_finish()
370 cfg80211_scan_done(mac->scan_req, &info); in qtnf_mac_scan_finish()
371 mac->scan_req = NULL; in qtnf_mac_scan_finish()
374 mutex_unlock(&mac->mac_lock); in qtnf_mac_scan_finish()
377 void qtnf_scan_done(struct qtnf_wmac *mac, bool aborted) in qtnf_scan_done() argument
379 cancel_delayed_work_sync(&mac->scan_timeout); in qtnf_scan_done()
380 qtnf_mac_scan_finish(mac, aborted); in qtnf_scan_done()
385 struct qtnf_wmac *mac = in qtnf_mac_scan_timeout() local
388 pr_warn("MAC%d: scan timed out\n", mac->macid); in qtnf_mac_scan_timeout()
389 qtnf_mac_scan_finish(mac, true); in qtnf_mac_scan_timeout()
413 struct qtnf_wmac *mac; in qtnf_core_mac_alloc() local
433 mac = wiphy_priv(wiphy); in qtnf_core_mac_alloc()
435 mac->macid = macid; in qtnf_core_mac_alloc()
436 mac->pdev = pdev; in qtnf_core_mac_alloc()
437 mac->bus = bus; in qtnf_core_mac_alloc()
438 mutex_init(&mac->mac_lock); in qtnf_core_mac_alloc()
439 INIT_DELAYED_WORK(&mac->scan_timeout, qtnf_mac_scan_timeout); in qtnf_core_mac_alloc()
442 vif = &mac->iflist[i]; in qtnf_core_mac_alloc()
446 vif->mac = mac; in qtnf_core_mac_alloc()
457 qtnf_mac_init_primary_intf(mac); in qtnf_core_mac_alloc()
458 bus->mac[macid] = mac; in qtnf_core_mac_alloc()
460 return mac; in qtnf_core_mac_alloc()
467 int qtnf_core_net_attach(struct qtnf_wmac *mac, struct qtnf_vif *vif, in qtnf_core_net_attach() argument
470 struct wiphy *wiphy = priv_to_wiphy(mac); in qtnf_core_net_attach()
492 if (qtnf_hwcap_is_set(&mac->bus->hw_info, QLINK_HW_CAPAB_HW_BRIDGE)) in qtnf_core_net_attach()
511 struct qtnf_wmac *mac; in qtnf_core_mac_detach() local
517 mac = bus->mac[macid]; in qtnf_core_mac_detach()
519 if (!mac) in qtnf_core_mac_detach()
522 wiphy = priv_to_wiphy(mac); in qtnf_core_mac_detach()
525 vif = &mac->iflist[i]; in qtnf_core_mac_detach()
537 if (mac->wiphy_registered) in qtnf_core_mac_detach()
554 platform_device_unregister(mac->pdev); in qtnf_core_mac_detach()
555 qtnf_mac_iface_comb_free(mac); in qtnf_core_mac_detach()
556 qtnf_mac_ext_caps_free(mac); in qtnf_core_mac_detach()
557 kfree(mac->macinfo.wowlan); in qtnf_core_mac_detach()
558 kfree(mac->rd); in qtnf_core_mac_detach()
559 mac->rd = NULL; in qtnf_core_mac_detach()
561 bus->mac[macid] = NULL; in qtnf_core_mac_detach()
566 struct qtnf_wmac *mac; in qtnf_core_mac_attach() local
571 pr_info("MAC%u is not active in FW\n", macid); in qtnf_core_mac_attach()
575 mac = qtnf_core_mac_alloc(bus, macid); in qtnf_core_mac_attach()
576 if (IS_ERR(mac)) { in qtnf_core_mac_attach()
577 pr_err("MAC%u allocation failed\n", macid); in qtnf_core_mac_attach()
578 return PTR_ERR(mac); in qtnf_core_mac_attach()
581 vif = qtnf_mac_get_base_vif(mac); in qtnf_core_mac_attach()
583 pr_err("MAC%u: primary VIF is not ready\n", macid); in qtnf_core_mac_attach()
591 pr_err("MAC%u: failed to add VIF\n", macid); in qtnf_core_mac_attach()
595 ret = qtnf_cmd_get_mac_info(mac); in qtnf_core_mac_attach()
597 pr_err("MAC%u: failed to get MAC info\n", macid); in qtnf_core_mac_attach()
601 /* Use MAC address of the first active radio as a unique device ID */ in qtnf_core_mac_attach()
602 if (is_zero_ether_addr(mac->bus->hw_id)) in qtnf_core_mac_attach()
603 ether_addr_copy(mac->bus->hw_id, mac->macaddr); in qtnf_core_mac_attach()
605 ret = qtnf_mac_init_bands(mac); in qtnf_core_mac_attach()
607 pr_err("MAC%u: failed to init bands\n", macid); in qtnf_core_mac_attach()
611 ret = qtnf_wiphy_register(&bus->hw_info, mac); in qtnf_core_mac_attach()
613 pr_err("MAC%u: wiphy registration failed\n", macid); in qtnf_core_mac_attach()
617 mac->wiphy_registered = 1; in qtnf_core_mac_attach()
621 ret = qtnf_core_net_attach(mac, vif, "wlan%d", NET_NAME_ENUM); in qtnf_core_mac_attach()
625 pr_err("MAC%u: failed to attach netdev\n", macid); in qtnf_core_mac_attach()
635 pr_debug("MAC%u initialized\n", macid); in qtnf_core_mac_attach()
684 bus = vif->mac->bus; in qtnf_core_netdevice_event()
695 vif->mac->macid, vif->vifid, netdev_name(brdev), in qtnf_core_netdevice_event()
782 pr_err("MAC%u: attach failed: %d\n", i, ret); in qtnf_core_attach()
844 struct qtnf_wmac *mac; in qtnf_classify_skb() local
860 pr_err_ratelimited("invalid mac(%u)\n", meta->macid); in qtnf_classify_skb()
869 mac = bus->mac[meta->macid]; in qtnf_classify_skb()
871 if (unlikely(!mac)) { in qtnf_classify_skb()
872 pr_err_ratelimited("mac(%d) does not exist\n", meta->macid); in qtnf_classify_skb()
876 vif = &mac->iflist[meta->ifidx]; in qtnf_classify_skb()
903 struct qtnf_wmac *mac; in qtnf_wake_all_queues() local
908 if (unlikely(!vif || !vif->mac || !vif->mac->bus)) in qtnf_wake_all_queues()
911 bus = vif->mac->bus; in qtnf_wake_all_queues()
917 mac = bus->mac[macid]; in qtnf_wake_all_queues()
919 vif = &mac->iflist[i]; in qtnf_wake_all_queues()