587 lines · c
1/*2 * Copyright (c) 2007 Mellanox Technologies. All rights reserved.3 *4 * This software is available to you under a choice of one of two5 * licenses. You may choose to be licensed under the terms of the GNU6 * General Public License (GPL) Version 2, available from the file7 * COPYING in the main directory of this source tree, or the8 * OpenIB.org BSD license below:9 *10 * Redistribution and use in source and binary forms, with or11 * without modification, are permitted provided that the following12 * conditions are met:13 *14 * - Redistributions of source code must retain the above15 * copyright notice, this list of conditions and the following16 * disclaimer.17 *18 * - Redistributions in binary form must reproduce the above19 * copyright notice, this list of conditions and the following20 * disclaimer in the documentation and/or other materials21 * provided with the distribution.22 *23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE30 * SOFTWARE.31 *32 */33 34#ifndef _MLX4_EN_PORT_H_35#define _MLX4_EN_PORT_H_36 37 38#define SET_PORT_PROMISC_SHIFT 3139#define SET_PORT_MC_PROMISC_SHIFT 3040 41#define MLX4_EN_NUM_TC 842 43#define VLAN_FLTR_SIZE 12844struct mlx4_set_vlan_fltr_mbox {45 __be32 entry[VLAN_FLTR_SIZE];46};47 48 49enum {50 MLX4_MCAST_CONFIG = 0,51 MLX4_MCAST_DISABLE = 1,52 MLX4_MCAST_ENABLE = 2,53};54 55enum mlx4_link_mode {56 MLX4_1000BASE_CX_SGMII = 0,57 MLX4_1000BASE_KX = 1,58 MLX4_10GBASE_CX4 = 2,59 MLX4_10GBASE_KX4 = 3,60 MLX4_10GBASE_KR = 4,61 MLX4_20GBASE_KR2 = 5,62 MLX4_40GBASE_CR4 = 6,63 MLX4_40GBASE_KR4 = 7,64 MLX4_56GBASE_KR4 = 8,65 MLX4_10GBASE_CR = 12,66 MLX4_10GBASE_SR = 13,67 MLX4_40GBASE_SR4 = 15,68 MLX4_56GBASE_CR4 = 17,69 MLX4_56GBASE_SR4 = 18,70 MLX4_100BASE_TX = 24,71 MLX4_1000BASE_T = 25,72 MLX4_10GBASE_T = 26,73};74 75#define MLX4_PROT_MASK(link_mode) (1<<link_mode)76 77enum {78 MLX4_EN_100M_SPEED = 0x04,79 MLX4_EN_10G_SPEED_XAUI = 0x00,80 MLX4_EN_10G_SPEED_XFI = 0x01,81 MLX4_EN_1G_SPEED = 0x02,82 MLX4_EN_20G_SPEED = 0x08,83 MLX4_EN_40G_SPEED = 0x40,84 MLX4_EN_56G_SPEED = 0x20,85 MLX4_EN_OTHER_SPEED = 0x0f,86};87 88struct mlx4_en_query_port_context {89 u8 link_up;90#define MLX4_EN_LINK_UP_MASK 0x8091#define MLX4_EN_ANC_MASK 0x4092 u8 autoneg;93#define MLX4_EN_AUTONEG_MASK 0x8094 __be16 mtu;95 u8 reserved2;96 u8 link_speed;97#define MLX4_EN_SPEED_MASK 0x6f98 u16 reserved3[5];99 __be64 mac;100 u8 transceiver;101};102 103 104struct mlx4_en_stat_out_mbox {105 /* Received frames with a length of 64 octets */106 __be64 R64_prio_0;107 __be64 R64_prio_1;108 __be64 R64_prio_2;109 __be64 R64_prio_3;110 __be64 R64_prio_4;111 __be64 R64_prio_5;112 __be64 R64_prio_6;113 __be64 R64_prio_7;114 __be64 R64_novlan;115 /* Received frames with a length of 127 octets */116 __be64 R127_prio_0;117 __be64 R127_prio_1;118 __be64 R127_prio_2;119 __be64 R127_prio_3;120 __be64 R127_prio_4;121 __be64 R127_prio_5;122 __be64 R127_prio_6;123 __be64 R127_prio_7;124 __be64 R127_novlan;125 /* Received frames with a length of 255 octets */126 __be64 R255_prio_0;127 __be64 R255_prio_1;128 __be64 R255_prio_2;129 __be64 R255_prio_3;130 __be64 R255_prio_4;131 __be64 R255_prio_5;132 __be64 R255_prio_6;133 __be64 R255_prio_7;134 __be64 R255_novlan;135 /* Received frames with a length of 511 octets */136 __be64 R511_prio_0;137 __be64 R511_prio_1;138 __be64 R511_prio_2;139 __be64 R511_prio_3;140 __be64 R511_prio_4;141 __be64 R511_prio_5;142 __be64 R511_prio_6;143 __be64 R511_prio_7;144 __be64 R511_novlan;145 /* Received frames with a length of 1023 octets */146 __be64 R1023_prio_0;147 __be64 R1023_prio_1;148 __be64 R1023_prio_2;149 __be64 R1023_prio_3;150 __be64 R1023_prio_4;151 __be64 R1023_prio_5;152 __be64 R1023_prio_6;153 __be64 R1023_prio_7;154 __be64 R1023_novlan;155 /* Received frames with a length of 1518 octets */156 __be64 R1518_prio_0;157 __be64 R1518_prio_1;158 __be64 R1518_prio_2;159 __be64 R1518_prio_3;160 __be64 R1518_prio_4;161 __be64 R1518_prio_5;162 __be64 R1518_prio_6;163 __be64 R1518_prio_7;164 __be64 R1518_novlan;165 /* Received frames with a length of 1522 octets */166 __be64 R1522_prio_0;167 __be64 R1522_prio_1;168 __be64 R1522_prio_2;169 __be64 R1522_prio_3;170 __be64 R1522_prio_4;171 __be64 R1522_prio_5;172 __be64 R1522_prio_6;173 __be64 R1522_prio_7;174 __be64 R1522_novlan;175 /* Received frames with a length of 1548 octets */176 __be64 R1548_prio_0;177 __be64 R1548_prio_1;178 __be64 R1548_prio_2;179 __be64 R1548_prio_3;180 __be64 R1548_prio_4;181 __be64 R1548_prio_5;182 __be64 R1548_prio_6;183 __be64 R1548_prio_7;184 __be64 R1548_novlan;185 /* Received frames with a length of 1548 < octets < MTU */186 __be64 R2MTU_prio_0;187 __be64 R2MTU_prio_1;188 __be64 R2MTU_prio_2;189 __be64 R2MTU_prio_3;190 __be64 R2MTU_prio_4;191 __be64 R2MTU_prio_5;192 __be64 R2MTU_prio_6;193 __be64 R2MTU_prio_7;194 __be64 R2MTU_novlan;195 /* Received frames with a length of MTU< octets and good CRC */196 __be64 RGIANT_prio_0;197 __be64 RGIANT_prio_1;198 __be64 RGIANT_prio_2;199 __be64 RGIANT_prio_3;200 __be64 RGIANT_prio_4;201 __be64 RGIANT_prio_5;202 __be64 RGIANT_prio_6;203 __be64 RGIANT_prio_7;204 __be64 RGIANT_novlan;205 /* Received broadcast frames with good CRC */206 __be64 RBCAST_prio_0;207 __be64 RBCAST_prio_1;208 __be64 RBCAST_prio_2;209 __be64 RBCAST_prio_3;210 __be64 RBCAST_prio_4;211 __be64 RBCAST_prio_5;212 __be64 RBCAST_prio_6;213 __be64 RBCAST_prio_7;214 __be64 RBCAST_novlan;215 /* Received multicast frames with good CRC */216 __be64 MCAST_prio_0;217 __be64 MCAST_prio_1;218 __be64 MCAST_prio_2;219 __be64 MCAST_prio_3;220 __be64 MCAST_prio_4;221 __be64 MCAST_prio_5;222 __be64 MCAST_prio_6;223 __be64 MCAST_prio_7;224 __be64 MCAST_novlan;225 /* Received unicast not short or GIANT frames with good CRC */226 __be64 RTOTG_prio_0;227 __be64 RTOTG_prio_1;228 __be64 RTOTG_prio_2;229 __be64 RTOTG_prio_3;230 __be64 RTOTG_prio_4;231 __be64 RTOTG_prio_5;232 __be64 RTOTG_prio_6;233 __be64 RTOTG_prio_7;234 __be64 RTOTG_novlan;235 236 /* Count of total octets of received frames, includes framing characters */237 __be64 RTTLOCT_prio_0;238 /* Count of total octets of received frames, not including framing239 characters */240 __be64 RTTLOCT_NOFRM_prio_0;241 /* Count of Total number of octets received242 (only for frames without errors) */243 __be64 ROCT_prio_0;244 245 __be64 RTTLOCT_prio_1;246 __be64 RTTLOCT_NOFRM_prio_1;247 __be64 ROCT_prio_1;248 249 __be64 RTTLOCT_prio_2;250 __be64 RTTLOCT_NOFRM_prio_2;251 __be64 ROCT_prio_2;252 253 __be64 RTTLOCT_prio_3;254 __be64 RTTLOCT_NOFRM_prio_3;255 __be64 ROCT_prio_3;256 257 __be64 RTTLOCT_prio_4;258 __be64 RTTLOCT_NOFRM_prio_4;259 __be64 ROCT_prio_4;260 261 __be64 RTTLOCT_prio_5;262 __be64 RTTLOCT_NOFRM_prio_5;263 __be64 ROCT_prio_5;264 265 __be64 RTTLOCT_prio_6;266 __be64 RTTLOCT_NOFRM_prio_6;267 __be64 ROCT_prio_6;268 269 __be64 RTTLOCT_prio_7;270 __be64 RTTLOCT_NOFRM_prio_7;271 __be64 ROCT_prio_7;272 273 __be64 RTTLOCT_novlan;274 __be64 RTTLOCT_NOFRM_novlan;275 __be64 ROCT_novlan;276 277 /* Count of Total received frames including bad frames */278 __be64 RTOT_prio_0;279 /* Count of Total number of received frames with 802.1Q encapsulation */280 __be64 R1Q_prio_0;281 __be64 reserved1;282 283 __be64 RTOT_prio_1;284 __be64 R1Q_prio_1;285 __be64 reserved2;286 287 __be64 RTOT_prio_2;288 __be64 R1Q_prio_2;289 __be64 reserved3;290 291 __be64 RTOT_prio_3;292 __be64 R1Q_prio_3;293 __be64 reserved4;294 295 __be64 RTOT_prio_4;296 __be64 R1Q_prio_4;297 __be64 reserved5;298 299 __be64 RTOT_prio_5;300 __be64 R1Q_prio_5;301 __be64 reserved6;302 303 __be64 RTOT_prio_6;304 __be64 R1Q_prio_6;305 __be64 reserved7;306 307 __be64 RTOT_prio_7;308 __be64 R1Q_prio_7;309 __be64 reserved8;310 311 __be64 RTOT_novlan;312 __be64 R1Q_novlan;313 __be64 reserved9;314 315 /* Total number of Successfully Received Control Frames */316 __be64 RCNTL;317 __be64 reserved10;318 __be64 reserved11;319 __be64 reserved12;320 /* Count of received frames with a length/type field value between 46321 (42 for VLANtagged frames) and 1500 (also 1500 for VLAN-tagged frames),322 inclusive */323 __be64 RInRangeLengthErr;324 /* Count of received frames with length/type field between 1501 and 1535325 decimal, inclusive */326 __be64 ROutRangeLengthErr;327 /* Count of received frames that are longer than max allowed size for328 802.3 frames (1518/1522) */329 __be64 RFrmTooLong;330 /* Count frames received with PCS error */331 __be64 PCS;332 333 /* Transmit frames with a length of 64 octets */334 __be64 T64_prio_0;335 __be64 T64_prio_1;336 __be64 T64_prio_2;337 __be64 T64_prio_3;338 __be64 T64_prio_4;339 __be64 T64_prio_5;340 __be64 T64_prio_6;341 __be64 T64_prio_7;342 __be64 T64_novlan;343 __be64 T64_loopbk;344 /* Transmit frames with a length of 65 to 127 octets. */345 __be64 T127_prio_0;346 __be64 T127_prio_1;347 __be64 T127_prio_2;348 __be64 T127_prio_3;349 __be64 T127_prio_4;350 __be64 T127_prio_5;351 __be64 T127_prio_6;352 __be64 T127_prio_7;353 __be64 T127_novlan;354 __be64 T127_loopbk;355 /* Transmit frames with a length of 128 to 255 octets */356 __be64 T255_prio_0;357 __be64 T255_prio_1;358 __be64 T255_prio_2;359 __be64 T255_prio_3;360 __be64 T255_prio_4;361 __be64 T255_prio_5;362 __be64 T255_prio_6;363 __be64 T255_prio_7;364 __be64 T255_novlan;365 __be64 T255_loopbk;366 /* Transmit frames with a length of 256 to 511 octets */367 __be64 T511_prio_0;368 __be64 T511_prio_1;369 __be64 T511_prio_2;370 __be64 T511_prio_3;371 __be64 T511_prio_4;372 __be64 T511_prio_5;373 __be64 T511_prio_6;374 __be64 T511_prio_7;375 __be64 T511_novlan;376 __be64 T511_loopbk;377 /* Transmit frames with a length of 512 to 1023 octets */378 __be64 T1023_prio_0;379 __be64 T1023_prio_1;380 __be64 T1023_prio_2;381 __be64 T1023_prio_3;382 __be64 T1023_prio_4;383 __be64 T1023_prio_5;384 __be64 T1023_prio_6;385 __be64 T1023_prio_7;386 __be64 T1023_novlan;387 __be64 T1023_loopbk;388 /* Transmit frames with a length of 1024 to 1518 octets */389 __be64 T1518_prio_0;390 __be64 T1518_prio_1;391 __be64 T1518_prio_2;392 __be64 T1518_prio_3;393 __be64 T1518_prio_4;394 __be64 T1518_prio_5;395 __be64 T1518_prio_6;396 __be64 T1518_prio_7;397 __be64 T1518_novlan;398 __be64 T1518_loopbk;399 /* Counts transmit frames with a length of 1519 to 1522 bytes */400 __be64 T1522_prio_0;401 __be64 T1522_prio_1;402 __be64 T1522_prio_2;403 __be64 T1522_prio_3;404 __be64 T1522_prio_4;405 __be64 T1522_prio_5;406 __be64 T1522_prio_6;407 __be64 T1522_prio_7;408 __be64 T1522_novlan;409 __be64 T1522_loopbk;410 /* Transmit frames with a length of 1523 to 1548 octets */411 __be64 T1548_prio_0;412 __be64 T1548_prio_1;413 __be64 T1548_prio_2;414 __be64 T1548_prio_3;415 __be64 T1548_prio_4;416 __be64 T1548_prio_5;417 __be64 T1548_prio_6;418 __be64 T1548_prio_7;419 __be64 T1548_novlan;420 __be64 T1548_loopbk;421 /* Counts transmit frames with a length of 1549 to MTU bytes */422 __be64 T2MTU_prio_0;423 __be64 T2MTU_prio_1;424 __be64 T2MTU_prio_2;425 __be64 T2MTU_prio_3;426 __be64 T2MTU_prio_4;427 __be64 T2MTU_prio_5;428 __be64 T2MTU_prio_6;429 __be64 T2MTU_prio_7;430 __be64 T2MTU_novlan;431 __be64 T2MTU_loopbk;432 /* Transmit frames with a length greater than MTU octets and a good CRC. */433 __be64 TGIANT_prio_0;434 __be64 TGIANT_prio_1;435 __be64 TGIANT_prio_2;436 __be64 TGIANT_prio_3;437 __be64 TGIANT_prio_4;438 __be64 TGIANT_prio_5;439 __be64 TGIANT_prio_6;440 __be64 TGIANT_prio_7;441 __be64 TGIANT_novlan;442 __be64 TGIANT_loopbk;443 /* Transmit broadcast frames with a good CRC */444 __be64 TBCAST_prio_0;445 __be64 TBCAST_prio_1;446 __be64 TBCAST_prio_2;447 __be64 TBCAST_prio_3;448 __be64 TBCAST_prio_4;449 __be64 TBCAST_prio_5;450 __be64 TBCAST_prio_6;451 __be64 TBCAST_prio_7;452 __be64 TBCAST_novlan;453 __be64 TBCAST_loopbk;454 /* Transmit multicast frames with a good CRC */455 __be64 TMCAST_prio_0;456 __be64 TMCAST_prio_1;457 __be64 TMCAST_prio_2;458 __be64 TMCAST_prio_3;459 __be64 TMCAST_prio_4;460 __be64 TMCAST_prio_5;461 __be64 TMCAST_prio_6;462 __be64 TMCAST_prio_7;463 __be64 TMCAST_novlan;464 __be64 TMCAST_loopbk;465 /* Transmit good frames that are neither broadcast nor multicast */466 __be64 TTOTG_prio_0;467 __be64 TTOTG_prio_1;468 __be64 TTOTG_prio_2;469 __be64 TTOTG_prio_3;470 __be64 TTOTG_prio_4;471 __be64 TTOTG_prio_5;472 __be64 TTOTG_prio_6;473 __be64 TTOTG_prio_7;474 __be64 TTOTG_novlan;475 __be64 TTOTG_loopbk;476 477 /* total octets of transmitted frames, including framing characters */478 __be64 TTTLOCT_prio_0;479 /* total octets of transmitted frames, not including framing characters */480 __be64 TTTLOCT_NOFRM_prio_0;481 /* ifOutOctets */482 __be64 TOCT_prio_0;483 484 __be64 TTTLOCT_prio_1;485 __be64 TTTLOCT_NOFRM_prio_1;486 __be64 TOCT_prio_1;487 488 __be64 TTTLOCT_prio_2;489 __be64 TTTLOCT_NOFRM_prio_2;490 __be64 TOCT_prio_2;491 492 __be64 TTTLOCT_prio_3;493 __be64 TTTLOCT_NOFRM_prio_3;494 __be64 TOCT_prio_3;495 496 __be64 TTTLOCT_prio_4;497 __be64 TTTLOCT_NOFRM_prio_4;498 __be64 TOCT_prio_4;499 500 __be64 TTTLOCT_prio_5;501 __be64 TTTLOCT_NOFRM_prio_5;502 __be64 TOCT_prio_5;503 504 __be64 TTTLOCT_prio_6;505 __be64 TTTLOCT_NOFRM_prio_6;506 __be64 TOCT_prio_6;507 508 __be64 TTTLOCT_prio_7;509 __be64 TTTLOCT_NOFRM_prio_7;510 __be64 TOCT_prio_7;511 512 __be64 TTTLOCT_novlan;513 __be64 TTTLOCT_NOFRM_novlan;514 __be64 TOCT_novlan;515 516 __be64 TTTLOCT_loopbk;517 __be64 TTTLOCT_NOFRM_loopbk;518 __be64 TOCT_loopbk;519 520 /* Total frames transmitted with a good CRC that are not aborted */521 __be64 TTOT_prio_0;522 /* Total number of frames transmitted with 802.1Q encapsulation */523 __be64 T1Q_prio_0;524 __be64 reserved13;525 526 __be64 TTOT_prio_1;527 __be64 T1Q_prio_1;528 __be64 reserved14;529 530 __be64 TTOT_prio_2;531 __be64 T1Q_prio_2;532 __be64 reserved15;533 534 __be64 TTOT_prio_3;535 __be64 T1Q_prio_3;536 __be64 reserved16;537 538 __be64 TTOT_prio_4;539 __be64 T1Q_prio_4;540 __be64 reserved17;541 542 __be64 TTOT_prio_5;543 __be64 T1Q_prio_5;544 __be64 reserved18;545 546 __be64 TTOT_prio_6;547 __be64 T1Q_prio_6;548 __be64 reserved19;549 550 __be64 TTOT_prio_7;551 __be64 T1Q_prio_7;552 __be64 reserved20;553 554 __be64 TTOT_novlan;555 __be64 T1Q_novlan;556 __be64 reserved21;557 558 __be64 TTOT_loopbk;559 __be64 T1Q_loopbk;560 __be64 reserved22;561 562 /* Received frames with a length greater than MTU octets and a bad CRC */563 __be32 RJBBR;564 /* Received frames with a bad CRC that are not runts, jabbers,565 or alignment errors */566 __be32 RCRC;567 /* Received frames with SFD with a length of less than 64 octets and a568 bad CRC */569 __be32 RRUNT;570 /* Received frames with a length less than 64 octets and a good CRC */571 __be32 RSHORT;572 /* Total Number of Received Packets Dropped */573 __be32 RDROP;574 /* Drop due to overflow */575 __be32 RdropOvflw;576 /* Drop due to overflow */577 __be32 RdropLength;578 /* Total of good frames. Does not include frames received with579 frame-too-long, FCS, or length errors */580 __be32 RTOTFRMS;581 /* Total dropped Xmited packets */582 __be32 TDROP;583};584 585 586#endif587