Print this page
11490 SRS ring polling disabled for VLANs
11491 Want DLS bypass for VLAN traffic
11492 add VLVF bypass to ixgbe core
2869 duplicate packets with vnics over aggrs
11489 DLS stat delete and aggr kstat can deadlock
Portions contributed by: Theo Schlossnagle <jesus@omniti.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/ixgbe/ixgbe_sw.h
          +++ new/usr/src/uts/common/io/ixgbe/ixgbe_sw.h
↓ open down ↓ 83 lines elided ↑ open up ↑
  84   84  #define IXGBE_INITIALIZED               0x01
  85   85  #define IXGBE_STARTED                   0x02
  86   86  #define IXGBE_SUSPENDED                 0x04
  87   87  #define IXGBE_STALL                     0x08
  88   88  #define IXGBE_OVERTEMP                  0x20
  89   89  #define IXGBE_INTR_ADJUST               0x40
  90   90  #define IXGBE_ERROR                     0x80
  91   91  
  92   92  #define MAX_NUM_UNICAST_ADDRESSES       0x80
  93   93  #define MAX_NUM_MULTICAST_ADDRESSES     0x1000
       94 +#define MAX_NUM_VLAN_FILTERS            0x40
       95 +
  94   96  #define IXGBE_INTR_NONE                 0
  95   97  #define IXGBE_INTR_MSIX                 1
  96   98  #define IXGBE_INTR_MSI                  2
  97   99  #define IXGBE_INTR_LEGACY               3
  98  100  
  99  101  #define IXGBE_POLL_NULL                 -1
 100  102  
 101  103  #define MAX_COOKIE                      18
 102  104  #define MIN_NUM_TX_DESC                 2
 103  105  
↓ open down ↓ 276 lines elided ↑ open up ↑
 380  382                  uint32_t        high;
 381  383                  uint32_t        low;
 382  384          } reg;
 383  385          struct {
 384  386                  uint8_t         set;
 385  387                  uint8_t         group_index;
 386  388                  uint8_t         addr[ETHERADDRL];
 387  389          } mac;
 388  390  } ixgbe_ether_addr_t;
 389  391  
      392 +/*
      393 + * The list of VLANs an Rx group will accept.
      394 + */
      395 +typedef struct ixgbe_vlan {
      396 +        list_node_t             ixvl_link;
      397 +        uint16_t                ixvl_vid;   /* The VLAN ID */
      398 +        uint_t                  ixvl_refs;  /* Number of users of this VLAN */
      399 +} ixgbe_vlan_t;
      400 +
 390  401  typedef enum {
 391  402          USE_NONE,
 392  403          USE_COPY,
 393  404          USE_DMA
 394  405  } tx_type_t;
 395  406  
 396  407  typedef struct ixgbe_tx_context {
 397  408          uint32_t                hcksum_flags;
 398  409          uint32_t                ip_hdr_len;
 399  410          uint32_t                mac_hdr_len;
↓ open down ↓ 182 lines elided ↑ open up ↑
 582  593          uint32_t                stat_exceed_pkt;
 583  594  
 584  595          uint64_t                stat_rbytes;
 585  596          uint64_t                stat_ipackets;
 586  597  
 587  598          mac_ring_handle_t       ring_handle;
 588  599          uint64_t                ring_gen_num;
 589  600  
 590  601          struct ixgbe            *ixgbe;         /* Pointer to ixgbe struct */
 591  602  } ixgbe_rx_ring_t;
      603 +
 592  604  /*
 593  605   * Software Receive Ring Group
 594  606   */
 595  607  typedef struct ixgbe_rx_group {
 596  608          uint32_t                index;          /* Group index */
 597  609          mac_group_handle_t      group_handle;   /* call back group handle */
 598  610          struct ixgbe            *ixgbe;         /* Pointer to ixgbe struct */
      611 +        boolean_t               aupe;           /* AUPE bit */
      612 +        list_t                  vlans;          /* list of VLANs to allow */
 599  613  } ixgbe_rx_group_t;
 600  614  
 601  615  /*
 602  616   * structure to map interrupt cleanup to msi-x vector
 603  617   */
 604  618  typedef struct ixgbe_intr_vector {
 605  619          struct ixgbe *ixgbe;    /* point to my adapter */
 606  620          ulong_t rx_map[BT_BITOUL(MAX_RX_QUEUE_NUM)];    /* bitmap of rx rings */
 607  621          int     rxr_cnt;        /* count rx rings */
 608  622          ulong_t tx_map[BT_BITOUL(MAX_TX_QUEUE_NUM)];    /* bitmap of tx rings */
↓ open down ↓ 46 lines elided ↑ open up ↑
 655  669          uint32_t                num_rx_rings;   /* Number of rx rings in use */
 656  670          uint32_t                rx_ring_size;   /* Rx descriptor ring size */
 657  671          uint32_t                rx_buf_size;    /* Rx buffer size */
 658  672          boolean_t               lro_enable;     /* Large Receive Offload */
 659  673          uint64_t                lro_pkt_count;  /* LRO packet count */
 660  674          /*
 661  675           * Receive Groups
 662  676           */
 663  677          ixgbe_rx_group_t        *rx_groups;     /* Array of rx groups */
 664  678          uint32_t                num_rx_groups;  /* Number of rx groups in use */
      679 +        uint32_t                rx_def_group;   /* Default Rx group index */
 665  680  
 666  681          /*
 667  682           * Transmit Rings
 668  683           */
 669  684          ixgbe_tx_ring_t         *tx_rings;      /* Array of tx rings */
 670  685          uint32_t                num_tx_rings;   /* Number of tx rings in use */
 671  686          uint32_t                tx_ring_size;   /* Tx descriptor ring size */
 672  687          uint32_t                tx_buf_size;    /* Tx buffer size */
 673  688  
 674  689          boolean_t               tx_ring_init;
↓ open down ↓ 33 lines elided ↑ open up ↑
 708  723          boolean_t               watchdog_start;
 709  724          timeout_id_t            watchdog_tid;
 710  725  
 711  726          boolean_t               unicst_init;
 712  727          uint32_t                unicst_avail;
 713  728          uint32_t                unicst_total;
 714  729          ixgbe_ether_addr_t      unicst_addr[MAX_NUM_UNICAST_ADDRESSES];
 715  730          uint32_t                mcast_count;
 716  731          struct ether_addr       mcast_table[MAX_NUM_MULTICAST_ADDRESSES];
 717  732  
      733 +        boolean_t               vlft_enabled; /* VLAN filtering enabled? */
      734 +        boolean_t               vlft_init;    /* VLAN filtering initialized? */
      735 +
 718  736          ulong_t                 sys_page_size;
 719  737  
 720  738          boolean_t               link_check_complete;
 721  739          hrtime_t                link_check_hrtime;
 722  740          ddi_periodic_t          periodic_id; /* for link check timer func */
 723  741  
 724  742          /*
 725  743           * LED related constants.
 726  744           */
 727  745          boolean_t               ixgbe_led_active;
↓ open down ↓ 198 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX