- 18 12月, 2016 21 次提交
-
-
由 Ido Schimmel 提交于
When a port is split we should mark it as such, as otherwise the split ports aren't renamed correctly (e.g. sw1p3 -> sw1p3s1) and the unsplit operation fails: $ devlink port split sw1p3 count 4 $ devlink port unsplit eth0 devlink answers: Invalid argument [ 598.565307] mlxsw_spectrum 0000:03:00.0 eth0: Port wasn't split Fixes: 67963a33 ("mlxsw: Make devlink port instances independent of spectrum/switchx2 port instances") Signed-off-by: NIdo Schimmel <idosch@mellanox.com> Reported-by: NTamir Winetroub <tamirw@mellanox.com> Reviewed-by: NElad Raz <eladr@mellanox.com> Tested-by: NTamir Winetroub <tamirw@mellanox.com> Signed-off-by: NJiri Pirko <jiri@mellanox.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Arnd Bergmann 提交于
The newly added file causes a harmless warning, with "make W=1": drivers/net/ethernet/qlogic/qed/qed_iscsi.c: In function 'qed_get_iscsi_ops': drivers/net/ethernet/qlogic/qed/qed_iscsi.c:1268:29: warning: old-style function definition [-Wold-style-definition] This makes it a proper prototype. Fixes: fc831825 ("qed: Add support for hardware offloaded iSCSI.") Signed-off-by: NArnd Bergmann <arnd@arndb.de> Reviewed-by: NJohannes Thumshirn <jthumshirn@suse.de> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Manuel Bessler 提交于
'ifconfig eth0 down' makes r6040_close() trigger: INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected Fixed by moving calls to phy_stop(), napi_disable(), netif_stop_queue() to outside of the module's private spin_lock_irq block. Found on a Versalogic Tomcat SBC with a Vortex86 SoC s1660e_5150:~# sudo ifconfig eth0 down [ 61.306415] ====================================================== [ 61.306415] [ INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected ] [ 61.306415] 4.9.0-gb898d2d-manuel #1 Not tainted [ 61.306415] ------------------------------------------------------ [ 61.306415] ifconfig/449 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire: [ 61.306415] (&dev->lock){+.+...}, at: [<c1336276>] phy_stop+0x16/0x80 [ 61.306415] and this task is already holding: [ 61.306415] (&(&lp->lock)->rlock){+.-...}, at: [<d0934c84>] r6040_close+0x24/0x230 [r6040] which would create a new lock dependency: [ 61.306415] (&(&lp->lock)->rlock){+.-...} -> (&dev->lock){+.+...} [ 61.306415] but this new dependency connects a SOFTIRQ-irq-safe lock: [ 61.306415] (&(&lp->lock)->rlock){+.-...} [ 61.306415] ... which became SOFTIRQ-irq-safe at: [ 61.306415] [ 61.306415] [<c1075bc5>] __lock_acquire+0x555/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14bb334>] _raw_spin_lock_irqsave+0x24/0x40 [ 61.306415] [ 61.306415] [<d0934ac0>] r6040_start_xmit+0x30/0x1d0 [r6040] [ 61.306415] [ 61.306415] [<c13a7d4d>] dev_hard_start_xmit+0x9d/0x2d0 [ 61.306415] [ 61.306415] [<c13c8a38>] sch_direct_xmit+0xa8/0x140 [ 61.306415] [ 61.306415] [<c13a8436>] __dev_queue_xmit+0x416/0x780 [ 61.306415] [ 61.306415] [<c13a87aa>] dev_queue_xmit+0xa/0x10 [ 61.306415] [ 61.306415] [<c13b4837>] neigh_resolve_output+0x147/0x220 [ 61.306415] [ 61.306415] [<c144541b>] ip6_finish_output2+0x2fb/0x910 [ 61.306415] [ 61.306415] [<c14494e6>] ip6_finish_output+0xa6/0x1a0 [ 61.306415] [ 61.306415] [<c1449635>] ip6_output+0x55/0x320 [ 61.306415] [ 61.306415] [<c146f4d2>] mld_sendpack+0x352/0x560 [ 61.306415] [ 61.306415] [<c146fe55>] mld_ifc_timer_expire+0x155/0x280 [ 61.306415] [ 61.306415] [<c108b081>] call_timer_fn+0x81/0x270 [ 61.306415] [ 61.306415] [<c108b331>] expire_timers+0xc1/0x180 [ 61.306415] [ 61.306415] [<c108b4f7>] run_timer_softirq+0x77/0x150 [ 61.306415] [ 61.306415] [<c1043d04>] __do_softirq+0xb4/0x3d0 [ 61.306415] [ 61.306415] [<c101a15c>] do_softirq_own_stack+0x1c/0x30 [ 61.306415] [ 61.306415] [<c104416e>] irq_exit+0x8e/0xa0 [ 61.306415] [ 61.306415] [<c1019d31>] do_IRQ+0x51/0x100 [ 61.306415] [ 61.306415] [<c14bc176>] common_interrupt+0x36/0x40 [ 61.306415] [ 61.306415] [<c1134928>] set_root+0x68/0xf0 [ 61.306415] [ 61.306415] [<c1136120>] path_init+0x400/0x640 [ 61.306415] [ 61.306415] [<c11386bf>] path_lookupat+0xf/0xe0 [ 61.306415] [ 61.306415] [<c1139ebc>] filename_lookup+0x6c/0x100 [ 61.306415] [ 61.306415] [<c1139fd5>] user_path_at_empty+0x25/0x30 [ 61.306415] [ 61.306415] [<c11298c6>] SyS_faccessat+0x86/0x1e0 [ 61.306415] [ 61.306415] [<c1129a30>] SyS_access+0x10/0x20 [ 61.306415] [ 61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110 [ 61.306415] [ 61.306415] [<c14bba3f>] restore_all+0x0/0x61 [ 61.306415] [ 61.306415] to a SOFTIRQ-irq-unsafe lock: [ 61.306415] (&dev->lock){+.+...} [ 61.306415] ... which became SOFTIRQ-irq-unsafe at: [ 61.306415] ...[ 61.306415] [ 61.306415] [<c1075c0c>] __lock_acquire+0x59c/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0 [ 61.306415] [ 61.306415] [<c133747d>] phy_probe+0x4d/0xc0 [ 61.306415] [ 61.306415] [<c1338afe>] phy_attach_direct+0xbe/0x190 [ 61.306415] [ 61.306415] [<c1338ca7>] phy_connect_direct+0x17/0x60 [ 61.306415] [ 61.306415] [<c1338d23>] phy_connect+0x33/0x70 [ 61.306415] [ 61.306415] [<d09357a0>] r6040_init_one+0x3a0/0x500 [r6040] [ 61.306415] [ 61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0 [ 61.306415] [ 61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280 [ 61.306415] [ 61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90 [ 61.306415] [ 61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80 [ 61.306415] [ 61.306415] [<c12f5954>] driver_attach+0x14/0x20 [ 61.306415] [ 61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210 [ 61.306415] [ 61.306415] [<c12f6a21>] driver_register+0x51/0xd0 [ 61.306415] [ 61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50 [ 61.306415] [ 61.306415] [<d0938017>] 0xd0938017 [ 61.306415] [ 61.306415] [<c100043f>] do_one_initcall+0x2f/0x140 [ 61.306415] [ 61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b [ 61.306415] [ 61.306415] [<c10a680e>] load_module+0x1b2e/0x2070 [ 61.306415] [ 61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80 [ 61.306415] [ 61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110 [ 61.306415] [ 61.306415] [<c14bba3f>] restore_all+0x0/0x61 [ 61.306415] [ 61.306415] other info that might help us debug this: [ 61.306415] [ 61.306415] Possible interrupt unsafe locking scenario: [ 61.306415] [ 61.306415] CPU0 CPU1 [ 61.306415] ---- ---- [ 61.306415] lock(&dev->lock); [ 61.306415] local_irq_disable(); [ 61.306415] lock(&(&lp->lock)->rlock); [ 61.306415] lock(&dev->lock); [ 61.306415] <Interrupt> [ 61.306415] lock(&(&lp->lock)->rlock); [ 61.306415] [ 61.306415] *** DEADLOCK *** [ 61.306415] [ 61.306415] 2 locks held by ifconfig/449: [ 61.306415] #0: (rtnl_mutex){+.+.+.}, at: [<c13b68ef>] rtnl_lock+0xf/0x20 [ 61.306415] #1: (&(&lp->lock)->rlock){+.-...}, at: [<d0934c84>] r6040_close+0x24/0x230 [r6040] [ 61.306415] [ 61.306415] the dependencies between SOFTIRQ-irq-safe lock and the holding lock: [ 61.306415] -> (&(&lp->lock)->rlock){+.-...} ops: 3049 { [ 61.306415] HARDIRQ-ON-W at: [ 61.306415] [ 61.306415] [<c1075be7>] __lock_acquire+0x577/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14bb21b>] _raw_spin_lock+0x1b/0x30 [ 61.306415] [ 61.306415] [<d09343cc>] r6040_poll+0x2c/0x330 [r6040] [ 61.306415] [ 61.306415] [<c13a5577>] net_rx_action+0x197/0x340 [ 61.306415] [ 61.306415] [<c1043d04>] __do_softirq+0xb4/0x3d0 [ 61.306415] [ 61.306415] [<c1044037>] run_ksoftirqd+0x17/0x40 [ 61.306415] [ 61.306415] [<c105fe91>] smpboot_thread_fn+0x141/0x180 [ 61.306415] [ 61.306415] [<c105c84e>] kthread+0xde/0x110 [ 61.306415] [ 61.306415] [<c14bb949>] ret_from_fork+0x19/0x30 [ 61.306415] IN-SOFTIRQ-W at: [ 61.306415] [ 61.306415] [<c1075bc5>] __lock_acquire+0x555/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14bb334>] _raw_spin_lock_irqsave+0x24/0x40 [ 61.306415] [ 61.306415] [<d0934ac0>] r6040_start_xmit+0x30/0x1d0 [r6040] [ 61.306415] [ 61.306415] [<c13a7d4d>] dev_hard_start_xmit+0x9d/0x2d0 [ 61.306415] [ 61.306415] [<c13c8a38>] sch_direct_xmit+0xa8/0x140 [ 61.306415] [ 61.306415] [<c13a8436>] __dev_queue_xmit+0x416/0x780 [ 61.306415] [ 61.306415] [<c13a87aa>] dev_queue_xmit+0xa/0x10 [ 61.306415] [ 61.306415] [<c13b4837>] neigh_resolve_output+0x147/0x220 [ 61.306415] [ 61.306415] [<c144541b>] ip6_finish_output2+0x2fb/0x910 [ 61.306415] [ 61.306415] [<c14494e6>] ip6_finish_output+0xa6/0x1a0 [ 61.306415] [ 61.306415] [<c1449635>] ip6_output+0x55/0x320 [ 61.306415] [ 61.306415] [<c146f4d2>] mld_sendpack+0x352/0x560 [ 61.306415] [ 61.306415] [<c146fe55>] mld_ifc_timer_expire+0x155/0x280 [ 61.306415] [ 61.306415] [<c108b081>] call_timer_fn+0x81/0x270 [ 61.306415] [ 61.306415] [<c108b331>] expire_timers+0xc1/0x180 [ 61.306415] [ 61.306415] [<c108b4f7>] run_timer_softirq+0x77/0x150 [ 61.306415] [ 61.306415] [<c1043d04>] __do_softirq+0xb4/0x3d0 [ 61.306415] [ 61.306415] [<c101a15c>] do_softirq_own_stack+0x1c/0x30 [ 61.306415] [ 61.306415] [<c104416e>] irq_exit+0x8e/0xa0 [ 61.306415] [ 61.306415] [<c1019d31>] do_IRQ+0x51/0x100 [ 61.306415] [ 61.306415] [<c14bc176>] common_interrupt+0x36/0x40 [ 61.306415] [ 61.306415] [<c1134928>] set_root+0x68/0xf0 [ 61.306415] [ 61.306415] [<c1136120>] path_init+0x400/0x640 [ 61.306415] [ 61.306415] [<c11386bf>] path_lookupat+0xf/0xe0 [ 61.306415] [ 61.306415] [<c1139ebc>] filename_lookup+0x6c/0x100 [ 61.306415] [ 61.306415] [<c1139fd5>] user_path_at_empty+0x25/0x30 [ 61.306415] [ 61.306415] [<c11298c6>] SyS_faccessat+0x86/0x1e0 [ 61.306415] [ 61.306415] [<c1129a30>] SyS_access+0x10/0x20 [ 61.306415] [ 61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110 [ 61.306415] [ 61.306415] [<c14bba3f>] restore_all+0x0/0x61 [ 61.306415] INITIAL USE at: [ 61.306415] [ 61.306415] [<c107586e>] __lock_acquire+0x1fe/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14bb334>] _raw_spin_lock_irqsave+0x24/0x40 [ 61.306415] [ 61.306415] [<d093474e>] r6040_get_stats+0x1e/0x60 [r6040] [ 61.306415] [ 61.306415] [<c139fb16>] dev_get_stats+0x96/0xc0 [ 61.306415] [ 61.306415] [<c14b416e>] rtnl_fill_stats+0x36/0xfd [ 61.306415] [ 61.306415] [<c13b7b3c>] rtnl_fill_ifinfo+0x47c/0xce0 [ 61.306415] [ 61.306415] [<c13bc08e>] rtmsg_ifinfo_build_skb+0x4e/0xd0 [ 61.306415] [ 61.306415] [<c13bc120>] rtmsg_ifinfo.part.20+0x10/0x40 [ 61.306415] [ 61.306415] [<c13bc16b>] rtmsg_ifinfo+0x1b/0x20 [ 61.306415] [ 61.306415] [<c13a9d19>] register_netdevice+0x409/0x550 [ 61.306415] [ 61.306415] [<c13a9e72>] register_netdev+0x12/0x20 [ 61.306415] [ 61.306415] [<d09357e8>] r6040_init_one+0x3e8/0x500 [r6040] [ 61.306415] [ 61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0 [ 61.306415] [ 61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280 [ 61.306415] [ 61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90 [ 61.306415] [ 61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80 [ 61.306415] [ 61.306415] [<c12f5954>] driver_attach+0x14/0x20 [ 61.306415] [ 61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210 [ 61.306415] [ 61.306415] [<c12f6a21>] driver_register+0x51/0xd0 [ 61.306415] [ 61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50 [ 61.306415] [ 61.306415] [<d0938017>] 0xd0938017 [ 61.306415] [ 61.306415] [<c100043f>] do_one_initcall+0x2f/0x140 [ 61.306415] [ 61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b [ 61.306415] [ 61.306415] [<c10a680e>] load_module+0x1b2e/0x2070 [ 61.306415] [ 61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80 [ 61.306415] [ 61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110 [ 61.306415] [ 61.306415] [<c14bba3f>] restore_all+0x0/0x61 [ 61.306415] } [ 61.306415] ... key at: [<d0936280>] __key.45893+0x0/0xfffff739 [r6040] [ 61.306415] ... acquired at: [ 61.306415] [ 61.306415] [<c1074a32>] check_irq_usage+0x42/0xb0 [ 61.306415] [ 61.306415] [<c107677c>] __lock_acquire+0x110c/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0 [ 61.306415] [ 61.306415] [<c1336276>] phy_stop+0x16/0x80 [ 61.306415] [ 61.306415] [<d0934ce9>] r6040_close+0x89/0x230 [r6040] [ 61.306415] [ 61.306415] [<c13a0a91>] __dev_close_many+0x61/0xa0 [ 61.306415] [ 61.306415] [<c13a0bbf>] __dev_close+0x1f/0x30 [ 61.306415] [ 61.306415] [<c13a9127>] __dev_change_flags+0x87/0x150 [ 61.306415] [ 61.306415] [<c13a9213>] dev_change_flags+0x23/0x60 [ 61.306415] [ 61.306415] [<c1416238>] devinet_ioctl+0x5f8/0x6f0 [ 61.306415] [ 61.306415] [<c1417f75>] inet_ioctl+0x65/0x90 [ 61.306415] [ 61.306415] [<c1389b54>] sock_ioctl+0x124/0x2b0 [ 61.306415] [ 61.306415] [<c113cf7c>] do_vfs_ioctl+0x7c/0x790 [ 61.306415] [ 61.306415] [<c113d6b8>] SyS_ioctl+0x28/0x50 [ 61.306415] [ 61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110 [ 61.306415] [ 61.306415] [<c14bba3f>] restore_all+0x0/0x61 [ 61.306415] [ 61.306415] the dependencies between the lock to be acquired[ 61.306415] and SOFTIRQ-irq-unsafe lock: [ 61.306415] -> (&dev->lock){+.+...} ops: 56 { [ 61.306415] HARDIRQ-ON-W at: [ 61.306415] [ 61.306415] [<c1075be7>] __lock_acquire+0x577/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0 [ 61.306415] [ 61.306415] [<c133747d>] phy_probe+0x4d/0xc0 [ 61.306415] [ 61.306415] [<c1338afe>] phy_attach_direct+0xbe/0x190 [ 61.306415] [ 61.306415] [<c1338ca7>] phy_connect_direct+0x17/0x60 [ 61.306415] [ 61.306415] [<c1338d23>] phy_connect+0x33/0x70 [ 61.306415] [ 61.306415] [<d09357a0>] r6040_init_one+0x3a0/0x500 [r6040] [ 61.306415] [ 61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0 [ 61.306415] [ 61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280 [ 61.306415] [ 61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90 [ 61.306415] [ 61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80 [ 61.306415] [ 61.306415] [<c12f5954>] driver_attach+0x14/0x20 [ 61.306415] [ 61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210 [ 61.306415] [ 61.306415] [<c12f6a21>] driver_register+0x51/0xd0 [ 61.306415] [ 61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50 [ 61.306415] [ 61.306415] [<d0938017>] 0xd0938017 [ 61.306415] [ 61.306415] [<c100043f>] do_one_initcall+0x2f/0x140 [ 61.306415] [ 61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b [ 61.306415] [ 61.306415] [<c10a680e>] load_module+0x1b2e/0x2070 [ 61.306415] [ 61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80 [ 61.306415] [ 61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110 [ 61.306415] [ 61.306415] [<c14bba3f>] restore_all+0x0/0x61 [ 61.306415] SOFTIRQ-ON-W at: [ 61.306415] [ 61.306415] [<c1075c0c>] __lock_acquire+0x59c/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0 [ 61.306415] [ 61.306415] [<c133747d>] phy_probe+0x4d/0xc0 [ 61.306415] [ 61.306415] [<c1338afe>] phy_attach_direct+0xbe/0x190 [ 61.306415] [ 61.306415] [<c1338ca7>] phy_connect_direct+0x17/0x60 [ 61.306415] [ 61.306415] [<c1338d23>] phy_connect+0x33/0x70 [ 61.306415] [ 61.306415] [<d09357a0>] r6040_init_one+0x3a0/0x500 [r6040] [ 61.306415] [ 61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0 [ 61.306415] [ 61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280 [ 61.306415] [ 61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90 [ 61.306415] [ 61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80 [ 61.306415] [ 61.306415] [<c12f5954>] driver_attach+0x14/0x20 [ 61.306415] [ 61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210 [ 61.306415] [ 61.306415] [<c12f6a21>] driver_register+0x51/0xd0 [ 61.306415] [ 61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50 [ 61.306415] [ 61.306415] [<d0938017>] 0xd0938017 [ 61.306415] [ 61.306415] [<c100043f>] do_one_initcall+0x2f/0x140 [ 61.306415] [ 61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b [ 61.306415] [ 61.306415] [<c10a680e>] load_module+0x1b2e/0x2070 [ 61.306415] [ 61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80 [ 61.306415] [ 61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110 [ 61.306415] [ 61.306415] [<c14bba3f>] restore_all+0x0/0x61 [ 61.306415] INITIAL USE at: [ 61.306415] [ 61.306415] [<c107586e>] __lock_acquire+0x1fe/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0 [ 61.306415] [ 61.306415] [<c133747d>] phy_probe+0x4d/0xc0 [ 61.306415] [ 61.306415] [<c1338afe>] phy_attach_direct+0xbe/0x190 [ 61.306415] [ 61.306415] [<c1338ca7>] phy_connect_direct+0x17/0x60 [ 61.306415] [ 61.306415] [<c1338d23>] phy_connect+0x33/0x70 [ 61.306415] [ 61.306415] [<d09357a0>] r6040_init_one+0x3a0/0x500 [r6040] [ 61.306415] [ 61.306415] [<c12a78c7>] pci_device_probe+0x77/0xd0 [ 61.306415] [ 61.306415] [<c12f5e15>] driver_probe_device+0x145/0x280 [ 61.306415] [ 61.306415] [<c12f5fd9>] __driver_attach+0x89/0x90 [ 61.306415] [ 61.306415] [<c12f43ef>] bus_for_each_dev+0x4f/0x80 [ 61.306415] [ 61.306415] [<c12f5954>] driver_attach+0x14/0x20 [ 61.306415] [ 61.306415] [<c12f55b7>] bus_add_driver+0x197/0x210 [ 61.306415] [ 61.306415] [<c12f6a21>] driver_register+0x51/0xd0 [ 61.306415] [ 61.306415] [<c12a6955>] __pci_register_driver+0x45/0x50 [ 61.306415] [ 61.306415] [<d0938017>] 0xd0938017 [ 61.306415] [ 61.306415] [<c100043f>] do_one_initcall+0x2f/0x140 [ 61.306415] [ 61.306415] [<c10e48c0>] do_init_module+0x4a/0x19b [ 61.306415] [ 61.306415] [<c10a680e>] load_module+0x1b2e/0x2070 [ 61.306415] [ 61.306415] [<c10a6eb9>] SyS_finit_module+0x69/0x80 [ 61.306415] [ 61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110 [ 61.306415] [ 61.306415] [<c14bba3f>] restore_all+0x0/0x61 [ 61.306415] } [ 61.306415] ... key at: [<c1f28f39>] __key.43998+0x0/0x8 [ 61.306415] ... acquired at: [ 61.306415] [ 61.306415] [<c1074a32>] check_irq_usage+0x42/0xb0 [ 61.306415] [ 61.306415] [<c107677c>] __lock_acquire+0x110c/0x1770 [ 61.306415] [ 61.306415] [<c107717c>] lock_acquire+0x7c/0x150 [ 61.306415] [ 61.306415] [<c14b7add>] mutex_lock_nested+0x2d/0x4a0 [ 61.306415] [ 61.306415] [<c1336276>] phy_stop+0x16/0x80 [ 61.306415] [ 61.306415] [<d0934ce9>] r6040_close+0x89/0x230 [r6040] [ 61.306415] [ 61.306415] [<c13a0a91>] __dev_close_many+0x61/0xa0 [ 61.306415] [ 61.306415] [<c13a0bbf>] __dev_close+0x1f/0x30 [ 61.306415] [ 61.306415] [<c13a9127>] __dev_change_flags+0x87/0x150 [ 61.306415] [ 61.306415] [<c13a9213>] dev_change_flags+0x23/0x60 [ 61.306415] [ 61.306415] [<c1416238>] devinet_ioctl+0x5f8/0x6f0 [ 61.306415] [ 61.306415] [<c1417f75>] inet_ioctl+0x65/0x90 [ 61.306415] [ 61.306415] [<c1389b54>] sock_ioctl+0x124/0x2b0 [ 61.306415] [ 61.306415] [<c113cf7c>] do_vfs_ioctl+0x7c/0x790 [ 61.306415] [ 61.306415] [<c113d6b8>] SyS_ioctl+0x28/0x50 [ 61.306415] [ 61.306415] [<c100179f>] do_int80_syscall_32+0x3f/0x110 [ 61.306415] [ 61.306415] [<c14bba3f>] restore_all+0x0/0x61 [ 61.306415] [ 61.306415] [ 61.306415] stack backtrace: [ 61.306415] CPU: 0 PID: 449 Comm: ifconfig Not tainted 4.9.0-gb898d2d-manuel #1 [ 61.306415] Call Trace: [ 61.306415] dump_stack+0x16/0x19 [ 61.306415] check_usage+0x3f6/0x550 [ 61.306415] ? check_usage+0x4d/0x550 [ 61.306415] check_irq_usage+0x42/0xb0 [ 61.306415] __lock_acquire+0x110c/0x1770 [ 61.306415] lock_acquire+0x7c/0x150 [ 61.306415] ? phy_stop+0x16/0x80 [ 61.306415] mutex_lock_nested+0x2d/0x4a0 [ 61.306415] ? phy_stop+0x16/0x80 [ 61.306415] ? r6040_close+0x24/0x230 [r6040] [ 61.306415] ? __delay+0x9/0x10 [ 61.306415] phy_stop+0x16/0x80 [ 61.306415] r6040_close+0x89/0x230 [r6040] [ 61.306415] __dev_close_many+0x61/0xa0 [ 61.306415] __dev_close+0x1f/0x30 [ 61.306415] __dev_change_flags+0x87/0x150 [ 61.306415] dev_change_flags+0x23/0x60 [ 61.306415] devinet_ioctl+0x5f8/0x6f0 [ 61.306415] inet_ioctl+0x65/0x90 [ 61.306415] sock_ioctl+0x124/0x2b0 [ 61.306415] ? dlci_ioctl_set+0x30/0x30 [ 61.306415] do_vfs_ioctl+0x7c/0x790 [ 61.306415] ? trace_hardirqs_on+0xb/0x10 [ 61.306415] ? call_rcu_sched+0xd/0x10 [ 61.306415] ? __put_cred+0x32/0x50 [ 61.306415] ? SyS_faccessat+0x178/0x1e0 [ 61.306415] SyS_ioctl+0x28/0x50 [ 61.306415] do_int80_syscall_32+0x3f/0x110 [ 61.306415] entry_INT80_32+0x2f/0x2f [ 61.306415] EIP: 0xb764d364 [ 61.306415] EFLAGS: 00000286 CPU: 0 [ 61.306415] EAX: ffffffda EBX: 00000004 ECX: 00008914 EDX: bfa99d7c [ 61.306415] ESI: bfa99e4c EDI: fffffffe EBP: 00000004 ESP: bfa99d58 [ 61.306415] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b [ 63.836607] r6040 0000:00:08.0 eth0: Link is Down Signed-off-by: NManuel Bessler <manuel.bessler@sensus.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Dan Carpenter 提交于
In commit 99d8d215 ("irda: w83977af_ir: Neaten logging"), we accidentally added an extra tab to these lines. Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Philippe Reynes 提交于
The ethtool api {get|set}_settings is deprecated. We move this driver to new api {get|set}_link_ksettings. Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com> Tested-by: NBert Kenward <bkenward@solarflare.com> Acked-by: NBert Kenward <bkenward@solarflare.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Philippe Reynes 提交于
The ethtool api {get|set}_settings is deprecated. We move this driver to new api {get|set}_link_ksettings. Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Philippe Reynes 提交于
The ethtool api {get|set}_settings is deprecated. We move this driver to new api {get|set}_link_ksettings. Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Philippe Reynes 提交于
The ethtool api {get|set}_settings is deprecated. We move this driver to new api {get|set}_link_ksettings. Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Philippe Reynes 提交于
The ethtool api {get|set}_settings is deprecated. We move this driver to new api {get|set}_link_ksettings. Signed-off-by: NPhilippe Reynes <tremyfr@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Harald Welte 提交于
When generating a GTPv1 header in gtp1_push_header(), initialize the 'reserved' bit to zero. All 3GPP specifications for GTPv1 from Release 99 through Release 13 agree that a transmitter shall set this bit to zero, see e.g. Note 0 of Figure 2 in Section 6 of 3GPP TS 29.060 v13.5.0 Release 13, available from http://www.etsi.org/deliver/etsi_ts/129000_129099/129060/13.05.00_60/ts_129060v130500p.pdfSigned-off-by: NHarald Welte <laforge@gnumonks.org> Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lionel Gauthier 提交于
gtp_check_src_ms_ipv4() did not find the PDP context matching with the UE IP address because the memory location is not right, but the result is inverted by the Boolean "not" operator. So whatever is the PDP context, any call to this function is successful. Signed-off-by: NLionel Gauthier <Lionel.Gauthier@eurecom.fr> Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Kees Cook 提交于
Prepare to mark sensitive kernel structures for randomization by making sure they're using designated initializers. These were identified during allyesconfig builds of x86, arm, and arm64, with most initializer fixes extracted from grsecurity. Signed-off-by: NKees Cook <keescook@chromium.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Kees Cook 提交于
Prepare to mark sensitive kernel structures for randomization by making sure they're using designated initializers. These were identified during allyesconfig builds of x86, arm, and arm64, with most initializer fixes extracted from grsecurity. Signed-off-by: NKees Cook <keescook@chromium.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Kees Cook 提交于
Prepare to mark sensitive kernel structures for randomization by making sure they're using designated initializers. These were identified during allyesconfig builds of x86, arm, and arm64, with most initializer fixes extracted from grsecurity. Signed-off-by: NKees Cook <keescook@chromium.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Kees Cook 提交于
Prepare to mark sensitive kernel structures for randomization by making sure they're using designated initializers. These were identified during allyesconfig builds of x86, arm, and arm64, with most initializer fixes extracted from grsecurity. Signed-off-by: NKees Cook <keescook@chromium.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 John Fastabend 提交于
virtio_net XDP support expects receive buffers to be contiguous. If this is not the case we enable a slowpath to allow connectivity to continue but at a significan performance overhead associated with linearizing data. To make it painfully aware to users that XDP is running in a degraded mode we throw an xdp buffer error. To linearize packets we allocate a page and copy the segments of the data, including the header, into it. After this the page can be handled by XDP code flow as normal. Then depending on the return code the page is either freed or sent to the XDP xmit path. There is no attempt to optimize this path. This case is being handled simple as a precaution in case some unknown backend were to generate packets in this form. To test this I had to hack qemu and force it to generate these packets. I do not expect this case to be generated by "real" backends. Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 John Fastabend 提交于
This adds support for the XDP_TX action to virtio_net. When an XDP program is run and returns the XDP_TX action the virtio_net XDP implementation will transmit the packet on a TX queue that aligns with the current CPU that the XDP packet was processed on. Before sending the packet the header is zeroed. Also XDP is expected to handle checksum correctly so no checksum offload support is provided. Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 John Fastabend 提交于
XDP requires using isolated transmit queues to avoid interference with normal networking stack (BQL, NETDEV_TX_BUSY, etc). This patch adds a XDP queue per cpu when a XDP program is loaded and does not expose the queues to the OS via the normal API call to netif_set_real_num_tx_queues(). This way the stack will never push an skb to these queues. However virtio/vhost/qemu implementation only allows for creating TX/RX queue pairs at this time so creating only TX queues was not possible. And because the associated RX queues are being created I went ahead and exposed these to the stack and let the backend use them. This creates more RX queues visible to the network stack than TX queues which is worth mentioning but does not cause any issues as far as I can tell. Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 John Fastabend 提交于
This adds XDP support to virtio_net. Some requirements must be met for XDP to be enabled depending on the mode. First it will only be supported with LRO disabled so that data is not pushed across multiple buffers. Second the MTU must be less than a page size to avoid having to handle XDP across multiple pages. If mergeable receive is enabled this patch only supports the case where header and data are in the same buf which we can check when a packet is received by looking at num_buf. If the num_buf is greater than 1 and a XDP program is loaded the packet is dropped and a warning is thrown. When any_header_sg is set this does not happen and both header and data is put in a single buffer as expected so we check this when XDP programs are loaded. Subsequent patches will process the packet in a degraded mode to ensure connectivity and correctness is not lost even if backend pushes packets into multiple buffers. If big packets mode is enabled and MTU/LRO conditions above are met then XDP is allowed. This patch was tested with qemu with vhost=on and vhost=off where mergeable and big_packet modes were forced via hard coding feature negotiation. Multiple buffers per packet was forced via a small test patch to vhost.c in the vhost=on qemu mode. Suggested-by: NShrijeet Mukherjee <shrijeet@gmail.com> Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Madalin Bucur 提交于
Signed-off-by: NMadalin Bucur <madalin.bucur@nxp.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Claudiu Manoil 提交于
Ensure correct access to the big endian QMan HW through proper accessors. Signed-off-by: NClaudiu Manoil <claudiu.manoil@nxp.com> Signed-off-by: NMadalin Bucur <madalin.bucur@nxp.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 17 12月, 2016 11 次提交
-
-
由 David Ahern 提交于
Locally originated traffic in a VRF fails in the presence of a POSTROUTING rule. For example, $ iptables -t nat -A POSTROUTING -s 11.1.1.0/24 -j MASQUERADE $ ping -I red -c1 11.1.1.3 ping: Warning: source address might be selected on device other than red. PING 11.1.1.3 (11.1.1.3) from 11.1.1.2 red: 56(84) bytes of data. ping: sendmsg: Operation not permitted Worse, the above causes random corruption resulting in a panic in random places (I have not seen a consistent backtrace). Call nf_reset to drop the conntrack info following the pass through the VRF device. The nf_reset is needed on Tx but not Rx because of the order in which NF_HOOK's are hit: on Rx the VRF device is after the real ingress device and on Tx it is is before the real egress device. Connection tracking should be tied to the real egress device and not the VRF device. Fixes: 8f58336d ("net: Add ethernet header for pass through VRF device") Fixes: 35402e31 ("net: Add IPv6 support to VRF device") Signed-off-by: NDavid Ahern <dsa@cumulusnetworks.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 David Ahern 提交于
Connection tracking with VRF is broken because the pass through the VRF device drops the connection tracking info. Removing the call to nf_reset allows DNAT and MASQUERADE to work across interfaces within a VRF. Fixes: 73e20b76 ("net: vrf: Add support for PREROUTING rules on vrf device") Signed-off-by: NDavid Ahern <dsa@cumulusnetworks.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Bartosz Folta 提交于
There are hardware PCI implementations of Cadence GEM network controller. This patch will allow to use such hardware with reuse of existing Platform Driver. Signed-off-by: NBartosz Folta <bfolta@cadence.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Thomas Falcon 提交于
Include calculations to compute the number of segments that comprise an aggregated large packet. Signed-off-by: NThomas Falcon <tlfalcon@linux.vnet.ibm.com> Reviewed-by: NMarcelo Ricardo Leitner <marcelo.leitner@gmail.com> Reviewed-by: NJonathan Maxwell <jmaxwell37@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Timur Tabi 提交于
On ACPI systems, clocks are not available to drivers directly. They are handled exclusively by ACPI and/or firmware, so there is no clock driver. Calls to clk_get() always fail, so we should not even attempt to claim any clocks on ACPI systems. Signed-off-by: NTimur Tabi <timur@codeaurora.org> Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Jeroen De Wachter 提交于
Signed-off-by: NJeroen De Wachter <jeroen.de_wachter.ext@nokia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Jeroen De Wachter 提交于
Before, encx24j600_rx_packets did not update encx24j600_priv's next_packet member when an error occurred during packet handling (either because the packet's RSV header indicates an error or because the encx24j600_receive_packet method can't allocate an sk_buff). If the next_packet member is not updated, the ERXTAIL register will be set to the same value it had before, which means the bad packet remains in the component's memory and its RSV header will be read again when a new packet arrives. If the RSV header indicates a bad packet or if sk_buff allocation continues to fail, new packets will be stored in the component's memory until that memory is full, after which packets will be dropped. The SETPKTDEC command is always executed though, so the encx24j600 hardware has an incorrect count of the packets in its memory. To prevent this, the next_packet member should always be updated, allowing the packet to be skipped (either because it's bad, as indicated in its RSV header, or because allocating an sk_buff failed). In the allocation failure case, this does mean dropping a valid packet, but dropping the oldest packet to keep as much memory as possible available for new packets seems preferable to keeping old (but valid) packets around while dropping new ones. Signed-off-by: NJeroen De Wachter <jeroen.de_wachter.ext@nokia.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Dongpo Li 提交于
The hip04 driver calls into PHYLIB which now checks for net_device->dev.parent, so make sure we do set it before calling into any MDIO/PHYLIB related function. Fixes: ec988ad7 ("phy: Don't increment MDIO bus refcount unless it's a different owner") Signed-off-by: NDongpo Li <lidongpo@hisilicon.com> Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Dongpo Li 提交于
The hisi_femac driver calls into PHYLIB which now checks for net_device->dev.parent, so make sure we do set it before calling into any MDIO/PHYLIB related function. Fixes: ec988ad7 ("phy: Don't increment MDIO bus refcount unless it's a different owner") Signed-off-by: NDongpo Li <lidongpo@hisilicon.com> Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Andrew Lunn 提交于
A port is not necessarily assigned to a netdev. And a port does not need to be a member of a bridge. So when iterating over all ports, check before using the netdev and bridge_dev for a port. Otherwise we dereference a NULL pointer. Fixes: da9c359e ("net: dsa: mv88e6xxx: check hardware VLAN in use") Signed-off-by: NAndrew Lunn <andrew@lunn.ch> Reviewed-by: NVivien Didelot <vivien.didelot@savoirfairelinux.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Thomas Gleixner 提交于
The timer handling in this driver is broken in several ways: - corkscrew_open() initializes and arms a timer before requesting the device interrupt. If the request fails the timer stays armed. A second call to corkscrew_open will unconditionally reinitialize the quued timer and arm it again. Also a immediate device removal will leave the timer queued because close() is not called (open() failed) and therefore nothing issues del_timer(). The reinitialization corrupts the link chain in the timer wheel hash bucket and causes a NULL pointer dereference when the timer wheel tries to operate on that hash bucket. Immediate device removal lets the link chain poke into freed and possibly reused memory. Solution: Arm the timer after the successful irq request. - corkscrew_close() uses del_timer() On close the timer is disarmed with del_timer() which lets the following code race against a concurrent timer expiry function. Solution: Use del_timer_sync() instead - corkscrew_close() calls del_timer() unconditionally del_timer() is invoked even if the timer was never initialized. This works by chance because the struct containing the timer is zeroed at allocation time. Solution: Move the setup of the timer into corkscrew_setup(). Reported-by: NMatthew Whitehead <tedheadster@gmail.com> Signed-off-by: NThomas Gleixner <tglx@linutronix.de> Cc: Andy Lutomirski <luto@kernel.org> Cc: netdev@vger.kernel.org Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 13 12月, 2016 1 次提交
-
-
由 Jason Wang 提交于
Commit 44900010 ("virtio-net: enable multiqueue by default") blindly set the affinity instead of queues during probe which can cause a mismatch of #queues between guest and host. This patch fixes it by setting queues. Reported-by: NTheodore Ts'o <tytso@mit.edu> Tested-by: NTheodore Ts'o <tytso@mit.edu> Cc: Neil Horman <nhorman@tuxdriver.com> Cc: Michael S. Tsirkin <mst@redhat.com> Fixes: 49000102901 ("virtio-net: enable multiqueue by default") Signed-off-by: NJason Wang <jasowang@redhat.com> Acked-by: NMichael S. Tsirkin <mst@redhat.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 12 12月, 2016 1 次提交
-
-
由 Randy Dunlap 提交于
OpenRISC does not support VGA console, so prevent that kconfig symbol from being enabled for OpenRISC, thus fixing these build errors: drivers/built-in.o: In function `vgacon_save_screen': vgacon.c:(.text+0x20e0): undefined reference to `screen_info' vgacon.c:(.text+0x20e8): undefined reference to `screen_info' drivers/built-in.o: In function `vgacon_init': vgacon.c:(.text+0x284c): undefined reference to `screen_info' vgacon.c:(.text+0x2850): undefined reference to `screen_info' drivers/built-in.o: In function `vgacon_startup': vgacon.c:(.text+0x28d8): undefined reference to `screen_info' drivers/built-in.o:vgacon.c:(.text+0x28f0): more undefined references to `screen_info' follow Signed-off-by: NRandy Dunlap <rdunlap@infradead.org> Reported-by: Nkbuild test robot <fengguang.wu@intel.com> Cc: Chen Gang <gang.chen@asianux.com> Cc: Jonas Bonn <jonas@southpole.se> Signed-off-by: NStafford Horne <shorne@gmail.com>
-
- 11 12月, 2016 6 次提交
-
-
由 WANG Cong 提交于
In commit 02cea395 ("genirq: Provide disable_hardirq()") Peter introduced disable_hardirq() for netpoll, but it is forgotten to use it for e1000. This patch changes disable_irq() to disable_hardirq() for e1000. Reported-by: NDave Jones <davej@codemonkey.org.uk> Suggested-by: NSabrina Dubroca <sd@queasysnail.net> Cc: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: NCong Wang <xiyou.wangcong@gmail.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Keller, Jacob E 提交于
The .match_method field is a u8, so we shouldn't be casting to a u16, and because it is only one byte, we do not need to byte swap anything. Just assign the value directly. This avoids issues on Big Endian architectures which would have byte swapped and then incorrectly truncated the value. Signed-off-by: NJacob Keller <jacob.e.keller@intel.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Cc: Bimmy Pujari <bimmy.pujari@intel.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 WingMan Kwok 提交于
This patch adds support of the cpts device found in the gbe and 10gbe ethernet switches on the keystone 2 SoCs (66AK2E/L/Hx, 66AK2Gx). Cc: Richard Cochran <richardcochran@gmail.com> Signed-off-by: NWingMan Kwok <w-kwok2@ti.com> Signed-off-by: NGrygorii Strashko <grygorii.strashko@ti.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Timur Tabi 提交于
Instead of having individual PHY drivers set the SUPPORTED_Pause and SUPPORTED_Asym_Pause flags, phylib itself should set those flags, unless there is a hardware erratum or other special case. During autonegotiation, the PHYs will determine whether to enable pause frame support. Pause frames are a feature that is supported by the MAC. It is the MAC that generates the frames and that processes them. The PHY can only be configured to allow them to pass through. This commit also effectively reverts the recently applied c7a61319 ("net: phy: dp83848: Support ethernet pause frames"). So the new process is: 1) Unless the PHY driver overrides it, phylib sets the SUPPORTED_Pause and SUPPORTED_AsymPause bits in phydev->supported. This indicates that the PHY supports pause frames. 2) The MAC driver checks phydev->supported before it calls phy_start(). If (SUPPORTED_Pause | SUPPORTED_AsymPause) is set, then the MAC driver sets those bits in phydev->advertising, if it wants to enable pause frame support. 3) When the link state changes, the MAC driver checks phydev->pause and phydev->asym_pause, If the bits are set, then it enables the corresponding features in the MAC. The algorithm is: if (phydev->pause) The MAC should be programmed to receive and honor pause frames it receives, i.e. enable receive flow control. if (phydev->pause != phydev->asym_pause) The MAC should be programmed to transmit pause frames when needed, i.e. enable transmit flow control. Signed-off-by: NTimur Tabi <timur@codeaurora.org> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lino Sanfilippo 提交于
The driver uses a private lock for synchronization of the xmit function and the xmit completion handler, but since the NETIF_F_LLTX flag is not set, the xmit function is also called with the xmit_lock held. On the other hand the completion handler uses the reverse locking order by first taking the private lock and (in case that the tx queue had been stopped) then the xmit_lock. Improve the locking by removing the private lock and using only the xmit_lock for synchronization instead. Signed-off-by: NLino Sanfilippo <LinoSanfilippo@gmx.de> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
由 Lino Sanfilippo 提交于
The driver uses a private lock for synchronization of the xmit function and the xmit completion handler, but since the NETIF_F_LLTX flag is not set, the xmit function is also called with the xmit_lock held. On the other hand the completion handler uses the reverse locking order by first taking the private lock and (in case that the tx queue had been stopped) then the xmit_lock. Improve the locking by removing the private lock and using only the xmit_lock for synchronization instead. Signed-off-by: NLino Sanfilippo <LinoSanfilippo@gmx.de> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-