diff options
-rw-r--r-- | drivers/net/ethernet/intel/Kconfig | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igc/igc.h | 10 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igc/igc_defines.h | 10 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 132 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igc/igc_regs.h | 2 | ||||
-rw-r--r-- | include/net/netns/ipv4.h | 1 | ||||
-rw-r--r-- | net/ipv4/tcp_fastopen.c | 17 | ||||
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 1 | ||||
-rw-r--r-- | net/netlink/af_netlink.c | 4 |
9 files changed, 6 insertions, 172 deletions
diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig index 3639cf79cfae..82744a7501c7 100644 --- a/drivers/net/ethernet/intel/Kconfig +++ b/drivers/net/ethernet/intel/Kconfig @@ -335,7 +335,6 @@ config IGC tristate "Intel(R) Ethernet Controller I225-LM/I225-V support" default n depends on PCI - depends on LEDS_CLASS help This driver supports Intel(R) Ethernet Controller I225-LM/I225-V family of adapters. diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h index 2df0fd2b9ecf..a0ecfe5a4078 100644 --- a/drivers/net/ethernet/intel/igc/igc.h +++ b/drivers/net/ethernet/intel/igc/igc.h @@ -13,7 +13,6 @@ #include <linux/ptp_clock_kernel.h> #include <linux/timecounter.h> #include <linux/net_tstamp.h> -#include <linux/leds.h> #include "igc_hw.h" @@ -240,17 +239,8 @@ struct igc_adapter { struct timespec64 start; struct timespec64 period; } perout[IGC_N_PEROUT]; - - /* LEDs */ - struct mutex led_mutex; - struct led_classdev led0; - struct led_classdev led1; - struct led_classdev led2; }; -#define led_to_igc(ldev, led) \ - container_of(ldev, struct igc_adapter, led) - void igc_up(struct igc_adapter *adapter); void igc_down(struct igc_adapter *adapter); int igc_open(struct net_device *netdev); diff --git a/drivers/net/ethernet/intel/igc/igc_defines.h b/drivers/net/ethernet/intel/igc/igc_defines.h index 156c3ef57c0a..c6315690e20f 100644 --- a/drivers/net/ethernet/intel/igc/igc_defines.h +++ b/drivers/net/ethernet/intel/igc/igc_defines.h @@ -144,16 +144,6 @@ #define IGC_CTRL_SDP0_DIR 0x00400000 /* SDP0 Data direction */ #define IGC_CTRL_SDP1_DIR 0x00800000 /* SDP1 Data direction */ -/* LED Control */ -#define IGC_LEDCTL_LED0_MODE_SHIFT 0 -#define IGC_LEDCTL_LED0_MODE_MASK GENMASK(3, 0) -#define IGC_LEDCTL_LED1_MODE_SHIFT 8 -#define IGC_LEDCTL_LED1_MODE_MASK GENMASK(11, 8) -#define IGC_LEDCTL_LED2_MODE_SHIFT 16 -#define IGC_LEDCTL_LED2_MODE_MASK GENMASK(19, 16) - -#define IGC_CONNSW_AUTOSENSE_EN 0x1 - /* As per the EAS the maximum supported size is 9.5KB (9728 bytes) */ #define MAX_JUMBO_FRAME_SIZE 0x2600 diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 100819dcc7dd..11385c380947 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -6130,134 +6130,6 @@ err_inval: return -EINVAL; } -static void igc_select_led(struct igc_adapter *adapter, int led, - u32 *mask, u32 *shift) -{ - switch (led) { - case 0: - *mask = IGC_LEDCTL_LED0_MODE_MASK; - *shift = IGC_LEDCTL_LED0_MODE_SHIFT; - break; - case 1: - *mask = IGC_LEDCTL_LED1_MODE_MASK; - *shift = IGC_LEDCTL_LED1_MODE_SHIFT; - break; - case 2: - *mask = IGC_LEDCTL_LED2_MODE_MASK; - *shift = IGC_LEDCTL_LED2_MODE_SHIFT; - break; - default: - *mask = *shift = 0; - dev_err(&adapter->pdev->dev, "Unknown led %d selected!", led); - } -} - -static void igc_led_set(struct igc_adapter *adapter, int led, u16 brightness) -{ - struct igc_hw *hw = &adapter->hw; - u32 shift, mask, ledctl; - - igc_select_led(adapter, led, &mask, &shift); - - mutex_lock(&adapter->led_mutex); - ledctl = rd32(IGC_LEDCTL); - ledctl &= ~mask; - ledctl |= brightness << shift; - wr32(IGC_LEDCTL, ledctl); - mutex_unlock(&adapter->led_mutex); -} - -static enum led_brightness igc_led_get(struct igc_adapter *adapter, int led) -{ - struct igc_hw *hw = &adapter->hw; - u32 shift, mask, ledctl; - - igc_select_led(adapter, led, &mask, &shift); - - mutex_lock(&adapter->led_mutex); - ledctl = rd32(IGC_LEDCTL); - mutex_unlock(&adapter->led_mutex); - - return (ledctl & mask) >> shift; -} - -static void igc_led0_set(struct led_classdev *ldev, enum led_brightness b) -{ - struct igc_adapter *adapter = led_to_igc(ldev, led0); - - igc_led_set(adapter, 0, b); -} - -static enum led_brightness igc_led0_get(struct led_classdev *ldev) -{ - struct igc_adapter *adapter = led_to_igc(ldev, led0); - - return igc_led_get(adapter, 0); -} - -static void igc_led1_set(struct led_classdev *ldev, enum led_brightness b) -{ - struct igc_adapter *adapter = led_to_igc(ldev, led1); - - igc_led_set(adapter, 1, b); -} - -static enum led_brightness igc_led1_get(struct led_classdev *ldev) -{ - struct igc_adapter *adapter = led_to_igc(ldev, led1); - - return igc_led_get(adapter, 1); -} - -static void igc_led2_set(struct led_classdev *ldev, enum led_brightness b) -{ - struct igc_adapter *adapter = led_to_igc(ldev, led2); - - igc_led_set(adapter, 2, b); -} - -static enum led_brightness igc_led2_get(struct led_classdev *ldev) -{ - struct igc_adapter *adapter = led_to_igc(ldev, led2); - - return igc_led_get(adapter, 2); -} - -static int igc_led_setup(struct igc_adapter *adapter) -{ - /* Setup */ - mutex_init(&adapter->led_mutex); - - adapter->led0.name = "igc_led0"; - adapter->led0.max_brightness = 15; - adapter->led0.brightness_set = igc_led0_set; - adapter->led0.brightness_get = igc_led0_get; - - adapter->led1.name = "igc_led1"; - adapter->led1.max_brightness = 15; - adapter->led1.brightness_set = igc_led1_set; - adapter->led1.brightness_get = igc_led1_get; - - adapter->led2.name = "igc_led2"; - adapter->led2.max_brightness = 15; - adapter->led2.brightness_set = igc_led2_set; - adapter->led2.brightness_get = igc_led2_get; - - /* Register leds */ - led_classdev_register(&adapter->pdev->dev, &adapter->led0); - led_classdev_register(&adapter->pdev->dev, &adapter->led1); - led_classdev_register(&adapter->pdev->dev, &adapter->led2); - - return 0; -} - -static void igc_led_destroy(struct igc_adapter *adapter) -{ - led_classdev_unregister(&adapter->led0); - led_classdev_unregister(&adapter->led1); - led_classdev_unregister(&adapter->led2); -} - /** * igc_probe - Device Initialization Routine * @pdev: PCI device information struct @@ -6485,8 +6357,6 @@ static int igc_probe(struct pci_dev *pdev, pm_runtime_put_noidle(&pdev->dev); - igc_led_setup(adapter); - return 0; err_register: @@ -6528,8 +6398,6 @@ static void igc_remove(struct pci_dev *pdev) igc_ptp_stop(adapter); - igc_led_destroy(adapter); - set_bit(__IGC_DOWN, &adapter->state); del_timer_sync(&adapter->watchdog_timer); diff --git a/drivers/net/ethernet/intel/igc/igc_regs.h b/drivers/net/ethernet/intel/igc/igc_regs.h index f6247b00c4e3..828c3501c448 100644 --- a/drivers/net/ethernet/intel/igc/igc_regs.h +++ b/drivers/net/ethernet/intel/igc/igc_regs.h @@ -10,8 +10,6 @@ #define IGC_EECD 0x00010 /* EEPROM/Flash Control - RW */ #define IGC_CTRL_EXT 0x00018 /* Extended Device Control - RW */ #define IGC_MDIC 0x00020 /* MDI Control - RW */ -#define IGC_LEDCTL 0x00E00 /* LED Control - RW */ -#define IGC_MDICNFG 0x00E04 /* MDC/MDIO Configuration - RW */ #define IGC_CONNSW 0x00034 /* Copper/Fiber switch control - RW */ #define IGC_VET 0x00038 /* VLAN Ether Type - RW */ #define IGC_I225_PHPM 0x00E14 /* I225 PHY Power Management */ diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index b8620519eace..2f65701a43c9 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h @@ -174,7 +174,6 @@ struct netns_ipv4 { int sysctl_tcp_fastopen; const struct tcp_congestion_ops __rcu *tcp_congestion_control; struct tcp_fastopen_context __rcu *tcp_fastopen_ctx; - spinlock_t tcp_fastopen_ctx_lock; unsigned int sysctl_tcp_fastopen_blackhole_timeout; atomic_t tfo_active_disable_times; unsigned long tfo_active_disable_stamp; diff --git a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c index 47c32604d38f..1a9fbd5448a7 100644 --- a/net/ipv4/tcp_fastopen.c +++ b/net/ipv4/tcp_fastopen.c @@ -55,12 +55,7 @@ void tcp_fastopen_ctx_destroy(struct net *net) { struct tcp_fastopen_context *ctxt; - spin_lock(&net->ipv4.tcp_fastopen_ctx_lock); - - ctxt = rcu_dereference_protected(net->ipv4.tcp_fastopen_ctx, - lockdep_is_held(&net->ipv4.tcp_fastopen_ctx_lock)); - rcu_assign_pointer(net->ipv4.tcp_fastopen_ctx, NULL); - spin_unlock(&net->ipv4.tcp_fastopen_ctx_lock); + ctxt = xchg((__force struct tcp_fastopen_context **)&net->ipv4.tcp_fastopen_ctx, NULL); if (ctxt) call_rcu(&ctxt->rcu, tcp_fastopen_ctx_free); @@ -89,18 +84,12 @@ int tcp_fastopen_reset_cipher(struct net *net, struct sock *sk, ctx->num = 1; } - spin_lock(&net->ipv4.tcp_fastopen_ctx_lock); if (sk) { q = &inet_csk(sk)->icsk_accept_queue.fastopenq; - octx = rcu_dereference_protected(q->ctx, - lockdep_is_held(&net->ipv4.tcp_fastopen_ctx_lock)); - rcu_assign_pointer(q->ctx, ctx); + octx = xchg((__force struct tcp_fastopen_context **)&q->ctx, ctx); } else { - octx = rcu_dereference_protected(net->ipv4.tcp_fastopen_ctx, - lockdep_is_held(&net->ipv4.tcp_fastopen_ctx_lock)); - rcu_assign_pointer(net->ipv4.tcp_fastopen_ctx, ctx); + octx = xchg((__force struct tcp_fastopen_context **)&net->ipv4.tcp_fastopen_ctx, ctx); } - spin_unlock(&net->ipv4.tcp_fastopen_ctx_lock); if (octx) call_rcu(&octx->rcu, tcp_fastopen_ctx_free); diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index b9dc2d6197be..e9321dd39cdb 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -2964,7 +2964,6 @@ static int __net_init tcp_sk_init(struct net *net) net->ipv4.sysctl_tcp_comp_sack_slack_ns = 100 * NSEC_PER_USEC; net->ipv4.sysctl_tcp_comp_sack_nr = 44; net->ipv4.sysctl_tcp_fastopen = TFO_CLIENT_ENABLE; - spin_lock_init(&net->ipv4.tcp_fastopen_ctx_lock); net->ipv4.sysctl_tcp_fastopen_blackhole_timeout = 60 * 60; atomic_set(&net->ipv4.tfo_active_disable_times, 0); diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 380f95aacdec..24b7cf447bc5 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -2545,13 +2545,15 @@ int nlmsg_notify(struct sock *sk, struct sk_buff *skb, u32 portid, /* errors reported via destination sk->sk_err, but propagate * delivery errors if NETLINK_BROADCAST_ERROR flag is set */ err = nlmsg_multicast(sk, skb, exclude_portid, group, flags); + if (err == -ESRCH) + err = 0; } if (report) { int err2; err2 = nlmsg_unicast(sk, skb, portid); - if (!err || err == -ESRCH) + if (!err) err = err2; } |