Searched hist:b899a02ad7330cae3c9bb08ad7975601dc3b9551 (Results 1 – 2 of 2) sorted by relevance
/freebsd/sys/dev/ena/ |
H A D | ena.h | diff b899a02ad7330cae3c9bb08ad7975601dc3b9551 Fri Jun 10 11:18:10 CEST 2022 Dawid Gorecki <dgr@semihalf.com> ena: Move ena_copy_eni_metrics into separate task
Copying ENI metrics was done in callout context, this caused the driver to panic when sample_interval was set to a value other than 0, as the admin queue call which was executed could sleep while waiting on a condition variable. Taskqueue, unlike callout, allows for sleeping, so moving the function to a separate taskqueue fixes the problem. ena_timer_service is still responsible for scheduling the taskqueue.
Stop draining the callout during ena_up/ena_down. This was done to prevent a race between ena_up/down and ena_copy_eni_metrics admin queue calls. Since ena_metrics_task is protected by ENA_LOCK there is no possibility of a race between ena_up/down and ena_metrics_task.
Remove a comment about locking in ena_timer_service. With ENI metrics in a separate task this comment became obsolete.
Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc.
|
H A D | ena.c | diff b899a02ad7330cae3c9bb08ad7975601dc3b9551 Fri Jun 10 11:18:10 CEST 2022 Dawid Gorecki <dgr@semihalf.com> ena: Move ena_copy_eni_metrics into separate task
Copying ENI metrics was done in callout context, this caused the driver to panic when sample_interval was set to a value other than 0, as the admin queue call which was executed could sleep while waiting on a condition variable. Taskqueue, unlike callout, allows for sleeping, so moving the function to a separate taskqueue fixes the problem. ena_timer_service is still responsible for scheduling the taskqueue.
Stop draining the callout during ena_up/ena_down. This was done to prevent a race between ena_up/down and ena_copy_eni_metrics admin queue calls. Since ena_metrics_task is protected by ENA_LOCK there is no possibility of a race between ena_up/down and ena_metrics_task.
Remove a comment about locking in ena_timer_service. With ENI metrics in a separate task this comment became obsolete.
Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc.
|