PM_QOS-to-use-handle-based-requests-network-update 3/5
Subsystems (2)
PATCH 1/1 PM_QOS-to-use-handle-based-requests-network-update 3/5
Signed-off-by mark gross <[email protected]>
--- drivers/net/e1000e/netdev.c | 22 ++++++++++++---------- drivers/net/igbvf/netdev.c | 6 ++++-- include/linux/netdevice.h | 4 ++++ 3 files changed, 20 insertions(+), 12 deletions(-)
drivers/net/e1000e/netdev.c +12 -10
@@ -2518,12 +2518,12 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)* excessive C-state transition latencies result in * dropped transactions. */ -pm_qos_update_requirement (PM_QOS_CPU_DMA_LATENCY , - adapter->netdev->name,55 ); +pm_qos_update_request ( + adapter->netdev->pm_qos_req,55 ); }else { -pm_qos_update_requirement (PM_QOS_CPU_DMA_LATENCY , - adapter->netdev->name, -PM_QOS_DEFAULT_VALUE ); +pm_qos_update_request ( + adapter->netdev->pm_qos_req, +PM_QOS_DEFAULT_VALUE ); } }
@@ -2833,8 +2833,8 @@ int e1000e_up(struct e1000_adapter *adapter)/* DMA latency requirement to workaround early-receive/jumbo issue */ if (adapter->flags &FLAG_HAS_ERT ) -pm_qos_add_requirement (PM_QOS_CPU_DMA_LATENCY , - adapter->netdev->name, + adapter->netdev->pm_qos_req = +pm_qos_add_request (PM_QOS_CPU_DMA_LATENCY ,PM_QOS_DEFAULT_VALUE );/* hardware has been reset, we need to reload some things */
@@ -2897,9 +2897,11 @@ void e1000e_down(struct e1000_adapter *adapter)e1000_clean_tx_ring (adapter);e1000_clean_rx_ring (adapter); -if (adapter->flags &FLAG_HAS_ERT ) -pm_qos_remove_requirement (PM_QOS_CPU_DMA_LATENCY , - adapter->netdev->name); +if (adapter->flags &FLAG_HAS_ERT ) { +pm_qos_remove_request ( + adapter->netdev->pm_qos_req); + adapter->netdev->pm_qos_req =NULL ; + }/* * TODO: for power management, we could drop the link and
drivers/net/igbvf/netdev.c +4 -2
@@ -47,6 +47,7 @@#define DRV_VERSION "1.0.0-k0"char igbvf_driver_name[] ="igbvf" ;const char igbvf_driver_version[] =DRV_VERSION ; +struct pm_qos_request_list *igbvf_driver_pm_qos_req;static const char igbvf_driver_string[] ="Intel(R) Virtual Function Network Driver" ;static const char igbvf_copyright[] ="Copyright (c) 2009 Intel Corporation." ;
@@ -2912,7 +2913,7 @@ static int __init igbvf_init_module(void)printk (KERN_INFO "%s\n" , igbvf_copyright); ret =pci_register_driver (&igbvf_driver); -pm_qos_add_requirement (PM_QOS_CPU_DMA_LATENCY , igbvf_driver_name, + igbvf_driver_pm_qos_req =pm_qos_add_request (PM_QOS_CPU_DMA_LATENCY ,PM_QOS_DEFAULT_VALUE );return ret;
@@ -2928,7 +2929,8 @@ module_init(igbvf_init_module); static void __exit igbvf_exit_module(void) {pci_unregister_driver (&igbvf_driver); -pm_qos_remove_requirement (PM_QOS_CPU_DMA_LATENCY , igbvf_driver_name); +pm_qos_remove_request (igbvf_driver_pm_qos_req); + igbvf_driver_pm_qos_req =NULL ; }module_exit (igbvf_exit_module);
include/linux/netdevice.h +4 -0
@@ -30,6 +30,7 @@#include <linux/if_packet.h> #ifdef __KERNEL__ +#include <linux/pm_qos_params.h> #include <linux/timer.h> #include <linux/delay.h> #include <linux/mm.h>
@@ -693,6 +694,9 @@ struct net_device {* the interface. */ char name[IFNAMSIZ ]; + +struct pm_qos_request_list *pm_qos_req; +/* device name hash chain */ struct hlist_node name_hlist;/* snmp alias */
Signature · 1 line
1.6.3.3