Lines Matching +full:host +full:- +full:wake
1 // SPDX-License-Identifier: GPL-2.0
15 struct fbnic_dev *fbd = fbn->fbd; in __fbnic_open()
33 dev_warn(fbd->dev, in __fbnic_open()
34 "Error %d sending host ownership message to the firmware\n", in __fbnic_open()
55 phylink_resume(fbn->phylink); in __fbnic_open()
61 fbnic_fw_xmit_ownership_msg(fbn->fbd, false); in __fbnic_open()
76 fbnic_napi_name_irqs(fbn->fbd); in fbnic_open()
89 phylink_suspend(fbn->phylink, fbnic_bmc_present(fbn->fbd)); in fbnic_stop()
92 fbnic_pcs_free_irq(fbn->fbd); in fbnic_stop()
95 fbnic_fw_xmit_ownership_msg(fbn->fbd, false); in fbnic_stop()
110 return -EADDRNOTAVAIL; in fbnic_uc_sync()
112 avail_addr = __fbnic_uc_sync(fbn->fbd, addr); in fbnic_uc_sync()
114 return -ENOSPC; in fbnic_uc_sync()
116 /* Add type flag indicating this address is in use by the host */ in fbnic_uc_sync()
117 set_bit(FBNIC_MAC_ADDR_T_UNICAST, avail_addr->act_tcam); in fbnic_uc_sync()
125 struct fbnic_dev *fbd = fbn->fbd; in fbnic_uc_unsync()
132 for (i = fbd->mac_addr_boundary, ret = -ENOENT; in fbnic_uc_unsync()
134 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[i]; in fbnic_uc_unsync()
136 if (!ether_addr_equal(mac_addr->value.addr8, addr)) in fbnic_uc_unsync()
151 return -EADDRNOTAVAIL; in fbnic_mc_sync()
153 avail_addr = __fbnic_mc_sync(fbn->fbd, addr); in fbnic_mc_sync()
155 return -ENOSPC; in fbnic_mc_sync()
157 /* Add type flag indicating this address is in use by the host */ in fbnic_mc_sync()
158 set_bit(FBNIC_MAC_ADDR_T_MULTICAST, avail_addr->act_tcam); in fbnic_mc_sync()
166 struct fbnic_dev *fbd = fbn->fbd; in fbnic_mc_unsync()
173 for (i = fbd->mac_addr_boundary, ret = -ENOENT; in fbnic_mc_unsync()
174 --i > FBNIC_RPC_TCAM_MACDA_BROADCAST_IDX && ret;) { in fbnic_mc_unsync()
175 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[i]; in fbnic_mc_unsync()
177 if (!ether_addr_equal(mac_addr->value.addr8, addr)) in fbnic_mc_unsync()
189 struct net_device *netdev = fbd->netdev; in __fbnic_set_rx_mode()
193 /* Populate host address from dev_addr */ in __fbnic_set_rx_mode()
194 mac_addr = &fbd->mac_addr[FBNIC_RPC_TCAM_MACDA_HOST_ADDR_IDX]; in __fbnic_set_rx_mode()
195 if (!ether_addr_equal(mac_addr->value.addr8, netdev->dev_addr) || in __fbnic_set_rx_mode()
196 mac_addr->state != FBNIC_TCAM_S_VALID) { in __fbnic_set_rx_mode()
197 ether_addr_copy(mac_addr->value.addr8, netdev->dev_addr); in __fbnic_set_rx_mode()
198 mac_addr->state = FBNIC_TCAM_S_UPDATE; in __fbnic_set_rx_mode()
199 set_bit(FBNIC_MAC_ADDR_T_UNICAST, mac_addr->act_tcam); in __fbnic_set_rx_mode()
203 mac_addr = &fbd->mac_addr[FBNIC_RPC_TCAM_MACDA_BROADCAST_IDX]; in __fbnic_set_rx_mode()
204 if (netdev->flags & IFF_BROADCAST) { in __fbnic_set_rx_mode()
205 if (!is_broadcast_ether_addr(mac_addr->value.addr8) || in __fbnic_set_rx_mode()
206 mac_addr->state != FBNIC_TCAM_S_VALID) { in __fbnic_set_rx_mode()
207 eth_broadcast_addr(mac_addr->value.addr8); in __fbnic_set_rx_mode()
208 mac_addr->state = FBNIC_TCAM_S_ADD; in __fbnic_set_rx_mode()
210 set_bit(FBNIC_MAC_ADDR_T_BROADCAST, mac_addr->act_tcam); in __fbnic_set_rx_mode()
211 } else if (mac_addr->state == FBNIC_TCAM_S_VALID) { in __fbnic_set_rx_mode()
217 if (err == -ENOSPC) in __fbnic_set_rx_mode()
220 if (err == -ENOSPC) in __fbnic_set_rx_mode()
223 uc_promisc |= !!(netdev->flags & IFF_PROMISC); in __fbnic_set_rx_mode()
224 mc_promisc |= !!(netdev->flags & IFF_ALLMULTI) || uc_promisc; in __fbnic_set_rx_mode()
244 struct fbnic_dev *fbd = fbn->fbd; in fbnic_set_rx_mode()
255 if (!is_valid_ether_addr(addr->sa_data)) in fbnic_set_mac()
256 return -EADDRNOTAVAIL; in fbnic_set_mac()
258 eth_hw_addr_set(netdev, addr->sa_data); in fbnic_set_mac()
267 struct net_device *netdev = fbd->netdev; in fbnic_clear_rx_mode()
270 for (idx = ARRAY_SIZE(fbd->mac_addr); idx--;) { in fbnic_clear_rx_mode()
271 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[idx]; in fbnic_clear_rx_mode()
273 if (mac_addr->state != FBNIC_TCAM_S_VALID) in fbnic_clear_rx_mode()
276 bitmap_clear(mac_addr->act_tcam, in fbnic_clear_rx_mode()
280 if (bitmap_empty(mac_addr->act_tcam, in fbnic_clear_rx_mode()
282 mac_addr->state = FBNIC_TCAM_S_DELETE; in fbnic_clear_rx_mode()
297 *config = fbn->hwtstamp_config; in fbnic_hwtstamp_get()
309 if (config->source != HWTSTAMP_SOURCE_NETDEV) in fbnic_hwtstamp_set()
310 return -EOPNOTSUPP; in fbnic_hwtstamp_set()
312 if (!kernel_hwtstamp_config_changed(config, &fbn->hwtstamp_config)) in fbnic_hwtstamp_set()
316 switch (config->rx_filter) { in fbnic_hwtstamp_set()
325 config->rx_filter = HWTSTAMP_FILTER_ALL; in fbnic_hwtstamp_set()
329 config->rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT; in fbnic_hwtstamp_set()
333 config->rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT; in fbnic_hwtstamp_set()
337 config->rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT; in fbnic_hwtstamp_set()
341 config->rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; in fbnic_hwtstamp_set()
344 return -ERANGE; in fbnic_hwtstamp_set()
348 old_rx_filter = fbn->hwtstamp_config.rx_filter; in fbnic_hwtstamp_set()
349 memcpy(&fbn->hwtstamp_config, config, sizeof(*config)); in fbnic_hwtstamp_set()
351 if (old_rx_filter != config->rx_filter && netif_running(fbn->netdev)) { in fbnic_hwtstamp_set()
352 fbnic_rss_reinit(fbn->fbd, fbn); in fbnic_hwtstamp_set()
353 fbnic_write_rules(fbn->fbd); in fbnic_hwtstamp_set()
359 * filtering in all UDP or all non-IP packets for timestamping. So in fbnic_hwtstamp_set()
364 if (config->rx_filter > HWTSTAMP_FILTER_ALL) in fbnic_hwtstamp_set()
365 config->rx_filter = HWTSTAMP_FILTER_SOME; in fbnic_hwtstamp_set()
377 struct fbnic_dev *fbd = fbn->fbd; in fbnic_get_stats64()
384 stats = &fbn->tx_stats; in fbnic_get_stats64()
386 tx_bytes = stats->bytes; in fbnic_get_stats64()
387 tx_packets = stats->packets; in fbnic_get_stats64()
388 tx_dropped = stats->dropped; in fbnic_get_stats64()
391 spin_lock(&fbd->hw_stats.lock); in fbnic_get_stats64()
392 tx_dropped += fbd->hw_stats.tmi.drop.frames.value + in fbnic_get_stats64()
393 fbd->hw_stats.tti.cm_drop.frames.value + in fbnic_get_stats64()
394 fbd->hw_stats.tti.frame_drop.frames.value + in fbnic_get_stats64()
395 fbd->hw_stats.tti.tbi_drop.frames.value; in fbnic_get_stats64()
396 spin_unlock(&fbd->hw_stats.lock); in fbnic_get_stats64()
398 stats64->tx_bytes = tx_bytes; in fbnic_get_stats64()
399 stats64->tx_packets = tx_packets; in fbnic_get_stats64()
400 stats64->tx_dropped = tx_dropped; in fbnic_get_stats64()
402 for (i = 0; i < fbn->num_tx_queues; i++) { in fbnic_get_stats64()
403 struct fbnic_ring *txr = fbn->tx[i]; in fbnic_get_stats64()
408 stats = &txr->stats; in fbnic_get_stats64()
410 start = u64_stats_fetch_begin(&stats->syncp); in fbnic_get_stats64()
411 tx_bytes = stats->bytes; in fbnic_get_stats64()
412 tx_packets = stats->packets; in fbnic_get_stats64()
413 tx_dropped = stats->dropped; in fbnic_get_stats64()
414 } while (u64_stats_fetch_retry(&stats->syncp, start)); in fbnic_get_stats64()
416 stats64->tx_bytes += tx_bytes; in fbnic_get_stats64()
417 stats64->tx_packets += tx_packets; in fbnic_get_stats64()
418 stats64->tx_dropped += tx_dropped; in fbnic_get_stats64()
421 stats = &fbn->rx_stats; in fbnic_get_stats64()
423 rx_bytes = stats->bytes; in fbnic_get_stats64()
424 rx_packets = stats->packets; in fbnic_get_stats64()
425 rx_dropped = stats->dropped; in fbnic_get_stats64()
427 spin_lock(&fbd->hw_stats.lock); in fbnic_get_stats64()
428 /* Record drops for the host FIFOs. in fbnic_get_stats64()
429 * 4: network to Host, 6: BMC to Host in fbnic_get_stats64()
435 rx_missed += fbd->hw_stats.rxb.fifo[i].drop.frames.value; in fbnic_get_stats64()
437 rx_missed += fbd->hw_stats.rxb.fifo[i].drop.frames.value; in fbnic_get_stats64()
439 for (i = 0; i < fbd->max_num_queues; i++) { in fbnic_get_stats64()
441 rx_over += fbd->hw_stats.hw_q[i].rde_pkt_cq_drop.value; in fbnic_get_stats64()
442 rx_over += fbd->hw_stats.hw_q[i].rde_pkt_bdq_drop.value; in fbnic_get_stats64()
445 rx_errors += fbd->hw_stats.hw_q[i].rde_pkt_err.value; in fbnic_get_stats64()
447 spin_unlock(&fbd->hw_stats.lock); in fbnic_get_stats64()
449 stats64->rx_bytes = rx_bytes; in fbnic_get_stats64()
450 stats64->rx_packets = rx_packets; in fbnic_get_stats64()
451 stats64->rx_dropped = rx_dropped; in fbnic_get_stats64()
452 stats64->rx_over_errors = rx_over; in fbnic_get_stats64()
453 stats64->rx_errors = rx_errors; in fbnic_get_stats64()
454 stats64->rx_missed_errors = rx_missed; in fbnic_get_stats64()
456 for (i = 0; i < fbn->num_rx_queues; i++) { in fbnic_get_stats64()
457 struct fbnic_ring *xdpr = fbn->tx[FBNIC_MAX_TXQS + i]; in fbnic_get_stats64()
458 struct fbnic_ring *rxr = fbn->rx[i]; in fbnic_get_stats64()
463 stats = &rxr->stats; in fbnic_get_stats64()
465 start = u64_stats_fetch_begin(&stats->syncp); in fbnic_get_stats64()
466 rx_bytes = stats->bytes; in fbnic_get_stats64()
467 rx_packets = stats->packets; in fbnic_get_stats64()
468 rx_dropped = stats->dropped; in fbnic_get_stats64()
469 rx_length = stats->rx.length_errors; in fbnic_get_stats64()
470 } while (u64_stats_fetch_retry(&stats->syncp, start)); in fbnic_get_stats64()
472 stats64->rx_bytes += rx_bytes; in fbnic_get_stats64()
473 stats64->rx_packets += rx_packets; in fbnic_get_stats64()
474 stats64->rx_dropped += rx_dropped; in fbnic_get_stats64()
475 stats64->rx_errors += rx_length; in fbnic_get_stats64()
476 stats64->rx_length_errors += rx_length; in fbnic_get_stats64()
481 stats = &xdpr->stats; in fbnic_get_stats64()
483 start = u64_stats_fetch_begin(&stats->syncp); in fbnic_get_stats64()
484 tx_bytes = stats->bytes; in fbnic_get_stats64()
485 tx_packets = stats->packets; in fbnic_get_stats64()
486 tx_dropped = stats->dropped; in fbnic_get_stats64()
487 } while (u64_stats_fetch_retry(&stats->syncp, start)); in fbnic_get_stats64()
489 stats64->tx_bytes += tx_bytes; in fbnic_get_stats64()
490 stats64->tx_packets += tx_packets; in fbnic_get_stats64()
491 stats64->tx_dropped += tx_dropped; in fbnic_get_stats64()
501 if (prog->aux->xdp_has_frags) in fbnic_check_split_frames()
509 struct bpf_prog *prog = bpf->prog, *prev_prog; in fbnic_bpf()
512 if (bpf->command != XDP_SETUP_PROG) in fbnic_bpf()
513 return -EINVAL; in fbnic_bpf()
515 if (fbnic_check_split_frames(prog, netdev->mtu, in fbnic_bpf()
516 fbn->hds_thresh)) { in fbnic_bpf()
517 NL_SET_ERR_MSG_MOD(bpf->extack, in fbnic_bpf()
519 return -EOPNOTSUPP; in fbnic_bpf()
522 prev_prog = xchg(&fbn->xdp_prog, prog); in fbnic_bpf()
548 struct fbnic_ring *rxr = fbn->rx[idx]; in fbnic_get_queue_stats_rx()
549 struct fbnic_dev *fbd = fbn->fbd; in fbnic_get_queue_stats_rx()
558 /* fbn->rx points to completion queues */ in fbnic_get_queue_stats_rx()
561 stats = &rxr->stats; in fbnic_get_queue_stats_rx()
563 start = u64_stats_fetch_begin(&stats->syncp); in fbnic_get_queue_stats_rx()
564 bytes = stats->bytes; in fbnic_get_queue_stats_rx()
565 packets = stats->packets; in fbnic_get_queue_stats_rx()
566 alloc_fail = stats->rx.alloc_failed; in fbnic_get_queue_stats_rx()
567 csum_complete = stats->rx.csum_complete; in fbnic_get_queue_stats_rx()
568 csum_none = stats->rx.csum_none; in fbnic_get_queue_stats_rx()
569 } while (u64_stats_fetch_retry(&stats->syncp, start)); in fbnic_get_queue_stats_rx()
571 stats = &qt->sub0.stats; in fbnic_get_queue_stats_rx()
573 start = u64_stats_fetch_begin(&stats->syncp); in fbnic_get_queue_stats_rx()
574 alloc_fail_bdq = stats->bdq.alloc_failed; in fbnic_get_queue_stats_rx()
575 } while (u64_stats_fetch_retry(&stats->syncp, start)); in fbnic_get_queue_stats_rx()
578 stats = &qt->sub1.stats; in fbnic_get_queue_stats_rx()
580 start = u64_stats_fetch_begin(&stats->syncp); in fbnic_get_queue_stats_rx()
581 alloc_fail_bdq = stats->bdq.alloc_failed; in fbnic_get_queue_stats_rx()
582 } while (u64_stats_fetch_retry(&stats->syncp, start)); in fbnic_get_queue_stats_rx()
585 rx->bytes = bytes; in fbnic_get_queue_stats_rx()
586 rx->packets = packets; in fbnic_get_queue_stats_rx()
587 rx->alloc_fail = alloc_fail; in fbnic_get_queue_stats_rx()
588 rx->csum_complete = csum_complete; in fbnic_get_queue_stats_rx()
589 rx->csum_none = csum_none; in fbnic_get_queue_stats_rx()
591 fbnic_get_hw_q_stats(fbd, fbd->hw_stats.hw_q); in fbnic_get_queue_stats_rx()
593 spin_lock(&fbd->hw_stats.lock); in fbnic_get_queue_stats_rx()
594 rx->hw_drop_overruns = fbd->hw_stats.hw_q[idx].rde_pkt_cq_drop.value + in fbnic_get_queue_stats_rx()
595 fbd->hw_stats.hw_q[idx].rde_pkt_bdq_drop.value; in fbnic_get_queue_stats_rx()
596 rx->hw_drops = fbd->hw_stats.hw_q[idx].rde_pkt_err.value + in fbnic_get_queue_stats_rx()
597 rx->hw_drop_overruns; in fbnic_get_queue_stats_rx()
598 spin_unlock(&fbd->hw_stats.lock); in fbnic_get_queue_stats_rx()
605 struct fbnic_ring *txr = fbn->tx[idx]; in fbnic_get_queue_stats_tx()
607 u64 stop, wake, csum, lso; in fbnic_get_queue_stats_tx() local
615 stats = &txr->stats; in fbnic_get_queue_stats_tx()
617 start = u64_stats_fetch_begin(&stats->syncp); in fbnic_get_queue_stats_tx()
618 bytes = stats->bytes; in fbnic_get_queue_stats_tx()
619 packets = stats->packets; in fbnic_get_queue_stats_tx()
620 csum = stats->twq.csum_partial; in fbnic_get_queue_stats_tx()
621 lso = stats->twq.lso; in fbnic_get_queue_stats_tx()
622 stop = stats->twq.stop; in fbnic_get_queue_stats_tx()
623 wake = stats->twq.wake; in fbnic_get_queue_stats_tx()
624 } while (u64_stats_fetch_retry(&stats->syncp, start)); in fbnic_get_queue_stats_tx()
626 tx->bytes = bytes; in fbnic_get_queue_stats_tx()
627 tx->packets = packets; in fbnic_get_queue_stats_tx()
628 tx->needs_csum = csum + lso; in fbnic_get_queue_stats_tx()
629 tx->hw_gso_wire_packets = lso; in fbnic_get_queue_stats_tx()
630 tx->stop = stop; in fbnic_get_queue_stats_tx()
631 tx->wake = wake; in fbnic_get_queue_stats_tx()
633 xdpr = fbn->tx[FBNIC_MAX_TXQS + idx]; in fbnic_get_queue_stats_tx()
635 stats = &xdpr->stats; in fbnic_get_queue_stats_tx()
637 start = u64_stats_fetch_begin(&stats->syncp); in fbnic_get_queue_stats_tx()
638 bytes = stats->bytes; in fbnic_get_queue_stats_tx()
639 packets = stats->packets; in fbnic_get_queue_stats_tx()
640 } while (u64_stats_fetch_retry(&stats->syncp, start)); in fbnic_get_queue_stats_tx()
642 tx->bytes += bytes; in fbnic_get_queue_stats_tx()
643 tx->packets += packets; in fbnic_get_queue_stats_tx()
653 tx->bytes = fbn->tx_stats.bytes; in fbnic_get_base_stats()
654 tx->packets = fbn->tx_stats.packets; in fbnic_get_base_stats()
655 tx->needs_csum = fbn->tx_stats.twq.csum_partial + fbn->tx_stats.twq.lso; in fbnic_get_base_stats()
656 tx->hw_gso_wire_packets = fbn->tx_stats.twq.lso; in fbnic_get_base_stats()
657 tx->stop = fbn->tx_stats.twq.stop; in fbnic_get_base_stats()
658 tx->wake = fbn->tx_stats.twq.wake; in fbnic_get_base_stats()
660 rx->bytes = fbn->rx_stats.bytes; in fbnic_get_base_stats()
661 rx->packets = fbn->rx_stats.packets; in fbnic_get_base_stats()
662 rx->alloc_fail = fbn->rx_stats.rx.alloc_failed + in fbnic_get_base_stats()
663 fbn->bdq_stats.bdq.alloc_failed; in fbnic_get_base_stats()
664 rx->csum_complete = fbn->rx_stats.rx.csum_complete; in fbnic_get_base_stats()
665 rx->csum_none = fbn->rx_stats.rx.csum_none; in fbnic_get_base_stats()
677 struct fbnic_dev *fbd = fbn->fbd; in fbnic_reset_queues()
680 max_napis = fbd->num_irqs - FBNIC_NON_NAPI_VECTORS; in fbnic_reset_queues()
683 fbn->num_tx_queues = tx; in fbnic_reset_queues()
686 fbn->num_rx_queues = rx; in fbnic_reset_queues()
688 fbn->num_napi = max(tx, rx); in fbnic_reset_queues()
692 * fbnic_netdev_free - Free the netdev associate with fbnic
700 struct fbnic_net *fbn = netdev_priv(fbd->netdev); in fbnic_netdev_free()
702 if (fbn->phylink) in fbnic_netdev_free()
703 phylink_destroy(fbn->phylink); in fbnic_netdev_free()
705 free_netdev(fbd->netdev); in fbnic_netdev_free()
706 fbd->netdev = NULL; in fbnic_netdev_free()
710 * fbnic_netdev_alloc - Allocate a netdev and associate with fbnic
728 SET_NETDEV_DEV(netdev, fbd->dev); in fbnic_netdev_alloc()
729 fbd->netdev = netdev; in fbnic_netdev_alloc()
731 netdev->netdev_ops = &fbnic_netdev_ops; in fbnic_netdev_alloc()
732 netdev->stat_ops = &fbnic_stat_ops; in fbnic_netdev_alloc()
733 netdev->queue_mgmt_ops = &fbnic_queue_mgmt_ops; in fbnic_netdev_alloc()
734 netdev->netmem_tx = true; in fbnic_netdev_alloc()
740 fbn->netdev = netdev; in fbnic_netdev_alloc()
741 fbn->fbd = fbd; in fbnic_netdev_alloc()
743 fbn->txq_size = FBNIC_TXQ_SIZE_DEFAULT; in fbnic_netdev_alloc()
744 fbn->hpq_size = FBNIC_HPQ_SIZE_DEFAULT; in fbnic_netdev_alloc()
745 fbn->ppq_size = FBNIC_PPQ_SIZE_DEFAULT; in fbnic_netdev_alloc()
746 fbn->rcq_size = FBNIC_RCQ_SIZE_DEFAULT; in fbnic_netdev_alloc()
748 fbn->tx_usecs = FBNIC_TX_USECS_DEFAULT; in fbnic_netdev_alloc()
749 fbn->rx_usecs = FBNIC_RX_USECS_DEFAULT; in fbnic_netdev_alloc()
750 fbn->rx_max_frames = FBNIC_RX_FRAMES_DEFAULT; in fbnic_netdev_alloc()
753 netdev->cfg->hds_thresh = FBNIC_HDS_THRESH_DEFAULT; in fbnic_netdev_alloc()
754 fbn->hds_thresh = FBNIC_HDS_THRESH_DEFAULT; in fbnic_netdev_alloc()
757 if (default_queues > fbd->max_num_queues) in fbnic_netdev_alloc()
758 default_queues = fbd->max_num_queues; in fbnic_netdev_alloc()
763 fbnic_rss_key_fill(fbn->rss_key); in fbnic_netdev_alloc()
766 netdev->priv_flags |= IFF_UNICAST_FLT; in fbnic_netdev_alloc()
768 netdev->gso_partial_features = in fbnic_netdev_alloc()
775 netdev->features |= in fbnic_netdev_alloc()
776 netdev->gso_partial_features | in fbnic_netdev_alloc()
788 netdev->hw_features |= netdev->features; in fbnic_netdev_alloc()
789 netdev->vlan_features |= netdev->features; in fbnic_netdev_alloc()
790 netdev->hw_enc_features |= netdev->features; in fbnic_netdev_alloc()
791 netdev->features |= NETIF_F_NTUPLE; in fbnic_netdev_alloc()
793 netdev->min_mtu = IPV6_MIN_MTU; in fbnic_netdev_alloc()
794 netdev->max_mtu = FBNIC_MAX_JUMBO_FRAME_SIZE - ETH_HLEN; in fbnic_netdev_alloc()
799 netdev->ethtool->wol_enabled = true; in fbnic_netdev_alloc()
822 return is_valid_ether_addr(addr) ? 0 : -EINVAL; in fbnic_dsn_to_mac_addr()
826 * fbnic_netdev_register - Initialize general software structures
836 struct fbnic_dev *fbd = fbn->fbd; in fbnic_netdev_register()
837 u64 dsn = fbd->dsn; in fbnic_netdev_register()
843 ether_addr_copy(netdev->perm_addr, addr); in fbnic_netdev_register()
850 dev_err(fbd->dev, "MAC addr %pM invalid\n", addr); in fbnic_netdev_register()