sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget&/translations/zh_CN/networking/net_dimmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/zh_TW/networking/net_dimmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/it_IT/networking/net_dimmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ja_JP/networking/net_dimmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/ko_KR/networking/net_dimmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget&/translations/sp_SP/networking/net_dimmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(h6Net DIM - Generic Network Dynamic Interrupt Moderationh]h6Net DIM - Generic Network Dynamic Interrupt Moderation}(hhhhhNhNubah}(h]h ]h"]h$]h&]refidid1uh1hhhhhh@/var/lib/git/docbuild/linux/Documentation/networking/net_dim.rsthKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hAuthorh]hAuthor}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h Tal Gilboa h]h paragraph)}(hTal Gilboa h](h Tal Gilboa <}(hhhhhNhNubh reference)}(htalgi@mellanox.comh]htalgi@mellanox.com}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:talgi@mellanox.comuh1hhhubh>}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhtopic)}(h Contents h](h)}(hContentsh]hContents}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhKubh bullet_list)}(hhh]h list_item)}(hhh](h)}(hhh]h)}(hhh]h6Net DIM - Generic Network Dynamic Interrupt Moderation}(hj2hhhNhNubah}(h]hah ]h"]h$]h&]refid4net-dim-generic-network-dynamic-interrupt-moderationuh1hhj/ubah}(h]h ]h"]h$]h&]uh1hhj,ubj&)}(hhh](j+)}(hhh]h)}(hhh]h)}(hhh]h Assumptions}(hjPhhhNhNubah}(h]id2ah ]h"]h$]h&]refid assumptionsuh1hhjMubah}(h]h ]h"]h$]h&]uh1hhjJubah}(h]h ]h"]h$]h&]uh1j*hjGubj+)}(hhh]h)}(hhh]h)}(hhh]h Introduction}(hjrhhhNhNubah}(h]id3ah ]h"]h$]h&]refid introductionuh1hhjoubah}(h]h ]h"]h$]h&]uh1hhjlubah}(h]h ]h"]h$]h&]uh1j*hjGubj+)}(hhh]h)}(hhh]h)}(hhh]hNet DIM Algorithm}(hjhhhNhNubah}(h]id4ah ]h"]h$]h&]refidnet-dim-algorithmuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j*hjGubj+)}(hhh]h)}(hhh]h)}(hhh]h#Registering a Network Device to DIM}(hjhhhNhNubah}(h]id5ah ]h"]h$]h&]refid#registering-a-network-device-to-dimuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j*hjGubj+)}(hhh]h)}(hhh]h)}(hhh]hExample}(hjhhhNhNubah}(h]id6ah ]h"]h$]h&]refidexampleuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j*hjGubj+)}(hhh]h)}(hhh]h)}(hhh]h Tuning DIM}(hjhhhNhNubah}(h]id7ah ]h"]h$]h&]refid tuning-dimuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j*hjGubj+)}(hhh]h)}(hhh]h)}(hhh]h.Dynamic Interrupt Moderation (DIM) library API}(hjhhhNhNubah}(h]id8ah ]h"]h$]h&]refid,dynamic-interrupt-moderation-dim-library-apiuh1hhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1j*hjGubeh}(h]h ]h"]h$]h&]uh1j%hj,ubeh}(h]h ]h"]h$]h&]uh1j*hj'ubah}(h]h ]h"]h$]h&]uh1j%hjhhhNhNubeh}(h]contentsah ]contentsah"]contentsah$]h&]uh1jhhhKhhhhubh)}(hhh](h)}(h Assumptionsh]h Assumptions}(hjVhhhNhNubah}(h]h ]h"]h$]h&]hjYuh1hhjShhhhhK ubh)}(hlThis document assumes the reader has basic knowledge in network drivers and in general interrupt moderation.h]hlThis document assumes the reader has basic knowledge in network drivers and in general interrupt moderation.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjShhubeh}(h]j_ah ]h"] assumptionsah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(h Introductionh]h Introduction}(hj|hhhNhNubah}(h]h ]h"]h$]h&]hj{uh1hhjyhhhhhKubh)}(hXpDynamic Interrupt Moderation (DIM) (in networking) refers to changing the interrupt moderation configuration of a channel in order to optimize packet processing. The mechanism includes an algorithm which decides if and how to change moderation parameters for a channel, usually by performing an analysis on runtime data sampled from the system. Net DIM is such a mechanism. In each iteration of the algorithm, it analyses a given sample of the data, compares it to the previous sample and if required, it can decide to change some of the interrupt moderation configuration fields. The data sample is composed of data bandwidth, the number of packets and the number of events. The time between samples is also measured. Net DIM compares the current and the previous data and returns an adjusted interrupt moderation configuration object. In some cases, the algorithm might decide not to change anything. The configuration fields are the minimum duration (microseconds) allowed between events and the maximum number of wanted packets per event. The Net DIM algorithm ascribes importance to increase bandwidth over reducing interrupt rate.h]hXpDynamic Interrupt Moderation (DIM) (in networking) refers to changing the interrupt moderation configuration of a channel in order to optimize packet processing. The mechanism includes an algorithm which decides if and how to change moderation parameters for a channel, usually by performing an analysis on runtime data sampled from the system. Net DIM is such a mechanism. In each iteration of the algorithm, it analyses a given sample of the data, compares it to the previous sample and if required, it can decide to change some of the interrupt moderation configuration fields. The data sample is composed of data bandwidth, the number of packets and the number of events. The time between samples is also measured. Net DIM compares the current and the previous data and returns an adjusted interrupt moderation configuration object. In some cases, the algorithm might decide not to change anything. The configuration fields are the minimum duration (microseconds) allowed between events and the maximum number of wanted packets per event. The Net DIM algorithm ascribes importance to increase bandwidth over reducing interrupt rate.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjyhhubeh}(h]jah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hNet DIM Algorithmh]hNet DIM Algorithm}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhK%ubh)}(h` and :c:type:`struct dim_sample `. :c:type:`struct dim ` describes the state of DIM for a specific object (RX queue, TX queue, other queues, etc.). This includes the current selected profile, previous data samples, the callback function provided by the driver and more. :c:type:`struct dim_sample ` describes a data sample, which will be compared to the data sample stored in :c:type:`struct dim ` in order to decide on the algorithm's next step. The sample should include bytes, packets and interrupts, measured by the driver.h](hXNet DIM API exposes the main function net_dim(). This function is the entry point to the Net DIM algorithm and has to be called every time the driver would like to check if it should change interrupt moderation parameters. The driver should provide two data structures: }(hj{hhhNhNubh)}(h:c:type:`struct dim `h]hliteral)}(hjh]h struct dim}(hjhhhNhNubah}(h]h ](xrefcc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocnetworking/net_dim refdomainjreftypetype refexplicitrefwarn reftargetdimuh1hhhhKXhj{ubh and }(hj{hhhNhNubh)}(h(:c:type:`struct dim_sample `h]j)}(hjh]hstruct dim_sample}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj dim_sampleuh1hhhhKXhj{ubh. }(hj{hhhNhNubh)}(h:c:type:`struct dim `h]j)}(hjh]h struct dim}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjdimuh1hhhhKXhj{ubh describes the state of DIM for a specific object (RX queue, TX queue, other queues, etc.). This includes the current selected profile, previous data samples, the callback function provided by the driver and more. }(hj{hhhNhNubh)}(h(:c:type:`struct dim_sample `h]j)}(hjh]hstruct dim_sample}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj dim_sampleuh1hhhhKXhj{ubhN describes a data sample, which will be compared to the data sample stored in }(hj{hhhNhNubh)}(h:c:type:`struct dim `h]j)}(hjh]h struct dim}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjdimuh1hhhhKXhj{ubh in order to decide on the algorithm’s next step. The sample should include bytes, packets and interrupts, measured by the driver.}(hj{hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKXhjjhhubh)}(hX In order to use Net DIM from a networking driver, the driver needs to call the main net_dim() function. The recommended method is to call net_dim() on each interrupt. Since Net DIM has a built-in moderation and it might decide to skip iterations under certain conditions, there is no need to moderate the net_dim() calls as well. As mentioned above, the driver needs to provide an object of type :c:type:`struct dim ` to the net_dim() function call. It is advised for each entity using Net DIM to hold a :c:type:`struct dim ` as part of its data structure and use it as the main Net DIM API object. The :c:type:`struct dim_sample ` should hold the latest bytes, packets and interrupts count. No need to perform any calculations, just include the raw data.h](hXIn order to use Net DIM from a networking driver, the driver needs to call the main net_dim() function. The recommended method is to call net_dim() on each interrupt. Since Net DIM has a built-in moderation and it might decide to skip iterations under certain conditions, there is no need to moderate the net_dim() calls as well. As mentioned above, the driver needs to provide an object of type }(hj>hhhNhNubh)}(h:c:type:`struct dim `h]j)}(hjHh]h struct dim}(hjJhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjdimuh1hhhhKghj>ubhW to the net_dim() function call. It is advised for each entity using Net DIM to hold a }(hj>hhhNhNubh)}(h:c:type:`struct dim `h]j)}(hjkh]h struct dim}(hjmhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjdimuh1hhhhKghj>ubhN as part of its data structure and use it as the main Net DIM API object. The }(hj>hhhNhNubh)}(h(:c:type:`struct dim_sample `h]j)}(hjh]hstruct dim_sample}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj dim_sampleuh1hhhhKghj>ubh| should hold the latest bytes, packets and interrupts count. No need to perform any calculations, just include the raw data.}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKghjjhhubh)}(hXThe net_dim() call itself does not return anything. Instead Net DIM relies on the driver to provide a callback function, which is called when the algorithm decides to make a change in the interrupt moderation parameters. This callback will be scheduled and run in a separate thread in order not to add overhead to the data flow. After the work is done, Net DIM algorithm needs to be set to the proper state in order to move to the next iteration.h]hXThe net_dim() call itself does not return anything. Instead Net DIM relies on the driver to provide a callback function, which is called when the algorithm decides to make a change in the interrupt moderation parameters. This callback will be scheduled and run in a separate thread in order not to add overhead to the data flow. After the work is done, Net DIM algorithm needs to be set to the proper state in order to move to the next iteration.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjjhhubeh}(h]jah ]h"]#registering a network device to dimah$]h&]uh1hhhhhhhhKVubh)}(hhh](h)}(hExampleh]hExample}(hjhhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhK|ubh)}(hThe following code demonstrates how to register a driver to Net DIM. The actual usage is not complete but it should make the outline of the usage clear.h]hThe following code demonstrates how to register a driver to Net DIM. The actual usage is not complete but it should make the outline of the usage clear.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK~hjhhubh literal_block)}(hX!#include /* Callback for net DIM to schedule on a decision to change moderation */ void my_driver_do_dim_work(struct work_struct *work) { /* Get struct dim from struct work_struct */ struct dim *dim = container_of(work, struct dim, work); /* Do interrupt moderation related stuff */ ... /* Signal net DIM work is done and it should move to next iteration */ dim->state = DIM_START_MEASURE; } /* My driver's interrupt handler */ int my_driver_handle_interrupt(struct my_driver_entity *my_entity, ...) { ... /* A struct to hold current measured data */ struct dim_sample dim_sample; ... /* Initiate data sample struct with current data */ dim_update_sample(my_entity->events, my_entity->packets, my_entity->bytes, &dim_sample); /* Call net DIM */ net_dim(&my_entity->dim, &dim_sample); ... } /* My entity's initialization function (my_entity was already allocated) */ int my_driver_init_my_entity(struct my_driver_entity *my_entity, ...) { ... /* Initiate struct work_struct with my driver's callback function */ INIT_WORK(&my_entity->dim.work, my_driver_do_dim_work); ... }h]hX!#include /* Callback for net DIM to schedule on a decision to change moderation */ void my_driver_do_dim_work(struct work_struct *work) { /* Get struct dim from struct work_struct */ struct dim *dim = container_of(work, struct dim, work); /* Do interrupt moderation related stuff */ ... /* Signal net DIM work is done and it should move to next iteration */ dim->state = DIM_START_MEASURE; } /* My driver's interrupt handler */ int my_driver_handle_interrupt(struct my_driver_entity *my_entity, ...) { ... /* A struct to hold current measured data */ struct dim_sample dim_sample; ... /* Initiate data sample struct with current data */ dim_update_sample(my_entity->events, my_entity->packets, my_entity->bytes, &dim_sample); /* Call net DIM */ net_dim(&my_entity->dim, &dim_sample); ... } /* My entity's initialization function (my_entity was already allocated) */ int my_driver_init_my_entity(struct my_driver_entity *my_entity, ...) { ... /* Initiate struct work_struct with my driver's callback function */ INIT_WORK(&my_entity->dim.work, my_driver_do_dim_work); ... }}hjsbah}(h]h ]h"]h$]h&] xml:spacepreserveforcelanguagejhighlight_args}uh1jhhhKhjhhubeh}(h]jah ]h"]exampleah$]h&]uh1hhhhhhhhK|ubh)}(hhh](h)}(h Tuning DIMh]h Tuning DIM}(hj hhhNhNubah}(h]h ]h"]h$]h&]hjuh1hhjhhhhhKubh)}(hXNet DIM serves a range of network devices and delivers excellent acceleration benefits. Yet, it has been observed that some preset configurations of DIM may not align seamlessly with the varying specifications of network devices, and this discrepancy has been identified as a factor to the suboptimal performance outcomes of DIM-enabled network devices, related to a mismatch in profiles.h]hXNet DIM serves a range of network devices and delivers excellent acceleration benefits. Yet, it has been observed that some preset configurations of DIM may not align seamlessly with the varying specifications of network devices, and this discrepancy has been identified as a factor to the suboptimal performance outcomes of DIM-enabled network devices, related to a mismatch in profiles.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX~To address this issue, Net DIM introduces a per-device control to modify and access a device's ``rx-profile`` and ``tx-profile`` parameters: Assume that the target network device is named ethx, and ethx only declares support for RX profile setting and supports modification of ``usec`` field and ``pkts`` field (See the data structure: :c:type:`struct dim_cq_moder `).h](haTo address this issue, Net DIM introduces a per-device control to modify and access a device’s }(hj%hhhNhNubj)}(h``rx-profile``h]h rx-profile}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh and }(hj%hhhNhNubj)}(h``tx-profile``h]h tx-profile}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh parameters: Assume that the target network device is named ethx, and ethx only declares support for RX profile setting and supports modification of }(hj%hhhNhNubj)}(h``usec``h]husec}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh field and }(hj%hhhNhNubj)}(h``pkts``h]hpkts}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubh field (See the data structure: }(hj%hhhNhNubh)}(h,:c:type:`struct dim_cq_moder `h]j)}(hjwh]hstruct dim_cq_moder}(hjyhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj dim_cq_moderuh1hhhhKhj%ubh).}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hRYou can use ethtool to modify the current RX DIM profile where all values are 64::h]hQYou can use ethtool to modify the current RX DIM profile where all values are 64:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(h:$ ethtool -C ethx rx-profile 1,1,n_2,2,n_3,n,n_n,4,n_n,n,nh]h:$ ethtool -C ethx rx-profile 1,1,n_2,2,n_3,n,n_n,4,n_n,n,n}hjsbah}(h]h ]h"]h$]h&]jjuh1jhhhKhjhhubh)}(hb``n`` means do not modify this field, and ``_`` separates structure elements of the profile array.h](j)}(h``n``h]hn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh% means do not modify this field, and }(hjhhhNhNubj)}(h``_``h]h_}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh3 separates structure elements of the profile array.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h%Querying the current profiles using::h]h$Querying the current profiles using:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hX $ ethtool -c ethx ... rx-profile: {.usec = 1, .pkts = 1, .comps = n/a,}, {.usec = 2, .pkts = 2, .comps = n/a,}, {.usec = 3, .pkts = 64, .comps = n/a,}, {.usec = 64, .pkts = 4, .comps = n/a,}, {.usec = 64, .pkts = 64, .comps = n/a,} tx-profile: n/ah]hX $ ethtool -c ethx ... rx-profile: {.usec = 1, .pkts = 1, .comps = n/a,}, {.usec = 2, .pkts = 2, .comps = n/a,}, {.usec = 3, .pkts = 64, .comps = n/a,}, {.usec = 64, .pkts = 4, .comps = n/a,}, {.usec = 64, .pkts = 64, .comps = n/a,} tx-profile: n/a}hjsbah}(h]h ]h"]h$]h&]jjuh1jhhhKhjhhubh)}(hIf the network device does not support specific fields of DIM profiles, the corresponding ``n/a`` will display. If the ``n/a`` field is being modified, error messages will be reported.h](hZIf the network device does not support specific fields of DIM profiles, the corresponding }(hjhhhNhNubj)}(h``n/a``h]hn/a}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh will display. If the }(hjhhhNhNubj)}(h``n/a``h]hn/a}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh: field is being modified, error messages will be reported.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]j ah ]h"] tuning dimah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h.Dynamic Interrupt Moderation (DIM) library APIh]h.Dynamic Interrupt Moderation (DIM) library API}(hj@hhhNhNubah}(h]h ]h"]h$]h&]hj%uh1hhj=hhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singledim_cq_moder (C struct)c.dim_cq_moderhNtauh1jNhj=hhhNhNubhdesc)}(hhh](hdesc_signature)}(h dim_cq_moderh]hdesc_signature_line)}(hstruct dim_cq_moderh](hdesc_sig_keyword)}(hstructh]hstruct}(hjrhhhNhNubah}(h]h ]kah"]h$]h&]uh1jphjlhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhjlhhhjhKubh desc_name)}(h dim_cq_moderh]h desc_sig_name)}(hjhh]h dim_cq_moder}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]jjuh1jhjlhhhjhKubeh}(h]h ]h"]h$]h&]jj add_permalinkuh1jjsphinx_line_type declaratorhjfhhhjhKubah}(h]j]ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jdhjhKhjahhubh desc_content)}(hhh]h)}(hYStructure for CQ moderation values. Used for communications between DIM and its consumer.h]hYStructure for CQ moderation values. Used for communications between DIM and its consumer.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK+hjhhubah}(h]h ]h"]h$]h&]uh1jhjahhhjhKubeh}(h]h ](jstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1j_hhhj=hNhNubh container)}(hX{**Definition**:: struct dim_cq_moder { u16 usec; u16 pkts; u16 comps; u8 cq_period_mode; struct rcu_head rcu; }; **Members** ``usec`` CQ timer suggestion (by DIM) ``pkts`` CQ packet counter suggestion (by DIM) ``comps`` Completion counter ``cq_period_mode`` CQ period count mode (from CQE/EQE) ``rcu`` for asynchronous kfree_rcuh](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK/hjubj)}(hsstruct dim_cq_moder { u16 usec; u16 pkts; u16 comps; u8 cq_period_mode; struct rcu_head rcu; };h]hsstruct dim_cq_moder { u16 usec; u16 pkts; u16 comps; u8 cq_period_mode; struct rcu_head rcu; };}hjsbah}(h]h ]h"]h$]h&]jjuh1jhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK1hjubh)}(h **Members**h]j)}(hj"h]hMembers}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK9hjubhdefinition_list)}(hhh](hdefinition_list_item)}(h&``usec`` CQ timer suggestion (by DIM) h](hterm)}(h``usec``h]j)}(hjGh]husec}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK/hj?ubh definition)}(hhh]h)}(hCQ timer suggestion (by DIM)h]hCQ timer suggestion (by DIM)}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hK/hj_ubah}(h]h ]h"]h$]h&]uh1j]hj?ubeh}(h]h ]h"]h$]h&]uh1j=hj\hK/hj:ubj>)}(h/``pkts`` CQ packet counter suggestion (by DIM) h](jD)}(h``pkts``h]j)}(hjh]hpkts}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK0hj|ubj^)}(hhh]h)}(h%CQ packet counter suggestion (by DIM)h]h%CQ packet counter suggestion (by DIM)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK0hjubah}(h]h ]h"]h$]h&]uh1j]hj|ubeh}(h]h ]h"]h$]h&]uh1j=hjhK0hj:ubj>)}(h``comps`` Completion counter h](jD)}(h ``comps``h]j)}(hjh]hcomps}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK1hjubj^)}(hhh]h)}(hCompletion counterh]hCompletion counter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK1hjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhK1hj:ubj>)}(h7``cq_period_mode`` CQ period count mode (from CQE/EQE) h](jD)}(h``cq_period_mode``h]j)}(hjh]hcq_period_mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK2hjubj^)}(hhh]h)}(h#CQ period count mode (from CQE/EQE)h]h#CQ period count mode (from CQE/EQE)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK2hj ubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hj hK2hj:ubj>)}(h"``rcu`` for asynchronous kfree_rcuh](jD)}(h``rcu``h]j)}(hj-h]hrcu}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK2hj'ubj^)}(hhh]h)}(hfor asynchronous kfree_rcuh]hfor asynchronous kfree_rcu}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK3hjCubah}(h]h ]h"]h$]h&]uh1j]hj'ubeh}(h]h ]h"]h$]h&]uh1j=hjBhK2hj:ubeh}(h]h ]h"]h$]h&]uh1j8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_irq_moder (C struct)c.dim_irq_moderhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h dim_irq_moderh]jk)}(hstruct dim_irq_moderh](jq)}(hjth]hstruct}(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK9ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK9ubj)}(h dim_irq_moderh]j)}(hjh]h dim_irq_moder}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhK9ubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjhhhjhK9ubah}(h]jzah ](jjeh"]h$]h&]jj)jhuh1jdhjhK9hj|hhubj)}(hhh]h)}(h]Structure for irq moderation information. Used to collect irq moderation related information.h]h]Structure for irq moderation information. Used to collect irq moderation related information.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKDhjhhubah}(h]h ]h"]h$]h&]uh1jhj|hhhjhK9ubeh}(h]h ](jstructeh"]h$]h&]jjjjjjjjjuh1j_hhhj=hNhNubj)}(hX**Definition**:: struct dim_irq_moder { u8 profile_flags; u8 coal_flags; u8 dim_rx_mode; u8 dim_tx_mode; struct dim_cq_moder __rcu *rx_profile; struct dim_cq_moder __rcu *tx_profile; void (*rx_dim_work)(struct work_struct *work); void (*tx_dim_work)(struct work_struct *work); }; **Members** ``profile_flags`` DIM_PROFILE_* ``coal_flags`` DIM_COALESCE_* for Rx and Tx ``dim_rx_mode`` Rx DIM period count mode: CQE or EQE ``dim_tx_mode`` Tx DIM period count mode: CQE or EQE ``rx_profile`` DIM profile list for Rx ``tx_profile`` DIM profile list for Tx ``rx_dim_work`` Rx DIM worker scheduled by net_dim() ``tx_dim_work`` Tx DIM worker scheduled by net_dim()h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKHhjubj)}(hX&struct dim_irq_moder { u8 profile_flags; u8 coal_flags; u8 dim_rx_mode; u8 dim_tx_mode; struct dim_cq_moder __rcu *rx_profile; struct dim_cq_moder __rcu *tx_profile; void (*rx_dim_work)(struct work_struct *work); void (*tx_dim_work)(struct work_struct *work); };h]hX&struct dim_irq_moder { u8 profile_flags; u8 coal_flags; u8 dim_rx_mode; u8 dim_tx_mode; struct dim_cq_moder __rcu *rx_profile; struct dim_cq_moder __rcu *tx_profile; void (*rx_dim_work)(struct work_struct *work); void (*tx_dim_work)(struct work_struct *work); };}hj sbah}(h]h ]h"]h$]h&]jjuh1jhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKJhjubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKUhjubj9)}(hhh](j>)}(h ``profile_flags`` DIM_PROFILE_* h](jD)}(h``profile_flags``h]j)}(hj6 h]h profile_flags}(hj8 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4 ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKHhj0 ubj^)}(hhh]h)}(h DIM_PROFILE_*h]h DIM_PROFILE_*}(hjO hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjK hKHhjL ubah}(h]h ]h"]h$]h&]uh1j]hj0 ubeh}(h]h ]h"]h$]h&]uh1j=hjK hKHhj- ubj>)}(h,``coal_flags`` DIM_COALESCE_* for Rx and Tx h](jD)}(h``coal_flags``h]j)}(hjo h]h coal_flags}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKIhji ubj^)}(hhh]h)}(hDIM_COALESCE_* for Rx and Txh]hDIM_COALESCE_* for Rx and Tx}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKIhj ubah}(h]h ]h"]h$]h&]uh1j]hji ubeh}(h]h ]h"]h$]h&]uh1j=hj hKIhj- ubj>)}(h5``dim_rx_mode`` Rx DIM period count mode: CQE or EQE h](jD)}(h``dim_rx_mode``h]j)}(hj h]h dim_rx_mode}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKJhj ubj^)}(hhh]h)}(h$Rx DIM period count mode: CQE or EQEh]h$Rx DIM period count mode: CQE or EQE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKJhj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hKJhj- ubj>)}(h5``dim_tx_mode`` Tx DIM period count mode: CQE or EQE h](jD)}(h``dim_tx_mode``h]j)}(hj h]h dim_tx_mode}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKKhj ubj^)}(hhh]h)}(h$Tx DIM period count mode: CQE or EQEh]h$Tx DIM period count mode: CQE or EQE}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKKhj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hKKhj- ubj>)}(h'``rx_profile`` DIM profile list for Rx h](jD)}(h``rx_profile``h]j)}(hj h]h rx_profile}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKLhj ubj^)}(hhh]h)}(hDIM profile list for Rxh]hDIM profile list for Rx}(hj3 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/ hKLhj0 ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj/ hKLhj- ubj>)}(h'``tx_profile`` DIM profile list for Tx h](jD)}(h``tx_profile``h]j)}(hjS h]h tx_profile}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKMhjM ubj^)}(hhh]h)}(hDIM profile list for Txh]hDIM profile list for Tx}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjh hKMhji ubah}(h]h ]h"]h$]h&]uh1j]hjM ubeh}(h]h ]h"]h$]h&]uh1j=hjh hKMhj- ubj>)}(h5``rx_dim_work`` Rx DIM worker scheduled by net_dim() h](jD)}(h``rx_dim_work``h]j)}(hj h]h rx_dim_work}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKNhj ubj^)}(hhh]h)}(h$Rx DIM worker scheduled by net_dim()h]h$Rx DIM worker scheduled by net_dim()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKNhj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hKNhj- ubj>)}(h4``tx_dim_work`` Tx DIM worker scheduled by net_dim()h](jD)}(h``tx_dim_work``h]j)}(hj h]h tx_dim_work}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKNhj ubj^)}(hhh]h)}(h$Tx DIM worker scheduled by net_dim()h]h$Tx DIM worker scheduled by net_dim()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKOhj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hKNhj- ubeh}(h]h ]h"]h$]h&]uh1j8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_sample (C struct) c.dim_samplehNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h dim_sampleh]jk)}(hstruct dim_sampleh](jq)}(hjth]hstruct}(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKUubj)}(h h]h }(hj- hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj, hKUubj)}(h dim_sampleh]j)}(hj h]h dim_sample}(hj? hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj; ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhj, hKUubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj hhhj, hKUubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jdhj, hKUhj hhubj)}(hhh]h)}(hTStructure for DIM sample data. Used for communications between DIM and its consumer.h]hTStructure for DIM sample data. Used for communications between DIM and its consumer.}(hja hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK\hj^ hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj, hKUubeh}(h]h ](jstructeh"]h$]h&]jjjjy jjy jjjuh1j_hhhj=hNhNubj)}(hXH**Definition**:: struct dim_sample { ktime_t time; u32 pkt_ctr; u32 byte_ctr; u16 event_ctr; u32 comp_ctr; }; **Members** ``time`` Sample timestamp ``pkt_ctr`` Number of packets ``byte_ctr`` Number of bytes ``event_ctr`` Number of events ``comp_ctr`` Current completion counterh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK`hj} ubj)}(hpstruct dim_sample { ktime_t time; u32 pkt_ctr; u32 byte_ctr; u16 event_ctr; u32 comp_ctr; };h]hpstruct dim_sample { ktime_t time; u32 pkt_ctr; u32 byte_ctr; u16 event_ctr; u32 comp_ctr; };}hj sbah}(h]h ]h"]h$]h&]jjuh1jhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKbhj} ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKjhj} ubj9)}(hhh](j>)}(h``time`` Sample timestamp h](jD)}(h``time``h]j)}(hj h]htime}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK`hj ubj^)}(hhh]h)}(hSample timestamph]hSample timestamp}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK`hj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hK`hj ubj>)}(h``pkt_ctr`` Number of packets h](jD)}(h ``pkt_ctr``h]j)}(hj h]hpkt_ctr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKahj ubj^)}(hhh]h)}(hNumber of packetsh]hNumber of packets}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKahj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hKahj ubj>)}(h``byte_ctr`` Number of bytes h](jD)}(h ``byte_ctr``h]j)}(hj@ h]hbyte_ctr}(hjB hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj> ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKbhj: ubj^)}(hhh]h)}(hNumber of bytesh]hNumber of bytes}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjU hKbhjV ubah}(h]h ]h"]h$]h&]uh1j]hj: ubeh}(h]h ]h"]h$]h&]uh1j=hjU hKbhj ubj>)}(h``event_ctr`` Number of events h](jD)}(h ``event_ctr``h]j)}(hjy h]h event_ctr}(hj{ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKchjs ubj^)}(hhh]h)}(hNumber of eventsh]hNumber of events}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKchj ubah}(h]h ]h"]h$]h&]uh1j]hjs ubeh}(h]h ]h"]h$]h&]uh1j=hj hKchj ubj>)}(h'``comp_ctr`` Current completion counterh](jD)}(h ``comp_ctr``h]j)}(hj h]hcomp_ctr}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKchj ubj^)}(hhh]h)}(hCurrent completion counterh]hCurrent completion counter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKdhj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hKchj ubeh}(h]h ]h"]h$]h&]uh1j8hj} ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_stats (C struct) c.dim_statshNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h dim_statsh]jk)}(hstruct dim_statsh](jq)}(hjth]hstruct}(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKjubj)}(h dim_statsh]j)}(hj h]h dim_stats}(hj, hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj( ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhj hKjubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj hhhj hKjubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jdhj hKjhj hhubj)}(hhh]h)}(hAStructure for DIM stats. Used for holding current measured rates.h]hAStructure for DIM stats. Used for holding current measured rates.}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKnhjK hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKjubeh}(h]h ](jstructeh"]h$]h&]jjjjf jjf jjjuh1j_hhhj=hNhNubj)}(hX2**Definition**:: struct dim_stats { int ppms; int bpms; int epms; int cpms; int cpe_ratio; }; **Members** ``ppms`` Packets per msec ``bpms`` Bytes per msec ``epms`` Events per msec ``cpms`` Completions per msec ``cpe_ratio`` Ratio of completions to eventsh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn ubh:}(hjn hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKrhjj ubj)}(h`struct dim_stats { int ppms; int bpms; int epms; int cpms; int cpe_ratio; };h]h`struct dim_stats { int ppms; int bpms; int epms; int cpms; int cpe_ratio; };}hj sbah}(h]h ]h"]h$]h&]jjuh1jhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKthjj ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK|hjj ubj9)}(hhh](j>)}(h``ppms`` Packets per msec h](jD)}(h``ppms``h]j)}(hj h]hppms}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKrhj ubj^)}(hhh]h)}(hPackets per msech]hPackets per msec}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKrhj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hKrhj ubj>)}(h``bpms`` Bytes per msec h](jD)}(h``bpms``h]j)}(hj h]hbpms}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKshj ubj^)}(hhh]h)}(hBytes per msech]hBytes per msec}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKshj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hKshj ubj>)}(h``epms`` Events per msec h](jD)}(h``epms``h]j)}(hj-h]hepms}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKthj'ubj^)}(hhh]h)}(hEvents per msech]hEvents per msec}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKthjCubah}(h]h ]h"]h$]h&]uh1j]hj'ubeh}(h]h ]h"]h$]h&]uh1j=hjBhKthj ubj>)}(h``cpms`` Completions per msec h](jD)}(h``cpms``h]j)}(hjfh]hcpms}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKuhj`ubj^)}(hhh]h)}(hCompletions per msech]hCompletions per msec}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hKuhj|ubah}(h]h ]h"]h$]h&]uh1j]hj`ubeh}(h]h ]h"]h$]h&]uh1j=hj{hKuhj ubj>)}(h,``cpe_ratio`` Ratio of completions to eventsh](jD)}(h ``cpe_ratio``h]j)}(hjh]h cpe_ratio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKuhjubj^)}(hhh]h)}(hRatio of completions to eventsh]hRatio of completions to events}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKvhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKuhj ubeh}(h]h ]h"]h$]h&]uh1j8hjj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim (C struct)c.dimhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hdimh]jk)}(h struct dimh](jq)}(hjth]hstruct}(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhK|ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK|ubj)}(hdimh]j)}(hjh]hdim}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhK|ubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjhhhjhK|ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jdhjhK|hjhhubj)}(hhh]h)}(hvMain structure for dynamic interrupt moderation (DIM). Used for holding all information about a specific DIM instance.h]hvMain structure for dynamic interrupt moderation (DIM). Used for holding all information about a specific DIM instance.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj8hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK|ubeh}(h]h ](jstructeh"]h$]h&]jjjjSjjSjjjuh1j_hhhj=hNhNubj)}(hX**Definition**:: struct dim { u8 state; struct dim_stats prev_stats; struct dim_sample start_sample; struct dim_sample measuring_sample; struct work_struct work; void *priv; u8 profile_ix; u8 mode; u8 tune_state; u8 steps_right; u8 steps_left; u8 tired; }; **Members** ``state`` Algorithm state (see below) ``prev_stats`` Measured rates from previous iteration (for comparison) ``start_sample`` Sampled data at start of current iteration ``measuring_sample`` A :c:type:`dim_sample` that is used to update the current events ``work`` Work to perform on action required ``priv`` A pointer to the struct that points to dim ``profile_ix`` Current moderation profile ``mode`` CQ period count mode ``tune_state`` Algorithm tuning state (see below) ``steps_right`` Number of steps taken towards higher moderation ``steps_left`` Number of steps taken towards lower moderation ``tired`` Parking depth counterh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubh:}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjWubj)}(hXstruct dim { u8 state; struct dim_stats prev_stats; struct dim_sample start_sample; struct dim_sample measuring_sample; struct work_struct work; void *priv; u8 profile_ix; u8 mode; u8 tune_state; u8 steps_right; u8 steps_left; u8 tired; };h]hXstruct dim { u8 state; struct dim_stats prev_stats; struct dim_sample start_sample; struct dim_sample measuring_sample; struct work_struct work; void *priv; u8 profile_ix; u8 mode; u8 tune_state; u8 steps_right; u8 steps_left; u8 tired; };}hjxsbah}(h]h ]h"]h$]h&]jjuh1jhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjWubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjWubj9)}(hhh](j>)}(h&``state`` Algorithm state (see below) h](jD)}(h ``state``h]j)}(hjh]hstate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(hAlgorithm state (see below)h]hAlgorithm state (see below)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(hG``prev_stats`` Measured rates from previous iteration (for comparison) h](jD)}(h``prev_stats``h]j)}(hjh]h prev_stats}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h7Measured rates from previous iteration (for comparison)h]h7Measured rates from previous iteration (for comparison)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(h<``start_sample`` Sampled data at start of current iteration h](jD)}(h``start_sample``h]j)}(hjh]h start_sample}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h*Sampled data at start of current iterationh]h*Sampled data at start of current iteration}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hKhj0ubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hj/hKhjubj>)}(hV``measuring_sample`` A :c:type:`dim_sample` that is used to update the current events h](jD)}(h``measuring_sample``h]j)}(hjSh]hmeasuring_sample}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjMubj^)}(hhh]h)}(h@A :c:type:`dim_sample` that is used to update the current eventsh](hA }(hjlhhhNhNubh)}(h:c:type:`dim_sample`h]j)}(hjvh]h dim_sample}(hjxhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}3data]sbj dim_sampleuh1hhjhhKhjlubh* that is used to update the current events}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhKhjiubah}(h]h ]h"]h$]h&]uh1j]hjMubeh}(h]h ]h"]h$]h&]uh1j=hjhhKhjubj>)}(h,``work`` Work to perform on action required h](jD)}(h``work``h]j)}(hjh]hwork}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h"Work to perform on action requiredh]h"Work to perform on action required}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(h4``priv`` A pointer to the struct that points to dim h](jD)}(h``priv``h]j)}(hjh]hpriv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h*A pointer to the struct that points to dimh]h*A pointer to the struct that points to dim}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(h*``profile_ix`` Current moderation profile h](jD)}(h``profile_ix``h]j)}(hj)h]h profile_ix}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj#ubj^)}(hhh]h)}(hCurrent moderation profileh]hCurrent moderation profile}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKhj?ubah}(h]h ]h"]h$]h&]uh1j]hj#ubeh}(h]h ]h"]h$]h&]uh1j=hj>hKhjubj>)}(h``mode`` CQ period count mode h](jD)}(h``mode``h]j)}(hjbh]hmode}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj\ubj^)}(hhh]h)}(hCQ period count modeh]hCQ period count mode}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhKhjxubah}(h]h ]h"]h$]h&]uh1j]hj\ubeh}(h]h ]h"]h$]h&]uh1j=hjwhKhjubj>)}(h2``tune_state`` Algorithm tuning state (see below) h](jD)}(h``tune_state``h]j)}(hjh]h tune_state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h"Algorithm tuning state (see below)h]h"Algorithm tuning state (see below)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(h@``steps_right`` Number of steps taken towards higher moderation h](jD)}(h``steps_right``h]j)}(hjh]h steps_right}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h/Number of steps taken towards higher moderationh]h/Number of steps taken towards higher moderation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(h>``steps_left`` Number of steps taken towards lower moderation h](jD)}(h``steps_left``h]j)}(hj h]h steps_left}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h.Number of steps taken towards lower moderationh]h.Number of steps taken towards lower moderation}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hKhj#ubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hj"hKhjubj>)}(h``tired`` Parking depth counterh](jD)}(h ``tired``h]j)}(hjFh]htired}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj@ubj^)}(hhh]h)}(hParking depth counterh]hParking depth counter}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj\ubah}(h]h ]h"]h$]h&]uh1j]hj@ubeh}(h]h ]h"]h$]h&]uh1j=hj[hKhjubeh}(h]h ]h"]h$]h&]uh1j8hjWubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_cq_period_mode (C enum)c.dim_cq_period_modehNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hdim_cq_period_modeh]jk)}(henum dim_cq_period_modeh](jq)}(henumh]henum}(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hdim_cq_period_modeh]j)}(hjh]hdim_cq_period_mode}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jdhjhKhjhhubj)}(hhh]h)}(hModes for CQ period counth]hModes for CQ period count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjjjuh1j_hhhj=hNhNubj)}(h**Constants** ``DIM_CQ_PERIOD_MODE_START_FROM_EQE`` Start counting from EQE ``DIM_CQ_PERIOD_MODE_START_FROM_CQE`` Start counting from CQE (implies timer reset) ``DIM_CQ_PERIOD_NUM_MODES`` Number of modesh](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj9)}(hhh](j>)}(h>``DIM_CQ_PERIOD_MODE_START_FROM_EQE`` Start counting from EQE h](jD)}(h%``DIM_CQ_PERIOD_MODE_START_FROM_EQE``h]j)}(hj$h]h!DIM_CQ_PERIOD_MODE_START_FROM_EQE}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(hStart counting from EQEh]hStart counting from EQE}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj:ubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hj9hKhjubj>)}(hT``DIM_CQ_PERIOD_MODE_START_FROM_CQE`` Start counting from CQE (implies timer reset) h](jD)}(h%``DIM_CQ_PERIOD_MODE_START_FROM_CQE``h]j)}(hj]h]h!DIM_CQ_PERIOD_MODE_START_FROM_CQE}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjWubj^)}(hhh]h)}(h-Start counting from CQE (implies timer reset)h]h-Start counting from CQE (implies timer reset)}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhKhjsubah}(h]h ]h"]h$]h&]uh1j]hjWubeh}(h]h ]h"]h$]h&]uh1j=hjrhKhjubj>)}(h+``DIM_CQ_PERIOD_NUM_MODES`` Number of modesh](jD)}(h``DIM_CQ_PERIOD_NUM_MODES``h]j)}(hjh]hDIM_CQ_PERIOD_NUM_MODES}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(hNumber of modesh]hNumber of modes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubeh}(h]h ]h"]h$]h&]uh1j8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_state (C enum) c.dim_statehNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h dim_stateh]jk)}(henum dim_stateh](jq)}(hjh]henum}(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(h dim_stateh]j)}(hjh]h dim_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jdhjhKhjhhubj)}(hhh]h)}(hDIM algorithm statesh]hDIM algorithm states}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj/hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjjJjjJjjjuh1j_hhhj=hNhNubj)}(hX,**Constants** ``DIM_START_MEASURE`` This is the first iteration (also after applying a new profile) ``DIM_MEASURE_IN_PROGRESS`` Algorithm is already in progress - check if need to perform an action ``DIM_APPLY_NEW_PROFILE`` DIM consumer is currently applying a profile - no need to measureh](h)}(h **Constants**h]j)}(hjTh]h Constants}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjNubj9)}(hhh](j>)}(hV``DIM_START_MEASURE`` This is the first iteration (also after applying a new profile) h](jD)}(h``DIM_START_MEASURE``h]j)}(hjsh]hDIM_START_MEASURE}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjmubj^)}(hhh]h)}(h?This is the first iteration (also after applying a new profile)h]h?This is the first iteration (also after applying a new profile)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjmubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjjubj>)}(hb``DIM_MEASURE_IN_PROGRESS`` Algorithm is already in progress - check if need to perform an action h](jD)}(h``DIM_MEASURE_IN_PROGRESS``h]j)}(hjh]hDIM_MEASURE_IN_PROGRESS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(hEAlgorithm is already in progress - check if need to perform an actionh]hEAlgorithm is already in progress - check if need to perform an action}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjjubj>)}(h[``DIM_APPLY_NEW_PROFILE`` DIM consumer is currently applying a profile - no need to measureh](jD)}(h``DIM_APPLY_NEW_PROFILE``h]j)}(hjh]hDIM_APPLY_NEW_PROFILE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(hADIM consumer is currently applying a profile - no need to measureh]hADIM consumer is currently applying a profile - no need to measure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjjubeh}(h]h ]h"]h$]h&]uh1j8hjNubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubh)}(h**Description**h]j)}(hj)h]h Description}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj=hhubh)}(hPThese will determine if the algorithm is in a valid state to start an iteration.h]hPThese will determine if the algorithm is in a valid state to start an iteration.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj=hhubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_tune_state (C enum)c.dim_tune_statehNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hdim_tune_stateh]jk)}(henum dim_tune_stateh](jq)}(hjh]henum}(hjghhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjchhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKubj)}(h h]h }(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjchhhjthKubj)}(hdim_tune_stateh]j)}(hjah]hdim_tune_state}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjchhhjthKubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj_hhhjthKubah}(h]jZah ](jjeh"]h$]h&]jj)jhuh1jdhjthKhj\hhubj)}(hhh]h)}(hDIM algorithm tune statesh]hDIM algorithm tune states}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhj\hhhjthKubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjjjuh1j_hhhj=hNhNubj)}(hXX**Constants** ``DIM_PARKING_ON_TOP`` Algorithm found a local top point - exit on significant difference ``DIM_PARKING_TIRED`` Algorithm found a deep top point - don't exit if tired > 0 ``DIM_GOING_RIGHT`` Algorithm is currently trying higher moderation levels ``DIM_GOING_LEFT`` Algorithm is currently trying lower moderation levelsh](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj9)}(hhh](j>)}(hZ``DIM_PARKING_ON_TOP`` Algorithm found a local top point - exit on significant difference h](jD)}(h``DIM_PARKING_ON_TOP``h]j)}(hjh]hDIM_PARKING_ON_TOP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(hBAlgorithm found a local top point - exit on significant differenceh]hBAlgorithm found a local top point - exit on significant difference}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(hQ``DIM_PARKING_TIRED`` Algorithm found a deep top point - don't exit if tired > 0 h](jD)}(h``DIM_PARKING_TIRED``h]j)}(hj#h]hDIM_PARKING_TIRED}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h:Algorithm found a deep top point - don't exit if tired > 0h]h 0}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKhj9ubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hj8hKhjubj>)}(hK``DIM_GOING_RIGHT`` Algorithm is currently trying higher moderation levels h](jD)}(h``DIM_GOING_RIGHT``h]j)}(hj\h]hDIM_GOING_RIGHT}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjVubj^)}(hhh]h)}(h6Algorithm is currently trying higher moderation levelsh]h6Algorithm is currently trying higher moderation levels}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhKhjrubah}(h]h ]h"]h$]h&]uh1j]hjVubeh}(h]h ]h"]h$]h&]uh1j=hjqhKhjubj>)}(hH``DIM_GOING_LEFT`` Algorithm is currently trying lower moderation levelsh](jD)}(h``DIM_GOING_LEFT``h]j)}(hjh]hDIM_GOING_LEFT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h5Algorithm is currently trying lower moderation levelsh]h5Algorithm is currently trying lower moderation levels}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubeh}(h]h ]h"]h$]h&]uh1j8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj=hhubh)}(h?These will determine which action the algorithm should perform.h]h?These will determine which action the algorithm should perform.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj=hhubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_stats_state (C enum)c.dim_stats_statehNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hdim_stats_stateh]jk)}(henum dim_stats_stateh](jq)}(hjh]henum}(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj#hKubj)}(hdim_stats_stateh]j)}(hjh]hdim_stats_state}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhj#hKubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjhhhj#hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jdhj#hKhj hhubj)}(hhh]h)}(hDIM algorithm statistics statesh]hDIM algorithm statistics states}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjUhhubah}(h]h ]h"]h$]h&]uh1jhj hhhj#hKubeh}(h]h ](jenumeh"]h$]h&]jjjjpjjpjjjuh1j_hhhj=hNhNubj)}(h**Constants** ``DIM_STATS_WORSE`` Current iteration shows worse performance than before ``DIM_STATS_SAME`` Current iteration shows same performance than before ``DIM_STATS_BETTER`` Current iteration shows better performance than beforeh](h)}(h **Constants**h]j)}(hjzh]h Constants}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjtubj9)}(hhh](j>)}(hJ``DIM_STATS_WORSE`` Current iteration shows worse performance than before h](jD)}(h``DIM_STATS_WORSE``h]j)}(hjh]hDIM_STATS_WORSE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h5Current iteration shows worse performance than beforeh]h5Current iteration shows worse performance than before}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(hH``DIM_STATS_SAME`` Current iteration shows same performance than before h](jD)}(h``DIM_STATS_SAME``h]j)}(hjh]hDIM_STATS_SAME}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h4Current iteration shows same performance than beforeh]h4Current iteration shows same performance than before}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(hK``DIM_STATS_BETTER`` Current iteration shows better performance than beforeh](jD)}(h``DIM_STATS_BETTER``h]j)}(hj h]hDIM_STATS_BETTER}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h6Current iteration shows better performance than beforeh]h6Current iteration shows better performance than before}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj!ubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hj hKhjubeh}(h]h ]h"]h$]h&]uh1j8hjtubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubh)}(h**Description**h]j)}(hjNh]h Description}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj=hhubh)}(h6These will determine the verdict of current iteration.h]h6These will determine the verdict of current iteration.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj=hhubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_step_result (C enum)c.dim_step_resulthNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hdim_step_resulth]jk)}(henum dim_step_resulth](jq)}(hjh]henum}(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hdim_step_resulth]j)}(hjh]hdim_step_result}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jdhjhKhjhhubj)}(hhh]h)}(hDIM algorithm step resultsh]hDIM algorithm step results}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jjjjjjjjjuh1j_hhhj=hNhNubj)}(h**Constants** ``DIM_STEPPED`` Performed a regular step ``DIM_TOO_TIRED`` Same kind of step was done multiple times - should go to tired parking ``DIM_ON_EDGE`` Stepped to the most left/right profileh](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj9)}(hhh](j>)}(h)``DIM_STEPPED`` Performed a regular step h](jD)}(h``DIM_STEPPED``h]j)}(hjh]h DIM_STEPPED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj ubj^)}(hhh]h)}(hPerformed a regular steph]hPerformed a regular step}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hKhj%ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj$hKhjubj>)}(hY``DIM_TOO_TIRED`` Same kind of step was done multiple times - should go to tired parking h](jD)}(h``DIM_TOO_TIRED``h]j)}(hjHh]h DIM_TOO_TIRED}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjBubj^)}(hhh]h)}(hFSame kind of step was done multiple times - should go to tired parkingh]hFSame kind of step was done multiple times - should go to tired parking}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj^ubah}(h]h ]h"]h$]h&]uh1j]hjBubeh}(h]h ]h"]h$]h&]uh1j=hj]hKhjubj>)}(h6``DIM_ON_EDGE`` Stepped to the most left/right profileh](jD)}(h``DIM_ON_EDGE``h]j)}(hjh]h DIM_ON_EDGE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj|ubj^)}(hhh]h)}(h&Stepped to the most left/right profileh]h&Stepped to the most left/right profile}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubah}(h]h ]h"]h$]h&]uh1j]hj|ubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubeh}(h]h ]h"]h$]h&]uh1j8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj=hhubh)}(h$These describe the result of a step.h]h$These describe the result of a step.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj=hhubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[#net_dim_init_irq_moder (C function)c.net_dim_init_irq_moderhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hint net_dim_init_irq_moder (struct net_device *dev, u8 profile_flags, u8 coal_flags, u8 rx_mode, u8 tx_mode, void (*rx_dim_work)(struct work_struct *work), void (*tx_dim_work)(struct work_struct *work))h]jk)}(hint net_dim_init_irq_moder(struct net_device *dev, u8 profile_flags, u8 coal_flags, u8 rx_mode, u8 tx_mode, void (*rx_dim_work)(struct work_struct *work), void (*tx_dim_work)(struct work_struct *work))h](hdesc_sig_keyword_type)}(hinth]hint}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj)}(hnet_dim_init_irq_moderh]j)}(hnet_dim_init_irq_moderh]hnet_dim_init_irq_moder}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhKubhdesc_parameterlist)}(h(struct net_device *dev, u8 profile_flags, u8 coal_flags, u8 rx_mode, u8 tx_mode, void (*rx_dim_work)(struct work_struct *work), void (*tx_dim_work)(struct work_struct *work))h](hdesc_parameter)}(hstruct net_device *devh](jq)}(hjth]hstruct}(hjGhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjCubj)}(h h]h }(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubh)}(hhh]j)}(h net_deviceh]h net_device}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjgmodnameN classnameNjj)}j]j ASTIdentifier)}j{j)sbc.net_dim_init_irq_moderasbuh1hhjCubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjCubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj=ubjB)}(hu8 profile_flagsh](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjmodnameN classnameNjj)}j]jc.net_dim_init_irq_moderasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h profile_flagsh]h profile_flags}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj=ubjB)}(h u8 coal_flagsh](h)}(hhh]j)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj modnameN classnameNjj)}j]jc.net_dim_init_irq_moderasbuh1hhjubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h coal_flagsh]h coal_flags}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj=ubjB)}(h u8 rx_modeh](h)}(hhh]j)}(hu8h]hu8}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjUmodnameN classnameNjj)}j]jc.net_dim_init_irq_moderasbuh1hhjLubj)}(h h]h }(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubj)}(hrx_modeh]hrx_mode}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj=ubjB)}(h u8 tx_modeh](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjmodnameN classnameNjj)}j]jc.net_dim_init_irq_moderasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(htx_modeh]htx_mode}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj=ubjB)}(h-void (*rx_dim_work)(struct work_struct *work)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h(h]h(}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h rx_dim_workh]h rx_dim_work}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h)h]h)}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h(}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjq)}(hjth]hstruct}(hj@hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(h h]h }(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h work_structh]h work_struct}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj`modnameN classnameNjj)}j]jc.net_dim_init_irq_moderasbuh1hhjubj)}(h h]h }(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hworkh]hwork}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj'h]h)}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj=ubjB)}(h-void (*tx_dim_work)(struct work_struct *work)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h(}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(h tx_dim_workh]h tx_dim_work}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj'h]h)}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h(}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubjq)}(hjth]hstruct}(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h work_structh]h work_struct}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj;modnameN classnameNjj)}j]jc.net_dim_init_irq_moderasbuh1hhjubj)}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hworkh]hwork}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hj'h]h)}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj=ubeh}(h]h ]h"]h$]h&]jjuh1j;hjhhhjhKubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jdhjhKhjhhubj)}(hhh]h)}(h0collect information to initialize irq moderationh]h0collect information to initialize irq moderation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1j_hhhj=hNhNubj)}(hX**Parameters** ``struct net_device *dev`` target network device ``u8 profile_flags`` Rx or Tx profile modification capability ``u8 coal_flags`` irq moderation params flags ``u8 rx_mode`` CQ period mode for Rx ``u8 tx_mode`` CQ period mode for Tx ``void (*rx_dim_work)(struct work_struct *work)`` Rx worker called after dim decision ``void (*tx_dim_work)(struct work_struct *work)`` Tx worker called after dim decision **Return** 0 on success or a negative error code.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj9)}(hhh](j>)}(h1``struct net_device *dev`` target network device h](jD)}(h``struct net_device *dev``h]j)}(hjh]hstruct net_device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(htarget network deviceh]htarget network device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(h>``u8 profile_flags`` Rx or Tx profile modification capability h](jD)}(h``u8 profile_flags``h]j)}(hj#h]hu8 profile_flags}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h(Rx or Tx profile modification capabilityh]h(Rx or Tx profile modification capability}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hKhj9ubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hj8hKhjubj>)}(h.``u8 coal_flags`` irq moderation params flags h](jD)}(h``u8 coal_flags``h]j)}(hj\h]h u8 coal_flags}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjVubj^)}(hhh]h)}(hirq moderation params flagsh]hirq moderation params flags}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqhKhjrubah}(h]h ]h"]h$]h&]uh1j]hjVubeh}(h]h ]h"]h$]h&]uh1j=hjqhKhjubj>)}(h%``u8 rx_mode`` CQ period mode for Rx h](jD)}(h``u8 rx_mode``h]j)}(hjh]h u8 rx_mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(hCQ period mode for Rxh]hCQ period mode for Rx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(h%``u8 tx_mode`` CQ period mode for Tx h](jD)}(h``u8 tx_mode``h]j)}(hjh]h u8 tx_mode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(hCQ period mode for Txh]hCQ period mode for Tx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(hV``void (*rx_dim_work)(struct work_struct *work)`` Rx worker called after dim decision h](jD)}(h1``void (*rx_dim_work)(struct work_struct *work)``h]j)}(hjh]h-void (*rx_dim_work)(struct work_struct *work)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubj^)}(hhh]h)}(h#Rx worker called after dim decisionh]h#Rx worker called after dim decision}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j]hjubeh}(h]h ]h"]h$]h&]uh1j=hjhKhjubj>)}(hV``void (*tx_dim_work)(struct work_struct *work)`` Tx worker called after dim decision h](jD)}(h1``void (*tx_dim_work)(struct work_struct *work)``h]j)}(hj@h]h-void (*tx_dim_work)(struct work_struct *work)}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj:ubj^)}(hhh]h)}(h#Tx worker called after dim decisionh]h#Tx worker called after dim decision}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhjVubah}(h]h ]h"]h$]h&]uh1j]hj:ubeh}(h]h ]h"]h$]h&]uh1j=hjUhKhjubeh}(h]h ]h"]h$]h&]uh1j8hjubh)}(h **Return**h]j)}(hj{h]hReturn}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubh)}(h&0 on success or a negative error code.h]h&0 on success or a negative error code.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[#net_dim_free_irq_moder (C function)c.net_dim_free_irq_moderhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h4void net_dim_free_irq_moder (struct net_device *dev)h]jk)}(h3void net_dim_free_irq_moder(struct net_device *dev)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj)}(hnet_dim_free_irq_moderh]j)}(hnet_dim_free_irq_moderh]hnet_dim_free_irq_moder}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhjhMubj<)}(h(struct net_device *dev)h]jB)}(hstruct net_device *devh](jq)}(hjth]hstruct}(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j)}(h net_deviceh]h net_device}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj modnameN classnameNjj)}j]j)}j{jsbc.net_dim_free_irq_moderasbuh1hhjubj)}(h h]h }(hj; hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjI hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hdevh]hdev}(hjV hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjubah}(h]h ]h"]h$]h&]jjuh1j;hjhhhjhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjhhhjhMubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jdhjhMhjhhubj)}(hhh]h)}(hfree fields for irq moderationh]hfree fields for irq moderation}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj} hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1j_hhhj=hNhNubj)}(hB**Parameters** ``struct net_device *dev`` target network deviceh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj ubj9)}(hhh]j>)}(h0``struct net_device *dev`` target network deviceh](jD)}(h``struct net_device *dev``h]j)}(hj h]hstruct net_device *dev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj ubj^)}(hhh]h)}(htarget network deviceh]htarget network device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhKhj ubah}(h]h ]h"]h$]h&]uh1j]hj ubeh}(h]h ]h"]h$]h&]uh1j=hj hMhj ubah}(h]h ]h"]h$]h&]uh1j8hj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[net_dim_setting (C function)c.net_dim_settinghNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hJvoid net_dim_setting (struct net_device *dev, struct dim *dim, bool is_tx)h]jk)}(hIvoid net_dim_setting(struct net_device *dev, struct dim *dim, bool is_tx)h](j)}(hvoidh]hvoid}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM ubj)}(h h]h }(hj*!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhj)!hM ubj)}(hnet_dim_settingh]j)}(hnet_dim_settingh]hnet_dim_setting}(hj!sbc.net_dim_settingasbuh1hhjT!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjT!ubj)}(hjh]h*}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjT!ubj)}(hdevh]hdev}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjT!ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjP!ubjB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hj!hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubh)}(hhh]j)}(hdimh]hdim}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj!modnameN classnameNjj)}j]j!c.net_dim_settingasbuh1hhj!ubj)}(h h]h }(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj)}(hdimh]hdim}(hj!"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjP!ubjB)}(h bool is_txh](j)}(hboolh]hbool}(hj:"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6"ubj)}(h h]h }(hjH"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6"ubj)}(his_txh]his_tx}(hjV"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6"ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjP!ubeh}(h]h ]h"]h$]h&]jjuh1j;hj!hhhj)!hM ubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj!hhhj)!hM ubah}(h]j!ah ](jjeh"]h$]h&]jj)jhuh1jdhj)!hM hj!hhubj)}(hhh]h)}(h,initialize DIM's cq mode and schedule workerh]h.initialize DIM’s cq mode and schedule worker}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj}"hhubah}(h]h ]h"]h$]h&]uh1jhj!hhhj)!hM ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj"jj"jjjuh1j_hhhj=hNhNubj)}(h**Parameters** ``struct net_device *dev`` target network device ``struct dim *dim`` DIM context ``bool is_tx`` true indicates the tx direction, false indicates the rx directionh](h)}(h**Parameters**h]j)}(hj"h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj"ubj9)}(hhh](j>)}(h1``struct net_device *dev`` target network device h](jD)}(h``struct net_device *dev``h]j)}(hj"h]hstruct net_device *dev}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj"ubj^)}(hhh]h)}(htarget network deviceh]htarget network device}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hMhj"ubah}(h]h ]h"]h$]h&]uh1j]hj"ubeh}(h]h ]h"]h$]h&]uh1j=hj"hMhj"ubj>)}(h ``struct dim *dim`` DIM context h](jD)}(h``struct dim *dim``h]j)}(hj"h]hstruct dim *dim}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj"ubj^)}(hhh]h)}(h DIM contexth]h DIM context}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#hMhj#ubah}(h]h ]h"]h$]h&]uh1j]hj"ubeh}(h]h ]h"]h$]h&]uh1j=hj#hMhj"ubj>)}(hP``bool is_tx`` true indicates the tx direction, false indicates the rx directionh](jD)}(h``bool is_tx``h]j)}(hj3#h]h bool is_tx}(hj5#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1#ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj-#ubj^)}(hhh]h)}(hAtrue indicates the tx direction, false indicates the rx directionh]hAtrue indicates the tx direction, false indicates the rx direction}(hjL#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjI#ubah}(h]h ]h"]h$]h&]uh1j]hj-#ubeh}(h]h ]h"]h$]h&]uh1j=hjH#hMhj"ubeh}(h]h ]h"]h$]h&]uh1j8hj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[ net_dim_work_cancel (C function)c.net_dim_work_cancelhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h*void net_dim_work_cancel (struct dim *dim)h]jk)}(h)void net_dim_work_cancel(struct dim *dim)h](j)}(hvoidh]hvoid}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhhj#hMubj)}(hnet_dim_work_cancelh]j)}(hnet_dim_work_cancelh]hnet_dim_work_cancel}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj#hhhj#hMubj<)}(h(struct dim *dim)h]jB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hj#hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubh)}(hhh]j)}(hdimh]hdim}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj#modnameN classnameNjj)}j]j)}j{j#sbc.net_dim_work_cancelasbuh1hhj#ubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj)}(hdimh]hdim}(hj#$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj#ubah}(h]h ]h"]h$]h&]jjuh1j;hj#hhhj#hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj#hhhj#hMubah}(h]j#ah ](jjeh"]h$]h&]jj)jhuh1jdhj#hMhj#hhubj)}(hhh]h)}(h!synchronously cancel dim's workerh]h#synchronously cancel dim’s worker}(hjM$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM hjJ$hhubah}(h]h ]h"]h$]h&]uh1jhj#hhhj#hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjje$jje$jjjuh1j_hhhj=hNhNubj)}(h1**Parameters** ``struct dim *dim`` DIM contexth](h)}(h**Parameters**h]j)}(hjo$h]h Parameters}(hjq$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm$ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhji$ubj9)}(hhh]j>)}(h``struct dim *dim`` DIM contexth](jD)}(h``struct dim *dim``h]j)}(hj$h]hstruct dim *dim}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj$ubj^)}(hhh]h)}(h DIM contexth]h DIM context}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM hj$ubah}(h]h ]h"]h$]h&]uh1j]hj$ubeh}(h]h ]h"]h$]h&]uh1j=hj$hMhj$ubah}(h]h ]h"]h$]h&]uh1j8hji$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[%net_dim_get_rx_irq_moder (C function)c.net_dim_get_rx_irq_moderhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hVstruct dim_cq_moder net_dim_get_rx_irq_moder (struct net_device *dev, struct dim *dim)h]jk)}(hUstruct dim_cq_moder net_dim_get_rx_irq_moder(struct net_device *dev, struct dim *dim)h](jq)}(hjth]hstruct}(hj$hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj$hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj$hMubh)}(hhh]j)}(h dim_cq_moderh]h dim_cq_moder}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj %modnameN classnameNjj)}j]j)}j{net_dim_get_rx_irq_modersbc.net_dim_get_rx_irq_moderasbuh1hhj$hhhj$hMubj)}(h h]h }(hj(%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$hhhj$hMubj)}(hnet_dim_get_rx_irq_moderh]j)}(hj%%h]hnet_dim_get_rx_irq_moder}(hj:%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6%ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj$hhhj$hMubj<)}(h)(struct net_device *dev, struct dim *dim)h](jB)}(hstruct net_device *devh](jq)}(hjth]hstruct}(hjU%hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjQ%ubj)}(h h]h }(hjb%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ%ubh)}(hhh]j)}(h net_deviceh]h net_device}(hjs%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjp%ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetju%modnameN classnameNjj)}j]j#%c.net_dim_get_rx_irq_moderasbuh1hhjQ%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ%ubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ%ubj)}(hdevh]hdev}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjM%ubjB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hj%hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubh)}(hhh]j)}(hdimh]hdim}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj%modnameN classnameNjj)}j]j#%c.net_dim_get_rx_irq_moderasbuh1hhj%ubj)}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(hdimh]hdim}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjM%ubeh}(h]h ]h"]h$]h&]jjuh1j;hj$hhhj$hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj$hhhj$hMubah}(h]j$ah ](jjeh"]h$]h&]jj)jhuh1jdhj$hMhj$hhubj)}(hhh]h)}(h&get DIM rx results based on profile_ixh]h&get DIM rx results based on profile_ix}(hjF&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjC&hhubah}(h]h ]h"]h$]h&]uh1jhj$hhhj$hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj^&jj^&jjjuh1j_hhhj=hNhNubj)}(h**Parameters** ``struct net_device *dev`` target network device ``struct dim *dim`` DIM context **Return** DIM irq moderationh](h)}(h**Parameters**h]j)}(hjh&h]h Parameters}(hjj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf&ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjb&ubj9)}(hhh](j>)}(h1``struct net_device *dev`` target network device h](jD)}(h``struct net_device *dev``h]j)}(hj&h]hstruct net_device *dev}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj&ubj^)}(hhh]h)}(htarget network deviceh]htarget network device}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1j]hj&ubeh}(h]h ]h"]h$]h&]uh1j=hj&hMhj~&ubj>)}(h ``struct dim *dim`` DIM context h](jD)}(h``struct dim *dim``h]j)}(hj&h]hstruct dim *dim}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj&ubj^)}(hhh]h)}(h DIM contexth]h DIM context}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1j]hj&ubeh}(h]h ]h"]h$]h&]uh1j=hj&hMhj~&ubeh}(h]h ]h"]h$]h&]uh1j8hjb&ubh)}(h **Return**h]j)}(hj&h]hReturn}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjb&ubh)}(hDIM irq moderationh]hDIM irq moderation}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjb&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[%net_dim_get_tx_irq_moder (C function)c.net_dim_get_tx_irq_moderhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hVstruct dim_cq_moder net_dim_get_tx_irq_moder (struct net_device *dev, struct dim *dim)h]jk)}(hUstruct dim_cq_moder net_dim_get_tx_irq_moder(struct net_device *dev, struct dim *dim)h](jq)}(hjth]hstruct}(hj@'hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj<'hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM"ubj)}(h h]h }(hjN'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<'hhhjM'hM"ubh)}(hhh]j)}(h dim_cq_moderh]h dim_cq_moder}(hj_'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\'ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetja'modnameN classnameNjj)}j]j)}j{net_dim_get_tx_irq_modersbc.net_dim_get_tx_irq_moderasbuh1hhj<'hhhjM'hM"ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<'hhhjM'hM"ubj)}(hnet_dim_get_tx_irq_moderh]j)}(hj}'h]hnet_dim_get_tx_irq_moder}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj<'hhhjM'hM"ubj<)}(h)(struct net_device *dev, struct dim *dim)h](jB)}(hstruct net_device *devh](jq)}(hjth]hstruct}(hj'hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj'ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubh)}(hhh]j)}(h net_deviceh]h net_device}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj'modnameN classnameNjj)}j]j{'c.net_dim_get_tx_irq_moderasbuh1hhj'ubj)}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj)}(hdevh]hdev}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj'ubjB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hj(hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj(ubj)}(h h]h }(hj*(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubh)}(hhh]j)}(hdimh]hdim}(hj;(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8(ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj=(modnameN classnameNjj)}j]j{'c.net_dim_get_tx_irq_moderasbuh1hhj(ubj)}(h h]h }(hjY(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(hjh]h*}(hjg(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubj)}(hdimh]hdim}(hjt(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj'ubeh}(h]h ]h"]h$]h&]jjuh1j;hj<'hhhjM'hM"ubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj8'hhhjM'hM"ubah}(h]j3'ah ](jjeh"]h$]h&]jj)jhuh1jdhjM'hM"hj5'hhubj)}(hhh]h)}(h&get DIM tx results based on profile_ixh]h&get DIM tx results based on profile_ix}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj(hhubah}(h]h ]h"]h$]h&]uh1jhj5'hhhjM'hM"ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj(jj(jjjuh1j_hhhj=hNhNubj)}(h**Parameters** ``struct net_device *dev`` target network device ``struct dim *dim`` DIM context **Return** DIM irq moderationh](h)}(h**Parameters**h]j)}(hj(h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM hj(ubj9)}(hhh](j>)}(h1``struct net_device *dev`` target network device h](jD)}(h``struct net_device *dev``h]j)}(hj(h]hstruct net_device *dev}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj(ubj^)}(hhh]h)}(htarget network deviceh]htarget network device}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hMhj(ubah}(h]h ]h"]h$]h&]uh1j]hj(ubeh}(h]h ]h"]h$]h&]uh1j=hj(hMhj(ubj>)}(h ``struct dim *dim`` DIM context h](jD)}(h``struct dim *dim``h]j)}(hj)h]hstruct dim *dim}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj)ubj^)}(hhh]h)}(h DIM contexth]h DIM context}(hj1)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj-)hMhj.)ubah}(h]h ]h"]h$]h&]uh1j]hj)ubeh}(h]h ]h"]h$]h&]uh1j=hj-)hMhj(ubeh}(h]h ]h"]h$]h&]uh1j8hj(ubh)}(h **Return**h]j)}(hjS)h]hReturn}(hjU)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ)ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM hj(ubh)}(hDIM irq moderationh]hDIM irq moderation}(hji)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM hj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[ net_dim_set_rx_mode (C function)c.net_dim_set_rx_modehNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h=void net_dim_set_rx_mode (struct net_device *dev, u8 rx_mode)h]jk)}(h)}(h1``struct net_device *dev`` target network device h](jD)}(h``struct net_device *dev``h]j)}(hj*h]hstruct net_device *dev}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM'hj*ubj^)}(hhh]h)}(htarget network deviceh]htarget network device}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hM'hj*ubah}(h]h ]h"]h$]h&]uh1j]hj*ubeh}(h]h ]h"]h$]h&]uh1j=hj*hM'hj*ubj>)}(h ``u8 rx_mode`` target rx cq modeh](jD)}(h``u8 rx_mode``h]j)}(hj+h]h u8 rx_mode}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM)hj+ubj^)}(hhh]h)}(htarget rx cq modeh]htarget rx cq mode}(hj3+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM(hj0+ubah}(h]h ]h"]h$]h&]uh1j]hj+ubeh}(h]h ]h"]h$]h&]uh1j=hj/+hM)hj*ubeh}(h]h ]h"]h$]h&]uh1j8hj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[ net_dim_set_tx_mode (C function)c.net_dim_set_tx_modehNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h=void net_dim_set_tx_mode (struct net_device *dev, u8 tx_mode)h]jk)}(h)}(h1``struct net_device *dev`` target network device h](jD)}(h``struct net_device *dev``h]j)}(hj,h]hstruct net_device *dev}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM.hj,ubj^)}(hhh]h)}(htarget network deviceh]htarget network device}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hM.hj,ubah}(h]h ]h"]h$]h&]uh1j]hj,ubeh}(h]h ]h"]h$]h&]uh1j=hj,hM.hj,ubj>)}(h ``u8 tx_mode`` target tx cq modeh](jD)}(h``u8 tx_mode``h]j)}(hj,h]h u8 tx_mode}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM0hj,ubj^)}(hhh]h)}(htarget tx cq modeh]htarget tx cq mode}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM/hj -ubah}(h]h ]h"]h$]h&]uh1j]hj,ubeh}(h]h ]h"]h$]h&]uh1j=hj -hM0hj,ubeh}(h]h ]h"]h$]h&]uh1j8hj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_on_top (C function) c.dim_on_tophNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h!bool dim_on_top (struct dim *dim)h]jk)}(h bool dim_on_top(struct dim *dim)h](j)}(hj<"h]hbool}(hjP-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL-hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM;ubj)}(h h]h }(hj^-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL-hhhj]-hM;ubj)}(h dim_on_toph]j)}(h dim_on_toph]h dim_on_top}(hjp-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjl-ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjL-hhhj]-hM;ubj<)}(h(struct dim *dim)h]jB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hj-hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubh)}(hhh]j)}(hdimh]hdim}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj-modnameN classnameNjj)}j]j)}j{jr-sb c.dim_on_topasbuh1hhj-ubj)}(h h]h }(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubj)}(hdimh]hdim}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj-ubah}(h]h ]h"]h$]h&]jjuh1j;hjL-hhhj]-hM;ubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjH-hhhj]-hM;ubah}(h]jC-ah ](jjeh"]h$]h&]jj)jhuh1jdhj]-hM;hjE-hhubj)}(hhh]h)}(h=check if current state is a good place to stop (top location)h]h=check if current state is a good place to stop (top location)}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM4hj .hhubah}(h]h ]h"]h$]h&]uh1jhjE-hhhj]-hM;ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj'.jj'.jjjuh1j_hhhj=hNhNubj)}(hX **Parameters** ``struct dim *dim`` DIM context **Description** Check if current profile is a good place to park at. This will result in reducing the DIM checks frequency as we assume we shouldn't probably change profiles, unless traffic pattern wasn't changed.h](h)}(h**Parameters**h]j)}(hj1.h]h Parameters}(hj3.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/.ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM8hj+.ubj9)}(hhh]j>)}(h ``struct dim *dim`` DIM context h](jD)}(h``struct dim *dim``h]j)}(hjP.h]hstruct dim *dim}(hjR.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN.ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM5hjJ.ubj^)}(hhh]h)}(h DIM contexth]h DIM context}(hji.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje.hM5hjf.ubah}(h]h ]h"]h$]h&]uh1j]hjJ.ubeh}(h]h ]h"]h$]h&]uh1j=hje.hM5hjG.ubah}(h]h ]h"]h$]h&]uh1j8hj+.ubh)}(h**Description**h]j)}(hj.h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM7hj+.ubh)}(hCheck if current profile is a good place to park at. This will result in reducing the DIM checks frequency as we assume we shouldn't probably change profiles, unless traffic pattern wasn't changed.h]hCheck if current profile is a good place to park at. This will result in reducing the DIM checks frequency as we assume we shouldn’t probably change profiles, unless traffic pattern wasn’t changed.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM7hj+.ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_turn (C function) c.dim_turnhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hvoid dim_turn (struct dim *dim)h]jk)}(hvoid dim_turn(struct dim *dim)h](j)}(hvoidh]hvoid}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMDubj)}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.hhhj.hMDubj)}(hdim_turnh]j)}(hdim_turnh]hdim_turn}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj.hhhj.hMDubj<)}(h(struct dim *dim)h]jB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hj /hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj /ubj)}(h h]h }(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj /ubh)}(hhh]j)}(hdimh]hdim}(hj+/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(/ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj-/modnameN classnameNjj)}j]j)}j{j.sb c.dim_turnasbuh1hhj /ubj)}(h h]h }(hjK/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj /ubj)}(hjh]h*}(hjY/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj /ubj)}(hdimh]hdim}(hjf/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj /ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj/ubah}(h]h ]h"]h$]h&]jjuh1j;hj.hhhj.hMDubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj.hhhj.hMDubah}(h]j.ah ](jjeh"]h$]h&]jj)jhuh1jdhj.hMDhj.hhubj)}(hhh]h)}(h!change profile altering directionh]h!change profile altering direction}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM>hj/hhubah}(h]h ]h"]h$]h&]uh1jhj.hhhj.hMDubeh}(h]h ](jfunctioneh"]h$]h&]jjjj/jj/jjjuh1j_hhhj=hNhNubj)}(h**Parameters** ``struct dim *dim`` DIM context **Description** Go left if we were going right and vice-versa. Do nothing if currently parking.h](h)}(h**Parameters**h]j)}(hj/h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMBhj/ubj9)}(hhh]j>)}(h ``struct dim *dim`` DIM context h](jD)}(h``struct dim *dim``h]j)}(hj/h]hstruct dim *dim}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM?hj/ubj^)}(hhh]h)}(h DIM contexth]h DIM context}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hM?hj/ubah}(h]h ]h"]h$]h&]uh1j]hj/ubeh}(h]h ]h"]h$]h&]uh1j=hj/hM?hj/ubah}(h]h ]h"]h$]h&]uh1j8hj/ubh)}(h**Description**h]j)}(hj 0h]h Description}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 0ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMAhj/ubh)}(hOGo left if we were going right and vice-versa. Do nothing if currently parking.h]hOGo left if we were going right and vice-versa. Do nothing if currently parking.}(hj"0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMAhj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_park_on_top (C function)c.dim_park_on_tophNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h&void dim_park_on_top (struct dim *dim)h]jk)}(h%void dim_park_on_top(struct dim *dim)h](j)}(hvoidh]hvoid}(hjQ0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM0hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMMubj)}(h h]h }(hj`0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM0hhhj_0hMMubj)}(hdim_park_on_toph]j)}(hdim_park_on_toph]hdim_park_on_top}(hjr0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn0ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjM0hhhj_0hMMubj<)}(h(struct dim *dim)h]jB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hj0hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubh)}(hhh]j)}(hdimh]hdim}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj0modnameN classnameNjj)}j]j)}j{jt0sbc.dim_park_on_topasbuh1hhj0ubj)}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj)}(hdimh]hdim}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj0ubah}(h]h ]h"]h$]h&]jjuh1j;hjM0hhhj_0hMMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjI0hhhj_0hMMubah}(h]jD0ah ](jjeh"]h$]h&]jj)jhuh1jdhj_0hMMhjF0hhubj)}(hhh]h)}(h'enter a parking state on a top locationh]h'enter a parking state on a top location}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMGhj1hhubah}(h]h ]h"]h$]h&]uh1jhjF0hhhj_0hMMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj)1jj)1jjjuh1j_hhhj=hNhNubj)}(ht**Parameters** ``struct dim *dim`` DIM context **Description** Enter parking state. Clear all movement history.h](h)}(h**Parameters**h]j)}(hj31h]h Parameters}(hj51hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj11ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMKhj-1ubj9)}(hhh]j>)}(h ``struct dim *dim`` DIM context h](jD)}(h``struct dim *dim``h]j)}(hjR1h]hstruct dim *dim}(hjT1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjP1ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMHhjL1ubj^)}(hhh]h)}(h DIM contexth]h DIM context}(hjk1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjg1hMHhjh1ubah}(h]h ]h"]h$]h&]uh1j]hjL1ubeh}(h]h ]h"]h$]h&]uh1j=hjg1hMHhjI1ubah}(h]h ]h"]h$]h&]uh1j8hj-1ubh)}(h**Description**h]j)}(hj1h]h Description}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMJhj-1ubh)}(h0Enter parking state. Clear all movement history.h]h0Enter parking state. Clear all movement history.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMJhj-1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_park_tired (C function)c.dim_park_tiredhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h%void dim_park_tired (struct dim *dim)h]jk)}(h$void dim_park_tired(struct dim *dim)h](j)}(hvoidh]hvoid}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMVubj)}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1hhhj1hMVubj)}(hdim_park_tiredh]j)}(hdim_park_tiredh]hdim_park_tired}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj1hhhj1hMVubj<)}(h(struct dim *dim)h]jB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hj2hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj 2ubj)}(h h]h }(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 2ubh)}(hhh]j)}(hdimh]hdim}(hj-2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*2ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj/2modnameN classnameNjj)}j]j)}j{j1sbc.dim_park_tiredasbuh1hhj 2ubj)}(h h]h }(hjM2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 2ubj)}(hjh]h*}(hj[2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 2ubj)}(hdimh]hdim}(hjh2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj 2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj2ubah}(h]h ]h"]h$]h&]jjuh1j;hj1hhhj1hMVubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj1hhhj1hMVubah}(h]j1ah ](jjeh"]h$]h&]jj)jhuh1jdhj1hMVhj1hhubj)}(hhh]h)}(henter a tired parking stateh]henter a tired parking state}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMPhj2hhubah}(h]h ]h"]h$]h&]uh1jhj1hhhj1hMVubeh}(h]h ](jfunctioneh"]h$]h&]jjjj2jj2jjjuh1j_hhhj=hNhNubj)}(h**Parameters** ``struct dim *dim`` DIM context **Description** Enter parking state. Clear all movement history and cause DIM checks frequency to reduce.h](h)}(h**Parameters**h]j)}(hj2h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMThj2ubj9)}(hhh]j>)}(h ``struct dim *dim`` DIM context h](jD)}(h``struct dim *dim``h]j)}(hj2h]hstruct dim *dim}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMQhj2ubj^)}(hhh]h)}(h DIM contexth]h DIM context}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMQhj2ubah}(h]h ]h"]h$]h&]uh1j]hj2ubeh}(h]h ]h"]h$]h&]uh1j=hj2hMQhj2ubah}(h]h ]h"]h$]h&]uh1j8hj2ubh)}(h**Description**h]j)}(hj3h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 3ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMShj2ubh)}(hYEnter parking state. Clear all movement history and cause DIM checks frequency to reduce.h]hYEnter parking state. Clear all movement history and cause DIM checks frequency to reduce.}(hj$3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMShj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_calc_stats (C function)c.dim_calc_statshNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hpbool dim_calc_stats (const struct dim_sample *start, const struct dim_sample *end, struct dim_stats *curr_stats)h]jk)}(hobool dim_calc_stats(const struct dim_sample *start, const struct dim_sample *end, struct dim_stats *curr_stats)h](j)}(hj<"h]hbool}(hjS3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO3hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMbubj)}(h h]h }(hja3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO3hhhj`3hMbubj)}(hdim_calc_statsh]j)}(hdim_calc_statsh]hdim_calc_stats}(hjs3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo3ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjO3hhhj`3hMbubj<)}(h\(const struct dim_sample *start, const struct dim_sample *end, struct dim_stats *curr_stats)h](jB)}(hconst struct dim_sample *starth](jq)}(hconsth]hconst}(hj3hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubjq)}(hjth]hstruct}(hj3hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubh)}(hhh]j)}(h dim_sampleh]h dim_sample}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj3modnameN classnameNjj)}j]j)}j{ju3sbc.dim_calc_statsasbuh1hhj3ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubj)}(hstarth]hstart}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj3ubjB)}(hconst struct dim_sample *endh](jq)}(hj3h]hconst}(hj4hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj4ubj)}(h h]h }(hj*4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubjq)}(hjth]hstruct}(hj84hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj4ubj)}(h h]h }(hjE4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubh)}(hhh]j)}(h dim_sampleh]h dim_sample}(hjV4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjS4ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjX4modnameN classnameNjj)}j]j3c.dim_calc_statsasbuh1hhj4ubj)}(h h]h }(hjt4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubj)}(hendh]hend}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj3ubjB)}(hstruct dim_stats *curr_statsh](jq)}(hjth]hstruct}(hj4hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj4ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubh)}(hhh]j)}(h dim_statsh]h dim_stats}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj4modnameN classnameNjj)}j]j3c.dim_calc_statsasbuh1hhj4ubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubj)}(h curr_statsh]h curr_stats}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj3ubeh}(h]h ]h"]h$]h&]jjuh1j;hjO3hhhj`3hMbubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjK3hhhj`3hMbubah}(h]jF3ah ](jjeh"]h$]h&]jj)jhuh1jdhj`3hMbhjH3hhubj)}(hhh]h)}(h,calculate the difference between two samplesh]h,calculate the difference between two samples}(hj)5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMYhj&5hhubah}(h]h ]h"]h$]h&]uh1jhjH3hhhj`3hMbubeh}(h]h ](jfunctioneh"]h$]h&]jjjjA5jjA5jjjuh1j_hhhj=hNhNubj)}(hX_**Parameters** ``const struct dim_sample *start`` start sample ``const struct dim_sample *end`` end sample ``struct dim_stats *curr_stats`` delta between samples **Description** Calculate the delta between two samples (in data rates). Takes into consideration counter wrap-around. Returned boolean indicates whether curr_stats are reliable.h](h)}(h**Parameters**h]j)}(hjK5h]h Parameters}(hjM5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjI5ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM]hjE5ubj9)}(hhh](j>)}(h0``const struct dim_sample *start`` start sample h](jD)}(h"``const struct dim_sample *start``h]j)}(hjj5h]hconst struct dim_sample *start}(hjl5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh5ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMZhjd5ubj^)}(hhh]h)}(h start sampleh]h start sample}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMZhj5ubah}(h]h ]h"]h$]h&]uh1j]hjd5ubeh}(h]h ]h"]h$]h&]uh1j=hj5hMZhja5ubj>)}(h,``const struct dim_sample *end`` end sample h](jD)}(h ``const struct dim_sample *end``h]j)}(hj5h]hconst struct dim_sample *end}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM[hj5ubj^)}(hhh]h)}(h end sampleh]h end sample}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hM[hj5ubah}(h]h ]h"]h$]h&]uh1j]hj5ubeh}(h]h ]h"]h$]h&]uh1j=hj5hM[hja5ubj>)}(h7``struct dim_stats *curr_stats`` delta between samples h](jD)}(h ``struct dim_stats *curr_stats``h]j)}(hj5h]hstruct dim_stats *curr_stats}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM\hj5ubj^)}(hhh]h)}(hdelta between samplesh]hdelta between samples}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hM\hj5ubah}(h]h ]h"]h$]h&]uh1j]hj5ubeh}(h]h ]h"]h$]h&]uh1j=hj5hM\hja5ubeh}(h]h ]h"]h$]h&]uh1j8hjE5ubh)}(h**Description**h]j)}(hj6h]h Description}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM^hjE5ubh)}(hCalculate the delta between two samples (in data rates). Takes into consideration counter wrap-around. Returned boolean indicates whether curr_stats are reliable.h]hCalculate the delta between two samples (in data rates). Takes into consideration counter wrap-around. Returned boolean indicates whether curr_stats are reliable.}(hj-6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM^hjE5ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[dim_update_sample (C function)c.dim_update_samplehNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hTvoid dim_update_sample (u16 event_ctr, u64 packets, u64 bytes, struct dim_sample *s)h]jk)}(hSvoid dim_update_sample(u16 event_ctr, u64 packets, u64 bytes, struct dim_sample *s)h](j)}(hvoidh]hvoid}(hj\6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX6hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMmubj)}(h h]h }(hjk6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjX6hhhjj6hMmubj)}(hdim_update_sampleh]j)}(hdim_update_sampleh]hdim_update_sample}(hj}6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy6ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjX6hhhjj6hMmubj<)}(h=(u16 event_ctr, u64 packets, u64 bytes, struct dim_sample *s)h](jB)}(h u16 event_ctrh](h)}(hhh]j)}(hu16h]hu16}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj6modnameN classnameNjj)}j]j)}j{j6sbc.dim_update_sampleasbuh1hhj6ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj)}(h event_ctrh]h event_ctr}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj6ubjB)}(h u64 packetsh](h)}(hhh]j)}(hu64h]hu64}(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj6modnameN classnameNjj)}j]j6c.dim_update_sampleasbuh1hhj6ubj)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj)}(hpacketsh]hpackets}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj6ubjB)}(h u64 bytesh](h)}(hhh]j)}(hu64h]hu64}(hj.7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+7ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj07modnameN classnameNjj)}j]j6c.dim_update_sampleasbuh1hhj'7ubj)}(h h]h }(hjL7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'7ubj)}(hbytesh]hbytes}(hjZ7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'7ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj6ubjB)}(hstruct dim_sample *sh](jq)}(hjth]hstruct}(hjs7hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjo7ubj)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo7ubh)}(hhh]j)}(h dim_sampleh]h dim_sample}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj7modnameN classnameNjj)}j]j6c.dim_update_sampleasbuh1hhjo7ubj)}(h h]h }(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo7ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo7ubj)}(hsh]hs}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo7ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj6ubeh}(h]h ]h"]h$]h&]jjuh1j;hjX6hhhjj6hMmubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjT6hhhjj6hMmubah}(h]jO6ah ](jjeh"]h$]h&]jj)jhuh1jdhjj6hMmhjQ6hhubj)}(hhh]h)}(h'set a sample's fields with given valuesh]h)set a sample’s fields with given values}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMghj7hhubah}(h]h ]h"]h$]h&]uh1jhjQ6hhhjj6hMmubeh}(h]h ](jfunctioneh"]h$]h&]jjjj 8jj 8jjjuh1j_hhhj=hNhNubj)}(h**Parameters** ``u16 event_ctr`` number of events to set ``u64 packets`` number of packets to set ``u64 bytes`` number of bytes to set ``struct dim_sample *s`` DIM sampleh](h)}(h**Parameters**h]j)}(hj8h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMkhj8ubj9)}(hhh](j>)}(h*``u16 event_ctr`` number of events to set h](jD)}(h``u16 event_ctr``h]j)}(hj58h]h u16 event_ctr}(hj78hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj38ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhhj/8ubj^)}(hhh]h)}(hnumber of events to seth]hnumber of events to set}(hjN8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJ8hMhhjK8ubah}(h]h ]h"]h$]h&]uh1j]hj/8ubeh}(h]h ]h"]h$]h&]uh1j=hjJ8hMhhj,8ubj>)}(h)``u64 packets`` number of packets to set h](jD)}(h``u64 packets``h]j)}(hjn8h]h u64 packets}(hjp8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl8ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMihjh8ubj^)}(hhh]h)}(hnumber of packets to seth]hnumber of packets to set}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMihj8ubah}(h]h ]h"]h$]h&]uh1j]hjh8ubeh}(h]h ]h"]h$]h&]uh1j=hj8hMihj,8ubj>)}(h%``u64 bytes`` number of bytes to set h](jD)}(h ``u64 bytes``h]j)}(hj8h]h u64 bytes}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMjhj8ubj^)}(hhh]h)}(hnumber of bytes to seth]hnumber of bytes to set}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMjhj8ubah}(h]h ]h"]h$]h&]uh1j]hj8ubeh}(h]h ]h"]h$]h&]uh1j=hj8hMjhj,8ubj>)}(h#``struct dim_sample *s`` DIM sampleh](jD)}(h``struct dim_sample *s``h]j)}(hj8h]hstruct dim_sample *s}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMlhj8ubj^)}(hhh]h)}(h DIM sampleh]h DIM sample}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMkhj8ubah}(h]h ]h"]h$]h&]uh1j]hj8ubeh}(h]h ]h"]h$]h&]uh1j=hj8hMlhj,8ubeh}(h]h ]h"]h$]h&]uh1j8hj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[)dim_update_sample_with_comps (C function)c.dim_update_sample_with_compshNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hjvoid dim_update_sample_with_comps (u16 event_ctr, u64 packets, u64 bytes, u64 comps, struct dim_sample *s)h]jk)}(hivoid dim_update_sample_with_comps(u16 event_ctr, u64 packets, u64 bytes, u64 comps, struct dim_sample *s)h](j)}(hvoidh]hvoid}(hj:9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj69hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hjI9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj69hhhjH9hMubj)}(hdim_update_sample_with_compsh]j)}(hdim_update_sample_with_compsh]hdim_update_sample_with_comps}(hj[9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjW9ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj69hhhjH9hMubj<)}(hH(u16 event_ctr, u64 packets, u64 bytes, u64 comps, struct dim_sample *s)h](jB)}(h u16 event_ctrh](h)}(hhh]j)}(hu16h]hu16}(hjz9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw9ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj|9modnameN classnameNjj)}j]j)}j{j]9sbc.dim_update_sample_with_compsasbuh1hhjs9ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjs9ubj)}(h event_ctrh]h event_ctr}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjs9ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjo9ubjB)}(h u64 packetsh](h)}(hhh]j)}(hu64h]hu64}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj9modnameN classnameNjj)}j]j9c.dim_update_sample_with_compsasbuh1hhj9ubj)}(h h]h }(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubj)}(hpacketsh]hpackets}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjo9ubjB)}(h u64 bytesh](h)}(hhh]j)}(hu64h]hu64}(hj :hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj :ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj:modnameN classnameNjj)}j]j9c.dim_update_sample_with_compsasbuh1hhj:ubj)}(h h]h }(hj*:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(hbytesh]hbytes}(hj8:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjo9ubjB)}(h u64 compsh](h)}(hhh]j)}(hu64h]hu64}(hjT:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQ:ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjV:modnameN classnameNjj)}j]j9c.dim_update_sample_with_compsasbuh1hhjM:ubj)}(h h]h }(hjr:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM:ubj)}(hcompsh]hcomps}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjo9ubjB)}(hstruct dim_sample *sh](jq)}(hjth]hstruct}(hj:hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj:ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubh)}(hhh]j)}(h dim_sampleh]h dim_sample}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj:modnameN classnameNjj)}j]j9c.dim_update_sample_with_compsasbuh1hhj:ubj)}(h h]h }(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(hjh]h*}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj)}(hj7h]hs}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjo9ubeh}(h]h ]h"]h$]h&]jjuh1j;hj69hhhjH9hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj29hhhjH9hMubah}(h]j-9ah ](jjeh"]h$]h&]jj)jhuh1jdhjH9hMhj/9hhubj)}(hhh]h)}(hJset a sample's fields with given values including the completion parameterh]hLset a sample’s fields with given values including the completion parameter}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMwhj;hhubah}(h]h ]h"]h$]h&]uh1jhj/9hhhjH9hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj1;jj1;jjjuh1j_hhhj=hNhNubj)}(h**Parameters** ``u16 event_ctr`` number of events to set ``u64 packets`` number of packets to set ``u64 bytes`` number of bytes to set ``u64 comps`` number of completions to set ``struct dim_sample *s`` DIM sampleh](h)}(h**Parameters**h]j)}(hj;;h]h Parameters}(hj=;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9;ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM{hj5;ubj9)}(hhh](j>)}(h*``u16 event_ctr`` number of events to set h](jD)}(h``u16 event_ctr``h]j)}(hjZ;h]h u16 event_ctr}(hj\;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjX;ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMyhjT;ubj^)}(hhh]h)}(hnumber of events to seth]hnumber of events to set}(hjs;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo;hMyhjp;ubah}(h]h ]h"]h$]h&]uh1j]hjT;ubeh}(h]h ]h"]h$]h&]uh1j=hjo;hMyhjQ;ubj>)}(h)``u64 packets`` number of packets to set h](jD)}(h``u64 packets``h]j)}(hj;h]h u64 packets}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMzhj;ubj^)}(hhh]h)}(hnumber of packets to seth]hnumber of packets to set}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hMzhj;ubah}(h]h ]h"]h$]h&]uh1j]hj;ubeh}(h]h ]h"]h$]h&]uh1j=hj;hMzhjQ;ubj>)}(h%``u64 bytes`` number of bytes to set h](jD)}(h ``u64 bytes``h]j)}(hj;h]h u64 bytes}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM{hj;ubj^)}(hhh]h)}(hnumber of bytes to seth]hnumber of bytes to set}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hM{hj;ubah}(h]h ]h"]h$]h&]uh1j]hj;ubeh}(h]h ]h"]h$]h&]uh1j=hj;hM{hjQ;ubj>)}(h+``u64 comps`` number of completions to set h](jD)}(h ``u64 comps``h]j)}(hj<h]h u64 comps}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM|hj;ubj^)}(hhh]h)}(hnumber of completions to seth]hnumber of completions to set}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hM|hj<ubah}(h]h ]h"]h$]h&]uh1j]hj;ubeh}(h]h ]h"]h$]h&]uh1j=hj<hM|hjQ;ubj>)}(h#``struct dim_sample *s`` DIM sampleh](jD)}(h``struct dim_sample *s``h]j)}(hj><h]hstruct dim_sample *s}(hj@<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<<ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM~hj8<ubj^)}(hhh]h)}(h DIM sampleh]h DIM sample}(hjW<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhM}hjT<ubah}(h]h ]h"]h$]h&]uh1j]hj8<ubeh}(h]h ]h"]h$]h&]uh1j=hjS<hM~hjQ;ubeh}(h]h ]h"]h$]h&]uh1j8hj5;ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[&net_dim_get_rx_moderation (C function)c.net_dim_get_rx_moderationhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hIstruct dim_cq_moder net_dim_get_rx_moderation (u8 cq_period_mode, int ix)h]jk)}(hHstruct dim_cq_moder net_dim_get_rx_moderation(u8 cq_period_mode, int ix)h](jq)}(hjth]hstruct}(hj<hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj<hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhj<hMubh)}(hhh]j)}(h dim_cq_moderh]h dim_cq_moder}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj<modnameN classnameNjj)}j]j)}j{net_dim_get_rx_moderationsbc.net_dim_get_rx_moderationasbuh1hhj<hhhj<hMubj)}(h h]h }(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhj<hMubj)}(hnet_dim_get_rx_moderationh]j)}(hj<h]hnet_dim_get_rx_moderation}(hj<hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj<hhhj<hMubj<)}(h(u8 cq_period_mode, int ix)h](jB)}(hu8 cq_period_modeh](h)}(hhh]j)}(hu8h]hu8}(hj=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj =modnameN classnameNjj)}j]j<c.net_dim_get_rx_moderationasbuh1hhj=ubj)}(h h]h }(hj&=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj)}(hcq_period_modeh]hcq_period_mode}(hj4=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj<ubjB)}(hint ixh](j)}(hinth]hint}(hjM=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI=ubj)}(h h]h }(hj[=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI=ubj)}(hixh]hix}(hji=hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjI=ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj<ubeh}(h]h ]h"]h$]h&]jjuh1j;hj<hhhj<hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj<hhhj<hMubah}(h]j<ah ](jjeh"]h$]h&]jj)jhuh1jdhj<hMhj<hhubj)}(hhh]h)}(h7provide a CQ moderation object for the given RX profileh]h7provide a CQ moderation object for the given RX profile}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj=hhubah}(h]h ]h"]h$]h&]uh1jhj<hhhj<hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj=jj=jjjuh1j_hhhj=hNhNubj)}(hR**Parameters** ``u8 cq_period_mode`` CQ period mode ``int ix`` Profile indexh](h)}(h**Parameters**h]j)}(hj=h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj=ubj9)}(hhh](j>)}(h%``u8 cq_period_mode`` CQ period mode h](jD)}(h``u8 cq_period_mode``h]j)}(hj=h]hu8 cq_period_mode}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj=ubj^)}(hhh]h)}(hCQ period modeh]hCQ period mode}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hMhj=ubah}(h]h ]h"]h$]h&]uh1j]hj=ubeh}(h]h ]h"]h$]h&]uh1j=hj=hMhj=ubj>)}(h``int ix`` Profile indexh](jD)}(h ``int ix``h]j)}(hj >h]hint ix}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj >ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj>ubj^)}(hhh]h)}(h Profile indexh]h Profile index}(hj&>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj#>ubah}(h]h ]h"]h$]h&]uh1j]hj>ubeh}(h]h ]h"]h$]h&]uh1j=hj">hMhj=ubeh}(h]h ]h"]h$]h&]uh1j8hj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[*net_dim_get_def_rx_moderation (C function)c.net_dim_get_def_rx_moderationhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hEstruct dim_cq_moder net_dim_get_def_rx_moderation (u8 cq_period_mode)h]jk)}(hDstruct dim_cq_moder net_dim_get_def_rx_moderation(u8 cq_period_mode)h](jq)}(hjth]hstruct}(hjg>hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjc>hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hju>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjc>hhhjt>hMubh)}(hhh]j)}(h dim_cq_moderh]h dim_cq_moder}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj>modnameN classnameNjj)}j]j)}j{net_dim_get_def_rx_moderationsbc.net_dim_get_def_rx_moderationasbuh1hhjc>hhhjt>hMubj)}(h h]h }(hj>hhhNhNubah}(h]h ]jajh"]h$]h&]uh1jhjc>hhhjt>hMubj)}(hnet_dim_get_def_rx_moderationh]j)}(hj>h]hnet_dim_get_def_rx_moderation}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjc>hhhjt>hMubj<)}(h(u8 cq_period_mode)h]jB)}(hu8 cq_period_modeh](h)}(hhh]j)}(hu8h]hu8}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj>modnameN classnameNjj)}j]j>c.net_dim_get_def_rx_moderationasbuh1hhj>ubj)}(h h]h }(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubj)}(hcq_period_modeh]hcq_period_mode}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj>ubah}(h]h ]h"]h$]h&]jjuh1j;hjc>hhhjt>hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj_>hhhjt>hMubah}(h]jZ>ah ](jjeh"]h$]h&]jj)jhuh1jdhjt>hMhj\>hhubj)}(hhh]h)}(h!provide the default RX moderationh]h!provide the default RX moderation}(hj-?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj*?hhubah}(h]h ]h"]h$]h&]uh1jhj\>hhhjt>hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjE?jjE?jjjuh1j_hhhj=hNhNubj)}(h6**Parameters** ``u8 cq_period_mode`` CQ period modeh](h)}(h**Parameters**h]j)}(hjO?h]h Parameters}(hjQ?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM?ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjI?ubj9)}(hhh]j>)}(h$``u8 cq_period_mode`` CQ period modeh](jD)}(h``u8 cq_period_mode``h]j)}(hjn?h]hu8 cq_period_mode}(hjp?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl?ubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjh?ubj^)}(hhh]h)}(hCQ period modeh]hCQ period mode}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj?ubah}(h]h ]h"]h$]h&]uh1j]hjh?ubeh}(h]h ]h"]h$]h&]uh1j=hj?hMhje?ubah}(h]h ]h"]h$]h&]uh1j8hjI?ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[&net_dim_get_tx_moderation (C function)c.net_dim_get_tx_moderationhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hIstruct dim_cq_moder net_dim_get_tx_moderation (u8 cq_period_mode, int ix)h]jk)}(hHstruct dim_cq_moder net_dim_get_tx_moderation(u8 cq_period_mode, int ix)h](jq)}(hjth]hstruct}(hj?hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj?hhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhj?hMubh)}(hhh]j)}(h dim_cq_moderh]h dim_cq_moder}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj?modnameN classnameNjj)}j]j)}j{net_dim_get_tx_moderationsbc.net_dim_get_tx_moderationasbuh1hhj?hhhj?hMubj)}(h h]h }(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhj?hMubj)}(hnet_dim_get_tx_moderationh]j)}(hj@h]hnet_dim_get_tx_moderation}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj?hhhj?hMubj<)}(h(u8 cq_period_mode, int ix)h](jB)}(hu8 cq_period_modeh](h)}(hhh]j)}(hu8h]hu8}(hj8@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5@ubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj:@modnameN classnameNjj)}j]j@c.net_dim_get_tx_moderationasbuh1hhj1@ubj)}(h h]h }(hjV@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1@ubj)}(hcq_period_modeh]hcq_period_mode}(hjd@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1@ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj-@ubjB)}(hint ixh](j)}(hinth]hint}(hj}@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy@ubj)}(h h]h }(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy@ubj)}(hixh]hix}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjy@ubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj-@ubeh}(h]h ]h"]h$]h&]jjuh1j;hj?hhhj?hMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj?hhhj?hMubah}(h]j?ah ](jjeh"]h$]h&]jj)jhuh1jdhj?hMhj?hhubj)}(hhh]h)}(h7provide a CQ moderation object for the given TX profileh]h7provide a CQ moderation object for the given TX profile}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj@hhubah}(h]h ]h"]h$]h&]uh1jhj?hhhj?hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj@jj@jjjuh1j_hhhj=hNhNubj)}(hR**Parameters** ``u8 cq_period_mode`` CQ period mode ``int ix`` Profile indexh](h)}(h**Parameters**h]j)}(hj@h]h Parameters}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj@ubj9)}(hhh](j>)}(h%``u8 cq_period_mode`` CQ period mode h](jD)}(h``u8 cq_period_mode``h]j)}(hjAh]hu8 cq_period_mode}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj@ubj^)}(hhh]h)}(hCQ period modeh]hCQ period mode}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhMhjAubah}(h]h ]h"]h$]h&]uh1j]hj@ubeh}(h]h ]h"]h$]h&]uh1j=hjAhMhj@ubj>)}(h``int ix`` Profile indexh](jD)}(h ``int ix``h]j)}(hj=Ah]hint ix}(hj?AhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;Aubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj7Aubj^)}(hhh]h)}(h Profile indexh]h Profile index}(hjVAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjSAubah}(h]h ]h"]h$]h&]uh1j]hj7Aubeh}(h]h ]h"]h$]h&]uh1j=hjRAhMhj@ubeh}(h]h ]h"]h$]h&]uh1j8hj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[*net_dim_get_def_tx_moderation (C function)c.net_dim_get_def_tx_moderationhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hEstruct dim_cq_moder net_dim_get_def_tx_moderation (u8 cq_period_mode)h]jk)}(hDstruct dim_cq_moder net_dim_get_def_tx_moderation(u8 cq_period_mode)h](jq)}(hjth]hstruct}(hjAhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjAhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhjAhMubh)}(hhh]j)}(h dim_cq_moderh]h dim_cq_moder}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjAmodnameN classnameNjj)}j]j)}j{net_dim_get_def_tx_moderationsbc.net_dim_get_def_tx_moderationasbuh1hhjAhhhjAhMubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhjAhMubj)}(hnet_dim_get_def_tx_moderationh]j)}(hjAh]hnet_dim_get_def_tx_moderation}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAubah}(h]h ](jjeh"]h$]h&]jjuh1jhjAhhhjAhMubj<)}(h(u8 cq_period_mode)h]jB)}(hu8 cq_period_modeh](h)}(hhh]j)}(hu8h]hu8}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetj BmodnameN classnameNjj)}j]jAc.net_dim_get_def_tx_moderationasbuh1hhjBubj)}(h h]h }(hj%BhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj)}(hcq_period_modeh]hcq_period_mode}(hj3BhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjAubah}(h]h ]h"]h$]h&]jjuh1j;hjAhhhjAhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjAhhhjAhMubah}(h]jAah ](jjeh"]h$]h&]jj)jhuh1jdhjAhMhjAhhubj)}(hhh]h)}(h!provide the default TX moderationh]h!provide the default TX moderation}(hj]BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjZBhhubah}(h]h ]h"]h$]h&]uh1jhjAhhhjAhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjuBjjuBjjjuh1j_hhhj=hNhNubj)}(h6**Parameters** ``u8 cq_period_mode`` CQ period modeh](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}Bubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjyBubj9)}(hhh]j>)}(h$``u8 cq_period_mode`` CQ period modeh](jD)}(h``u8 cq_period_mode``h]j)}(hjBh]hu8 cq_period_mode}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjBubj^)}(hhh]h)}(hCQ period modeh]hCQ period mode}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjBubah}(h]h ]h"]h$]h&]uh1j]hjBubeh}(h]h ]h"]h$]h&]uh1j=hjBhMhjBubah}(h]h ]h"]h$]h&]uh1j8hjyBubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[net_dim (C function) c.net_dimhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(hCvoid net_dim (struct dim *dim, const struct dim_sample *end_sample)h]jk)}(hBvoid net_dim(struct dim *dim, const struct dim_sample *end_sample)h](j)}(hvoidh]hvoid}(hjBhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBhhhjChMubj)}(hnet_dimh]j)}(hnet_dimh]hnet_dim}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubah}(h]h ](jjeh"]h$]h&]jjuh1jhjBhhhjChMubj<)}(h6(struct dim *dim, const struct dim_sample *end_sample)h](jB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hj5ChhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj1Cubj)}(h h]h }(hjBChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1Cubh)}(hhh]j)}(hdimh]hdim}(hjSChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPCubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjUCmodnameN classnameNjj)}j]j)}j{jCsb c.net_dimasbuh1hhj1Cubj)}(h h]h }(hjsChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1Cubj)}(hjh]h*}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1Cubj)}(hdimh]hdim}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1Cubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj-CubjB)}(h#const struct dim_sample *end_sampleh](jq)}(hj3h]hconst}(hjChhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjCubj)}(h h]h }(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubjq)}(hjth]hstruct}(hjChhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjCubj)}(h h]h }(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubh)}(hhh]j)}(h dim_sampleh]h dim_sample}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjCmodnameN classnameNjj)}j]joC c.net_dimasbuh1hhjCubj)}(h h]h }(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(hjh]h*}(hj DhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubj)}(h end_sampleh]h end_sample}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhj-Cubeh}(h]h ]h"]h$]h&]jjuh1j;hjBhhhjChMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhjBhhhjChMubah}(h]jBah ](jjeh"]h$]h&]jj)jhuh1jdhjChMhjBhhubj)}(hhh]h)}(hmain DIM algorithm entry pointh]hmain DIM algorithm entry point}(hjCDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj@Dhhubah}(h]h ]h"]h$]h&]uh1jhjBhhhjChMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj[Djj[Djjjuh1j_hhhj=hNhNubj)}(hX**Parameters** ``struct dim *dim`` DIM instance information ``const struct dim_sample *end_sample`` Current data measurement **Description** Called by the consumer. This is the main logic of the algorithm, where data is processed in order to decide on next required action.h](h)}(h**Parameters**h]j)}(hjeDh]h Parameters}(hjgDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcDubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj_Dubj9)}(hhh](j>)}(h-``struct dim *dim`` DIM instance information h](jD)}(h``struct dim *dim``h]j)}(hjDh]hstruct dim *dim}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj~Dubj^)}(hhh]h)}(hDIM instance informationh]hDIM instance information}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjDubah}(h]h ]h"]h$]h&]uh1j]hj~Dubeh}(h]h ]h"]h$]h&]uh1j=hjDhMhj{Dubj>)}(hA``const struct dim_sample *end_sample`` Current data measurement h](jD)}(h'``const struct dim_sample *end_sample``h]j)}(hjDh]h#const struct dim_sample *end_sample}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjDubj^)}(hhh]h)}(hCurrent data measurementh]hCurrent data measurement}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjDubah}(h]h ]h"]h$]h&]uh1j]hjDubeh}(h]h ]h"]h$]h&]uh1j=hjDhMhj{Dubeh}(h]h ]h"]h$]h&]uh1j8hj_Dubh)}(h**Description**h]j)}(hjDh]h Description}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj_Dubh)}(hCalled by the consumer. This is the main logic of the algorithm, where data is processed in order to decide on next required action.h]hCalled by the consumer. This is the main logic of the algorithm, where data is processed in order to decide on next required action.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhj_Dubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubjO)}(hhh]h}(h]h ]h"]h$]h&]entries](j[rdma_dim (C function) c.rdma_dimhNtauh1jNhj=hhhNhNubj`)}(hhh](je)}(h0void rdma_dim (struct dim *dim, u64 completions)h]jk)}(h/void rdma_dim(struct dim *dim, u64 completions)h](j)}(hvoidh]hvoid}(hj=EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9EhhhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMubj)}(h h]h }(hjLEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj9EhhhjKEhMubj)}(hrdma_dimh]j)}(hrdma_dimh]hrdma_dim}(hj^EhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZEubah}(h]h ](jjeh"]h$]h&]jjuh1jhj9EhhhjKEhMubj<)}(h"(struct dim *dim, u64 completions)h](jB)}(hstruct dim *dimh](jq)}(hjth]hstruct}(hjzEhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjvEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvEubh)}(hhh]j)}(hdimh]hdim}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjEmodnameN classnameNjj)}j]j)}j{j`Esb c.rdma_dimasbuh1hhjvEubj)}(h h]h }(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvEubj)}(hjh]h*}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvEubj)}(hdimh]hdim}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvEubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjrEubjB)}(hu64 completionsh](h)}(hhh]j)}(hu64h]hu64}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&] refdomainjreftypej{ reftargetjEmodnameN classnameNjj)}j]jE c.rdma_dimasbuh1hhjEubj)}(h h]h }(hj FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubj)}(h completionsh]h completions}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphjjuh1jAhjrEubeh}(h]h ]h"]h$]h&]jjuh1j;hj9EhhhjKEhMubeh}(h]h ]h"]h$]h&]jjjuh1jjjjhj5EhhhjKEhMubah}(h]j0Eah ](jjeh"]h$]h&]jj)jhuh1jdhjKEhMhj2Ehhubj)}(hhh]h)}(hRuns the adaptive moderation.h]hRuns the adaptive moderation.}(hjEFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjBFhhubah}(h]h ]h"]h$]h&]uh1jhj2EhhhjKEhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjj]Fjj]Fjjjuh1j_hhhj=hNhNubj)}(hXc**Parameters** ``struct dim *dim`` The moderation struct. ``u64 completions`` The number of completions collected in this round. **Description** Each call to rdma_dim takes the latest amount of completions that have been collected and counts them as a new event. Once enough events have been collected the algorithm decides a new moderation level.h](h)}(h**Parameters**h]j)}(hjgFh]h Parameters}(hjiFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeFubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjaFubj9)}(hhh](j>)}(h+``struct dim *dim`` The moderation struct. h](jD)}(h``struct dim *dim``h]j)}(hjFh]hstruct dim *dim}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjFubj^)}(hhh]h)}(hThe moderation struct.h]hThe moderation struct.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMhjFubah}(h]h ]h"]h$]h&]uh1j]hjFubeh}(h]h ]h"]h$]h&]uh1j=hjFhMhj}Fubj>)}(hG``u64 completions`` The number of completions collected in this round. h](jD)}(h``u64 completions``h]j)}(hjFh]hu64 completions}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1jChW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjFubj^)}(hhh]h)}(h2The number of completions collected in this round.h]h2The number of completions collected in this round.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhMhjFubah}(h]h ]h"]h$]h&]uh1j]hjFubeh}(h]h ]h"]h$]h&]uh1j=hjFhMhj}Fubeh}(h]h ]h"]h$]h&]uh1j8hjaFubh)}(h**Description**h]j)}(hjFh]h Description}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjaFubh)}(hEach call to rdma_dim takes the latest amount of completions that have been collected and counts them as a new event. Once enough events have been collected the algorithm decides a new moderation level.h]hEach call to rdma_dim takes the latest amount of completions that have been collected and counts them as a new event. Once enough events have been collected the algorithm decides a new moderation level.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhW/var/lib/git/docbuild/linux/Documentation/networking/net_dim:217: ./include/linux/dim.hhMhjaFubeh}(h]h ] kernelindentah"]h$]h&]uh1jhj=hhhNhNubeh}(h]j+ah ]h"].dynamic interrupt moderation (dim) library apiah$]h&]uh1hhhhhhhhKubeh}(h]j@ah ]h"]6net dim - generic network dynamic interrupt moderationah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjWGerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j1Gj@jPjLjvj_jjjgjjjjjj:j j*Gj+u nametypes}(j1GjPjvjjgjjj:j*Guh}(j@hjLjj_jSjjyjjjjjjjj jj+j=j]jfjzjj j j j jjjjjjjZj_j jjjjjjjj!j!j#j#j$j$j3'j8'j)j)jg+jl+jC-jH-j.j.jD0jI0j1j1jF3jK3jO6jT6j-9j29j<j<jZ>j_>j?j?jAjAjBjBj0Ej5Ehj2jYjPj{jrjjjjjjjjj%ju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jeGKsRparse_messages]transform_messages] transformerN include_log] decorationNhhub.