qcacmn: Update HIF to use non-inline OS abstraction
Use non-inline OS-abstraction APIs to avoid direct usage of kernel API's. Change-Id: I873f8eac38f11cdd2264db16b2dff0757186eb7a
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2015-2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -30,7 +30,6 @@
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/topology.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#ifdef CONFIG_SCHED_CORE_CTL
|
||||
#include <linux/sched/core_ctl.h>
|
||||
#endif
|
||||
@@ -48,6 +47,7 @@
|
||||
#include "qdf_module.h"
|
||||
#include "qdf_net_if.h"
|
||||
#include "qdf_dev.h"
|
||||
#include "qdf_irq.h"
|
||||
|
||||
enum napi_decision_vector {
|
||||
HIF_NAPI_NOEVENT = 0,
|
||||
@@ -79,7 +79,9 @@ static int hif_rxthread_napi_poll(struct napi_struct *napi, int budget)
|
||||
*/
|
||||
static void hif_init_rx_thread_napi(struct qca_napi_info *napii)
|
||||
{
|
||||
init_dummy_netdev(&napii->rx_thread_netdev);
|
||||
struct qdf_net_if *nd = (struct qdf_net_if *)&napii->rx_thread_netdev;
|
||||
|
||||
qdf_net_if_create_dummy_if(nd);
|
||||
netif_napi_add(&napii->rx_thread_netdev, &napii->rx_thread_napi,
|
||||
hif_rxthread_napi_poll, 64);
|
||||
napi_enable(&napii->rx_thread_napi);
|
||||
@@ -200,7 +202,7 @@ int hif_napi_create(struct hif_opaque_softc *hif_ctx,
|
||||
if (napii->irq < 0)
|
||||
hif_warn("bad IRQ value for CE %d: %d", i, napii->irq);
|
||||
|
||||
init_dummy_netdev(&(napii->netdev));
|
||||
qdf_net_if_create_dummy_if((struct qdf_net_if *)&napii->netdev);
|
||||
|
||||
NAPI_DEBUG("adding napi=%pK to netdev=%pK (poll=%pK, bdgt=%d)",
|
||||
&(napii->napi), &(napii->netdev), poll, budget);
|
||||
@@ -816,12 +818,14 @@ bool hif_napi_correct_cpu(struct qca_napi_info *napi_info)
|
||||
NAPI_DEBUG("interrupt on wrong CPU, correcting");
|
||||
napi_info->cpumask.bits[0] = (0x01 << napi_info->cpu);
|
||||
|
||||
irq_modify_status(napi_info->irq, IRQ_NO_BALANCING, 0);
|
||||
qdf_dev_modify_irq_status(napi_info->irq,
|
||||
QDF_IRQ_NO_BALANCING, 0);
|
||||
ret = qdf_dev_set_irq_affinity(napi_info->irq,
|
||||
(struct qdf_cpu_mask *)
|
||||
&napi_info->cpumask);
|
||||
rc = qdf_status_to_os_return(ret);
|
||||
irq_modify_status(napi_info->irq, 0, IRQ_NO_BALANCING);
|
||||
qdf_dev_modify_irq_status(napi_info->irq, 0,
|
||||
QDF_IRQ_NO_BALANCING);
|
||||
|
||||
if (rc)
|
||||
hif_err("Setting irq affinity hint: %d", rc);
|
||||
@@ -989,7 +993,7 @@ void hif_update_napi_max_poll_time(struct CE_state *ce_state,
|
||||
{
|
||||
struct hif_softc *hif;
|
||||
struct qca_napi_info *napi_info;
|
||||
unsigned long long napi_poll_time = sched_clock() -
|
||||
unsigned long long napi_poll_time = qdf_time_sched_clock() -
|
||||
ce_state->ce_service_start_time;
|
||||
|
||||
hif = ce_state->scn;
|
||||
@@ -1462,7 +1466,8 @@ static int hncm_migrate_to(struct qca_napi_data *napid,
|
||||
|
||||
napid->napis[napi_ce]->cpumask.bits[0] = (1 << didx);
|
||||
|
||||
irq_modify_status(napid->napis[napi_ce]->irq, IRQ_NO_BALANCING, 0);
|
||||
qdf_dev_modify_irq_status(napid->napis[napi_ce]->irq,
|
||||
QDF_IRQ_NO_BALANCING, 0);
|
||||
status = qdf_dev_set_irq_affinity(napid->napis[napi_ce]->irq,
|
||||
(struct qdf_cpu_mask *)
|
||||
&napid->napis[napi_ce]->cpumask);
|
||||
@@ -1653,11 +1658,11 @@ static inline void hif_napi_bl_irq(struct qca_napi_data *napid, bool bl_flag)
|
||||
continue;
|
||||
|
||||
if (bl_flag == true)
|
||||
irq_modify_status(napii->irq,
|
||||
0, IRQ_NO_BALANCING);
|
||||
qdf_dev_modify_irq_status(napii->irq,
|
||||
0, QDF_IRQ_NO_BALANCING);
|
||||
else
|
||||
irq_modify_status(napii->irq,
|
||||
IRQ_NO_BALANCING, 0);
|
||||
qdf_dev_modify_irq_status(napii->irq,
|
||||
QDF_IRQ_NO_BALANCING, 0);
|
||||
hif_debug("bl_flag %d CE %d", bl_flag, i);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user