mirror of
https://github.com/LuckfoxTECH/luckfox-pico.git
synced 2026-01-19 09:52:31 +01:00
project:build.sh: Added fastboot support; custom modifications to U-Boot and kernel implemented using patches.
project:cfg:BoardConfig_IPC: Added fastboot BoardConfig file and firmware post-scripts, distinguishing between the BoardConfigs for Luckfox Pico Pro and Luckfox Pico Max. project:app: Added fastboot_client and rk_smart_door for quick boot applications; updated rkipc app to adapt to the latest media library. media:samples: Added more usage examples. media:rockit: Fixed bugs; removed support for retrieving data frames from VPSS. media:isp: Updated rkaiq library and related tools to support connection to RKISP_Tuner. sysdrv:Makefile: Added support for compiling drv_ko on Luckfox Pico Ultra W using Ubuntu; added support for custom root filesystem. sysdrv:tools:board: Updated Buildroot optional mirror sources, updated some software versions, and stored device tree files and configuration files that undergo multiple modifications for U-Boot and kernel separately. sysdrv:source:mcu: Used RISC-V MCU SDK with RT-Thread system, mainly for initializing camera AE during quick boot. sysdrv:source:uboot: Added support for fastboot; added high baud rate DDR bin for serial firmware upgrades. sysdrv:source:kernel: Upgraded to version 5.10.160; increased NPU frequency for RV1106G3; added support for fastboot. Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
This commit is contained in:
@@ -546,7 +546,7 @@ static int inet6_netconf_fill_devconf(struct sk_buff *skb, int ifindex,
|
||||
#ifdef CONFIG_IPV6_MROUTE
|
||||
if ((all || type == NETCONFA_MC_FORWARDING) &&
|
||||
nla_put_s32(skb, NETCONFA_MC_FORWARDING,
|
||||
devconf->mc_forwarding) < 0)
|
||||
atomic_read(&devconf->mc_forwarding)) < 0)
|
||||
goto nla_put_failure;
|
||||
#endif
|
||||
if ((all || type == NETCONFA_PROXY_NEIGH) &&
|
||||
@@ -793,6 +793,7 @@ static void dev_forward_change(struct inet6_dev *idev)
|
||||
{
|
||||
struct net_device *dev;
|
||||
struct inet6_ifaddr *ifa;
|
||||
LIST_HEAD(tmp_addr_list);
|
||||
|
||||
if (!idev)
|
||||
return;
|
||||
@@ -811,14 +812,24 @@ static void dev_forward_change(struct inet6_dev *idev)
|
||||
}
|
||||
}
|
||||
|
||||
read_lock_bh(&idev->lock);
|
||||
list_for_each_entry(ifa, &idev->addr_list, if_list) {
|
||||
if (ifa->flags&IFA_F_TENTATIVE)
|
||||
continue;
|
||||
list_add_tail(&ifa->if_list_aux, &tmp_addr_list);
|
||||
}
|
||||
read_unlock_bh(&idev->lock);
|
||||
|
||||
while (!list_empty(&tmp_addr_list)) {
|
||||
ifa = list_first_entry(&tmp_addr_list,
|
||||
struct inet6_ifaddr, if_list_aux);
|
||||
list_del(&ifa->if_list_aux);
|
||||
if (idev->cnf.forwarding)
|
||||
addrconf_join_anycast(ifa);
|
||||
else
|
||||
addrconf_leave_anycast(ifa);
|
||||
}
|
||||
|
||||
inet6_netconf_notify_devconf(dev_net(dev), RTM_NEWNETCONF,
|
||||
NETCONFA_FORWARDING,
|
||||
dev->ifindex, &idev->cnf);
|
||||
@@ -1095,10 +1106,6 @@ ipv6_add_addr(struct inet6_dev *idev, struct ifa6_config *cfg,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (net->ipv6.devconf_all->disable_policy ||
|
||||
idev->cnf.disable_policy)
|
||||
f6i->dst_nopolicy = true;
|
||||
|
||||
neigh_parms_data_state_setall(idev->nd_parms);
|
||||
|
||||
ifa->addr = *cfg->pfx;
|
||||
@@ -3739,7 +3746,8 @@ static int addrconf_ifdown(struct net_device *dev, bool unregister)
|
||||
unsigned long event = unregister ? NETDEV_UNREGISTER : NETDEV_DOWN;
|
||||
struct net *net = dev_net(dev);
|
||||
struct inet6_dev *idev;
|
||||
struct inet6_ifaddr *ifa, *tmp;
|
||||
struct inet6_ifaddr *ifa;
|
||||
LIST_HEAD(tmp_addr_list);
|
||||
bool keep_addr = false;
|
||||
bool was_ready;
|
||||
int state, i;
|
||||
@@ -3831,16 +3839,23 @@ restart:
|
||||
write_lock_bh(&idev->lock);
|
||||
}
|
||||
|
||||
list_for_each_entry_safe(ifa, tmp, &idev->addr_list, if_list) {
|
||||
list_for_each_entry(ifa, &idev->addr_list, if_list)
|
||||
list_add_tail(&ifa->if_list_aux, &tmp_addr_list);
|
||||
write_unlock_bh(&idev->lock);
|
||||
|
||||
while (!list_empty(&tmp_addr_list)) {
|
||||
struct fib6_info *rt = NULL;
|
||||
bool keep;
|
||||
|
||||
ifa = list_first_entry(&tmp_addr_list,
|
||||
struct inet6_ifaddr, if_list_aux);
|
||||
list_del(&ifa->if_list_aux);
|
||||
|
||||
addrconf_del_dad_work(ifa);
|
||||
|
||||
keep = keep_addr && (ifa->flags & IFA_F_PERMANENT) &&
|
||||
!addr_is_local(&ifa->addr);
|
||||
|
||||
write_unlock_bh(&idev->lock);
|
||||
spin_lock_bh(&ifa->lock);
|
||||
|
||||
if (keep) {
|
||||
@@ -3871,15 +3886,14 @@ restart:
|
||||
addrconf_leave_solict(ifa->idev, &ifa->addr);
|
||||
}
|
||||
|
||||
write_lock_bh(&idev->lock);
|
||||
if (!keep) {
|
||||
write_lock_bh(&idev->lock);
|
||||
list_del_rcu(&ifa->if_list);
|
||||
write_unlock_bh(&idev->lock);
|
||||
in6_ifa_put(ifa);
|
||||
}
|
||||
}
|
||||
|
||||
write_unlock_bh(&idev->lock);
|
||||
|
||||
/* Step 5: Discard anycast and multicast list */
|
||||
if (unregister) {
|
||||
ipv6_ac_destroy_dev(idev);
|
||||
@@ -4211,7 +4225,8 @@ static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id,
|
||||
send_rs = send_mld &&
|
||||
ipv6_accept_ra(ifp->idev) &&
|
||||
ifp->idev->cnf.rtr_solicits != 0 &&
|
||||
(dev->flags&IFF_LOOPBACK) == 0;
|
||||
(dev->flags & IFF_LOOPBACK) == 0 &&
|
||||
(dev->type != ARPHRD_TUNNEL);
|
||||
read_unlock_bh(&ifp->idev->lock);
|
||||
|
||||
/* While dad is in progress mld report's source address is in6_addrany.
|
||||
@@ -5544,7 +5559,7 @@ static inline void ipv6_store_devconf(struct ipv6_devconf *cnf,
|
||||
array[DEVCONF_USE_OPTIMISTIC] = cnf->use_optimistic;
|
||||
#endif
|
||||
#ifdef CONFIG_IPV6_MROUTE
|
||||
array[DEVCONF_MC_FORWARDING] = cnf->mc_forwarding;
|
||||
array[DEVCONF_MC_FORWARDING] = atomic_read(&cnf->mc_forwarding);
|
||||
#endif
|
||||
array[DEVCONF_DISABLE_IPV6] = cnf->disable_ipv6;
|
||||
array[DEVCONF_ACCEPT_DAD] = cnf->accept_dad;
|
||||
@@ -7063,9 +7078,8 @@ static int __net_init addrconf_init_net(struct net *net)
|
||||
if (!dflt)
|
||||
goto err_alloc_dflt;
|
||||
|
||||
if (IS_ENABLED(CONFIG_SYSCTL) &&
|
||||
!net_eq(net, &init_net)) {
|
||||
switch (sysctl_devconf_inherit_init_net) {
|
||||
if (!net_eq(net, &init_net)) {
|
||||
switch (net_inherit_devconf()) {
|
||||
case 1: /* copy from init_net */
|
||||
memcpy(all, init_net.ipv6.devconf_all,
|
||||
sizeof(ipv6_devconf));
|
||||
|
||||
Reference in New Issue
Block a user