mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 14:23:38 +00:00
kernel: refresh 5.15 patches (#11235)
Fixes: cc22efe
("kernel: bump 5.15 to 5.15.112")
Fixes: #11226, #11228
Closed: #11232
This commit is contained in:
parent
5c93ec63c2
commit
a0948d91a1
@ -612,7 +612,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|||||||
mem_cgroup_id_remove(memcg);
|
mem_cgroup_id_remove(memcg);
|
||||||
--- a/mm/memory.c
|
--- a/mm/memory.c
|
||||||
+++ b/mm/memory.c
|
+++ b/mm/memory.c
|
||||||
@@ -4778,6 +4778,27 @@ static inline void mm_account_fault(stru
|
@@ -4792,6 +4792,27 @@ static inline void mm_account_fault(stru
|
||||||
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, regs, address);
|
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, regs, address);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -640,7 +640,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|||||||
/*
|
/*
|
||||||
* By the time we get here, we already hold the mm semaphore
|
* By the time we get here, we already hold the mm semaphore
|
||||||
*
|
*
|
||||||
@@ -4809,11 +4830,15 @@ vm_fault_t handle_mm_fault(struct vm_are
|
@@ -4823,11 +4844,15 @@ vm_fault_t handle_mm_fault(struct vm_are
|
||||||
if (flags & FAULT_FLAG_USER)
|
if (flags & FAULT_FLAG_USER)
|
||||||
mem_cgroup_enter_user_fault();
|
mem_cgroup_enter_user_fault();
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|||||||
return !!(pmd_val(pmd) & _PAGE_ACCESSED);
|
return !!(pmd_val(pmd) & _PAGE_ACCESSED);
|
||||||
--- a/arch/riscv/include/asm/pgtable.h
|
--- a/arch/riscv/include/asm/pgtable.h
|
||||||
+++ b/arch/riscv/include/asm/pgtable.h
|
+++ b/arch/riscv/include/asm/pgtable.h
|
||||||
@@ -531,6 +531,7 @@ static inline int pmd_dirty(pmd_t pmd)
|
@@ -535,6 +535,7 @@ static inline int pmd_dirty(pmd_t pmd)
|
||||||
return pte_dirty(pmd_pte(pmd));
|
return pte_dirty(pmd_pte(pmd));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|||||||
mark_page_accessed(page);
|
mark_page_accessed(page);
|
||||||
}
|
}
|
||||||
rss[mm_counter(page)]--;
|
rss[mm_counter(page)]--;
|
||||||
@@ -4781,8 +4781,8 @@ static inline void mm_account_fault(stru
|
@@ -4795,8 +4795,8 @@ static inline void mm_account_fault(stru
|
||||||
#ifdef CONFIG_LRU_GEN
|
#ifdef CONFIG_LRU_GEN
|
||||||
static void lru_gen_enter_fault(struct vm_area_struct *vma)
|
static void lru_gen_enter_fault(struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
|
@ -354,7 +354,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|||||||
static void mem_cgroup_css_free(struct cgroup_subsys_state *css)
|
static void mem_cgroup_css_free(struct cgroup_subsys_state *css)
|
||||||
--- a/mm/page_alloc.c
|
--- a/mm/page_alloc.c
|
||||||
+++ b/mm/page_alloc.c
|
+++ b/mm/page_alloc.c
|
||||||
@@ -7645,6 +7645,7 @@ static void __init free_area_init_node(i
|
@@ -7661,6 +7661,7 @@ static void __init free_area_init_node(i
|
||||||
pgdat_set_deferred_range(pgdat);
|
pgdat_set_deferred_range(pgdat);
|
||||||
|
|
||||||
free_area_init_core(pgdat);
|
free_area_init_core(pgdat);
|
||||||
|
@ -25,7 +25,7 @@ Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
|||||||
|
|
||||||
--- a/drivers/mtd/mtdcore.c
|
--- a/drivers/mtd/mtdcore.c
|
||||||
+++ b/drivers/mtd/mtdcore.c
|
+++ b/drivers/mtd/mtdcore.c
|
||||||
@@ -1168,6 +1168,34 @@ int __get_mtd_device(struct mtd_info *mt
|
@@ -1175,6 +1175,34 @@ int __get_mtd_device(struct mtd_info *mt
|
||||||
EXPORT_SYMBOL_GPL(__get_mtd_device);
|
EXPORT_SYMBOL_GPL(__get_mtd_device);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,7 +19,7 @@ Date: Fri Jan 21 11:09:44 2022 +0100
|
|||||||
|
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/include/linux/skbuff.h
|
+++ b/include/linux/skbuff.h
|
||||||
@@ -567,6 +567,7 @@ struct skb_shared_info {
|
@@ -568,6 +568,7 @@ struct skb_shared_info {
|
||||||
* Warning : all fields before dataref are cleared in __alloc_skb()
|
* Warning : all fields before dataref are cleared in __alloc_skb()
|
||||||
*/
|
*/
|
||||||
atomic_t dataref;
|
atomic_t dataref;
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||||
@@ -563,10 +563,13 @@ mtk_eth_setup_tc_block(struct net_device
|
@@ -564,10 +564,13 @@ mtk_eth_setup_tc_block(struct net_device
|
||||||
int mtk_eth_setup_tc(struct net_device *dev, enum tc_setup_type type,
|
int mtk_eth_setup_tc(struct net_device *dev, enum tc_setup_type type,
|
||||||
void *type_data)
|
void *type_data)
|
||||||
{
|
{
|
||||||
|
@ -148,7 +148,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
if (f->binder_type != FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
|
if (f->binder_type != FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
|
||||||
@@ -574,7 +574,7 @@ int mtk_eth_setup_tc(struct net_device *
|
@@ -575,7 +575,7 @@ int mtk_eth_setup_tc(struct net_device *
|
||||||
|
|
||||||
int mtk_eth_offload_init(struct mtk_eth *eth)
|
int mtk_eth_offload_init(struct mtk_eth *eth)
|
||||||
{
|
{
|
||||||
|
@ -901,7 +901,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
static void axienet_mac_pcs_get_state(struct phylink_config *config,
|
static void axienet_mac_pcs_get_state(struct phylink_config *config,
|
||||||
--- a/drivers/net/pcs/pcs-xpcs.c
|
--- a/drivers/net/pcs/pcs-xpcs.c
|
||||||
+++ b/drivers/net/pcs/pcs-xpcs.c
|
+++ b/drivers/net/pcs/pcs-xpcs.c
|
||||||
@@ -646,7 +646,7 @@ void xpcs_validate(struct dw_xpcs *xpcs,
|
@@ -637,7 +637,7 @@ void xpcs_validate(struct dw_xpcs *xpcs,
|
||||||
if (state->interface == PHY_INTERFACE_MODE_NA)
|
if (state->interface == PHY_INTERFACE_MODE_NA)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
|||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
if (f->binder_type != FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
|
if (f->binder_type != FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
|
||||||
@@ -589,8 +589,5 @@ int mtk_eth_setup_tc(struct net_device *
|
@@ -590,8 +590,5 @@ int mtk_eth_setup_tc(struct net_device *
|
||||||
|
|
||||||
int mtk_eth_offload_init(struct mtk_eth *eth)
|
int mtk_eth_offload_init(struct mtk_eth *eth)
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -4432,7 +4432,7 @@ static const struct mtk_soc_data mt7621_
|
@@ -4428,7 +4428,7 @@ static const struct mtk_soc_data mt7621_
|
||||||
.hw_features = MTK_HW_FEATURES,
|
.hw_features = MTK_HW_FEATURES,
|
||||||
.required_clks = MT7621_CLKS_BITMAP,
|
.required_clks = MT7621_CLKS_BITMAP,
|
||||||
.required_pctl = false,
|
.required_pctl = false,
|
||||||
@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
.hash_offset = 2,
|
.hash_offset = 2,
|
||||||
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
|
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
|
||||||
.txrx = {
|
.txrx = {
|
||||||
@@ -4472,7 +4472,7 @@ static const struct mtk_soc_data mt7623_
|
@@ -4467,7 +4467,7 @@ static const struct mtk_soc_data mt7623_
|
||||||
.hw_features = MTK_HW_FEATURES,
|
.hw_features = MTK_HW_FEATURES,
|
||||||
.required_clks = MT7623_CLKS_BITMAP,
|
.required_clks = MT7623_CLKS_BITMAP,
|
||||||
.required_pctl = true,
|
.required_pctl = true,
|
||||||
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
.txrx = {
|
.txrx = {
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
|
||||||
@@ -215,6 +215,8 @@ int mtk_foe_entry_prepare(struct mtk_eth
|
@@ -175,6 +175,8 @@ int mtk_foe_entry_prepare(struct mtk_eth
|
||||||
val = FIELD_PREP(MTK_FOE_IB2_DEST_PORT_V2, pse_port) |
|
val = FIELD_PREP(MTK_FOE_IB2_DEST_PORT_V2, pse_port) |
|
||||||
FIELD_PREP(MTK_FOE_IB2_PORT_AG_V2, 0xf);
|
FIELD_PREP(MTK_FOE_IB2_PORT_AG_V2, 0xf);
|
||||||
} else {
|
} else {
|
||||||
@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
val = FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_BIND) |
|
val = FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_BIND) |
|
||||||
FIELD_PREP(MTK_FOE_IB1_PACKET_TYPE, type) |
|
FIELD_PREP(MTK_FOE_IB1_PACKET_TYPE, type) |
|
||||||
FIELD_PREP(MTK_FOE_IB1_UDP, l4proto == IPPROTO_UDP) |
|
FIELD_PREP(MTK_FOE_IB1_UDP, l4proto == IPPROTO_UDP) |
|
||||||
@@ -222,7 +224,7 @@ int mtk_foe_entry_prepare(struct mtk_eth
|
@@ -182,7 +184,7 @@ int mtk_foe_entry_prepare(struct mtk_eth
|
||||||
entry->ib1 = val;
|
entry->ib1 = val;
|
||||||
|
|
||||||
val = FIELD_PREP(MTK_FOE_IB2_DEST_PORT, pse_port) |
|
val = FIELD_PREP(MTK_FOE_IB2_DEST_PORT, pse_port) |
|
||||||
|
@ -644,7 +644,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
} qdma;
|
} qdma;
|
||||||
u32 gdm1_cnt;
|
u32 gdm1_cnt;
|
||||||
u32 gdma_to_ppe0;
|
u32 gdma_to_ppe0;
|
||||||
@@ -1176,6 +1197,7 @@ struct mtk_mac {
|
@@ -1173,6 +1194,7 @@ struct mtk_mac {
|
||||||
__be32 hwlro_ip[MTK_MAX_LRO_IP_CNT];
|
__be32 hwlro_ip[MTK_MAX_LRO_IP_CNT];
|
||||||
int hwlro_ip_cnt;
|
int hwlro_ip_cnt;
|
||||||
unsigned int syscfg0;
|
unsigned int syscfg0;
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
|
||||||
@@ -445,6 +445,24 @@ static inline bool mtk_foe_entry_usable(
|
@@ -405,6 +405,24 @@ static inline bool mtk_foe_entry_usable(
|
||||||
FIELD_GET(MTK_FOE_IB1_STATE, entry->ib1) != MTK_FOE_STATE_BIND;
|
FIELD_GET(MTK_FOE_IB1_STATE, entry->ib1) != MTK_FOE_STATE_BIND;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
struct mtk_foe_entry *data)
|
struct mtk_foe_entry *data)
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe.h
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe.h
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.h
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.h
|
||||||
@@ -69,7 +69,9 @@ enum {
|
@@ -68,7 +68,9 @@ enum {
|
||||||
#define MTK_FOE_IB2_DSCP GENMASK(31, 24)
|
#define MTK_FOE_IB2_DSCP GENMASK(31, 24)
|
||||||
|
|
||||||
/* CONFIG_MEDIATEK_NETSYS_V2 */
|
/* CONFIG_MEDIATEK_NETSYS_V2 */
|
||||||
@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
#define MTK_FOE_IB2_DEST_PORT_V2 GENMASK(12, 9)
|
#define MTK_FOE_IB2_DEST_PORT_V2 GENMASK(12, 9)
|
||||||
#define MTK_FOE_IB2_MULTICAST_V2 BIT(13)
|
#define MTK_FOE_IB2_MULTICAST_V2 BIT(13)
|
||||||
#define MTK_FOE_IB2_WDMA_WINFO_V2 BIT(19)
|
#define MTK_FOE_IB2_WDMA_WINFO_V2 BIT(19)
|
||||||
@@ -369,6 +371,8 @@ int mtk_foe_entry_set_pppoe(struct mtk_e
|
@@ -351,6 +353,8 @@ int mtk_foe_entry_set_pppoe(struct mtk_e
|
||||||
int sid);
|
int sid);
|
||||||
int mtk_foe_entry_set_wdma(struct mtk_eth *eth, struct mtk_foe_entry *entry,
|
int mtk_foe_entry_set_wdma(struct mtk_eth *eth, struct mtk_foe_entry *entry,
|
||||||
int wdma_idx, int txq, int bss, int wcid);
|
int wdma_idx, int txq, int bss, int wcid);
|
||||||
|
@ -181,7 +181,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
/* CDMP Ingress Control Register */
|
/* CDMP Ingress Control Register */
|
||||||
#define MTK_CDMP_IG_CTRL 0x400
|
#define MTK_CDMP_IG_CTRL 0x400
|
||||||
#define MTK_CDMP_STAG_EN BIT(0)
|
#define MTK_CDMP_STAG_EN BIT(0)
|
||||||
@@ -1169,6 +1175,8 @@ struct mtk_eth {
|
@@ -1166,6 +1172,8 @@ struct mtk_eth {
|
||||||
|
|
||||||
int ip_align;
|
int ip_align;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -3746,9 +3746,12 @@ static int mtk_hw_init(struct mtk_eth *e
|
@@ -3712,9 +3712,12 @@ static int mtk_hw_init(struct mtk_eth *e
|
||||||
mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
|
mtk_w32(eth, 0x21021000, MTK_FE_INT_GRP);
|
||||||
|
|
||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
|
||||||
@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
@@ -139,6 +139,7 @@
|
@@ -140,6 +140,7 @@
|
||||||
#define PSE_FQFC_CFG1 0x100
|
#define PSE_FQFC_CFG1 0x100
|
||||||
#define PSE_FQFC_CFG2 0x104
|
#define PSE_FQFC_CFG2 0x104
|
||||||
#define PSE_DROP_CFG 0x108
|
#define PSE_DROP_CFG 0x108
|
||||||
|
@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -3142,7 +3142,8 @@ static int mtk_open(struct net_device *d
|
@@ -3143,7 +3143,8 @@ static int mtk_open(struct net_device *d
|
||||||
struct mtk_eth *eth = mac->hw;
|
struct mtk_eth *eth = mac->hw;
|
||||||
int i, err;
|
int i, err;
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) {
|
for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) {
|
||||||
struct metadata_dst *md_dst = eth->dsa_meta[i];
|
struct metadata_dst *md_dst = eth->dsa_meta[i];
|
||||||
|
|
||||||
@@ -3159,7 +3160,8 @@ static int mtk_open(struct net_device *d
|
@@ -3160,7 +3161,8 @@ static int mtk_open(struct net_device *d
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Hardware special tag parsing needs to be disabled if at least
|
/* Hardware special tag parsing needs to be disabled if at least
|
||||||
|
@ -23,7 +23,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -3077,7 +3077,7 @@ static void mtk_gdm_config(struct mtk_et
|
@@ -3078,7 +3078,7 @@ static void mtk_gdm_config(struct mtk_et
|
||||||
|
|
||||||
val |= config;
|
val |= config;
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
val |= MTK_GDMA_SPECIAL_TAG;
|
val |= MTK_GDMA_SPECIAL_TAG;
|
||||||
|
|
||||||
mtk_w32(eth, val, MTK_GDMA_FWD_CFG(i));
|
mtk_w32(eth, val, MTK_GDMA_FWD_CFG(i));
|
||||||
@@ -3142,8 +3142,7 @@ static int mtk_open(struct net_device *d
|
@@ -3143,8 +3143,7 @@ static int mtk_open(struct net_device *d
|
||||||
struct mtk_eth *eth = mac->hw;
|
struct mtk_eth *eth = mac->hw;
|
||||||
int i, err;
|
int i, err;
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) {
|
for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) {
|
||||||
struct metadata_dst *md_dst = eth->dsa_meta[i];
|
struct metadata_dst *md_dst = eth->dsa_meta[i];
|
||||||
|
|
||||||
@@ -3160,8 +3159,7 @@ static int mtk_open(struct net_device *d
|
@@ -3161,8 +3160,7 @@ static int mtk_open(struct net_device *d
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Hardware special tag parsing needs to be disabled if at least
|
/* Hardware special tag parsing needs to be disabled if at least
|
||||||
|
@ -77,7 +77,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1829,7 +1829,9 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1830,7 +1830,9 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
|
|
||||||
while (done < budget) {
|
while (done < budget) {
|
||||||
unsigned int pktlen, *rxdcsum;
|
unsigned int pktlen, *rxdcsum;
|
||||||
@ -87,7 +87,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
dma_addr_t dma_addr;
|
dma_addr_t dma_addr;
|
||||||
u32 hash, reason;
|
u32 hash, reason;
|
||||||
int mac = 0;
|
int mac = 0;
|
||||||
@@ -1969,27 +1971,29 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1970,27 +1972,29 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
|
|
||||||
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) {
|
if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) {
|
||||||
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
|
if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
|
||||||
|
@ -38,7 +38,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
|
||||||
@@ -601,8 +601,7 @@ mtk_foe_entry_commit_subflow(struct mtk_
|
@@ -621,8 +621,7 @@ mtk_foe_entry_commit_subflow(struct mtk_
|
||||||
u32 ib1_mask = mtk_get_ib1_pkt_type_mask(ppe->eth) | MTK_FOE_IB1_UDP;
|
u32 ib1_mask = mtk_get_ib1_pkt_type_mask(ppe->eth) | MTK_FOE_IB1_UDP;
|
||||||
int type;
|
int type;
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe.h
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe.h
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.h
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.h
|
||||||
@@ -277,7 +277,6 @@ struct mtk_flow_entry {
|
@@ -279,7 +279,6 @@ struct mtk_flow_entry {
|
||||||
struct {
|
struct {
|
||||||
struct mtk_flow_entry *base_flow;
|
struct mtk_flow_entry *base_flow;
|
||||||
struct hlist_node list;
|
struct hlist_node list;
|
||||||
|
@ -34,7 +34,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
@@ -1028,11 +1028,13 @@ struct mtk_soc_data {
|
@@ -1063,11 +1063,13 @@ struct mtk_soc_data {
|
||||||
* @regmap: The register map pointing at the range used to setup
|
* @regmap: The register map pointing at the range used to setup
|
||||||
* SGMII modes
|
* SGMII modes
|
||||||
* @ana_rgc3: The offset refers to register ANA_RGC3 related to regmap
|
* @ana_rgc3: The offset refers to register ANA_RGC3 related to regmap
|
||||||
|
@ -24,7 +24,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
@@ -497,7 +497,7 @@
|
@@ -524,7 +524,7 @@
|
||||||
#define SGMII_SPEED_10 FIELD_PREP(SGMII_SPEED_MASK, 0)
|
#define SGMII_SPEED_10 FIELD_PREP(SGMII_SPEED_MASK, 0)
|
||||||
#define SGMII_SPEED_100 FIELD_PREP(SGMII_SPEED_MASK, 1)
|
#define SGMII_SPEED_100 FIELD_PREP(SGMII_SPEED_MASK, 1)
|
||||||
#define SGMII_SPEED_1000 FIELD_PREP(SGMII_SPEED_MASK, 2)
|
#define SGMII_SPEED_1000 FIELD_PREP(SGMII_SPEED_MASK, 2)
|
||||||
|
@ -71,7 +71,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
ret = stmmac_hw_setup(dev, true);
|
ret = stmmac_hw_setup(dev, true);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
|
netdev_err(priv->dev, "%s: Hw setup failed\n", __func__);
|
||||||
@@ -6424,6 +6417,7 @@ void stmmac_enable_rx_queue(struct stmma
|
@@ -6430,6 +6423,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
stmmac_clear_rx_descriptors(priv, queue);
|
stmmac_clear_rx_descriptors(priv, queue);
|
||||||
|
|
||||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||||
@@ -6485,6 +6479,7 @@ void stmmac_enable_tx_queue(struct stmma
|
@@ -6491,6 +6485,7 @@ void stmmac_enable_tx_queue(struct stmma
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
stmmac_clear_tx_descriptors(priv, queue);
|
stmmac_clear_tx_descriptors(priv, queue);
|
||||||
|
|
||||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||||
@@ -7407,6 +7402,25 @@ int stmmac_suspend(struct device *dev)
|
@@ -7417,6 +7412,25 @@ int stmmac_suspend(struct device *dev)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(stmmac_suspend);
|
EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
/**
|
/**
|
||||||
* stmmac_reset_queues_param - reset queue parameters
|
* stmmac_reset_queues_param - reset queue parameters
|
||||||
* @priv: device pointer
|
* @priv: device pointer
|
||||||
@@ -7417,22 +7431,11 @@ static void stmmac_reset_queues_param(st
|
@@ -7427,22 +7441,11 @@ static void stmmac_reset_queues_param(st
|
||||||
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
||||||
u32 queue;
|
u32 queue;
|
||||||
|
|
||||||
|
@ -1116,7 +1116,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6398,7 +6402,7 @@ void stmmac_disable_rx_queue(struct stmm
|
@@ -6404,7 +6408,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||||
|
|
||||||
void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
|
void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
{
|
{
|
||||||
@ -1125,7 +1125,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
struct stmmac_channel *ch = &priv->channel[queue];
|
struct stmmac_channel *ch = &priv->channel[queue];
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
u32 buf_size;
|
u32 buf_size;
|
||||||
@@ -6435,7 +6439,7 @@ void stmmac_enable_rx_queue(struct stmma
|
@@ -6441,7 +6445,7 @@ void stmmac_enable_rx_queue(struct stmma
|
||||||
rx_q->queue_index);
|
rx_q->queue_index);
|
||||||
} else {
|
} else {
|
||||||
stmmac_set_dma_bfsize(priv, priv->ioaddr,
|
stmmac_set_dma_bfsize(priv, priv->ioaddr,
|
||||||
@ -1134,7 +1134,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
rx_q->queue_index);
|
rx_q->queue_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6461,7 +6465,7 @@ void stmmac_disable_tx_queue(struct stmm
|
@@ -6467,7 +6471,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||||
|
|
||||||
void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
|
void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
{
|
{
|
||||||
@ -1143,7 +1143,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
struct stmmac_channel *ch = &priv->channel[queue];
|
struct stmmac_channel *ch = &priv->channel[queue];
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -6511,7 +6515,7 @@ void stmmac_xdp_release(struct net_devic
|
@@ -6517,7 +6521,7 @@ void stmmac_xdp_release(struct net_devic
|
||||||
stmmac_disable_all_queues(priv);
|
stmmac_disable_all_queues(priv);
|
||||||
|
|
||||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||||
@ -1152,7 +1152,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
/* Free the IRQ lines */
|
/* Free the IRQ lines */
|
||||||
stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
|
stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
|
||||||
@@ -6570,7 +6574,7 @@ int stmmac_xdp_open(struct net_device *d
|
@@ -6576,7 +6580,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||||
|
|
||||||
/* DMA RX Channel Configuration */
|
/* DMA RX Channel Configuration */
|
||||||
for (chan = 0; chan < rx_cnt; chan++) {
|
for (chan = 0; chan < rx_cnt; chan++) {
|
||||||
@ -1161,7 +1161,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||||
rx_q->dma_rx_phy, chan);
|
rx_q->dma_rx_phy, chan);
|
||||||
@@ -6588,7 +6592,7 @@ int stmmac_xdp_open(struct net_device *d
|
@@ -6594,7 +6598,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||||
rx_q->queue_index);
|
rx_q->queue_index);
|
||||||
} else {
|
} else {
|
||||||
stmmac_set_dma_bfsize(priv, priv->ioaddr,
|
stmmac_set_dma_bfsize(priv, priv->ioaddr,
|
||||||
@ -1170,7 +1170,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
rx_q->queue_index);
|
rx_q->queue_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6597,7 +6601,7 @@ int stmmac_xdp_open(struct net_device *d
|
@@ -6603,7 +6607,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||||
|
|
||||||
/* DMA TX Channel Configuration */
|
/* DMA TX Channel Configuration */
|
||||||
for (chan = 0; chan < tx_cnt; chan++) {
|
for (chan = 0; chan < tx_cnt; chan++) {
|
||||||
@ -1179,7 +1179,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||||
tx_q->dma_tx_phy, chan);
|
tx_q->dma_tx_phy, chan);
|
||||||
@@ -6630,7 +6634,7 @@ int stmmac_xdp_open(struct net_device *d
|
@@ -6636,7 +6640,7 @@ int stmmac_xdp_open(struct net_device *d
|
||||||
|
|
||||||
irq_error:
|
irq_error:
|
||||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||||
@ -1188,7 +1188,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
stmmac_hw_teardown(dev);
|
stmmac_hw_teardown(dev);
|
||||||
init_error:
|
init_error:
|
||||||
@@ -6657,8 +6661,8 @@ int stmmac_xsk_wakeup(struct net_device
|
@@ -6663,8 +6667,8 @@ int stmmac_xsk_wakeup(struct net_device
|
||||||
queue >= priv->plat->tx_queues_to_use)
|
queue >= priv->plat->tx_queues_to_use)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
@ -1199,7 +1199,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
ch = &priv->channel[queue];
|
ch = &priv->channel[queue];
|
||||||
|
|
||||||
if (!rx_q->xsk_pool && !tx_q->xsk_pool)
|
if (!rx_q->xsk_pool && !tx_q->xsk_pool)
|
||||||
@@ -6914,8 +6918,8 @@ int stmmac_reinit_ringparam(struct net_d
|
@@ -6924,8 +6928,8 @@ int stmmac_reinit_ringparam(struct net_d
|
||||||
if (netif_running(dev))
|
if (netif_running(dev))
|
||||||
stmmac_release(dev);
|
stmmac_release(dev);
|
||||||
|
|
||||||
@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
if (netif_running(dev))
|
if (netif_running(dev))
|
||||||
ret = stmmac_open(dev);
|
ret = stmmac_open(dev);
|
||||||
@@ -7353,7 +7357,7 @@ int stmmac_suspend(struct device *dev)
|
@@ -7363,7 +7367,7 @@ int stmmac_suspend(struct device *dev)
|
||||||
stmmac_disable_all_queues(priv);
|
stmmac_disable_all_queues(priv);
|
||||||
|
|
||||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||||
@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
if (priv->eee_enabled) {
|
if (priv->eee_enabled) {
|
||||||
priv->tx_path_in_lpi_mode = false;
|
priv->tx_path_in_lpi_mode = false;
|
||||||
@@ -7404,7 +7408,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
@@ -7414,7 +7418,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||||
|
|
||||||
static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
|
static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
{
|
{
|
||||||
@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
rx_q->cur_rx = 0;
|
rx_q->cur_rx = 0;
|
||||||
rx_q->dirty_rx = 0;
|
rx_q->dirty_rx = 0;
|
||||||
@@ -7412,7 +7416,7 @@ static void stmmac_reset_rx_queue(struct
|
@@ -7422,7 +7426,7 @@ static void stmmac_reset_rx_queue(struct
|
||||||
|
|
||||||
static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
|
static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
{
|
{
|
||||||
|
@ -1045,7 +1045,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
/* Disable the MAC Rx/Tx */
|
/* Disable the MAC Rx/Tx */
|
||||||
stmmac_mac_set(priv, priv->ioaddr, false);
|
stmmac_mac_set(priv, priv->ioaddr, false);
|
||||||
@@ -6397,7 +6513,7 @@ void stmmac_disable_rx_queue(struct stmm
|
@@ -6403,7 +6519,7 @@ void stmmac_disable_rx_queue(struct stmm
|
||||||
spin_unlock_irqrestore(&ch->lock, flags);
|
spin_unlock_irqrestore(&ch->lock, flags);
|
||||||
|
|
||||||
stmmac_stop_rx_dma(priv, queue);
|
stmmac_stop_rx_dma(priv, queue);
|
||||||
@ -1054,7 +1054,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
}
|
}
|
||||||
|
|
||||||
void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
|
void stmmac_enable_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
@@ -6408,21 +6524,21 @@ void stmmac_enable_rx_queue(struct stmma
|
@@ -6414,21 +6530,21 @@ void stmmac_enable_rx_queue(struct stmma
|
||||||
u32 buf_size;
|
u32 buf_size;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1080,7 +1080,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
stmmac_init_rx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||||
rx_q->dma_rx_phy, rx_q->queue_index);
|
rx_q->dma_rx_phy, rx_q->queue_index);
|
||||||
@@ -6460,7 +6576,7 @@ void stmmac_disable_tx_queue(struct stmm
|
@@ -6466,7 +6582,7 @@ void stmmac_disable_tx_queue(struct stmm
|
||||||
spin_unlock_irqrestore(&ch->lock, flags);
|
spin_unlock_irqrestore(&ch->lock, flags);
|
||||||
|
|
||||||
stmmac_stop_tx_dma(priv, queue);
|
stmmac_stop_tx_dma(priv, queue);
|
||||||
@ -1089,7 +1089,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
}
|
}
|
||||||
|
|
||||||
void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
|
void stmmac_enable_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
@@ -6470,21 +6586,21 @@ void stmmac_enable_tx_queue(struct stmma
|
@@ -6476,21 +6592,21 @@ void stmmac_enable_tx_queue(struct stmma
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1115,7 +1115,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||||
tx_q->dma_tx_phy, tx_q->queue_index);
|
tx_q->dma_tx_phy, tx_q->queue_index);
|
||||||
@@ -6524,7 +6640,7 @@ void stmmac_xdp_release(struct net_devic
|
@@ -6530,7 +6646,7 @@ void stmmac_xdp_release(struct net_devic
|
||||||
stmmac_stop_all_dma(priv);
|
stmmac_stop_all_dma(priv);
|
||||||
|
|
||||||
/* Release and free the Rx/Tx resources */
|
/* Release and free the Rx/Tx resources */
|
||||||
@ -1124,7 +1124,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
/* Disable the MAC Rx/Tx */
|
/* Disable the MAC Rx/Tx */
|
||||||
stmmac_mac_set(priv, priv->ioaddr, false);
|
stmmac_mac_set(priv, priv->ioaddr, false);
|
||||||
@@ -6549,14 +6665,14 @@ int stmmac_xdp_open(struct net_device *d
|
@@ -6555,14 +6671,14 @@ int stmmac_xdp_open(struct net_device *d
|
||||||
u32 chan;
|
u32 chan;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1141,7 +1141,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
netdev_err(dev, "%s: DMA descriptors initialization failed\n",
|
netdev_err(dev, "%s: DMA descriptors initialization failed\n",
|
||||||
__func__);
|
__func__);
|
||||||
@@ -6638,7 +6754,7 @@ irq_error:
|
@@ -6644,7 +6760,7 @@ irq_error:
|
||||||
|
|
||||||
stmmac_hw_teardown(dev);
|
stmmac_hw_teardown(dev);
|
||||||
init_error:
|
init_error:
|
||||||
@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
dma_desc_error:
|
dma_desc_error:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -7499,7 +7615,7 @@ int stmmac_resume(struct device *dev)
|
@@ -7509,7 +7625,7 @@ int stmmac_resume(struct device *dev)
|
||||||
stmmac_reset_queues_param(priv);
|
stmmac_reset_queues_param(priv);
|
||||||
|
|
||||||
stmmac_free_tx_skbufs(priv);
|
stmmac_free_tx_skbufs(priv);
|
||||||
|
@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/sfp.c
|
--- a/drivers/net/phy/sfp.c
|
||||||
+++ b/drivers/net/phy/sfp.c
|
+++ b/drivers/net/phy/sfp.c
|
||||||
@@ -234,6 +234,7 @@ struct sfp {
|
@@ -240,6 +240,7 @@ struct sfp {
|
||||||
bool need_poll;
|
bool need_poll;
|
||||||
|
|
||||||
struct mutex st_mutex; /* Protects state */
|
struct mutex st_mutex; /* Protects state */
|
||||||
@ -28,7 +28,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
unsigned int state_soft_mask;
|
unsigned int state_soft_mask;
|
||||||
unsigned int state;
|
unsigned int state;
|
||||||
struct delayed_work poll;
|
struct delayed_work poll;
|
||||||
@@ -499,17 +500,18 @@ static void sfp_soft_set_state(struct sf
|
@@ -505,17 +506,18 @@ static void sfp_soft_set_state(struct sf
|
||||||
static void sfp_soft_start_poll(struct sfp *sfp)
|
static void sfp_soft_start_poll(struct sfp *sfp)
|
||||||
{
|
{
|
||||||
const struct sfp_eeprom_id *id = &sfp->id;
|
const struct sfp_eeprom_id *id = &sfp->id;
|
||||||
@ -56,7 +56,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
if (sfp->state_soft_mask & (SFP_F_LOS | SFP_F_TX_FAULT) &&
|
if (sfp->state_soft_mask & (SFP_F_LOS | SFP_F_TX_FAULT) &&
|
||||||
!sfp->need_poll)
|
!sfp->need_poll)
|
||||||
@@ -523,10 +525,11 @@ static void sfp_soft_stop_poll(struct sf
|
@@ -529,10 +531,11 @@ static void sfp_soft_stop_poll(struct sf
|
||||||
|
|
||||||
static unsigned int sfp_get_state(struct sfp *sfp)
|
static unsigned int sfp_get_state(struct sfp *sfp)
|
||||||
{
|
{
|
||||||
@ -71,7 +71,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
state |= sfp_soft_get_state(sfp);
|
state |= sfp_soft_get_state(sfp);
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
@@ -1940,6 +1943,15 @@ static int sfp_sm_mod_probe(struct sfp *
|
@@ -1942,6 +1945,15 @@ static int sfp_sm_mod_probe(struct sfp *
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
if (!memcmp(id.base.vendor_name, "ALCATELLUCENT ", 16) &&
|
if (!memcmp(id.base.vendor_name, "ALCATELLUCENT ", 16) &&
|
||||||
!memcmp(id.base.vendor_pn, "3FE46541AA ", 16))
|
!memcmp(id.base.vendor_pn, "3FE46541AA ", 16))
|
||||||
sfp->module_t_start_up = T_START_UP_BAD_GPON;
|
sfp->module_t_start_up = T_START_UP_BAD_GPON;
|
||||||
@@ -2565,6 +2577,8 @@ static int sfp_probe(struct platform_dev
|
@@ -2568,6 +2580,8 @@ static int sfp_probe(struct platform_dev
|
||||||
return PTR_ERR(sfp->gpio[i]);
|
return PTR_ERR(sfp->gpio[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
ret = ops->module_insert(bus->upstream, id);
|
ret = ops->module_insert(bus->upstream, id);
|
||||||
--- a/drivers/net/phy/sfp.c
|
--- a/drivers/net/phy/sfp.c
|
||||||
+++ b/drivers/net/phy/sfp.c
|
+++ b/drivers/net/phy/sfp.c
|
||||||
@@ -253,6 +253,8 @@ struct sfp {
|
@@ -259,6 +259,8 @@ struct sfp {
|
||||||
unsigned int module_t_start_up;
|
unsigned int module_t_start_up;
|
||||||
bool tx_fault_ignore;
|
bool tx_fault_ignore;
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
#if IS_ENABLED(CONFIG_HWMON)
|
#if IS_ENABLED(CONFIG_HWMON)
|
||||||
struct sfp_diag diag;
|
struct sfp_diag diag;
|
||||||
struct delayed_work hwmon_probe;
|
struct delayed_work hwmon_probe;
|
||||||
@@ -309,6 +311,93 @@ static const struct of_device_id sfp_of_
|
@@ -315,6 +317,93 @@ static const struct of_device_id sfp_of_
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, sfp_of_match);
|
MODULE_DEVICE_TABLE(of, sfp_of_match);
|
||||||
|
|
||||||
@ -245,7 +245,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
static unsigned long poll_jiffies;
|
static unsigned long poll_jiffies;
|
||||||
|
|
||||||
static unsigned int sfp_gpio_get_state(struct sfp *sfp)
|
static unsigned int sfp_gpio_get_state(struct sfp *sfp)
|
||||||
@@ -1964,6 +2053,8 @@ static int sfp_sm_mod_probe(struct sfp *
|
@@ -1966,6 +2055,8 @@ static int sfp_sm_mod_probe(struct sfp *
|
||||||
else
|
else
|
||||||
sfp->tx_fault_ignore = false;
|
sfp->tx_fault_ignore = false;
|
||||||
|
|
||||||
@ -254,7 +254,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2075,7 +2166,8 @@ static void sfp_sm_module(struct sfp *sf
|
@@ -2077,7 +2168,8 @@ static void sfp_sm_module(struct sfp *sf
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Report the module insertion to the upstream device */
|
/* Report the module insertion to the upstream device */
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/sfp.c
|
--- a/drivers/net/phy/sfp.c
|
||||||
+++ b/drivers/net/phy/sfp.c
|
+++ b/drivers/net/phy/sfp.c
|
||||||
@@ -311,6 +311,11 @@ static const struct of_device_id sfp_of_
|
@@ -317,6 +317,11 @@ static const struct of_device_id sfp_of_
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, sfp_of_match);
|
MODULE_DEVICE_TABLE(of, sfp_of_match);
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id,
|
static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id,
|
||||||
unsigned long *modes)
|
unsigned long *modes)
|
||||||
{
|
{
|
||||||
@@ -341,6 +346,7 @@ static const struct sfp_quirk sfp_quirks
|
@@ -347,6 +352,7 @@ static const struct sfp_quirk sfp_quirks
|
||||||
.vendor = "ALCATELLUCENT",
|
.vendor = "ALCATELLUCENT",
|
||||||
.part = "3FE46541AA",
|
.part = "3FE46541AA",
|
||||||
.modes = sfp_quirk_2500basex,
|
.modes = sfp_quirk_2500basex,
|
||||||
@ -35,7 +35,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
}, {
|
}, {
|
||||||
// Huawei MA5671A can operate at 2500base-X, but report 1.2GBd
|
// Huawei MA5671A can operate at 2500base-X, but report 1.2GBd
|
||||||
// NRZ in their EEPROM
|
// NRZ in their EEPROM
|
||||||
@@ -2041,11 +2047,7 @@ static int sfp_sm_mod_probe(struct sfp *
|
@@ -2043,11 +2049,7 @@ static int sfp_sm_mod_probe(struct sfp *
|
||||||
if (sfp->gpio[GPIO_LOS])
|
if (sfp->gpio[GPIO_LOS])
|
||||||
sfp->state_hw_mask |= SFP_F_LOS;
|
sfp->state_hw_mask |= SFP_F_LOS;
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
if (!memcmp(id.base.vendor_name, "HUAWEI ", 16) &&
|
if (!memcmp(id.base.vendor_name, "HUAWEI ", 16) &&
|
||||||
!memcmp(id.base.vendor_pn, "MA5671A ", 16))
|
!memcmp(id.base.vendor_pn, "MA5671A ", 16))
|
||||||
@@ -2054,6 +2056,8 @@ static int sfp_sm_mod_probe(struct sfp *
|
@@ -2056,6 +2058,8 @@ static int sfp_sm_mod_probe(struct sfp *
|
||||||
sfp->tx_fault_ignore = false;
|
sfp->tx_fault_ignore = false;
|
||||||
|
|
||||||
sfp->quirk = sfp_lookup_quirk(&id);
|
sfp->quirk = sfp_lookup_quirk(&id);
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/sfp.c
|
--- a/drivers/net/phy/sfp.c
|
||||||
+++ b/drivers/net/phy/sfp.c
|
+++ b/drivers/net/phy/sfp.c
|
||||||
@@ -316,6 +316,11 @@ static void sfp_fixup_long_startup(struc
|
@@ -322,6 +322,11 @@ static void sfp_fixup_long_startup(struc
|
||||||
sfp->module_t_start_up = T_START_UP_BAD_GPON;
|
sfp->module_t_start_up = T_START_UP_BAD_GPON;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id,
|
static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id,
|
||||||
unsigned long *modes)
|
unsigned long *modes)
|
||||||
{
|
{
|
||||||
@@ -353,6 +358,7 @@ static const struct sfp_quirk sfp_quirks
|
@@ -359,6 +364,7 @@ static const struct sfp_quirk sfp_quirks
|
||||||
.vendor = "HUAWEI",
|
.vendor = "HUAWEI",
|
||||||
.part = "MA5671A",
|
.part = "MA5671A",
|
||||||
.modes = sfp_quirk_2500basex,
|
.modes = sfp_quirk_2500basex,
|
||||||
@ -33,7 +33,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
}, {
|
}, {
|
||||||
// Lantech 8330-262D-E can operate at 2500base-X, but
|
// Lantech 8330-262D-E can operate at 2500base-X, but
|
||||||
// incorrectly report 2500MBd NRZ in their EEPROM
|
// incorrectly report 2500MBd NRZ in their EEPROM
|
||||||
@@ -2049,11 +2055,7 @@ static int sfp_sm_mod_probe(struct sfp *
|
@@ -2051,11 +2057,7 @@ static int sfp_sm_mod_probe(struct sfp *
|
||||||
|
|
||||||
sfp->module_t_start_up = T_START_UP;
|
sfp->module_t_start_up = T_START_UP;
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
linkmode_or(support, support, modes);
|
linkmode_or(support, support, modes);
|
||||||
--- a/drivers/net/phy/sfp.c
|
--- a/drivers/net/phy/sfp.c
|
||||||
+++ b/drivers/net/phy/sfp.c
|
+++ b/drivers/net/phy/sfp.c
|
||||||
@@ -321,6 +321,15 @@ static void sfp_fixup_ignore_tx_fault(st
|
@@ -327,6 +327,15 @@ static void sfp_fixup_ignore_tx_fault(st
|
||||||
sfp->tx_fault_ignore = true;
|
sfp->tx_fault_ignore = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id,
|
static void sfp_quirk_2500basex(const struct sfp_eeprom_id *id,
|
||||||
unsigned long *modes)
|
unsigned long *modes)
|
||||||
{
|
{
|
||||||
@@ -353,6 +362,10 @@ static const struct sfp_quirk sfp_quirks
|
@@ -359,6 +368,10 @@ static const struct sfp_quirk sfp_quirks
|
||||||
.modes = sfp_quirk_2500basex,
|
.modes = sfp_quirk_2500basex,
|
||||||
.fixup = sfp_fixup_long_startup,
|
.fixup = sfp_fixup_long_startup,
|
||||||
}, {
|
}, {
|
||||||
@ -55,7 +55,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|||||||
// Huawei MA5671A can operate at 2500base-X, but report 1.2GBd
|
// Huawei MA5671A can operate at 2500base-X, but report 1.2GBd
|
||||||
// NRZ in their EEPROM
|
// NRZ in their EEPROM
|
||||||
.vendor = "HUAWEI",
|
.vendor = "HUAWEI",
|
||||||
@@ -369,16 +382,18 @@ static const struct sfp_quirk sfp_quirks
|
@@ -375,16 +388,18 @@ static const struct sfp_quirk sfp_quirks
|
||||||
.vendor = "UBNT",
|
.vendor = "UBNT",
|
||||||
.part = "UF-INSTANT",
|
.part = "UF-INSTANT",
|
||||||
.modes = sfp_quirk_ubnt_uf_instant,
|
.modes = sfp_quirk_ubnt_uf_instant,
|
||||||
|
@ -24,7 +24,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/sfp.c
|
--- a/drivers/net/phy/sfp.c
|
||||||
+++ b/drivers/net/phy/sfp.c
|
+++ b/drivers/net/phy/sfp.c
|
||||||
@@ -366,6 +366,10 @@ static const struct sfp_quirk sfp_quirks
|
@@ -372,6 +372,10 @@ static const struct sfp_quirk sfp_quirks
|
||||||
.part = "HL-GSFP",
|
.part = "HL-GSFP",
|
||||||
.fixup = sfp_fixup_halny_gsfp,
|
.fixup = sfp_fixup_halny_gsfp,
|
||||||
}, {
|
}, {
|
||||||
|
@ -77,15 +77,15 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
|
|
||||||
#include "mtdcore.h"
|
#include "mtdcore.h"
|
||||||
|
|
||||||
@@ -1004,6 +1005,8 @@ int mtd_device_parse_register(struct mtd
|
@@ -1006,6 +1007,8 @@ int mtd_device_parse_register(struct mtd
|
||||||
|
register_reboot_notifier(&mtd->reboot_notifier);
|
||||||
ret = mtd_otp_nvmem_add(mtd);
|
}
|
||||||
|
|
||||||
+ register_mtd_blktrans_devs();
|
+ register_mtd_blktrans_devs();
|
||||||
+
|
+
|
||||||
out:
|
out:
|
||||||
if (ret && device_is_registered(&mtd->dev))
|
if (ret) {
|
||||||
del_mtd_device(mtd);
|
nvmem_unregister(mtd->otp_user_nvmem);
|
||||||
--- a/include/linux/mtd/blktrans.h
|
--- a/include/linux/mtd/blktrans.h
|
||||||
+++ b/include/linux/mtd/blktrans.h
|
+++ b/include/linux/mtd/blktrans.h
|
||||||
@@ -76,6 +76,7 @@ extern int deregister_mtd_blktrans(struc
|
@@ -76,6 +76,7 @@ extern int deregister_mtd_blktrans(struc
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
@@ -2982,6 +2982,9 @@ static int mv88e6xxx_setup_port(struct m
|
@@ -2987,6 +2987,9 @@ static int mv88e6xxx_setup_port(struct m
|
||||||
else
|
else
|
||||||
reg = 1 << port;
|
reg = 1 << port;
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -1678,6 +1678,10 @@ enum netdev_priv_flags {
|
@@ -1679,6 +1679,10 @@ enum netdev_priv_flags {
|
||||||
IFF_TX_SKB_NO_LINEAR = BIT_ULL(31),
|
IFF_TX_SKB_NO_LINEAR = BIT_ULL(31),
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
||||||
#define IFF_EBRIDGE IFF_EBRIDGE
|
#define IFF_EBRIDGE IFF_EBRIDGE
|
||||||
#define IFF_BONDING IFF_BONDING
|
#define IFF_BONDING IFF_BONDING
|
||||||
@@ -1710,6 +1714,7 @@ enum netdev_priv_flags {
|
@@ -1711,6 +1715,7 @@ enum netdev_priv_flags {
|
||||||
#define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
|
#define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
|
||||||
#define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
|
#define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
|
||||||
#define IFF_TX_SKB_NO_LINEAR IFF_TX_SKB_NO_LINEAR
|
#define IFF_TX_SKB_NO_LINEAR IFF_TX_SKB_NO_LINEAR
|
||||||
@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
/* Specifies the type of the struct net_device::ml_priv pointer */
|
/* Specifies the type of the struct net_device::ml_priv pointer */
|
||||||
enum netdev_ml_priv_type {
|
enum netdev_ml_priv_type {
|
||||||
@@ -2011,6 +2016,7 @@ struct net_device {
|
@@ -2012,6 +2017,7 @@ struct net_device {
|
||||||
/* Read-mostly cache-line for fast-path access */
|
/* Read-mostly cache-line for fast-path access */
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
unsigned int priv_flags;
|
unsigned int priv_flags;
|
||||||
@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
const struct net_device_ops *netdev_ops;
|
const struct net_device_ops *netdev_ops;
|
||||||
int ifindex;
|
int ifindex;
|
||||||
unsigned short gflags;
|
unsigned short gflags;
|
||||||
@@ -2071,6 +2077,11 @@ struct net_device {
|
@@ -2072,6 +2078,11 @@ struct net_device {
|
||||||
const struct tlsdev_ops *tlsdev_ops;
|
const struct tlsdev_ops *tlsdev_ops;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
const struct header_ops *header_ops;
|
const struct header_ops *header_ops;
|
||||||
|
|
||||||
unsigned char operstate;
|
unsigned char operstate;
|
||||||
@@ -2145,6 +2156,10 @@ struct net_device {
|
@@ -2146,6 +2157,10 @@ struct net_device {
|
||||||
struct mctp_dev __rcu *mctp_ptr;
|
struct mctp_dev __rcu *mctp_ptr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
*/
|
*/
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/include/linux/skbuff.h
|
+++ b/include/linux/skbuff.h
|
||||||
@@ -2854,6 +2854,10 @@ static inline int pskb_trim(struct sk_bu
|
@@ -2855,6 +2855,10 @@ static inline int pskb_trim(struct sk_bu
|
||||||
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
|
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
/**
|
/**
|
||||||
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
||||||
* @skb: buffer to alter
|
* @skb: buffer to alter
|
||||||
@@ -3004,16 +3008,6 @@ static inline struct sk_buff *dev_alloc_
|
@@ -3005,16 +3009,6 @@ static inline struct sk_buff *dev_alloc_
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
|||||||
#include <linux/crc32.h>
|
#include <linux/crc32.h>
|
||||||
#include <linux/if_vlan.h>
|
#include <linux/if_vlan.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
@@ -6864,6 +6865,22 @@ static void rtl_tally_reset(struct r8152
|
@@ -6886,6 +6887,22 @@ static void rtl_tally_reset(struct r8152
|
||||||
ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
|
ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
|||||||
static void r8152b_init(struct r8152 *tp)
|
static void r8152b_init(struct r8152 *tp)
|
||||||
{
|
{
|
||||||
u32 ocp_data;
|
u32 ocp_data;
|
||||||
@@ -6905,6 +6922,8 @@ static void r8152b_init(struct r8152 *tp
|
@@ -6927,6 +6944,8 @@ static void r8152b_init(struct r8152 *tp
|
||||||
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
|
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
|
||||||
ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
|
ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
|
||||||
ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
|
ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
|
||||||
@ -54,7 +54,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void r8153_init(struct r8152 *tp)
|
static void r8153_init(struct r8152 *tp)
|
||||||
@@ -7045,6 +7064,8 @@ static void r8153_init(struct r8152 *tp)
|
@@ -7067,6 +7086,8 @@ static void r8153_init(struct r8152 *tp)
|
||||||
tp->coalesce = COALESCE_SLOW;
|
tp->coalesce = COALESCE_SLOW;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -63,7 +63,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void r8153b_init(struct r8152 *tp)
|
static void r8153b_init(struct r8152 *tp)
|
||||||
@@ -7127,6 +7148,8 @@ static void r8153b_init(struct r8152 *tp
|
@@ -7149,6 +7170,8 @@ static void r8153b_init(struct r8152 *tp
|
||||||
rtl_tally_reset(tp);
|
rtl_tally_reset(tp);
|
||||||
|
|
||||||
tp->coalesce = 15000; /* 15 us */
|
tp->coalesce = 15000; /* 15 us */
|
||||||
|
@ -29,7 +29,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support
|
|||||||
|
|
||||||
#define QUECTEL_VENDOR_ID 0x2c7c
|
#define QUECTEL_VENDOR_ID 0x2c7c
|
||||||
/* These Quectel products use Quectel's vendor ID */
|
/* These Quectel products use Quectel's vendor ID */
|
||||||
@@ -1164,6 +1166,11 @@ static const struct usb_device_id option
|
@@ -1169,6 +1171,11 @@ static const struct usb_device_id option
|
||||||
.driver_info = ZLP },
|
.driver_info = ZLP },
|
||||||
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
|
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
|
||||||
.driver_info = RSVD(4) },
|
.driver_info = RSVD(4) },
|
||||||
|
@ -26,7 +26,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
|
|
||||||
--- a/drivers/net/phy/sfp.c
|
--- a/drivers/net/phy/sfp.c
|
||||||
+++ b/drivers/net/phy/sfp.c
|
+++ b/drivers/net/phy/sfp.c
|
||||||
@@ -377,6 +377,11 @@ static const struct sfp_quirk sfp_quirks
|
@@ -383,6 +383,11 @@ static const struct sfp_quirk sfp_quirks
|
||||||
.modes = sfp_quirk_2500basex,
|
.modes = sfp_quirk_2500basex,
|
||||||
.fixup = sfp_fixup_ignore_tx_fault,
|
.fixup = sfp_fixup_ignore_tx_fault,
|
||||||
}, {
|
}, {
|
||||||
@ -38,7 +38,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
// Lantech 8330-262D-E can operate at 2500base-X, but
|
// Lantech 8330-262D-E can operate at 2500base-X, but
|
||||||
// incorrectly report 2500MBd NRZ in their EEPROM
|
// incorrectly report 2500MBd NRZ in their EEPROM
|
||||||
.vendor = "Lantech",
|
.vendor = "Lantech",
|
||||||
@@ -2310,7 +2315,8 @@ static void sfp_sm_main(struct sfp *sfp,
|
@@ -2312,7 +2317,8 @@ static void sfp_sm_main(struct sfp *sfp,
|
||||||
* or t_start_up, so assume there is a fault.
|
* or t_start_up, so assume there is a fault.
|
||||||
*/
|
*/
|
||||||
sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT,
|
sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT,
|
||||||
@ -48,7 +48,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|||||||
} else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) {
|
} else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) {
|
||||||
init_done:
|
init_done:
|
||||||
sfp->sm_phy_retries = R_PHY_RETRY;
|
sfp->sm_phy_retries = R_PHY_RETRY;
|
||||||
@@ -2533,10 +2539,12 @@ static void sfp_check_state(struct sfp *
|
@@ -2535,10 +2541,12 @@ static void sfp_check_state(struct sfp *
|
||||||
mutex_lock(&sfp->st_mutex);
|
mutex_lock(&sfp->st_mutex);
|
||||||
state = sfp_get_state(sfp);
|
state = sfp_get_state(sfp);
|
||||||
changed = state ^ sfp->state;
|
changed = state ^ sfp->state;
|
||||||
|
@ -235,7 +235,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (!pe)
|
if (!pe)
|
||||||
--- a/mm/vmalloc.c
|
--- a/mm/vmalloc.c
|
||||||
+++ b/mm/vmalloc.c
|
+++ b/mm/vmalloc.c
|
||||||
@@ -3962,6 +3962,8 @@ static const struct seq_operations vmall
|
@@ -3964,6 +3964,8 @@ static const struct seq_operations vmall
|
||||||
|
|
||||||
static int __init proc_vmalloc_init(void)
|
static int __init proc_vmalloc_init(void)
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
struct list_head *br_ip_list);
|
struct list_head *br_ip_list);
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/include/linux/skbuff.h
|
+++ b/include/linux/skbuff.h
|
||||||
@@ -915,6 +915,10 @@ struct sk_buff {
|
@@ -916,6 +916,10 @@ struct sk_buff {
|
||||||
__u8 slow_gro:1;
|
__u8 slow_gro:1;
|
||||||
__u8 scm_io_uring:1;
|
__u8 scm_io_uring:1;
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
|
|||||||
|
|
||||||
--- a/mm/page_alloc.c
|
--- a/mm/page_alloc.c
|
||||||
+++ b/mm/page_alloc.c
|
+++ b/mm/page_alloc.c
|
||||||
@@ -7604,7 +7604,7 @@ static void __init alloc_node_mem_map(st
|
@@ -7620,7 +7620,7 @@ static void __init alloc_node_mem_map(st
|
||||||
if (pgdat == NODE_DATA(0)) {
|
if (pgdat == NODE_DATA(0)) {
|
||||||
mem_map = NODE_DATA(0)->node_mem_map;
|
mem_map = NODE_DATA(0)->node_mem_map;
|
||||||
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
|
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
|
||||||
|
@ -17,7 +17,7 @@ Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
|||||||
|
|
||||||
--- a/drivers/mtd/mtdcore.c
|
--- a/drivers/mtd/mtdcore.c
|
||||||
+++ b/drivers/mtd/mtdcore.c
|
+++ b/drivers/mtd/mtdcore.c
|
||||||
@@ -1233,6 +1233,44 @@ out_unlock:
|
@@ -1240,6 +1240,44 @@ out_unlock:
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(get_mtd_device_nm);
|
EXPORT_SYMBOL_GPL(get_mtd_device_nm);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
#define PACKET_FANOUT_LB 1
|
#define PACKET_FANOUT_LB 1
|
||||||
--- a/net/packet/af_packet.c
|
--- a/net/packet/af_packet.c
|
||||||
+++ b/net/packet/af_packet.c
|
+++ b/net/packet/af_packet.c
|
||||||
@@ -1825,6 +1825,7 @@ static int packet_rcv_spkt(struct sk_buf
|
@@ -1826,6 +1826,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||||
{
|
{
|
||||||
struct sock *sk;
|
struct sock *sk;
|
||||||
struct sockaddr_pkt *spkt;
|
struct sockaddr_pkt *spkt;
|
||||||
@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* When we registered the protocol we saved the socket in the data
|
* When we registered the protocol we saved the socket in the data
|
||||||
@@ -1832,6 +1833,7 @@ static int packet_rcv_spkt(struct sk_buf
|
@@ -1833,6 +1834,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
sk = pt->af_packet_priv;
|
sk = pt->af_packet_priv;
|
||||||
@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Yank back the headers [hope the device set this
|
* Yank back the headers [hope the device set this
|
||||||
@@ -1844,7 +1846,7 @@ static int packet_rcv_spkt(struct sk_buf
|
@@ -1845,7 +1847,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||||
* so that this procedure is noop.
|
* so that this procedure is noop.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
@@ -2092,12 +2094,12 @@ static int packet_rcv(struct sk_buff *sk
|
@@ -2093,12 +2095,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||||
unsigned int snaplen, res;
|
unsigned int snaplen, res;
|
||||||
bool is_drop_n_account = false;
|
bool is_drop_n_account = false;
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
@@ -2223,12 +2225,12 @@ static int tpacket_rcv(struct sk_buff *s
|
@@ -2224,12 +2226,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
||||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
@@ -3339,6 +3341,7 @@ static int packet_create(struct net *net
|
@@ -3342,6 +3344,7 @@ static int packet_create(struct net *net
|
||||||
mutex_init(&po->pg_vec_lock);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->rollover = NULL;
|
po->rollover = NULL;
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
@ -96,7 +96,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
po->prot_hook.func = packet_rcv_spkt;
|
||||||
@@ -3979,6 +3982,16 @@ packet_setsockopt(struct socket *sock, i
|
@@ -3979,6 +3982,16 @@ packet_setsockopt(struct socket *sock, i
|
||||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
+ case PACKET_RECV_TYPE:
|
+ case PACKET_RECV_TYPE:
|
||||||
@ -128,7 +128,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
break;
|
break;
|
||||||
--- a/net/packet/internal.h
|
--- a/net/packet/internal.h
|
||||||
+++ b/net/packet/internal.h
|
+++ b/net/packet/internal.h
|
||||||
@@ -137,6 +137,7 @@ struct packet_sock {
|
@@ -136,6 +136,7 @@ struct packet_sock {
|
||||||
int (*xmit)(struct sk_buff *skb);
|
int (*xmit)(struct sk_buff *skb);
|
||||||
struct packet_type prot_hook ____cacheline_aligned_in_smp;
|
struct packet_type prot_hook ____cacheline_aligned_in_smp;
|
||||||
atomic_t tp_drops ____cacheline_aligned_in_smp;
|
atomic_t tp_drops ____cacheline_aligned_in_smp;
|
||||||
|
@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/include/linux/skbuff.h
|
+++ b/include/linux/skbuff.h
|
||||||
@@ -2820,7 +2820,7 @@ static inline int pskb_network_may_pull(
|
@@ -2821,7 +2821,7 @@ static inline int pskb_network_may_pull(
|
||||||
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
||||||
*/
|
*/
|
||||||
#ifndef NET_SKB_PAD
|
#ifndef NET_SKB_PAD
|
||||||
|
@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
#endif
|
#endif
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/include/linux/skbuff.h
|
+++ b/include/linux/skbuff.h
|
||||||
@@ -892,6 +892,7 @@ struct sk_buff {
|
@@ -893,6 +893,7 @@ struct sk_buff {
|
||||||
#ifdef CONFIG_IPV6_NDISC_NODETYPE
|
#ifdef CONFIG_IPV6_NDISC_NODETYPE
|
||||||
__u8 ndisc_nodetype:2;
|
__u8 ndisc_nodetype:2;
|
||||||
#endif
|
#endif
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||||
@@ -247,6 +247,9 @@ mtk_flow_offload_replace(struct mtk_eth
|
@@ -253,6 +253,9 @@ mtk_flow_offload_replace(struct mtk_eth
|
||||||
if (rhashtable_lookup(ð->flow_table, &f->cookie, mtk_flow_ht_params))
|
if (rhashtable_lookup(ð->flow_table, &f->cookie, mtk_flow_ht_params))
|
||||||
return -EEXIST;
|
return -EEXIST;
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -2824,8 +2824,8 @@ static irqreturn_t mtk_handle_irq_rx(int
|
@@ -2972,8 +2972,8 @@ static irqreturn_t mtk_handle_irq_rx(int
|
||||||
|
|
||||||
eth->rx_events++;
|
eth->rx_events++;
|
||||||
if (likely(napi_schedule_prep(ð->rx_napi))) {
|
if (likely(napi_schedule_prep(ð->rx_napi))) {
|
||||||
@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
@@ -2837,8 +2837,8 @@ static irqreturn_t mtk_handle_irq_tx(int
|
@@ -2985,8 +2985,8 @@ static irqreturn_t mtk_handle_irq_tx(int
|
||||||
|
|
||||||
eth->tx_events++;
|
eth->tx_events++;
|
||||||
if (likely(napi_schedule_prep(ð->tx_napi))) {
|
if (likely(napi_schedule_prep(ð->tx_napi))) {
|
||||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
@@ -4351,6 +4351,8 @@ static int mtk_probe(struct platform_dev
|
@@ -4617,6 +4617,8 @@ static int mtk_probe(struct platform_dev
|
||||||
* for NAPI to work
|
* for NAPI to work
|
||||||
*/
|
*/
|
||||||
init_dummy_netdev(ð->dummy_dev);
|
init_dummy_netdev(ð->dummy_dev);
|
||||||
|
@ -12,9 +12,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/net/dsa/tag_mtk.c
|
--- a/net/dsa/tag_mtk.c
|
||||||
+++ b/net/dsa/tag_mtk.c
|
+++ b/net/dsa/tag_mtk.c
|
||||||
@@ -25,6 +25,13 @@ static struct sk_buff *mtk_tag_xmit(stru
|
@@ -27,6 +27,13 @@ static struct sk_buff *mtk_tag_xmit(stru
|
||||||
u8 xmit_tpid;
|
|
||||||
u8 *mtk_tag;
|
skb_set_queue_mapping(skb, dp->index);
|
||||||
|
|
||||||
+ /* The Ethernet switch we are interfaced with needs packets to be at
|
+ /* The Ethernet switch we are interfaced with needs packets to be at
|
||||||
+ * least 64 bytes (including FCS) otherwise their padding might be
|
+ * least 64 bytes (including FCS) otherwise their padding might be
|
||||||
|
@ -15,7 +15,7 @@ Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
|
|||||||
|
|
||||||
--- a/drivers/net/dsa/mt7530.c
|
--- a/drivers/net/dsa/mt7530.c
|
||||||
+++ b/drivers/net/dsa/mt7530.c
|
+++ b/drivers/net/dsa/mt7530.c
|
||||||
@@ -2341,6 +2341,10 @@ mt7531_setup(struct dsa_switch *ds)
|
@@ -2346,6 +2346,10 @@ mt7531_setup(struct dsa_switch *ds)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -4585,8 +4585,8 @@ static int mtk_probe(struct platform_dev
|
@@ -4586,8 +4586,8 @@ static int mtk_probe(struct platform_dev
|
||||||
for (i = 0; i < num_ppe; i++) {
|
for (i = 0; i < num_ppe; i++) {
|
||||||
u32 ppe_addr = eth->soc->reg_map->ppe_base + i * 0x400;
|
u32 ppe_addr = eth->soc->reg_map->ppe_base + i * 0x400;
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
|
|||||||
if (!eth->ppe[i]) {
|
if (!eth->ppe[i]) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
goto err_free_dev;
|
goto err_free_dev;
|
||||||
@@ -4711,6 +4711,7 @@ static const struct mtk_soc_data mt7622_
|
@@ -4712,6 +4712,7 @@ static const struct mtk_soc_data mt7622_
|
||||||
.required_pctl = false,
|
.required_pctl = false,
|
||||||
.offload_version = 2,
|
.offload_version = 2,
|
||||||
.hash_offset = 2,
|
.hash_offset = 2,
|
||||||
@ -72,7 +72,7 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
|
|||||||
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
|
.foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
|
||||||
.txrx = {
|
.txrx = {
|
||||||
.txd_size = sizeof(struct mtk_tx_dma),
|
.txd_size = sizeof(struct mtk_tx_dma),
|
||||||
@@ -4748,6 +4749,7 @@ static const struct mtk_soc_data mt7629_
|
@@ -4749,6 +4750,7 @@ static const struct mtk_soc_data mt7629_
|
||||||
.hw_features = MTK_HW_FEATURES,
|
.hw_features = MTK_HW_FEATURES,
|
||||||
.required_clks = MT7629_CLKS_BITMAP,
|
.required_clks = MT7629_CLKS_BITMAP,
|
||||||
.required_pctl = false,
|
.required_pctl = false,
|
||||||
@ -80,7 +80,7 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
|
|||||||
.txrx = {
|
.txrx = {
|
||||||
.txd_size = sizeof(struct mtk_tx_dma),
|
.txd_size = sizeof(struct mtk_tx_dma),
|
||||||
.rxd_size = sizeof(struct mtk_rx_dma),
|
.rxd_size = sizeof(struct mtk_rx_dma),
|
||||||
@@ -4768,6 +4770,7 @@ static const struct mtk_soc_data mt7986_
|
@@ -4769,6 +4771,7 @@ static const struct mtk_soc_data mt7986_
|
||||||
.offload_version = 2,
|
.offload_version = 2,
|
||||||
.hash_offset = 4,
|
.hash_offset = 4,
|
||||||
.foe_entry_size = sizeof(struct mtk_foe_entry),
|
.foe_entry_size = sizeof(struct mtk_foe_entry),
|
||||||
@ -90,7 +90,7 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
|
|||||||
.rxd_size = sizeof(struct mtk_rx_dma_v2),
|
.rxd_size = sizeof(struct mtk_rx_dma_v2),
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
|
||||||
@@ -1025,6 +1025,8 @@ struct mtk_reg_map {
|
@@ -1026,6 +1026,8 @@ struct mtk_reg_map {
|
||||||
* the extra setup for those pins used by GMAC.
|
* the extra setup for those pins used by GMAC.
|
||||||
* @hash_offset Flow table hash offset.
|
* @hash_offset Flow table hash offset.
|
||||||
* @foe_entry_size Foe table entry size.
|
* @foe_entry_size Foe table entry size.
|
||||||
@ -99,7 +99,7 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
|
|||||||
* @txd_size Tx DMA descriptor size.
|
* @txd_size Tx DMA descriptor size.
|
||||||
* @rxd_size Rx DMA descriptor size.
|
* @rxd_size Rx DMA descriptor size.
|
||||||
* @rx_irq_done_mask Rx irq done register mask.
|
* @rx_irq_done_mask Rx irq done register mask.
|
||||||
@@ -1042,6 +1044,7 @@ struct mtk_soc_data {
|
@@ -1043,6 +1045,7 @@ struct mtk_soc_data {
|
||||||
u8 hash_offset;
|
u8 hash_offset;
|
||||||
u16 foe_entry_size;
|
u16 foe_entry_size;
|
||||||
netdev_features_t hw_features;
|
netdev_features_t hw_features;
|
||||||
@ -373,7 +373,7 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
|
|||||||
return 0;
|
return 0;
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||||
@@ -497,6 +497,7 @@ static int
|
@@ -500,6 +500,7 @@ static int
|
||||||
mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
|
mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
|
||||||
{
|
{
|
||||||
struct mtk_flow_entry *entry;
|
struct mtk_flow_entry *entry;
|
||||||
@ -381,7 +381,7 @@ v2: fix wrong variable name in return value check spotted by Denis Kirjanov
|
|||||||
u32 idle;
|
u32 idle;
|
||||||
|
|
||||||
entry = rhashtable_lookup(ð->flow_table, &f->cookie,
|
entry = rhashtable_lookup(ð->flow_table, &f->cookie,
|
||||||
@@ -507,6 +508,13 @@ mtk_flow_offload_stats(struct mtk_eth *e
|
@@ -510,6 +511,13 @@ mtk_flow_offload_stats(struct mtk_eth *e
|
||||||
idle = mtk_foe_entry_idle_time(eth->ppe[entry->ppe_index], entry);
|
idle = mtk_foe_entry_idle_time(eth->ppe[entry->ppe_index], entry);
|
||||||
f->stats.lastused = jiffies - idle * HZ;
|
f->stats.lastused = jiffies - idle * HZ;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1829,9 +1829,7 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1830,9 +1830,7 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
|
|
||||||
while (done < budget) {
|
while (done < budget) {
|
||||||
unsigned int pktlen, *rxdcsum;
|
unsigned int pktlen, *rxdcsum;
|
||||||
@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
dma_addr_t dma_addr;
|
dma_addr_t dma_addr;
|
||||||
u32 hash, reason;
|
u32 hash, reason;
|
||||||
int mac = 0;
|
int mac = 0;
|
||||||
@@ -1966,36 +1964,21 @@ static int mtk_poll_rx(struct napi_struc
|
@@ -1967,36 +1965,21 @@ static int mtk_poll_rx(struct napi_struc
|
||||||
skb_checksum_none_assert(skb);
|
skb_checksum_none_assert(skb);
|
||||||
skb->protocol = eth_type_trans(skb, netdev);
|
skb->protocol = eth_type_trans(skb, netdev);
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
skb_record_rx_queue(skb, 0);
|
skb_record_rx_queue(skb, 0);
|
||||||
napi_gro_receive(napi, skb);
|
napi_gro_receive(napi, skb);
|
||||||
|
|
||||||
@@ -2810,29 +2793,11 @@ static netdev_features_t mtk_fix_feature
|
@@ -2811,29 +2794,11 @@ static netdev_features_t mtk_fix_feature
|
||||||
|
|
||||||
static int mtk_set_features(struct net_device *dev, netdev_features_t features)
|
static int mtk_set_features(struct net_device *dev, netdev_features_t features)
|
||||||
{
|
{
|
||||||
@ -100,7 +100,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3146,30 +3111,6 @@ static int mtk_open(struct net_device *d
|
@@ -3147,30 +3112,6 @@ static int mtk_open(struct net_device *d
|
||||||
struct mtk_eth *eth = mac->hw;
|
struct mtk_eth *eth = mac->hw;
|
||||||
int i, err;
|
int i, err;
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0);
|
err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0);
|
||||||
if (err) {
|
if (err) {
|
||||||
netdev_err(dev, "%s: could not attach PHY: %d\n", __func__,
|
netdev_err(dev, "%s: could not attach PHY: %d\n", __func__,
|
||||||
@@ -3210,6 +3151,35 @@ static int mtk_open(struct net_device *d
|
@@ -3211,6 +3152,35 @@ static int mtk_open(struct net_device *d
|
||||||
phylink_start(mac->phylink);
|
phylink_start(mac->phylink);
|
||||||
netif_tx_start_all_queues(dev);
|
netif_tx_start_all_queues(dev);
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3694,10 +3664,9 @@ static int mtk_hw_init(struct mtk_eth *e
|
@@ -3695,10 +3665,9 @@ static int mtk_hw_init(struct mtk_eth *e
|
||||||
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
|
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
|
||||||
val = mtk_r32(eth, MTK_CDMP_IG_CTRL);
|
val = mtk_r32(eth, MTK_CDMP_IG_CTRL);
|
||||||
mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL);
|
mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL);
|
||||||
@ -180,7 +180,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
/* set interrupt delays based on current Net DIM sample */
|
/* set interrupt delays based on current Net DIM sample */
|
||||||
mtk_dim_rx(ð->rx_dim.work);
|
mtk_dim_rx(ð->rx_dim.work);
|
||||||
@@ -4335,7 +4304,7 @@ static int mtk_add_mac(struct mtk_eth *e
|
@@ -4336,7 +4305,7 @@ static int mtk_add_mac(struct mtk_eth *e
|
||||||
eth->netdev[id]->hw_features |= NETIF_F_LRO;
|
eth->netdev[id]->hw_features |= NETIF_F_LRO;
|
||||||
|
|
||||||
eth->netdev[id]->vlan_features = eth->soc->hw_features &
|
eth->netdev[id]->vlan_features = eth->soc->hw_features &
|
||||||
|
@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
{
|
{
|
||||||
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
|
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
|
||||||
struct flow_action_entry *act;
|
struct flow_action_entry *act;
|
||||||
@@ -452,6 +453,7 @@ mtk_flow_offload_replace(struct mtk_eth
|
@@ -455,6 +456,7 @@ mtk_flow_offload_replace(struct mtk_eth
|
||||||
entry->cookie = f->cookie;
|
entry->cookie = f->cookie;
|
||||||
memcpy(&entry->data, &foe, sizeof(entry->data));
|
memcpy(&entry->data, &foe, sizeof(entry->data));
|
||||||
entry->wed_index = wed_index;
|
entry->wed_index = wed_index;
|
||||||
@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
err = mtk_foe_entry_commit(eth->ppe[entry->ppe_index], entry);
|
err = mtk_foe_entry_commit(eth->ppe[entry->ppe_index], entry);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
@@ -520,25 +522,15 @@ mtk_flow_offload_stats(struct mtk_eth *e
|
@@ -523,25 +525,15 @@ mtk_flow_offload_stats(struct mtk_eth *e
|
||||||
|
|
||||||
static DEFINE_MUTEX(mtk_flow_offload_mutex);
|
static DEFINE_MUTEX(mtk_flow_offload_mutex);
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
break;
|
break;
|
||||||
case FLOW_CLS_DESTROY:
|
case FLOW_CLS_DESTROY:
|
||||||
err = mtk_flow_offload_destroy(eth, cls);
|
err = mtk_flow_offload_destroy(eth, cls);
|
||||||
@@ -556,6 +548,23 @@ mtk_eth_setup_tc_block_cb(enum tc_setup_
|
@@ -559,6 +551,23 @@ mtk_eth_setup_tc_block_cb(enum tc_setup_
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -299,7 +299,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
seq_printf(m, "%05x %s %7s", i,
|
seq_printf(m, "%05x %s %7s", i,
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
|
||||||
@@ -499,24 +499,21 @@ static int
|
@@ -502,24 +502,21 @@ static int
|
||||||
mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
|
mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
|
||||||
{
|
{
|
||||||
struct mtk_flow_entry *entry;
|
struct mtk_flow_entry *entry;
|
||||||
|
@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -500,6 +500,7 @@ static inline bool napi_complete(struct
|
@@ -502,6 +502,7 @@ static inline bool napi_complete(struct
|
||||||
}
|
}
|
||||||
|
|
||||||
int dev_set_threaded(struct net_device *dev, bool threaded);
|
int dev_set_threaded(struct net_device *dev, bool threaded);
|
||||||
@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* napi_disable - prevent NAPI from scheduling
|
* napi_disable - prevent NAPI from scheduling
|
||||||
@@ -3363,6 +3364,7 @@ struct softnet_data {
|
@@ -3365,6 +3366,7 @@ struct softnet_data {
|
||||||
unsigned int processed;
|
unsigned int processed;
|
||||||
unsigned int time_squeeze;
|
unsigned int time_squeeze;
|
||||||
unsigned int received_rps;
|
unsigned int received_rps;
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: DENG Qingfang <dqfext@gmail.com>
|
|||||||
|
|
||||||
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
@@ -3200,6 +3200,7 @@ static int mv88e6xxx_setup(struct dsa_sw
|
@@ -3205,6 +3205,7 @@ static int mv88e6xxx_setup(struct dsa_sw
|
||||||
|
|
||||||
chip->ds = ds;
|
chip->ds = ds;
|
||||||
ds->slave_mii_bus = mv88e6xxx_default_mdio_bus(chip);
|
ds->slave_mii_bus = mv88e6xxx_default_mdio_bus(chip);
|
||||||
|
@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
|
|||||||
|
|
||||||
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
||||||
@@ -6328,6 +6328,7 @@ static int mv88e6xxx_register_switch(str
|
@@ -6334,6 +6334,7 @@ static int mv88e6xxx_register_switch(str
|
||||||
ds->ops = &mv88e6xxx_switch_ops;
|
ds->ops = &mv88e6xxx_switch_ops;
|
||||||
ds->ageing_time_min = chip->info->age_time_coeff;
|
ds->ageing_time_min = chip->info->age_time_coeff;
|
||||||
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
|
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
|
||||||
|
@ -14,12 +14,12 @@ callback that the controller can trigger off.
|
|||||||
|
|
||||||
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
---
|
---
|
||||||
drivers/bus/mhi/core/main.c | 1 +
|
drivers/bus/mhi/host/main.c | 1 +
|
||||||
include/linux/mhi.h | 2 ++
|
include/linux/mhi.h | 2 ++
|
||||||
2 files changed, 3 insertions(+)
|
2 files changed, 3 insertions(+)
|
||||||
|
|
||||||
--- a/drivers/bus/mhi/core/main.c
|
--- a/drivers/bus/mhi/host/main.c
|
||||||
+++ b/drivers/bus/mhi/core/main.c
|
+++ b/drivers/bus/mhi/host/main.c
|
||||||
@@ -891,6 +891,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
|
@@ -891,6 +891,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case MHI_EE_SBL:
|
case MHI_EE_SBL:
|
||||||
|
@ -21,7 +21,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/MAINTAINERS
|
+++ b/MAINTAINERS
|
||||||
@@ -12690,6 +12690,7 @@ F: include/uapi/linux/meye.h
|
@@ -12689,6 +12689,7 @@ F: include/uapi/linux/meye.h
|
||||||
|
|
||||||
MOTORCOMM PHY DRIVER
|
MOTORCOMM PHY DRIVER
|
||||||
M: Peter Geis <pgwipeout@gmail.com>
|
M: Peter Geis <pgwipeout@gmail.com>
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
{
|
{
|
||||||
struct rtl8169_private *tp;
|
struct rtl8169_private *tp;
|
||||||
@@ -5438,6 +5456,7 @@ static int rtl_init_one(struct pci_dev *pdev, const struct
|
@@ -5438,6 +5456,7 @@ static int rtl_init_one(struct pci_dev *
|
||||||
if (!tp->counters)
|
if (!tp->counters)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ Signed-off-by: David Wu <david.wu@rock-chips.com>
|
|||||||
{
|
{
|
||||||
struct regulator *ldo = bsp_priv->regulator;
|
struct regulator *ldo = bsp_priv->regulator;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -1444,6 +1625,18 @@ static struct rk_priv_data *rk_gmac_setu
|
@@ -1438,6 +1619,18 @@ static struct rk_priv_data *rk_gmac_setu
|
||||||
|
|
||||||
bsp_priv->grf = syscon_regmap_lookup_by_phandle(dev->of_node,
|
bsp_priv->grf = syscon_regmap_lookup_by_phandle(dev->of_node,
|
||||||
"rockchip,grf");
|
"rockchip,grf");
|
||||||
@ -301,7 +301,7 @@ Signed-off-by: David Wu <david.wu@rock-chips.com>
|
|||||||
|
|
||||||
if (plat->phy_node) {
|
if (plat->phy_node) {
|
||||||
bsp_priv->integrated_phy = of_property_read_bool(plat->phy_node,
|
bsp_priv->integrated_phy = of_property_read_bool(plat->phy_node,
|
||||||
@@ -1521,11 +1714,19 @@ static int rk_gmac_powerup(struct rk_pri
|
@@ -1515,11 +1708,19 @@ static int rk_gmac_powerup(struct rk_pri
|
||||||
dev_info(dev, "init for RMII\n");
|
dev_info(dev, "init for RMII\n");
|
||||||
bsp_priv->ops->set_to_rmii(bsp_priv);
|
bsp_priv->ops->set_to_rmii(bsp_priv);
|
||||||
break;
|
break;
|
||||||
@ -322,7 +322,7 @@ Signed-off-by: David Wu <david.wu@rock-chips.com>
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
gmac_clk_enable(bsp_priv, false);
|
gmac_clk_enable(bsp_priv, false);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -1546,7 +1747,7 @@ static void rk_gmac_powerdown(struct rk_
|
@@ -1540,7 +1741,7 @@ static void rk_gmac_powerdown(struct rk_
|
||||||
|
|
||||||
pm_runtime_put_sync(&gmac->pdev->dev);
|
pm_runtime_put_sync(&gmac->pdev->dev);
|
||||||
|
|
||||||
@ -331,7 +331,7 @@ Signed-off-by: David Wu <david.wu@rock-chips.com>
|
|||||||
gmac_clk_enable(gmac, false);
|
gmac_clk_enable(gmac, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1567,6 +1768,9 @@ static void rk_fix_speed(void *priv, uns
|
@@ -1561,6 +1762,9 @@ static void rk_fix_speed(void *priv, uns
|
||||||
if (bsp_priv->ops->set_rmii_speed)
|
if (bsp_priv->ops->set_rmii_speed)
|
||||||
bsp_priv->ops->set_rmii_speed(bsp_priv, speed);
|
bsp_priv->ops->set_rmii_speed(bsp_priv, speed);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user