Print this page
4431 igb support for I354
4616 igb has uninitialized kstats

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/e1000api/e1000_i210.c
          +++ new/usr/src/uts/common/io/e1000api/e1000_i210.c
↓ open down ↓ 744 lines elided ↑ open up ↑
 745  745                          break;
 746  746                  case e1000_media_type_copper:
 747  747                  default:
 748  748                          *data = ID_LED_DEFAULT_I210;
 749  749                          break;
 750  750                  }
 751  751          }
 752  752  out:
 753  753          return ret_val;
 754  754  }
      755 +
      756 +/**
      757 + *  __e1000_access_xmdio_reg - Read/write XMDIO register
      758 + *  @hw: pointer to the HW structure
      759 + *  @address: XMDIO address to program
      760 + *  @dev_addr: device address to program
      761 + *  @data: pointer to value to read/write from/to the XMDIO address
      762 + *  @read: boolean flag to indicate read or write
      763 + **/
      764 +static s32 __e1000_access_xmdio_reg(struct e1000_hw *hw, u16 address,
      765 +                                    u8 dev_addr, u16 *data, bool read)
      766 +{
      767 +        s32 ret_val = E1000_SUCCESS;
      768 +
      769 +        DEBUGFUNC("__e1000_access_xmdio_reg");
      770 +
      771 +        ret_val = hw->phy.ops.write_reg(hw, E1000_MMDAC, dev_addr);
      772 +        if (ret_val)
      773 +                return ret_val;
      774 +
      775 +        ret_val = hw->phy.ops.write_reg(hw, E1000_MMDAAD, address);
      776 +        if (ret_val)
      777 +                return ret_val;
      778 +
      779 +        ret_val = hw->phy.ops.write_reg(hw, E1000_MMDAC, E1000_MMDAC_FUNC_DATA |
      780 +                                                         dev_addr);
      781 +        if (ret_val)
      782 +                return ret_val;
      783 +
      784 +        if (read)
      785 +                ret_val = hw->phy.ops.read_reg(hw, E1000_MMDAAD, data);
      786 +        else
      787 +                ret_val = hw->phy.ops.write_reg(hw, E1000_MMDAAD, *data);
      788 +        if (ret_val)
      789 +                return ret_val;
      790 +
      791 +        /* Recalibrate the device back to 0 */
      792 +        ret_val = hw->phy.ops.write_reg(hw, E1000_MMDAC, 0);
      793 +        if (ret_val)
      794 +                return ret_val;
      795 +
      796 +        return ret_val;
      797 +}
      798 +
      799 +/**
      800 + *  e1000_read_xmdio_reg - Read XMDIO register
      801 + *  @hw: pointer to the HW structure
      802 + *  @addr: XMDIO address to program
      803 + *  @dev_addr: device address to program
      804 + *  @data: value to be read from the EMI address
      805 + **/
      806 +s32 e1000_read_xmdio_reg(struct e1000_hw *hw, u16 addr, u8 dev_addr, u16 *data)
      807 +{
      808 +        DEBUGFUNC("e1000_read_xmdio_reg");
      809 +
      810 +        return __e1000_access_xmdio_reg(hw, addr, dev_addr, data, TRUE);
      811 +}
      812 +
      813 +/**
      814 + *  e1000_write_xmdio_reg - Write XMDIO register
      815 + *  @hw: pointer to the HW structure
      816 + *  @addr: XMDIO address to program
      817 + *  @dev_addr: device address to program
      818 + *  @data: value to be written to the XMDIO address
      819 + **/
      820 +s32 e1000_write_xmdio_reg(struct e1000_hw *hw, u16 addr, u8 dev_addr, u16 data)
      821 +{
      822 +        DEBUGFUNC("e1000_read_xmdio_reg");
      823 +
      824 +        return __e1000_access_xmdio_reg(hw, addr, dev_addr, &data, FALSE);
      825 +}
      826 +
      827 +
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX