Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Oct 2015 20:37:30 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r289386 - stable/10/sys/dev/e1000
Message-ID:  <201510152037.t9FKbUVI034115@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Thu Oct 15 20:37:30 2015
New Revision: 289386
URL: https://svnweb.freebsd.org/changeset/base/289386

Log:
  if_lem: Bring over the missing pieces from -HEAD to make NIC_PARAVIRT work.
  
  The paravirt support for the driver and netmap code was already MFCed,
  but the adapter and ifnet API bits weren't.
  
  This was backported from -HEAD by Eric Melville <eric@freebsd.org>.
  
  Submitted by:	eric
  Sponsored by:	Norse Corp, Inc.

Modified:
  stable/10/sys/dev/e1000/if_lem.c
  stable/10/sys/dev/e1000/if_lem.h

Modified: stable/10/sys/dev/e1000/if_lem.c
==============================================================================
--- stable/10/sys/dev/e1000/if_lem.c	Thu Oct 15 20:36:04 2015	(r289385)
+++ stable/10/sys/dev/e1000/if_lem.c	Thu Oct 15 20:37:30 2015	(r289386)
@@ -951,7 +951,7 @@ lem_start_locked(struct ifnet *ifp)
 	if (adapter->num_tx_desc_avail <= EM_TX_OP_THRESHOLD)
 		ifp->if_drv_flags |= IFF_DRV_OACTIVE;
 #ifdef NIC_PARAVIRT
-	if (if_getdrvflags(ifp) & IFF_DRV_OACTIVE && adapter->csb &&
+	if ((ifp->if_drv_flags & IFF_DRV_OACTIVE) && adapter->csb &&
 	    adapter->csb->guest_csb_on &&
 	    !(adapter->csb->guest_need_txkick & 1))  {
 		adapter->csb->guest_need_txkick = 1;

Modified: stable/10/sys/dev/e1000/if_lem.h
==============================================================================
--- stable/10/sys/dev/e1000/if_lem.h	Thu Oct 15 20:36:04 2015	(r289385)
+++ stable/10/sys/dev/e1000/if_lem.h	Thu Oct 15 20:37:30 2015	(r289386)
@@ -265,6 +265,13 @@
 #define PICOSECS_PER_TICK	20833
 #define TSYNC_PORT		319 /* UDP port for the protocol */
 
+#ifdef NIC_PARAVIRT
+#define E1000_PARA_SUBDEV 0x1101    /* special id */
+#define E1000_CSBAL 0x02830         /* csb phys. addr. low */
+#define E1000_CSBAH 0x02834         /* csb phys. addr. hi */
+#include <net/paravirt.h>
+#endif
+
 /*
  * Bus dma allocation structure used by
  * e1000_dma_malloc and e1000_dma_free.
@@ -437,6 +444,15 @@ struct adapter {
 	boolean_t       pcix_82544;
 	boolean_t       in_detach;
 
+#ifdef NIC_PARAVIRT
+	struct em_dma_alloc csb_mem;
+	struct paravirt_csb *csb;
+	uint32_t rx_retries;
+	uint32_t tdt_csb_count;
+	uint32_t tdt_reg_count;
+	uint32_t tdt_int_count;
+	uint32_t guest_need_kick_count;
+#endif
 
 	struct e1000_hw_stats stats;
 };



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510152037.t9FKbUVI034115>