FreeBSD kernel IXGBE device code
ixgbe_dcb_82599.c
Go to the documentation of this file.
1/******************************************************************************
2 SPDX-License-Identifier: BSD-3-Clause
3
4 Copyright (c) 2001-2020, Intel Corporation
5 All rights reserved.
6
7 Redistribution and use in source and binary forms, with or without
8 modification, are permitted provided that the following conditions are met:
9
10 1. Redistributions of source code must retain the above copyright notice,
11 this list of conditions and the following disclaimer.
12
13 2. Redistributions in binary form must reproduce the above copyright
14 notice, this list of conditions and the following disclaimer in the
15 documentation and/or other materials provided with the distribution.
16
17 3. Neither the name of the Intel Corporation nor the names of its
18 contributors may be used to endorse or promote products derived from
19 this software without specific prior written permission.
20
21 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 POSSIBILITY OF SUCH DAMAGE.
32
33******************************************************************************/
34/*$FreeBSD$*/
35
36
37#include "ixgbe_type.h"
38#include "ixgbe_dcb.h"
39#include "ixgbe_dcb_82599.h"
40
50 struct ixgbe_hw_stats *stats,
51 u8 tc_count)
52{
53 int tc;
54
55 DEBUGFUNC("dcb_get_tc_stats");
56
57 if (tc_count > IXGBE_DCB_MAX_TRAFFIC_CLASS)
58 return IXGBE_ERR_PARAM;
59
60 /* Statistics pertaining to each traffic class */
61 for (tc = 0; tc < tc_count; tc++) {
62 /* Transmitted Packets */
63 stats->qptc[tc] += IXGBE_READ_REG(hw, IXGBE_QPTC(tc));
64 /* Transmitted Bytes (read low first to prevent missed carry) */
65 stats->qbtc[tc] += IXGBE_READ_REG(hw, IXGBE_QBTC_L(tc));
66 stats->qbtc[tc] +=
67 (((u64)(IXGBE_READ_REG(hw, IXGBE_QBTC_H(tc)))) << 32);
68 /* Received Packets */
69 stats->qprc[tc] += IXGBE_READ_REG(hw, IXGBE_QPRC(tc));
70 /* Received Bytes (read low first to prevent missed carry) */
71 stats->qbrc[tc] += IXGBE_READ_REG(hw, IXGBE_QBRC_L(tc));
72 stats->qbrc[tc] +=
73 (((u64)(IXGBE_READ_REG(hw, IXGBE_QBRC_H(tc)))) << 32);
74
75 /* Received Dropped Packet */
76 stats->qprdc[tc] += IXGBE_READ_REG(hw, IXGBE_QPRDC(tc));
77 }
78
79 return IXGBE_SUCCESS;
80}
81
91 struct ixgbe_hw_stats *stats,
92 u8 tc_count)
93{
94 int tc;
95
96 DEBUGFUNC("dcb_get_pfc_stats");
97
98 if (tc_count > IXGBE_DCB_MAX_TRAFFIC_CLASS)
99 return IXGBE_ERR_PARAM;
100
101 for (tc = 0; tc < tc_count; tc++) {
102 /* Priority XOFF Transmitted */
103 stats->pxofftxc[tc] += IXGBE_READ_REG(hw, IXGBE_PXOFFTXC(tc));
104 /* Priority XOFF Received */
105 stats->pxoffrxc[tc] += IXGBE_READ_REG(hw, IXGBE_PXOFFRXCNT(tc));
106 }
107
108 return IXGBE_SUCCESS;
109}
110
123 u16 *max, u8 *bwg_id, u8 *tsa,
124 u8 *map)
125{
126 u32 reg = 0;
127 u32 credit_refill = 0;
128 u32 credit_max = 0;
129 u8 i = 0;
130
131 /*
132 * Disable the arbiter before changing parameters
133 * (always enable recycle mode; WSP)
134 */
137
138 /*
139 * map all UPs to TCs. up_to_tc_bitmap for each TC has corresponding
140 * bits sets for the UPs that needs to be mappped to that TC.
141 * e.g if priorities 6 and 7 are to be mapped to a TC then the
142 * up_to_tc_bitmap value for that TC will be 11000000 in binary.
143 */
144 reg = 0;
145 for (i = 0; i < IXGBE_DCB_MAX_USER_PRIORITY; i++)
146 reg |= (map[i] << (i * IXGBE_RTRUP2TC_UP_SHIFT));
147
149
150 /* Configure traffic class credits and priority */
151 for (i = 0; i < IXGBE_DCB_MAX_TRAFFIC_CLASS; i++) {
152 credit_refill = refill[i];
153 credit_max = max[i];
154 reg = credit_refill | (credit_max << IXGBE_RTRPT4C_MCL_SHIFT);
155
156 reg |= (u32)(bwg_id[i]) << IXGBE_RTRPT4C_BWG_SHIFT;
157
158 if (tsa[i] == ixgbe_dcb_tsa_strict)
159 reg |= IXGBE_RTRPT4C_LSP;
160
161 IXGBE_WRITE_REG(hw, IXGBE_RTRPT4C(i), reg);
162 }
163
164 /*
165 * Configure Rx packet plane (recycle mode; WSP) and
166 * enable arbiter
167 */
170
171 return IXGBE_SUCCESS;
172}
173
185 u16 *max, u8 *bwg_id, u8 *tsa)
186{
187 u32 reg, max_credits;
188 u8 i;
189
190 /* Clear the per-Tx queue credits; we use per-TC instead */
191 for (i = 0; i < 128; i++) {
194 }
195
196 /* Configure traffic class credits and priority */
197 for (i = 0; i < IXGBE_DCB_MAX_TRAFFIC_CLASS; i++) {
198 max_credits = max[i];
199 reg = max_credits << IXGBE_RTTDT2C_MCL_SHIFT;
200 reg |= (u32)(refill[i]);
201 reg |= (u32)(bwg_id[i]) << IXGBE_RTTDT2C_BWG_SHIFT;
202
203 if (tsa[i] == ixgbe_dcb_tsa_group_strict_cee)
204 reg |= IXGBE_RTTDT2C_GSP;
205
206 if (tsa[i] == ixgbe_dcb_tsa_strict)
207 reg |= IXGBE_RTTDT2C_LSP;
208
209 IXGBE_WRITE_REG(hw, IXGBE_RTTDT2C(i), reg);
210 }
211
212 /*
213 * Configure Tx descriptor plane (recycle mode; WSP) and
214 * enable arbiter
215 */
218
219 return IXGBE_SUCCESS;
220}
221
234 u16 *max, u8 *bwg_id, u8 *tsa,
235 u8 *map)
236{
237 u32 reg;
238 u8 i;
239
240 /*
241 * Disable the arbiter before changing parameters
242 * (always enable recycle mode; SP; arb delay)
243 */
248
249 /*
250 * map all UPs to TCs. up_to_tc_bitmap for each TC has corresponding
251 * bits sets for the UPs that needs to be mappped to that TC.
252 * e.g if priorities 6 and 7 are to be mapped to a TC then the
253 * up_to_tc_bitmap value for that TC will be 11000000 in binary.
254 */
255 reg = 0;
256 for (i = 0; i < IXGBE_DCB_MAX_USER_PRIORITY; i++)
257 reg |= (map[i] << (i * IXGBE_RTTUP2TC_UP_SHIFT));
258
260
261 /* Configure traffic class credits and priority */
262 for (i = 0; i < IXGBE_DCB_MAX_TRAFFIC_CLASS; i++) {
263 reg = refill[i];
264 reg |= (u32)(max[i]) << IXGBE_RTTPT2C_MCL_SHIFT;
265 reg |= (u32)(bwg_id[i]) << IXGBE_RTTPT2C_BWG_SHIFT;
266
267 if (tsa[i] == ixgbe_dcb_tsa_group_strict_cee)
268 reg |= IXGBE_RTTPT2C_GSP;
269
270 if (tsa[i] == ixgbe_dcb_tsa_strict)
271 reg |= IXGBE_RTTPT2C_LSP;
272
273 IXGBE_WRITE_REG(hw, IXGBE_RTTPT2C(i), reg);
274 }
275
276 /*
277 * Configure Tx packet plane (recycle mode; SP; arb delay) and
278 * enable arbiter
279 */
283
284 return IXGBE_SUCCESS;
285}
286
295s32 ixgbe_dcb_config_pfc_82599(struct ixgbe_hw *hw, u8 pfc_en, u8 *map)
296{
297 u32 i, j, fcrtl, reg;
298 u8 max_tc = 0;
299
300 /* Enable Transmit Priority Flow Control */
302
303 /* Enable Receive Priority Flow Control */
304 reg = IXGBE_READ_REG(hw, IXGBE_MFLCN);
305 reg |= IXGBE_MFLCN_DPF;
306
307 /*
308 * X540 supports per TC Rx priority flow control. So
309 * clear all TCs and only enable those that should be
310 * enabled.
311 */
313
314 if (hw->mac.type >= ixgbe_mac_X540)
315 reg |= pfc_en << IXGBE_MFLCN_RPFCE_SHIFT;
316
317 if (pfc_en)
318 reg |= IXGBE_MFLCN_RPFCE;
319
321
322 for (i = 0; i < IXGBE_DCB_MAX_USER_PRIORITY; i++) {
323 if (map[i] > max_tc)
324 max_tc = map[i];
325 }
326
327
328 /* Configure PFC Tx thresholds per TC */
329 for (i = 0; i <= max_tc; i++) {
330 int enabled = 0;
331
332 for (j = 0; j < IXGBE_DCB_MAX_USER_PRIORITY; j++) {
333 if ((map[j] == i) && (pfc_en & (1 << j))) {
334 enabled = 1;
335 break;
336 }
337 }
338
339 if (enabled) {
340 reg = (hw->fc.high_water[i] << 10) | IXGBE_FCRTH_FCEN;
341 fcrtl = (hw->fc.low_water[i] << 10) | IXGBE_FCRTL_XONE;
342 IXGBE_WRITE_REG(hw, IXGBE_FCRTL_82599(i), fcrtl);
343 } else {
344 /*
345 * In order to prevent Tx hangs when the internal Tx
346 * switch is enabled we must set the high water mark
347 * to the Rx packet buffer size - 24KB. This allows
348 * the Tx switch to function even under heavy Rx
349 * workloads.
350 */
351 reg = IXGBE_READ_REG(hw, IXGBE_RXPBSIZE(i)) - 24576;
353 }
354
356 }
357
358 for (; i < IXGBE_DCB_MAX_TRAFFIC_CLASS; i++) {
361 }
362
363 /* Configure pause time (2 TCs per register) */
364 reg = hw->fc.pause_time | (hw->fc.pause_time << 16);
365 for (i = 0; i < (IXGBE_DCB_MAX_TRAFFIC_CLASS / 2); i++)
366 IXGBE_WRITE_REG(hw, IXGBE_FCTTV(i), reg);
367
368 /* Configure flow control refresh threshold value */
370
371 return IXGBE_SUCCESS;
372}
373
383 struct ixgbe_dcb_config *dcb_config)
384{
385 u32 reg = 0;
386 u8 i = 0;
387 u8 tc_count = 8;
388 bool vt_mode = false;
389
390 if (dcb_config != NULL) {
391 tc_count = dcb_config->num_tcs.pg_tcs;
392 vt_mode = dcb_config->vt_mode;
393 }
394
395 if (!((tc_count == 8 && vt_mode == false) || tc_count == 4))
396 return IXGBE_ERR_PARAM;
397
398 if (tc_count == 8 && vt_mode == false) {
399 /*
400 * Receive Queues stats setting
401 * 32 RQSMR registers, each configuring 4 queues.
402 *
403 * Set all 16 queues of each TC to the same stat
404 * with TC 'n' going to stat 'n'.
405 */
406 for (i = 0; i < 32; i++) {
407 reg = 0x01010101 * (i / 4);
408 IXGBE_WRITE_REG(hw, IXGBE_RQSMR(i), reg);
409 }
410 /*
411 * Transmit Queues stats setting
412 * 32 TQSM registers, each controlling 4 queues.
413 *
414 * Set all queues of each TC to the same stat
415 * with TC 'n' going to stat 'n'.
416 * Tx queues are allocated non-uniformly to TCs:
417 * 32, 32, 16, 16, 8, 8, 8, 8.
418 */
419 for (i = 0; i < 32; i++) {
420 if (i < 8)
421 reg = 0x00000000;
422 else if (i < 16)
423 reg = 0x01010101;
424 else if (i < 20)
425 reg = 0x02020202;
426 else if (i < 24)
427 reg = 0x03030303;
428 else if (i < 26)
429 reg = 0x04040404;
430 else if (i < 28)
431 reg = 0x05050505;
432 else if (i < 30)
433 reg = 0x06060606;
434 else
435 reg = 0x07070707;
436 IXGBE_WRITE_REG(hw, IXGBE_TQSM(i), reg);
437 }
438 } else if (tc_count == 4 && vt_mode == false) {
439 /*
440 * Receive Queues stats setting
441 * 32 RQSMR registers, each configuring 4 queues.
442 *
443 * Set all 16 queues of each TC to the same stat
444 * with TC 'n' going to stat 'n'.
445 */
446 for (i = 0; i < 32; i++) {
447 if (i % 8 > 3)
448 /* In 4 TC mode, odd 16-queue ranges are
449 * not used.
450 */
451 continue;
452 reg = 0x01010101 * (i / 8);
453 IXGBE_WRITE_REG(hw, IXGBE_RQSMR(i), reg);
454 }
455 /*
456 * Transmit Queues stats setting
457 * 32 TQSM registers, each controlling 4 queues.
458 *
459 * Set all queues of each TC to the same stat
460 * with TC 'n' going to stat 'n'.
461 * Tx queues are allocated non-uniformly to TCs:
462 * 64, 32, 16, 16.
463 */
464 for (i = 0; i < 32; i++) {
465 if (i < 16)
466 reg = 0x00000000;
467 else if (i < 24)
468 reg = 0x01010101;
469 else if (i < 28)
470 reg = 0x02020202;
471 else
472 reg = 0x03030303;
473 IXGBE_WRITE_REG(hw, IXGBE_TQSM(i), reg);
474 }
475 } else if (tc_count == 4 && vt_mode == true) {
476 /*
477 * Receive Queues stats setting
478 * 32 RQSMR registers, each configuring 4 queues.
479 *
480 * Queue Indexing in 32 VF with DCB mode maps 4 TC's to each
481 * pool. Set all 32 queues of each TC across pools to the same
482 * stat with TC 'n' going to stat 'n'.
483 */
484 for (i = 0; i < 32; i++)
485 IXGBE_WRITE_REG(hw, IXGBE_RQSMR(i), 0x03020100);
486 /*
487 * Transmit Queues stats setting
488 * 32 TQSM registers, each controlling 4 queues.
489 *
490 * Queue Indexing in 32 VF with DCB mode maps 4 TC's to each
491 * pool. Set all 32 queues of each TC across pools to the same
492 * stat with TC 'n' going to stat 'n'.
493 */
494 for (i = 0; i < 32; i++)
495 IXGBE_WRITE_REG(hw, IXGBE_TQSM(i), 0x03020100);
496 }
497
498 return IXGBE_SUCCESS;
499}
500
509 struct ixgbe_dcb_config *dcb_config)
510{
511 u32 reg;
512 u32 q;
513
514 /* Disable the Tx desc arbiter so that MTQC can be changed */
515 reg = IXGBE_READ_REG(hw, IXGBE_RTTDCS);
516 reg |= IXGBE_RTTDCS_ARBDIS;
518
519 reg = IXGBE_READ_REG(hw, IXGBE_MRQC);
520 if (dcb_config->num_tcs.pg_tcs == 8) {
521 /* Enable DCB for Rx with 8 TCs */
522 switch (reg & IXGBE_MRQC_MRQE_MASK) {
523 case 0:
525 /* RSS disabled cases */
526 reg = (reg & ~IXGBE_MRQC_MRQE_MASK) |
528 break;
529 case IXGBE_MRQC_RSSEN:
531 /* RSS enabled cases */
532 reg = (reg & ~IXGBE_MRQC_MRQE_MASK) |
534 break;
535 default:
536 /*
537 * Unsupported value, assume stale data,
538 * overwrite no RSS
539 */
540 ASSERT(0);
541 reg = (reg & ~IXGBE_MRQC_MRQE_MASK) |
543 }
544 }
545 if (dcb_config->num_tcs.pg_tcs == 4) {
546 /* We support both VT-on and VT-off with 4 TCs. */
547 if (dcb_config->vt_mode)
548 reg = (reg & ~IXGBE_MRQC_MRQE_MASK) |
550 else
551 reg = (reg & ~IXGBE_MRQC_MRQE_MASK) |
553 }
554 IXGBE_WRITE_REG(hw, IXGBE_MRQC, reg);
555
556 /* Enable DCB for Tx with 8 TCs */
557 if (dcb_config->num_tcs.pg_tcs == 8)
559 else {
560 /* We support both VT-on and VT-off with 4 TCs. */
562 if (dcb_config->vt_mode)
563 reg |= IXGBE_MTQC_VT_ENA;
564 }
565 IXGBE_WRITE_REG(hw, IXGBE_MTQC, reg);
566
567 /* Disable drop for all queues */
568 for (q = 0; q < 128; q++)
571
572 /* Enable the Tx desc arbiter */
573 reg = IXGBE_READ_REG(hw, IXGBE_RTTDCS);
574 reg &= ~IXGBE_RTTDCS_ARBDIS;
576
577 /* Enable Security TX Buffer IFG for DCB */
579 reg |= IXGBE_SECTX_DCB;
581
582 return IXGBE_SUCCESS;
583}
584
597s32 ixgbe_dcb_hw_config_82599(struct ixgbe_hw *hw, int link_speed,
598 u16 *refill, u16 *max, u8 *bwg_id, u8 *tsa,
599 u8 *map)
600{
601 UNREFERENCED_1PARAMETER(link_speed);
602
603 ixgbe_dcb_config_rx_arbiter_82599(hw, refill, max, bwg_id, tsa,
604 map);
605 ixgbe_dcb_config_tx_desc_arbiter_82599(hw, refill, max, bwg_id,
606 tsa);
607 ixgbe_dcb_config_tx_data_arbiter_82599(hw, refill, max, bwg_id,
608 tsa, map);
609
610 return IXGBE_SUCCESS;
611}
612
#define IXGBE_DCB_MAX_USER_PRIORITY
Definition: ixgbe_dcb.h:53
@ ixgbe_dcb_tsa_group_strict_cee
Definition: ixgbe_dcb.h:78
@ ixgbe_dcb_tsa_strict
Definition: ixgbe_dcb.h:79
s32 ixgbe_dcb_config_tx_desc_arbiter_82599(struct ixgbe_hw *hw, u16 *refill, u16 *max, u8 *bwg_id, u8 *tsa)
s32 ixgbe_dcb_config_tc_stats_82599(struct ixgbe_hw *hw, struct ixgbe_dcb_config *dcb_config)
s32 ixgbe_dcb_config_82599(struct ixgbe_hw *hw, struct ixgbe_dcb_config *dcb_config)
s32 ixgbe_dcb_hw_config_82599(struct ixgbe_hw *hw, int link_speed, u16 *refill, u16 *max, u8 *bwg_id, u8 *tsa, u8 *map)
s32 ixgbe_dcb_get_tc_stats_82599(struct ixgbe_hw *hw, struct ixgbe_hw_stats *stats, u8 tc_count)
s32 ixgbe_dcb_get_pfc_stats_82599(struct ixgbe_hw *hw, struct ixgbe_hw_stats *stats, u8 tc_count)
s32 ixgbe_dcb_config_tx_data_arbiter_82599(struct ixgbe_hw *hw, u16 *refill, u16 *max, u8 *bwg_id, u8 *tsa, u8 *map)
s32 ixgbe_dcb_config_rx_arbiter_82599(struct ixgbe_hw *hw, u16 *refill, u16 *max, u8 *bwg_id, u8 *tsa, u8 *map)
s32 ixgbe_dcb_config_pfc_82599(struct ixgbe_hw *hw, u8 pfc_en, u8 *map)
#define IXGBE_RTTPCS_ARBDIS
#define IXGBE_RTRPCS_RRM
#define IXGBE_RTTPT2C_BWG_SHIFT
#define IXGBE_RTTPT2C_MCL_SHIFT
#define IXGBE_RTTPT2C_GSP
#define IXGBE_RTTDT2C_BWG_SHIFT
#define IXGBE_RTTPT2C_LSP
#define IXGBE_RTRPT4C_BWG_SHIFT
#define IXGBE_RTTDT2C_MCL_SHIFT
#define IXGBE_RTTPCS_TPPAC
#define IXGBE_RTTPCS_TPRM
#define IXGBE_RTTDT2C_LSP
#define IXGBE_RTRPCS_RAC
#define IXGBE_RTTDT2C_GSP
#define IXGBE_RTTPCS_ARBD_SHIFT
#define IXGBE_RTRPT4C_MCL_SHIFT
#define IXGBE_SECTX_DCB
#define IXGBE_RTRUP2TC_UP_SHIFT
#define IXGBE_RTTDCS_TDRM
#define IXGBE_RTTDCS_TDPAC
#define IXGBE_RTTUP2TC_UP_SHIFT
#define IXGBE_RTRPT4C_LSP
#define IXGBE_RTRPCS_ARBDIS
#define IXGBE_RTTPCS_ARBD_DCB
#define IXGBE_READ_REG(a, reg)
Definition: ixgbe_osdep.h:224
uint64_t u64
Definition: ixgbe_osdep.h:149
uint8_t u8
Definition: ixgbe_osdep.h:143
#define DEBUGFUNC(F)
Definition: ixgbe_osdep.h:76
#define UNREFERENCED_1PARAMETER(_p)
Definition: ixgbe_osdep.h:126
#define IXGBE_WRITE_REG(a, reg, val)
Definition: ixgbe_osdep.h:227
#define ASSERT(x)
Definition: ixgbe_osdep.h:58
uint16_t u16
Definition: ixgbe_osdep.h:145
int32_t s32
Definition: ixgbe_osdep.h:148
uint32_t u32
Definition: ixgbe_osdep.h:147
@ ixgbe_mac_X540
Definition: ixgbe_type.h:3677
#define IXGBE_RTRPT4C(_i)
Definition: ixgbe_type.h:876
#define IXGBE_MTQC_VT_ENA
Definition: ixgbe_type.h:2720
#define IXGBE_MFLCN
Definition: ixgbe_type.h:1384
#define IXGBE_MFLCN_RPFCE_MASK
Definition: ixgbe_type.h:2666
#define IXGBE_PXOFFTXC(_i)
Definition: ixgbe_type.h:1001
#define IXGBE_MFLCN_DPF
Definition: ixgbe_type.h:2663
#define IXGBE_RTTDT2C(_i)
Definition: ixgbe_type.h:879
#define IXGBE_FCRTH_FCEN
Definition: ixgbe_type.h:1886
#define IXGBE_DCB_MAX_TRAFFIC_CLASS
Definition: ixgbe_type.h:709
#define IXGBE_MRQC_VMDQRT4TCEN
Definition: ixgbe_type.h:2680
#define IXGBE_QBRC_L(_i)
Definition: ixgbe_type.h:1049
#define IXGBE_RTRPCS
Definition: ixgbe_type.h:870
#define IXGBE_FCRTH_82599(_i)
Definition: ixgbe_type.h:387
#define IXGBE_MTQC_8TC_8TQ
Definition: ixgbe_type.h:2725
#define IXGBE_SUCCESS
Definition: ixgbe_type.h:4234
#define IXGBE_RXPBSIZE(_i)
Definition: ixgbe_type.h:436
#define IXGBE_MFLCN_RPFCE
Definition: ixgbe_type.h:2664
#define IXGBE_FCTTV(_i)
Definition: ixgbe_type.h:390
#define IXGBE_TQSM(_i)
Definition: ixgbe_type.h:1043
#define IXGBE_MTQC_4TC_4TQ
Definition: ixgbe_type.h:2724
#define IXGBE_MRQC_RSSEN
Definition: ixgbe_type.h:2670
#define IXGBE_QBTC_H(_i)
Definition: ixgbe_type.h:1053
#define IXGBE_RTRUP2TC
Definition: ixgbe_type.h:874
#define IXGBE_RTTDQSEL
Definition: ixgbe_type.h:883
#define IXGBE_RTTDCS_ARBDIS
Definition: ixgbe_type.h:872
#define IXGBE_QDE_WRITE
Definition: ixgbe_type.h:2700
#define IXGBE_RQSMR(_i)
Definition: ixgbe_type.h:1040
#define IXGBE_MTQC_RT_ENA
Definition: ixgbe_type.h:2719
#define IXGBE_SECTXMINIFG
Definition: ixgbe_type.h:776
#define IXGBE_MRQC_RTRSS4TCEN
Definition: ixgbe_type.h:2675
#define IXGBE_MFLCN_RPFCE_SHIFT
Definition: ixgbe_type.h:2667
#define IXGBE_RTTDCS
Definition: ixgbe_type.h:871
#define IXGBE_MRQC_RTRSS8TCEN
Definition: ixgbe_type.h:2674
#define IXGBE_QDE_IDX_SHIFT
Definition: ixgbe_type.h:2699
#define IXGBE_QPRDC(_i)
Definition: ixgbe_type.h:1051
#define IXGBE_ERR_PARAM
Definition: ixgbe_type.h:4239
#define IXGBE_MRQC
Definition: ixgbe_type.h:467
#define IXGBE_MFLCN_RFCE
Definition: ixgbe_type.h:2665
#define IXGBE_RTTDT1C
Definition: ixgbe_type.h:884
#define IXGBE_PXOFFRXCNT(_i)
Definition: ixgbe_type.h:997
#define IXGBE_RTTUP2TC
Definition: ixgbe_type.h:875
#define IXGBE_FCRTL_XONE
Definition: ixgbe_type.h:1885
#define IXGBE_QBRC_H(_i)
Definition: ixgbe_type.h:1050
#define IXGBE_MTQC
Definition: ixgbe_type.h:476
#define IXGBE_MRQC_RT4TCEN
Definition: ixgbe_type.h:2673
#define IXGBE_QPTC(_i)
Definition: ixgbe_type.h:1046
#define IXGBE_FCCFG
Definition: ixgbe_type.h:394
#define IXGBE_FCRTV
Definition: ixgbe_type.h:393
#define IXGBE_QPRC(_i)
Definition: ixgbe_type.h:1045
#define IXGBE_RTTPCS
Definition: ixgbe_type.h:873
#define IXGBE_MRQC_MRQE_MASK
Definition: ixgbe_type.h:2671
#define IXGBE_QDE
Definition: ixgbe_type.h:491
#define IXGBE_QBTC_L(_i)
Definition: ixgbe_type.h:1052
#define IXGBE_FCCFG_TFCE_PRIORITY
Definition: ixgbe_type.h:1903
#define IXGBE_MRQC_RT8TCEN
Definition: ixgbe_type.h:2672
#define IXGBE_FCRTL_82599(_i)
Definition: ixgbe_type.h:388
#define IXGBE_RTTPT2C(_i)
Definition: ixgbe_type.h:881
struct ixgbe_dcb_num_tcs num_tcs
Definition: ixgbe_dcb.h:125
u32 low_water[IXGBE_DCB_MAX_TRAFFIC_CLASS]
Definition: ixgbe_type.h:3839
u32 high_water[IXGBE_DCB_MAX_TRAFFIC_CLASS]
Definition: ixgbe_type.h:3838
struct ixgbe_mac_info mac
Definition: ixgbe_type.h:4207
struct ixgbe_fc_info fc
Definition: ixgbe_type.h:4209
enum ixgbe_mac_type type
Definition: ixgbe_type.h:4115