svn commit: r336610 - head/sys/dev/e1000

Marius Strobl marius at FreeBSD.org
Sun Jul 22 17:40:15 UTC 2018


Author: marius
Date: Sun Jul 22 17:40:13 2018
New Revision: 336610
URL: https://svnweb.freebsd.org/changeset/base/336610

Log:
  o In em_if_update_admin_status():
    - Don't bother calling if_setbaudrate(9) as iflib_link_state_change(9)
      takes care of that,
    - correctly check for E1000_CTRL_EXT_LINK_MODE_GMII in E1000_CTRL_EXT [1],
    - properly convert the uint16_t link_speed to a uint64_t baudrate by
      using IF_Mbps() which contains an appropriate cast [2],
    - remove the duplicate link down announcement when bootverbose isn't
      zero and bring the remaining one in line with the other link state
      messages.
  o Remove a dead store to rid in em_if_msix_intr_assign(). [3]
  o Or in the DMA coalescing Rx threshold so the other bits set in E1000_DMACR
    remain intact as intended in igb_init_dmac(). [4]
  
  Reported by:	Coverity
  CID:		1378464 [1], 1368765 [2], 1381681 [3], 1304929 [4]

Modified:
  head/sys/dev/e1000/if_em.c

Modified: head/sys/dev/e1000/if_em.c
==============================================================================
--- head/sys/dev/e1000/if_em.c	Sun Jul 22 17:10:12 2018	(r336609)
+++ head/sys/dev/e1000/if_em.c	Sun Jul 22 17:40:13 2018	(r336610)
@@ -1722,7 +1722,6 @@ em_if_update_admin_status(if_ctx_t ctx)
 {
 	struct adapter *adapter = iflib_get_softc(ctx);
 	struct e1000_hw *hw = &adapter->hw;
-	struct ifnet *ifp = iflib_get_ifp(ctx);
 	device_t dev = iflib_get_dev(ctx);
 	u32 link_check, thstat, ctrl;
 
@@ -1786,8 +1785,8 @@ em_if_update_admin_status(if_ctx_t ctx)
 			    "Full Duplex" : "Half Duplex"));
 		adapter->link_active = 1;
 		adapter->smartspeed = 0;
-		if_setbaudrate(ifp, adapter->link_speed * 1000000);
-		if ((ctrl & E1000_CTRL_EXT_LINK_MODE_GMII) &&
+		if ((ctrl & E1000_CTRL_EXT_LINK_MODE_MASK) ==
+		    E1000_CTRL_EXT_LINK_MODE_GMII &&
 		    (thstat & E1000_THSTAT_LINK_THROTTLE))
 			device_printf(dev, "Link: thermal downshift\n");
 		/* Delay Link Up for Phy update */
@@ -1802,17 +1801,15 @@ em_if_update_admin_status(if_ctx_t ctx)
 			adapter->flags |= IGB_MEDIA_RESET;
 			em_reset(ctx);
 		}
-		iflib_link_state_change(ctx, LINK_STATE_UP, ifp->if_baudrate);
+		iflib_link_state_change(ctx, LINK_STATE_UP,
+		    IF_Mbps(adapter->link_speed));
 		printf("Link state changed to up\n");
 	} else if (!link_check && (adapter->link_active == 1)) {
-		if_setbaudrate(ifp, 0);
 		adapter->link_speed = 0;
 		adapter->link_duplex = 0;
-		if (bootverbose)
-			device_printf(dev, "Link is Down\n");
 		adapter->link_active = 0;
-		iflib_link_state_change(ctx, LINK_STATE_DOWN, ifp->if_baudrate);
-		printf("link state changed to down\n");
+		iflib_link_state_change(ctx, LINK_STATE_DOWN, 0);
+		printf("Link state changed to down\n");
 	}
 	em_update_stats_counters(adapter);
 
@@ -1985,7 +1982,6 @@ em_if_msix_intr_assign(if_ctx_t ctx, int msix)
 
 	vector = 0;
 	for (i = 0; i < adapter->tx_num_queues; i++, tx_que++, vector++) {
-		rid = vector + 1;
 		snprintf(buf, sizeof(buf), "txq%d", i);
 		tx_que = &adapter->tx_queues[i];
 		iflib_softirq_alloc_generic(ctx,
@@ -2324,7 +2320,7 @@ igb_init_dmac(struct adapter *adapter, u32 pba)
 			dmac = pba - 10;
 		reg = E1000_READ_REG(hw, E1000_DMACR);
 		reg &= ~E1000_DMACR_DMACTHR_MASK;
-		reg = ((dmac << E1000_DMACR_DMACTHR_SHIFT)
+		reg |= ((dmac << E1000_DMACR_DMACTHR_SHIFT)
 		    & E1000_DMACR_DMACTHR_MASK);
 
 		/* transition to L0x or L1 if available..*/


More information about the svn-src-head mailing list