diff options
Diffstat (limited to 'drivers/net/usb/cdc_eem.c')
| -rw-r--r-- | drivers/net/usb/cdc_eem.c | 30 | 
1 files changed, 12 insertions, 18 deletions
diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c index 5f3b97668e6..f7180f8db39 100644 --- a/drivers/net/usb/cdc_eem.c +++ b/drivers/net/usb/cdc_eem.c @@ -14,12 +14,10 @@   * GNU General Public License for more details.   *   * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA + * along with this program; if not, see <http://www.gnu.org/licenses/>.   */  #include <linux/module.h> -#include <linux/init.h>  #include <linux/netdevice.h>  #include <linux/etherdevice.h>  #include <linux/ctype.h> @@ -31,6 +29,7 @@  #include <linux/usb/cdc.h>  #include <linux/usb/usbnet.h>  #include <linux/gfp.h> +#include <linux/if_vlan.h>  /* @@ -92,7 +91,8 @@ static int eem_bind(struct usbnet *dev, struct usb_interface *intf)  	/* no jumbogram (16K) support for now */ -	dev->net->hard_header_len += EEM_HEAD + ETH_FCS_LEN; +	dev->net->hard_header_len += EEM_HEAD + ETH_FCS_LEN + VLAN_HLEN; +	dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;  	return 0;  } @@ -190,7 +190,7 @@ static int eem_rx_fixup(struct usbnet *dev, struct sk_buff *skb)  		/*  		 * EEM packet header format: -		 * b0..14:	EEM type dependant (Data or Command) +		 * b0..14:	EEM type dependent (Data or Command)  		 * b15:		bmType  		 */  		header = get_unaligned_le16(skb->data); @@ -243,8 +243,12 @@ static int eem_rx_fixup(struct usbnet *dev, struct sk_buff *skb)  			 *  - suspend: peripheral ready to suspend  			 *  - response: suggest N millisec polling  			 *  - response complete: suggest N sec polling +			 * +			 * Suspend is reported and maybe heeded.  			 */  			case 2:		/* Suspend hint */ +				usbnet_device_suggests_idle(dev); +				continue;  			case 3:		/* Response hint */  			case 4:		/* Response complete hint */  				continue; @@ -340,7 +344,7 @@ next:  static const struct driver_info eem_info = {  	.description =	"CDC EEM Device", -	.flags =	FLAG_ETHER, +	.flags =	FLAG_ETHER | FLAG_POINTTOPOINT,  	.bind =		eem_bind,  	.rx_fixup =	eem_rx_fixup,  	.tx_fixup =	eem_tx_fixup, @@ -367,20 +371,10 @@ static struct usb_driver eem_driver = {  	.disconnect =	usbnet_disconnect,  	.suspend =	usbnet_suspend,  	.resume =	usbnet_resume, +	.disable_hub_initiated_lpm = 1,  }; - -static int __init eem_init(void) -{ -	return usb_register(&eem_driver); -} -module_init(eem_init); - -static void __exit eem_exit(void) -{ -	usb_deregister(&eem_driver); -} -module_exit(eem_exit); +module_usb_driver(eem_driver);  MODULE_AUTHOR("Omar Laazimani <omar.oberthur@gmail.com>");  MODULE_DESCRIPTION("USB CDC EEM");  | 
