diff --git a/include/image.mk b/include/image.mk index 46d592e8dc..fd04d4020b 100644 --- a/include/image.mk +++ b/include/image.mk @@ -588,7 +588,7 @@ define Device/Build/image DEVICE_ALT2_VARIANT="$(DEVICE_ALT2_VARIANT)" \ DEVICE_TITLE="$(DEVICE_TITLE)" \ TARGET="$(BOARD)" \ - SUBTARGET="$(SUBTARGET)" \ + SUBTARGET="$(if $(SUBTARGET),$(SUBTARGET),generic)" \ VERSION_NUMBER="$(VERSION_NUMBER)" \ VERSION_CODE="$(VERSION_CODE)" \ SUPPORTED_DEVICES="$(SUPPORTED_DEVICES)" \ diff --git a/package/firmware/ath10k-firmware/Makefile b/package/firmware/ath10k-firmware/Makefile index 9f1e7e676b..af883e6f03 100644 --- a/package/firmware/ath10k-firmware/Makefile +++ b/package/firmware/ath10k-firmware/Makefile @@ -64,92 +64,92 @@ define Download/ct-firmware-htt URL_FILE:=$($(1)_FIRMWARE_FILE_CT_HTT) endef -QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.014 +QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.015 define Download/ath10k-firmware-qca988x-ct $(call Download/ct-firmware,QCA988X,) - HASH:=19db86003509dedb8ace339c183813ca637d65af24d00666411d1590efe33e13 + HASH:=a3a760d0d72707feffa496b6d2266bd9195f09806553b36420b60c0f12b8b87e endef $(eval $(call Download,ath10k-firmware-qca988x-ct)) -QCA988X_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.014 +QCA988X_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.015 define Download/ath10k-firmware-qca988x-ct-htt $(call Download/ct-firmware-htt,QCA988X,) - HASH:=454e67dab545e720369a07be2fee16de008c76db4ab3119e7760bf9f7504c066 + HASH:=3114a54103d2b492fa1ef903769721f59953c829020d62502a1ec411ab4146d5 endef $(eval $(call Download,ath10k-firmware-qca988x-ct-htt)) -QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.014 +QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.015 define Download/ath10k-firmware-qca9887-ct $(call Download/ct-firmware,QCA9887,ath10k-9887) - HASH:=b3c738328427e124701a5735d65cde0f60e4172ae5bc23b00e5b16df7995dbd4 + HASH:=71e8b76dfd7c786d2f57bb7df207dcd13a91d3b492cfbd28916f084d0d1bb5e7 endef $(eval $(call Download,ath10k-firmware-qca9887-ct)) -QCA9887_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.014 +QCA9887_FIRMWARE_FILE_CT_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.015 define Download/ath10k-firmware-qca9887-ct-htt $(call Download/ct-firmware-htt,QCA9887,ath10k-9887) - HASH:=4432ccee23133bbaa4a5552e50a1e7e889b257362603e05530e751b67c29b7b5 + HASH:=b085e5d2239727b72bc647a76864431b8ac48438e6a33b1d55edc2222468f6ff endef $(eval $(call Download,ath10k-firmware-qca9887-ct-htt)) -QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.014 +QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.015 define Download/ath10k-firmware-qca99x0-ct $(call Download/ct-firmware,QCA99X0,ath10k-10-4b) - HASH:=9a908f743604a468b651a5f73c49e6b0ba11a05c677b9726fbf041b849d88b25 + HASH:=edebe2f6f169cdd05c81a8a78156fb3426a66f415e7946af2ae4b7310fca5fe3 endef $(eval $(call Download,ath10k-firmware-qca99x0-ct)) -QCA99X0_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.014 +QCA99X0_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.015 define Download/ath10k-firmware-qca99x0-ct-htt $(call Download/ct-firmware-htt,QCA99X0,ath10k-10-4b) - HASH:=800dd0816702aaca75f3eb5436c2ea724a6c24833838cd54399b9286b4d4fbe8 + HASH:=1ef67fb07da9082886e4dd554dfc19256e10b500faf9e4b2a5774d0238130bae endef $(eval $(call Download,ath10k-firmware-qca99x0-ct-htt)) -QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.014 +QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.015 define Download/ath10k-firmware-qca9984-ct $(call Download/ct-firmware,QCA9984,ath10k-9984-10-4b) - HASH:=a8b12dba478e8c9d4a215f82324382c7554a900e83c31775f8511af84e59fef7 + HASH:=c2f04da3285aad37baef9c37c9905a31927175dd234cd4378fd56c106e5c9379 endef $(eval $(call Download,ath10k-firmware-qca9984-ct)) -QCA9984_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.014 +QCA9984_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.015 define Download/ath10k-firmware-qca9984-ct-htt $(call Download/ct-firmware-htt,QCA9984,ath10k-9984-10-4b) - HASH:=d185651b5d3d1f0082720bc6c2bbe43b2a00cdb6333403fac9336a720b1d93ae + HASH:=0c9ede1036750d68885e6481fa84f3cb72192b8440b47719344f7327a030f05d endef $(eval $(call Download,ath10k-firmware-qca9984-ct-htt)) -QCA4019_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.014 +QCA4019_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.015 define Download/ath10k-firmware-qca4019-ct $(call Download/ct-firmware,QCA4019,ath10k-4019-10-4b) - HASH:=4c2e48835219f420b18dc58e31d1387dae0da70d8170c3fc5e7bce39c06cf355 + HASH:=1acbb7e7a6300091715a3dfe1b248c7833734961de52cc3465c1ed231a4d84f1 endef $(eval $(call Download,ath10k-firmware-qca4019-ct)) -QCA4019_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.014 +QCA4019_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.015 define Download/ath10k-firmware-qca4019-ct-htt $(call Download/ct-firmware-htt,QCA4019,ath10k-4019-10-4b) - HASH:=743da4d537d094a7839bd8e1f792e4cb8b517101f66777c84fd84585f0b85e64 + HASH:=1065e4d3e55da84ec9e69268a4c5dba55ea33827c48a7c14bb8f0c167eb11b4c endef $(eval $(call Download,ath10k-firmware-qca4019-ct-htt)) -QCA9888_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.014 +QCA9888_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.015 define Download/ath10k-firmware-qca9888-ct $(call Download/ct-firmware,QCA9888,ath10k-9888-10-4b) - HASH:=5809c8a6b3bd81cbc829b5e90af3c0a3300488fe194524a90e260448158016b6 + HASH:=559ebd16872a8b43443c51bb4b7d021e5b75e65893d333d9393f3f6012f4ac79 endef $(eval $(call Download,ath10k-firmware-qca9888-ct)) -QCA9888_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.014 +QCA9888_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.015 define Download/ath10k-firmware-qca9888-ct-htt $(call Download/ct-firmware-htt,QCA9888,ath10k-9888-10-4b) - HASH:=a284943c203ff66ec2e865f20ae2d2aa049b450801d7205b53c9163862228f15 + HASH:=4feaf5e7c4c1745f499ba8c3125db41675800ebedaea455c418c117805c5b372 endef $(eval $(call Download,ath10k-firmware-qca9888-ct-htt)) diff --git a/package/kernel/ath10k-ct/Makefile b/package/kernel/ath10k-ct/Makefile index c29d28f41a..02df930729 100644 --- a/package/kernel/ath10k-ct/Makefile +++ b/package/kernel/ath10k-ct/Makefile @@ -8,9 +8,9 @@ PKG_LICENSE_FILES:= PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2019-09-09 -PKG_SOURCE_VERSION:=5e8cd86f90dac966d12df6ece84ac41458d0e95f -PKG_MIRROR_HASH:=dc1097f3a7b4b7e346918f206746d00a0b7df07ae3be9b89be55dfaef3cbbe45 +PKG_SOURCE_DATE:=2020-01-29 +PKG_SOURCE_VERSION:=3e3d0adb3cc6c6cf56a05ff661796948f09c5aa8 +PKG_MIRROR_HASH:=6341de2d3b19b2a32205a1633bf9556815943a2cff38acbbe5f61c6c0164fdcc # Build the 5.2 ath10k-ct driver version. Other option is "-4.19". # Probably this should match as closely as diff --git a/package/kernel/ath10k-ct/patches/161-ath10k-add-support-for-configuring-management-packet.patch b/package/kernel/ath10k-ct/patches/161-ath10k-add-support-for-configuring-management-packet.patch index e67003c5a7..f18afae327 100644 --- a/package/kernel/ath10k-ct/patches/161-ath10k-add-support-for-configuring-management-packet.patch +++ b/package/kernel/ath10k-ct/patches/161-ath10k-add-support-for-configuring-management-packet.patch @@ -43,7 +43,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux static int ath10k_mac_get_max_vht_mcs_map(u16 mcs_map, int nss) { switch ((mcs_map >> (2 * nss)) & 0x3) { -@@ -6405,9 +6421,10 @@ static void ath10k_bss_info_changed(stru +@@ -6413,9 +6429,10 @@ static void ath10k_bss_info_changed(stru struct cfg80211_chan_def def; u32 vdev_param, pdev_param, slottime, preamble; u16 bitrate, hw_value; @@ -56,7 +56,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux mutex_lock(&ar->conf_mutex); -@@ -6613,6 +6630,30 @@ static void ath10k_bss_info_changed(stru +@@ -6621,6 +6638,30 @@ static void ath10k_bss_info_changed(stru arvif->vdev_id, ret); } diff --git a/package/kernel/ath10k-ct/patches/162-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch b/package/kernel/ath10k-ct/patches/162-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch index a24029983c..aa473e8fea 100644 --- a/package/kernel/ath10k-ct/patches/162-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch +++ b/package/kernel/ath10k-ct/patches/162-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch @@ -26,7 +26,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux if (ath10k_rates[i].bitrate == bitrate) return hw_value_prefix | ath10k_rates[i].hw_value; } -@@ -6636,22 +6636,22 @@ static void ath10k_bss_info_changed(stru +@@ -6644,22 +6644,22 @@ static void ath10k_bss_info_changed(stru return; } diff --git a/package/kernel/ath10k-ct/patches/163-ath10k-fix-incorrect-multicast-broadcast-rate-settin.patch b/package/kernel/ath10k-ct/patches/163-ath10k-fix-incorrect-multicast-broadcast-rate-settin.patch index f6fd75b7e5..fc866f49b5 100644 --- a/package/kernel/ath10k-ct/patches/163-ath10k-fix-incorrect-multicast-broadcast-rate-settin.patch +++ b/package/kernel/ath10k-ct/patches/163-ath10k-fix-incorrect-multicast-broadcast-rate-settin.patch @@ -17,7 +17,7 @@ Origin: other, https://patchwork.kernel.org/patch/10723033/ --- a/ath10k-4.19/mac.c +++ b/ath10k-4.19/mac.c -@@ -6421,8 +6421,8 @@ static void ath10k_bss_info_changed(stru +@@ -6429,8 +6429,8 @@ static void ath10k_bss_info_changed(stru struct cfg80211_chan_def def; u32 vdev_param, pdev_param, slottime, preamble; u16 bitrate, hw_value; @@ -28,7 +28,7 @@ Origin: other, https://patchwork.kernel.org/patch/10723033/ enum nl80211_band band; const struct ieee80211_supported_band *sband; -@@ -6595,7 +6595,11 @@ static void ath10k_bss_info_changed(stru +@@ -6603,7 +6603,11 @@ static void ath10k_bss_info_changed(stru if (changed & BSS_CHANGED_MCAST_RATE && !WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) { band = def.chan->band; diff --git a/package/kernel/ath10k-ct/patches/164-ath10k-commit-rates-from-mac80211.patch b/package/kernel/ath10k-ct/patches/164-ath10k-commit-rates-from-mac80211.patch index aab435bccd..9a31164fcc 100644 --- a/package/kernel/ath10k-ct/patches/164-ath10k-commit-rates-from-mac80211.patch +++ b/package/kernel/ath10k-ct/patches/164-ath10k-commit-rates-from-mac80211.patch @@ -11,7 +11,7 @@ Signed-off-by: Sven Eckelmann --- a/ath10k-4.19/mac.c +++ b/ath10k-4.19/mac.c -@@ -6617,6 +6617,7 @@ static void ath10k_bss_info_changed(stru +@@ -6625,6 +6625,7 @@ static void ath10k_bss_info_changed(stru "mac vdev %d mcast_rate %x\n", arvif->vdev_id, rate); @@ -19,7 +19,7 @@ Signed-off-by: Sven Eckelmann vdev_param = ar->wmi.vdev_param->mcast_data_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); -@@ -6625,6 +6626,7 @@ static void ath10k_bss_info_changed(stru +@@ -6633,6 +6634,7 @@ static void ath10k_bss_info_changed(stru "failed to set mcast rate on vdev %i: %d\n", arvif->vdev_id, ret); @@ -27,7 +27,7 @@ Signed-off-by: Sven Eckelmann vdev_param = ar->wmi.vdev_param->bcast_data_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); -@@ -6651,6 +6653,7 @@ static void ath10k_bss_info_changed(stru +@@ -6659,6 +6661,7 @@ static void ath10k_bss_info_changed(stru return; } @@ -37,7 +37,7 @@ Signed-off-by: Sven Eckelmann hw_rate_code); --- a/ath10k-5.2/mac.c +++ b/ath10k-5.2/mac.c -@@ -6732,6 +6732,7 @@ static void ath10k_bss_info_changed(stru +@@ -6742,6 +6742,7 @@ static void ath10k_bss_info_changed(stru "mac vdev %d mcast_rate %x\n", arvif->vdev_id, rate); @@ -45,7 +45,7 @@ Signed-off-by: Sven Eckelmann vdev_param = ar->wmi.vdev_param->mcast_data_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); -@@ -6740,6 +6741,7 @@ static void ath10k_bss_info_changed(stru +@@ -6750,6 +6751,7 @@ static void ath10k_bss_info_changed(stru "failed to set mcast rate on vdev %i: %d\n", arvif->vdev_id, ret); @@ -53,7 +53,7 @@ Signed-off-by: Sven Eckelmann vdev_param = ar->wmi.vdev_param->bcast_data_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); -@@ -6766,6 +6768,7 @@ static void ath10k_bss_info_changed(stru +@@ -6776,6 +6778,7 @@ static void ath10k_bss_info_changed(stru return; } diff --git a/package/kernel/ath10k-ct/patches/170-mac80211-pass-the-vif-to-cancel_remain_on_channel.patch b/package/kernel/ath10k-ct/patches/170-mac80211-pass-the-vif-to-cancel_remain_on_channel.patch index ee9667ccb0..180b0d5bf7 100644 --- a/package/kernel/ath10k-ct/patches/170-mac80211-pass-the-vif-to-cancel_remain_on_channel.patch +++ b/package/kernel/ath10k-ct/patches/170-mac80211-pass-the-vif-to-cancel_remain_on_channel.patch @@ -17,7 +17,7 @@ Signed-off-by: Johannes Berg --- a/ath10k-4.19/mac.c +++ b/ath10k-4.19/mac.c -@@ -7775,7 +7775,8 @@ exit: +@@ -7783,7 +7783,8 @@ exit: return ret; } @@ -29,7 +29,7 @@ Signed-off-by: Johannes Berg --- a/ath10k-5.2/mac.c +++ b/ath10k-5.2/mac.c -@@ -7883,7 +7883,8 @@ exit: +@@ -7893,7 +7893,8 @@ exit: return ret; } diff --git a/package/kernel/ath10k-ct/patches/201-ath10k-4.16_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch b/package/kernel/ath10k-ct/patches/201-ath10k-4.16_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch index ba42fc1d2d..d526e2795b 100644 --- a/package/kernel/ath10k-ct/patches/201-ath10k-4.16_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch +++ b/package/kernel/ath10k-ct/patches/201-ath10k-4.16_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch @@ -161,7 +161,7 @@ v13: .patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR, .uart_pin = 7, .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH, -@@ -3167,6 +3173,10 @@ int ath10k_core_start(struct ath10k *ar, +@@ -3170,6 +3176,10 @@ int ath10k_core_start(struct ath10k *ar, ath10k_wmi_check_apply_board_power_ctl_table(ar); } @@ -172,7 +172,7 @@ v13: return 0; err_hif_stop: -@@ -3421,9 +3431,18 @@ static void ath10k_core_register_work(st +@@ -3424,9 +3434,18 @@ static void ath10k_core_register_work(st goto err_spectral_destroy; } @@ -191,7 +191,7 @@ v13: err_spectral_destroy: ath10k_spectral_destroy(ar); err_debug_destroy: -@@ -3481,6 +3500,8 @@ void ath10k_core_unregister(struct ath10 +@@ -3484,6 +3503,8 @@ void ath10k_core_unregister(struct ath10 if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags)) return; @@ -464,7 +464,7 @@ v13: static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = { --- a/ath10k-4.19/wmi.c +++ b/ath10k-4.19/wmi.c -@@ -8070,6 +8070,49 @@ ath10k_wmi_op_gen_peer_set_param(struct +@@ -8071,6 +8071,49 @@ ath10k_wmi_op_gen_peer_set_param(struct return skb; } @@ -514,7 +514,7 @@ v13: static struct sk_buff * ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id, enum wmi_sta_ps_mode psmode) -@@ -9821,6 +9864,9 @@ static const struct wmi_ops wmi_ops = { +@@ -9822,6 +9865,9 @@ static const struct wmi_ops wmi_ops = { .fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, .gen_echo = ath10k_wmi_op_gen_echo, @@ -524,7 +524,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -9891,6 +9937,8 @@ static const struct wmi_ops wmi_10_1_ops +@@ -9892,6 +9938,8 @@ static const struct wmi_ops wmi_10_1_ops .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, .gen_echo = ath10k_wmi_op_gen_echo, @@ -533,7 +533,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -9969,6 +10017,8 @@ static const struct wmi_ops wmi_10_2_ops +@@ -9970,6 +10018,8 @@ static const struct wmi_ops wmi_10_2_ops .gen_delba_send = ath10k_wmi_op_gen_delba_send, .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, @@ -542,7 +542,7 @@ v13: /* .gen_pdev_enable_adaptive_cca not implemented */ }; -@@ -10039,6 +10089,8 @@ static const struct wmi_ops wmi_10_2_4_o +@@ -10040,6 +10090,8 @@ static const struct wmi_ops wmi_10_2_4_o .gen_pdev_enable_adaptive_cca = ath10k_wmi_op_gen_pdev_enable_adaptive_cca, .get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype, @@ -551,7 +551,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -10119,6 +10171,8 @@ static const struct wmi_ops wmi_10_4_ops +@@ -10120,6 +10172,8 @@ static const struct wmi_ops wmi_10_4_ops .gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info, .gen_echo = ath10k_wmi_op_gen_echo, .gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config, @@ -683,7 +683,7 @@ v13: .patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR, .uart_pin = 7, .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH, -@@ -3452,6 +3458,10 @@ int ath10k_core_start(struct ath10k *ar, +@@ -3497,6 +3503,10 @@ int ath10k_core_start(struct ath10k *ar, ath10k_wmi_check_apply_board_power_ctl_table(ar); } @@ -694,7 +694,7 @@ v13: return 0; err_hif_stop: -@@ -3708,9 +3718,18 @@ static void ath10k_core_register_work(st +@@ -3753,9 +3763,18 @@ static void ath10k_core_register_work(st goto err_spectral_destroy; } @@ -713,7 +713,7 @@ v13: err_spectral_destroy: ath10k_spectral_destroy(ar); err_debug_destroy: -@@ -3770,6 +3789,8 @@ void ath10k_core_unregister(struct ath10 +@@ -3815,6 +3834,8 @@ void ath10k_core_unregister(struct ath10 if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags)) return; @@ -732,7 +732,7 @@ v13: #include "htt.h" #include "htc.h" -@@ -1441,6 +1442,13 @@ struct ath10k { +@@ -1447,6 +1448,13 @@ struct ath10k { } testmode; struct { @@ -978,7 +978,7 @@ v13: static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = { --- a/ath10k-5.2/wmi.c +++ b/ath10k-5.2/wmi.c -@@ -8286,6 +8286,49 @@ ath10k_wmi_op_gen_peer_set_param(struct +@@ -8295,6 +8295,49 @@ ath10k_wmi_op_gen_peer_set_param(struct return skb; } @@ -1028,7 +1028,7 @@ v13: static struct sk_buff * ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id, enum wmi_sta_ps_mode psmode) -@@ -10058,6 +10101,9 @@ static const struct wmi_ops wmi_ops = { +@@ -10067,6 +10110,9 @@ static const struct wmi_ops wmi_ops = { .fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, .gen_echo = ath10k_wmi_op_gen_echo, @@ -1038,7 +1038,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -10128,6 +10174,8 @@ static const struct wmi_ops wmi_10_1_ops +@@ -10137,6 +10183,8 @@ static const struct wmi_ops wmi_10_1_ops .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, .gen_echo = ath10k_wmi_op_gen_echo, @@ -1047,7 +1047,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -10207,6 +10255,8 @@ static const struct wmi_ops wmi_10_2_ops +@@ -10216,6 +10264,8 @@ static const struct wmi_ops wmi_10_2_ops .gen_delba_send = ath10k_wmi_op_gen_delba_send, .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, @@ -1056,7 +1056,7 @@ v13: /* .gen_pdev_enable_adaptive_cca not implemented */ }; -@@ -10278,6 +10328,8 @@ static const struct wmi_ops wmi_10_2_4_o +@@ -10287,6 +10337,8 @@ static const struct wmi_ops wmi_10_2_4_o ath10k_wmi_op_gen_pdev_enable_adaptive_cca, .get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype, .gen_bb_timing = ath10k_wmi_10_2_4_op_gen_bb_timing, @@ -1065,7 +1065,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -10359,6 +10411,8 @@ static const struct wmi_ops wmi_10_4_ops +@@ -10368,6 +10420,8 @@ static const struct wmi_ops wmi_10_4_ops .gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info, .gen_echo = ath10k_wmi_op_gen_echo, .gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config, diff --git a/package/kernel/ath10k-ct/patches/202-ath10k-4.16-use-tpt-trigger-by-default.patch b/package/kernel/ath10k-ct/patches/202-ath10k-4.16-use-tpt-trigger-by-default.patch index d730f9931f..db62631dfd 100644 --- a/package/kernel/ath10k-ct/patches/202-ath10k-4.16-use-tpt-trigger-by-default.patch +++ b/package/kernel/ath10k-ct/patches/202-ath10k-4.16-use-tpt-trigger-by-default.patch @@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin --- a/ath10k-4.19/core.h +++ b/ath10k-4.19/core.h -@@ -1488,6 +1488,10 @@ struct ath10k { +@@ -1489,6 +1489,10 @@ struct ath10k { u8 csi_data[4096]; u16 csi_data_len; @@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin if (ret) --- a/ath10k-4.19/mac.c +++ b/ath10k-4.19/mac.c -@@ -9983,7 +9983,7 @@ int ath10k_mac_register(struct ath10k *a +@@ -9987,7 +9987,7 @@ int ath10k_mac_register(struct ath10k *a wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST); #ifdef CPTCFG_MAC80211_LEDS @@ -53,7 +53,7 @@ Signed-off-by: Mathias Kresin #endif --- a/ath10k-5.2/core.h +++ b/ath10k-5.2/core.h -@@ -1543,6 +1543,10 @@ struct ath10k { +@@ -1550,6 +1550,10 @@ struct ath10k { u8 csi_data[4096]; u16 csi_data_len; @@ -79,7 +79,7 @@ Signed-off-by: Mathias Kresin if (ret) --- a/ath10k-5.2/mac.c +++ b/ath10k-5.2/mac.c -@@ -10179,7 +10179,7 @@ int ath10k_mac_register(struct ath10k *a +@@ -10187,7 +10187,7 @@ int ath10k_mac_register(struct ath10k *a ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER; #ifdef CPTCFG_MAC80211_LEDS diff --git a/package/kernel/ath10k-ct/patches/203-ath10k-Limit-available-channels-via-DT-ieee80211-fre.patch b/package/kernel/ath10k-ct/patches/203-ath10k-Limit-available-channels-via-DT-ieee80211-fre.patch index 8fe1fb8f97..f47e9d64c0 100644 --- a/package/kernel/ath10k-ct/patches/203-ath10k-Limit-available-channels-via-DT-ieee80211-fre.patch +++ b/package/kernel/ath10k-ct/patches/203-ath10k-Limit-available-channels-via-DT-ieee80211-fre.patch @@ -29,7 +29,7 @@ Forwarded: https://patchwork.kernel.org/patch/10549245/ #include #include #include -@@ -9707,6 +9708,7 @@ int ath10k_mac_register(struct ath10k *a +@@ -9711,6 +9712,7 @@ int ath10k_mac_register(struct ath10k *a ar->hw->wiphy->bands[NL80211_BAND_5GHZ] = band; } diff --git a/package/kernel/ath10k-ct/patches/976-ath10k-Check-if-station-exists-before-forwarding-tx-.patch b/package/kernel/ath10k-ct/patches/976-ath10k-Check-if-station-exists-before-forwarding-tx-.patch index cd8967cb93..0ff885d95a 100644 --- a/package/kernel/ath10k-ct/patches/976-ath10k-Check-if-station-exists-before-forwarding-tx-.patch +++ b/package/kernel/ath10k-ct/patches/976-ath10k-Check-if-station-exists-before-forwarding-tx-.patch @@ -70,7 +70,7 @@ Signed-off-by: Hauke Mehrtens --- a/ath10k-5.2/htt_rx.c +++ b/ath10k-5.2/htt_rx.c -@@ -2507,7 +2507,7 @@ do_generic: +@@ -2568,7 +2568,7 @@ do_generic: spin_lock_bh(&ar->data_lock); peer = ath10k_peer_find_by_id(ar, peer_id); diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh index d6f460b932..ac9984ef22 100644 --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh @@ -894,7 +894,7 @@ drv_mac80211_setup() { staidx=0 [ -n "$chanbw" ] && { - for file in /sys/kernel/debug/ieee80211/$phy/ath9k/chanbw /sys/kernel/debug/ieee80211/$phy/ath5k/bwmode; do + for file in /sys/kernel/debug/ieee80211/$phy/ath9k*/chanbw /sys/kernel/debug/ieee80211/$phy/ath5k/bwmode; do [ -f "$file" ] && echo "$chanbw" > "$file" done } diff --git a/package/network/services/uhttpd/Makefile b/package/network/services/uhttpd/Makefile index daa5667854..fe4d0aaaed 100644 --- a/package/network/services/uhttpd/Makefile +++ b/package/network/services/uhttpd/Makefile @@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uhttpd -PKG_RELEASE:=2 +PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/uhttpd.git -PKG_SOURCE_DATE:=2019-12-22 -PKG_SOURCE_VERSION:=5f9ae5738372aaa3a6be2f0a278933563d3f191a -PKG_MIRROR_HASH:=16977c2d7e68f6db3241f874df625af9bd3bafa06fe4499ecb3561c825321e5d +PKG_SOURCE_DATE:=2020-02-12 +PKG_SOURCE_VERSION:=2ee323c01079248baa9465969df9e25b5fb68cdf +PKG_MIRROR_HASH:=ebec09286cf5f977cac893931a5a4f27ba891db88d5e44a9b0de9446ae431527 PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=ISC diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile index b6dec19220..89e5aa96f9 100644 --- a/package/system/procd/Makefile +++ b/package/system/procd/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git -PKG_SOURCE_DATE:=2020-02-04 -PKG_SOURCE_VERSION:=bcb86554f1b454531e79dac82fcb0463d125f2fb -PKG_MIRROR_HASH:=a36de3a8a5849616d251403b6a89ffb078507e4278ce09e86fec2f9a0583a426 +PKG_SOURCE_DATE:=2020-02-11 +PKG_SOURCE_VERSION:=c30b23e3657a2838a99daa8bd2d16909c027a261 +PKG_MIRROR_HASH:=cb105e0269d6fb5641ab636f36b943652302a3341bc0068eff38a646d34ae80d CMAKE_INSTALL:=1 PKG_LICENSE:=GPL-2.0 diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wr74xn-v1.dtsi b/target/linux/ath79/dts/ar7240_tplink.dtsi similarity index 71% rename from target/linux/ath79/dts/ar7240_tplink_tl-wr74xn-v1.dtsi rename to target/linux/ath79/dts/ar7240_tplink.dtsi index 147fcad666..de0b36bbf8 100644 --- a/target/linux/ath79/dts/ar7240_tplink_tl-wr74xn-v1.dtsi +++ b/target/linux/ath79/dts/ar7240_tplink.dtsi @@ -32,10 +32,11 @@ }; }; - leds { + leds: leds { compatible = "gpio-leds"; + pinctrl-names = "default"; - pinctrl-0 = <&switch_led_pins>; + pinctrl-0 = <&pinmux_switch_led_pins>; led_system: system { label = "tp-link:green:system"; @@ -46,31 +47,6 @@ label = "tp-link:green:qss"; gpios = <&gpio 0 GPIO_ACTIVE_LOW>; }; - - lan1 { - label = "tp-link:green:lan1"; - gpios = <&gpio 13 GPIO_ACTIVE_LOW>; - }; - - lan2 { - label = "tp-link:green:lan2"; - gpios = <&gpio 14 GPIO_ACTIVE_LOW>; - }; - - lan3 { - label = "tp-link:green:lan3"; - gpios = <&gpio 15 GPIO_ACTIVE_LOW>; - }; - - lan4 { - label = "tp-link:green:lan4"; - gpios = <&gpio 16 GPIO_ACTIVE_LOW>; - }; - - wan { - label = "tp-link:green:wan"; - gpios = <&gpio 17 GPIO_ACTIVE_LOW>; - }; }; ath9k-leds { @@ -105,7 +81,7 @@ read-only; }; - firmware: partition@20000 { + partition@20000 { compatible = "tplink,firmware"; reg = <0x20000 0x3d0000>; label = "firmware"; @@ -120,25 +96,14 @@ }; }; -ð0 { - status = "okay"; - - mtd-mac-address = <&uboot 0x1fc00>; - mtd-mac-address-increment = <(-1)>; -}; - ð1 { status = "okay"; - - mtd-mac-address = <&uboot 0x1fc00>; - mtd-mac-address-increment = <1>; }; &pcie { status = "okay"; ath9k: wifi@0,0 { - compatible = "pci168c,002b"; reg = <0x0000 0 0 0 0>; qca,no-eeprom; mtd-mac-address = <&uboot 0x1fc00>; @@ -148,7 +113,7 @@ }; &pinmux { - switch_led_pins: pinmux_switch_led_pins { + pinmux_switch_led_pins: switch_led_pins { pinctrl-single,bits = <0x0 0x0 0xf8>; }; }; diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wa.dtsi b/target/linux/ath79/dts/ar7240_tplink_tl-wa.dtsi new file mode 100644 index 0000000000..ac5a4d5ee9 --- /dev/null +++ b/target/linux/ath79/dts/ar7240_tplink_tl-wa.dtsi @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "ar7240_tplink.dtsi" + +&leds { + lan { + label = "tp-link:green:lan"; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + }; +}; + +ð1 { + mtd-mac-address = <&uboot 0x1fc00>; +}; + +&ath9k { + compatible = "pci168c,002a"; +}; diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wa830re-v1.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wa830re-v1.dts new file mode 100644 index 0000000000..f74ddc04ed --- /dev/null +++ b/target/linux/ath79/dts/ar7240_tplink_tl-wa830re-v1.dts @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar7240_tplink_tl-wa.dtsi" + +/ { + model = "TP-Link TL-WA830RE v1"; + compatible = "tplink,tl-wa830re-v1", "qca,ar7240"; +}; diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wr.dtsi b/target/linux/ath79/dts/ar7240_tplink_tl-wr.dtsi new file mode 100644 index 0000000000..7621b1d53c --- /dev/null +++ b/target/linux/ath79/dts/ar7240_tplink_tl-wr.dtsi @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "ar7240_tplink.dtsi" + +&leds { + lan1 { + label = "tp-link:green:lan1"; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + }; + + lan2 { + label = "tp-link:green:lan2"; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + }; + + lan3 { + label = "tp-link:green:lan3"; + gpios = <&gpio 15 GPIO_ACTIVE_LOW>; + }; + + lan4 { + label = "tp-link:green:lan4"; + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + }; + + wan { + label = "tp-link:green:wan"; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + }; +}; + +ð0 { + status = "okay"; + + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <(-1)>; +}; + +ð1 { + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <1>; +}; + +&ath9k { + compatible = "pci168c,002b"; +}; diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wr740n-v1.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wr740n-v1.dts index be18fdd052..c49272bcb9 100644 --- a/target/linux/ath79/dts/ar7240_tplink_tl-wr740n-v1.dts +++ b/target/linux/ath79/dts/ar7240_tplink_tl-wr740n-v1.dts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT /dts-v1/; -#include "ar7240_tplink_tl-wr74xn-v1.dtsi" +#include "ar7240_tplink_tl-wr.dtsi" / { model = "TP-Link TL-WR740N v1/v2"; diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wr740n-v3.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wr740n-v3.dts index d0addda44a..23867a2521 100644 --- a/target/linux/ath79/dts/ar7240_tplink_tl-wr740n-v3.dts +++ b/target/linux/ath79/dts/ar7240_tplink_tl-wr740n-v3.dts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT /dts-v1/; -#include "ar7240_tplink_tl-wr74xn-v1.dtsi" +#include "ar7240_tplink_tl-wr.dtsi" / { model = "TP-Link TL-WR740N v3"; diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wr741-v1.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wr741-v1.dts index af9c907559..38d7f2af60 100644 --- a/target/linux/ath79/dts/ar7240_tplink_tl-wr741-v1.dts +++ b/target/linux/ath79/dts/ar7240_tplink_tl-wr741-v1.dts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT /dts-v1/; -#include "ar7240_tplink_tl-wr74xn-v1.dtsi" +#include "ar7240_tplink_tl-wr.dtsi" / { model = "TP-Link TL-WR741N/ND v1/v2"; diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wr743nd-v1.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wr743nd-v1.dts index 2c55dff97e..6cfaa9905c 100644 --- a/target/linux/ath79/dts/ar7240_tplink_tl-wr743nd-v1.dts +++ b/target/linux/ath79/dts/ar7240_tplink_tl-wr743nd-v1.dts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT /dts-v1/; -#include "ar7240_tplink_tl-wr74xn-v1.dtsi" +#include "ar7240_tplink_tl-wr.dtsi" / { model = "TP-Link TL-WR743ND v1"; diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wr841-v5.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wr841-v5.dts index e881821d6c..c030342d22 100644 --- a/target/linux/ath79/dts/ar7240_tplink_tl-wr841-v5.dts +++ b/target/linux/ath79/dts/ar7240_tplink_tl-wr841-v5.dts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT /dts-v1/; -#include "ar7240_tplink_tl-wr74xn-v1.dtsi" +#include "ar7240_tplink_tl-wr.dtsi" / { model = "TP-Link TL-WR841N/ND v5/v6"; diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wr941-v4.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wr941-v4.dts index 8d844d54f7..c8fe835e7e 100644 --- a/target/linux/ath79/dts/ar7240_tplink_tl-wr941-v4.dts +++ b/target/linux/ath79/dts/ar7240_tplink_tl-wr941-v4.dts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT /dts-v1/; -#include "ar7240_tplink_tl-wr74xn-v1.dtsi" +#include "ar7240_tplink_tl-wr.dtsi" / { model = "TP-Link TL-WR941N/ND v4"; diff --git a/target/linux/ath79/dts/tp9343_tplink_tl-wr940n-v6.dts b/target/linux/ath79/dts/tp9343_tplink_tl-wr940n-v6.dts new file mode 100644 index 0000000000..31f0c14afb --- /dev/null +++ b/target/linux/ath79/dts/tp9343_tplink_tl-wr940n-v6.dts @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "tp9343_tplink_tl-wr94x.dtsi" + +/ { + compatible = "tplink,tl-wr940n-v6", "qca,tp9343"; + model = "TP-Link TL-WR940N v6"; + + aliases { + led-boot = &led_diag_orange; + led-failsafe = &led_diag_orange; + led-running = &led_diag_orange; + led-upgrade = &led_diag_orange; + }; + + leds { + compatible = "gpio-leds"; + + wan_blue { + label = "tp-link:blue:wan"; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + }; + + led_diag_orange: diag_orange { + label = "tp-link:orange:diag"; + gpios = <&gpio 15 GPIO_ACTIVE_HIGH>; + default-state = "on"; + }; + }; +}; + +ð1 { + mtd-mac-address = <&uboot 0x1fc00>; +}; diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index 3c74b0f7d7..05d2ba6a75 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -158,6 +158,7 @@ define Device/avm_fritz300e append-squashfs-fakeroot-be | pad-to 256 | append-rootfs | pad-rootfs | \ append-metadata | check-size $$$$(IMAGE_SIZE) DEVICE_PACKAGES := fritz-tffs rssileds -swconfig + SUPPORTED_DEVICES += fritz300e endef TARGET_DEVICES += avm_fritz300e diff --git a/target/linux/ath79/image/tiny-tp-link.mk b/target/linux/ath79/image/tiny-tp-link.mk index 2107e47cc3..8f6f2fe14a 100644 --- a/target/linux/ath79/image/tiny-tp-link.mk +++ b/target/linux/ath79/image/tiny-tp-link.mk @@ -66,6 +66,16 @@ define Device/tplink_tl-mr3420-v2 endef TARGET_DEVICES += tplink_tl-mr3420-v2 +define Device/tplink_tl-wa830re-v1 + $(Device/tplink-4m) + SOC := ar7240 + DEVICE_MODEL := TL-WA830RE + DEVICE_VARIANT := v1 + TPLINK_HWID := 0x08300010 + SUPPORTED_DEVICES += tl-wa901nd +endef +TARGET_DEVICES += tplink_tl-wa830re-v1 + define Device/tplink_tl-wa850re-v1 $(Device/tplink-4mlzma) SOC := ar9341 @@ -264,6 +274,20 @@ define Device/tplink_tl-wr940n-v4 endef TARGET_DEVICES += tplink_tl-wr940n-v4 +define Device/tplink_tl-wr940n-v6 + $(Device/tplink-4mlzma) + SOC := tp9343 + DEVICE_MODEL := TL-WR940N + DEVICE_VARIANT := v6 + TPLINK_HWID := 0x09400006 + SUPPORTED_DEVICES += tl-wr940n-v6 + IMAGES += factory-us.bin factory-eu.bin factory-br.bin + IMAGE/factory-us.bin := tplink-v1-image factory -C US + IMAGE/factory-eu.bin := tplink-v1-image factory -C EU + IMAGE/factory-br.bin := tplink-v1-image factory -C BR +endef +TARGET_DEVICES += tplink_tl-wr940n-v6 + define Device/tplink_tl-wr941-v2 $(Device/tplink-4m) SOC := ar9132 diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds index 75de6f3aad..e8c6852406 100755 --- a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds @@ -41,7 +41,8 @@ on,n150r) ucidef_set_led_switch "lan2" "LAN2" "netgear:green:lan2" "switch0" "0x04" "0x0f" ;; tplink,tl-mr3020-v1|\ -tplink,tl-mr3040-v2) +tplink,tl-mr3040-v2|\ +tplink,tl-wa830re-v1) ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0" ;; tplink,tl-mr3420-v2|\ @@ -95,6 +96,9 @@ tplink,tl-wr941nd-v6) ucidef_set_led_switch "lan3" "LAN3" "tp-link:blue:lan3" "switch0" "0x04" ucidef_set_led_switch "lan4" "LAN4" "tp-link:blue:lan4" "switch0" "0x02" ;; +tplink,tl-wr940n-v6) + ucidef_set_led_netdev "wan" "WAN" "tp-link:blue:wan" "eth1" + ;; esac board_config_flush diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/02_network b/target/linux/ath79/tiny/base-files/etc/board.d/02_network index 56200de59e..ff1e8110b4 100755 --- a/target/linux/ath79/tiny/base-files/etc/board.d/02_network +++ b/target/linux/ath79/tiny/base-files/etc/board.d/02_network @@ -32,6 +32,7 @@ ath79_setup_interfaces() tplink,tl-mr10u|\ tplink,tl-mr3020-v1|\ tplink,tl-mr3040-v2|\ + tplink,tl-wa830re-v1|\ tplink,tl-wa850re-v1|\ tplink,tl-wa850re-v2|\ tplink,tl-wa901nd-v2|\ @@ -47,6 +48,7 @@ ath79_setup_interfaces() tplink,tl-wr841-v12|\ tplink,tl-wr940n-v3|\ tplink,tl-wr940n-v4|\ + tplink,tl-wr940n-v6|\ tplink,tl-wr941nd-v6) ucidef_set_interface_wan "eth1" ucidef_add_switch "switch0" \ diff --git a/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 5952a40195..0965a48743 100644 --- a/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -10,6 +10,7 @@ case "$FIRMWARE" in "ath9k-eeprom-pci-0000:00:00.0.bin") case $board in buffalo,whr-g301n|\ + tplink,tl-wa830re-v1|\ tplink,tl-wr841-v5|\ tplink,tl-wr941-v4) caldata_extract "art" 0x1000 0xeb8 diff --git a/target/linux/generic/files/drivers/net/phy/swconfig.c b/target/linux/generic/files/drivers/net/phy/swconfig.c index abf1a4504b..e7da45d0f7 100644 --- a/target/linux/generic/files/drivers/net/phy/swconfig.c +++ b/target/linux/generic/files/drivers/net/phy/swconfig.c @@ -591,12 +591,15 @@ swconfig_parse_ports(struct sk_buff *msg, struct nlattr *head, port = &val->value.ports[val->len]; -#if LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0) - if (nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, nla, - port_policy)) -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + if (nla_parse_nested_deprecated(tb, SWITCH_PORT_ATTR_MAX, nla, + port_policy, NULL)) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) if (nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, nla, port_policy, NULL)) +#else + if (nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, nla, + port_policy)) #endif return -EINVAL; @@ -618,10 +621,12 @@ swconfig_parse_link(struct sk_buff *msg, struct nlattr *nla, { struct nlattr *tb[SWITCH_LINK_ATTR_MAX + 1]; -#if LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0) - if (nla_parse_nested(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy)) -#else +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + if (nla_parse_nested_deprecated(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy, NULL)) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) if (nla_parse_nested(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy, NULL)) +#else + if (nla_parse_nested(tb, SWITCH_LINK_ATTR_MAX, nla, link_policy)) #endif return -EINVAL; @@ -1000,6 +1005,9 @@ swconfig_done(struct netlink_callback *cb) static struct genl_ops swconfig_ops[] = { { .cmd = SWITCH_CMD_LIST_GLOBAL, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .doit = swconfig_list_attrs, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, @@ -1007,6 +1015,9 @@ static struct genl_ops swconfig_ops[] = { }, { .cmd = SWITCH_CMD_LIST_VLAN, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .doit = swconfig_list_attrs, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, @@ -1014,6 +1025,9 @@ static struct genl_ops swconfig_ops[] = { }, { .cmd = SWITCH_CMD_LIST_PORT, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .doit = swconfig_list_attrs, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, @@ -1021,6 +1035,9 @@ static struct genl_ops swconfig_ops[] = { }, { .cmd = SWITCH_CMD_GET_GLOBAL, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .doit = swconfig_get_attr, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, @@ -1028,6 +1045,9 @@ static struct genl_ops swconfig_ops[] = { }, { .cmd = SWITCH_CMD_GET_VLAN, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .doit = swconfig_get_attr, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, @@ -1035,6 +1055,9 @@ static struct genl_ops swconfig_ops[] = { }, { .cmd = SWITCH_CMD_GET_PORT, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .doit = swconfig_get_attr, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, @@ -1042,6 +1065,9 @@ static struct genl_ops swconfig_ops[] = { }, { .cmd = SWITCH_CMD_SET_GLOBAL, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .flags = GENL_ADMIN_PERM, .doit = swconfig_set_attr, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) @@ -1050,6 +1076,9 @@ static struct genl_ops swconfig_ops[] = { }, { .cmd = SWITCH_CMD_SET_VLAN, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .flags = GENL_ADMIN_PERM, .doit = swconfig_set_attr, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) @@ -1058,6 +1087,9 @@ static struct genl_ops swconfig_ops[] = { }, { .cmd = SWITCH_CMD_SET_PORT, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .flags = GENL_ADMIN_PERM, .doit = swconfig_set_attr, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) @@ -1066,6 +1098,9 @@ static struct genl_ops swconfig_ops[] = { }, { .cmd = SWITCH_CMD_GET_SWITCH, +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +#endif .dumpit = swconfig_dump_switches, #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) .policy = switch_policy, diff --git a/target/linux/generic/pending-4.14/401-mtd-add-support-for-different-partition-parser-types.patch b/target/linux/generic/pending-4.14/401-mtd-add-support-for-different-partition-parser-types.patch index 057d473684..ae13112ef6 100644 --- a/target/linux/generic/pending-4.14/401-mtd-add-support-for-different-partition-parser-types.patch +++ b/target/linux/generic/pending-4.14/401-mtd-add-support-for-different-partition-parser-types.patch @@ -20,44 +20,35 @@ Signed-off-by: Gabor Juhos /* * Given a pointer to the MTD object in the mtd_part structure, we can retrieve -@@ -762,6 +766,36 @@ int mtd_del_partition(struct mtd_info *m +@@ -762,6 +766,27 @@ int mtd_del_partition(struct mtd_info *m } EXPORT_SYMBOL_GPL(mtd_del_partition); +static int +run_parsers_by_type(struct mtd_part *slave, enum mtd_parser_type type) +{ -+ struct mtd_partition *parts; -+ int nr_parts; -+ int i; ++ struct mtd_partitions pparts = { }; ++ int err; + -+ nr_parts = parse_mtd_partitions_by_type(&slave->mtd, type, (const struct mtd_partition **)&parts, -+ NULL); -+ if (nr_parts <= 0) -+ return nr_parts; ++ pparts.nr_parts = parse_mtd_partitions_by_type(&slave->mtd, type, ++ &pparts.parts, NULL); ++ if (pparts.nr_parts <= 0) ++ return pparts.nr_parts; + -+ if (WARN_ON(!parts)) ++ if (WARN_ON(!pparts.parts)) + return 0; + -+ for (i = 0; i < nr_parts; i++) { -+ /* adjust partition offsets */ -+ parts[i].offset += slave->offset; ++ err = add_mtd_partitions(&slave->mtd, pparts.parts, pparts.nr_parts); + -+ mtd_add_partition(slave->parent, -+ parts[i].name, -+ parts[i].offset, -+ parts[i].size); -+ } ++ kfree(pparts.parts); + -+ kfree(parts); -+ -+ return nr_parts; ++ return err ? err : pparts.nr_parts; +} + #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME #define SPLIT_FIRMWARE_NAME CONFIG_MTD_SPLIT_FIRMWARE_NAME #else -@@ -1147,6 +1181,61 @@ void mtd_part_parser_cleanup(struct mtd_ +@@ -1147,6 +1172,61 @@ void mtd_part_parser_cleanup(struct mtd_ } } diff --git a/target/linux/generic/pending-4.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch b/target/linux/generic/pending-4.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch index 2cc06dd463..149c328ac4 100644 --- a/target/linux/generic/pending-4.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch +++ b/target/linux/generic/pending-4.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -804,6 +804,7 @@ run_parsers_by_type(struct mtd_part *sla +@@ -795,6 +795,7 @@ run_parsers_by_type(struct mtd_part *sla static void split_firmware(struct mtd_info *master, struct mtd_part *part) { @@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos } static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part) -@@ -813,6 +814,12 @@ static void mtd_partition_split(struct m +@@ -804,6 +805,12 @@ static void mtd_partition_split(struct m if (rootfs_found) return; diff --git a/target/linux/generic/pending-4.14/404-mtd-add-more-helper-functions.patch b/target/linux/generic/pending-4.14/404-mtd-add-more-helper-functions.patch index 7b481ffb47..d1a32872af 100644 --- a/target/linux/generic/pending-4.14/404-mtd-add-more-helper-functions.patch +++ b/target/linux/generic/pending-4.14/404-mtd-add-more-helper-functions.patch @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -1260,6 +1260,24 @@ int mtd_is_partition(const struct mtd_in +@@ -1251,6 +1251,24 @@ int mtd_is_partition(const struct mtd_in } EXPORT_SYMBOL_GPL(mtd_is_partition); diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 878d70c98e..4c27cdbd31 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -81,6 +81,12 @@ define Build/iodata-mstc-header ) endef +define Build/netis-tail + echo -n $(1) >> $@ + echo -n $(UIMAGE_NAME)-yun | $(STAGING_DIR_HOST)/bin/mkhash md5 | \ + sed 's/../\\\\x&/g' | xargs echo -ne >> $@ +endef + define Build/ubnt-erx-factory-image if [ -e $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) -a "$$(stat -c%s $@)" -lt "$(KERNEL_SIZE)" ]; then \ echo '21001:6' > $(1).compat; \ @@ -631,6 +637,8 @@ define Device/netis_wf2881 KERNEL_SIZE := 4096k IMAGE_SIZE := 129280k UBINIZE_OPTS := -E 5 + UIMAGE_NAME := WF2881_0.0.00 + KERNEL_INITRAMFS := $(KERNEL_DTB) | netis-tail WF2881 | uImage lzma IMAGES += factory.bin IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \ diff --git a/target/linux/sunxi/patches-4.19/010-v5.3-drivers-ata-ahci_sunxi-Increased-SATA-AHCI-DMA-TX-RX.patch b/target/linux/sunxi/patches-4.19/010-v5.3-drivers-ata-ahci_sunxi-Increased-SATA-AHCI-DMA-TX-RX.patch new file mode 100644 index 0000000000..74e51c094c --- /dev/null +++ b/target/linux/sunxi/patches-4.19/010-v5.3-drivers-ata-ahci_sunxi-Increased-SATA-AHCI-DMA-TX-RX.patch @@ -0,0 +1,94 @@ +From 120357ea176e420d313cf8cf2ff35fbe233d3bab Mon Sep 17 00:00:00 2001 +From: Uenal Mutlu +Date: Mon, 13 May 2019 16:24:10 +0200 +Subject: [PATCH] drivers: ata: ahci_sunxi: Increased SATA/AHCI DMA TX/RX FIFOs + +Increasing the SATA/AHCI DMA TX/RX FIFOs (P0DMACR.TXTS and .RXTS, ie. +TX_TRANSACTION_SIZE and RX_TRANSACTION_SIZE) from default 0x0 each +to 0x3 each, gives a write performance boost of 120 MiB/s to 132 MiB/s +from lame 36 MiB/s to 45 MiB/s previously. +Read performance is above 200 MiB/s. +[tested on SSD using dd bs=4K/8K/12K/16K/20K/24K/32K: peak-perf at 12K] + +Tested on the SBCs Banana Pi R1 (aka Lamobo R1) and Banana Pi M1 which +are based on the Allwinner A20 32bit-SoC (ARMv7-a / arm-linux-gnueabihf). +These devices are RaspberryPi-like small devices. + +This problem of slow SATA write-speed with these small devices lasts +for about 7 years now (beginning with the A10 SoC). Many commentators +throughout the years wrongly assumed the slow write speed was a +hardware limitation. This patch finally solves the problem, which +in fact was just a hard-to-find software problem due to lack of +SATA/AHCI documentation by the SoC-maker Allwinner Technology. + +Lists of the affected sunxi and other boards and SoCs with SATA using +the ahci_sunxi driver: + $ grep -i -e "^&ahci" arch/arm/boot/dts/sun*dts + and http://linux-sunxi.org/SATA#Devices_with_SATA_ports + See also http://linux-sunxi.org/Category:Devices_with_SATA_port + +Tested-by: Chen-Yu Tsai +Acked-by: Maxime Ripard +Reviewed-by: Hans de Goede +Signed-off-by: Uenal Mutlu +Signed-off-by: Jens Axboe +--- + drivers/ata/ahci_sunxi.c | 47 ++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 45 insertions(+), 2 deletions(-) + +--- a/drivers/ata/ahci_sunxi.c ++++ b/drivers/ata/ahci_sunxi.c +@@ -157,8 +157,51 @@ static void ahci_sunxi_start_engine(stru + void __iomem *port_mmio = ahci_port_base(ap); + struct ahci_host_priv *hpriv = ap->host->private_data; + +- /* Setup DMA before DMA start */ +- sunxi_clrsetbits(hpriv->mmio + AHCI_P0DMACR, 0x0000ff00, 0x00004400); ++ /* Setup DMA before DMA start ++ * ++ * NOTE: A similar SoC with SATA/AHCI by Texas Instruments documents ++ * this Vendor Specific Port (P0DMACR, aka PxDMACR) in its ++ * User's Guide document (TMS320C674x/OMAP-L1x Processor ++ * Serial ATA (SATA) Controller, Literature Number: SPRUGJ8C, ++ * March 2011, Chapter 4.33 Port DMA Control Register (P0DMACR), ++ * p.68, https://www.ti.com/lit/ug/sprugj8c/sprugj8c.pdf) ++ * as equivalent to the following struct: ++ * ++ * struct AHCI_P0DMACR_t ++ * { ++ * unsigned TXTS : 4; ++ * unsigned RXTS : 4; ++ * unsigned TXABL : 4; ++ * unsigned RXABL : 4; ++ * unsigned Reserved : 16; ++ * }; ++ * ++ * TXTS: Transmit Transaction Size (TX_TRANSACTION_SIZE). ++ * This field defines the DMA transaction size in DWORDs for ++ * transmit (system bus read, device write) operation. [...] ++ * ++ * RXTS: Receive Transaction Size (RX_TRANSACTION_SIZE). ++ * This field defines the Port DMA transaction size in DWORDs ++ * for receive (system bus write, device read) operation. [...] ++ * ++ * TXABL: Transmit Burst Limit. ++ * This field allows software to limit the VBUSP master read ++ * burst size. [...] ++ * ++ * RXABL: Receive Burst Limit. ++ * Allows software to limit the VBUSP master write burst ++ * size. [...] ++ * ++ * Reserved: Reserved. ++ * ++ * ++ * NOTE: According to the above document, the following alternative ++ * to the code below could perhaps be a better option ++ * (or preparation) for possible further improvements later: ++ * sunxi_clrsetbits(hpriv->mmio + AHCI_P0DMACR, 0x0000ffff, ++ * 0x00000033); ++ */ ++ sunxi_clrsetbits(hpriv->mmio + AHCI_P0DMACR, 0x0000ffff, 0x00004433); + + /* Start DMA */ + sunxi_setbits(port_mmio + PORT_CMD, PORT_CMD_START);