qcacmn: Enable timer based low threshold interrupt
Enable timer based low threshold interrupt for waikiki monitor tx/rx source rings CRs-Fixed: 3010853 Change-Id: Ia33b110337e610ab9b5d7a9cecb61f6952cd3379
Tento commit je obsažen v:
@@ -517,6 +517,8 @@ struct dp_mon_ops {
|
||||
struct htt_rx_ring_tlv_filter *tlv_filter);
|
||||
void (*rx_enable_mpdu_logging)(uint32_t *msg_word,
|
||||
struct htt_rx_ring_tlv_filter *tlv_filter);
|
||||
QDF_STATUS (*rx_mon_refill_buf_ring)(struct dp_intr *int_ctx);
|
||||
QDF_STATUS (*tx_mon_refill_buf_ring)(struct dp_intr *int_ctx);
|
||||
};
|
||||
|
||||
struct dp_mon_soc {
|
||||
@@ -1735,7 +1737,7 @@ void dp_monitor_service_mon_rings(struct dp_soc *soc, uint32_t quota)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* dp_monitor_process() - Process monitor
|
||||
* dp_rx_monitor_process() - Process monitor
|
||||
* @soc: point to soc
|
||||
* @int_ctx: interrupt ctx
|
||||
* @mac_id: lma
|
||||
@@ -1746,7 +1748,7 @@ void dp_monitor_service_mon_rings(struct dp_soc *soc, uint32_t quota)
|
||||
#ifndef DISABLE_MON_CONFIG
|
||||
static inline
|
||||
uint32_t dp_monitor_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
uint32_t mac_id, uint32_t quota)
|
||||
uint32_t mac_id, uint32_t quota)
|
||||
{
|
||||
struct dp_mon_ops *monitor_ops;
|
||||
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||
@@ -1765,16 +1767,72 @@ uint32_t dp_monitor_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
return monitor_ops->mon_rx_process(soc, int_ctx, mac_id, quota);
|
||||
}
|
||||
|
||||
static inline uint32_t
|
||||
dp_tx_mon_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
uint32_t mac_id, uint32_t quota)
|
||||
static inline
|
||||
uint32_t dp_tx_mon_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
uint32_t mac_id, uint32_t quota)
|
||||
{
|
||||
return 0;
|
||||
struct dp_mon_ops *monitor_ops;
|
||||
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||
|
||||
if (!mon_soc) {
|
||||
dp_mon_debug("monitor soc is NULL");
|
||||
return 0;
|
||||
}
|
||||
|
||||
monitor_ops = mon_soc->mon_ops;
|
||||
if (!monitor_ops || !monitor_ops->mon_tx_process) {
|
||||
dp_mon_debug("callback not registered");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return monitor_ops->mon_tx_process(soc, int_ctx, mac_id, quota);
|
||||
}
|
||||
|
||||
static inline
|
||||
uint32_t dp_tx_mon_buf_refill(struct dp_intr *int_ctx)
|
||||
{
|
||||
struct dp_soc *soc = int_ctx->soc;
|
||||
struct dp_mon_ops *monitor_ops;
|
||||
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||
|
||||
if (!mon_soc) {
|
||||
dp_mon_debug("monitor soc is NULL");
|
||||
return 0;
|
||||
}
|
||||
|
||||
monitor_ops = mon_soc->mon_ops;
|
||||
if (!monitor_ops || !monitor_ops->tx_mon_refill_buf_ring) {
|
||||
dp_mon_debug("callback not registered");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return monitor_ops->tx_mon_refill_buf_ring(int_ctx);
|
||||
}
|
||||
|
||||
static inline
|
||||
uint32_t dp_rx_mon_buf_refill(struct dp_intr *int_ctx)
|
||||
{
|
||||
struct dp_soc *soc = int_ctx->soc;
|
||||
struct dp_mon_ops *monitor_ops;
|
||||
struct dp_mon_soc *mon_soc = soc->monitor_soc;
|
||||
|
||||
if (!mon_soc) {
|
||||
dp_mon_debug("monitor soc is NULL");
|
||||
return 0;
|
||||
}
|
||||
|
||||
monitor_ops = mon_soc->mon_ops;
|
||||
if (!monitor_ops || !monitor_ops->rx_mon_refill_buf_ring) {
|
||||
dp_mon_debug("callback not registered");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return monitor_ops->rx_mon_refill_buf_ring(int_ctx);
|
||||
}
|
||||
#else
|
||||
static inline
|
||||
uint32_t dp_monitor_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
uint32_t mac_id, uint32_t quota)
|
||||
uint32_t mac_id, uint32_t quota)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -1785,6 +1843,16 @@ dp_tx_mon_process(struct dp_soc *soc, struct dp_intr *int_ctx,
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline
|
||||
uint32_t dp_tx_mon_buf_refill(struct dp_intr *int_ctx)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
uint32_t dp_rx_mon_buf_refill(struct dp_intr *int_ctx)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele