* Initializes Receive Unit. */
| 5104 | * Initializes Receive Unit. |
| 5105 | */ |
| 5106 | int __rte_cold |
| 5107 | ixgbe_dev_rx_init(struct rte_eth_dev *dev) |
| 5108 | { |
| 5109 | struct ixgbe_hw *hw; |
| 5110 | struct ixgbe_rx_queue *rxq; |
| 5111 | uint64_t bus_addr; |
| 5112 | uint32_t rxctrl; |
| 5113 | uint32_t fctrl; |
| 5114 | uint32_t hlreg0; |
| 5115 | uint32_t maxfrs; |
| 5116 | uint32_t srrctl; |
| 5117 | uint32_t rdrxctl; |
| 5118 | uint32_t rxcsum; |
| 5119 | uint16_t buf_size; |
| 5120 | uint16_t i; |
| 5121 | struct rte_eth_rxmode *rx_conf = &dev->data->dev_conf.rxmode; |
| 5122 | uint32_t frame_size = dev->data->mtu + IXGBE_ETH_OVERHEAD; |
| 5123 | int rc; |
| 5124 | |
| 5125 | PMD_INIT_FUNC_TRACE(); |
| 5126 | hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); |
| 5127 | |
| 5128 | /* |
| 5129 | * Make sure receives are disabled while setting |
| 5130 | * up the RX context (registers, descriptor rings, etc.). |
| 5131 | */ |
| 5132 | rxctrl = IXGBE_READ_REG(hw, IXGBE_RXCTRL); |
| 5133 | IXGBE_WRITE_REG(hw, IXGBE_RXCTRL, rxctrl & ~IXGBE_RXCTRL_RXEN); |
| 5134 | |
| 5135 | /* Enable receipt of broadcasted frames */ |
| 5136 | fctrl = IXGBE_READ_REG(hw, IXGBE_FCTRL); |
| 5137 | fctrl |= IXGBE_FCTRL_BAM; |
| 5138 | fctrl |= IXGBE_FCTRL_DPF; |
| 5139 | fctrl |= IXGBE_FCTRL_PMCF; |
| 5140 | IXGBE_WRITE_REG(hw, IXGBE_FCTRL, fctrl); |
| 5141 | |
| 5142 | /* |
| 5143 | * Configure CRC stripping, if any. |
| 5144 | */ |
| 5145 | hlreg0 = IXGBE_READ_REG(hw, IXGBE_HLREG0); |
| 5146 | if (rx_conf->offloads & RTE_ETH_RX_OFFLOAD_KEEP_CRC) |
| 5147 | hlreg0 &= ~IXGBE_HLREG0_RXCRCSTRP; |
| 5148 | else |
| 5149 | hlreg0 |= IXGBE_HLREG0_RXCRCSTRP; |
| 5150 | |
| 5151 | /* |
| 5152 | * Configure jumbo frame support, if any. |
| 5153 | */ |
| 5154 | if (dev->data->mtu > RTE_ETHER_MTU) { |
| 5155 | hlreg0 |= IXGBE_HLREG0_JUMBOEN; |
| 5156 | maxfrs = IXGBE_READ_REG(hw, IXGBE_MAXFRS); |
| 5157 | maxfrs &= 0x0000FFFF; |
| 5158 | maxfrs |= (frame_size << 16); |
| 5159 | IXGBE_WRITE_REG(hw, IXGBE_MAXFRS, maxfrs); |
| 5160 | } else |
| 5161 | hlreg0 &= ~IXGBE_HLREG0_JUMBOEN; |
| 5162 | |
| 5163 | /* |
no test coverage detected