You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Merge in the left-over fixes before the net-next pull-request. Conflicts: drivers/net/ethernet/mediatek/mtk_ppe.cae3ed15da5("net: ethernet: mtk_eth_soc: fix state in __mtk_foe_entry_clear")9d8cb4c096("net: ethernet: mtk_eth_soc: add foe_entry_size to mtk_eth_soc") https://lore.kernel.org/all/6cb6893b-4921-a068-4c30-1109795110bb@tessares.net/ kernel/bpf/helpers.c8addbfc7b3("bpf: Gate dynptr API behind CAP_BPF")5679ff2f13("bpf: Move bpf_loop and bpf_for_each_map_elem under CAP_BPF")8a67f2de9b("bpf: expose bpf_strtol and bpf_strtoul to all program types") https://lore.kernel.org/all/20221003201957.13149-1-daniel@iogearbox.net/ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -3833,6 +3833,7 @@ F: kernel/bpf/dispatcher.c
|
||||
F: kernel/bpf/trampoline.c
|
||||
F: include/linux/bpf*
|
||||
F: include/linux/filter.h
|
||||
F: include/linux/tnum.h
|
||||
|
||||
BPF [BTF]
|
||||
M: Martin KaFai Lau <martin.lau@linux.dev>
|
||||
|
||||
@@ -59,6 +59,7 @@ struct l1oip {
|
||||
int bundle; /* bundle channels in one frm */
|
||||
int codec; /* codec to use for transmis. */
|
||||
int limit; /* limit number of bchannels */
|
||||
bool shutdown; /* if card is released */
|
||||
|
||||
/* timer */
|
||||
struct timer_list keep_tl;
|
||||
|
||||
@@ -275,7 +275,7 @@ l1oip_socket_send(struct l1oip *hc, u8 localcodec, u8 channel, u32 chanmask,
|
||||
p = frame;
|
||||
|
||||
/* restart timer */
|
||||
if (time_before(hc->keep_tl.expires, jiffies + 5 * HZ))
|
||||
if (time_before(hc->keep_tl.expires, jiffies + 5 * HZ) && !hc->shutdown)
|
||||
mod_timer(&hc->keep_tl, jiffies + L1OIP_KEEPALIVE * HZ);
|
||||
else
|
||||
hc->keep_tl.expires = jiffies + L1OIP_KEEPALIVE * HZ;
|
||||
@@ -601,7 +601,9 @@ multiframe:
|
||||
goto multiframe;
|
||||
|
||||
/* restart timer */
|
||||
if (time_before(hc->timeout_tl.expires, jiffies + 5 * HZ) || !hc->timeout_on) {
|
||||
if ((time_before(hc->timeout_tl.expires, jiffies + 5 * HZ) ||
|
||||
!hc->timeout_on) &&
|
||||
!hc->shutdown) {
|
||||
hc->timeout_on = 1;
|
||||
mod_timer(&hc->timeout_tl, jiffies + L1OIP_TIMEOUT * HZ);
|
||||
} else /* only adjust timer */
|
||||
@@ -1232,11 +1234,10 @@ release_card(struct l1oip *hc)
|
||||
{
|
||||
int ch;
|
||||
|
||||
if (timer_pending(&hc->keep_tl))
|
||||
del_timer(&hc->keep_tl);
|
||||
hc->shutdown = true;
|
||||
|
||||
if (timer_pending(&hc->timeout_tl))
|
||||
del_timer(&hc->timeout_tl);
|
||||
del_timer_sync(&hc->keep_tl);
|
||||
del_timer_sync(&hc->timeout_tl);
|
||||
|
||||
cancel_work_sync(&hc->workq);
|
||||
|
||||
|
||||
@@ -1912,11 +1912,14 @@ static int alx_suspend(struct device *dev)
|
||||
|
||||
if (!netif_running(alx->dev))
|
||||
return 0;
|
||||
|
||||
rtnl_lock();
|
||||
netif_device_detach(alx->dev);
|
||||
|
||||
mutex_lock(&alx->mtx);
|
||||
__alx_stop(alx);
|
||||
mutex_unlock(&alx->mtx);
|
||||
rtnl_unlock();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1927,6 +1930,7 @@ static int alx_resume(struct device *dev)
|
||||
struct alx_hw *hw = &alx->hw;
|
||||
int err;
|
||||
|
||||
rtnl_lock();
|
||||
mutex_lock(&alx->mtx);
|
||||
alx_reset_phy(hw);
|
||||
|
||||
@@ -1943,6 +1947,7 @@ static int alx_resume(struct device *dev)
|
||||
|
||||
unlock:
|
||||
mutex_unlock(&alx->mtx);
|
||||
rtnl_unlock();
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
@@ -787,6 +787,7 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp,
|
||||
BNX2X_ERR("skb_put is about to fail... pad %d len %d rx_buf_size %d\n",
|
||||
pad, len, fp->rx_buf_size);
|
||||
bnx2x_panic();
|
||||
bnx2x_frag_free(fp, new_data);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1530,6 +1530,7 @@ u32 mvpp2_read(struct mvpp2 *priv, u32 offset);
|
||||
void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name);
|
||||
|
||||
void mvpp2_dbgfs_cleanup(struct mvpp2 *priv);
|
||||
void mvpp2_dbgfs_exit(void);
|
||||
|
||||
void mvpp23_rx_fifo_fc_en(struct mvpp2 *priv, int port, bool en);
|
||||
|
||||
|
||||
@@ -691,6 +691,13 @@ static int mvpp2_dbgfs_port_init(struct dentry *parent,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dentry *mvpp2_root;
|
||||
|
||||
void mvpp2_dbgfs_exit(void)
|
||||
{
|
||||
debugfs_remove(mvpp2_root);
|
||||
}
|
||||
|
||||
void mvpp2_dbgfs_cleanup(struct mvpp2 *priv)
|
||||
{
|
||||
debugfs_remove_recursive(priv->dbgfs_dir);
|
||||
@@ -700,10 +707,9 @@ void mvpp2_dbgfs_cleanup(struct mvpp2 *priv)
|
||||
|
||||
void mvpp2_dbgfs_init(struct mvpp2 *priv, const char *name)
|
||||
{
|
||||
struct dentry *mvpp2_dir, *mvpp2_root;
|
||||
struct dentry *mvpp2_dir;
|
||||
int ret, i;
|
||||
|
||||
mvpp2_root = debugfs_lookup(MVPP2_DRIVER_NAME, NULL);
|
||||
if (!mvpp2_root)
|
||||
mvpp2_root = debugfs_create_dir(MVPP2_DRIVER_NAME, NULL);
|
||||
|
||||
|
||||
@@ -7704,7 +7704,18 @@ static struct platform_driver mvpp2_driver = {
|
||||
},
|
||||
};
|
||||
|
||||
module_platform_driver(mvpp2_driver);
|
||||
static int __init mvpp2_driver_init(void)
|
||||
{
|
||||
return platform_driver_register(&mvpp2_driver);
|
||||
}
|
||||
module_init(mvpp2_driver_init);
|
||||
|
||||
static void __exit mvpp2_driver_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&mvpp2_driver);
|
||||
mvpp2_dbgfs_exit();
|
||||
}
|
||||
module_exit(mvpp2_driver_exit);
|
||||
|
||||
MODULE_DESCRIPTION("Marvell PPv2 Ethernet Driver - www.marvell.com");
|
||||
MODULE_AUTHOR("Marcin Wojtas <mw@semihalf.com>");
|
||||
|
||||
@@ -185,10 +185,14 @@ err_rhashtable_init:
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
void prestera_acl_ruleset_keymask_set(struct prestera_acl_ruleset *ruleset,
|
||||
void *keymask)
|
||||
int prestera_acl_ruleset_keymask_set(struct prestera_acl_ruleset *ruleset,
|
||||
void *keymask)
|
||||
{
|
||||
ruleset->keymask = kmemdup(keymask, ACL_KEYMASK_SIZE, GFP_KERNEL);
|
||||
if (!ruleset->keymask)
|
||||
return -ENOMEM;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int prestera_acl_ruleset_offload(struct prestera_acl_ruleset *ruleset)
|
||||
|
||||
@@ -185,8 +185,8 @@ struct prestera_acl_ruleset *
|
||||
prestera_acl_ruleset_lookup(struct prestera_acl *acl,
|
||||
struct prestera_flow_block *block,
|
||||
u32 chain_index);
|
||||
void prestera_acl_ruleset_keymask_set(struct prestera_acl_ruleset *ruleset,
|
||||
void *keymask);
|
||||
int prestera_acl_ruleset_keymask_set(struct prestera_acl_ruleset *ruleset,
|
||||
void *keymask);
|
||||
bool prestera_acl_ruleset_is_offload(struct prestera_acl_ruleset *ruleset);
|
||||
int prestera_acl_ruleset_offload(struct prestera_acl_ruleset *ruleset);
|
||||
void prestera_acl_ruleset_put(struct prestera_acl_ruleset *ruleset);
|
||||
|
||||
@@ -500,7 +500,9 @@ int prestera_flower_tmplt_create(struct prestera_flow_block *block,
|
||||
}
|
||||
|
||||
/* preserve keymask/template to this ruleset */
|
||||
prestera_acl_ruleset_keymask_set(ruleset, rule.re_key.match.mask);
|
||||
err = prestera_acl_ruleset_keymask_set(ruleset, rule.re_key.match.mask);
|
||||
if (err)
|
||||
goto err_ruleset_keymask_set;
|
||||
|
||||
/* skip error, as it is not possible to reject template operation,
|
||||
* so, keep the reference to the ruleset for rules to be added
|
||||
@@ -516,6 +518,8 @@ int prestera_flower_tmplt_create(struct prestera_flow_block *block,
|
||||
list_add_rcu(&template->list, &block->template_list);
|
||||
return 0;
|
||||
|
||||
err_ruleset_keymask_set:
|
||||
prestera_acl_ruleset_put(ruleset);
|
||||
err_ruleset_get:
|
||||
kfree(template);
|
||||
err_malloc:
|
||||
|
||||
@@ -442,7 +442,7 @@ __mtk_foe_entry_clear(struct mtk_ppe *ppe, struct mtk_flow_entry *entry)
|
||||
struct mtk_foe_entry *hwe = mtk_foe_get_entry(ppe, entry->hash);
|
||||
|
||||
hwe->ib1 &= ~MTK_FOE_IB1_STATE;
|
||||
hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_UNBIND);
|
||||
hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_INVALID);
|
||||
dma_wmb();
|
||||
}
|
||||
entry->hash = 0xffff;
|
||||
|
||||
@@ -1049,6 +1049,10 @@ static int lan743x_ptpci_verify_pin_config(struct ptp_clock_info *ptp,
|
||||
enum ptp_pin_function func,
|
||||
unsigned int chan)
|
||||
{
|
||||
struct lan743x_ptp *lan_ptp =
|
||||
container_of(ptp, struct lan743x_ptp, ptp_clock_info);
|
||||
struct lan743x_adapter *adapter =
|
||||
container_of(lan_ptp, struct lan743x_adapter, ptp);
|
||||
int result = 0;
|
||||
|
||||
/* Confirm the requested function is supported. Parameter
|
||||
@@ -1057,7 +1061,10 @@ static int lan743x_ptpci_verify_pin_config(struct ptp_clock_info *ptp,
|
||||
switch (func) {
|
||||
case PTP_PF_NONE:
|
||||
case PTP_PF_PEROUT:
|
||||
break;
|
||||
case PTP_PF_EXTTS:
|
||||
if (!adapter->is_pci11x1x)
|
||||
result = -1;
|
||||
break;
|
||||
case PTP_PF_PHYSYNC:
|
||||
default:
|
||||
|
||||
@@ -305,7 +305,7 @@ struct frame_info {
|
||||
void sparx5_xtr_flush(struct sparx5 *sparx5, u8 grp);
|
||||
void sparx5_ifh_parse(u32 *ifh, struct frame_info *info);
|
||||
irqreturn_t sparx5_xtr_handler(int irq, void *_priv);
|
||||
int sparx5_port_xmit_impl(struct sk_buff *skb, struct net_device *dev);
|
||||
netdev_tx_t sparx5_port_xmit_impl(struct sk_buff *skb, struct net_device *dev);
|
||||
int sparx5_manual_injection_mode(struct sparx5 *sparx5);
|
||||
void sparx5_port_inj_timer_setup(struct sparx5_port *port);
|
||||
|
||||
|
||||
@@ -222,13 +222,13 @@ static int sparx5_inject(struct sparx5 *sparx5,
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
int sparx5_port_xmit_impl(struct sk_buff *skb, struct net_device *dev)
|
||||
netdev_tx_t sparx5_port_xmit_impl(struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
struct net_device_stats *stats = &dev->stats;
|
||||
struct sparx5_port *port = netdev_priv(dev);
|
||||
struct sparx5 *sparx5 = port->sparx5;
|
||||
u32 ifh[IFH_LEN];
|
||||
int ret;
|
||||
netdev_tx_t ret;
|
||||
|
||||
memset(ifh, 0, IFH_LEN * 4);
|
||||
sparx5_set_port_ifh(ifh, port->portno);
|
||||
|
||||
@@ -249,8 +249,8 @@ static int spl2sw_nvmem_get_mac_address(struct device *dev, struct device_node *
|
||||
|
||||
/* Check if mac address is valid */
|
||||
if (!is_valid_ether_addr(mac)) {
|
||||
kfree(mac);
|
||||
dev_info(dev, "Invalid mac address in nvmem (%pM)!\n", mac);
|
||||
kfree(mac);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
@@ -1875,7 +1875,9 @@ static void intr_callback(struct urb *urb)
|
||||
"Stop submitting intr, status %d\n", status);
|
||||
return;
|
||||
case -EOVERFLOW:
|
||||
netif_info(tp, intr, tp->netdev, "intr status -EOVERFLOW\n");
|
||||
if (net_ratelimit())
|
||||
netif_info(tp, intr, tp->netdev,
|
||||
"intr status -EOVERFLOW\n");
|
||||
goto resubmit;
|
||||
/* -EPIPE: should clear the halt */
|
||||
default:
|
||||
|
||||
@@ -323,15 +323,16 @@ struct iosm_wwan *ipc_wwan_init(struct iosm_imem *ipc_imem, struct device *dev)
|
||||
ipc_wwan->dev = dev;
|
||||
ipc_wwan->ipc_imem = ipc_imem;
|
||||
|
||||
mutex_init(&ipc_wwan->if_mutex);
|
||||
|
||||
/* WWAN core will create a netdev for the default IP MUX channel */
|
||||
if (wwan_register_ops(ipc_wwan->dev, &iosm_wwan_ops, ipc_wwan,
|
||||
IP_MUX_SESSION_DEFAULT)) {
|
||||
mutex_destroy(&ipc_wwan->if_mutex);
|
||||
kfree(ipc_wwan);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
mutex_init(&ipc_wwan->if_mutex);
|
||||
|
||||
return ipc_wwan;
|
||||
}
|
||||
|
||||
|
||||
@@ -393,7 +393,7 @@ vhost_vsock_alloc_pkt(struct vhost_virtqueue *vq,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
pkt->buf = kmalloc(pkt->len, GFP_KERNEL);
|
||||
pkt->buf = kvmalloc(pkt->len, GFP_KERNEL);
|
||||
if (!pkt->buf) {
|
||||
kfree(pkt);
|
||||
return NULL;
|
||||
|
||||
@@ -295,7 +295,7 @@ struct tcp_sock {
|
||||
u32 packets_out; /* Packets which are "in flight" */
|
||||
u32 retrans_out; /* Retransmitted packets out */
|
||||
u32 max_packets_out; /* max packets_out in last window */
|
||||
u32 max_packets_seq; /* right edge of max_packets_out flight */
|
||||
u32 cwnd_usage_seq; /* right edge of cwnd usage tracking flight */
|
||||
|
||||
u16 urg_data; /* Saved octet of OOB data and control flags */
|
||||
u8 ecn_flags; /* ECN status bits. */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user