diff options
Diffstat (limited to 'package/ramips/drivers/mt7620/patches')
4 files changed, 308 insertions, 0 deletions
diff --git a/package/ramips/drivers/mt7620/patches/001-fix-kernel-warning.patch b/package/ramips/drivers/mt7620/patches/001-fix-kernel-warning.patch new file mode 100644 index 0000000..bfa6536 --- /dev/null +++ b/package/ramips/drivers/mt7620/patches/001-fix-kernel-warning.patch @@ -0,0 +1,211 @@ +Index: mt7620-p4rev-113050/src/common/cmm_data_pci.c +=================================================================== +--- mt7620-p4rev-113050.orig/src/common/cmm_data_pci.c ++++ mt7620-p4rev-113050/src/common/cmm_data_pci.c +@@ -1164,6 +1164,14 @@ VOID RTMPHandlePreTBTTInterrupt( + { + APUpdateAllBeaconFrame(pAd); + ++ POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie; ++#ifdef WORKQUEUE_BH ++ RTMP_OS_TASKLET_SCHE(&pObj->pretbtt_work); ++#else ++ RTMP_OS_TASKLET_SCHE(&pObj->pretbtt_task); ++#endif ++ ++#if 0 + RTMP_IO_WRITE32(pAd, MCU_INT_STATUS, 0x14); + pAd->MacTab.fMcastPsQEnable = FALSE; + +@@ -1222,6 +1230,7 @@ VOID RTMPHandlePreTBTTInterrupt( + pAd->MacTab.fMcastPsQEnable = TRUE; + } + } ++#endif + } + else + #endif /* CONFIG_AP_SUPPORT */ +Index: mt7620-p4rev-113050/src/include/os/rt_drv.h +=================================================================== +--- mt7620-p4rev-113050.orig/src/include/os/rt_drv.h ++++ mt7620-p4rev-113050/src/include/os/rt_drv.h +@@ -337,6 +337,7 @@ struct os_cookie { + RTMP_NET_TASK_STRUCT hcca_dma_done_work; + + RTMP_NET_TASK_STRUCT tbtt_work; ++ RTMP_NET_TASK_STRUCT pretbtt_work; + + #else + RTMP_NET_TASK_STRUCT rx_done_task; +@@ -350,6 +351,7 @@ struct os_cookie { + RTMP_NET_TASK_STRUCT ac3_dma_done_task; + RTMP_NET_TASK_STRUCT hcca_dma_done_task; + RTMP_NET_TASK_STRUCT tbtt_task; ++ RTMP_NET_TASK_STRUCT pretbtt_task; + #endif /* WORKQUEUE_BH */ + + #ifdef RTMP_MAC_PCI +Index: mt7620-p4rev-113050/src/include/os/rt_linux.h +=================================================================== +--- mt7620-p4rev-113050.orig/src/include/os/rt_linux.h ++++ mt7620-p4rev-113050/src/include/os/rt_linux.h +@@ -664,6 +664,7 @@ struct os_cookie { + struct work_struct hcca_dma_done_work; + + struct work_struct tbtt_work; ++ struct work_struct pretbtt_work; + + #else + RTMP_NET_TASK_STRUCT rx_done_task; +@@ -677,6 +678,7 @@ struct os_cookie { + RTMP_NET_TASK_STRUCT ac3_dma_done_task; + RTMP_NET_TASK_STRUCT hcca_dma_done_task; + RTMP_NET_TASK_STRUCT tbtt_task; ++ RTMP_NET_TASK_STRUCT pretbtt_task; + #endif /* WORKQUEUE_BH */ + + #ifdef RTMP_MAC_PCI +Index: mt7620-p4rev-113050/src/include/rtmp.h +=================================================================== +--- mt7620-p4rev-113050.orig/src/include/rtmp.h ++++ mt7620-p4rev-113050/src/include/rtmp.h +@@ -9631,8 +9631,10 @@ VOID RtmpMgmtTaskExit( + + #ifdef WORKQUEUE_BH + void tbtt_workq(struct work_struct *work); ++void pretbtt_workq(struct work_struct *work); + #else + void tbtt_tasklet(unsigned long data); ++void pretbtt_tasklet(unsigned long data); + #endif /* WORKQUEUE_BH */ + + +Index: mt7620-p4rev-113050/src/os/linux/rt_profile.c +=================================================================== +--- mt7620-p4rev-113050.orig/src/os/linux/rt_profile.c ++++ mt7620-p4rev-113050/src/os/linux/rt_profile.c +@@ -515,6 +515,96 @@ void tbtt_tasklet(unsigned long data) + #endif /* CONFIG_AP_SUPPORT */ + } + ++#ifdef WORKQUEUE_BH ++void pretbtt_workq(struct work_struct *work) ++#else ++void pretbtt_tasklet(unsigned long data) ++#endif /* WORKQUEUE_BH */ ++{ ++/*#define MAX_TX_IN_TBTT (16) */ ++ ++#ifdef CONFIG_AP_SUPPORT ++#ifdef WORKQUEUE_BH ++ POS_COOKIE pObj = container_of(work, struct os_cookie, pretbtt_work); ++ PRTMP_ADAPTER pAd = pObj->pAd_va; ++#else ++ PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) data; ++#endif /* WORKQUEUE_BH */ ++ ++ RTMP_IO_WRITE32(pAd, MCU_INT_STATUS, 0x14); ++ pAd->MacTab.fMcastPsQEnable = FALSE; ++ ++ if ((pAd->ApCfg.DtimCount == 0) && ++ (pAd->MacTab.McastPsQueue.Head)) ++ { ++ UINT32 macValue; ++ PQUEUE_ENTRY pEntry; ++ BOOLEAN bPS = FALSE; ++ UINT count = 0; ++ unsigned long IrqFlags; ++ ++ RTMP_IO_READ32(pAd, PBF_CFG, &macValue); ++ macValue &= (~0x0C); ++ RTMP_IO_WRITE32(pAd, PBF_CFG, macValue); ++ ++ RTMP_IRQ_LOCK(&pAd->irq_lock, IrqFlags); ++ ++ while (pAd->MacTab.McastPsQueue.Head) ++ { ++ bPS = TRUE; ++#if 0 ++ if (pAd->TxSwQueue[QID_AC_BE].Number <= (MAX_PACKETS_IN_QUEUE + MAX_PACKETS_IN_MCAST_PS_QUEUE)) ++#else ++ if (pAd->TxSwQueue[QID_HCCA].Number <= (MAX_PACKETS_IN_QUEUE + MAX_PACKETS_IN_MCAST_PS_QUEUE)) ++#endif ++ { ++ pEntry = RemoveHeadQueue(&pAd->MacTab.McastPsQueue); ++ ++ if (count) ++ { ++ RTMP_SET_PACKET_MOREDATA(pEntry, TRUE); ++ } ++#if 0 ++ InsertHeadQueue(&pAd->TxSwQueue[QID_AC_BE], pEntry); ++#else ++ InsertHeadQueue(&pAd->TxSwQueue[QID_HCCA], pEntry); ++#endif ++ count++; ++ } ++ else ++ { ++ break; ++ } ++ } ++ ++ RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags); ++ ++ if (pAd->MacTab.McastPsQueue.Number == 0) ++ { ++ UINT bss_index; ++ ++ /* clear MCAST/BCAST backlog bit for all BSS */ ++ for(bss_index=BSS0; bss_index<pAd->ApCfg.BssidNum; bss_index++) ++ WLAN_MR_TIM_BCMC_CLEAR(bss_index); ++ /* End of for */ ++ } ++ pAd->MacTab.PsQIdleCount = 0; ++ ++ // Dequeue outgoing framea from TxSwQueue0..3 queue and process it ++ if (bPS == TRUE) ++ { ++ UINT32 macValue1, idx; ++#if 0 ++ RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, /*MAX_TX_IN_TBTT*/MAX_PACKETS_IN_MCAST_PS_QUEUE); ++#else ++ RTMPDeQueuePacket(pAd, FALSE, QID_HCCA, /*MAX_TX_IN_TBTT*/MAX_PACKETS_IN_MCAST_PS_QUEUE); ++#endif ++ pAd->MacTab.fMcastPsQEnable = TRUE; ++ } ++ } ++#endif /* CONFIG_AP_SUPPORT */ ++} ++ + + void announce_802_3_packet( + IN VOID *pAdSrc, +Index: mt7620-p4rev-113050/src/os/linux/rt_rbus_pci_drv.c +=================================================================== +--- mt7620-p4rev-113050.orig/src/os/linux/rt_rbus_pci_drv.c ++++ mt7620-p4rev-113050/src/os/linux/rt_rbus_pci_drv.c +@@ -93,6 +93,7 @@ NDIS_STATUS RtmpNetTaskInit(IN RTMP_ADAP + RTMP_OS_TASKLET_INIT(pAd, &pObj->ac3_dma_done_work, ac3_dma_done_workq); + RTMP_OS_TASKLET_INIT(pAd, &pObj->hcca_dma_done_work, hcca_dma_done_workq); + RTMP_OS_TASKLET_INIT(pAd, &pObj->tbtt_work, tbtt_workq); ++ RTMP_OS_TASKLET_INIT(pAd, &pObj->pretbtt_work, pretbtt_workq); + RTMP_OS_TASKLET_INIT(pAd, &pObj->fifo_statistic_full_work, fifo_statistic_full_workq); + #ifdef UAPSD_SUPPORT + RTMP_OS_TASKLET_INIT(pAd, &pObj->uapsd_eosp_sent_work, uapsd_eosp_sent_workq); +@@ -121,6 +122,7 @@ NDIS_STATUS RtmpNetTaskInit(IN RTMP_ADAP + RTMP_OS_TASKLET_INIT(pAd, &pObj->ac3_dma_done_task, ac3_dma_done_tasklet, (unsigned long)pAd); + RTMP_OS_TASKLET_INIT(pAd, &pObj->hcca_dma_done_task, hcca_dma_done_tasklet, (unsigned long)pAd); + RTMP_OS_TASKLET_INIT(pAd, &pObj->tbtt_task, tbtt_tasklet, (unsigned long)pAd); ++ RTMP_OS_TASKLET_INIT(pAd, &pObj->pretbtt_task, pretbtt_tasklet, (unsigned long)pAd); + RTMP_OS_TASKLET_INIT(pAd, &pObj->fifo_statistic_full_task, fifo_statistic_full_tasklet, (unsigned long)pAd); + #ifdef UAPSD_SUPPORT + RTMP_OS_TASKLET_INIT(pAd, &pObj->uapsd_eosp_sent_task, uapsd_eosp_sent_tasklet, (unsigned long)pAd); +@@ -160,6 +162,7 @@ void RtmpNetTaskExit(IN RTMP_ADAPTER *pA + RTMP_OS_TASKLET_KILL(&pObj->ac3_dma_done_task); + RTMP_OS_TASKLET_KILL(&pObj->hcca_dma_done_task); + RTMP_OS_TASKLET_KILL(&pObj->tbtt_task); ++ RTMP_OS_TASKLET_KILL(&pObj->pretbtt_task); + RTMP_OS_TASKLET_KILL(&pObj->fifo_statistic_full_task); + #ifdef UAPSD_SUPPORT + RTMP_OS_TASKLET_KILL(&pObj->uapsd_eosp_sent_task); diff --git a/package/ramips/drivers/mt7620/patches/002-fix-insmod-fail.patch b/package/ramips/drivers/mt7620/patches/002-fix-insmod-fail.patch new file mode 100644 index 0000000..f846b0e --- /dev/null +++ b/package/ramips/drivers/mt7620/patches/002-fix-insmod-fail.patch @@ -0,0 +1,18 @@ +Index: mt7620-p4rev-113050/src/os/linux/rt_rbus_pci_drv.c +=================================================================== +--- mt7620-p4rev-113050.orig/src/os/linux/rt_rbus_pci_drv.c ++++ mt7620-p4rev-113050/src/os/linux/rt_rbus_pci_drv.c +@@ -773,6 +773,13 @@ static void ac0_dma_done_tasklet(unsigne + } + + ++#ifdef RALINK_ATE ++static void ate_ac0_dma_done_tasklet(unsigned long data) ++{ ++ return; ++} ++#endif /* RALINK_ATE */ ++ + + #ifdef UAPSD_SUPPORT + /* diff --git a/package/ramips/drivers/mt7620/patches/003-support-hwnat.patch b/package/ramips/drivers/mt7620/patches/003-support-hwnat.patch new file mode 100644 index 0000000..96bd7d4 --- /dev/null +++ b/package/ramips/drivers/mt7620/patches/003-support-hwnat.patch @@ -0,0 +1,17 @@ +Index: mt7620-p4rev-113050/build/Makefile +=================================================================== +--- mt7620-p4rev-113050.orig/build/Makefile ++++ mt7620-p4rev-113050/build/Makefile +@@ -251,7 +251,12 @@ EXTRA_CFLAGS += -DAGGREGATION_SUPPORT -D + EXTRA_CFLAGS += -DCONFIG_AP_SUPPORT -DAP_SCAN_SUPPORT -DUAPSD_AP_SUPPORT -DUAPSD_SUPPORT -DRTMP_RBUS_SUPPORT -DRTMP_MAC_PCI + EXTRA_CFLAGS += -DDOT11_N_SUPPORT -DSTATS_COUNT_SUPPORT -DIAPP_SUPPORT -DDOT1X_SUPPORT + EXTRA_CFLAGS += -DRALINK_ATE -DRALINK_QA -DCONFIG_RT2880_ATE_CMD_NEW ++ ++ifeq ($(CONFIG_RT2860V2_WIFI_HW_NAT),y) ++EXTRA_CFLAGS += -DCONFIG_WIFI_HW_NAT ++else + EXTRA_CFLAGS += -DCONFIG_RA_NAT_NONE ++endif + + #provide busy time statistics for every TBTT */ + #EXTRA_CFLAGS += -DQLOAD_FUNC_BUSY_TIME_STATS diff --git a/package/ramips/drivers/mt7620/patches/025-wpa-key-mismatch.patch b/package/ramips/drivers/mt7620/patches/025-wpa-key-mismatch.patch new file mode 100644 index 0000000..97bb426 --- /dev/null +++ b/package/ramips/drivers/mt7620/patches/025-wpa-key-mismatch.patch @@ -0,0 +1,62 @@ +Index: mt7620-p4rev-120998/src/ap/ap.c +=================================================================== +--- mt7620-p4rev-120998.orig/src/ap/ap.c ++++ mt7620-p4rev-120998/src/ap/ap.c +@@ -306,6 +306,17 @@ VOID APStartUp( + else + pMbss->WpaMixPairCipher = MIX_CIPHER_NOTUSE; + ++ if (pMbss->WepStatus == Ndis802_11Encryption2Enabled || ++ pMbss->WepStatus == Ndis802_11Encryption3Enabled || ++ pMbss->WepStatus == Ndis802_11Encryption4Enabled) ++ { ++ RT_CfgSetWPAPSKKey(pAd, pMbss->WPAKeyString, ++ strlen(pMbss->WPAKeyString), ++ (PUCHAR)pAd->ApCfg.MBSSID[apidx].Ssid, ++ pAd->ApCfg.MBSSID[apidx].SsidLen, ++ pAd->ApCfg.MBSSID[apidx].PMK); ++ } ++ + /* Generate the corresponding RSNIE */ + RTMPMakeRSNIE(pAd, pMbss->AuthMode, pMbss->WepStatus, apidx); + +Index: mt7620-p4rev-120998/src/ap/ap_cfg.c +=================================================================== +--- mt7620-p4rev-120998.orig/src/ap/ap_cfg.c ++++ mt7620-p4rev-120998/src/ap/ap_cfg.c +@@ -7157,6 +7157,9 @@ INT Set_AP_WPAPSK_Proc( + if (retval == FALSE) + return FALSE; + ++ /* Keep this key string */ ++ strcpy(pAd->ApCfg.MBSSID[apidx].WPAKeyString, arg); ++ + #ifdef WSC_AP_SUPPORT + NdisZeroMemory(pMBSSStruct->WscControl.WpaPsk, 64); + pMBSSStruct->WscControl.WpaPskLen = 0; +Index: mt7620-p4rev-120998/src/common/cmm_profile.c +=================================================================== +--- mt7620-p4rev-120998.orig/src/common/cmm_profile.c ++++ mt7620-p4rev-120998/src/common/cmm_profile.c +@@ -1710,6 +1710,9 @@ static int rtmp_parse_wpapsk_buffer_from + if (ret == FALSE) + return FALSE; + ++ /* Keep this key string */ ++ strcpy(pAd->ApCfg.MBSSID[i].WPAKeyString, tmpbuf); ++ + #ifdef WSC_AP_SUPPORT + NdisZeroMemory(pAd->ApCfg.MBSSID[i].WscControl.WpaPsk, 64); + pAd->ApCfg.MBSSID[i].WscControl.WpaPskLen = 0; +Index: mt7620-p4rev-120998/src/include/rtmp.h +=================================================================== +--- mt7620-p4rev-120998.orig/src/include/rtmp.h ++++ mt7620-p4rev-120998/src/include/rtmp.h +@@ -1475,6 +1475,7 @@ typedef struct _MULTISSID_STRUCT { + UCHAR TimBitmaps[WLAN_MAX_NUM_OF_TIM]; + + /* WPA */ ++ UCHAR WPAKeyString[65]; + UCHAR GMK[32]; + UCHAR PMK[32]; + UCHAR GTK[32]; |