diff --git a/main/linux-postmarketos-qcom-msm8974/0001-net-qualcomm-bam-dmux-Switch-to-Raw-IP-mode.patch b/main/linux-postmarketos-qcom-msm8974/0001-net-qualcomm-bam-dmux-Switch-to-Raw-IP-mode.patch new file mode 100644 index 000000000..610616de8 --- /dev/null +++ b/main/linux-postmarketos-qcom-msm8974/0001-net-qualcomm-bam-dmux-Switch-to-Raw-IP-mode.patch @@ -0,0 +1,157 @@ +From 1cde3fcb0f1b0b9a6bdc96a1843db4d6cbbc3539 Mon Sep 17 00:00:00 2001 +From: Minecrell +Date: Thu, 15 Oct 2020 11:31:16 +0200 +Subject: [PATCH 1/6] net: qualcomm: bam-dmux: Switch to Raw IP mode + +--- + drivers/net/ethernet/qualcomm/bam-dmux.c | 92 +++++++++++------------- + 1 file changed, 43 insertions(+), 49 deletions(-) + +diff --git a/drivers/net/ethernet/qualcomm/bam-dmux.c b/drivers/net/ethernet/qualcomm/bam-dmux.c +index c1346452c9d4..75b3f3932b4f 100644 +--- a/drivers/net/ethernet/qualcomm/bam-dmux.c ++++ b/drivers/net/ethernet/qualcomm/bam-dmux.c +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -19,9 +20,11 @@ + #include + #include + #include ++#include + + #define BAM_DMUX_BUFFER_SIZE SZ_2K + #define BAM_DMUX_MAX_DATA_SIZE (BAM_DMUX_BUFFER_SIZE - sizeof(struct bam_dmux_hdr)) ++#define BAM_DMUX_DEFAULT_MTU 2000 + #define BAM_DMUX_NUM_SKB 32 + + #define BAM_DMUX_AUTOSUSPEND_DELAY 1000 +@@ -442,25 +445,27 @@ static void bam_dmux_tx_wakeup_work(struct work_struct *work) + pm_runtime_put_autosuspend(dmux->dev); + } + +-static const struct net_device_ops bam_dmux_ops_ether = { +- .ndo_open = bam_dmux_netdev_open, +- .ndo_stop = bam_dmux_netdev_stop, +- .ndo_start_xmit = bam_dmux_netdev_start_xmit, +- .ndo_set_mac_address = eth_mac_addr, +- .ndo_validate_addr = eth_validate_addr, ++static const struct net_device_ops bam_dmux_ops = { ++ .ndo_open = bam_dmux_netdev_open, ++ .ndo_stop = bam_dmux_netdev_stop, ++ .ndo_start_xmit = bam_dmux_netdev_start_xmit, + }; + +-static void bam_dmux_netdev_setup(struct net_device *netdev) ++static void bam_dmux_netdev_setup(struct net_device *dev) + { +- /* Hardcode ethernet mode for now */ +- ether_setup(netdev); +- random_ether_addr(netdev->dev_addr); +- netdev->netdev_ops = &bam_dmux_ops_ether; ++ dev->netdev_ops = &bam_dmux_ops; + +- netdev->needed_headroom = sizeof(struct bam_dmux_hdr); +- netdev->needed_tailroom = sizeof(u32); /* word-aligned */ +- netdev->max_mtu = 2000; +- netdev->mtu = netdev->max_mtu; ++ dev->type = ARPHRD_RAWIP; ++ dev->mtu = BAM_DMUX_DEFAULT_MTU; ++ dev->max_mtu = BAM_DMUX_MAX_DATA_SIZE; ++ dev->needed_headroom = sizeof(struct bam_dmux_hdr); ++ dev->needed_tailroom = sizeof(u32); /* word-aligned */ ++ ++ /* This perm addr will be used as interface identifier by IPv6 */ ++ dev->addr_assign_type = NET_ADDR_RANDOM; ++ eth_random_addr(dev->perm_addr); ++ ++ dev->tx_queue_len = DEFAULT_TX_QUEUE_LEN; + } + + static void bam_dmux_register_netdev_work(struct work_struct *work) +@@ -523,7 +528,7 @@ static bool bam_dmux_skb_dma_submit_rx(struct bam_dmux_skb_dma *skb_dma) + + static bool bam_dmux_skb_dma_queue_rx(struct bam_dmux_skb_dma *skb_dma, gfp_t gfp) + { +- skb_dma->skb = __netdev_alloc_skb_ip_align(NULL, BAM_DMUX_BUFFER_SIZE, gfp); ++ skb_dma->skb = __netdev_alloc_skb(NULL, BAM_DMUX_BUFFER_SIZE, gfp); + if (!skb_dma->skb) + return false; + skb_put(skb_dma->skb, BAM_DMUX_BUFFER_SIZE); +@@ -532,38 +537,6 @@ static bool bam_dmux_skb_dma_queue_rx(struct bam_dmux_skb_dma *skb_dma, gfp_t gf + bam_dmux_skb_dma_submit_rx(skb_dma); + } + +-/* FIXME: For some reason the modem send raw-ip packets even in ethernet mode. +- * The qmi_wwan driver mentions a similar problem due to a "firmware bug", +- * and uses code similar to the one below to generate an ethernet header +- * in case of such weird packets. +- */ +-static __be16 bam_dmux_eth_type_trans(struct sk_buff *skb, struct net_device *dev) +-{ +- __be16 protocol; +- +- /* Determine L3 protocol */ +- switch (skb->data[0] & 0xf0) { +- case 0x40: +- protocol = htons(ETH_P_IP); +- break; +- case 0x60: +- protocol = htons(ETH_P_IPV6); +- break; +- default: +- /* Seems to be valid */ +- return eth_type_trans(skb, dev); +- } +- +- /* Generate a dummy ethernet header */ +- skb_push(skb, ETH_HLEN); +- skb_reset_mac_header(skb); +- eth_hdr(skb)->h_proto = protocol; +- eth_zero_addr(eth_hdr(skb)->h_source); +- memcpy(eth_hdr(skb)->h_dest, dev->dev_addr, ETH_ALEN); +- +- return eth_type_trans(skb, dev); +-} +- + static bool bam_dmux_cmd_data(struct bam_dmux_skb_dma *skb_dma) + { + struct bam_dmux *dmux = skb_dma->dmux; +@@ -587,7 +560,28 @@ static bool bam_dmux_cmd_data(struct bam_dmux_skb_dma *skb_dma) + skb_trim(skb, hdr->len); + + skb->dev = netdev; +- skb->protocol = bam_dmux_eth_type_trans(skb, netdev); ++ ++ /* There are several different configurations possible for the modem. ++ * - Ethernet / Raw-IP mode ++ * - Additional "QMI" QoS header ++ * - QMAP/rmnet MAP header (another muxing layer) ++ * ++ * Ethernet mode seems to be broken, Ethernet headers are only sent for ++ * DHCP replies, all other packets are Raw-IP. Therefore, only Raw-IP ++ * or QMAP mode are supported in this driver. ++ */ ++ switch (skb->data[0] & 0xf0) { ++ case 0x40: ++ skb->protocol = htons(ETH_P_IP); ++ break; ++ case 0x60: ++ skb->protocol = htons(ETH_P_IPV6); ++ break; ++ default: ++ skb->protocol = htons(ETH_P_MAP); ++ break; ++ } ++ + netif_rx_ni(skb); + + if (bam_dmux_skb_dma_queue_rx(skb_dma, GFP_ATOMIC)) +-- +2.30.1 + diff --git a/main/linux-postmarketos-qcom-msm8974/0002-net-qualcomm-bam-dmux-Set-parent-device-and-device-t.patch b/main/linux-postmarketos-qcom-msm8974/0002-net-qualcomm-bam-dmux-Set-parent-device-and-device-t.patch new file mode 100644 index 000000000..2166191a5 --- /dev/null +++ b/main/linux-postmarketos-qcom-msm8974/0002-net-qualcomm-bam-dmux-Set-parent-device-and-device-t.patch @@ -0,0 +1,43 @@ +From 891503b7546ac4a5f3db5f20d26fe1bd709ae38c Mon Sep 17 00:00:00 2001 +From: Minecrell +Date: Mon, 19 Oct 2020 13:21:31 +0200 +Subject: [PATCH 2/6] net: qualcomm: bam-dmux: Set parent device and device + type + +--- + drivers/net/ethernet/qualcomm/bam-dmux.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/net/ethernet/qualcomm/bam-dmux.c b/drivers/net/ethernet/qualcomm/bam-dmux.c +index 75b3f3932b4f..7bc02b20b643 100644 +--- a/drivers/net/ethernet/qualcomm/bam-dmux.c ++++ b/drivers/net/ethernet/qualcomm/bam-dmux.c +@@ -451,11 +451,17 @@ static const struct net_device_ops bam_dmux_ops = { + .ndo_start_xmit = bam_dmux_netdev_start_xmit, + }; + ++static const struct device_type wwan_type = { ++ .name = "wwan", ++}; ++ + static void bam_dmux_netdev_setup(struct net_device *dev) + { + dev->netdev_ops = &bam_dmux_ops; + + dev->type = ARPHRD_RAWIP; ++ SET_NETDEV_DEVTYPE(dev, &wwan_type); ++ + dev->mtu = BAM_DMUX_DEFAULT_MTU; + dev->max_mtu = BAM_DMUX_MAX_DATA_SIZE; + dev->needed_headroom = sizeof(struct bam_dmux_hdr); +@@ -489,6 +495,7 @@ static void bam_dmux_register_netdev_work(struct work_struct *work) + if (!netdev) + return; /* -ENOMEM */ + ++ SET_NETDEV_DEV(netdev, dmux->dev); + bndev = netdev_priv(netdev); + bndev->dmux = dmux; + bndev->ch = ch; +-- +2.30.1 + diff --git a/main/linux-postmarketos-qcom-msm8974/0003-net-qualcomm-bam-dmux-Set-netdev-dev_port-to-channel.patch b/main/linux-postmarketos-qcom-msm8974/0003-net-qualcomm-bam-dmux-Set-netdev-dev_port-to-channel.patch new file mode 100644 index 000000000..5ca7cf69b --- /dev/null +++ b/main/linux-postmarketos-qcom-msm8974/0003-net-qualcomm-bam-dmux-Set-netdev-dev_port-to-channel.patch @@ -0,0 +1,27 @@ +From 27681f8d9c8ceb1c9f0e09c196d397f036f071c6 Mon Sep 17 00:00:00 2001 +From: Minecrell +Date: Sun, 25 Oct 2020 19:52:44 +0100 +Subject: [PATCH 3/6] net: qualcomm: bam-dmux: Set netdev->dev_port to channel + ID + +This allows reading the channel ID from userspace. +--- + drivers/net/ethernet/qualcomm/bam-dmux.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/net/ethernet/qualcomm/bam-dmux.c b/drivers/net/ethernet/qualcomm/bam-dmux.c +index 7bc02b20b643..171af41eb10a 100644 +--- a/drivers/net/ethernet/qualcomm/bam-dmux.c ++++ b/drivers/net/ethernet/qualcomm/bam-dmux.c +@@ -496,6 +496,8 @@ static void bam_dmux_register_netdev_work(struct work_struct *work) + return; /* -ENOMEM */ + + SET_NETDEV_DEV(netdev, dmux->dev); ++ netdev->dev_port = ch; ++ + bndev = netdev_priv(netdev); + bndev->dmux = dmux; + bndev->ch = ch; +-- +2.30.1 + diff --git a/main/linux-postmarketos-qcom-msm8974/0004-net-qualcomm-bam-dmux-Always-open-close-channel-with.patch b/main/linux-postmarketos-qcom-msm8974/0004-net-qualcomm-bam-dmux-Always-open-close-channel-with.patch new file mode 100644 index 000000000..d22cd49ba --- /dev/null +++ b/main/linux-postmarketos-qcom-msm8974/0004-net-qualcomm-bam-dmux-Always-open-close-channel-with.patch @@ -0,0 +1,70 @@ +From b09965693f68b21abe33e99211218d21e99a5e17 Mon Sep 17 00:00:00 2001 +From: Minecrell +Date: Thu, 18 Feb 2021 11:44:28 +0100 +Subject: [PATCH 4/6] net: qualcomm: bam-dmux: Always open/close channel with + network interface + +Doesn't seem to cause issues and just seems cleaner... +--- + drivers/net/ethernet/qualcomm/bam-dmux.c | 28 +++++------------------- + 1 file changed, 6 insertions(+), 22 deletions(-) + +diff --git a/drivers/net/ethernet/qualcomm/bam-dmux.c b/drivers/net/ethernet/qualcomm/bam-dmux.c +index 171af41eb10a..880e0ca14beb 100644 +--- a/drivers/net/ethernet/qualcomm/bam-dmux.c ++++ b/drivers/net/ethernet/qualcomm/bam-dmux.c +@@ -90,7 +90,6 @@ struct bam_dmux { + struct bam_dmux_netdev { + struct bam_dmux *dmux; + u8 ch; +- bool open; + }; + + static void bam_dmux_pc_vote(struct bam_dmux *dmux, bool enable) +@@ -289,37 +288,22 @@ static int bam_dmux_send_cmd(struct bam_dmux_netdev *bndev, u8 cmd) + static int bam_dmux_netdev_open(struct net_device *netdev) + { + struct bam_dmux_netdev *bndev = netdev_priv(netdev); +- struct bam_dmux *dmux = bndev->dmux; + int ret; + +- /* Need to resume before starting the queue */ +- ret = pm_runtime_get_sync(dmux->dev); +- if (ret < 0) { +- pm_runtime_put_noidle(dmux->dev); ++ ret = bam_dmux_send_cmd(bndev, BAM_DMUX_HDR_CMD_OPEN); ++ if (ret) + return ret; +- } +- +- if (!bndev->open) { +- ret = bam_dmux_send_cmd(bndev, BAM_DMUX_HDR_CMD_OPEN); +- if (ret) +- goto err; +- +- bndev->open = true; +- } else { +- ret = 0; +- } + + netif_start_queue(netdev); +- +-err: +- pm_runtime_mark_last_busy(dmux->dev); +- pm_runtime_put_autosuspend(dmux->dev); +- return ret; ++ return 0; + } + + static int bam_dmux_netdev_stop(struct net_device *netdev) + { ++ struct bam_dmux_netdev *bndev = netdev_priv(netdev); ++ + netif_stop_queue(netdev); ++ bam_dmux_send_cmd(bndev, BAM_DMUX_HDR_CMD_CLOSE); + return 0; + } + +-- +2.30.1 + diff --git a/main/linux-postmarketos-qcom-msm8974/0005-net-qualcomm-bam-dmux-Fixup-default-MTU.patch b/main/linux-postmarketos-qcom-msm8974/0005-net-qualcomm-bam-dmux-Fixup-default-MTU.patch new file mode 100644 index 000000000..6682dcdcb --- /dev/null +++ b/main/linux-postmarketos-qcom-msm8974/0005-net-qualcomm-bam-dmux-Fixup-default-MTU.patch @@ -0,0 +1,52 @@ +From 742b7d66ad440a5612c916fac83818915c0ab531 Mon Sep 17 00:00:00 2001 +From: Minecrell +Date: Thu, 18 Feb 2021 12:06:16 +0100 +Subject: [PATCH 5/6] net: qualcomm: bam-dmux: Fixup default MTU + +> 1500 probably doesn't make sense by default... +--- + drivers/net/ethernet/qualcomm/bam-dmux.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/drivers/net/ethernet/qualcomm/bam-dmux.c b/drivers/net/ethernet/qualcomm/bam-dmux.c +index 880e0ca14beb..33f4c4cf8557 100644 +--- a/drivers/net/ethernet/qualcomm/bam-dmux.c ++++ b/drivers/net/ethernet/qualcomm/bam-dmux.c +@@ -8,7 +8,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -24,7 +23,6 @@ + + #define BAM_DMUX_BUFFER_SIZE SZ_2K + #define BAM_DMUX_MAX_DATA_SIZE (BAM_DMUX_BUFFER_SIZE - sizeof(struct bam_dmux_hdr)) +-#define BAM_DMUX_DEFAULT_MTU 2000 + #define BAM_DMUX_NUM_SKB 32 + + #define BAM_DMUX_AUTOSUSPEND_DELAY 1000 +@@ -446,16 +444,15 @@ static void bam_dmux_netdev_setup(struct net_device *dev) + dev->type = ARPHRD_RAWIP; + SET_NETDEV_DEVTYPE(dev, &wwan_type); + +- dev->mtu = BAM_DMUX_DEFAULT_MTU; ++ dev->mtu = ETH_DATA_LEN; + dev->max_mtu = BAM_DMUX_MAX_DATA_SIZE; + dev->needed_headroom = sizeof(struct bam_dmux_hdr); + dev->needed_tailroom = sizeof(u32); /* word-aligned */ ++ dev->tx_queue_len = DEFAULT_TX_QUEUE_LEN; + + /* This perm addr will be used as interface identifier by IPv6 */ + dev->addr_assign_type = NET_ADDR_RANDOM; + eth_random_addr(dev->perm_addr); +- +- dev->tx_queue_len = DEFAULT_TX_QUEUE_LEN; + } + + static void bam_dmux_register_netdev_work(struct work_struct *work) +-- +2.30.1 + diff --git a/main/linux-postmarketos-qcom-msm8974/0006-net-qualcomm-bam-dmux-Set-some-additional-flags.patch b/main/linux-postmarketos-qcom-msm8974/0006-net-qualcomm-bam-dmux-Set-some-additional-flags.patch new file mode 100644 index 000000000..bfb8e754e --- /dev/null +++ b/main/linux-postmarketos-qcom-msm8974/0006-net-qualcomm-bam-dmux-Set-some-additional-flags.patch @@ -0,0 +1,25 @@ +From ba93068e49b89374de1286db907d403fe3b3fbfe Mon Sep 17 00:00:00 2001 +From: Minecrell +Date: Thu, 18 Feb 2021 12:17:41 +0100 +Subject: [PATCH 6/6] net: qualcomm: bam-dmux: Set some additional flags + +Those are also set by qmi_wwan and mhi_net, not sure about IFF_MULTICAST. +--- + drivers/net/ethernet/qualcomm/bam-dmux.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/net/ethernet/qualcomm/bam-dmux.c b/drivers/net/ethernet/qualcomm/bam-dmux.c +index 33f4c4cf8557..749ae8d25d7f 100644 +--- a/drivers/net/ethernet/qualcomm/bam-dmux.c ++++ b/drivers/net/ethernet/qualcomm/bam-dmux.c +@@ -443,6 +443,7 @@ static void bam_dmux_netdev_setup(struct net_device *dev) + + dev->type = ARPHRD_RAWIP; + SET_NETDEV_DEVTYPE(dev, &wwan_type); ++ dev->flags = IFF_POINTOPOINT | IFF_NOARP; + + dev->mtu = ETH_DATA_LEN; + dev->max_mtu = BAM_DMUX_MAX_DATA_SIZE; +-- +2.30.1 + diff --git a/main/linux-postmarketos-qcom-msm8974/0007-net-qualcomm-bam-dmux-Use-netif_receive_skb-skb.patch b/main/linux-postmarketos-qcom-msm8974/0007-net-qualcomm-bam-dmux-Use-netif_receive_skb-skb.patch new file mode 100644 index 000000000..a31f5d179 --- /dev/null +++ b/main/linux-postmarketos-qcom-msm8974/0007-net-qualcomm-bam-dmux-Use-netif_receive_skb-skb.patch @@ -0,0 +1,29 @@ +From 19caaac9ad5e92b8c42d036ea6d7886d7849bad9 Mon Sep 17 00:00:00 2001 +From: Minecrell +Date: Sat, 20 Feb 2021 12:25:55 +0100 +Subject: [PATCH] net: qualcomm: bam-dmux: Use netif_receive_skb(skb) + +bam_dmux_rx_callback() is called in tasklet context, so we should use +netif_rx() instead of netif_rx_ni(). But actually we can apparently +even use netif_receive_skb(skb) in tasklet context. Not sure about +the exact difference... :D +--- + drivers/net/ethernet/qualcomm/bam-dmux.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/ethernet/qualcomm/bam-dmux.c b/drivers/net/ethernet/qualcomm/bam-dmux.c +index 749ae8d25d7f..6eb094fe689c 100644 +--- a/drivers/net/ethernet/qualcomm/bam-dmux.c ++++ b/drivers/net/ethernet/qualcomm/bam-dmux.c +@@ -573,7 +573,7 @@ static bool bam_dmux_cmd_data(struct bam_dmux_skb_dma *skb_dma) + break; + } + +- netif_rx_ni(skb); ++ netif_receive_skb(skb); + + if (bam_dmux_skb_dma_queue_rx(skb_dma, GFP_ATOMIC)) + dma_async_issue_pending(dmux->rx); +-- +2.30.1 + diff --git a/main/linux-postmarketos-qcom-msm8974/APKBUILD b/main/linux-postmarketos-qcom-msm8974/APKBUILD index 8cd9461c6..ca52be2c8 100644 --- a/main/linux-postmarketos-qcom-msm8974/APKBUILD +++ b/main/linux-postmarketos-qcom-msm8974/APKBUILD @@ -4,7 +4,7 @@ _config="config-$_flavor.$CARCH" pkgname=linux-$_flavor pkgver=5.9.13 -pkgrel=1 +pkgrel=2 _commit="ad989a3e7324563b3a85e521e052fec2c6b56752" pkgdesc="Kernel close to mainline with extra patches for Qualcomm MSM8974 devices" arch="armv7" @@ -22,6 +22,13 @@ makedepends=" " source="https://gitlab.com/postmarketOS/linux-postmarketos/-/archive/$_commit/linux-postmarketos-$_commit.tar.gz config-$_flavor.armv7 + 0001-net-qualcomm-bam-dmux-Switch-to-Raw-IP-mode.patch + 0002-net-qualcomm-bam-dmux-Set-parent-device-and-device-t.patch + 0003-net-qualcomm-bam-dmux-Set-netdev-dev_port-to-channel.patch + 0004-net-qualcomm-bam-dmux-Always-open-close-channel-with.patch + 0005-net-qualcomm-bam-dmux-Fixup-default-MTU.patch + 0006-net-qualcomm-bam-dmux-Set-some-additional-flags.patch + 0007-net-qualcomm-bam-dmux-Use-netif_receive_skb-skb.patch " builddir="$srcdir/linux-postmarketos-$_commit" @@ -50,4 +57,11 @@ package() { } sha512sums="935b1949e659ba83a54430346c7e4a1c32cc51910e2300b89ed54e2d3da890b281cfea51eb12af633c1f6c94c599e95842b81c6db04fbb5b2dbded46d8d0180a linux-postmarketos-ad989a3e7324563b3a85e521e052fec2c6b56752.tar.gz -7a39434a698cd990416daa48ef642b8ed62a0814d79fe9796da34f0cfe61d22d4a8b7b6f74ad63be93c5a6918f5c6b435d7ae37bbdb389635dc7c7a0b9351526 config-postmarketos-qcom-msm8974.armv7" +7a39434a698cd990416daa48ef642b8ed62a0814d79fe9796da34f0cfe61d22d4a8b7b6f74ad63be93c5a6918f5c6b435d7ae37bbdb389635dc7c7a0b9351526 config-postmarketos-qcom-msm8974.armv7 +939309f98d4a2e6bc3982704670acb68eaad92c28e9130988f1bd3474ad5dc76dff3f69c2d90a0738c43c60ac279990da0ba61d295eafc78f49d7ab50715ce01 0001-net-qualcomm-bam-dmux-Switch-to-Raw-IP-mode.patch +e4083319e44400e7ac50daedf201a8a80b2cfc083a4ff32aafb7733b4a155493e277737c449a6a7ff8b72b8516b92b9828dd00ad74e2457238f2d1cd936ec58d 0002-net-qualcomm-bam-dmux-Set-parent-device-and-device-t.patch +6a0be72e5213d7407b0ec3be9a283c85cc8bb3afe511297b449f2ecd79308b291a9eb8031f9a880702d64a65ce9e5702cf9943b7f97b7f3f099b5da93ba3a35d 0003-net-qualcomm-bam-dmux-Set-netdev-dev_port-to-channel.patch +df549f886c67701d7dbea4de342d364e93b0af3f574a6e16baefb21105958a61770653cf4b70e35102927b215f1a7b4a31cc6b6a3cf97ce25009437de342331f 0004-net-qualcomm-bam-dmux-Always-open-close-channel-with.patch +bd6dc6ac91038c60574cd561f02962040d52f9be2b2031de29a6adfa09845bfac8dd7d428fa1625e584ed2691d8f2795683650492981675e593defbe114c199d 0005-net-qualcomm-bam-dmux-Fixup-default-MTU.patch +0ec9db7bda49aebbb31fb116ef0c4e2ed5957334405404a664b22c639fb0978bdfe66e6981a9e499d6936f3bcdea713a964eb0ebdcc002804cf69dcf7fe2c8d7 0006-net-qualcomm-bam-dmux-Set-some-additional-flags.patch +fa313af091abc4d5550fbde741935472d06e1f1203e25856fdaf1cee73b45edbece31b2b033cfcd21aaa3e74eca0d45fb3e5484eec2b6f52e6e131ebc949279d 0007-net-qualcomm-bam-dmux-Use-netif_receive_skb-skb.patch"