27 Dec, 2014

7 commits

  • For linux-3.18.0
    The driver lacks pci_disable_device in error handling code of
    ne2k_pci_init_one, so the device enabled by pci_enable_device is not
    disabled when errors occur.
    This patch fixes this problem.

    Signed-off-by: Jia-Ju Bai
    Signed-off-by: David S. Miller

    Jia-Ju Bai
     
  • In __bond_release_one(), when the interface is not a slave or not a slave of
    "this" master, it log error message.

    The message actually should be a debug message matching what bond_enslave()
    does.

    Signed-off-by: Wengang Wang
    Acked-by: Ding Tianhong
    Signed-off-by: Andy Gospodarek
    Signed-off-by: David S. Miller

    Wengang Wang
     
  • …m/linux/kernel/git/kvalo/wireless-drivers

    o Paul made a Kconfig dependency fix to ipw2200, it was not possible to
    enable that driver because Wireless Extensions is now disabled by default.

    o Mika fixed brcmfmac not to crash when platform data is not populated

    o Emmanuel provided few fixes to iwlwifi, he says:

    "I have here new device IDs and a fix for double free bug I
    introduced. I also fix an issue with the RFKILL interrupt - the HW
    needs us to ACK the interrupt again after we reset it. Liad fixes an
    issue with the firmware debugging infrastructure. While working on
    torture scenarios of firmware restarts, Eliad found an issue which
    he fixed."

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • GSO isn't the only offload feature with restrictions that
    potentially can't be expressed with the current features mechanism.
    Checksum is another although it's a general issue that could in
    theory apply to anything. Even if it may be possible to
    implement these restrictions in other ways, it can result in
    duplicate code or inefficient per-packet behavior.

    This generalizes ndo_gso_check so that drivers can remove any
    features that don't make sense for a given packet, similar to
    netif_skb_features(). It also converts existing driver
    restrictions to the new format, completing the work that was
    done to support tunnel protocols since the issues apply to
    checksums as well.

    By actually removing features from the set that are used to do
    offloading, it solves another problem with the existing
    interface. In these cases, GSO would run with the original set
    of features and not do anything because it appears that
    segmentation is not required.

    CC: Tom Herbert
    CC: Joe Stringer
    CC: Eric Dumazet
    CC: Hayes Wang
    Signed-off-by: Jesse Gross
    Acked-by: Tom Herbert
    Fixes: 04ffcb255f22 ("net: Add ndo_gso_check")
    Tested-by: Hayes Wang
    Signed-off-by: David S. Miller

    Jesse Gross
     
  • The second init_completion call should be a reinit_completion here.

    patch is against 3.18.0 linux-next

    Signed-off-by: Nicholas Mc Guire
    Signed-off-by: David S. Miller

    Nicholas Mc Guire
     
  • This property is no longer used in the code yet the code looks for it in the device tree.
    It does not cause an error if it's not in the tree.

    Signed-off-by: Kedareswara rao Appana
    Signed-off-by: David S. Miller

    Appana Durga Kedareswara Rao
     
  • Use generic config_init callback also for KSZ8021 and KSZ8031.

    This has been avoided this far due to commit b838b4aced99 ("phy/micrel:
    KSZ8031RNL RMII clock reconfiguration bug"), which claims that the PHY
    becomes unresponsive if the broadcast-disable flag is set before
    configuring the clock mode.

    Turns out that the problem seemingly worked-around by the above
    mentioned commit was really due to a hardware-configuration issue, where
    the PHY was in fact strapped to address 3 rather than 0.

    Tested-by: Bruno Thomsen
    Signed-off-by: Johan Hovold
    Signed-off-by: David S. Miller

    Johan Hovold
     

24 Dec, 2014

3 commits

  • The driver looks for pdata->oob_irq_supported to find out if wowl can be
    supported. However, not all platforms populate pdata in which case we crash
    the kernel because of NULL pointer dereference.

    Fixes: 330b4e4be937 ("brcmfmac: Add wowl support for SDIO devices.")
    Reported-by: Christophe Prigent
    Signed-off-by: Mika Westerberg
    Signed-off-by: Kalle Valo

    Mika Westerberg
     
  • Commit 24a0aa212ee2 ("cfg80211: make WEXT compatibility unselectable")
    made it impossible to depend on CFG80211_WEXT. It does still allow to
    select that symbol. (Yes, the commit summary is confusing.)

    So make IPW2200 select CFG80211_WEXT, so that the ipw2200 driver can be
    enabled in config again.

    Signed-off-by: Paul Bolle
    Signed-off-by: Kalle Valo

    Paul Bolle
     
  • In case of error vxlan_xmit_one() can free already freed skb.
    Also fixes memory leak of dst-entry.

    Fixes: acbf74a7630 ("vxlan: Refactor vxlan driver to make use
    of the common UDP tunnel functions").

    Signed-off-by: Pravin B Shelar
    Signed-off-by: David S. Miller

    Pravin B Shelar
     

23 Dec, 2014

12 commits

  • Decode and display Port Type and Module Type for ethtool get_settings() call

    Signed-off-by: Hariprasad Shenai
    Signed-off-by: David S. Miller

    Hariprasad Shenai
     
  • The commit d75b1ade567ffab085e8adbbdacf0092d10cd09c (net: less
    interrupt masking in NAPI) breaks caif.

    It is now required that if the entire budget is consumed when poll
    returns, the napi poll_list must remain empty. However, like some
    other drivers caif tries to do a last-ditch check and if there is
    more work it will call napi_schedule and then immediately process
    some of this new work. Should the entire budget be consumed while
    processing such new work then we will violate the new caller
    contract.

    This patch fixes this by not touching any work when we reschedule
    in caif.

    Signed-off-by: Herbert Xu
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • iowrite32() will byteswap it's argument on big endian archs.
    iowrite32be() will byteswap on little endian archs.
    Since we don't want to do this unnecessary byteswap on the fast path,
    doorbell is stored in the NIC's native endianness. Using the right
    iowrite() according to the arch endianness.

    CC: Wei Yang
    CC: David Laight
    Fixes: 6a4e812 ("net/mlx4_en: Avoid calling bswap in tx fast path")
    Signed-off-by: Amir Vadai
    Signed-off-by: David S. Miller

    Amir Vadai
     
  • For linux-3.18.0
    The driver lacks netif_napi_del in the normal path and error path
    to match the call of netif_napi_add in rtl8139_init_one.
    This patch fixes this problem.

    Signed-off-by: Jia-Ju Bai
    Signed-off-by: David S. Miller

    Jia-Ju Bai
     
  • For linux-3.18.0
    When pci_request_regions is failed in rtl8139_init_board, pci_disable_device
    is not called to disable the device which are enabled by pci_enable_device,
    because of disable_dev_on_err is not assigned 1.
    This patch fix this problem.

    Signed-off-by: Jia-Ju Bai
    Signed-off-by: David S. Miller

    Jia-Ju Bai
     
  • This platform_driver does not need to set an owner, it will be populated by the
    driver core.

    Signed-off-by: Wolfram Sang
    Signed-off-by: David S. Miller

    Wolfram Sang
     
  • The s6000 Xtensa support has been removed from the kernel in
    4006e565e1500db4. There are no other chips using this driver.

    While the Mentor/Alcatel PE-MCXMAC IP core is also used in other
    designs (Freescale Gianfar/UCC, QLogic NetXen, Solarflare, Agere
    ET-1310, Netlogic XLR/XLS), none of these use this driver as it
    heavily depends on the s6000 DMA engine. In fact, there is no
    code sharing across any of the aforementioned devices.

    Signed-off-by: Daniel Glöckner
    Signed-off-by: David S. Miller

    Daniel Glöckner
     
  • Remove the function port_cfg_dis_learn() that is not used anywhere.

    This was partially found by using a static code analysis program called cppcheck.

    Signed-off-by: Rickard Strandqvist
    Signed-off-by: David S. Miller

    Rickard Strandqvist
     
  • During driver load in tg3_init_one, if the driver detects DMA activity before
    intializing the chip tg3_halt is called. As part of tg3_halt interrupts are
    disabled using routine tg3_disable_ints. This routine was using mailbox value
    which was not initialized (default value is 0). As a result driver was writing
    0x00000001 to pci config space register 0, which is the vendor id / device id.

    This driver bug was exposed because of the commit a7877b17a667 (PCI: Check only
    the Vendor ID to identify Configuration Request Retry). Also this issue is only
    seen in older generation chipsets like 5722 because config space write to offset
    0 from driver is possible. The newer generation chips ignore writes to offset 0.
    Also without commit a7877b17a667, for these older chips when a GRC reset is
    issued the Bootcode would reprogram the vendor id/device id, which is the reason
    this bug was masked earlier.

    Fixed by initializing the interrupt mailbox registers before calling tg3_halt.

    Please queue for -stable.

    Reported-by: Nils Holland
    Reported-by: Marcelo Ricardo Leitner
    Signed-off-by: Prashant Sreedharan
    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Prashant Sreedharan
     
  • The changed names are union fields with the same size, so the existing code
    still works. But, we now update these variables to the correct names.

    Signed-off-by: Haiyang Zhang
    Reviewed-by: K. Y. Srinivasan
    Signed-off-by: David S. Miller

    Haiyang Zhang
     
  • The commit d75b1ade567ffab085e8adbbdacf0092d10cd09c (net: less
    interrupt masking in NAPI) breaks virtio_net in an insidious way.

    It is now required that if the entire budget is consumed when poll
    returns, the napi poll_list must remain empty. However, like some
    other drivers virtio_net tries to do a last-ditch check and if
    there is more work it will call napi_schedule and then immediately
    process some of this new work. Should the entire budget be consumed
    while processing such new work then we will violate the new caller
    contract.

    This patch fixes this by not touching any work when we reschedule
    in virtio_net.

    The worst part of this bug is that the list corruption causes other
    napi users to be moved off-list. In my case I was chasing a stall
    in IPsec (IPsec uses netif_rx) and I only belatedly realised that it
    was virtio_net which caused the stall even though the virtio_net
    poll was still functioning perfectly after IPsec stalled.

    Signed-off-by: Herbert Xu
    Acked-by: Jason Wang
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • Both stmmac_open() and stmmac_resume() call stmmac_hw_setup(), and
    stmmac_hw_setup() call stmmac_init_ptp() unconditionally. However, only
    stmmac_release() calls stmmac_release_ptp(). Since stmmac_suspend()
    doesn't call stmmac_release_ptp(), stmmac_resume() also needn't call
    stmmac_init_ptp().

    This patch also fix a "scheduling while atomic" problem when resume
    from suspend/hibernation. Because stmmac_init_ptp() will trigger
    scheduling while stmmac_resume() hold a spinlock.

    Callgraph of "scheduling while atomic":
    stmmac_resume() --> stmmac_hw_setup() --> stmmac_init_ptp() -->
    stmmac_ptp_register() --> ptp_clock_register() --> device_create() -->
    device_create_groups_vargs() --> device_add() --> devtmpfs_create_node()
    --> wait_for_common() --> schedule_timeout() --> __schedule()

    Signed-off-by: Huacai Chen
    Signed-off-by: David S. Miller

    Huacai Chen
     

21 Dec, 2014

1 commit


20 Dec, 2014

2 commits

  • Hardware always provides compliment of IP pseudo checksum. Stack expects
    whole packet checksum without pseudo checksum if CHECKSUM_COMPLETE is set.

    This causes checksum error in nf & ovs.

    kernel: qg-19546f09-f2: hw csum failure
    kernel: CPU: 9 PID: 0 Comm: swapper/9 Tainted: GF O-------------- 3.10.0-123.8.1.el7.x86_64 #1
    kernel: Hardware name: Cisco Systems Inc UCSB-B200-M3/UCSB-B200-M3, BIOS B200M3.2.2.3.0.080820141339 08/08/2014
    kernel: ffff881218f40000 df68243feb35e3a8 ffff881237a43ab8 ffffffff815e237b
    kernel: ffff881237a43ad0 ffffffff814cd4ca ffff8829ec71eb00 ffff881237a43af0
    kernel: ffffffff814c6232 0000000000000286 ffff8829ec71eb00 ffff881237a43b00
    kernel: Call Trace:
    kernel: [] dump_stack+0x19/0x1b
    kernel: [] netdev_rx_csum_fault+0x3a/0x40
    kernel: [] __skb_checksum_complete_head+0x62/0x70
    kernel: [] __skb_checksum_complete+0x11/0x20
    kernel: [] nf_ip_checksum+0xcc/0x100
    kernel: [] icmp_error+0x1f7/0x35c [nf_conntrack_ipv4]
    kernel: [] ? netif_rx+0xb9/0x1d0
    kernel: [] ? internal_dev_recv+0xdb/0x130 [openvswitch]
    kernel: [] nf_conntrack_in+0xf0/0xa80 [nf_conntrack]
    kernel: [] ? inet_del_offload+0x40/0x40
    kernel: [] ipv4_conntrack_in+0x22/0x30 [nf_conntrack_ipv4]
    kernel: [] nf_iterate+0xaa/0xc0
    kernel: [] ? inet_del_offload+0x40/0x40
    kernel: [] nf_hook_slow+0x84/0x140
    kernel: [] ? inet_del_offload+0x40/0x40
    kernel: [] ip_rcv+0x344/0x380

    Hardware verifies IP & tcp/udp header checksum but does not provide payload
    checksum, use CHECKSUM_UNNECESSARY. Set it only if its valid IP tcp/udp packet.

    Cc: Jiri Benc
    Cc: Stefan Assmann
    Reported-by: Sunil Choudhary
    Signed-off-by: Govindarajulu Varadarajan
    Reviewed-by: Jiri Benc
    Signed-off-by: David S. Miller

    Govindarajulu Varadarajan
     
  • when skb_gso_segment returns error, the original skb should be freed

    Signed-off-by: Li RongQing
    Acked-by: David L Stevens
    Signed-off-by: David S. Miller

    Li RongQing
     

19 Dec, 2014

5 commits

  • Pull infiniband updates from Roland Dreier:
    "Main batch of InfiniBand/RDMA changes for 3.19:

    - On-demand paging support in core midlayer and mlx5 driver. This
    lets userspace create non-pinned memory regions and have the
    adapter HW trigger page faults.
    - iSER and IPoIB updates and fixes.
    - Low-level HW driver updates for cxgb4, mlx4 and ocrdma.
    - Other miscellaneous fixes"

    * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (56 commits)
    IB/mlx5: Implement on demand paging by adding support for MMU notifiers
    IB/mlx5: Add support for RDMA read/write responder page faults
    IB/mlx5: Handle page faults
    IB/mlx5: Page faults handling infrastructure
    IB/mlx5: Add mlx5_ib_update_mtt to update page tables after creation
    IB/mlx5: Changes in memory region creation to support on-demand paging
    IB/mlx5: Implement the ODP capability query verb
    mlx5_core: Add support for page faults events and low level handling
    mlx5_core: Re-add MLX5_DEV_CAP_FLAG_ON_DMND_PG flag
    IB/srp: Allow newline separator for connection string
    IB/core: Implement support for MMU notifiers regarding on demand paging regions
    IB/core: Add support for on demand paging regions
    IB/core: Add flags for on demand paging support
    IB/core: Add support for extended query device caps
    IB/mlx5: Add function to read WQE from user-space
    IB/core: Add umem function to read data from user-space
    IB/core: Replace ib_umem's offset field with a full address
    IB/mlx5: Enhance UMR support to allow partial page table update
    IB/mlx5: Remove per-MR pas and dma pointers
    RDMA/ocrdma: Always resolve destination mac from GRH for UD QPs
    ...

    Linus Torvalds
     
  • An earlier commit to resolve an issue with encapsulation offloads missed
    setting a bit in the outer netdev features flag. This results in loss of TSO
    feature on a VxLAN interface.

    Fixes: 630f4b70 ("Export tunnel offloads only when a VxLAN tunnel is created")

    Signed-off-by: Sriharsha Basavapatna
    Signed-off-by: David S. Miller

    Sriharsha Basavapatna
     
  • Noticed when debugging ptp.

    Signed-off-by: Jiri Benc
    Signed-off-by: David S. Miller

    Jiri Benc
     
  • Commit bc96f648df1bbc2729abbb84513cf4f64273a1f1 (xen-netback: make
    feature-rx-notify mandatory) incorrectly assumed that there were no
    frontends in use that did not support this feature. But the frontend
    driver in MiniOS does not and since this is used by (qemu) stubdoms,
    these stopped working.

    Netback sort of works as-is in this mode except:

    - If there are no Rx requests and the internal Rx queue fills, only
    the drain timeout will wake the thread. The default drain timeout
    of 10 s would give unacceptable pauses.

    - If an Rx stall was detected and the internal Rx queue is drained,
    then the Rx thread would never wake.

    Handle these two cases (when feature-rx-notify is disabled) by:

    - Reducing the drain timeout to 30 ms.

    - Disabling Rx stall detection.

    Reported-by: John
    Tested-by: John
    Signed-off-by: David Vrabel
    Reviewed-by: Wei Liu
    Signed-off-by: David S. Miller

    David Vrabel
     
  • QSA module was getting decoded as QSFP module in ethtool get settings, this
    patch fixes it.

    Signed-off-by: Hariprasad Shenai
    Signed-off-by: David S. Miller

    Hariprasad Shenai
     

17 Dec, 2014

9 commits

  • The current implementations all use dev_uc_add_excl() and such whose API
    doesn't support vlans, so we can't make it with NICs HW for now.

    Fixes: f6f6424ba773 ('net: make vid as a parameter for ndo_fdb_add/ndo_fdb_del')
    Signed-off-by: Or Gerlitz
    Reviewed-by: Jiri Pirko
    Acked-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Or Gerlitz
     
  • This commit contains 2 fixes for the 128B CQE/EQE stride feaure.
    Wei found that mlx4_QUERY_HCA function marked the wrong capability
    in flags (64B CQE/EQE), when CQE/EQE stride feature was enabled.
    Also added small fix in initial CQE ownership bit assignment, when CQE
    is size is not default 32B.

    Fixes: 77507aa24 (net/mlx4: Enable CQE/EQE stride support)
    Signed-off-by: Wei Yang
    Signed-off-by: Ido Shamay
    Signed-off-by: Amir Vadai
    Signed-off-by: David S. Miller

    Ido Shamay
     
  • Do camera capture test on i.MX6q sabresd board, and save the capture data to
    nfs rootfs. The command is:
    gst-launch-1.0 -e imxv4l2src device=/dev/video1 num-buffers=2592000 ! tee name=t !
    queue ! imxv4l2sink sync=false t. ! queue ! vpuenc ! queue ! mux. pulsesrc num-buffers=3720937
    blocksize=4096 ! 'audio/x-raw, rate=44100, channels=2' ! queue ! imxmp3enc ! mpegaudioparse !
    queue ! mux. qtmux name=mux ! filesink location=video_recording_long.mov

    After about 10 hours running, there have net watchdog timeout kernel dump:
    ...
    WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:264 dev_watchdog+0x2b4/0x2d8()
    NETDEV WATCHDOG: eth0 (fec): transmit queue 0 timed out
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.14.24-01051-gdb840b7 #440
    [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
    [] (show_stack) from [] (dump_stack+0x78/0xc0)
    [] (dump_stack) from [] (warn_slowpath_common+0x68/0x8c)
    [] (warn_slowpath_common) from [] (warn_slowpath_fmt+0x30/0x40)
    [] (warn_slowpath_fmt) from [] (dev_watchdog+0x2b4/0x2d8)
    [] (dev_watchdog) from [] (call_timer_fn.isra.33+0x24/0x8c)
    [] (call_timer_fn.isra.33) from [] (run_timer_softirq+0x184/0x220)
    [] (run_timer_softirq) from [] (__do_softirq+0xc0/0x22c)
    [] (__do_softirq) from [] (irq_exit+0xa8/0xf4)
    [] (irq_exit) from [] (handle_IRQ+0x54/0xb4)
    [] (handle_IRQ) from [] (gic_handle_irq+0x28/0x5c)
    [] (gic_handle_irq) from [] (__irq_svc+0x40/0x74)
    Exception stack(0x80d27f18 to 0x80d27f60)
    7f00: 80d27f60 0000014c
    7f20: 8858c60e 0000004d 884e4540 0000004d ab7250d0 80d34348 00000000 00000000
    7f40: 00000001 00000000 00000017 80d27f60 800702a4 80476e6c 600f0013 ffffffff
    [] (__irq_svc) from [] (cpuidle_enter_state+0x50/0xe0)
    [] (cpuidle_enter_state) from [] (cpuidle_idle_call+0xac/0x154)
    [] (cpuidle_idle_call) from [] (arch_cpu_idle+0x8/0x44)
    [] (arch_cpu_idle) from [] (cpu_startup_entry+0x100/0x158)
    [] (cpu_startup_entry) from [] (start_kernel+0x304/0x368)
    ---[ end trace 09ebd32fb032f86d ]---
    ...

    There might have a race in napi_schedule(), leaving interrupts disabled forever.
    After these patch, the case still work more than 40 hours running.

    Signed-off-by: Fugang Duan
    Signed-off-by: David S. Miller

    Nimrod Andy
     
  • After d75b1ade567ffab085e8adbbdacf0092d10cd09c (net: less interrupt
    masking in NAPI) the napi instance is removed from the per-cpu list
    prior to calling the n->poll(), and is only requeued if all of the
    budget was used. This inadvertently broke netfront because netfront
    does not use NAPI correctly.

    If netfront had not used all of its budget it would do a final check
    for any Rx responses and avoid calling napi_complete() if there were
    more responses. It would still return under budget so it would never
    be rescheduled. The final check would also not re-enable the Rx
    interrupt.

    Additionally, xenvif_poll() would also call napi_complete() /after/
    enabling the interrupt. This resulted in a race between the
    napi_complete() and the napi_schedule() in the interrupt handler. The
    use of local_irq_save/restore() avoided by race iff the handler is
    running on the same CPU but not if it was running on a different CPU.

    Fix both of these by always calling napi_compete() if the budget was
    not all used, and then calling napi_schedule() if the final checks
    says there's more work.

    Signed-off-by: David Vrabel
    Cc: Eric Dumazet
    Signed-off-by: David S. Miller

    David Vrabel
     
  • John W. Linville says:

    ====================
    pull request: wireless 2014-12-16

    Please pull this batch of fixes intended for the 3.19 stream!

    For the Bluetooth bits, Johan says:

    "The patches consist of:

    - Coccinelle warning fix
    - hci_dev_lock/unlock fixes
    - Fixes for pending mgmt command handling
    - Fixes for properly following the force_lesc_support switch
    - Fix for a Microsoft branded Broadcom adapter
    - New device id for Atheros AR3012
    - Fix for BR/EDR Secure Connections enabling"

    Along with that...

    Brian Norris avoids leaking some kernel memory contents via printk in brcmsmac.

    Julia Lawall corrects some misspellings in a few drivers.

    Larry Finger gives us one more rtlwifi fix to correct a porting oversight.

    Wei Yongjun fixes a sparse warning in rtlwifi.

    Please let me know if there are problems!
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Otherwise we get things like:

    warning: (NET_DSA_BCM_SF2 && BCMGENET && SYSTEMPORT) selects FIXED_PHY which has unmet direct dependencies (NETDEVICES && PHYLIB=y)

    In order to make this work we have to rename fixed.c to fixed_phy.c
    because the regulator drivers already have a module named "fixed.o".

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Use TUNSETVNETLE/TUNGETVNETLE instead.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: David S. Miller

    Michael S. Tsirkin
     
  • Use TUNSETVNETLE/TUNGETVNETLE instead.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: David S. Miller

    Michael S. Tsirkin
     
  • flags field in ifreq is only 16 bit wide, but
    we read it as a 32 bit value.
    If userspace doesn't zero-initialize unused fields,
    this will lead to failures.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: David S. Miller

    Michael S. Tsirkin
     

16 Dec, 2014

1 commit

  • There is no need to do the following:

    select FIXED_PHY if NET_DSA_BCM_SF2=y, as this implies that we will not be
    able to build and/or run the driver correctly when built as a module,
    which is no longer an issue since commit 37e9a6904520 ("net: phy: export
    fixed_phy_register()").

    Fixes: 246d7f773c13ca ("net: dsa: add Broadcom SF2 switch driver")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli