diff options
author | Malcolm Priestley <tvboxspy@gmail.com> | 2013-09-27 16:55:45 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-09-30 18:33:14 -0700 |
commit | a21fc2f5bef9031d6c7ace224c7061b9e53596e4 (patch) | |
tree | 021fa25bb43980c00416efaa9fde15887348e2a0 /drivers/staging/vt6656/dpc.c | |
parent | 81d720d3150dedebec423ac8efbdf6bc2055f1fc (diff) |
staging: vt6656: covert RXvMngWorkItem to work queue
Tasklet to workqueue.
RxMngWorkItem -> rx_mng_work_item
Reduce atomic area of driver and dependency on system timer.
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/vt6656/dpc.c')
-rw-r--r-- | drivers/staging/vt6656/dpc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/staging/vt6656/dpc.c b/drivers/staging/vt6656/dpc.c index 1b0e6a7b93c7..82d7c1d09ef6 100644 --- a/drivers/staging/vt6656/dpc.c +++ b/drivers/staging/vt6656/dpc.c @@ -559,7 +559,7 @@ int RXbBulkInProcessData(struct vnt_private *pDevice, struct vnt_rcb *pRCB, } if (pDevice->bIsRxMngWorkItemQueued == false) { pDevice->bIsRxMngWorkItemQueued = true; - tasklet_schedule(&pDevice->RxMngWorkItem); + schedule_work(&pDevice->rx_mng_work_item); } } @@ -1390,8 +1390,10 @@ void RXvFreeRCB(struct vnt_rcb *pRCB, int bReAllocSkb) DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"<----RXFreeRCB %d %d\n",pDevice->NumRecvFreeList, pDevice->NumRecvMngList); } -void RXvMngWorkItem(struct vnt_private *pDevice) +void RXvMngWorkItem(struct work_struct *work) { + struct vnt_private *pDevice = + container_of(work, struct vnt_private, rx_mng_work_item); struct vnt_rcb *pRCB = NULL; struct vnt_rx_mgmt *pRxPacket; int bReAllocSkb = false; |