Print this page
4431 igb support for I354
4616 igb has uninitialized kstats
@@ -333,10 +333,34 @@
IGB_FLAG_NEED_CTX_IDX),
0xfff00000 /* mask for RXDCTL register */
};
+static adapter_info_t igb_i354_cap = {
+ /* limits */
+ 8, /* maximum number of rx queues */
+ 1, /* minimum number of rx queues */
+ 4, /* default number of rx queues */
+ 8, /* maximum number of tx queues */
+ 1, /* minimum number of tx queues */
+ 4, /* default number of tx queues */
+ 65535, /* maximum interrupt throttle rate */
+ 0, /* minimum interrupt throttle rate */
+ 200, /* default interrupt throttle rate */
+
+ /* function pointers */
+ igb_enable_adapter_interrupts_82580,
+ igb_setup_msix_82580,
+
+ /* capabilities */
+ (IGB_FLAG_HAS_DCA | /* capability flags */
+ IGB_FLAG_VMDQ_POOL |
+ IGB_FLAG_NEED_CTX_IDX),
+
+ 0xfff00000 /* mask for RXDCTL register */
+};
+
/*
* Module Initialization Functions
*/
int
@@ -571,10 +595,12 @@
* Newer models have Energy Efficient Ethernet, let's disable this by
* default.
*/
if (igb->hw.mac.type == e1000_i350)
(void) e1000_set_eee_i350(&igb->hw);
+ else if (igb->hw.mac.type == e1000_i354)
+ (void) e1000_set_eee_i354(&igb->hw);
return (DDI_SUCCESS);
attach_fail:
igb_unconfigure(devinfo, igb);
@@ -898,10 +924,13 @@
break;
case e1000_i210:
case e1000_i211:
igb->capab = &igb_i210_cap;
break;
+ case e1000_i354:
+ igb->capab = &igb_i354_cap;
+ break;
default:
return (IGB_FAILURE);
}
return (IGB_SUCCESS);
@@ -1316,10 +1345,11 @@
pba = E1000_READ_REG(hw, E1000_RXPBS);
pba &= E1000_RXPBS_SIZE_MASK_82576;
break;
case e1000_82580:
case e1000_i350:
+ case e1000_i354:
pba = E1000_READ_REG(hw, E1000_RXPBS);
pba = e1000_rxpbs_adjust_82580(pba);
break;
case e1000_i210:
case e1000_i211:
@@ -1833,10 +1863,12 @@
if (igb_check_acc_handle(igb->osdep.reg_handle) != DDI_FM_OK)
goto start_failure;
if (igb->hw.mac.type == e1000_i350)
(void) e1000_set_eee_i350(&igb->hw);
+ else if (igb->hw.mac.type == e1000_i354)
+ (void) e1000_set_eee_i354(&igb->hw);
for (i = igb->num_tx_rings - 1; i >= 0; i--)
mutex_exit(&igb->tx_rings[i].tx_lock);
for (i = igb->num_rx_rings - 1; i >= 0; i--)
mutex_exit(&igb->rx_rings[i].rx_lock);