mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
fcoe: convert to kworker
The driver creates its own per-CPU threads which are updated based on CPU hotplug events. It is also possible to use kworkers and remove some of the kthread infrastrucure. The code checked ->thread to decide if there is an active per-CPU thread. By using the kworker infrastructure this is no longer possible (or required). The thread pointer is saved in `kthread' instead of `thread' so anything trying to use thread is caught by the compiler. Currently only the bnx2fc driver is using struct fcoe_percpu_s and the kthread member. After a CPU went offline, we may still enqueue items on the "offline" CPU. This isn't much of a problem. The work will be done on a random CPU. The allocated crc_eof_page page won't be cleaned up. It is probably expected that the CPU comes up at some point so it should not be a problem. The crc_eof_page memory is released of course once the module is removed. This patch was only compile-tested due to -ENODEV. Cc: Vasu Dev <[email protected]> Cc: "James E.J. Bottomley" <[email protected]> Cc: "Martin K. Petersen" <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: [email protected] Cc: [email protected] Signed-off-by: Sebastian Andrzej Siewior <[email protected]> Tested-by: Johannes Thumshirn <[email protected]> Reviewed-by: Johannes Thumshirn <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
This commit is contained in:
parent
49a75815e9
commit
4b9bc86d5a
3 changed files with 34 additions and 256 deletions
|
|
@ -319,14 +319,16 @@ struct fcoe_transport {
|
|||
|
||||
/**
|
||||
* struct fcoe_percpu_s - The context for FCoE receive thread(s)
|
||||
* @thread: The thread context
|
||||
* @kthread: The thread context (used by bnx2fc)
|
||||
* @work: The work item (used by fcoe)
|
||||
* @fcoe_rx_list: The queue of pending packets to process
|
||||
* @page: The memory page for calculating frame trailer CRCs
|
||||
* @crc_eof_offset: The offset into the CRC page pointing to available
|
||||
* memory for a new trailer
|
||||
*/
|
||||
struct fcoe_percpu_s {
|
||||
struct task_struct *thread;
|
||||
struct task_struct *kthread;
|
||||
struct work_struct work;
|
||||
struct sk_buff_head fcoe_rx_list;
|
||||
struct page *crc_eof_page;
|
||||
int crc_eof_offset;
|
||||
|
|
|
|||
Loading…
Reference in a new issue