Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
9b3f64026c
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.6 = .79
|
||||
LINUX_KERNEL_HASH-6.6.79 = 07a6f904470da1a099aa1683e3025a999dd82f2438f78b006b80c6ae2e9dfe8d
|
||||
LINUX_VERSION-6.6 = .82
|
||||
LINUX_KERNEL_HASH-6.6.82 = f3c2389b8c23cabe747f104a3e434201ca6e7725bbbfb3a8c59a063ac4820e41
|
||||
|
@ -19,6 +19,7 @@ alfa-network,r36m-e4g|\
|
||||
alfa-network,tube-e4g|\
|
||||
engenius,epg600|\
|
||||
engenius,esr600h|\
|
||||
hongdian,h8922-v30|\
|
||||
linksys,re7000|\
|
||||
meig,slt866|\
|
||||
sitecom,wlr-4100-v1-002|\
|
||||
@ -148,7 +149,8 @@ xiaomi,mi-router-cr6608|\
|
||||
xiaomi,mi-router-cr6609)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x20000"
|
||||
;;
|
||||
dna,valokuitu-plus-ex400)
|
||||
dna,valokuitu-plus-ex400|\
|
||||
genexis,pulse-ex400)
|
||||
ubootenv_add_uci_config "/dev/ubi0_0" "0x0" "0x1f000" "0x1f000" "1"
|
||||
ubootenv_add_uci_config "/dev/ubi0_1" "0x0" "0x1f000" "0x1f000" "1"
|
||||
;;
|
||||
|
@ -0,0 +1,76 @@
|
||||
From adf957124a115bdf3e4728e1ea8c70a632648cf0 Mon Sep 17 00:00:00 2001
|
||||
From: Coia Prant <coiaprant@gmail.com>
|
||||
Date: Fri, 14 Feb 2025 15:49:55 +0800
|
||||
Subject: [PATCH] wifi: rt2x00: Add support for loading EEPROM from devicetree
|
||||
embedded data
|
||||
|
||||
This patch allows rt2x00 to load eeprom from devicetree embedded data.
|
||||
|
||||
Example:
|
||||
|
||||
/* load eeprom from embedded data 'eeprom-data' */
|
||||
&wmac {
|
||||
ralink,eeprom-data = <0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff>;
|
||||
};
|
||||
|
||||
Signed-off-by: Coia Prant <coiaprant@gmail.com>
|
||||
---
|
||||
.../net/wireless/ralink/rt2x00/rt2x00eeprom.c | 25 +++++++++++++++++++
|
||||
1 file changed, 25 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
||||
@@ -33,6 +33,27 @@ static void rt2800lib_eeprom_swap(struct
|
||||
rt2x00dev->eeprom[i] = swab16(rt2x00dev->eeprom[i]);
|
||||
}
|
||||
|
||||
+static int rt2800lib_read_eeprom_data(struct rt2x00_dev *rt2x00dev)
|
||||
+{
|
||||
+ struct device_node *np = rt2x00dev->dev->of_node;
|
||||
+ unsigned int len = rt2x00dev->ops->eeprom_size;
|
||||
+ const void *data;
|
||||
+ int size;
|
||||
+
|
||||
+ data = of_get_property(np, "ralink,eeprom-data", &size);
|
||||
+ if (!data)
|
||||
+ return -ENOENT;
|
||||
+
|
||||
+ if (size != len) {
|
||||
+ dev_err(rt2x00dev->dev, "invalid eeprom size, required: 0x%04x\n", len);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ memcpy(rt2x00dev->eeprom, data, size);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
#if IS_ENABLED(CONFIG_MTD)
|
||||
static int rt2800lib_read_eeprom_mtd(struct rt2x00_dev *rt2x00dev)
|
||||
{
|
||||
@@ -193,6 +214,10 @@ int rt2x00lib_read_eeprom(struct rt2x00_
|
||||
{
|
||||
int ret;
|
||||
|
||||
+ ret = rt2800lib_read_eeprom_data(rt2x00dev);
|
||||
+ if (!ret)
|
||||
+ return 0;
|
||||
+
|
||||
#if IS_ENABLED(CONFIG_MTD)
|
||||
ret = rt2800lib_read_eeprom_mtd(rt2x00dev);
|
||||
if (!ret)
|
@ -8,16 +8,16 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mwlwifi
|
||||
PKG_RELEASE=2
|
||||
PKG_RELEASE=1
|
||||
|
||||
PKG_LICENSE:=ISC
|
||||
PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/kaloz/mwlwifi
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2024-04-19
|
||||
PKG_SOURCE_VERSION:=a737d348ef4fe00434b2bc44b2b6a68ea833d95b
|
||||
PKG_MIRROR_HASH:=d55f69c2fa48d02ba535b72b108fc77f5f13a52b29130a631489a053f1670d2c
|
||||
PKG_SOURCE_DATE:=2025-02-06
|
||||
PKG_SOURCE_VERSION:=db97edf20fadea2617805006f5230665fadc6a8c
|
||||
PKG_MIRROR_HASH:=b5464cf6d57d87f6ce5f13bd2320c7e7e671a3152a74f4ef004382f898b89ecf
|
||||
|
||||
PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
--- a/hif/fwcmd.c
|
||||
+++ b/hif/fwcmd.c
|
||||
@@ -3622,11 +3622,7 @@ int mwl_fwcmd_get_fw_core_dump(struct ie
|
||||
@@ -3624,11 +3624,7 @@ int mwl_fwcmd_get_fw_core_dump(struct ie
|
||||
core_dump->context = pcmd->cmd_data.coredump.context;
|
||||
core_dump->size_kb = pcmd->cmd_data.coredump.size_kb;
|
||||
core_dump->flags = pcmd->cmd_data.coredump.flags;
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
--- a/hif/pcie/pcie.c
|
||||
+++ b/hif/pcie/pcie.c
|
||||
@@ -1466,8 +1466,8 @@ static void pcie_bf_mimo_ctrl_decode(str
|
||||
@@ -1449,8 +1449,8 @@ static void pcie_bf_mimo_ctrl_decode(str
|
||||
&fp_data->f_pos);
|
||||
filp_close(fp_data, current->files);
|
||||
} else {
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
--- a/debugfs.c
|
||||
+++ b/debugfs.c
|
||||
@@ -1342,7 +1342,7 @@ done:
|
||||
@@ -1394,7 +1394,7 @@ done:
|
||||
priv->reg_value);
|
||||
else
|
||||
len += scnprintf(p + len, size - len,
|
||||
|
@ -1,31 +0,0 @@
|
||||
From 8e809b241695252e397bf0d7fc5f36e115c38831 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marko <robert.marko@sartura.hr>
|
||||
Date: Fri, 5 Mar 2021 11:47:59 +0100
|
||||
Subject: [PATCH] mwlwifi: fix PCIe DT node null pointer dereference
|
||||
|
||||
pci_bus_to_OF_node() used to get the PCI bus DT node
|
||||
returns node if found or NULL if none is found.
|
||||
|
||||
Since the return of pci_bus_to_OF_node() is not checked in
|
||||
the DT node name print it will cause a null pointer
|
||||
dereference and crash the kernel.
|
||||
|
||||
So first check whether the node is not NULL and then print.
|
||||
|
||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
---
|
||||
hif/pcie/pcie.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/hif/pcie/pcie.c
|
||||
+++ b/hif/pcie/pcie.c
|
||||
@@ -685,7 +685,8 @@ static struct device_node *pcie_get_devi
|
||||
struct device_node *dev_node;
|
||||
|
||||
dev_node = pci_bus_to_OF_node(pcie_priv->pdev->bus);
|
||||
- wiphy_info(priv->hw->wiphy, "device node: %s\n", dev_node->full_name);
|
||||
+ if (dev_node)
|
||||
+ wiphy_info(priv->hw->wiphy, "device node: %s\n", dev_node->full_name);
|
||||
|
||||
return dev_node;
|
||||
}
|
@ -13,7 +13,7 @@
|
||||
|
||||
--- a/debugfs.c
|
||||
+++ b/debugfs.c
|
||||
@@ -498,9 +498,9 @@ static ssize_t mwl_debugfs_vif_read(stru
|
||||
@@ -550,9 +550,9 @@ static ssize_t mwl_debugfs_vif_read(stru
|
||||
switch (vif->type) {
|
||||
case NL80211_IFTYPE_AP:
|
||||
len += scnprintf(p + len, size - len, "type: ap\n");
|
||||
@ -26,7 +26,7 @@
|
||||
len += scnprintf(p + len, size - len,
|
||||
"ssid: %s\n", ssid);
|
||||
len += scnprintf(p + len, size - len,
|
||||
@@ -522,8 +522,8 @@ static ssize_t mwl_debugfs_vif_read(stru
|
||||
@@ -574,8 +574,8 @@ static ssize_t mwl_debugfs_vif_read(stru
|
||||
"type: unknown\n");
|
||||
break;
|
||||
}
|
||||
@ -37,7 +37,7 @@
|
||||
len += scnprintf(p + len, size - len,
|
||||
"channel: %d: width: %d\n",
|
||||
chan_def->chan->hw_value,
|
||||
@@ -596,18 +596,18 @@ static ssize_t mwl_debugfs_sta_read(stru
|
||||
@@ -648,18 +648,18 @@ static ssize_t mwl_debugfs_sta_read(stru
|
||||
sta_info->wds ? "true" : "false",
|
||||
sta_info->ba_hist.enable ? "enable" : "disable",
|
||||
sta_info->is_amsdu_allowed ? sta_info->amsdu_ctrl.cap : 0 ,
|
||||
@ -68,7 +68,7 @@
|
||||
sta->tdls,
|
||||
sta->tdls_initiator,
|
||||
sta->wme,
|
||||
@@ -1158,7 +1158,7 @@ static ssize_t mwl_debugfs_dfs_radar_wri
|
||||
@@ -1210,7 +1210,7 @@ static ssize_t mwl_debugfs_dfs_radar_wri
|
||||
struct mwl_priv *priv = (struct mwl_priv *)file->private_data;
|
||||
|
||||
wiphy_info(priv->hw->wiphy, "simulate radar detected\n");
|
||||
@ -127,7 +127,7 @@
|
||||
a_band = true;
|
||||
else
|
||||
return -EINVAL;
|
||||
@@ -2090,7 +2094,7 @@ int mwl_fwcmd_set_beacon(struct ieee8021
|
||||
@@ -2092,7 +2096,7 @@ int mwl_fwcmd_set_beacon(struct ieee8021
|
||||
if (mwl_fwcmd_set_wsc_ie(hw, b_inf->ie_wsc_len, b_inf->ie_wsc_ptr))
|
||||
goto err;
|
||||
|
||||
@ -136,7 +136,7 @@
|
||||
goto err;
|
||||
|
||||
if (b_inf->cap_info & WLAN_CAPABILITY_SPECTRUM_MGMT)
|
||||
@@ -2152,38 +2156,38 @@ int mwl_fwcmd_set_new_stn_add(struct iee
|
||||
@@ -2154,38 +2158,38 @@ int mwl_fwcmd_set_new_stn_add(struct iee
|
||||
ether_addr_copy(pcmd->mac_addr, sta->addr);
|
||||
|
||||
if (hw->conf.chandef.chan->band == NL80211_BAND_2GHZ)
|
||||
@ -189,7 +189,7 @@
|
||||
}
|
||||
|
||||
pcmd->is_qos_sta = sta->wme;
|
||||
@@ -2239,38 +2243,38 @@ int mwl_fwcmd_set_new_stn_add_sc4(struct
|
||||
@@ -2241,38 +2245,38 @@ int mwl_fwcmd_set_new_stn_add_sc4(struct
|
||||
ether_addr_copy(pcmd->mac_addr, sta->addr);
|
||||
|
||||
if (hw->conf.chandef.chan->band == NL80211_BAND_2GHZ)
|
||||
@ -242,7 +242,7 @@
|
||||
}
|
||||
|
||||
pcmd->is_qos_sta = sta->wme;
|
||||
@@ -2787,9 +2791,9 @@ int mwl_fwcmd_create_ba(struct ieee80211
|
||||
@@ -2789,9 +2793,9 @@ int mwl_fwcmd_create_ba(struct ieee80211
|
||||
pcmd->ba_info.create_params.flags = cpu_to_le32(ba_flags);
|
||||
pcmd->ba_info.create_params.queue_id = stream->idx;
|
||||
pcmd->ba_info.create_params.param_info =
|
||||
@ -254,7 +254,7 @@
|
||||
IEEE80211_HT_AMPDU_PARM_DENSITY);
|
||||
if (direction == BA_FLAG_DIRECTION_UP) {
|
||||
pcmd->ba_info.create_params.reset_seq_no = 0;
|
||||
@@ -2799,9 +2803,9 @@ int mwl_fwcmd_create_ba(struct ieee80211
|
||||
@@ -2801,9 +2805,9 @@ int mwl_fwcmd_create_ba(struct ieee80211
|
||||
pcmd->ba_info.create_params.current_seq = cpu_to_le16(0);
|
||||
}
|
||||
if (priv->chip_type == MWL8964 &&
|
||||
@ -268,16 +268,16 @@
|
||||
}
|
||||
--- a/hif/pcie/8864/tx.c
|
||||
+++ b/hif/pcie/8864/tx.c
|
||||
@@ -490,7 +490,7 @@ static void pcie_non_pfu_tx_done(struct
|
||||
} else
|
||||
memmove(dma_data->data - hdrlen, &dma_data->wh, hdrlen);
|
||||
skb_pull(done_skb, sizeof(*dma_data) - hdrlen);
|
||||
- ieee80211_tx_status(priv->hw, done_skb);
|
||||
+ ieee80211_tx_status_skb(priv->hw, done_skb);
|
||||
dev_kfree_skb_any(done_skb);
|
||||
done_skb = NULL;
|
||||
}
|
||||
@@ -743,7 +743,7 @@ void pcie_8864_tx_xmit(struct ieee80211_
|
||||
@@ -478,7 +478,7 @@ static void pcie_non_pfu_tx_done(struct
|
||||
} else
|
||||
memmove(dma_data->data - hdrlen, &dma_data->wh, hdrlen);
|
||||
skb_pull(done_skb, sizeof(*dma_data) - hdrlen);
|
||||
- ieee80211_tx_status(priv->hw, done_skb);
|
||||
+ ieee80211_tx_status_skb(priv->hw, done_skb);
|
||||
next:
|
||||
tx_hndl = tx_hndl->pnext;
|
||||
tx_desc = tx_hndl->pdesc;
|
||||
@@ -730,7 +730,7 @@ void pcie_8864_tx_xmit(struct ieee80211_
|
||||
index = SYSADPT_TX_WMM_QUEUES - index - 1;
|
||||
txpriority = index;
|
||||
|
||||
@ -286,7 +286,7 @@
|
||||
!(xmitcontrol & EAGLE_TXD_XMITCTRL_USE_MC_RATE) &&
|
||||
ieee80211_is_data_qos(wh->frame_control)) {
|
||||
tid = qos & 0xf;
|
||||
@@ -925,4 +925,4 @@ void pcie_8864_tx_del_sta_amsdu_pkts(str
|
||||
@@ -912,4 +912,4 @@ void pcie_8864_tx_del_sta_amsdu_pkts(str
|
||||
}
|
||||
}
|
||||
spin_unlock_bh(&sta_info->amsdu_lock);
|
||||
@ -313,7 +313,7 @@
|
||||
|
||||
bypass_ack:
|
||||
if (++tx_done_tail >= MAX_TX_RING_DONE_SIZE)
|
||||
@@ -596,13 +596,13 @@ void pcie_tx_xmit_ndp(struct ieee80211_h
|
||||
@@ -593,13 +593,13 @@ void pcie_tx_xmit_ndp(struct ieee80211_h
|
||||
ack_skb = skb_copy(skb, GFP_ATOMIC);
|
||||
ack_info = IEEE80211_SKB_CB(ack_skb);
|
||||
pcie_tx_prepare_info(priv, 0, ack_info);
|
||||
@ -340,16 +340,16 @@
|
||||
pcie_priv->txbd_ring_size);
|
||||
|
||||
for (num = 0; num < PCIE_MAX_TXRX_BD; num++) {
|
||||
@@ -444,7 +444,7 @@ static void pcie_pfu_tx_done(struct mwl_
|
||||
} else
|
||||
memmove(dma_data->data - hdrlen, &dma_data->wh, hdrlen);
|
||||
skb_pull(done_skb, sizeof(*pfu_dma) - hdrlen);
|
||||
- ieee80211_tx_status(priv->hw, done_skb);
|
||||
+ ieee80211_tx_status_skb(priv->hw, done_skb);
|
||||
}
|
||||
@@ -431,7 +431,7 @@ static void pcie_pfu_tx_done(struct mwl_
|
||||
} else
|
||||
memmove(dma_data->data - hdrlen, &dma_data->wh, hdrlen);
|
||||
skb_pull(done_skb, sizeof(*pfu_dma) - hdrlen);
|
||||
- ieee80211_tx_status(priv->hw, done_skb);
|
||||
+ ieee80211_tx_status_skb(priv->hw, done_skb);
|
||||
}
|
||||
next:
|
||||
@@ -694,7 +694,7 @@ void pcie_8997_tx_xmit(struct ieee80211_
|
||||
memset(data_buf, 0, sizeof(*data_buf));
|
||||
@@ -682,7 +682,7 @@ void pcie_8997_tx_xmit(struct ieee80211_
|
||||
index = SYSADPT_TX_WMM_QUEUES - index - 1;
|
||||
txpriority = index;
|
||||
|
||||
@ -358,7 +358,7 @@
|
||||
!(xmitcontrol & EAGLE_TXD_XMITCTRL_USE_MC_RATE) &&
|
||||
ieee80211_is_data_qos(wh->frame_control)) {
|
||||
tid = qos & 0xf;
|
||||
@@ -875,4 +875,4 @@ void pcie_8997_tx_del_sta_amsdu_pkts(str
|
||||
@@ -863,4 +863,4 @@ void pcie_8997_tx_del_sta_amsdu_pkts(str
|
||||
}
|
||||
}
|
||||
spin_unlock_bh(&sta_info->amsdu_lock);
|
||||
@ -376,7 +376,7 @@
|
||||
{
|
||||
mwl_fwcmd_radio_disable(hw);
|
||||
|
||||
@@ -368,15 +368,15 @@ static void mwl_mac80211_bss_info_change
|
||||
@@ -390,15 +390,15 @@ static void mwl_mac80211_bss_info_change
|
||||
}
|
||||
}
|
||||
|
||||
@ -395,7 +395,7 @@
|
||||
{
|
||||
struct mwl_priv *priv = hw->priv;
|
||||
struct mwl_vif *mwl_vif;
|
||||
@@ -426,8 +426,8 @@ static void mwl_mac80211_bss_info_change
|
||||
@@ -448,8 +448,8 @@ static void mwl_mac80211_bss_info_change
|
||||
if (changed & (BSS_CHANGED_BEACON_INT | BSS_CHANGED_BEACON)) {
|
||||
struct sk_buff *skb;
|
||||
|
||||
@ -406,7 +406,7 @@
|
||||
(!info->hidden_ssid)) {
|
||||
if (mwl_vif->broadcast_ssid != true) {
|
||||
mwl_fwcmd_broadcast_ssid_enable(hw, vif, true);
|
||||
@@ -441,7 +441,7 @@ static void mwl_mac80211_bss_info_change
|
||||
@@ -463,7 +463,7 @@ static void mwl_mac80211_bss_info_change
|
||||
}
|
||||
|
||||
if (!mwl_vif->set_beacon) {
|
||||
@ -415,7 +415,7 @@
|
||||
|
||||
if (skb) {
|
||||
mwl_fwcmd_set_beacon(hw, vif, skb->data, skb->len);
|
||||
@@ -458,7 +458,7 @@ static void mwl_mac80211_bss_info_change
|
||||
@@ -480,7 +480,7 @@ static void mwl_mac80211_bss_info_change
|
||||
static void mwl_mac80211_bss_info_changed(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *info,
|
||||
@ -424,7 +424,7 @@
|
||||
{
|
||||
switch (vif->type) {
|
||||
case NL80211_IFTYPE_AP:
|
||||
@@ -583,10 +583,10 @@ static int mwl_mac80211_sta_add(struct i
|
||||
@@ -605,10 +605,10 @@ static int mwl_mac80211_sta_add(struct i
|
||||
if (vif->type == NL80211_IFTYPE_MESH_POINT)
|
||||
sta_info->is_mesh_node = true;
|
||||
|
||||
@ -437,7 +437,7 @@
|
||||
sta_info->amsdu_ctrl.cap = MWL_AMSDU_SIZE_8K;
|
||||
sta_info->amsdu_ctrl.amsdu_allow_size = SYSADPT_AMSDU_8K_MAX_SIZE;
|
||||
}
|
||||
@@ -670,7 +670,7 @@ static int mwl_mac80211_sta_remove(struc
|
||||
@@ -692,7 +692,7 @@ static int mwl_mac80211_sta_remove(struc
|
||||
|
||||
static int mwl_mac80211_conf_tx(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
@ -446,7 +446,7 @@
|
||||
const struct ieee80211_tx_queue_params *params)
|
||||
{
|
||||
struct mwl_priv *priv = hw->priv;
|
||||
@@ -934,4 +934,9 @@ const struct ieee80211_ops mwl_mac80211_
|
||||
@@ -956,4 +956,9 @@ const struct ieee80211_ops mwl_mac80211_
|
||||
.pre_channel_switch = mwl_mac80211_chnl_switch,
|
||||
.sw_scan_start = mwl_mac80211_sw_scan_start,
|
||||
.sw_scan_complete = mwl_mac80211_sw_scan_complete,
|
||||
@ -502,16 +502,7 @@
|
||||
case TX_RATE_FORMAT_LEGACY:
|
||||
--- a/hif/pcie/pcie.c
|
||||
+++ b/hif/pcie/pcie.c
|
||||
@@ -546,7 +546,7 @@ static irqreturn_t pcie_isr_8864(struct
|
||||
|
||||
if (int_status & MACREG_A2HRIC_BIT_RADAR_DETECT) {
|
||||
wiphy_info(hw->wiphy, "radar detected by firmware\n");
|
||||
- ieee80211_radar_detected(hw);
|
||||
+ ieee80211_radar_detected(hw, NULL);
|
||||
}
|
||||
|
||||
if (int_status & MACREG_A2HRIC_BIT_CHAN_SWITCH) ieee80211_queue_work(hw, &priv->chnl_switch_handle);
|
||||
@@ -593,7 +593,7 @@ static irqreturn_t pcie_isr_8997(struct
|
||||
@@ -533,7 +533,7 @@ static irqreturn_t pcie_isr_8864(struct
|
||||
|
||||
if (int_status & MACREG_A2HRIC_BIT_RADAR_DETECT) {
|
||||
wiphy_info(hw->wiphy, "radar detected by firmware\n");
|
||||
@ -520,7 +511,16 @@
|
||||
}
|
||||
|
||||
if (int_status & MACREG_A2HRIC_BIT_CHAN_SWITCH)
|
||||
@@ -1071,7 +1071,7 @@ static irqreturn_t pcie_isr_ndp(struct i
|
||||
@@ -575,7 +575,7 @@ static irqreturn_t pcie_isr_8997(struct
|
||||
|
||||
if (int_status & MACREG_A2HRIC_BIT_RADAR_DETECT) {
|
||||
wiphy_info(hw->wiphy, "radar detected by firmware\n");
|
||||
- ieee80211_radar_detected(hw);
|
||||
+ ieee80211_radar_detected(hw, NULL);
|
||||
}
|
||||
|
||||
if (int_status & MACREG_A2HRIC_BIT_CHAN_SWITCH)
|
||||
@@ -1053,7 +1053,7 @@ static irqreturn_t pcie_isr_ndp(struct i
|
||||
|
||||
if (int_status & MACREG_A2HRIC_NEWDP_DFS) {
|
||||
wiphy_info(hw->wiphy, "radar detected by firmware\n");
|
||||
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=libpcap
|
||||
PKG_VERSION:=1.10.5
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://www.tcpdump.org/release/
|
||||
@ -22,7 +22,11 @@ PKG_CPE_ID:=cpe:/a:tcpdump:libpcap
|
||||
|
||||
PKG_ASLR_PIE_REGULAR:=1
|
||||
|
||||
PKG_CONFIG_DEPENDS := CONFIG_PACKAGE_rpcapd
|
||||
PKG_CONFIG_DEPENDS := \
|
||||
CONFIG_PACKAGE_rpcapd \
|
||||
CONFIG_PCAP_HAS_USB \
|
||||
CONFIG_PCAP_HAS_BT \
|
||||
CONFIG_PCAP_HAS_NETFILTER
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
@ -0,0 +1,28 @@
|
||||
From fcb2cbc3a306afcf7785a60a74dbea431e609d76 Mon Sep 17 00:00:00 2001
|
||||
From: Luiz Angelo Daros de Luca <luizluca@gmail.com>
|
||||
Date: Thu, 6 Jan 2022 15:51:54 -0300
|
||||
Subject: [PATCH 1/2] Add support for Realtek (Ethertype) DSA data
|
||||
|
||||
Realtek switchtag rtl4a (4 bytes long, protocol 0xA) and rtl8_4 (8 bytes
|
||||
long, protocol 0x04) are Ethertype DSA tags, inserted in the Ethernet
|
||||
header similar to an 802.1Q tag. Both shares the same Ethertype 0x8899
|
||||
as other Realtek proprietary protocols.
|
||||
|
||||
Realtek switchtag rtl8_4t is identical to rtl8_4 but positioned before
|
||||
the CRC, at the end of the Ethernet frame.
|
||||
---
|
||||
pcap-linux.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/pcap-linux.c
|
||||
+++ b/pcap-linux.c
|
||||
@@ -5281,6 +5281,9 @@ static struct dsa_proto {
|
||||
{ "brcm-prepend", DLT_DSA_TAG_BRCM_PREPEND },
|
||||
{ "dsa", DLT_DSA_TAG_DSA },
|
||||
{ "edsa", DLT_DSA_TAG_EDSA },
|
||||
+ { "rtl4a", DLT_EN10MB },
|
||||
+ { "rtl8_4", DLT_EN10MB },
|
||||
+ { "rtl8_4t", DLT_EN10MB },
|
||||
};
|
||||
|
||||
static int
|
@ -0,0 +1,322 @@
|
||||
From 7d298976beff0cce310fb53a430f82b53f43a394 Mon Sep 17 00:00:00 2001
|
||||
From: Guy Harris <gharris@sonic.net>
|
||||
Date: Fri, 14 Feb 2025 19:12:24 -0800
|
||||
Subject: [PATCH 2/2] Linux: handle other DSA tags.
|
||||
|
||||
Many of those entries need their own LINKTYPE_/DLT_? values, including
|
||||
tcpdump and Wireshark support for same, but at least this lets you see
|
||||
raw hex data from a capture.
|
||||
|
||||
Fixes #1367.
|
||||
|
||||
Supercedes #1451.
|
||||
---
|
||||
pcap-linux.c | 284 ++++++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 280 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/pcap-linux.c
|
||||
+++ b/pcap-linux.c
|
||||
@@ -5267,23 +5267,299 @@ iface_get_offload(pcap_t *handle _U_)
|
||||
}
|
||||
#endif /* SIOCETHTOOL */
|
||||
|
||||
+/*
|
||||
+ * As per
|
||||
+ *
|
||||
+ * https://www.kernel.org/doc/html/latest/networking/dsa/dsa.html#switch-tagging-protocols
|
||||
+ *
|
||||
+ * Type 1 means that the tag is prepended to the Ethernet packet.
|
||||
+ * LINKTYPE_ETHERNET/DLT_EN10MB doesn't work, as it would try to
|
||||
+ * dissect the tag data as the Ethernet header. These should get
|
||||
+ * their own LINKTYPE_DLT_ values.
|
||||
+ *
|
||||
+ * Type 2 means that the tag is inserted into the Ethernet header
|
||||
+ * after the source address and before the type/length field.
|
||||
+ *
|
||||
+ * Type 3 means that tag is a packet trailer. LINKTYPE_ETHERNET/DLT_EN10MB
|
||||
+ * works, unless the next-layer protocol has no length field of its own,
|
||||
+ * so that the tag might be treated as part of the payload. These should
|
||||
+ * get their own LINKTYPE_/DLT_ values.
|
||||
+ *
|
||||
+ * If you get an "unsupported DSA tag" error, please add the tag to here,
|
||||
+ * complete with a full comment indicating whether it's type 1, 2, or 3,
|
||||
+ * and, for type 2, indicating whether it has an Ethertype and, if so
|
||||
+ * what that type is, and whether it's registered with the IEEE or is
|
||||
+ * self-assigned. Also, point to *something* that indicates the format
|
||||
+ * of the tag.
|
||||
+ */
|
||||
static struct dsa_proto {
|
||||
const char *name;
|
||||
bpf_u_int32 linktype;
|
||||
} dsa_protos[] = {
|
||||
/*
|
||||
- * None is special and indicates that the interface does not have
|
||||
- * any tagging protocol configured, and is therefore a standard
|
||||
- * Ethernet interface.
|
||||
+ * Type 1. See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ar9331.c
|
||||
+ */
|
||||
+ { "ar9331", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, without an Ethertype at the beginning,
|
||||
+ * assigned a LINKTYPE_/DLT_ value.
|
||||
*/
|
||||
- { "none", DLT_EN10MB },
|
||||
{ "brcm", DLT_DSA_TAG_BRCM },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, with Ethertype 0x8874, assigned to Broadcom.
|
||||
+ *
|
||||
+ * This doies not require a LINKTYPE_/DLT_ value, it
|
||||
+ * just requires that Ethertype 0x8874 be dissected
|
||||
+ * properly.
|
||||
+ */
|
||||
+ { "brcm-legacy", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 1.
|
||||
+ */
|
||||
{ "brcm-prepend", DLT_DSA_TAG_BRCM_PREPEND },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, without an Etherype at he beginning,
|
||||
+ * assigned a LINKTYPE_/DLT_ value.
|
||||
+ */
|
||||
{ "dsa", DLT_DSA_TAG_DSA },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, with an Ethertype field, but without
|
||||
+ * an assigned Ethertype value that can be relied
|
||||
+ * on; assigned a LINKTYPE_/DLT_ value.
|
||||
+ */
|
||||
{ "edsa", DLT_DSA_TAG_EDSA },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 1, with different transmit and receive headers,
|
||||
+ * so can't really be handled well with the current
|
||||
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
|
||||
+ * to get the direction?
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_gswip.c
|
||||
+ */
|
||||
+ { "gswip", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 3. See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_hellcreek.c
|
||||
+ */
|
||||
+ { "hellcreek", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 3, with different transmit and receive headers,
|
||||
+ * so can't really be handled well with the current
|
||||
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
|
||||
+ * to get the direction?
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ksz.c#L102
|
||||
+ */
|
||||
+ { "ksz8795", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 3, with different transmit and receive headers,
|
||||
+ * so can't really be handled well with the current
|
||||
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
|
||||
+ * to get the direction?
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ksz.c#L160
|
||||
+ */
|
||||
+ { "ksz9477", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 3, with different transmit and receive headers,
|
||||
+ * so can't really be handled well with the current
|
||||
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
|
||||
+ * to get the direction?
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ksz.c#L341
|
||||
+ */
|
||||
+ { "ksz9893", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 3, with different transmit and receive headers,
|
||||
+ * so can't really be handled well with the current
|
||||
+ * libpcap API and with pcap files. Use DLT_LINUX_SLL,
|
||||
+ * to get the direction?
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ksz.c#L386
|
||||
+ */
|
||||
+ { "lan937x", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, with Ethertype 0x8100; the VID can be interpreted
|
||||
+ * as per
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_lan9303.c#L24
|
||||
+ *
|
||||
+ * so giving its own LINKTYPE_/DLT_ value would allow a
|
||||
+ * dissector to do so.
|
||||
+ */
|
||||
+ { "lan9303", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, without an Etherype at he beginning,
|
||||
+ * should be assigned a LINKTYPE_/DLT_ value.
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_mtk.c#L15
|
||||
+ */
|
||||
+ { "mtk", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * None is special and indicates that the interface does not have
|
||||
+ * any tagging protocol configured, and is therefore a standard
|
||||
+ * Ethernet interface.
|
||||
+ */
|
||||
+ { "none", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 1.
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ocelot.c
|
||||
+ */
|
||||
+ { "ocelot", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 1.
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_ocelot.c
|
||||
+ */
|
||||
+ { "seville", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, with Ethertype 0x8100; the VID can be interpreted
|
||||
+ * as per
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_8021q.c#L15
|
||||
+ *
|
||||
+ * so giving its own LINKTYPE_/DLT_ value would allow a
|
||||
+ * dissector to do so.
|
||||
+ */
|
||||
+ { "ocelot-8021q", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, without an Etherype at he beginning,
|
||||
+ * should be assigned a LINKTYPE_/DLT_ value.
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_qca.c
|
||||
+ */
|
||||
+ { "qca", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, with Ethertype 0x8899, assigned to Realtek;
|
||||
+ * they use it for several on-the-Ethernet protocols
|
||||
+ * as well, but there are fields that allow the two
|
||||
+ * tag formats, and all the protocols in question,
|
||||
+ * to be distinguiished from one another.
|
||||
+ *
|
||||
+ * This doies not require a LINKTYPE_/DLT_ value, it
|
||||
+ * just requires that Ethertype 0x8899 be dissected
|
||||
+ * properly.
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_rtl4_a.c
|
||||
+ *
|
||||
+ * http://realtek.info/pdf/rtl8306sd%28m%29_datasheet_1.1.pdf
|
||||
+ *
|
||||
+ * and various pages in tcpdump's print-realtek.c and Wireshark's
|
||||
+ * epan/dissectors/packet-realtek.c for the other protocols.
|
||||
+ */
|
||||
{ "rtl4a", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, with Ethertype 0x8899, assigned to Realtek;
|
||||
+ * see above.
|
||||
+ */
|
||||
{ "rtl8_4", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 3, with the same tag format as rtl8_4.
|
||||
+ */
|
||||
{ "rtl8_4t", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, with Ethertype 0xe001; that's probably
|
||||
+ * self-assigned, so this really should ahve its
|
||||
+ * own LINKTYPE_/DLT_ value.
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_rzn1_a5psw.c
|
||||
+ */
|
||||
+ { "a5psw", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, with Ethertype 0x8100 or the self-assigned
|
||||
+ * 0xdadb, so this really should ahve its own
|
||||
+ * LINKTYPE_/DLT_ value; that would also allow the
|
||||
+ * VID of the tag to be dissected as per
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_8021q.c#L15
|
||||
+ */
|
||||
+ { "sja1105", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type "none of the above", with both a header and trailer,
|
||||
+ * with different transmit and receive tags. Has
|
||||
+ * Ethertype 0xdadc, which is probably self-assigned.
|
||||
+ * This should really have its own LINKTYPE_/DLT_ value.
|
||||
+ */
|
||||
+ { "sja1110", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 3, as the name suggests.
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_trailer.c
|
||||
+ */
|
||||
+ { "trailer", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 2, with Ethertype 0x8100; the VID can be interpreted
|
||||
+ * as per
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_8021q.c#L15
|
||||
+ *
|
||||
+ * so giving its own LINKTYPE_/DLT_ value would allow a
|
||||
+ * dissector to do so.
|
||||
+ */
|
||||
+ { "vsc73xx-8021q", DLT_EN10MB },
|
||||
+
|
||||
+ /*
|
||||
+ * Type 3.
|
||||
+ *
|
||||
+ * See
|
||||
+ *
|
||||
+ * https://elixir.bootlin.com/linux/v6.13.2/source/net/dsa/tag_xrs700x.c
|
||||
+ */
|
||||
+ { "xrs700x", DLT_EN10MB },
|
||||
};
|
||||
|
||||
static int
|
@ -226,6 +226,14 @@ append_interface_name() {
|
||||
xappend "--interface-name=$1,$2"
|
||||
}
|
||||
|
||||
append_filter_rr() {
|
||||
xappend "--filter-rr=$1"
|
||||
}
|
||||
|
||||
append_cache_rr() {
|
||||
xappend "--cache-rr=$1"
|
||||
}
|
||||
|
||||
filter_dnsmasq() {
|
||||
local cfg="$1" func="$2" match_cfg="$3" found_cfg
|
||||
|
||||
@ -1000,8 +1008,8 @@ dnsmasq_start()
|
||||
# deprecate or remove filter-X in favor of filter-rr?
|
||||
append_bool "$cfg" filter_aaaa "--filter-AAAA"
|
||||
append_bool "$cfg" filter_a "--filter-A"
|
||||
append_parm "$cfg" filter_rr "--filter-rr"
|
||||
append_parm "$cfg" cache_rr "--cache-rr"
|
||||
config_list_foreach "$cfg" filter_rr append_filter_rr
|
||||
config_list_foreach "$cfg" cache_rr append_cache_rr
|
||||
|
||||
append_parm "$cfg" logfacility "--log-facility"
|
||||
config_get logfacility "$cfg" "logfacility"
|
||||
|
@ -751,7 +751,7 @@ SVN-Revision: 35130
|
||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -4262,14 +4262,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -4268,14 +4268,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
@ -89,7 +89,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
commit->event = kzalloc(sizeof(*commit->event),
|
||||
--- a/drivers/gpu/drm/i915/display/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/display/intel_display.c
|
||||
@@ -7280,6 +7280,19 @@ int intel_atomic_commit(struct drm_devic
|
||||
@@ -7298,6 +7298,19 @@ int intel_atomic_commit(struct drm_devic
|
||||
state->base.legacy_cursor_update = false;
|
||||
}
|
||||
|
||||
|
@ -17583,7 +17583,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
* For devices with more than one control interface, we assume the
|
||||
--- a/sound/usb/quirks.c
|
||||
+++ b/sound/usb/quirks.c
|
||||
@@ -2253,6 +2253,8 @@ static const struct usb_audio_quirk_flag
|
||||
@@ -2254,6 +2254,8 @@ static const struct usb_audio_quirk_flag
|
||||
QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
|
||||
QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
|
@ -134,7 +134,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
struct napi_struct napi_tx;
|
||||
|
||||
dma_addr_t rx_ring_dma;
|
||||
@@ -1285,9 +1304,15 @@ struct macb {
|
||||
@@ -1287,9 +1306,15 @@ struct macb {
|
||||
|
||||
u32 caps;
|
||||
unsigned int dma_burst_length;
|
||||
@ -222,7 +222,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
wmb(); // ensure softirq can see update
|
||||
}
|
||||
|
||||
@@ -2402,6 +2425,11 @@ static netdev_tx_t macb_start_xmit(struc
|
||||
@@ -2404,6 +2427,11 @@ static netdev_tx_t macb_start_xmit(struc
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
spin_lock_irq(&bp->lock);
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
|
||||
spin_unlock_irq(&bp->lock);
|
||||
|
||||
@@ -2776,6 +2804,37 @@ static void macb_configure_dma(struct ma
|
||||
@@ -2778,6 +2806,37 @@ static void macb_configure_dma(struct ma
|
||||
}
|
||||
}
|
||||
|
||||
@ -272,7 +272,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
static void macb_init_hw(struct macb *bp)
|
||||
{
|
||||
u32 config;
|
||||
@@ -2804,6 +2863,11 @@ static void macb_init_hw(struct macb *bp
|
||||
@@ -2806,6 +2865,11 @@ static void macb_init_hw(struct macb *bp
|
||||
if (bp->caps & MACB_CAPS_JUMBO)
|
||||
bp->rx_frm_len_mask = MACB_RX_JFRMLEN_MASK;
|
||||
|
||||
@ -284,7 +284,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
macb_configure_dma(bp);
|
||||
|
||||
/* Enable RX partial store and forward and set watermark */
|
||||
@@ -3165,6 +3229,52 @@ static void gem_get_ethtool_strings(stru
|
||||
@@ -3170,6 +3234,52 @@ static void gem_get_ethtool_strings(stru
|
||||
}
|
||||
}
|
||||
|
||||
@ -337,7 +337,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
static struct net_device_stats *macb_get_stats(struct net_device *dev)
|
||||
{
|
||||
struct macb *bp = netdev_priv(dev);
|
||||
@@ -3757,6 +3867,8 @@ static const struct ethtool_ops macb_eth
|
||||
@@ -3764,6 +3874,8 @@ static const struct ethtool_ops macb_eth
|
||||
};
|
||||
|
||||
static const struct ethtool_ops gem_ethtool_ops = {
|
||||
@ -346,7 +346,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
.get_regs_len = macb_get_regs_len,
|
||||
.get_regs = macb_get_regs,
|
||||
.get_wol = macb_get_wol,
|
||||
@@ -3766,6 +3878,8 @@ static const struct ethtool_ops gem_etht
|
||||
@@ -3773,6 +3885,8 @@ static const struct ethtool_ops gem_etht
|
||||
.get_ethtool_stats = gem_get_ethtool_stats,
|
||||
.get_strings = gem_get_ethtool_strings,
|
||||
.get_sset_count = gem_get_sset_count,
|
||||
@ -355,7 +355,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
.get_link_ksettings = macb_get_link_ksettings,
|
||||
.set_link_ksettings = macb_set_link_ksettings,
|
||||
.get_ringparam = macb_get_ringparam,
|
||||
@@ -5062,6 +5176,11 @@ static int macb_probe(struct platform_de
|
||||
@@ -5069,6 +5183,11 @@ static int macb_probe(struct platform_de
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -365,9 +365,9 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
+ bp->use_aw2b_fill = device_property_read_bool(&pdev->dev, "cdns,use-aw2b-fill");
|
||||
+
|
||||
spin_lock_init(&bp->lock);
|
||||
spin_lock_init(&bp->stats_lock);
|
||||
|
||||
/* setup capabilities */
|
||||
@@ -5117,6 +5236,21 @@ static int macb_probe(struct platform_de
|
||||
@@ -5125,6 +5244,21 @@ static int macb_probe(struct platform_de
|
||||
else
|
||||
bp->phy_interface = interface;
|
||||
|
||||
@ -389,7 +389,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
/* IP specific init */
|
||||
err = init(pdev);
|
||||
if (err)
|
||||
@@ -5193,6 +5327,19 @@ static int macb_remove(struct platform_d
|
||||
@@ -5201,6 +5335,19 @@ static int macb_remove(struct platform_d
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -409,7 +409,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
static int __maybe_unused macb_suspend(struct device *dev)
|
||||
{
|
||||
struct net_device *netdev = dev_get_drvdata(dev);
|
||||
@@ -5407,6 +5554,7 @@ static const struct dev_pm_ops macb_pm_o
|
||||
@@ -5415,6 +5562,7 @@ static const struct dev_pm_ops macb_pm_o
|
||||
static struct platform_driver macb_driver = {
|
||||
.probe = macb_probe,
|
||||
.remove = macb_remove,
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/net/ethernet/cadence/macb_main.c
|
||||
+++ b/drivers/net/ethernet/cadence/macb_main.c
|
||||
@@ -5023,6 +5023,17 @@ static const struct macb_config versal_c
|
||||
@@ -5030,6 +5030,17 @@ static const struct macb_config versal_c
|
||||
.usrio = &macb_default_usrio,
|
||||
};
|
||||
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
static const struct of_device_id macb_dt_ids[] = {
|
||||
{ .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config },
|
||||
{ .compatible = "cdns,macb" },
|
||||
@@ -5043,6 +5054,7 @@ static const struct of_device_id macb_dt
|
||||
@@ -5050,6 +5061,7 @@ static const struct of_device_id macb_dt
|
||||
{ .compatible = "microchip,mpfs-macb", .data = &mpfs_config },
|
||||
{ .compatible = "microchip,sama7g5-gem", .data = &sama7g5_gem_config },
|
||||
{ .compatible = "microchip,sama7g5-emac", .data = &sama7g5_emac_config },
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -4483,13 +4483,7 @@ static inline void ____napi_schedule(str
|
||||
@@ -4514,13 +4514,7 @@ static inline void ____napi_schedule(str
|
||||
*/
|
||||
thread = READ_ONCE(napi->thread);
|
||||
if (thread) {
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
wake_up_process(thread);
|
||||
return;
|
||||
}
|
||||
@@ -6645,8 +6639,6 @@ static int napi_poll(struct napi_struct
|
||||
@@ -6676,8 +6670,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 <pabeni@redhat.com>
|
||||
set_current_state(TASK_INTERRUPTIBLE);
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
@@ -6655,15 +6647,13 @@ static int napi_thread_wait(struct napi_
|
||||
@@ -6686,15 +6678,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().
|
||||
*/
|
||||
|
@ -108,7 +108,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
static inline void rps_lock_irqsave(struct softnet_data *sd,
|
||||
unsigned long *flags)
|
||||
{
|
||||
@@ -4451,6 +4477,7 @@ EXPORT_SYMBOL(__dev_direct_xmit);
|
||||
@@ -4482,6 +4508,7 @@ EXPORT_SYMBOL(__dev_direct_xmit);
|
||||
/*************************************************************************
|
||||
* Receiver routines
|
||||
*************************************************************************/
|
||||
@ -116,7 +116,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
int netdev_max_backlog __read_mostly = 1000;
|
||||
EXPORT_SYMBOL(netdev_max_backlog);
|
||||
@@ -4483,12 +4510,16 @@ static inline void ____napi_schedule(str
|
||||
@@ -4514,12 +4541,16 @@ static inline void ____napi_schedule(str
|
||||
*/
|
||||
thread = READ_ONCE(napi->thread);
|
||||
if (thread) {
|
||||
@ -133,7 +133,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
list_add_tail(&napi->poll_list, &sd->poll_list);
|
||||
WRITE_ONCE(napi->list_owner, smp_processor_id());
|
||||
/* If not called from net_rx_action()
|
||||
@@ -4734,6 +4765,11 @@ static void napi_schedule_rps(struct sof
|
||||
@@ -4765,6 +4796,11 @@ static void napi_schedule_rps(struct sof
|
||||
|
||||
#ifdef CONFIG_RPS
|
||||
if (sd != mysd) {
|
||||
@ -145,7 +145,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
sd->rps_ipi_next = mysd->rps_ipi_list;
|
||||
mysd->rps_ipi_list = sd;
|
||||
|
||||
@@ -5957,7 +5993,7 @@ static void net_rps_action_and_irq_enabl
|
||||
@@ -5988,7 +6024,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 <pabeni@redhat.com>
|
||||
sd->rps_ipi_list = NULL;
|
||||
|
||||
local_irq_enable();
|
||||
@@ -5972,7 +6008,7 @@ static void net_rps_action_and_irq_enabl
|
||||
@@ -6003,7 +6039,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 <pabeni@redhat.com>
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
@@ -6016,7 +6052,7 @@ static int process_backlog(struct napi_s
|
||||
@@ -6047,7 +6083,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 <pabeni@redhat.com>
|
||||
again = false;
|
||||
} else {
|
||||
skb_queue_splice_tail_init(&sd->input_pkt_queue,
|
||||
@@ -6682,43 +6718,48 @@ static void skb_defer_free_flush(struct
|
||||
@@ -6713,43 +6749,48 @@ static void skb_defer_free_flush(struct
|
||||
}
|
||||
}
|
||||
|
||||
@ -250,7 +250,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -11303,7 +11344,7 @@ static int dev_cpu_dead(unsigned int old
|
||||
@@ -11334,7 +11375,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 <pabeni@redhat.com>
|
||||
else
|
||||
____napi_schedule(sd, napi);
|
||||
}
|
||||
@@ -11311,12 +11352,14 @@ static int dev_cpu_dead(unsigned int old
|
||||
@@ -11342,12 +11383,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 <pabeni@redhat.com>
|
||||
|
||||
/* Process offline CPU's input_pkt_queue */
|
||||
while ((skb = __skb_dequeue(&oldsd->process_queue))) {
|
||||
@@ -11579,6 +11622,38 @@ static struct pernet_operations __net_in
|
||||
@@ -11610,6 +11653,38 @@ static struct pernet_operations __net_in
|
||||
*
|
||||
*/
|
||||
|
||||
@ -317,7 +317,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
/*
|
||||
* This is called single threaded during boot, so no need
|
||||
* to take the rtnl semaphore.
|
||||
@@ -11629,7 +11704,10 @@ static int __init net_dev_init(void)
|
||||
@@ -11660,7 +11735,10 @@ static int __init net_dev_init(void)
|
||||
init_gro_hash(&sd->backlog);
|
||||
sd->backlog.poll = process_backlog;
|
||||
sd->backlog.weight = weight_p;
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -3306,6 +3306,7 @@ static inline void dev_xmit_recursion_de
|
||||
@@ -3308,6 +3308,7 @@ static inline void dev_xmit_recursion_de
|
||||
__this_cpu_dec(softnet_data.xmit.recursion);
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
spin_unlock_irq(&sd->input_pkt_queue.lock);
|
||||
else if (!IS_ENABLED(CONFIG_PREEMPT_RT))
|
||||
local_irq_enable();
|
||||
@@ -4784,6 +4784,23 @@ static void napi_schedule_rps(struct sof
|
||||
@@ -4815,6 +4815,23 @@ static void napi_schedule_rps(struct sof
|
||||
__napi_schedule_irqoff(&mysd->backlog);
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_RPS) || use_backlog_threads())
|
||||
spin_unlock_irq(&sd->input_pkt_queue.lock);
|
||||
@@ -4789,12 +4789,12 @@ void kick_defer_list_purge(struct softne
|
||||
@@ -4820,12 +4820,12 @@ void kick_defer_list_purge(struct softne
|
||||
unsigned long flags;
|
||||
|
||||
if (use_backlog_threads()) {
|
||||
@ -82,7 +82,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
} else if (!cmpxchg(&sd->defer_ipi_scheduled, 0, 1)) {
|
||||
smp_call_function_single_async(cpu, &sd->defer_csd);
|
||||
@@ -4856,7 +4856,7 @@ static int enqueue_to_backlog(struct sk_
|
||||
@@ -4887,7 +4887,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 <pabeni@redhat.com>
|
||||
if (!netif_running(skb->dev))
|
||||
goto drop;
|
||||
qlen = skb_queue_len(&sd->input_pkt_queue);
|
||||
@@ -4865,7 +4865,7 @@ static int enqueue_to_backlog(struct sk_
|
||||
@@ -4896,7 +4896,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 <pabeni@redhat.com>
|
||||
return NET_RX_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -4880,7 +4880,7 @@ enqueue:
|
||||
@@ -4911,7 +4911,7 @@ enqueue:
|
||||
|
||||
drop:
|
||||
sd->dropped++;
|
||||
@ -109,7 +109,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
dev_core_stats_rx_dropped_inc(skb->dev);
|
||||
kfree_skb_reason(skb, reason);
|
||||
@@ -5911,7 +5911,7 @@ static void flush_backlog(struct work_st
|
||||
@@ -5942,7 +5942,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 <pabeni@redhat.com>
|
||||
skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
|
||||
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
|
||||
__skb_unlink(skb, &sd->input_pkt_queue);
|
||||
@@ -5919,7 +5919,7 @@ static void flush_backlog(struct work_st
|
||||
@@ -5950,7 +5950,7 @@ static void flush_backlog(struct work_st
|
||||
input_queue_head_incr(sd);
|
||||
}
|
||||
}
|
||||
@ -127,7 +127,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
|
||||
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
|
||||
@@ -5937,14 +5937,14 @@ static bool flush_required(int cpu)
|
||||
@@ -5968,14 +5968,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 <pabeni@redhat.com>
|
||||
|
||||
return do_flush;
|
||||
#endif
|
||||
@@ -6059,7 +6059,7 @@ static int process_backlog(struct napi_s
|
||||
@@ -6090,7 +6090,7 @@ static int process_backlog(struct napi_s
|
||||
|
||||
}
|
||||
|
||||
@ -153,7 +153,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
if (skb_queue_empty(&sd->input_pkt_queue)) {
|
||||
/*
|
||||
* Inline a custom version of __napi_complete().
|
||||
@@ -6075,7 +6075,7 @@ static int process_backlog(struct napi_s
|
||||
@@ -6106,7 +6106,7 @@ static int process_backlog(struct napi_s
|
||||
skb_queue_splice_tail_init(&sd->input_pkt_queue,
|
||||
&sd->process_queue);
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -9765,6 +9765,15 @@ static void netdev_sync_lower_features(s
|
||||
@@ -9796,6 +9796,15 @@ static void netdev_sync_lower_features(s
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
static netdev_features_t netdev_fix_features(struct net_device *dev,
|
||||
netdev_features_t features)
|
||||
{
|
||||
@@ -9846,15 +9855,9 @@ static netdev_features_t netdev_fix_feat
|
||||
@@ -9877,15 +9886,9 @@ static netdev_features_t netdev_fix_feat
|
||||
features &= ~NETIF_F_LRO;
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) {
|
||||
@@ -9862,6 +9865,11 @@ static netdev_features_t netdev_fix_feat
|
||||
@@ -9893,6 +9896,11 @@ static netdev_features_t netdev_fix_feat
|
||||
features &= ~NETIF_F_HW_TLS_RX;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -10672,6 +10672,8 @@ struct rtnl_link_stats64 *dev_get_stats(
|
||||
@@ -10703,6 +10703,8 @@ struct rtnl_link_stats64 *dev_get_stats(
|
||||
ops->ndo_get_stats64(dev, storage);
|
||||
} else if (ops->ndo_get_stats) {
|
||||
netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev));
|
||||
|
@ -37,7 +37,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -4567,6 +4567,9 @@ static inline void netif_addr_unlock_bh(
|
||||
@@ -4569,6 +4569,9 @@ static inline void netif_addr_unlock_bh(
|
||||
|
||||
void ether_setup(struct net_device *dev);
|
||||
|
||||
@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
unsigned char name_assign_type,
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -10359,25 +10359,12 @@ err_free_name:
|
||||
@@ -10390,25 +10390,12 @@ err_free_name:
|
||||
}
|
||||
EXPORT_SYMBOL(register_netdevice);
|
||||
|
||||
@ -79,7 +79,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* make sure we BUG if trying to hit standard
|
||||
* register/unregister code path
|
||||
*/
|
||||
@@ -10397,12 +10384,32 @@ int init_dummy_netdev(struct net_device
|
||||
@@ -10428,12 +10415,32 @@ int init_dummy_netdev(struct net_device
|
||||
* because users of this 'device' dont need to change
|
||||
* its refcount.
|
||||
*/
|
||||
@ -113,7 +113,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/**
|
||||
* register_netdev - register a network device
|
||||
* @dev: device to register
|
||||
@@ -10996,6 +11003,19 @@ void free_netdev(struct net_device *dev)
|
||||
@@ -11027,6 +11034,19 @@ void free_netdev(struct net_device *dev)
|
||||
EXPORT_SYMBOL(free_netdev);
|
||||
|
||||
/**
|
||||
|
@ -85,7 +85,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
/**
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -6612,7 +6612,7 @@ static int __napi_poll(struct napi_struc
|
||||
@@ -6643,7 +6643,7 @@ static int __napi_poll(struct napi_struc
|
||||
* accidentally calling ->poll() when NAPI is not scheduled.
|
||||
*/
|
||||
work = 0;
|
||||
|
@ -48,7 +48,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
mtd->nvmem = nvmem_register(&config);
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -940,7 +940,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
@@ -918,7 +918,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
nvmem->nkeepout = config->nkeepout;
|
||||
if (config->of_node)
|
||||
nvmem->dev.of_node = config->of_node;
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
switch (config->id) {
|
||||
--- a/include/linux/nvmem-provider.h
|
||||
+++ b/include/linux/nvmem-provider.h
|
||||
@@ -89,7 +89,6 @@ struct nvmem_cell_info {
|
||||
@@ -91,7 +91,6 @@ struct nvmem_cell_info {
|
||||
* @read_only: Device is read-only.
|
||||
* @root_only: Device is accessibly to root only.
|
||||
* @of_node: If given, this will be used instead of the parent's of_node.
|
||||
@ -67,7 +67,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
* @reg_read: Callback to read data.
|
||||
* @reg_write: Callback to write data.
|
||||
* @size: Device size.
|
||||
@@ -122,7 +121,6 @@ struct nvmem_config {
|
||||
@@ -126,7 +125,6 @@ struct nvmem_config {
|
||||
bool ignore_wp;
|
||||
struct nvmem_layout *layout;
|
||||
struct device_node *of_node;
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -846,14 +846,6 @@ static int nvmem_add_cells_from_layout(s
|
||||
@@ -823,14 +823,6 @@ static int nvmem_add_cells_from_layout(s
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_OF)
|
||||
@ -65,7 +65,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
#endif /* ifndef _LINUX_NVMEM_CONSUMER_H */
|
||||
--- a/include/linux/nvmem-provider.h
|
||||
+++ b/include/linux/nvmem-provider.h
|
||||
@@ -244,6 +244,27 @@ nvmem_layout_get_match_data(struct nvmem
|
||||
@@ -241,6 +241,27 @@ nvmem_layout_get_match_data(struct nvmem
|
||||
|
||||
#endif /* CONFIG_NVMEM */
|
||||
|
||||
|
@ -1,91 +0,0 @@
|
||||
From ec9c08a1cb8dc5e8e003f95f5f62de41dde235bb Mon Sep 17 00:00:00 2001
|
||||
From: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Date: Fri, 15 Dec 2023 11:15:29 +0000
|
||||
Subject: [PATCH] nvmem: Create a header for internal sharing
|
||||
|
||||
Before adding all the NVMEM layout bus infrastructure to the core, let's
|
||||
move the main nvmem_device structure in an internal header, only
|
||||
available to the core. This way all the additional code can be added in
|
||||
a dedicated file in order to keep the current core file tidy.
|
||||
|
||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20231215111536.316972-4-srinivas.kandagatla@linaro.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/nvmem/core.c | 24 +-----------------------
|
||||
drivers/nvmem/internals.h | 35 +++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 36 insertions(+), 23 deletions(-)
|
||||
create mode 100644 drivers/nvmem/internals.h
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -19,29 +19,7 @@
|
||||
#include <linux/of.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
-struct nvmem_device {
|
||||
- struct module *owner;
|
||||
- struct device dev;
|
||||
- int stride;
|
||||
- int word_size;
|
||||
- int id;
|
||||
- struct kref refcnt;
|
||||
- size_t size;
|
||||
- bool read_only;
|
||||
- bool root_only;
|
||||
- int flags;
|
||||
- enum nvmem_type type;
|
||||
- struct bin_attribute eeprom;
|
||||
- struct device *base_dev;
|
||||
- struct list_head cells;
|
||||
- const struct nvmem_keepout *keepout;
|
||||
- unsigned int nkeepout;
|
||||
- nvmem_reg_read_t reg_read;
|
||||
- nvmem_reg_write_t reg_write;
|
||||
- struct gpio_desc *wp_gpio;
|
||||
- struct nvmem_layout *layout;
|
||||
- void *priv;
|
||||
-};
|
||||
+#include "internals.h"
|
||||
|
||||
#define to_nvmem_device(d) container_of(d, struct nvmem_device, dev)
|
||||
|
||||
--- /dev/null
|
||||
+++ b/drivers/nvmem/internals.h
|
||||
@@ -0,0 +1,35 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+
|
||||
+#ifndef _LINUX_NVMEM_INTERNALS_H
|
||||
+#define _LINUX_NVMEM_INTERNALS_H
|
||||
+
|
||||
+#include <linux/device.h>
|
||||
+#include <linux/nvmem-consumer.h>
|
||||
+#include <linux/nvmem-provider.h>
|
||||
+
|
||||
+struct nvmem_device {
|
||||
+ struct module *owner;
|
||||
+ struct device dev;
|
||||
+ struct list_head node;
|
||||
+ int stride;
|
||||
+ int word_size;
|
||||
+ int id;
|
||||
+ struct kref refcnt;
|
||||
+ size_t size;
|
||||
+ bool read_only;
|
||||
+ bool root_only;
|
||||
+ int flags;
|
||||
+ enum nvmem_type type;
|
||||
+ struct bin_attribute eeprom;
|
||||
+ struct device *base_dev;
|
||||
+ struct list_head cells;
|
||||
+ const struct nvmem_keepout *keepout;
|
||||
+ unsigned int nkeepout;
|
||||
+ nvmem_reg_read_t reg_read;
|
||||
+ nvmem_reg_write_t reg_write;
|
||||
+ struct gpio_desc *wp_gpio;
|
||||
+ struct nvmem_layout *layout;
|
||||
+ void *priv;
|
||||
+};
|
||||
+
|
||||
+#endif /* ifndef _LINUX_NVMEM_INTERNALS_H */
|
@ -1,79 +0,0 @@
|
||||
From 1b7c298a4ecbc28cc6ee94005734bff55eb83d22 Mon Sep 17 00:00:00 2001
|
||||
From: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Date: Fri, 15 Dec 2023 11:15:30 +0000
|
||||
Subject: [PATCH] nvmem: Simplify the ->add_cells() hook
|
||||
|
||||
The layout entry is not used and will anyway be made useless by the new
|
||||
layout bus infrastructure coming next, so drop it. While at it, clarify
|
||||
the kdoc entry.
|
||||
|
||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20231215111536.316972-5-srinivas.kandagatla@linaro.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/nvmem/core.c | 2 +-
|
||||
drivers/nvmem/layouts/onie-tlv.c | 3 +--
|
||||
drivers/nvmem/layouts/sl28vpd.c | 3 +--
|
||||
include/linux/nvmem-provider.h | 8 +++-----
|
||||
4 files changed, 6 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -815,7 +815,7 @@ static int nvmem_add_cells_from_layout(s
|
||||
int ret;
|
||||
|
||||
if (layout && layout->add_cells) {
|
||||
- ret = layout->add_cells(&nvmem->dev, nvmem, layout);
|
||||
+ ret = layout->add_cells(&nvmem->dev, nvmem);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
--- a/drivers/nvmem/layouts/onie-tlv.c
|
||||
+++ b/drivers/nvmem/layouts/onie-tlv.c
|
||||
@@ -182,8 +182,7 @@ static bool onie_tlv_crc_is_valid(struct
|
||||
return true;
|
||||
}
|
||||
|
||||
-static int onie_tlv_parse_table(struct device *dev, struct nvmem_device *nvmem,
|
||||
- struct nvmem_layout *layout)
|
||||
+static int onie_tlv_parse_table(struct device *dev, struct nvmem_device *nvmem)
|
||||
{
|
||||
struct onie_tlv_hdr hdr;
|
||||
size_t table_len, data_len, hdr_len;
|
||||
--- a/drivers/nvmem/layouts/sl28vpd.c
|
||||
+++ b/drivers/nvmem/layouts/sl28vpd.c
|
||||
@@ -80,8 +80,7 @@ static int sl28vpd_v1_check_crc(struct d
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int sl28vpd_add_cells(struct device *dev, struct nvmem_device *nvmem,
|
||||
- struct nvmem_layout *layout)
|
||||
+static int sl28vpd_add_cells(struct device *dev, struct nvmem_device *nvmem)
|
||||
{
|
||||
const struct nvmem_cell_info *pinfo;
|
||||
struct nvmem_cell_info info = {0};
|
||||
--- a/include/linux/nvmem-provider.h
|
||||
+++ b/include/linux/nvmem-provider.h
|
||||
@@ -156,9 +156,8 @@ struct nvmem_cell_table {
|
||||
*
|
||||
* @name: Layout name.
|
||||
* @of_match_table: Open firmware match table.
|
||||
- * @add_cells: Will be called if a nvmem device is found which
|
||||
- * has this layout. The function will add layout
|
||||
- * specific cells with nvmem_add_one_cell().
|
||||
+ * @add_cells: Called to populate the layout using
|
||||
+ * nvmem_add_one_cell().
|
||||
* @fixup_cell_info: Will be called before a cell is added. Can be
|
||||
* used to modify the nvmem_cell_info.
|
||||
* @owner: Pointer to struct module.
|
||||
@@ -172,8 +171,7 @@ struct nvmem_cell_table {
|
||||
struct nvmem_layout {
|
||||
const char *name;
|
||||
const struct of_device_id *of_match_table;
|
||||
- int (*add_cells)(struct device *dev, struct nvmem_device *nvmem,
|
||||
- struct nvmem_layout *layout);
|
||||
+ int (*add_cells)(struct device *dev, struct nvmem_device *nvmem);
|
||||
void (*fixup_cell_info)(struct nvmem_device *nvmem,
|
||||
struct nvmem_layout *layout,
|
||||
struct nvmem_cell_info *cell);
|
@ -1,169 +0,0 @@
|
||||
From 1172460e716784ac7e1049a537bdca8edbf97360 Mon Sep 17 00:00:00 2001
|
||||
From: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Date: Fri, 15 Dec 2023 11:15:31 +0000
|
||||
Subject: [PATCH] nvmem: Move and rename ->fixup_cell_info()
|
||||
|
||||
This hook is meant to be used by any provider and instantiating a layout
|
||||
just for this is useless. Let's instead move this hook to the nvmem
|
||||
device and add it to the config structure to be easily shared by the
|
||||
providers.
|
||||
|
||||
While at moving this hook, rename it ->fixup_dt_cell_info() to clarify
|
||||
its main intended purpose.
|
||||
|
||||
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
|
||||
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
Link: https://lore.kernel.org/r/20231215111536.316972-6-srinivas.kandagatla@linaro.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/nvmem/core.c | 6 +++---
|
||||
drivers/nvmem/imx-ocotp.c | 11 +++--------
|
||||
drivers/nvmem/internals.h | 2 ++
|
||||
drivers/nvmem/mtk-efuse.c | 11 +++--------
|
||||
include/linux/nvmem-provider.h | 9 ++++-----
|
||||
5 files changed, 15 insertions(+), 24 deletions(-)
|
||||
|
||||
--- a/drivers/nvmem/core.c
|
||||
+++ b/drivers/nvmem/core.c
|
||||
@@ -674,7 +674,6 @@ static int nvmem_validate_keepouts(struc
|
||||
|
||||
static int nvmem_add_cells_from_dt(struct nvmem_device *nvmem, struct device_node *np)
|
||||
{
|
||||
- struct nvmem_layout *layout = nvmem->layout;
|
||||
struct device *dev = &nvmem->dev;
|
||||
struct device_node *child;
|
||||
const __be32 *addr;
|
||||
@@ -704,8 +703,8 @@ static int nvmem_add_cells_from_dt(struc
|
||||
|
||||
info.np = of_node_get(child);
|
||||
|
||||
- if (layout && layout->fixup_cell_info)
|
||||
- layout->fixup_cell_info(nvmem, layout, &info);
|
||||
+ if (nvmem->fixup_dt_cell_info)
|
||||
+ nvmem->fixup_dt_cell_info(nvmem, &info);
|
||||
|
||||
ret = nvmem_add_one_cell(nvmem, &info);
|
||||
kfree(info.name);
|
||||
@@ -894,6 +893,7 @@ struct nvmem_device *nvmem_register(cons
|
||||
|
||||
kref_init(&nvmem->refcnt);
|
||||
INIT_LIST_HEAD(&nvmem->cells);
|
||||
+ nvmem->fixup_dt_cell_info = config->fixup_dt_cell_info;
|
||||
|
||||
nvmem->owner = config->owner;
|
||||
if (!nvmem->owner && config->dev->driver)
|
||||
--- a/drivers/nvmem/imx-ocotp.c
|
||||
+++ b/drivers/nvmem/imx-ocotp.c
|
||||
@@ -583,17 +583,12 @@ static const struct of_device_id imx_oco
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, imx_ocotp_dt_ids);
|
||||
|
||||
-static void imx_ocotp_fixup_cell_info(struct nvmem_device *nvmem,
|
||||
- struct nvmem_layout *layout,
|
||||
- struct nvmem_cell_info *cell)
|
||||
+static void imx_ocotp_fixup_dt_cell_info(struct nvmem_device *nvmem,
|
||||
+ struct nvmem_cell_info *cell)
|
||||
{
|
||||
cell->read_post_process = imx_ocotp_cell_pp;
|
||||
}
|
||||
|
||||
-static struct nvmem_layout imx_ocotp_layout = {
|
||||
- .fixup_cell_info = imx_ocotp_fixup_cell_info,
|
||||
-};
|
||||
-
|
||||
static int imx_ocotp_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
@@ -619,7 +614,7 @@ static int imx_ocotp_probe(struct platfo
|
||||
imx_ocotp_nvmem_config.size = 4 * priv->params->nregs;
|
||||
imx_ocotp_nvmem_config.dev = dev;
|
||||
imx_ocotp_nvmem_config.priv = priv;
|
||||
- imx_ocotp_nvmem_config.layout = &imx_ocotp_layout;
|
||||
+ imx_ocotp_nvmem_config.fixup_dt_cell_info = &imx_ocotp_fixup_dt_cell_info;
|
||||
|
||||
priv->config = &imx_ocotp_nvmem_config;
|
||||
|
||||
--- a/drivers/nvmem/internals.h
|
||||
+++ b/drivers/nvmem/internals.h
|
||||
@@ -23,6 +23,8 @@ struct nvmem_device {
|
||||
struct bin_attribute eeprom;
|
||||
struct device *base_dev;
|
||||
struct list_head cells;
|
||||
+ void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,
|
||||
+ struct nvmem_cell_info *cell);
|
||||
const struct nvmem_keepout *keepout;
|
||||
unsigned int nkeepout;
|
||||
nvmem_reg_read_t reg_read;
|
||||
--- a/drivers/nvmem/mtk-efuse.c
|
||||
+++ b/drivers/nvmem/mtk-efuse.c
|
||||
@@ -45,9 +45,8 @@ static int mtk_efuse_gpu_speedbin_pp(voi
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static void mtk_efuse_fixup_cell_info(struct nvmem_device *nvmem,
|
||||
- struct nvmem_layout *layout,
|
||||
- struct nvmem_cell_info *cell)
|
||||
+static void mtk_efuse_fixup_dt_cell_info(struct nvmem_device *nvmem,
|
||||
+ struct nvmem_cell_info *cell)
|
||||
{
|
||||
size_t sz = strlen(cell->name);
|
||||
|
||||
@@ -61,10 +60,6 @@ static void mtk_efuse_fixup_cell_info(st
|
||||
cell->read_post_process = mtk_efuse_gpu_speedbin_pp;
|
||||
}
|
||||
|
||||
-static struct nvmem_layout mtk_efuse_layout = {
|
||||
- .fixup_cell_info = mtk_efuse_fixup_cell_info,
|
||||
-};
|
||||
-
|
||||
static int mtk_efuse_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
@@ -91,7 +86,7 @@ static int mtk_efuse_probe(struct platfo
|
||||
econfig.priv = priv;
|
||||
econfig.dev = dev;
|
||||
if (pdata->uses_post_processing)
|
||||
- econfig.layout = &mtk_efuse_layout;
|
||||
+ econfig.fixup_dt_cell_info = &mtk_efuse_fixup_dt_cell_info;
|
||||
nvmem = devm_nvmem_register(dev, &econfig);
|
||||
|
||||
return PTR_ERR_OR_ZERO(nvmem);
|
||||
--- a/include/linux/nvmem-provider.h
|
||||
+++ b/include/linux/nvmem-provider.h
|
||||
@@ -83,6 +83,8 @@ struct nvmem_cell_info {
|
||||
* @cells: Optional array of pre-defined NVMEM cells.
|
||||
* @ncells: Number of elements in cells.
|
||||
* @add_legacy_fixed_of_cells: Read fixed NVMEM cells from old OF syntax.
|
||||
+ * @fixup_dt_cell_info: Will be called before a cell is added. Can be
|
||||
+ * used to modify the nvmem_cell_info.
|
||||
* @keepout: Optional array of keepout ranges (sorted ascending by start).
|
||||
* @nkeepout: Number of elements in the keepout array.
|
||||
* @type: Type of the nvmem storage
|
||||
@@ -113,6 +115,8 @@ struct nvmem_config {
|
||||
const struct nvmem_cell_info *cells;
|
||||
int ncells;
|
||||
bool add_legacy_fixed_of_cells;
|
||||
+ void (*fixup_dt_cell_info)(struct nvmem_device *nvmem,
|
||||
+ struct nvmem_cell_info *cell);
|
||||
const struct nvmem_keepout *keepout;
|
||||
unsigned int nkeepout;
|
||||
enum nvmem_type type;
|
||||
@@ -158,8 +162,6 @@ struct nvmem_cell_table {
|
||||
* @of_match_table: Open firmware match table.
|
||||
* @add_cells: Called to populate the layout using
|
||||
* nvmem_add_one_cell().
|
||||
- * @fixup_cell_info: Will be called before a cell is added. Can be
|
||||
- * used to modify the nvmem_cell_info.
|
||||
* @owner: Pointer to struct module.
|
||||
* @node: List node.
|
||||
*
|
||||
@@ -172,9 +174,6 @@ struct nvmem_layout {
|
||||
const char *name;
|
||||
const struct of_device_id *of_match_table;
|
||||
int (*add_cells)(struct device *dev, struct nvmem_device *nvmem);
|
||||
- void (*fixup_cell_info)(struct nvmem_device *nvmem,
|
||||
- struct nvmem_layout *layout,
|
||||
- struct nvmem_cell_info *cell);
|
||||
|
||||
/* private */
|
||||
struct module *owner;
|
@ -40,7 +40,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
}
|
||||
|
||||
memcpy(val, ((u8 *)p) + skipbytes, bytes);
|
||||
@@ -157,8 +161,30 @@ static const struct ocotp_devtype_data i
|
||||
@@ -179,8 +183,30 @@ static const struct ocotp_devtype_data i
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -23,7 +23,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -10989,7 +10989,8 @@ void free_netdev(struct net_device *dev)
|
||||
@@ -11020,7 +11020,8 @@ void free_netdev(struct net_device *dev)
|
||||
dev->xdp_bulkq = NULL;
|
||||
|
||||
/* Compatibility with error handling in drivers */
|
||||
|
@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
help
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -3597,6 +3597,11 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -3628,6 +3628,11 @@ static int xmit_one(struct sk_buff *skb,
|
||||
if (dev_nit_active(dev))
|
||||
dev_queue_xmit_nit(skb, dev);
|
||||
|
||||
|
@ -31,7 +31,7 @@ Signe-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static inline void gro_normal_list(struct napi_struct *napi)
|
||||
--- a/include/net/tcp.h
|
||||
+++ b/include/net/tcp.h
|
||||
@@ -2084,7 +2084,10 @@ void tcp_v4_destroy_sock(struct sock *sk
|
||||
@@ -2101,7 +2101,10 @@ void tcp_v4_destroy_sock(struct sock *sk
|
||||
|
||||
struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
|
||||
netdev_features_t features);
|
||||
|
@ -57,7 +57,7 @@ Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||||
static int __qcom_scm_set_dload_mode(struct device *dev, bool enable)
|
||||
{
|
||||
struct qcom_scm_desc desc = {
|
||||
@@ -1473,6 +1496,13 @@ static int qcom_scm_probe(struct platfor
|
||||
@@ -1474,6 +1497,13 @@ static int qcom_scm_probe(struct platfor
|
||||
|
||||
__get_convention();
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
|
||||
--- a/drivers/firmware/qcom_scm.c
|
||||
+++ b/drivers/firmware/qcom_scm.c
|
||||
@@ -1528,7 +1528,8 @@ static int qcom_scm_probe(struct platfor
|
||||
@@ -1529,7 +1529,8 @@ static int qcom_scm_probe(struct platfor
|
||||
static void qcom_scm_shutdown(struct platform_device *pdev)
|
||||
{
|
||||
/* Clean shutdown, disable download mode to allow normal restart */
|
||||
|
189
target/linux/ramips/dts/mt7620a_hongdian_h8922-v30.dts
Normal file
189
target/linux/ramips/dts/mt7620a_hongdian_h8922-v30.dts
Normal file
@ -0,0 +1,189 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "mt7620a.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
compatible = "hongdian,h8922-v30", "ralink,mt7620a-soc";
|
||||
model = "Hongdian H8922 v30";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_sys;
|
||||
led-failsafe = &led_sys;
|
||||
led-running = &led_sys;
|
||||
led-upgrade = &led_sys;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,115200";
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led-wps {
|
||||
gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WPS;
|
||||
};
|
||||
|
||||
led-rf-2 {
|
||||
gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = "rf";
|
||||
function-enumerator = <2>;
|
||||
};
|
||||
|
||||
led_sys: led-sys {
|
||||
gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_POWER;
|
||||
default-state = "on";
|
||||
};
|
||||
|
||||
led-net-1 {
|
||||
gpios = <&gpio2 26 GPIO_ACTIVE_LOW>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_MOBILE;
|
||||
function-enumerator = <1>;
|
||||
};
|
||||
|
||||
led-rf-1 {
|
||||
gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = "rf";
|
||||
function-enumerator = <1>;
|
||||
};
|
||||
|
||||
led-net-2 {
|
||||
gpios = <&gpio2 31 GPIO_ACTIVE_LOW>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_MOBILE;
|
||||
function-enumerator = <2>;
|
||||
};
|
||||
|
||||
led-wlan {
|
||||
gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
linux,default-trigger = "phy0tpt";
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
watchdog {
|
||||
compatible = "linux,wdt-gpio";
|
||||
|
||||
gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;
|
||||
hw_algo = "toggle";
|
||||
hw_margin_ms = <600>;
|
||||
always-running;
|
||||
};
|
||||
};
|
||||
|
||||
&watchdog {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <50000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x0 0x2f000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@2f000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x2f000 0x1000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@30000 {
|
||||
compatible = "denx,uimage";
|
||||
label = "firmware";
|
||||
reg = <0x30000 0xffd000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&state_default {
|
||||
gpio {
|
||||
groups = "wled", "rgmii1", "rgmii2";
|
||||
function = "gpio";
|
||||
};
|
||||
};
|
||||
|
||||
ðernet {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&ephy_pins>;
|
||||
|
||||
mediatek,portmap = "llllw";
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wmac {
|
||||
ralink,eeprom-data = <0x20760501 0x000c4376 0x2058ffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0x000c4376 0x2077000c 0x43762066 0x220c0000 0xffffb701 0x5577a8aa
|
||||
0x8c88ffff 0x0a000000 0x00000000 0x0000ffff 0xffff0a0a 0x0a0a0808 0x08080808 0x08080808
|
||||
0x0e0e0e0e 0x0e0e0e0e 0x0e0e0e0e 0x0e0e80ff 0xffff80ff 0xffff0000 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0x20ffffff 0xffffffff 0xffffffff 0xffff0606
|
||||
0x06060402 0x06060400 0x06060400 0x07070400 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
||||
0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff>;
|
||||
};
|
||||
|
||||
&ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ohci {
|
||||
status = "okay";
|
||||
};
|
201
target/linux/ramips/dts/mt7621_cudy_m1300-v2.dts
Normal file
201
target/linux/ramips/dts/mt7621_cudy_m1300-v2.dts
Normal file
@ -0,0 +1,201 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "mt7621.dtsi"
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
compatible = "cudy,m1300-v2", "mediatek,mt7621-soc";
|
||||
model = "Cudy M1300 v2";
|
||||
};
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
led-boot = &led_status_white;
|
||||
led-failsafe = &led_status_red;
|
||||
led-running = &led_status_white;
|
||||
led-upgrade = &led_status_red;
|
||||
label-mac-device = &gmac0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyS0,115200";
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_status_red: led-status-red {
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led_status_white: led-status-white {
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <10000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x0 0x30000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@30000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x30000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@40000 {
|
||||
label = "factory";
|
||||
reg = <0x40000 0x10000>;
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
eeprom_factory_0: eeprom@0 {
|
||||
reg = <0x0 0x400>;
|
||||
};
|
||||
|
||||
eeprom_factory_8000: eeprom@8000 {
|
||||
reg = <0x8000 0x4da8>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
partition@50000 {
|
||||
compatible = "denx,uimage";
|
||||
label = "firmware";
|
||||
reg = <0x50000 0xf80000>;
|
||||
};
|
||||
|
||||
partition@fd0000 {
|
||||
label = "debug";
|
||||
reg = <0xfd0000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@fe0000 {
|
||||
label = "backup";
|
||||
reg = <0xfe0000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@ff0000 {
|
||||
label = "bdinfo";
|
||||
reg = <0xff0000 0x10000>;
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_bdinfo_de00: macaddr@de00 {
|
||||
compatible = "mac-base";
|
||||
reg = <0xde00 0x6>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
wifi@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
nvmem-cells = <&eeprom_factory_0>, <&macaddr_bdinfo_de00 0>;
|
||||
nvmem-cell-names = "eeprom", "mac-address";
|
||||
ieee80211-freq-limit = <2400000 2500000>;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
wifi@0,0 {
|
||||
compatible = "mediatek,mt76";
|
||||
reg = <0x0000 0 0 0 0>;
|
||||
nvmem-cells = <&eeprom_factory_8000>, <&macaddr_bdinfo_de00 2>;
|
||||
nvmem-cell-names = "eeprom", "mac-address";
|
||||
ieee80211-freq-limit = <5000000 6000000>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
&gmac0 {
|
||||
nvmem-cells = <&macaddr_bdinfo_de00 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
status = "okay";
|
||||
label = "wan";
|
||||
phy-handle = <ðphy4>;
|
||||
|
||||
nvmem-cells = <&macaddr_bdinfo_de00 2>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
ðphy4 {
|
||||
/delete-property/ interrupts;
|
||||
};
|
||||
|
||||
&switch0 {
|
||||
ports {
|
||||
port@3 {
|
||||
status = "okay";
|
||||
label = "lan";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&state_default {
|
||||
gpio {
|
||||
groups = "wdt", "jtag";
|
||||
function = "gpio";
|
||||
};
|
||||
};
|
@ -1,131 +1,23 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "mt7621.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "mt7621_genexis_pulse-ex400-common.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "dna,valokuitu-plus-ex400", "mediatek,mt7621-soc";
|
||||
model = "DNA Valokuitu Plus EX400";
|
||||
|
||||
aliases {
|
||||
ethernet0 = &gmac0;
|
||||
label-mac-device = &gmac0;
|
||||
led-boot = &led_status_red;
|
||||
led-failsafe = &led_status_red;
|
||||
led-running = &led_status_green;
|
||||
led-upgrade = &led_update_green;
|
||||
};
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs-override = "console=ttyS0,115200 rootfstype=squashfs,jffs2";
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_status_green: led-0 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led_status_red: led-1 {
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&leds {
|
||||
led_update_green: led-2 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_PROGRAMMING;
|
||||
gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&nand {
|
||||
status = "okay";
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
reg = <0x00 0x100000>;
|
||||
label = "uboot";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
reg = <0x100000 0xff00000>;
|
||||
label = "ubi";
|
||||
compatible = "linux,ubi";
|
||||
|
||||
volumes {
|
||||
ubi-volume-env1 {
|
||||
volname = "env1";
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "u-boot,env-redundant-count";
|
||||
|
||||
ethaddr: ethaddr {
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
label = "wan";
|
||||
phy-handle = <ðphy0>;
|
||||
nvmem-cells = <ðaddr 1>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ðphy0 {
|
||||
/delete-property/ interrupts;
|
||||
};
|
||||
|
||||
&state_default {
|
||||
gpio {
|
||||
groups = "uart2", "uart3";
|
||||
function = "gpio";
|
||||
};
|
||||
};
|
||||
|
||||
&switch0 {
|
||||
ports {
|
||||
port@1 {
|
||||
label = "lan";
|
||||
nvmem-cells = <ðaddr 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
118
target/linux/ramips/dts/mt7621_genexis_pulse-ex400-common.dtsi
Normal file
118
target/linux/ramips/dts/mt7621_genexis_pulse-ex400-common.dtsi
Normal file
@ -0,0 +1,118 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "mt7621.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
ethernet0 = &gmac0;
|
||||
label-mac-device = &gmac0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs-override = "console=ttyS0,115200 rootfstype=squashfs,jffs2";
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
leds: leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_status_green: led-0 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led_status_red: led-1 {
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&nand {
|
||||
status = "okay";
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
reg = <0x00 0x100000>;
|
||||
label = "uboot";
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
reg = <0x100000 0xff00000>;
|
||||
label = "ubi";
|
||||
compatible = "linux,ubi";
|
||||
|
||||
volumes {
|
||||
ubi-volume-env1 {
|
||||
volname = "env1";
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "u-boot,env-redundant-count";
|
||||
|
||||
ethaddr: ethaddr {
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
label = "wan";
|
||||
phy-handle = <ðphy0>;
|
||||
nvmem-cells = <ðaddr 1>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ðphy0 {
|
||||
/delete-property/ interrupts;
|
||||
};
|
||||
|
||||
&state_default {
|
||||
gpio {
|
||||
groups = "uart2", "uart3";
|
||||
function = "gpio";
|
||||
};
|
||||
};
|
||||
|
||||
&switch0 {
|
||||
ports {
|
||||
port@1 {
|
||||
label = "lan";
|
||||
nvmem-cells = <ðaddr 0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
23
target/linux/ramips/dts/mt7621_genexis_pulse-ex400.dts
Normal file
23
target/linux/ramips/dts/mt7621_genexis_pulse-ex400.dts
Normal file
@ -0,0 +1,23 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "mt7621_genexis_pulse-ex400-common.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "genexis,pulse-ex400", "mediatek,mt7621-soc";
|
||||
model = "Genexis/Inteno Pulse EX400";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_status_red;
|
||||
led-failsafe = &led_status_red;
|
||||
led-running = &led_status_green;
|
||||
led-upgrade = &led_status_red;
|
||||
};
|
||||
};
|
||||
|
||||
&leds {
|
||||
led_wps_green: led-2 {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WPS;
|
||||
gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
@ -615,6 +615,18 @@ define Device/hnet_c108
|
||||
endef
|
||||
TARGET_DEVICES += hnet_c108
|
||||
|
||||
define Device/hongdian_h8922-v30
|
||||
SOC := mt7620a
|
||||
IMAGE_SIZE := 15808k
|
||||
DEVICE_VENDOR := Hongdian
|
||||
DEVICE_MODEL := H8922
|
||||
DEVICE_VARIANT := v30
|
||||
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi uboot-envtools
|
||||
IMAGES += rootfs.bin
|
||||
IMAGE/rootfs.bin := append-rootfs | check-size 10560k
|
||||
endef
|
||||
TARGET_DEVICES += hongdian_h8922-v30
|
||||
|
||||
define Device/humax_e2
|
||||
SOC := mt7620a
|
||||
IMAGE_SIZE := 7744k
|
||||
|
@ -51,7 +51,7 @@ define Build/arcadyan-trx
|
||||
rm $@.hsqs $@.tail
|
||||
endef
|
||||
|
||||
define Build/dna-header
|
||||
define Build/inteno-y3-header
|
||||
BC='$(STAGING_DIR_HOST)/bin/bc' ;\
|
||||
ubifsofs="1024" ;\
|
||||
ubifs="$$(stat -c%s $@)" ;\
|
||||
@ -67,12 +67,12 @@ define Build/dna-header
|
||||
echo "IntenoIopY" > $@.tmp ;\
|
||||
echo "version 5" >> $@.tmp ;\
|
||||
echo "integrity MD5SUM" >> $@.tmp ;\
|
||||
echo "board EX400" >> $@.tmp ;\
|
||||
echo "chip 7621" >> $@.tmp ;\
|
||||
echo "arch all mipsel_1004kc" >> $@.tmp ;\
|
||||
echo "model EX400" >> $@.tmp ;\
|
||||
echo "release EX400-X-DNA-4.3.6.100-R-210518_0935" >> $@.tmp ;\
|
||||
echo "customer DNA" >> $@.tmp ;\
|
||||
echo "board $(word 1,$(1))" >> $@.tmp ;\
|
||||
echo "chip $(patsubst mt%,%,$(SOC:bcm%=%))" >> $@.tmp ;\
|
||||
echo "arch all $(CONFIG_TARGET_ARCH_PACKAGES)" >> $@.tmp ;\
|
||||
echo "model $(word 1,$(1))" >> $@.tmp ;\
|
||||
echo "release $(DEVICE_IMG_PREFIX)" >> $@.tmp ;\
|
||||
echo "customer $(if $(CONFIG_VERSION_DIST),$(CONFIG_VERSION_DIST),OpenWrt)" >> $@.tmp ;\
|
||||
echo "ubifsofs $${ubifsofs}" >> $@.tmp ;\
|
||||
echo "ubifs $${ubifs}" >> $@.tmp ;\
|
||||
echo "pkginfoofs $${pkginfoofs}" >> $@.tmp ;\
|
||||
@ -91,7 +91,7 @@ define Build/dna-header
|
||||
mv $@.tmp $@
|
||||
endef
|
||||
|
||||
define Build/dna-bootfs
|
||||
define Build/inteno-bootfs
|
||||
mkdir -p $@.ubifs-dir/boot
|
||||
|
||||
# populate the boot fs with the dtb and the kernel image
|
||||
@ -686,6 +686,19 @@ define Device/confiabits_mt7621-v1
|
||||
endef
|
||||
TARGET_DEVICES += confiabits_mt7621-v1
|
||||
|
||||
define Device/cudy_m1300-v2
|
||||
$(Device/dsa-migration)
|
||||
IMAGE_SIZE := 15872k
|
||||
DEVICE_VENDOR := Cudy
|
||||
DEVICE_MODEL := M1300
|
||||
DEVICE_VARIANT := v2
|
||||
DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap \
|
||||
-uboot-envtools
|
||||
UIMAGE_NAME := R15
|
||||
SUPPORTED_DEVICES += R15
|
||||
endef
|
||||
TARGET_DEVICES += cudy_m1300-v2
|
||||
|
||||
define Device/cudy_m1800
|
||||
$(Device/dsa-migration)
|
||||
DEVICE_VENDOR := Cudy
|
||||
@ -1059,23 +1072,11 @@ define Device/d-team_pbr-m1
|
||||
endef
|
||||
TARGET_DEVICES += d-team_pbr-m1
|
||||
|
||||
# Branded version of Genexis / Inteno EX400 (difference is one LED)
|
||||
define Device/dna_valokuitu-plus-ex400
|
||||
$(Device/dsa-migration)
|
||||
IMAGE_SIZE := 117m
|
||||
PAGESIZE := 2048
|
||||
MKUBIFS_OPTS := --min-io-size=$$(PAGESIZE) --leb-size=124KiB --max-leb-cnt=96 \
|
||||
--log-lebs=2 --space-fixup --squash-uids
|
||||
$(Device/genexis_pulse-ex400/common)
|
||||
DEVICE_VENDOR := DNA
|
||||
DEVICE_MODEL := Valokuitu Plus EX400
|
||||
KERNEL := kernel-bin | lzma | uImage lzma
|
||||
KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | uImage lzma
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-image-stage initramfs-kernel.bin | \
|
||||
dna-bootfs | dna-header | append-md5sum-ascii-salted
|
||||
IMAGE/sysupgrade.bin := append-kernel | dna-bootfs | \
|
||||
sysupgrade-tar kernel=$$$$@ | check-size | append-metadata
|
||||
DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(2)
|
||||
DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615-firmware kmod-usb3
|
||||
endef
|
||||
TARGET_DEVICES += dna_valokuitu-plus-ex400
|
||||
|
||||
@ -1381,6 +1382,33 @@ define Device/gemtek_wvrtm-130acn
|
||||
endef
|
||||
TARGET_DEVICES += gemtek_wvrtm-130acn
|
||||
|
||||
# Common definitions shared between genexis_pulse-ex400 and dna_valokuitu-plus-ex400
|
||||
define Device/genexis_pulse-ex400/common
|
||||
$(Device/dsa-migration)
|
||||
IMAGE_SIZE := 117m
|
||||
PAGESIZE := 2048
|
||||
MKUBIFS_OPTS := --min-io-size=$$(PAGESIZE) --leb-size=124KiB --max-leb-cnt=96 \
|
||||
--log-lebs=2 --space-fixup --squash-uids
|
||||
KERNEL := kernel-bin | lzma | uImage lzma
|
||||
KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | uImage lzma
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-image-stage initramfs-kernel.bin | \
|
||||
inteno-bootfs | inteno-y3-header EX400 | append-md5sum-ascii-salted
|
||||
IMAGE/sysupgrade.bin := append-kernel | inteno-bootfs | \
|
||||
sysupgrade-tar kernel=$$$$@ | check-size | append-metadata
|
||||
DEVICE_IMG_NAME = $$(DEVICE_IMG_PREFIX)-$$(2)
|
||||
DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615-firmware kmod-usb3
|
||||
endef
|
||||
|
||||
define Device/genexis_pulse-ex400
|
||||
$(Device/genexis_pulse-ex400/common)
|
||||
DEVICE_VENDOR := Genexis
|
||||
DEVICE_MODEL := Pulse EX400
|
||||
DEVICE_ALT0_VENDOR := Inteno
|
||||
DEVICE_ALT0_MODEL := Pulse EX400
|
||||
endef
|
||||
TARGET_DEVICES += genexis_pulse-ex400
|
||||
|
||||
define Device/glinet_gl-mt1300
|
||||
$(Device/dsa-migration)
|
||||
IMAGE_SIZE := 32448k
|
||||
|
@ -15,6 +15,7 @@ ramips_setup_interfaces()
|
||||
dlink,dwr-921-c1|\
|
||||
dlink,dwr-922-e2|\
|
||||
dovado,tiny-ac|\
|
||||
hongdian,h8922-v30|\
|
||||
ohyeah,oy-0001|\
|
||||
phicomm,psg1208|\
|
||||
planex,db-wrt01|\
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/uci-defaults.sh
|
||||
. /lib/functions/system.sh
|
||||
@ -24,6 +23,7 @@ ramips_setup_interfaces()
|
||||
mercusys,mr70x-v1|\
|
||||
netgear,wax202|\
|
||||
sim,simax1800t|\
|
||||
tplink,mr600-v2-eu|\
|
||||
xiaomi,mi-router-3-pro|\
|
||||
xiaomi,mi-router-ac2100|\
|
||||
xiaomi,mi-router-cr6606|\
|
||||
@ -69,12 +69,20 @@ ramips_setup_interfaces()
|
||||
ucidef_set_interface_lan "lan"
|
||||
;;
|
||||
asiarf,ap7621-001|\
|
||||
comfast,cf-e390ax|\
|
||||
comfast,cf-ew72-v2|\
|
||||
cudy,m1300-v2|\
|
||||
cudy,m1800|\
|
||||
dna,valokuitu-plus-ex400|\
|
||||
genexis,pulse-ex400|\
|
||||
humax,e10|\
|
||||
keenetic,kn-3510|\
|
||||
meig,slt866|\
|
||||
openfi,5pro|\
|
||||
wavlink,ws-wn572hp3-4g|\
|
||||
winstars,ws-wn583a6)
|
||||
winstars,ws-wn583a6|\
|
||||
yuncore,ax820|\
|
||||
zyxel,nr7101)
|
||||
ucidef_set_interfaces_lan_wan "lan" "wan"
|
||||
;;
|
||||
asiarf,ap7621-nv1|\
|
||||
@ -107,11 +115,6 @@ ramips_setup_interfaces()
|
||||
uci add_list firewall.@zone[1].network='eth_data'
|
||||
uci add_list firewall.@zone[1].network='eth_om'
|
||||
;;
|
||||
cudy,m1800|\
|
||||
yuncore,ax820|\
|
||||
zyxel,nr7101)
|
||||
ucidef_set_interfaces_lan_wan "lan" "wan"
|
||||
;;
|
||||
dlink,covr-x1860-a1)
|
||||
ucidef_set_interfaces_lan_wan "ethernet" "internet"
|
||||
;;
|
||||
@ -157,9 +160,6 @@ ramips_setup_interfaces()
|
||||
tplink,tl-wpa8631p-v3)
|
||||
ucidef_set_interface_lan "lan1 lan2 lan3 plc0"
|
||||
;;
|
||||
tplink,mr600-v2-eu)
|
||||
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan"
|
||||
;;
|
||||
ubnt,edgerouter-x)
|
||||
ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4" "eth0"
|
||||
;;
|
||||
@ -180,11 +180,6 @@ ramips_setup_interfaces()
|
||||
ruijie,rg-ew1200g-pro-v1.1)
|
||||
ucidef_set_interfaces_lan_wan "lan3 lan2 lan1" "wan"
|
||||
;;
|
||||
comfast,cf-e390ax|\
|
||||
comfast,cf-ew72-v2|\
|
||||
meig,slt866)
|
||||
ucidef_set_interfaces_lan_wan "lan" "wan"
|
||||
;;
|
||||
*)
|
||||
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
|
||||
;;
|
||||
|
@ -32,7 +32,8 @@ boot() {
|
||||
samknows,whitebox-v8)
|
||||
fw_setenv bootcount 0
|
||||
;;
|
||||
dna,valokuitu-plus-ex400)
|
||||
dna,valokuitu-plus-ex400|\
|
||||
genexis,pulse-ex400)
|
||||
fw_setenv boot_cnt_primary 0
|
||||
fw_setenv boot_cnt_alt 0
|
||||
;;
|
||||
|
@ -16,11 +16,16 @@
|
||||
. /lib/functions.sh
|
||||
. /lib/upgrade/nand.sh
|
||||
|
||||
dna_do_upgrade () {
|
||||
tar -xaf $1
|
||||
inteno_do_upgrade () {
|
||||
local tar_file=$1
|
||||
local cmd=cat
|
||||
# WARNING: This fails if tar contains more than one 'sysupgrade-*' directory.
|
||||
local board_dir="$(tar tf "$tar_file" | grep -m 1 '^sysupgrade-.*/$')"
|
||||
board_dir="${board_dir%/}"
|
||||
tar -xaf "$tar_file"
|
||||
|
||||
# get the size of the new bootfs
|
||||
local _bootfs_size=$(wc -c < ./sysupgrade-dna_valokuitu-plus-ex400/kernel)
|
||||
local _bootfs_size=$(wc -c < "$board_dir/kernel")
|
||||
[ -n "$_bootfs_size" -a "$_bootfs_size" -gt "0" ] || nand_do_upgrade_failed
|
||||
|
||||
# remove existing rootfses and recreate rootfs_0
|
||||
@ -32,7 +37,7 @@ dna_do_upgrade () {
|
||||
|
||||
# update the rootfs_0 contents
|
||||
local _kern_ubivol=$( nand_find_volume "ubi0" "rootfs_0" )
|
||||
ubiupdatevol /dev/${_kern_ubivol} sysupgrade-dna_valokuitu-plus-ex400/kernel
|
||||
ubiupdatevol "/dev/$_kern_ubivol" "$board_dir/kernel"
|
||||
|
||||
fw_setenv root_vol rootfs_0
|
||||
fw_setenv boot_cnt_primary 0
|
@ -157,8 +157,9 @@ platform_do_upgrade() {
|
||||
buffalo,wsr-2533dhpls)
|
||||
buffalo_do_upgrade "$1"
|
||||
;;
|
||||
dna,valokuitu-plus-ex400)
|
||||
dna_do_upgrade "$1"
|
||||
dna,valokuitu-plus-ex400|\
|
||||
genexis,pulse-ex400)
|
||||
inteno_do_upgrade "$1"
|
||||
;;
|
||||
elecom,wrc-x1800gs)
|
||||
[ "$(fw_printenv -n bootmenu_delay)" != "0" ] || \
|
||||
|
@ -234,7 +234,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
/* Format flags */
|
||||
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
|
||||
@@ -587,6 +589,7 @@ struct uvc_device {
|
||||
@@ -591,6 +593,7 @@ struct uvc_device {
|
||||
|
||||
struct input_dev *input;
|
||||
char input_phys[64];
|
||||
|
@ -26,7 +26,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
.init = rockchip_combphy_init,
|
||||
.exit = rockchip_combphy_exit,
|
||||
.owner = THIS_MODULE,
|
||||
@@ -364,7 +364,7 @@ static int rockchip_combphy_probe(struct
|
||||
@@ -367,7 +367,7 @@ static int rockchip_combphy_probe(struct
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -239,6 +239,8 @@ CONFIG_M686=y
|
||||
# CONFIG_MGEODEGX1 is not set
|
||||
# CONFIG_MGEODE_LX is not set
|
||||
CONFIG_MICROCODE=y
|
||||
CONFIG_MICROCODE_INITRD32=y
|
||||
CONFIG_MICROCODE_LATE_FORCE_MINREV=y
|
||||
CONFIG_MICROCODE_LATE_LOADING=y
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_MITIGATION_RFDS=y
|
||||
|
Loading…
x
Reference in New Issue
Block a user