add sierra-directip, a package based on the latest DirectIP capable sierra wireless drivers + some fixes
SVN-Revision: 28635
This commit is contained in:
		
							
								
								
									
										41
									
								
								package/sierra-directip/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								package/sierra-directip/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| # | ||||
| # Copyright (C) 2006-2010 OpenWrt.org | ||||
| # | ||||
| # This is free software, licensed under the GNU General Public License v2. | ||||
| # See /LICENSE for more information. | ||||
| # | ||||
|  | ||||
| include $(TOPDIR)/rules.mk | ||||
| include $(INCLUDE_DIR)/kernel.mk | ||||
|  | ||||
| PKG_NAME:=sierra-directip | ||||
| PKG_RELEASE:=10 | ||||
|  | ||||
| include $(INCLUDE_DIR)/package.mk | ||||
|  | ||||
| define KernelPackage/usb-sierrawireless-directip | ||||
|   SUBMENU:=USB Support | ||||
|   DEPENDS:=+kmod-usb-serial +kmod-usb-net | ||||
|   TITLE:=Updated Sierra Wireless drivers for DirectIP | ||||
|   FILES:= \ | ||||
|   	$(PKG_BUILD_DIR)/sierra.ko \ | ||||
|   	$(PKG_BUILD_DIR)/sierra_net.ko | ||||
|   AUTOLOAD:=$(call AutoLoad,60,sierra sierra_net) | ||||
| endef | ||||
|  | ||||
| define Build/Prepare | ||||
| 	mkdir -p $(PKG_BUILD_DIR) | ||||
| 	$(CP) ./src/* $(PKG_BUILD_DIR)/ | ||||
| 	$(Build/Patch) | ||||
| endef | ||||
|  | ||||
| define Build/Compile | ||||
| 	$(MAKE) -C "$(LINUX_DIR)" \ | ||||
| 		CROSS_COMPILE="$(TARGET_CROSS)" \ | ||||
| 		ARCH="$(LINUX_KARCH)" \ | ||||
| 		SUBDIRS="$(PKG_BUILD_DIR)" \ | ||||
| 		EXTRA_CFLAGS="$(BUILDFLAGS)" \ | ||||
| 		modules | ||||
| endef | ||||
|  | ||||
| $(eval $(call KernelPackage,usb-sierrawireless-directip)) | ||||
							
								
								
									
										22
									
								
								package/sierra-directip/patches/100-sierra_net_endian.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								package/sierra-directip/patches/100-sierra_net_endian.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| --- a/sierra_net.c | ||||
| +++ b/sierra_net.c | ||||
| @@ -840,8 +840,8 @@ static int sierra_net_bind(struct usbnet | ||||
|  	init_timer(&priv->sync_timer); | ||||
|  	/* verify fw attributes */ | ||||
|  	status = sierra_net_get_fw_attr(dev, &fwattr); | ||||
| -	dev_dbg(&dev->udev->dev, "Fw attr: %x\n", fwattr);  | ||||
| -	if (status == sizeof(fwattr) && (fwattr & SWI_GET_FW_ATTR_APM)) { | ||||
| +	dev_dbg(&dev->udev->dev, "Fw attr: %x\n", cpu_to_le16(fwattr)); | ||||
| +	if (status == sizeof(fwattr) && (cpu_to_le16(fwattr) & SWI_GET_FW_ATTR_APM)) { | ||||
|  /*******************************************************************************  | ||||
|   * If you want the default /sys/bus/usb/devices/.../.../power/level to be forced | ||||
|   * to auto, the following needs to be compiled in. | ||||
| @@ -856,7 +856,7 @@ static int sierra_net_bind(struct usbnet | ||||
|  		usb_disable_autosuspend(dev->udev); | ||||
|  	} | ||||
|  	/* test whether firmware supports DHCP */ | ||||
| -	if (!(status == sizeof(fwattr) && (fwattr & SWI_GET_FW_ATTR_MASK))) { | ||||
| +	if (!(status == sizeof(fwattr) && (cpu_to_le16(fwattr) & SWI_GET_FW_ATTR_MASK))) { | ||||
|  		/* found incompatible firmware version */ | ||||
|  		dev_err(&dev->udev->dev, "Incompatible driver and firmware" | ||||
|  			" versions\n"); | ||||
| @@ -0,0 +1,14 @@ | ||||
| --- a/sierra_net.c | ||||
| +++ b/sierra_net.c | ||||
| @@ -858,10 +858,7 @@ static int sierra_net_bind(struct usbnet | ||||
|  	/* test whether firmware supports DHCP */ | ||||
|  	if (!(status == sizeof(fwattr) && (cpu_to_le16(fwattr) & SWI_GET_FW_ATTR_MASK))) { | ||||
|  		/* found incompatible firmware version */ | ||||
| -		dev_err(&dev->udev->dev, "Incompatible driver and firmware" | ||||
| -			" versions\n"); | ||||
| -		kfree(priv); | ||||
| -		return -ENODEV; | ||||
| +		dev_err(&dev->udev->dev, "Warning: Firmware does not have DHCP support\n"); | ||||
|  	} | ||||
|  	/* prepare sync message from template */ | ||||
|  	memcpy(priv->sync_msg, sync_tmplate, sizeof(priv->sync_msg)); | ||||
							
								
								
									
										1
									
								
								package/sierra-directip/src/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								package/sierra-directip/src/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| obj-m := sierra.o sierra_net.o | ||||
							
								
								
									
										1409
									
								
								package/sierra-directip/src/sierra.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1409
									
								
								package/sierra-directip/src/sierra.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1123
									
								
								package/sierra-directip/src/sierra_net.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1123
									
								
								package/sierra-directip/src/sierra_net.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau