-LINUX_VERSION-6.6 = .78
-LINUX_KERNEL_HASH-6.6.78 = 5aa39a9bd555133ad741058f9908a277e6b36bb928481e747d885b50aaaa93ed
+LINUX_VERSION-6.6 = .79
+LINUX_KERNEL_HASH-6.6.79 = 07a6f904470da1a099aa1683e3025a999dd82f2438f78b006b80c6ae2e9dfe8d
};
/* Uart divisor latch read */
-@@ -2881,6 +2889,12 @@ serial8250_do_set_termios(struct uart_po
+@@ -2889,6 +2897,12 @@ serial8250_do_set_termios(struct uart_po
serial8250_set_divisor(port, baud, quot, frac);
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -6063,6 +6063,9 @@ int __init cgroup_init_early(void)
+@@ -6059,6 +6059,9 @@ int __init cgroup_init_early(void)
return 0;
}
/**
* cgroup_init - cgroup initialization
*
-@@ -6096,6 +6099,12 @@ int __init cgroup_init(void)
+@@ -6092,6 +6095,12 @@ int __init cgroup_init(void)
cgroup_unlock();
for_each_subsys(ss, ssid) {
if (ss->early_init) {
struct cgroup_subsys_state *css =
-@@ -6736,6 +6745,10 @@ static int __init cgroup_disable(char *s
+@@ -6740,6 +6749,10 @@ static int __init cgroup_disable(char *s
strcmp(token, ss->legacy_name))
continue;
static_branch_disable(cgroup_subsys_enabled_key[i]);
pr_info("Disabling %s control group subsystem\n",
ss->name);
-@@ -6754,6 +6767,31 @@ static int __init cgroup_disable(char *s
+@@ -6758,6 +6771,31 @@ static int __init cgroup_disable(char *s
}
__setup("cgroup_disable=", cgroup_disable);
}
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -5712,7 +5712,7 @@ static void port_event(struct usb_hub *h
+@@ -5722,7 +5722,7 @@ static void port_event(struct usb_hub *h
port_dev->over_current_count++;
port_over_current_notify(port_dev);
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -6063,9 +6063,6 @@ int __init cgroup_init_early(void)
+@@ -6059,9 +6059,6 @@ int __init cgroup_init_early(void)
return 0;
}
/**
* cgroup_init - cgroup initialization
*
-@@ -6099,12 +6096,6 @@ int __init cgroup_init(void)
+@@ -6095,12 +6092,6 @@ int __init cgroup_init(void)
cgroup_unlock();
for_each_subsys(ss, ssid) {
if (ss->early_init) {
struct cgroup_subsys_state *css =
-@@ -6745,10 +6736,6 @@ static int __init cgroup_disable(char *s
+@@ -6749,10 +6740,6 @@ static int __init cgroup_disable(char *s
strcmp(token, ss->legacy_name))
continue;
static_branch_disable(cgroup_subsys_enabled_key[i]);
pr_info("Disabling %s control group subsystem\n",
ss->name);
-@@ -6782,7 +6769,7 @@ static int __init cgroup_enable(char *st
+@@ -6786,7 +6773,7 @@ static int __init cgroup_enable(char *st
strcmp(token, ss->legacy_name))
continue;
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -6769,11 +6769,19 @@ static int __init cgroup_enable(char *st
+@@ -6773,11 +6773,19 @@ static int __init cgroup_enable(char *st
strcmp(token, ss->legacy_name))
continue;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -3300,6 +3300,7 @@ static inline void dev_xmit_recursion_de
+@@ -3306,6 +3306,7 @@ static inline void dev_xmit_recursion_de
__this_cpu_dec(softnet_data.xmit.recursion);
}
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -4561,6 +4561,9 @@ static inline void netif_addr_unlock_bh(
+@@ -4567,6 +4567,9 @@ static inline void netif_addr_unlock_bh(
void ether_setup(struct net_device *dev);
#define QUECTEL_VENDOR_ID 0x2c7c
/* These Quectel products use Quectel's vendor ID */
-@@ -1162,6 +1167,11 @@ static const struct usb_device_id option
+@@ -1153,6 +1158,11 @@ static const struct usb_device_id option
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */
.driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) },
/* Quectel products using Qualcomm vendor ID */
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
{ USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
-@@ -1203,6 +1213,11 @@ static const struct usb_device_id option
+@@ -1194,6 +1204,11 @@ static const struct usb_device_id option
.driver_info = ZLP },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
.driver_info = RSVD(4) },
case RTN_THROW:
case RTN_UNREACHABLE:
default:
-@@ -4546,6 +4565,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -4551,6 +4570,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -5037,7 +5067,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -5042,7 +5072,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -6299,6 +6330,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6304,6 +6335,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -6310,6 +6343,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6315,6 +6348,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -6510,6 +6544,8 @@ static int __net_init ip6_route_net_init
+@@ -6515,6 +6549,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false;
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL);
-@@ -6520,11 +6556,21 @@ static int __net_init ip6_route_net_init
+@@ -6525,11 +6561,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
-@@ -6551,6 +6597,8 @@ out:
+@@ -6556,6 +6602,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6570,6 +6618,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6575,6 +6623,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6653,6 +6702,9 @@ void __init ip6_route_init_special_entri
+@@ -6658,6 +6707,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
{
u16 cmd;
-@@ -1283,3 +1298,4 @@ static void quirk_usb_early_handoff(stru
+@@ -1292,3 +1307,4 @@ static void quirk_usb_early_handoff(stru
}
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
},
[PORT_NPCM] = {
.name = "Nuvoton 16550",
-@@ -2775,6 +2775,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2783,6 +2783,11 @@ serial8250_do_set_termios(struct uart_po
unsigned long flags;
unsigned int baud, quot, frac = 0;
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
-@@ -3269,6 +3269,18 @@ static const struct usb_device_id uvc_id
+@@ -3287,6 +3287,18 @@ static const struct usb_device_id uvc_id
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
+#include <linux/kobject.h>
+#include <linux/workqueue.h>
+ #include <media/jpeg.h>
#include <media/v4l2-common.h>
-
-@@ -1296,9 +1301,149 @@ static void uvc_video_decode_data(struct
+@@ -1321,9 +1326,149 @@ static void uvc_video_decode_data(struct
uvc_urb->async_operations++;
}
/* Mark the buffer as done if the EOF marker is set. */
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
uvc_dbg(stream->dev, FRAME, "Frame complete (EOF found)\n");
-@@ -1880,6 +2025,8 @@ static int uvc_init_video_isoc(struct uv
+@@ -1905,6 +2050,8 @@ static int uvc_init_video_isoc(struct uv
if (npackets == 0)
return -ENOMEM;
for_each_uvc_urb(uvc_urb, stream) {
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
-@@ -76,6 +76,8 @@
- #define UVC_QUIRK_NO_RESET_RESUME 0x00004000
+@@ -77,6 +77,8 @@
#define UVC_QUIRK_DISABLE_AUTOSUSPEND 0x00008000
#define UVC_QUIRK_INVALID_DEVICE_SOF 0x00010000
-+#define UVC_QUIRK_MOTION 0x00020000
-+#define UVC_QUIRK_SINGLE_ISO 0x00040000
+ #define UVC_QUIRK_MJPEG_NO_EOF 0x00020000
++#define UVC_QUIRK_MOTION 0x00040000
++#define UVC_QUIRK_SINGLE_ISO 0x00080000
/* Format flags */
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
-@@ -586,6 +588,7 @@ struct uvc_device {
+@@ -587,6 +589,7 @@ struct uvc_device {
struct input_dev *input;
char input_phys[64];
#define PAD_DS_TUNE 0x188
#define PAD_CMD_TUNE 0x18c
#define EMMC51_CFG0 0x204
-@@ -400,6 +404,7 @@ struct mtk_mmc_compatible {
+@@ -402,6 +406,7 @@ struct mtk_mmc_compatible {
bool enhance_rx;
bool support_64g;
bool use_internal_cd;
};
struct msdc_tune_para {
-@@ -537,6 +542,7 @@ static const struct mtk_mmc_compatible m
+@@ -539,6 +544,7 @@ static const struct mtk_mmc_compatible m
.stop_clk_fix = false,
.enhance_rx = false,
.use_internal_cd = true,
};
static const struct mtk_mmc_compatible mt7622_compat = {
-@@ -1729,9 +1735,11 @@ static void msdc_init_hw(struct msdc_hos
+@@ -1731,9 +1737,11 @@ static void msdc_init_hw(struct msdc_hos
}
writel(0, host->base + MSDC_IOCON);
sdr_set_field(host->base + MSDC_IOCON, MSDC_IOCON_DDLSEL, 0);
sdr_set_bits(host->base + EMMC50_CFG0, EMMC50_CFG_CFCSTS_SEL);
if (host->dev_comp->stop_clk_fix) {
-@@ -1795,6 +1803,18 @@ static void msdc_init_hw(struct msdc_hos
+@@ -1797,6 +1805,18 @@ static void msdc_init_hw(struct msdc_hos
MSDC_PAD_TUNE_RXDLYSEL);
}
}
/*
-@@ -2814,7 +2827,6 @@ serial8250_do_set_termios(struct uart_po
+@@ -2822,7 +2835,6 @@ serial8250_do_set_termios(struct uart_po
if (termios->c_cflag & CRTSCTS)
up->mcr |= UART_MCR_AFE;
}