From owner-svn-src-user@FreeBSD.ORG Tue Apr 17 16:57:52 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 593D01065675; Tue, 17 Apr 2012 16:57:52 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3A58F8FC14; Tue, 17 Apr 2012 16:57:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q3HGvq1n090829; Tue, 17 Apr 2012 16:57:52 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q3HGvqZD090825; Tue, 17 Apr 2012 16:57:52 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201204171657.q3HGvqZD090825@svn.freebsd.org> From: Navdeep Parhar Date: Tue, 17 Apr 2012 16:57:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r234387 - user/np/toe_iwarp/sys/netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Apr 2012 16:57:52 -0000 Author: np Date: Tue Apr 17 16:57:51 2012 New Revision: 234387 URL: http://svn.freebsd.org/changeset/base/234387 Log: Replacement for the old arp_update_event. This one allows you to track state changes of an llentry. Modified: user/np/toe_iwarp/sys/netinet/if_ether.c user/np/toe_iwarp/sys/netinet/if_ether.h user/np/toe_iwarp/sys/netinet/in.c Modified: user/np/toe_iwarp/sys/netinet/if_ether.c ============================================================================== --- user/np/toe_iwarp/sys/netinet/if_ether.c Tue Apr 17 16:28:22 2012 (r234386) +++ user/np/toe_iwarp/sys/netinet/if_ether.c Tue Apr 17 16:57:51 2012 (r234387) @@ -180,6 +180,17 @@ arptimer(void *arg) callout_active(&lle->la_timer)) { callout_stop(&lle->la_timer); LLE_REMREF(lle); + + if (lle->la_flags != LLE_DELETED) { + int evt; + + if (lle->la_flags & LLE_VALID) + evt = LLENTRY_EXPIRED; + else + evt = LLENTRY_TIMEDOUT; + EVENTHANDLER_INVOKE(lle_event, lle, evt); + } + pkts_dropped = llentry_free(lle); ARPSTAT_ADD(dropped, pkts_dropped); ARPSTAT_INC(timeouts); @@ -312,7 +323,7 @@ arpresolve(struct ifnet *ifp, struct rte } retry: IF_AFDATA_RLOCK(ifp); - la = lla_lookup(LLTABLE(ifp), flags, dst); + la = *lle = lla_lookup(LLTABLE(ifp), flags, dst); IF_AFDATA_RUNLOCK(ifp); if ((la == NULL) && ((flags & LLE_EXCLUSIVE) == 0) && ((ifp->if_flags & (IFF_NOARP | IFF_STATICARP)) == 0)) { @@ -344,7 +355,6 @@ retry: la->la_preempt--; } - *lle = la; error = 0; goto done; } @@ -727,6 +737,7 @@ match: la->la_flags |= LLE_VALID; EVENTHANDLER_INVOKE(arp_update_event, la); + EVENTHANDLER_INVOKE(lle_event, la, LLENTRY_RESOLVED); if (!(la->la_flags & LLE_STATIC)) { int canceled; Modified: user/np/toe_iwarp/sys/netinet/if_ether.h ============================================================================== --- user/np/toe_iwarp/sys/netinet/if_ether.h Tue Apr 17 16:28:22 2012 (r234386) +++ user/np/toe_iwarp/sys/netinet/if_ether.h Tue Apr 17 16:57:51 2012 (r234387) @@ -122,9 +122,19 @@ void arp_ifinit2(struct ifnet *, struct void arp_ifscrub(struct ifnet *, uint32_t); #include +/* XXX: can be retired once OFED code is updated to use lle_event */ typedef void (*llevent_arp_update_fn)(void *, struct llentry *); EVENTHANDLER_DECLARE(arp_update_event, llevent_arp_update_fn); +enum { + LLENTRY_RESOLVED, + LLENTRY_TIMEDOUT, + LLENTRY_DELETED, + LLENTRY_EXPIRED, +}; +typedef void (*lle_event_fn)(void *, struct llentry *, int); +EVENTHANDLER_DECLARE(lle_event, lle_event_fn); + #endif #endif Modified: user/np/toe_iwarp/sys/netinet/in.c ============================================================================== --- user/np/toe_iwarp/sys/netinet/in.c Tue Apr 17 16:28:22 2012 (r234386) +++ user/np/toe_iwarp/sys/netinet/in.c Tue Apr 17 16:57:51 2012 (r234387) @@ -1470,6 +1470,7 @@ in_lltable_lookup(struct lltable *llt, u LLE_WLOCK(lle); lle->la_flags = LLE_DELETED; EVENTHANDLER_INVOKE(arp_update_event, lle); + EVENTHANDLER_INVOKE(lle_event, lle, LLENTRY_DELETED); LLE_WUNLOCK(lle); #ifdef DIAGNOSTIC log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle);