| 10314 | } |
| 10315 | |
| 10316 | static void |
| 10317 | i40e_start_timecounters(struct rte_eth_dev *dev) |
| 10318 | { |
| 10319 | struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); |
| 10320 | struct i40e_adapter *adapter = dev->data->dev_private; |
| 10321 | struct rte_eth_link link; |
| 10322 | uint32_t tsync_inc_l; |
| 10323 | uint32_t tsync_inc_h; |
| 10324 | |
| 10325 | /* Get current link speed. */ |
| 10326 | i40e_dev_link_update(dev, 1); |
| 10327 | rte_eth_linkstatus_get(dev, &link); |
| 10328 | |
| 10329 | switch (link.link_speed) { |
| 10330 | case RTE_ETH_SPEED_NUM_40G: |
| 10331 | case RTE_ETH_SPEED_NUM_25G: |
| 10332 | tsync_inc_l = I40E_PTP_40GB_INCVAL & 0xFFFFFFFF; |
| 10333 | tsync_inc_h = I40E_PTP_40GB_INCVAL >> 32; |
| 10334 | break; |
| 10335 | case RTE_ETH_SPEED_NUM_10G: |
| 10336 | tsync_inc_l = I40E_PTP_10GB_INCVAL & 0xFFFFFFFF; |
| 10337 | tsync_inc_h = I40E_PTP_10GB_INCVAL >> 32; |
| 10338 | break; |
| 10339 | case RTE_ETH_SPEED_NUM_1G: |
| 10340 | tsync_inc_l = I40E_PTP_1GB_INCVAL & 0xFFFFFFFF; |
| 10341 | tsync_inc_h = I40E_PTP_1GB_INCVAL >> 32; |
| 10342 | break; |
| 10343 | default: |
| 10344 | tsync_inc_l = 0x0; |
| 10345 | tsync_inc_h = 0x0; |
| 10346 | } |
| 10347 | |
| 10348 | /* Set the timesync increment value. */ |
| 10349 | I40E_WRITE_REG(hw, I40E_PRTTSYN_INC_L, tsync_inc_l); |
| 10350 | I40E_WRITE_REG(hw, I40E_PRTTSYN_INC_H, tsync_inc_h); |
| 10351 | |
| 10352 | memset(&adapter->systime_tc, 0, sizeof(struct rte_timecounter)); |
| 10353 | memset(&adapter->rx_tstamp_tc, 0, sizeof(struct rte_timecounter)); |
| 10354 | memset(&adapter->tx_tstamp_tc, 0, sizeof(struct rte_timecounter)); |
| 10355 | |
| 10356 | adapter->systime_tc.cc_mask = I40E_CYCLECOUNTER_MASK; |
| 10357 | adapter->systime_tc.cc_shift = 0; |
| 10358 | adapter->systime_tc.nsec_mask = 0; |
| 10359 | |
| 10360 | adapter->rx_tstamp_tc.cc_mask = I40E_CYCLECOUNTER_MASK; |
| 10361 | adapter->rx_tstamp_tc.cc_shift = 0; |
| 10362 | adapter->rx_tstamp_tc.nsec_mask = 0; |
| 10363 | |
| 10364 | adapter->tx_tstamp_tc.cc_mask = I40E_CYCLECOUNTER_MASK; |
| 10365 | adapter->tx_tstamp_tc.cc_shift = 0; |
| 10366 | adapter->tx_tstamp_tc.nsec_mask = 0; |
| 10367 | } |
| 10368 | |
| 10369 | static int |
| 10370 | i40e_timesync_adjust_time(struct rte_eth_dev *dev, int64_t delta) |
no test coverage detected