mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-15 05:22:59 +02:00
Add patch for ath5k to fix "no txbuf available".
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
etc/system-release
|
||||
lib/modules/2.6.27.42-ipfire/kernel/net
|
||||
lib/modules/2.6.27.42-ipfire-xen/kernel/net
|
||||
lib/modules/2.6.27.42-ipfire/mISDN/hfcsusb.ko
|
||||
lib/modules/2.6.27.42-ipfire-xen/mISDN/hfcsusb.ko
|
||||
lib/modules/2.6.27.42-ipfire/kernel/drivers/hwmon/coretemp.ko
|
||||
lib/modules/2.6.27.42-ipfire-xen/kernel/drivers/hwmon/coretemp.ko
|
||||
lib/modules/2.6.27.42-ipfire/kernel/drivers/net/et131x.ko
|
||||
lib/modules/2.6.27.42-ipfire-xen/kernel/drivers/net/et131x.ko
|
||||
lib/modules/2.6.27.42-ipfire/kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko
|
||||
lib/modules/2.6.27.42-ipfire-xen/kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko
|
||||
srv/web/ipfire/cgi-bin/urlfilter.cgi
|
||||
srv/web/ipfire/cgi-bin/outgoingfw.cgi
|
||||
@@ -130,6 +130,9 @@ endif
|
||||
# # Add Vodafone K3565-Z USB ID's to option driver
|
||||
# cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.27.25-option_add_vf-k3565-z_usbids.patch
|
||||
|
||||
# Add patch to fix ath5k "no txbuf available"
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32-ath5k_fix_setup_for_CAB_queue.patch
|
||||
|
||||
# Not report deprecated syscall 1.23 (for kudzu)
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.25.18-not_report_sysctl_1.23.patch
|
||||
|
||||
|
||||
75
src/patches/linux-2.6.32-ath5k_fix_setup_for_CAB_queue.patch
Normal file
75
src/patches/linux-2.6.32-ath5k_fix_setup_for_CAB_queue.patch
Normal file
@@ -0,0 +1,75 @@
|
||||
diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h
|
||||
index 66bcb50..ad4d446 100644
|
||||
--- a/drivers/net/wireless/ath/ath5k/ath5k.h
|
||||
+++ b/drivers/net/wireless/ath/ath5k/ath5k.h
|
||||
@@ -535,7 +535,7 @@ struct ath5k_txq_info {
|
||||
u32 tqi_cbr_period; /* Constant bit rate period */
|
||||
u32 tqi_cbr_overflow_limit;
|
||||
u32 tqi_burst_time;
|
||||
- u32 tqi_ready_time; /* Not used */
|
||||
+ u32 tqi_ready_time; /* Time queue waits after an event */
|
||||
};
|
||||
|
||||
/*
|
||||
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
|
||||
index b501537..535a6af 100644
|
||||
--- a/drivers/net/wireless/ath/ath5k/base.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/base.c
|
||||
@@ -1516,7 +1516,8 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
|
||||
|
||||
ret = ath5k_hw_get_tx_queueprops(ah, sc->bhalq, &qi);
|
||||
if (ret)
|
||||
- return ret;
|
||||
+ goto err;
|
||||
+
|
||||
if (sc->opmode == NL80211_IFTYPE_AP ||
|
||||
sc->opmode == NL80211_IFTYPE_MESH_POINT) {
|
||||
/*
|
||||
@@ -1543,10 +1544,25 @@ ath5k_beaconq_config(struct ath5k_softc *sc)
|
||||
if (ret) {
|
||||
ATH5K_ERR(sc, "%s: unable to update parameters for beacon "
|
||||
"hardware queue!\n", __func__);
|
||||
- return ret;
|
||||
+ goto err;
|
||||
}
|
||||
+ ret = ath5k_hw_reset_tx_queue(ah, sc->bhalq); /* push to h/w */
|
||||
+ if (ret)
|
||||
+ goto err;
|
||||
|
||||
- return ath5k_hw_reset_tx_queue(ah, sc->bhalq); /* push to h/w */;
|
||||
+ /* reconfigure cabq with ready time to 80% of beacon_interval */
|
||||
+ ret = ath5k_hw_get_tx_queueprops(ah, AR5K_TX_QUEUE_ID_CAB, &qi);
|
||||
+ if (ret)
|
||||
+ goto err;
|
||||
+
|
||||
+ qi.tqi_ready_time = (sc->bintval * 80) / 100;
|
||||
+ ret = ath5k_hw_set_tx_queueprops(ah, AR5K_TX_QUEUE_ID_CAB, &qi);
|
||||
+ if (ret)
|
||||
+ goto err;
|
||||
+
|
||||
+ ret = ath5k_hw_reset_tx_queue(ah, AR5K_TX_QUEUE_ID_CAB);
|
||||
+err:
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
diff --git a/drivers/net/wireless/ath/ath5k/qcu.c b/drivers/net/wireless/ath/ath5k/qcu.c
|
||||
index abe36c0..9122a85 100644
|
||||
--- a/drivers/net/wireless/ath/ath5k/qcu.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/qcu.c
|
||||
@@ -408,12 +408,13 @@ int ath5k_hw_reset_tx_queue(struct ath5k_hw *ah, unsigned int queue)
|
||||
break;
|
||||
|
||||
case AR5K_TX_QUEUE_CAB:
|
||||
+ /* XXX: use BCN_SENT_GT, if we can figure out how */
|
||||
AR5K_REG_ENABLE_BITS(ah, AR5K_QUEUE_MISC(queue),
|
||||
- AR5K_QCU_MISC_FRSHED_BCN_SENT_GT |
|
||||
+ AR5K_QCU_MISC_FRSHED_DBA_GT |
|
||||
AR5K_QCU_MISC_CBREXP_DIS |
|
||||
AR5K_QCU_MISC_CBREXP_BCN_DIS);
|
||||
|
||||
- ath5k_hw_reg_write(ah, ((AR5K_TUNE_BEACON_INTERVAL -
|
||||
+ ath5k_hw_reg_write(ah, ((tq->tqi_ready_time -
|
||||
(AR5K_TUNE_SW_BEACON_RESP -
|
||||
AR5K_TUNE_DMA_BEACON_RESP) -
|
||||
AR5K_TUNE_ADDITIONAL_SWBA_BACKOFF) * 1024) |
|
||||
Reference in New Issue
Block a user