Print this page
MFV: illumos-gate@bbb9d5d65bf8372aae4b8821c80e218b8b832846
9994 cxgbe t4nex: Handle get_fl_payload() alloc failures
9995 cxgbe t4_devo_attach() should initialize ->sfl
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Approved by: Dan McDonald <danmcd@joyent.com>
Author: John Levon <john.levon@joyent.com>
9484 cxgbe should clean TX descriptors in timely manner
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Reviewed by: Ryan Zezeski <rpz@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Approved by: Dan McDonald <danmcd@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/cxgbe/t4nex/adapter.h
          +++ new/usr/src/uts/common/io/cxgbe/t4nex/adapter.h
↓ open down ↓ 272 lines elided ↑ open up ↑
 273  273          uint32_t cidx;          /* consumer idx (buffer idx, NOT hw desc idx) */
 274  274          uint32_t pidx;          /* producer idx (buffer idx, NOT hw desc idx) */
 275  275          uint32_t needed;        /* # of buffers needed to fill up fl. */
 276  276          uint32_t lowat;         /* # of buffers <= this means fl needs help */
 277  277          uint32_t pending;       /* # of bufs allocated since last doorbell */
 278  278          uint32_t offset;        /* current packet within the larger buffer */
 279  279          uint16_t copy_threshold; /* anything this size or less is copied up */
 280  280  
 281  281          uint64_t copied_up;     /* # of frames copied into mblk and handed up */
 282  282          uint64_t passed_up;     /* # of frames wrapped in mblk and handed up */
      283 +        uint64_t allocb_fail;   /* # of mblk allocation failures */
 283  284  
 284  285          TAILQ_ENTRY(sge_fl) link; /* All starving freelists */
 285  286  };
 286  287  
 287  288  /* txq: SGE egress queue + miscellaneous items */
 288  289  struct sge_txq {
 289  290          struct sge_eq eq;       /* MUST be first */
 290  291  
 291  292          struct port_info *port; /* the port this txq belongs to */
 292  293          struct tx_sdesc *sdesc; /* KVA of software descriptor ring */
↓ open down ↓ 207 lines elided ↑ open up ↑
 500  501          uint_t intr_pri;
 501  502          ddi_intr_handle_t *intr_handle;
 502  503  
 503  504          struct driver_properties props;
 504  505          kstat_t *ksp;
 505  506          kstat_t *ksp_stat;
 506  507  
 507  508          struct sge sge;
 508  509  
 509  510          struct port_info *port[MAX_NPORTS];
      511 +        ddi_taskq_t *tq[NCHAN];
 510  512          uint8_t chan_map[NCHAN];
 511  513          uint32_t filter_mode;
 512  514  
 513  515          struct l2t_data *l2t;   /* L2 table */
 514  516          struct tid_info tids;
 515  517  
 516  518          int doorbells;
 517  519          int registered_device_map;
 518  520          int open_device_map;
 519  521          int flags;
↓ open down ↓ 362 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX