New on the list, first question

Cyril HAENEL chaenel at free.fr
Mon Nov 5 15:16:22 EST 2007


Dan,

Thank you for your help. I just begin the modification.

For the DECLARE_MAC_BUF, it was easy, I just put

/*
 *      Display a 6 byte device address (MAC) in a readable format.
 */
#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
extern char *print_mac(char *buf, const u8 *addr);
#define DECLARE_MAC_BUF(var) char var[18] __maybe_unused

in the file include/linux/if_ether.h

Ok for set_freezable(), I just delete this function call. It seems to 
not be very important.

My last compilation problem is for the get_sset_count : in the header 
file of my kernel, I have a get_stats_count, but no get_sset_count. In 
the last kernel, a comment say that get_stats_count is obsolete.

So I tryed to replace in ethtool.c the new functions 
libertas_ethtool_get_stats and libertas_ethtool_get_sset_count by the 
old one (libertas_ethtool_get_stats and libertas_ethtool_get_stats_count).
I hope it will works.

The driver compile OK, now I just need to modify the code as you told me 
for skb->dev

Regards,
Cyril


Dan Williams a écrit :

>On Mon, 2007-11-05 at 17:19 +0100, Cyril HAENEL wrote:
>  
>
>>Dan,
>>
>>This morning I looked in detail.
>>It seems that the kernel I use doesn't need a lot of thing to accept
>>the last libertas driver. I deleted all lines which cause error, until
>>the compilation was OK.
>>The driver just need :
>>
>>DECLARE_MAC_BUF()
>>set_freezable()
>>
>>And one field is missing in the "ethtool_ops" structure :
>>get_sset_count
>>
>>I prefer to not switch to the 2.6.24-rc1 kernel, thus I have 2
>>solutions : backport the driver to my kernel (2.6.19.3) or add the 2
>>    
>>
>
>If you are using 2.6.19 I believe you'll also need to ensure that
>skb->dev is set before eth_type_trans() in libertas_upload_rx_packet(),
>otherwise you'll panic.  In later kernels (I think 2.6.22 and later)
>eth_type_trans() sets skb->dev for you.
>
>void libertas_upload_rx_packet(wlan_private * priv, struct sk_buff *skb)
>{
>	lbs_deb_rx("skb->data %p\n", skb->data);
>
>	if (priv->adapter->monitormode != WLAN_MONITOR_OFF) {
>		skb->protocol = eth_type_trans(skb, priv->rtap_net_dev);
>+		skb->dev = priv->rtap_net_dev;
>	} else {
>-		if (priv->mesh_dev && IS_MESH_FRAME(skb))
>+		if (priv->mesh_dev && IS_MESH_FRAME(skb)) {
>			skb->protocol = eth_type_trans(skb, priv->mesh_dev);
>+			skb->dev = priv->mesh_dev;
>-		else
>+		} else {
>			skb->protocol = eth_type_trans(skb, priv->dev);
>+			skb->dev = priv->dev;
>+		}
>	}
>	skb->ip_summed = CHECKSUM_UNNECESSARY;
>	netif_rx(skb);
>}
>
>Dan
>
>  
>
>> or 3 thing which are missing in my kernel (DECLARE_MAC_BUF,
>>set_freezable, get_sset_count).
>>
>>I think the easiest is to backport the driver to my kernel ?
>>
>>Regards,
>>Cyril
>>
>>
>>
>>Dan Williams a écrit : 
>>    
>>
>>>On Sun, 2007-11-04 at 20:53 +0100, Cyril HAENEL wrote:
>>>  
>>>      
>>>
>>>>Hi all,
>>>>
>>>>I work on an embedded project (blackfin arch), which use a marvell 8385 
>>>>wifi module (CF interface).
>>>>Some month ago I dowloaded the libertas driver tree, but I stopped to 
>>>>work on the project, no enough time...
>>>>
>>>>Yesterday I worked on the project again, and I have succesfully compiled 
>>>>the driver as a module, loaded it in the kernel, loaded the firmware, 
>>>>and eth0 appeared.
>>>>But now I want to continue to work with the last driver version, because 
>>>>it seem there is patch to appply to have the driver working without 
>>>>crashes on the blackfin arch.
>>>>
>>>>My problem is that I can't found the solution to download the last 
>>>>driver. When I use git, I get a complete kernel, but without the last 
>>>>version of the libertas driver, because there is just the usb support.
>>>>
>>>>Someone can explain me how to get the last libertas driver sources ?
>>>>    
>>>>        
>>>>
>>>We're fully merged now, so I'd suggest using 2.6.24-rc1 sources.
>>>Backports to 2.6.19 and more recent aren't really that hard, and consist
>>>mainly of (from memory):
>>>
>>>1) class_dev changes in main.c
>>>2) setting skb->dev in the RX path for < 2.6.22 in rx.c
>>>3) replace DECLARE_MACBUF or whatever it is with MAC_ARG/MAC_FMT from
>>>ieee80211.h (a few places)
>>>4) set_freezable() is new with 2.6.23 or something (main.c)
>>>5) possibly add in the defs for radiotap flags
>>>
>>>It shouldn't be more than 50 LoC change to backport to 2.6.19 even.
>>>Earlier than that, I don't know.  It shouldn't be too hard to look at
>>>the git diffs and figure out what needs changing, if you have specific
>>>issues I can try to go back and dig up some bits.
>>>
>>>Dan
>>>
>>>
>>>
>>>_______________________________________________
>>>libertas-dev mailing list
>>>libertas-dev at lists.infradead.org
>>>http://lists.infradead.org/mailman/listinfo/libertas-dev
>>>
>>>
>>>  
>>>      
>>>
>>-- 
>>
>>Cyril Haenel
>>Registered Linux User #332632
>>    
>>
>
>
>_______________________________________________
>libertas-dev mailing list
>libertas-dev at lists.infradead.org
>http://lists.infradead.org/mailman/listinfo/libertas-dev
>  
>

-- 

Cyril Haenel
Registered Linux User #332632




More information about the libertas-dev mailing list