Commit d1d97ee6 authored by Intiyaz Basha's avatar Intiyaz Basha Committed by David S. Miller

liquidio: moved liquidio_napi_drv_callback to lio_core.c

Moving common liquidio_napi_drv_callback to lio_core.c
Signed-off-by: default avatarIntiyaz Basha <intiyaz.basha@cavium.com>
Signed-off-by: default avatarFelix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 21f0888b
...@@ -581,3 +581,42 @@ liquidio_push_packet(u32 octeon_id __attribute__((unused)), ...@@ -581,3 +581,42 @@ liquidio_push_packet(u32 octeon_id __attribute__((unused)),
recv_buffer_free(skb); recv_buffer_free(skb);
} }
} }
/**
* \brief wrapper for calling napi_schedule
* @param param parameters to pass to napi_schedule
*
* Used when scheduling on different CPUs
*/
static void napi_schedule_wrapper(void *param)
{
struct napi_struct *napi = param;
napi_schedule(napi);
}
/**
* \brief callback when receive interrupt occurs and we are in NAPI mode
* @param arg pointer to octeon output queue
*/
void liquidio_napi_drv_callback(void *arg)
{
struct octeon_device *oct;
struct octeon_droq *droq = arg;
int this_cpu = smp_processor_id();
oct = droq->oct_dev;
if (OCTEON_CN23XX_PF(oct) || OCTEON_CN23XX_VF(oct) ||
droq->cpu_id == this_cpu) {
napi_schedule_irqoff(&droq->napi);
} else {
struct call_single_data *csd = &droq->csd;
csd->func = napi_schedule_wrapper;
csd->info = &droq->napi;
csd->flags = 0;
smp_call_function_single_async(droq->cpu_id, csd);
}
}
...@@ -2231,44 +2231,6 @@ static void if_cfg_callback(struct octeon_device *oct, ...@@ -2231,44 +2231,6 @@ static void if_cfg_callback(struct octeon_device *oct,
wake_up_interruptible(&ctx->wc); wake_up_interruptible(&ctx->wc);
} }
/**
* \brief wrapper for calling napi_schedule
* @param param parameters to pass to napi_schedule
*
* Used when scheduling on different CPUs
*/
static void napi_schedule_wrapper(void *param)
{
struct napi_struct *napi = param;
napi_schedule(napi);
}
/**
* \brief callback when receive interrupt occurs and we are in NAPI mode
* @param arg pointer to octeon output queue
*/
static void liquidio_napi_drv_callback(void *arg)
{
struct octeon_device *oct;
struct octeon_droq *droq = arg;
int this_cpu = smp_processor_id();
oct = droq->oct_dev;
if (OCTEON_CN23XX_PF(oct) || droq->cpu_id == this_cpu) {
napi_schedule_irqoff(&droq->napi);
} else {
struct call_single_data *csd = &droq->csd;
csd->func = napi_schedule_wrapper;
csd->info = &droq->napi;
csd->flags = 0;
smp_call_function_single_async(droq->cpu_id, csd);
}
}
/** /**
* \brief Entry point for NAPI polling * \brief Entry point for NAPI polling
* @param napi NAPI structure * @param napi NAPI structure
......
...@@ -1376,17 +1376,6 @@ static void if_cfg_callback(struct octeon_device *oct, ...@@ -1376,17 +1376,6 @@ static void if_cfg_callback(struct octeon_device *oct,
wake_up_interruptible(&ctx->wc); wake_up_interruptible(&ctx->wc);
} }
/**
* \brief callback when receive interrupt occurs and we are in NAPI mode
* @param arg pointer to octeon output queue
*/
static void liquidio_vf_napi_drv_callback(void *arg)
{
struct octeon_droq *droq = arg;
napi_schedule_irqoff(&droq->napi);
}
/** /**
* \brief Entry point for NAPI polling * \brief Entry point for NAPI polling
* @param napi NAPI structure * @param napi NAPI structure
...@@ -1473,7 +1462,7 @@ static int setup_io_queues(struct octeon_device *octeon_dev, int ifidx) ...@@ -1473,7 +1462,7 @@ static int setup_io_queues(struct octeon_device *octeon_dev, int ifidx)
droq_ops.farg = netdev; droq_ops.farg = netdev;
droq_ops.poll_mode = 1; droq_ops.poll_mode = 1;
droq_ops.napi_fn = liquidio_vf_napi_drv_callback; droq_ops.napi_fn = liquidio_napi_drv_callback;
cpu_id = 0; cpu_id = 0;
cpu_id_modulus = num_present_cpus(); cpu_id_modulus = num_present_cpus();
......
...@@ -484,4 +484,5 @@ liquidio_push_packet(u32 octeon_id __attribute__((unused)), ...@@ -484,4 +484,5 @@ liquidio_push_packet(u32 octeon_id __attribute__((unused)),
union octeon_rh *rh, union octeon_rh *rh,
void *param, void *param,
void *arg); void *arg);
void liquidio_napi_drv_callback(void *arg);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment