MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ixgbe_dev_rx_init

Function ixgbe_dev_rx_init

dpdk/drivers/net/ixgbe/ixgbe_rxtx.c:5106–5278  ·  view source on GitHub ↗

* Initializes Receive Unit. */

Source from the content-addressed store, hash-verified

5104 * Initializes Receive Unit.
5105 */
5106int __rte_cold
5107ixgbe_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 /*

Callers 1

ixgbe_dev_startFunction · 0.85

Calls 5

ixgbe_set_rscFunction · 0.85
ixgbe_set_rx_functionFunction · 0.85

Tested by

no test coverage detected