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

Function ngbe_dev_link_update_share

dpdk/drivers/net/ngbe/ngbe_ethdev.c:1900–1979  ·  view source on GitHub ↗

return 0 means link status changed, -1 means not changed */

Source from the content-addressed store, hash-verified

1898
1899/* return 0 means link status changed, -1 means not changed */
1900int
1901ngbe_dev_link_update_share(struct rte_eth_dev *dev,
1902 int wait_to_complete)
1903{
1904 struct ngbe_hw *hw = ngbe_dev_hw(dev);
1905 struct rte_eth_link link;
1906 u32 link_speed = NGBE_LINK_SPEED_UNKNOWN;
1907 u32 lan_speed = 0;
1908 bool link_up;
1909 int err;
1910 int wait = 1;
1911 u32 reg;
1912
1913 memset(&link, 0, sizeof(link));
1914 link.link_status = RTE_ETH_LINK_DOWN;
1915 link.link_speed = RTE_ETH_SPEED_NUM_NONE;
1916 link.link_duplex = RTE_ETH_LINK_HALF_DUPLEX;
1917 link.link_autoneg = !(dev->data->dev_conf.link_speeds &
1918 ~RTE_ETH_LINK_SPEED_AUTONEG);
1919
1920 hw->mac.get_link_status = true;
1921
1922 /* check if it needs to wait to complete, if lsc interrupt is enabled */
1923 if (wait_to_complete == 0 || dev->data->dev_conf.intr_conf.lsc != 0)
1924 wait = 0;
1925
1926 err = hw->mac.check_link(hw, &link_speed, &link_up, wait);
1927 if (err != 0) {
1928 link.link_speed = RTE_ETH_SPEED_NUM_NONE;
1929 link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
1930 return rte_eth_linkstatus_set(dev, &link);
1931 }
1932
1933 if (!link_up)
1934 return rte_eth_linkstatus_set(dev, &link);
1935
1936 link.link_status = RTE_ETH_LINK_UP;
1937 link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
1938
1939 switch (link_speed) {
1940 default:
1941 case NGBE_LINK_SPEED_UNKNOWN:
1942 link.link_speed = RTE_ETH_SPEED_NUM_NONE;
1943 break;
1944
1945 case NGBE_LINK_SPEED_10M_FULL:
1946 link.link_speed = RTE_ETH_SPEED_NUM_10M;
1947 lan_speed = 0;
1948 break;
1949
1950 case NGBE_LINK_SPEED_100M_FULL:
1951 link.link_speed = RTE_ETH_SPEED_NUM_100M;
1952 lan_speed = 1;
1953 break;
1954
1955 case NGBE_LINK_SPEED_1GB_FULL:
1956 link.link_speed = RTE_ETH_SPEED_NUM_1G;
1957 lan_speed = 2;

Callers 1

ngbe_dev_link_updateFunction · 0.85

Calls 6

ngbe_dev_hwFunction · 0.85
memsetFunction · 0.85
rte_eth_linkstatus_setFunction · 0.85
wr32mFunction · 0.50
rd32Function · 0.50
wr32Function · 0.50

Tested by

no test coverage detected