liquidio: moved liquidio_napi_drv_callback to lio_core.c
Moving common liquidio_napi_drv_callback to lio_core.c Signed-off-by: Intiyaz Basha <intiyaz.basha@cavium.com> Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
21f0888b5a
commit
d1d97ee6e3
|
@ -581,3 +581,42 @@ liquidio_push_packet(u32 octeon_id __attribute__((unused)),
|
|||
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,
|
|||
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
|
||||
* @param napi NAPI structure
|
||||
|
|
|
@ -1376,17 +1376,6 @@ static void if_cfg_callback(struct octeon_device *oct,
|
|||
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
|
||||
* @param napi NAPI structure
|
||||
|
@ -1473,7 +1462,7 @@ static int setup_io_queues(struct octeon_device *octeon_dev, int ifidx)
|
|||
droq_ops.farg = netdev;
|
||||
|
||||
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_modulus = num_present_cpus();
|
||||
|
||||
|
|
|
@ -484,4 +484,5 @@ liquidio_push_packet(u32 octeon_id __attribute__((unused)),
|
|||
union octeon_rh *rh,
|
||||
void *param,
|
||||
void *arg);
|
||||
void liquidio_napi_drv_callback(void *arg);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue