[Click] patches to build linuxmodule on 2.6.12

Beyers Cronje bcronje at gmail.com
Wed Feb 14 12:20:03 EST 2007


Hi Eddie,

Attached my config.log

Cheers

Beyers

On 2/14/07, Eddie Kohler <kohler at cs.ucla.edu> wrote:
>
> Hi Beyers,
>
> This is a configuration problem.  Those lines are protected by #if
> HAVE_NETIF_TX_LOCK, which should be false for 2.6.16.  Can you send me
> your
> config.log?
>
> Eddie
>
>
> Beyers Cronje wrote:
> > Hi Eddie,
> >
> > Just a note, the recent patch applied to todevice.cc broke compilation
> > on kernel 2.6.16.13 <http://2.6.16.13> :
> >
> > line 236 - int ok = spin_trylock_bh(&_dev->_xmit_lock);   - The
> > 2.6.16.13 <http://2.6.16.13> net_device structure still uses xmit_lock
> > and not _xmit_lock.
> >
> > line 249 - netif_tx_unlock_bh(_dev);   - netif_tx_unlock_bh is not
> > defined in 2.6.16.13 <http://2.6.16.13>
> >
> > Sorry for the lack of patch, I'm stuck in Windows atm.
> >
> > Cheers
> >
> > Beyers
> >
> >
> > On 2/14/07, *Eddie Kohler* <kohler at cs.ucla.edu
> > <mailto:kohler at cs.ucla.edu>> wrote:
> >
> >     Hi David, long time since you posted this!
> >
> >     I've added a version of this patch to our repository.  In
> particular, I
> >     changed atomic.hh ot use local_save_irq/local_restore_irq directoy.
> >
> >     The preprocessor changes confuse me.  "#if
> >     HAVE_INDIFFERENT_ALIGNMENT" should
> >     be exactly equivalent to "#ifdef HAVE_INDIFFERENT_ALIGNMENT"; the
> >     preprocessor
> >     is requried to change undefined symbols to 0.  So...?
> >
> >     The __BUILTIN_CLZ, et al., changes are a different kettle of
> fish.  We
> >     probably should only define those symbols in the kernel for certain
> >     architectures, but they ARE available in x86 kernels, or seem to
> >     be.  I don't
> >     know how to find out if a builtin is easily kernel accessible.
> >
> >     Thanks for posting the patch!
> >     Eddie
> >
> >
> >     David Claffey wrote:
> >      > I also have some minor patches I didn't post.  I made the changes
> to
> >      > build the linuxmodule on a 2.6.12 kernel running on a different
> >      > architecture (LinkGear-100 SH4 platform).  I didn't post them
> >     because I
> >      > haven't had time to comfirm my changes are correct or if there
> were a
> >      > better solution.  But maybe they are useful.
> >      >
> >      > For example, the SH4 is sensitive to alignment and I needed to
> change
> >      > some #ifs to #ifdefs for the build to work.  Now maybe I needed
> to
> >      > change how and if the macro HAVE_INDIFFERENT_ALIGNMENT is
> >     defined.  Not
> >      > sure.
> >      >
> >      > I also have a 2.6.12 kernel patch generated from the 2.6.11.6
> >     <http://2.6.11.6> that was
> >      > in CVS, if anyone needs it.
> >      >
> >      > - David
> >      >
> >      >
> >      > diff -Naur --exclude '*.orig' --exclude '*~' --exclude '#*'
> >     --exclude
> >      > CVS --exclude '.#*' click/config.h.in click-sh4/config.h.in
> >      > --- click/config.h.in    2006-03-28 10:16:58.000000000 -0500
> >      > +++ click-sh4/config.h.in    2006-04-06 13:40:42.000000000 -0400
> >      > @@ -17,6 +17,7 @@
> >      >  /* Define if PollDevice should run fast to get good benchmark
> >     numbers */
> >      >  #undef CLICK_WARP9
> >      >
> >      > +#ifndef __KERNEL__
> >      >  /* Define if you have the __builtin_clz function. */
> >      >  #undef HAVE___BUILTIN_CLZ
> >      >
> >      > @@ -34,6 +35,7 @@
> >      >
> >      >  /* Define if you have the __builtin_ffsll function. */
> >      >  #undef HAVE___BUILTIN_FFSLL
> >      > +#endif /* __KERNEL__ */
> >      >
> >      >  /* Define if the va_list type is addressable. */
> >      >  #undef HAVE_ADDRESSABLE_VA_LIST
> >      > @@ -150,8 +152,10 @@
> >      >  #endif
> >      >
> >      >  /* Define stuff under tools or a user-level driver. */
> >      > -#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
> >      > -# include <click/config-userlevel.h>
> >      > +#ifndef __KERNEL__
> >      > +# if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
> >      > +#  include <click/config-userlevel.h>
> >      > +# endif
> >      >  #endif
> >      >
> >      >  #endif /* CLICK_CONFIG_H */
> >      > diff -Naur --exclude '*.orig' --exclude '*~' --exclude '#*'
> --exclude
> >      > CVS --exclude '.#*' click/elements/tcpudp/tcprewriter.cc
> >      > click-sh4/elements/tcpudp/tcprewriter.cc
> >      > --- click/elements/tcpudp/tcprewriter.cc    2006-02-22
> >      > 02:50:07.000000000 -0500
> >      > +++ click-sh4/elements/tcpudp/tcprewriter.cc    2006-04-06
> >      > 13:40: 42.000000000 -0400
> >      > @@ -77,7 +77,7 @@
> >      >                csum_delta += ~*csum & 0xFFFF;
> >      >
> >      >            for (opt += 2; opt < end_sack; opt += 8) {
> >      > -#if HAVE_INDIFFERENT_ALIGNMENT
> >      > +#ifdef HAVE_INDIFFERENT_ALIGNMENT
> >      >                uint32_t *uopt = reinterpret_cast<uint32_t
> *>(opt);
> >      >                uopt[0] = htonl(new_ack(ntohl(uopt[0])));
> >      >                uopt[1] = htonl(new_ack(ntohl(uopt[1])));
> >      > diff -Naur --exclude '*.orig' --exclude '*~' --exclude '#*'
> >     --exclude
> >      > CVS --exclude '.#*' click/elements/userlevel/fakepcap.cc
> >      > click-sh4/elements/userlevel/fakepcap.cc
> >      > --- click/elements/userlevel/fakepcap.cc    2005-03-14
> >      > 11:55:33.000000000 -0500
> >      > +++ click-sh4/elements/userlevel/fakepcap.cc    2006-04-06
> >      > 13:40:42.000000000 -0400
> >      > @@ -98,7 +98,7 @@
> >      >      return dlt;
> >      >  }
> >      >
> >      > -#if HAVE_INDIFFERENT_ALIGNMENT
> >      > +#ifdef HAVE_INDIFFERENT_ALIGNMENT
> >      >  #define unaligned_net_short(v) (ntohs(*reinterpret_cast<const
> >      > uint16_t*>(v)))
> >      >  #define UNALIGNED_NET_SHORT_EQ(x, y) ((x) == htons((y)))
> >      >  #else
> >      > @@ -286,7 +286,7 @@
> >      >      if (!iph)
> >      >      return false;
> >      >
> >      > -#if !HAVE_INDIFFERENT_ALIGNMENT
> >      > +#ifndef HAVE_INDIFFERENT_ALIGNMENT
> >      >      // Machine may crash if we try to access 'iph'. Align it on
> >     a word
> >      >      // boundary.
> >      >      uintptr_t header_ptr = reinterpret_cast<uintptr_t>(iph);
> >      > diff -Naur --exclude '*.orig' --exclude '*~' --exclude '#*'
> --exclude
> >      > CVS --exclude '.#*' click/elements/userlevel/fromfile.cc
> >      > click-sh4/elements/userlevel/fromfile.cc
> >      > --- click/elements/userlevel/fromfile.cc    2006-01-09
> >      > 14:03:47.000000000 -0500
> >      > +++ click-sh4/elements/userlevel/fromfile.cc    2006-04-06
> >      > 13:40: 42.000000000 -0400
> >      > @@ -435,7 +435,7 @@
> >      >      if (_pos + size <= _len) {
> >      >      const uint8_t *chunk = _buffer + _pos;
> >      >      _pos += size;
> >      > -#if HAVE_INDIFFERENT_ALIGNMENT
> >      > +#ifdef HAVE_INDIFFERENT_ALIGNMENT
> >      >      return reinterpret_cast<const uint8_t *>(chunk);
> >      >  #else
> >      >      // make a copy if required for alignment
> >      > diff -Naur --exclude '*.orig' --exclude '*~' --exclude '#*'
> >     --exclude
> >      > CVS --exclude '.#*' click/include/click/atomic.hh
> >      > click-sh4/include/click/atomic.hh
> >      > --- click/include/click/atomic.hh    2006-01-05
> >     13:33:54.000000000 -0500
> >      > +++ click-sh4/include/click/atomic.hh    2006-04-06 13:40:
> >     42.000000000
> >      > -0400
> >      > @@ -8,6 +8,10 @@
> >      >  # else
> >      >  #  define CLICK_ATOMIC_VAL    __atomic_fool_gcc(&_val)
> >      >  # endif
> >      > +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
> >      > +# define __save_flags_cli(x)    local_irq_save(x)
> >      > +# define __restore_flags(x)     local_irq_restore(x)
> >      > +# endif
> >      >  # ifdef __SMP__
> >      >  #  define CLICK_ATOMIC_LOCK    "lock ; "
> >      >  # else
> >      > diff -Naur --exclude '*.orig' --exclude '*~' --exclude '#*'
> >     --exclude
> >      > CVS --exclude '.#*' click/linuxmodule/Makefile.in
> >      > click-sh4/linuxmodule/Makefile.in
> >      > --- click/linuxmodule/Makefile.in    2006-03-22
> >     15:13:54.000000000 -0500
> >      > +++ click-sh4/linuxmodule/Makefile.in    2006-04-06 13:40:
> >     42.000000000
> >      > -0400
> >      > @@ -79,7 +79,7 @@
> >      >  LINUXCFLAGS = $(shell echo "$(CFLAGS)" | sed -e
> >     s,-fno-unit-at-a-time,, \
> >      >      -e s,-Wstrict-prototypes,, -e
> >     s,-Wdeclaration-after-statement,, \
> >      >      -e s,-Wno-pointer-sign,, -e s,-fno-common,,)
> >      > -CLICKCPPFLAGS = @CPPFLAGS@ -DCLICK_LINUXMODULE
> >      > +CLICKCPPFLAGS = @CPPFLAGS@ $(CPPFLAGS) -DCLICK_LINUXMODULE
> >      >  CLICKCFLAGS = @CFLAGS_NDEBUG@
> >      >  CLICKCXXFLAGS = @CXXFLAGS_NDEBUG@
> >      >  CLICKDEPCFLAGS = -Wp,-MD,$(depfile)
> >      > @@ -106,7 +106,7 @@
> >      >
> >      >  obj-m += $(INSTALLOBJS)
> >      >
> >      > -click-objs := $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS)
> \
> >      > +click-objs = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \
> >      >      $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS)
> $(LINUXMODULE_CXX_OBJS) \
> >      >      elements.o
> >      >  proclikefs-objs := proclikefs_.o
> >      >
> >      >
> >      >
> >      > Eddie Kohler wrote:
> >      >> And thanks, also, for this!
> >      >>
> >      >> Eddie
> >      >>
> >      >>
> >      >> David Claffey wrote:
> >      >>> I have the click linuxmodule and the madwifi-ng driver running
> on
> >      >>> linux-2.6.12.   I'm using todevice() to send packets out the
> ath
> >      >>> device in monitor mode.  But this only works after adding the
> >      >>> following patch:
> >      >>> --- click/elements/linuxmodule/todevice.cc
> >      >>> +++ tmp/elements/linuxmodule/todevice.cc
> >      >>> @@ -383,6 +383,12 @@
> >      >>>       skb_put(skb1, 60 - skb1->len);
> >      >>>       }
> >      >>>
> >      >>> +    skb1->dev = _dev;
> >      >>> +
> >      >>>       int ret;
> >      >>>   #if HAVE_LINUX_POLLING
> >      >>>       if (_dev->polling > 0)
> >      >>>     ret = _dev->tx_queue(_dev, skb1);
> >      >>>      else
> >      >>> #endif
> >      >>>     {
> >      >>>         ret = _dev->hard_start_xmit(skb1, _dev);
> >      >>>         _hard_start++;
> >      >>>     }
> >      >>>
> >      >>> Todevice() passes the skb to ieee80211_hardstart(struct sk_buff
> >     *skb,
> >      >>> struct net_device *dev) which then calls
> >      >>> ieee80211_monitor_encap(struct ieee80211vap *vap, struct
> sk_buff
> >      >>> *skb).  The problem arises when ieee80211_monitor_encap()
> >     references
> >      >>> skb->dev->type with skb->dev NULL. Can anyone suggest which
> >     function
> >      >>> should set skb->dev, todevice or ieee80211_hardstart?
> >      >>>
> >      >>> - David
> >      >>> _______________________________________________
> >      >>> click mailing list
> >      >>> click at amsterdam.lcs.mit.edu <mailto:click at amsterdam.lcs.mit.edu
> >
> >      >>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
> >     <https://amsterdam.lcs.mit.edu/mailman/listinfo/click>
> >      >>
> >     _______________________________________________
> >     click mailing list
> >     click at amsterdam.lcs.mit.edu <mailto:click at amsterdam.lcs.mit.edu>
> >     https://amsterdam.lcs.mit.edu/mailman/listinfo/click
> >
> >
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: config.zip
Type: application/zip
Size: 17531 bytes
Desc: not available
Url : https://amsterdam.lcs.mit.edu/pipermail/click/attachments/20070214/0ab08a16/config-0001.zip


More information about the click mailing list