Date: Mon, 23 Apr 2007 09:01:51 GMT From: Kip Macy <kmacy@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 118650 for review Message-ID: <200704230901.l3N91pr1088024@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=118650 Change 118650 by kmacy@kmacy_vt-x:opentoe_init on 2007/04/23 09:01:40 move more offload functionality out from underneath "notyet" now that l2t is largely implemented Affected files ... .. //depot/projects/opentoe/sys/dev/cxgb/cxgb_offload.c#7 edit .. //depot/projects/opentoe/sys/dev/cxgb/cxgb_offload.h#7 edit .. //depot/projects/opentoe/sys/dev/cxgb/cxgb_toedev.h#5 edit Differences ... ==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_offload.c#7 (text+ko) ==== @@ -69,6 +69,7 @@ #include <dev/cxgb/cxgb_offload.h> #include <net/if_vlan_var.h> +#include <net/route.h> /* * XXX @@ -481,7 +482,7 @@ } static void -dummy_neigh_update(struct toedev *dev, struct ifnet *neigh) +dummy_neigh_update(struct toedev *dev, struct rtentry *neigh) { } @@ -551,7 +552,7 @@ req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_TID_RELEASE, tid)); } -#ifdef notyet + static void t3_process_tid_release_list(void *data, int pending) { @@ -573,7 +574,7 @@ } mtx_unlock(&td->tid_release_lock); } -#endif + /* use ctx as a next pointer in the tid release list */ void cxgb_queue_tid_release(struct toedev *tdev, unsigned int tid) @@ -584,7 +585,7 @@ mtx_lock(&td->tid_release_lock); p->ctx = (void *)td->tid_release_list; td->tid_release_list = p; -#if 0 +#ifdef notyet if (!p->ctx) schedule_work(&td->tid_release_task); #endif @@ -888,7 +889,7 @@ } static void -neigh_connect(struct neighbour *neigh) +neigh_connect(struct ifnet *neigh) { struct hh_cache *hh; @@ -1189,18 +1190,17 @@ } void -cxgb_neigh_update(struct ifnet *ifp) +cxgb_neigh_update(struct rtentry *rt) { - if (is_offloading(ifp)) { - struct toedev *tdev = TOEDEV(ifp); + if (is_offloading(rt->rt_ifp)) { + struct toedev *tdev = TOEDEV(rt->rt_ifp); BUG_ON(!tdev); - t3_l2t_update(tdev, ifp); + t3_l2t_update(tdev, rt); } } -#if 0 static void set_l2t_ix(struct toedev *tdev, u32 tid, struct l2t_entry *e) { @@ -1226,7 +1226,7 @@ } void -cxgb_redirect(struct dst_entry *old, struct dst_entry *new) +cxgb_redirect(struct rtentry *old, struct rtentry *new) { struct ifnet *olddev, *newdev; struct tid_info *ti; @@ -1236,8 +1236,8 @@ struct l2t_entry *e; struct toe_tid_entry *te; - olddev = old->neighbour->dev; - newdev = new->neighbour->dev; + olddev = old->rt_ifp; + newdev = new->rt_ifp; if (!is_offloading(olddev)) return; if (!is_offloading(newdev)) { @@ -1248,13 +1248,13 @@ tdev = TOEDEV(olddev); BUG_ON(!tdev); if (tdev != TOEDEV(newdev)) { - log(LOG_WARNING "%s: Redirect to different " + log(LOG_WARNING, "%s: Redirect to different " "offload device ignored.\n", __FUNCTION__); return; } /* Add new L2T entry */ - e = t3_l2t_get(tdev, new->neighbour, new->neighbour->dev->if_port); + e = t3_l2t_get(tdev, new, ((struct port_info *)new->rt_ifp->if_softc)->port); if (!e) { log(LOG_ERR, "%s: couldn't allocate new l2t entry!\n", __FUNCTION__); @@ -1277,7 +1277,7 @@ } l2t_release(L2DATA(tdev), e); } -#endif + /* * Allocate a chunk of memory using kmalloc or, if that fails, vmalloc. * The allocated memory is cleared. @@ -1298,7 +1298,7 @@ free(addr, M_DEVBUF); } -#ifdef notyet + /* * Allocate and initialize the TID tables. Returns 0 on success. */ @@ -1343,7 +1343,7 @@ } return 0; } -#endif + static void free_tid_maps(struct tid_info *t) { @@ -1374,7 +1374,6 @@ int cxgb_offload_activate(struct adapter *adapter) { -#ifdef notyet struct toedev *dev = &adapter->tdev; int natids, err; struct toe_data *t; @@ -1435,8 +1434,7 @@ out_free: free(t, M_DEVBUF); return err; -#endif - return (EOPNOTSUPP); + } void ==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_offload.h#7 (text+ko) ==== @@ -79,11 +79,9 @@ void (*add) (struct toedev *); void (*remove) (struct toedev *); cxgb_cpl_handler_func *handlers; -#ifdef notyet - int (*redirect)(void *ctx, struct dst_entry *old, - struct dst_entry *new, + int (*redirect)(void *ctx, struct rtentry *old, + struct rtentry *new, struct l2t_entry *l2t); -#endif TAILQ_ENTRY(cxgb_client) client_entry; }; @@ -252,10 +250,8 @@ void *cxgb_alloc_mem(unsigned long size); void cxgb_free_mem(void *addr); -void cxgb_neigh_update(struct ifnet *ifp); -#if 0 -void cxgb_redirect(struct dst_entry *old, struct dst_entry *new); -#endif +void cxgb_neigh_update(struct rtentry *rt); +void cxgb_redirect(struct rtentry *old, struct rtentry *new); int process_rx(struct toedev *dev, struct mbuf **m, int n); int attach_toedev(struct toedev *dev); void detach_toedev(struct toedev *dev); ==== //depot/projects/opentoe/sys/dev/cxgb/cxgb_toedev.h#5 (text+ko) ==== @@ -59,7 +59,7 @@ /* * XXX point to ARP list entry */ - void (*neigh_update)(struct toedev *dev, struct ifnet *ifp); + void (*neigh_update)(struct toedev *dev, struct rtentry *rt); void *priv; /* driver private data */ void *l2opt; /* optional layer 2 data */ void *l3opt; /* optional layer 3 data */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200704230901.l3N91pr1088024>