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