-
Notifications
You must be signed in to change notification settings - Fork 101
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
20 changed files
with
73 additions
and
73 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
LINUX_VERSION-6.6 = .54 | ||
LINUX_KERNEL_HASH-6.6.54 = 5fae869d6a24055c16ffc2d92669e3fb2b258e34d36c850bb8cf9def417ecfa0 | ||
LINUX_VERSION-6.6 = .56 | ||
LINUX_KERNEL_HASH-6.6.56 = f74812f78e88992c416434cb107639e13a551dbaff36bb90d6346ab16ab71a95 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,7 +32,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
|
||
--- a/net/core/dev.c | ||
+++ b/net/core/dev.c | ||
@@ -4473,13 +4473,7 @@ static inline void ____napi_schedule(str | ||
@@ -4477,13 +4477,7 @@ static inline void ____napi_schedule(str | ||
*/ | ||
thread = READ_ONCE(napi->thread); | ||
if (thread) { | ||
|
@@ -47,7 +47,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
wake_up_process(thread); | ||
return; | ||
} | ||
@@ -6635,8 +6629,6 @@ static int napi_poll(struct napi_struct | ||
@@ -6639,8 +6633,6 @@ static int napi_poll(struct napi_struct | ||
|
||
static int napi_thread_wait(struct napi_struct *napi) | ||
{ | ||
|
@@ -56,7 +56,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
set_current_state(TASK_INTERRUPTIBLE); | ||
|
||
while (!kthread_should_stop()) { | ||
@@ -6645,15 +6637,13 @@ static int napi_thread_wait(struct napi_ | ||
@@ -6649,15 +6641,13 @@ static int napi_thread_wait(struct napi_ | ||
* Testing SCHED bit is not enough because SCHED bit might be | ||
* set by some other busy poll thread or by napi_disable(). | ||
*/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -108,15 +108,15 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
static inline void rps_lock_irqsave(struct softnet_data *sd, | ||
unsigned long *flags) | ||
{ | ||
@@ -4441,6 +4467,7 @@ EXPORT_SYMBOL(__dev_direct_xmit); | ||
@@ -4445,6 +4471,7 @@ EXPORT_SYMBOL(__dev_direct_xmit); | ||
/************************************************************************* | ||
* Receiver routines | ||
*************************************************************************/ | ||
+static DEFINE_PER_CPU(struct task_struct *, backlog_napi); | ||
|
||
int netdev_max_backlog __read_mostly = 1000; | ||
EXPORT_SYMBOL(netdev_max_backlog); | ||
@@ -4473,12 +4500,16 @@ static inline void ____napi_schedule(str | ||
@@ -4477,12 +4504,16 @@ static inline void ____napi_schedule(str | ||
*/ | ||
thread = READ_ONCE(napi->thread); | ||
if (thread) { | ||
|
@@ -133,7 +133,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
list_add_tail(&napi->poll_list, &sd->poll_list); | ||
WRITE_ONCE(napi->list_owner, smp_processor_id()); | ||
/* If not called from net_rx_action() | ||
@@ -4724,6 +4755,11 @@ static void napi_schedule_rps(struct sof | ||
@@ -4728,6 +4759,11 @@ static void napi_schedule_rps(struct sof | ||
|
||
#ifdef CONFIG_RPS | ||
if (sd != mysd) { | ||
|
@@ -145,7 +145,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
sd->rps_ipi_next = mysd->rps_ipi_list; | ||
mysd->rps_ipi_list = sd; | ||
|
||
@@ -5947,7 +5983,7 @@ static void net_rps_action_and_irq_enabl | ||
@@ -5951,7 +5987,7 @@ static void net_rps_action_and_irq_enabl | ||
#ifdef CONFIG_RPS | ||
struct softnet_data *remsd = sd->rps_ipi_list; | ||
|
||
|
@@ -154,7 +154,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
sd->rps_ipi_list = NULL; | ||
|
||
local_irq_enable(); | ||
@@ -5962,7 +5998,7 @@ static void net_rps_action_and_irq_enabl | ||
@@ -5966,7 +6002,7 @@ static void net_rps_action_and_irq_enabl | ||
static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) | ||
{ | ||
#ifdef CONFIG_RPS | ||
|
@@ -163,7 +163,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
#else | ||
return false; | ||
#endif | ||
@@ -6006,7 +6042,7 @@ static int process_backlog(struct napi_s | ||
@@ -6010,7 +6046,7 @@ static int process_backlog(struct napi_s | ||
* We can use a plain write instead of clear_bit(), | ||
* and we dont need an smp_mb() memory barrier. | ||
*/ | ||
|
@@ -172,7 +172,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
again = false; | ||
} else { | ||
skb_queue_splice_tail_init(&sd->input_pkt_queue, | ||
@@ -6672,43 +6708,48 @@ static void skb_defer_free_flush(struct | ||
@@ -6676,43 +6712,48 @@ static void skb_defer_free_flush(struct | ||
} | ||
} | ||
|
||
|
@@ -250,7 +250,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
return 0; | ||
} | ||
|
||
@@ -11289,7 +11330,7 @@ static int dev_cpu_dead(unsigned int old | ||
@@ -11293,7 +11334,7 @@ static int dev_cpu_dead(unsigned int old | ||
|
||
list_del_init(&napi->poll_list); | ||
if (napi->poll == process_backlog) | ||
|
@@ -259,7 +259,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
else | ||
____napi_schedule(sd, napi); | ||
} | ||
@@ -11297,12 +11338,14 @@ static int dev_cpu_dead(unsigned int old | ||
@@ -11301,12 +11342,14 @@ static int dev_cpu_dead(unsigned int old | ||
raise_softirq_irqoff(NET_TX_SOFTIRQ); | ||
local_irq_enable(); | ||
|
||
|
@@ -278,7 +278,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
|
||
/* Process offline CPU's input_pkt_queue */ | ||
while ((skb = __skb_dequeue(&oldsd->process_queue))) { | ||
@@ -11565,6 +11608,38 @@ static struct pernet_operations __net_in | ||
@@ -11569,6 +11612,38 @@ static struct pernet_operations __net_in | ||
* | ||
*/ | ||
|
||
|
@@ -317,7 +317,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
/* | ||
* This is called single threaded during boot, so no need | ||
* to take the rtnl semaphore. | ||
@@ -11615,7 +11690,10 @@ static int __init net_dev_init(void) | ||
@@ -11619,7 +11694,10 @@ static int __init net_dev_init(void) | ||
init_gro_hash(&sd->backlog); | ||
sd->backlog.poll = process_backlog; | ||
sd->backlog.weight = weight_p; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
spin_unlock_irq(&sd->input_pkt_queue.lock); | ||
else if (!IS_ENABLED(CONFIG_PREEMPT_RT)) | ||
local_irq_enable(); | ||
@@ -4774,6 +4774,23 @@ static void napi_schedule_rps(struct sof | ||
@@ -4778,6 +4778,23 @@ static void napi_schedule_rps(struct sof | ||
__napi_schedule_irqoff(&mysd->backlog); | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -67,7 +67,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
{ | ||
if (IS_ENABLED(CONFIG_RPS) || use_backlog_threads()) | ||
spin_unlock_irq(&sd->input_pkt_queue.lock); | ||
@@ -4779,12 +4779,12 @@ void kick_defer_list_purge(struct softne | ||
@@ -4783,12 +4783,12 @@ void kick_defer_list_purge(struct softne | ||
unsigned long flags; | ||
|
||
if (use_backlog_threads()) { | ||
|
@@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
|
||
} else if (!cmpxchg(&sd->defer_ipi_scheduled, 0, 1)) { | ||
smp_call_function_single_async(cpu, &sd->defer_csd); | ||
@@ -4846,7 +4846,7 @@ static int enqueue_to_backlog(struct sk_ | ||
@@ -4850,7 +4850,7 @@ static int enqueue_to_backlog(struct sk_ | ||
reason = SKB_DROP_REASON_NOT_SPECIFIED; | ||
sd = &per_cpu(softnet_data, cpu); | ||
|
||
|
@@ -91,7 +91,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
if (!netif_running(skb->dev)) | ||
goto drop; | ||
qlen = skb_queue_len(&sd->input_pkt_queue); | ||
@@ -4855,7 +4855,7 @@ static int enqueue_to_backlog(struct sk_ | ||
@@ -4859,7 +4859,7 @@ static int enqueue_to_backlog(struct sk_ | ||
enqueue: | ||
__skb_queue_tail(&sd->input_pkt_queue, skb); | ||
input_queue_tail_incr_save(sd, qtail); | ||
|
@@ -100,7 +100,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
return NET_RX_SUCCESS; | ||
} | ||
|
||
@@ -4870,7 +4870,7 @@ enqueue: | ||
@@ -4874,7 +4874,7 @@ enqueue: | ||
|
||
drop: | ||
sd->dropped++; | ||
|
@@ -109,7 +109,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
|
||
dev_core_stats_rx_dropped_inc(skb->dev); | ||
kfree_skb_reason(skb, reason); | ||
@@ -5901,7 +5901,7 @@ static void flush_backlog(struct work_st | ||
@@ -5905,7 +5905,7 @@ static void flush_backlog(struct work_st | ||
local_bh_disable(); | ||
sd = this_cpu_ptr(&softnet_data); | ||
|
||
|
@@ -118,7 +118,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) { | ||
if (skb->dev->reg_state == NETREG_UNREGISTERING) { | ||
__skb_unlink(skb, &sd->input_pkt_queue); | ||
@@ -5909,7 +5909,7 @@ static void flush_backlog(struct work_st | ||
@@ -5913,7 +5913,7 @@ static void flush_backlog(struct work_st | ||
input_queue_head_incr(sd); | ||
} | ||
} | ||
|
@@ -127,7 +127,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
|
||
skb_queue_walk_safe(&sd->process_queue, skb, tmp) { | ||
if (skb->dev->reg_state == NETREG_UNREGISTERING) { | ||
@@ -5927,14 +5927,14 @@ static bool flush_required(int cpu) | ||
@@ -5931,14 +5931,14 @@ static bool flush_required(int cpu) | ||
struct softnet_data *sd = &per_cpu(softnet_data, cpu); | ||
bool do_flush; | ||
|
||
|
@@ -144,7 +144,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
|
||
return do_flush; | ||
#endif | ||
@@ -6049,7 +6049,7 @@ static int process_backlog(struct napi_s | ||
@@ -6053,7 +6053,7 @@ static int process_backlog(struct napi_s | ||
|
||
} | ||
|
||
|
@@ -153,7 +153,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
if (skb_queue_empty(&sd->input_pkt_queue)) { | ||
/* | ||
* Inline a custom version of __napi_complete(). | ||
@@ -6065,7 +6065,7 @@ static int process_backlog(struct napi_s | ||
@@ -6069,7 +6069,7 @@ static int process_backlog(struct napi_s | ||
skb_queue_splice_tail_init(&sd->input_pkt_queue, | ||
&sd->process_queue); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -85,7 +85,7 @@ Signed-off-by: Paolo Abeni <[email protected]> | |
/** | ||
--- a/net/core/dev.c | ||
+++ b/net/core/dev.c | ||
@@ -6602,7 +6602,7 @@ static int __napi_poll(struct napi_struc | ||
@@ -6606,7 +6606,7 @@ static int __napi_poll(struct napi_struc | ||
* accidentally calling ->poll() when NAPI is not scheduled. | ||
*/ | ||
work = 0; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -225,15 +225,15 @@ Signed-off-by: David S. Miller <[email protected]> | |
LED_FREQ = 0x1a, | ||
EEE_LED = 0x1b, | ||
ERIDR = 0x70, | ||
@@ -620,6 +621,7 @@ struct rtl8169_private { | ||
@@ -647,6 +648,7 @@ struct rtl8169_private { | ||
|
||
raw_spinlock_t config25_lock; | ||
raw_spinlock_t mac_ocp_lock; | ||
+ struct mutex led_lock; /* serialize LED ctrl RMW access */ | ||
|
||
raw_spinlock_t cfg9346_usage_lock; | ||
int cfg9346_usage_count; | ||
@@ -792,6 +794,62 @@ static const struct rtl_cond name = { | ||
@@ -819,6 +821,62 @@ static const struct rtl_cond name = { | ||
\ | ||
static bool name ## _check(struct rtl8169_private *tp) | ||
|
||
|
@@ -296,15 +296,15 @@ Signed-off-by: David S. Miller <[email protected]> | |
static void r8168fp_adjust_ocp_cmd(struct rtl8169_private *tp, u32 *cmd, int type) | ||
{ | ||
/* based on RTL8168FP_OOBMAC_BASE in vendor driver */ | ||
@@ -5254,6 +5312,7 @@ static int rtl_init_one(struct pci_dev * | ||
@@ -5281,6 +5339,7 @@ static int rtl_init_one(struct pci_dev * | ||
raw_spin_lock_init(&tp->cfg9346_usage_lock); | ||
raw_spin_lock_init(&tp->config25_lock); | ||
raw_spin_lock_init(&tp->mac_ocp_lock); | ||
+ mutex_init(&tp->led_lock); | ||
|
||
dev->tstats = devm_netdev_alloc_pcpu_stats(&pdev->dev, | ||
struct pcpu_sw_netstats); | ||
@@ -5410,6 +5469,12 @@ static int rtl_init_one(struct pci_dev * | ||
@@ -5437,6 +5496,12 @@ static int rtl_init_one(struct pci_dev * | ||
if (rc) | ||
return rc; | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -59,7 +59,7 @@ Signed-off-by: Jakub Kicinski <[email protected]> | |
obj-$(CONFIG_R8169) += r8169.o | ||
--- a/drivers/net/ethernet/realtek/r8169_main.c | ||
+++ b/drivers/net/ethernet/realtek/r8169_main.c | ||
@@ -5469,11 +5469,10 @@ static int rtl_init_one(struct pci_dev * | ||
@@ -5496,11 +5496,10 @@ static int rtl_init_one(struct pci_dev * | ||
if (rc) | ||
return rc; | ||
|
||
|
Oops, something went wrong.