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

Function ngbe_dev_rx_init

dpdk/drivers/net/ngbe/ngbe_rxtx.c:2826–2973  ·  view source on GitHub ↗

* Initializes Receive Unit. */

Source from the content-addressed store, hash-verified

2824 * Initializes Receive Unit.
2825 */
2826int
2827ngbe_dev_rx_init(struct rte_eth_dev *dev)
2828{
2829 struct ngbe_hw *hw;
2830 struct ngbe_rx_queue *rxq;
2831 uint64_t bus_addr;
2832 uint32_t fctrl;
2833 uint32_t hlreg0;
2834 uint32_t srrctl;
2835 uint32_t rdrxctl;
2836 uint32_t rxcsum;
2837 uint16_t buf_size;
2838 uint16_t i;
2839 struct rte_eth_rxmode *rx_conf = &dev->data->dev_conf.rxmode;
2840
2841 PMD_INIT_FUNC_TRACE();
2842 hw = ngbe_dev_hw(dev);
2843
2844 /*
2845 * Make sure receives are disabled while setting
2846 * up the Rx context (registers, descriptor rings, etc.).
2847 */
2848 wr32m(hw, NGBE_MACRXCFG, NGBE_MACRXCFG_ENA, 0);
2849 wr32m(hw, NGBE_PBRXCTL, NGBE_PBRXCTL_ENA, 0);
2850
2851 /* Enable receipt of broadcasted frames */
2852 fctrl = rd32(hw, NGBE_PSRCTL);
2853 fctrl |= NGBE_PSRCTL_BCA;
2854 wr32(hw, NGBE_PSRCTL, fctrl);
2855
2856 /*
2857 * Configure CRC stripping, if any.
2858 */
2859 hlreg0 = rd32(hw, NGBE_SECRXCTL);
2860 if (rx_conf->offloads & RTE_ETH_RX_OFFLOAD_KEEP_CRC)
2861 hlreg0 &= ~NGBE_SECRXCTL_CRCSTRIP;
2862 else
2863 hlreg0 |= NGBE_SECRXCTL_CRCSTRIP;
2864 hlreg0 &= ~NGBE_SECRXCTL_XDSA;
2865 wr32(hw, NGBE_SECRXCTL, hlreg0);
2866
2867 /*
2868 * Configure jumbo frame support, if any.
2869 */
2870 wr32m(hw, NGBE_FRMSZ, NGBE_FRMSZ_MAX_MASK,
2871 NGBE_FRMSZ_MAX(dev->data->mtu + NGBE_ETH_OVERHEAD));
2872
2873 /*
2874 * If loopback mode is configured, set LPBK bit.
2875 */
2876 hlreg0 = rd32(hw, NGBE_PSRCTL);
2877 if (hw->is_pf && dev->data->dev_conf.lpbk_mode)
2878 hlreg0 |= NGBE_PSRCTL_LBENA;
2879 else
2880 hlreg0 &= ~NGBE_PSRCTL_LBENA;
2881
2882 wr32(hw, NGBE_PSRCTL, hlreg0);
2883

Callers 1

ngbe_dev_startFunction · 0.85

Calls 7

ngbe_dev_hwFunction · 0.85
ngbe_dev_mq_rx_configureFunction · 0.85
ngbe_set_rx_functionFunction · 0.85
wr32mFunction · 0.50
rd32Function · 0.50
wr32Function · 0.50

Tested by

no test coverage detected