The networking gurus can comment on the internals of your patch better than
I can.  Just a few style notes though:

> +#ifdef CONFIG_TCP_OFFLOAD
> +#define NETIF_F_TCPIP_OFFLOAD        65536   /* Can offload TCP/IP */
> +#endif

No need to protect this inside CONFIG_* option

> +/* TOE API */
> +#ifdef CONFIG_TCP_OFFLOAD
> +#define TCPDIAG_OFFLOAD 5
> +#endif

Ditto

> +#ifdef CONFIG_TCP_OFFLOAD
> +struct toe_funcs;
> +#endif

Ditto

> +#ifdef CONFIG_TCP_OFFLOAD
> +#include <linux/toedev.h>
> +#endif

Include linux/toedev.h unconditionally.  Have it handle the !CONFIG_TCP_OFFLOAD
case itself by declaring noop macros for things like toe_neigh_update().
This way you can remove a lot of the #ifdef's you've sprinkled all over the
.c files

> +#define boot_phase 0

Some explaination here?  It looks like something left over from development.

> +#ifndef __raise_softirq_irqoff
> +#define __raise_softirq_irqoff(nr) __cpu_raise_softirq(smp_processor_id(), 
> nr)
> +#endif

What is this needed for?

> +static int toedev_init(void);

This forward declaration seems to be only needed for the "boot_phase" thing
above, so if that goes this can go as well.

> +/*
> + * Allocate a unique index for a TOE device.  We keep the index within 30 
> bits

Maybe look at lib/idr.c to handle this?

> +     struct toedev *dev = kmalloc(sizeof(struct toedev), GFP_KERNEL);
> +
> +     if (dev) {
> +             memset(dev, 0, sizeof(struct toedev));

Minor nitpick (that some might disagree with)... I usually prefer:

        struct toedev *dev = kmalloc(sizeof(*dev), GFP_KERNEL);

> +int toe_receive_skb(struct toedev *dev, struct sk_buff **skb, int n)
> +{
> +     int i;

"n" and "i" should probably be "unsigned int"

> +#ifdef CONFIG_TCP_OFFLOAD
> +             tcp_listen_offload(sk);
> +#endif

Another example of something that could be an empty macro in a .h file for
the !CONFIG_TCP_OFFLOAD case.

> +#ifndef CONFIG_TCP_OFFLOAD
> +static
> +#endif

Don't do this... just make it non-static unconditionally.  It's not worth
the ugliness.  Same applies to other places.

> +#ifndef CONFIG_TCP_OFFLOAD
> +static
> +#endif
> +__inline__ void __tcp_inherit_port(struct sock *sk, struct sock *child)
>  {
>       struct tcp_bind_hashbucket *head =
>                               &tcp_bhash[tcp_bhashfn(inet_sk(child)->num)];
> @@ -351,7 +357,10 @@
>       }
>  }

Things that are inline and are now going to be shared really need to just
remain "static inline" and move to a header file probably

> +#ifdef CONFIG_TCP_OFFLOAD
> +     if (tcp_connect_offload(sk))
> +             return 0;
> +#endif

Just another example of the kind of #ifdef that doesn't belong in the .c
files.  If the !CONFIG_TCP_OFFLOAD case just had

        #define tcp_connect_offload(sk)         (0)

then you can skip the #ifdef

> +#ifndef CONFIG_TCP_OFFLOAD
>                       LIMIT_NETDEBUG(printk(KERN_DEBUG "TCP: drop open "
>                                             "request from %u.%u."
>                                             "%u.%u/%u\n",
>                                             NIPQUAD(saddr),
>                                             ntohs(skb->h.th->source)));
> +#else
> +                     NETDEBUG(if (net_ratelimit()) \
> +                                     printk(KERN_DEBUG "TCP: drop open "
> +                                            "request from %u.%u."
> +                                            "%u.%u/%u\n", \
> +                                            NIPQUAD(saddr),
> +                                            ntohs(skb->h.th->source)));
> +#endif

Huh?  What about TOE requires changes to printk ratelimiting?

-Mitch
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to