-
Notifications
You must be signed in to change notification settings - Fork 19.5k
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
1 parent
0b75ecd
commit ecaf840
Showing
34 changed files
with
101 additions
and
101 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 |
---|---|---|
|
@@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <[email protected]> | |
|
||
--- a/drivers/net/ethernet/realtek/r8169_main.c | ||
+++ b/drivers/net/ethernet/realtek/r8169_main.c | ||
@@ -3129,6 +3129,33 @@ static void rtl_hw_start_8168g_2(struct | ||
@@ -3156,6 +3156,33 @@ static void rtl_hw_start_8168g_2(struct | ||
rtl_ephy_init(tp, e_info_8168g_2); | ||
} | ||
|
||
|
@@ -52,7 +52,7 @@ Signed-off-by: David S. Miller <[email protected]> | |
static void rtl_hw_start_8411_2(struct rtl8169_private *tp) | ||
{ | ||
static const struct ephy_info e_info_8411_2[] = { | ||
@@ -3162,117 +3189,7 @@ static void rtl_hw_start_8411_2(struct r | ||
@@ -3189,117 +3216,7 @@ static void rtl_hw_start_8411_2(struct r | ||
mdelay(3); | ||
r8168_mac_ocp_write(tp, 0xFC26, 0x0000); | ||
|
||
|
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 |
---|---|---|
|
@@ -35,7 +35,7 @@ Signed-off-by: Jakub Kicinski <[email protected]> | |
#define TX_DMA_BURST 7 /* Maximum PCI burst, '7' is unlimited */ | ||
#define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */ | ||
|
||
@@ -2626,8 +2622,7 @@ static void rtl_set_rx_mode(struct net_d | ||
@@ -2653,8 +2649,7 @@ static void rtl_set_rx_mode(struct net_d | ||
rx_mode |= AcceptAllPhys; | ||
} else if (!(dev->flags & IFF_MULTICAST)) { | ||
rx_mode &= ~AcceptMulticast; | ||
|
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 |
---|---|---|
|
@@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <[email protected]> | |
|
||
--- a/drivers/net/ethernet/realtek/r8169_main.c | ||
+++ b/drivers/net/ethernet/realtek/r8169_main.c | ||
@@ -2252,6 +2252,9 @@ u16 rtl8168h_2_get_adc_bias_ioffset(stru | ||
@@ -2279,6 +2279,9 @@ u16 rtl8168h_2_get_adc_bias_ioffset(stru | ||
|
||
static void rtl_schedule_task(struct rtl8169_private *tp, enum rtl_flag flag) | ||
{ | ||
|
@@ -29,7 +29,7 @@ Signed-off-by: Jakub Kicinski <[email protected]> | |
set_bit(flag, tp->wk.flags); | ||
schedule_work(&tp->wk.work); | ||
} | ||
@@ -4491,8 +4494,7 @@ static void rtl_task(struct work_struct | ||
@@ -4518,8 +4521,7 @@ static void rtl_task(struct work_struct | ||
|
||
rtnl_lock(); | ||
|
||
|
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, | ||
@@ -616,6 +617,7 @@ struct rtl8169_private { | ||
@@ -643,6 +644,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; | ||
@@ -788,6 +790,62 @@ static const struct rtl_cond name = { | ||
@@ -815,6 +817,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 */ | ||
@@ -5168,6 +5226,7 @@ static int rtl_init_one(struct pci_dev * | ||
@@ -5195,6 +5253,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); | ||
@@ -5324,6 +5383,12 @@ static int rtl_init_one(struct pci_dev * | ||
@@ -5351,6 +5410,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 | ||
@@ -5383,11 +5383,10 @@ static int rtl_init_one(struct pci_dev * | ||
@@ -5410,11 +5410,10 @@ 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 |
---|---|---|
|
@@ -16,15 +16,15 @@ Signed-off-by: Jakub Kicinski <[email protected]> | |
|
||
--- a/drivers/net/ethernet/realtek/r8169_main.c | ||
+++ b/drivers/net/ethernet/realtek/r8169_main.c | ||
@@ -629,7 +629,6 @@ struct rtl8169_private { | ||
@@ -656,7 +656,6 @@ struct rtl8169_private { | ||
struct rtl8169_counters *counters; | ||
struct rtl8169_tc_offsets tc_offset; | ||
u32 saved_wolopts; | ||
- int eee_adv; | ||
|
||
const char *fw_name; | ||
struct rtl_fw *rtl_fw; | ||
@@ -2010,17 +2009,11 @@ static int rtl8169_get_eee(struct net_de | ||
@@ -2037,17 +2036,11 @@ static int rtl8169_get_eee(struct net_de | ||
static int rtl8169_set_eee(struct net_device *dev, struct ethtool_eee *data) | ||
{ | ||
struct rtl8169_private *tp = netdev_priv(dev); | ||
|
@@ -43,7 +43,7 @@ Signed-off-by: Jakub Kicinski <[email protected]> | |
} | ||
|
||
static void rtl8169_get_ringparam(struct net_device *dev, | ||
@@ -2085,21 +2078,6 @@ static const struct ethtool_ops rtl8169_ | ||
@@ -2112,21 +2105,6 @@ static const struct ethtool_ops rtl8169_ | ||
.set_pauseparam = rtl8169_set_pauseparam, | ||
}; | ||
|
||
|
@@ -65,7 +65,7 @@ Signed-off-by: Jakub Kicinski <[email protected]> | |
static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii) | ||
{ | ||
/* | ||
@@ -2336,9 +2314,6 @@ static void rtl8169_init_phy(struct rtl8 | ||
@@ -2363,9 +2341,6 @@ static void rtl8169_init_phy(struct rtl8 | ||
/* We may have called phy_speed_down before */ | ||
phy_speed_up(tp->phydev); | ||
|
||
|
@@ -75,7 +75,7 @@ Signed-off-by: Jakub Kicinski <[email protected]> | |
genphy_soft_reset(tp->phydev); | ||
} | ||
|
||
@@ -5085,7 +5060,9 @@ static int r8169_mdio_register(struct rt | ||
@@ -5112,7 +5087,9 @@ static int r8169_mdio_register(struct rt | ||
} | ||
|
||
tp->phydev->mac_managed_pm = true; | ||
|
@@ -86,7 +86,7 @@ Signed-off-by: Jakub Kicinski <[email protected]> | |
phy_support_asym_pause(tp->phydev); | ||
|
||
/* PHY will be woken up in rtl_open() */ | ||
@@ -5220,7 +5197,6 @@ static int rtl_init_one(struct pci_dev * | ||
@@ -5247,7 +5224,6 @@ static int rtl_init_one(struct pci_dev * | ||
tp->dev = dev; | ||
tp->pci_dev = pdev; | ||
tp->supports_gmii = ent->driver_data == RTL_CFG_NO_GBIT ? 0 : 1; | ||
|
Oops, something went wrong.