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:
Debasis Das
2020-07-31 16:42:07 +05:30
committed by snandini
parent 77a23e8f71
commit aebe51208d
10 changed files with 78 additions and 57 deletions

View File

@@ -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);
}
}