mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-18 16:44:27 +08:00
sfc: Generalise event generation to cover VF-owned event queues
For SR-IOV we will need to send events to event queues that belong to VFs serviced by other drivers. Change the parameters of efx_generate_event() to allow this and declare it extern. While we're at it, remove the existing declaration under the wrong name efx_nic_generate_event(). Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
This commit is contained in:
parent
9d9a6973a8
commit
90893000e2
@ -754,7 +754,8 @@ void efx_nic_eventq_read_ack(struct efx_channel *channel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Use HW to insert a SW defined event */
|
/* Use HW to insert a SW defined event */
|
||||||
static void efx_generate_event(struct efx_channel *channel, efx_qword_t *event)
|
void efx_generate_event(struct efx_nic *efx, unsigned int evq,
|
||||||
|
efx_qword_t *event)
|
||||||
{
|
{
|
||||||
efx_oword_t drv_ev_reg;
|
efx_oword_t drv_ev_reg;
|
||||||
|
|
||||||
@ -764,8 +765,8 @@ static void efx_generate_event(struct efx_channel *channel, efx_qword_t *event)
|
|||||||
drv_ev_reg.u32[1] = event->u32[1];
|
drv_ev_reg.u32[1] = event->u32[1];
|
||||||
drv_ev_reg.u32[2] = 0;
|
drv_ev_reg.u32[2] = 0;
|
||||||
drv_ev_reg.u32[3] = 0;
|
drv_ev_reg.u32[3] = 0;
|
||||||
EFX_SET_OWORD_FIELD(drv_ev_reg, FRF_AZ_DRV_EV_QID, channel->channel);
|
EFX_SET_OWORD_FIELD(drv_ev_reg, FRF_AZ_DRV_EV_QID, evq);
|
||||||
efx_writeo(channel->efx, &drv_ev_reg, FR_AZ_DRV_EV);
|
efx_writeo(efx, &drv_ev_reg, FR_AZ_DRV_EV);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void efx_magic_event(struct efx_channel *channel, u32 magic)
|
static void efx_magic_event(struct efx_channel *channel, u32 magic)
|
||||||
@ -775,7 +776,7 @@ static void efx_magic_event(struct efx_channel *channel, u32 magic)
|
|||||||
EFX_POPULATE_QWORD_2(event, FSF_AZ_EV_CODE,
|
EFX_POPULATE_QWORD_2(event, FSF_AZ_EV_CODE,
|
||||||
FSE_AZ_EV_CODE_DRV_GEN_EV,
|
FSE_AZ_EV_CODE_DRV_GEN_EV,
|
||||||
FSF_AZ_DRV_GEN_EV_MAGIC, magic);
|
FSF_AZ_DRV_GEN_EV_MAGIC, magic);
|
||||||
efx_generate_event(channel, &event);
|
efx_generate_event(channel->efx, channel->channel, &event);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle a transmit completion event
|
/* Handle a transmit completion event
|
||||||
|
@ -283,8 +283,8 @@ extern void efx_nic_get_regs(struct efx_nic *efx, void *buf);
|
|||||||
#define MAC_DATA_LBN 0
|
#define MAC_DATA_LBN 0
|
||||||
#define MAC_DATA_WIDTH 32
|
#define MAC_DATA_WIDTH 32
|
||||||
|
|
||||||
extern void efx_nic_generate_event(struct efx_channel *channel,
|
extern void efx_generate_event(struct efx_nic *efx, unsigned int evq,
|
||||||
efx_qword_t *event);
|
efx_qword_t *event);
|
||||||
|
|
||||||
extern void falcon_poll_xmac(struct efx_nic *efx);
|
extern void falcon_poll_xmac(struct efx_nic *efx);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user