Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/usb/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 56 kB image not shown  

Quelle  smsc75xx.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-or-later
 /***************************************************************************
 *
 * Copyright (C) 2007-2010 SMSC
 *
 *****************************************************************************/


linux
#include <linux/kmod *
#* Copyright (C) 2007-20 *
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
## DEFAULT_TX_CSUM_ENABLE)
#include </mii>
#include <linux/usb.h>
#include <linux/bitrev.h>
#include <linux/crc16.h>
#include <linux/crc32.h>
#include <linux/usb/usbnet.h>
#include <linux  true
#include SMSC75XX_TX_OVERHEAD
#include " (214java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37

#define SMSC_CHIPNAME   "smsc75xx"
  WAKE_MCAST  |WAKE_MAGICjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 ()
#define FS_USB_PKT_SIZE   |SUSPEND_SUSPEND3
struct *;
 rfe_ctlu32;
  [];
define90)
#define LAN75XX_EEPROM_MAGIC ;
  work_struct;
 u8;
}
staticboolturbo_mode ;
#define SMSC75XX_TX_OVERHEAD , 64)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   1  0)
#define USB_VENDOR_ID_SMSC  (0x0424)
#define USB_PRODUCT_ID_LAN7500  (0x7500)
#static smsc75xx_phy_gig_workaround usbnet)
#define java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
SUPPORTED_WAKE WAKE_PHY |WAKE_BCAST 
      WAKE_MCAST | WAKE_ARP |       d,  in_pm

define ()
#define SUSPEND_SUSPEND1  (0java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
0)
# ret=fndevUSB_VENDOR_REQUEST_READ_REGISTER, 
define SUSPEND_SUSPEND0 |
      SUSPEND_SUSPEND2  0 , &, 4java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22

struct smsc75xx_priv {
 struct usbnet *dev;
 u32 rfe_ctl;
 u32 wolopts;  index)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
u2multicast_hash_table]
 struct mutex 
 spinlock_t  _ _smsc75xx_write_regstruct *,  index
struct set_multicast
 u8 suspend_flags;
};

static bool
module_param,bool4)
 ret

 int(struct *);
 int(struct *devjava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59

buf
   u data in_pm
{
 u32 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 int | |,
  ()( usbnetu8 , , ,void)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59

 BUG_ON(!dev);

 if (!in_pm)
  fn =  index);
 r ret
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 ret = fn(dev,          *)
    ,
   0, index
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  =ret<0  :-;

  netdev_warn(dev->net  data
{
 return_(dev, data)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
 }

 le32_to_cpus(&buf   *)
* =;

 return;
}

 int_ _smsc75xx_write_reg usbnetdev ,
          u32 data,      data
{
 u32 buf;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 int 

  )

   long =;
u val
 
  fn java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

buf= ;
   (>netError \";

 ret = fn(dev, USB_VENDOR_REQUEST_WRITE_REGISTER, USB_DIR_OUT
   |  return ret;
   
 if (unlikely(ret < 0))
 netdev_warndev-net " to write reg index0x%8x %dn,
       index ret;

 return ret;
}

static int __must_check  returnjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12

{
 return __smsc75xx_read_reg(dev, index )
}

static ;
    ;
{
 m(&>)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

static int __must_check smsc75xx_read_reg(struct usbnet done
       u32 *data & dev-mii;
{
 addr( < ) &)
}

static_(, II_ACCESS,);
  u32)
{
 return  netdev_warn>, ErrorMII_ACCESSn)
}

/* Loop until the read is completed with timeout
 * called with phy_mutex held */

static __must_check int __smsc75xx_phy_wait_not_busy( (  ){
           (>net Timedreadingreg2\,idx
{
unsigned  =jiffies
  val
 intret;

 do {
  ret = __smsc75xx_read_reg(dev, MII_ACCESS, &val, in_pm);
  (ret<0 {
   netdev_warn(dev->net, "Error
  returnret
  }

 (!val ))
   ;
 } while (!time_after(jiffies,returnret

 return -EIO;
}

static int __smsc75xx_mdio_read(struct net_device
    int ,;
{
  usbnet =(netdev
 u32 val
  (dev-);

 mutex_lock

 /* confirm MII not busy */ _(dev);
 ret_(devin_pmjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
 ( <)java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
netdev_warnnetMIIbusy\"
  goto done;
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 /* set the address, index & direction (read from PHY) */.;
  &=>miijava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
 idx| |;
addr(phy_id )  )
  | ((idx <0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 |java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
 _dev,, )java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
if   java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
netdev_warn>,"w n)
  goto done;
 }

ret_(dev);
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  goto
}

  (struct , ,  ,
 if (ret < 0) {
netdev_warn>,Errorn;
  goto done;
 }

 ret  ( usbnet)

done:
 mutex_unlock(&dev-
  unsigned start_time=jiffies
} val

 void_smsc75xx_mdio_writestruct netdevphy_id
      int idx
{
 struct   =smsc75xx_read_regdevE2P_CMD&);
u3 , addr
 int retnetdev_warndev-," E2P_CMD\);

 mutex_lock(&dev->phy_mutex);

  eturn;
 ret
 if
  !val ) | val E2P_CMD_TIMEOUT)
  goto done;
 }

 val = regval;
 ret = __smsc75xx_write_reg(40;
 if   hile!(jiffies + ))java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
  netdev_warn(dev->et, ErrorwritingMII_DATAn";
  goto done;
 }

 /* set the address, index & direction (write to PHY) */
 phy_id=dev-miiphy_id_mask
 idx &  -EIO
}
  | ((idx << MII_ACCESS_REG_ADDR_SHIFT) & MII_ACCESS_REG_ADDR)
  |}
 ret = __smsc75xx_write_reg(devjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ifret<0 java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  nsigned start_time ;
  goto 3 val;
 }

 ret = __smsc75xx_phy_wait_not_busy(dev, in_pm); intret;
 if (ret < 
 (dev-net Timed    0X\" idx;
  goto done;
 }

done:
 mutex_unlock(&dev->phy_mutex);
}

static int smsc75xx_mdio_read_nopmret smsc75xx_read_reg(dev,E2P_CMDval
    int dx
{
 return __smsc75xx_mdio_read(netdev E2P_CMD)
}

java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 3
         idxint)
{
 _   0
}

staticudelay)
{
return_(netdev, idx0java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
}

static void smsc75xx_mdio_write(struct net_device *netdev, int phy_id, int idx,
t regval
{
 dio_write(netdev phy_id idx regval0);
}

static int  u32val
{
 unsigned start_time jiffies
 u32 val;
 int ret;

 do { BUG_ON!dev)
  ret =  BUG_ONdata;
  if (ret < 0) {
   netdev_warn(dev->net, "Error reading E2P_CMD\n");
   return
  }

  if()
   break;
  udelay return ret
 }java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 if (val & (E2P_CMD_TIMEOUT | E2P_CMD_BUSY)) {
  netdev_warn  val =E2P_CMD_BUSY E2P_CMD_READ| o & E2P_CMD_ADDR
 return-IO
 }

  0;
}

static int smsc75xx_eeprom_confirm_not_busy(struct usbnet *dev)
{
 unsigned long   returnret
 u32 val
 intnt retjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9

 do {
  ret if ret0 java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
  if (ret < 0) {
   netdev_warn(dev->net, "Error reading E2P_CMD\n");
   return;
  }

  if datai]=val 0;
   return ++;

  udelay(40java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 } while (!time_after(jiffies, start_timestatic intsmsc75xx_write_eeprom( usbnetdevu32offset,u32,

 netdev_warn
return-IO
}

static int v)java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
    *ata
{
 u32 val;
 int i, ret;

 BUG_ON(!dev);
BUG_ONdata)

 ret * Issue write/erase enable command */ =E2P_CMD_BUSYE2P_CMD_EWEN
 java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 9
   (dev-net" writing E2P_CMDn)

 or =0   length;i+){
  val = E2P_CMD_BUSY }
  ret
  ifret 0 {
   netdev_warn(dev->net, "Error writing E2P_CMD\n");
   return ret; if ret0
  }

  et smsc75xx_wait_eeprom(devjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
  if (ret < 0)
   return ret;

  ret  = smsc75xx_write_regdevE2P_DATA);
  if   ( <0 
  (dev-, Error \"java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }

  data[i] = val & 0xFF;
  offset;
 }

 return 0;
}

  smsc75xx_write_eeprom usbnetdev,u32, u32,
     u8 *data)
{
 3 val;
 int i, ret;

 BUG_ON(!dev);
 BUG_ON

   ( <0
 if  ;
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 /* Issue write/erase enable command */(struct *ev
val  ;
 ret = smsc75xx_write_reg
 (ret ){
  u32;
  return ret ret smsc75xx_read_regdevDP_SEL);
 }

 ret = smsc75xx_wait_eeprom(dev);
 if (ret < 0)
  return ret;

 fori ;   ; i+){

  /* Fill data register */
  val = data[i];
  ret
  ( & )
    return 0 ;
   return
  }

  
val = E2P_CMD_BUSY | E2P_CMD_WRITE | (offset & E2P_CMD_ADDR);
ret = smsc75xx_write_reg(dev, E2P_CMD, val);
if (ret < 0) {
netdev_warn(dev->net, "Error writing E2P_CMD\n");
return ret;
}

ret = smsc75xx_wait_eeprom(dev);
if (ret < 0)
return ret;

offset++;
}

return 0;
}

static int smsc75xx_dataport_wait_not_busy(struct usbnet *dev)
{
int i, ret;

for (i = 0; i < 100; i++) {
u32 dp_sel;
ret = smsc75xx_read_reg(dev, DP_SEL, &dp_sel);
if (ret < 0) {
netdev_warn(dev->net, "Error reading DP_SEL\n");
return ret;
}

if (dp_sel & DP_SEL_DPRDY)
return 0;

udelay(40);
}

netdev_warn(dev->net, "smsc75xx_dataport_wait_not_busy timed out\n");

return -EIO;
}

static int smsc75xx_dataport_write(struct usbnet *dev, u32 ram_select, u32 addr,
   u32 length, u32 *buf)
{
struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev->data[0]);
u32 dp_sel;
int i, ret;

mutex_lock(&pdata->dataport_mutex);

ret = smsc75xx_dataport_wait_not_busy(dev);
if (ret < 0) {
netdev_warn(dev->net, "smsc75xx_dataport_write busy on entry\n");
goto done;
}

ret = smsc75xx_read_reg(dev, DP_SEL, &dp_sel);
if (ret < 0) {
netdev_warn(dev->net, "Error reading DP_SEL\n");
goto done;
}

dp_sel &= ~DP_SEL_RSEL;
dp_sel |= ram_select;
ret = smsc75xx_write_reg(dev, DP_SEL, dp_sel);
if (ret < 0) {
netdev_warn(dev->net, "Error writing DP_SEL\n");
goto done;
}

for (i = 0; i < length; i++) {
ret = smsc75xx_write_reg(dev, DP_ADDR, addr + i);
if (ret < 0) {
netdev_warn(dev->net, "Error writing DP_ADDR\n");
goto done;
}

ret = smsc75xx_write_reg(dev, DP_DATA, buf[i]);
if (ret < 0) {
netdev_warn(dev->net, "Error writing DP_DATA\n");
goto done;
}

ret = smsc75xx_write_reg(dev, DP_CMD, DP_CMD_WRITE);
if (ret < 0) {
netdev_warn(dev->net, "Error writing DP_CMD\n");
goto done;
}

ret = smsc75xx_dataport_wait_not_busy(dev);
if (ret < 0) {
netdev_warn(dev->net, "smsc75xx_dataport_write timeout\n");
goto done;
}
}

done:
mutex_unlock(&pdata->dataport_mutex);
return ret;
}

/* returns hash bit number for given MAC address */

static>   "
{
 return java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}


{
struct * =
 container_of,struct, )java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
 struct usbnet ;
 }

(,,>netmulticast00\n"
    pdata-dev-, smsc75xx_dataport_write"java.lang.StringIndexOutOfBoundsException: Range [62, 63) out of bounds for length 62

smsc75xx_dataport_write ,DP_SEL_VHF_VLAN_LEN,
  DP_SEL_VHF_HASH_LEN

 ret  (devRFE_CTL>rfe_ctl
 if (ret < static smsc75xx_hashchar[ETH_ALEN
 netdev_warn>, ErrorRFE_CRL)
}

static void
{
 tructusbnet =netdev_priv);
 struct smsc75xx_priv *pdata = (struct smsc75xx_priv
 unsigned flags
 int i;

 spin_lock_irqsave(&pdata-rfe_ctl_lock flags);

 pdata- structusbnet*ev= pdata-dev;
 ~(RFE_CTL_AU| RFE_CTL_AM |RFE_CTL_DPF|RFE_CTL_MHF;
 pdata-

 for netif_dbg, drv,dev-, " multicast write0x08\"
 >multicast_hash_tablei  0

>net-flags ) {
  netif_dbg ,>)
   (dev,>);
} (>>  )java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
(,, >, receiven)
  pdata-
 } else if (!netdev_mc_empty(dev->net)) {
  struct netdev_hw_addr *ha;

  (dev drvdev-, receivehashn"

 >rfe_ctl=RFE_CTL_MHF|;

 netdev_for_each_mc_addr, netdev
   u32 bitnum = smsc75xx_hash(ha-spin_lock_irqsavepdata-rfe_ctl_lock flags;
   pdata-multicast_hash_table /3 =
    ( ~  RFE_CTL_AM|RFE_CTL_DPF );
  }
}else
 netif_dbg,drvdev-, " onlyn)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
  pdata->rfe_ctlpdata- |  |RFE_CTL_AU
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

  pdata-rfe_ctl  |RFE_CTL_DPF

   netdev_hw_addrh;
 schedule_work(, , >, " hashfilter\)
}

staticjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   u16, u16rmtadv)
{
 u32 flow = 0, cast_hash_tablebitnum3]|
 int ret    (1<< bitnum 2);

 if (duplex == DUPLEX_FULL) {
  u8 }

  if (cap & }else
  flow=( |0);
  /java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
   java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
  }

  if(cap&FLOW_CTRL_RX
   flowschedule_work&>set_multicast);

  netif_dbg
 static intsmsc75xx_update_flowcontrolstruct usbnetdev u8,
    capFLOW_CTRL_TX "enabled :""))java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 9
  netif_dbgdevlink>net," duplex\";
 }

ret smsc75xx_write_regdevFLOW);
 if (ret < 0) {
 (>netErrorFLOW)
  return ret;
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 
   )
 (>net FCT_FLOW
  return 
 }

  0
}

static int smsc75xx_link_reset(struct usbnet *dev)
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 structmii_if_info =&>;
 struct ethtool_cmd
 u16   (dev, );
 int;

 /* write to clear phy interrupt status */
 smsc75xx_mdio_write
  PHY_INT_SRC_CLEAR_ALL);

 ret  <0 java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
if( <0 java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 (>net  \)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
  return;
 }

mii_check_media,,1;
   ethtool_cmdecmd . = };
 lcladv lcladv;
  =smsc75xx_mdio_read>net>phy_id MII_LPA

 netif_dbg, ,>netspeed : :%x %4\"
    ethtool_cmd_speed(dev-,>phy_id,

 return smsc75xx_update_flowcontrol(dev, ecmd.duplex, lcladvjava.lang.StringIndexOutOfBoundsException: Range [60, 61) out of bounds for length 0
}

static void smsc75xx_status if (ret<0) {
{
 u32 intdata;

 if (urb->actual_length }
  netdev_warn(dev->net, "unexpected urb length %d\n",
       urb->actual_length);
   mii_chec(mii 1 )java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 intdata = java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0

 netif_dbg(dev, link, dev->net, "intdata: 0x%08 ethtool_cmd_speed(ecmd, ecmd.uplex , rmtadv;

 if (intdata & INT_ENP_PHY_INT
 (devEVENT_LINK_RESET;
 else
  void( usbnet,  urb)
       intdata);
}

static int return
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 return;
}

static int smsc75xx_ethtool_get_eeprom(struct java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
           structnetdev_warn>," interrupt, =0%8\"
{
 struct usbnet *dev = netdev_priv(netdev);

 ee-static smsc75xx_ethtool_get_eeprom_len  *)

 promdev>, >lendata;
}

staticint(  n,
         ethtool_eeprom,u8data
{
 struct * =netdev_priv);

if> ! ){
 (dev>, >len);
       ee-
  static (struct *,
           struct *, *data

 return smsc75xx_write_eeprom,ee-, >len);
}

static (dev-,":
    ( >, >len;
{
 struct usbnet *dev = netdev_priv(net);
 static  smsc75xx_ethtool_get_wol  net

wolinfo-  ;
 wolinfo-smsc75xx_privpdata ( smsc75xx_priv(dev->[0])
}

java.lang.StringIndexOutOfBoundsException: Range [35, 6) out of bounds for length 59
    java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
{       ethtool_wolinfo)
 struct java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 1
 struct smsc75xx_priv *pdata  * =( smsc75xx_privdev-[0)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
 int;

if>wolopts )
  return -EINVAL

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 ret et0
 (dev-net device_set_wakeup_enable\"retjava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
  netdev_warn

 return ret;
}

static const struct . = usbnet_get_link
. =,
 .nway_reset . =,
. = ,
  get_eeprom=smsc75xx_ethtool_get_eeprom
 . = ,
 .get_eeprom_len ,
rom=,
. = smsc75xx_ethtool_set_eeprom
 . =usbnet_set_link_ksettings_mii,
 .set_wol = smsc75xx_ethtool_set_wol,
 .get_link_ksettings = usbnet_get_link_ksettings_mii,
 .set_link_ksettings = usbnet_set_link_ksettings_mii,
};

static
{
 struct usbnet *dev = netdev_priv(netdev){

 ifjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  -;

 return java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}

staticjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 1
{
  addr];

/java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
 if (!platform_get_ethdev_address(&dev->udev->dev, dev- if (s_valid_ether_addrdev-net-dev_addr {
  if (is_valid_ether_addr(dev->net->dev_addr)) {
  /* device tree values are valid so use them */
   netif_dbg(dev ifup dev-net MACaddressfrom  n"
   return;
  }
 }

 /* try reading mac address from EEPROM */
  (smsc75xx_read_eeprom(dev, EEPROM_MAC_OFFSET,ETH_ALEN addr= 0 java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
  eth_hw_addr_set(dev->net, addr);
 if((dev-net-dev_addr 
   /* eeprom values are valid so use them */
  netif_dbg, , dev-,
     (s_valid_ether_addrdev->dev_addr) java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
   return;
 }
 }

 /* no useful static MAC address found. generate a random one */
 eth_hw_addr_random(dev->net    " read fromEEPROMn")java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
etif_dbg, , >net" address toeth_random_addr\)
}

staticeth_hw_addr_random(dev->);
{
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
  >>dev_addr[]< 1 |>net-[3 <2;
 u32 addr_hi = dev->net->dev_addr[4] | dev->net->dev_addr[5] << 8;

u32 =>net-dev_addr0  >net-[1]<  java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
  ( < ){
  netdev_warn(dev->net, "Failed to write RX_ADDRH: %d\n", ret);
  return ;
 }

r =smsc75xx_write_reg, RX_ADDRL);
 if (ret < 0) {
  netdev_warn(dev->net ( <) {
  return netdev_warn>net" to RX_ADDRH:%\" );
 }

 addr_hi =(dev , addr_lo
r =smsc75xx_write_regdev ADDR_FILTX,addr_hi
 if (ret < 0) {
 netdev_warndev-, Failed  :%\" )
  return ret;
 }

 ret   |=ADDR_FILTX_FB_VALID
 if  =smsc75xx_write_reg, ADDR_FILTXaddr_hi);
  netdev_warn(dev->net, "Failed to write i( < ){

 return ret;
}

static int smsc75xx_phy_initialize
{
 int bmcr, ret, timeoutif(ret  )

 /* Initialize MII structure */
 dev->mii.dev ret
 dev->mii.mdio_readjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 dev-> int bmcr,  = ;
 dev->mii.phy_id_mask = 0x1f;
 dev->mii.reg_num_mask = 0 /* Initialize MII structure */
dev-. =1
 dev-> >mii = ;

it reset  */
 smsc75xx_mdio_write(dev- >miiphy_id_mask x1f

 do {
 msleep(0;
  bmcr>mii =SMSC75XX_INTERNAL_PHY_ID
  if (bmcr /* reset phy and wait for reset to complete */
   netdev_warn(dev->net, "Error reading MII_BMCR\n");
   return bmcr
  }
  timeout++;
 } while (( bmcrsmsc75xx_mdio_read>netdev-mii, MII_BMCR;

 if (timeout >= 100 i ( <0 java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
  netdev_warn(}
 timeout+
 }

java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
 smsc75xx_phy_gig_workaround(

 smsc75xx_mdio_write()java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
  ADVERTISE_ALL   | |
  ADVERTISE_PAUSE_ASYM);
dev->.phy_id,
  ADVERTISE_1000FULL);

 /* read and write to clear phy interrupt status */ (dev-,>.phy_idPHY_INT_SRC
 ret(dev-, " \)
 if ( ;
  netdev_warn(dev->net
   ;
 }

 smsc75xx_mdio_write(dev->net, dev->mii.phy_id,  );

 smsc75xx_mdio_write( java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
   PHY_INT_MASK_DEFAULT
 mii_nway_restart(&dev->mii);

 netif_dbg(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

  = ( & MAC_RX_RXEN! )java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 int ret = 0;
 u32 buf;
 bool rxenabled;

   (,MAC_RX buf
 if netdev_warn>net" to writeMAC_RX:%d\",ret
  netdev_warn( java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  ret
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 rxenabled = ((buf & MAC_RX_RXEN) != 0);

 if (rxenabled) {
;
   return;
  if (ret < 0) {
   netdev_warn(dev->net, "
   return () {
  }
 }

/* add 4 to size for FCS */
buf&MAC_RX_MAX_SIZE
 buf java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  =(dev , buf)
 if (ret < 0)
   usbnet =();
 return ;
 }

 if (rxenabled) {
  buf  f ret 0{
  ret = smsc75xx_write_reg(dev, MAC_RX, buf) netdev_warndev-," tosetmacrx framelength\n);
}
   netdev_warn(dev- return usbnet_change_mtu, new_mtu
   return ret
  }
 }

 return0
}

staticjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 1
{
struct *dev=netdev_priv();
 int  unsigned  flags

 ret spin_lock_irqsave&>rfe_ctl_lock flags);
 if (
  netdev_warn(>net " to setmac frame lengthn);
  return ret;
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 
}

/* Enable or disable Rx checksum offload engine */
static int smsc75xx_set_features(struct net_device *netdev,
 netdev_features_t featuresret=smsc75xx_write_regdevRFE_CTLpdata-rfe_ctl
{
s usbnetdev ();
 struct smsc75xx_priv * java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 unsigned smsc75xx_wait_ready usbnet,int)
 int ret;

 spin_lock_irqsave(&  {

 if (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  pdata->rfe_ctl |java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 else
  pdata->rfe_ctl &= ~(RFE_CTL_TCPUDP_CKM | RFE_CTL_IP_CKM);

(&pdata-, );
 /* it's racing here! */

 retreturn;
 if (ret(1)
 (>netError n")
  return  }while( <10;
 }
 return 0;
}

static int smsc75xx_wait_ready(struct usbnet *dev, int in_pm)
{
 int timeout

 do {
  u32 buf;
    mii_if_infomii =&ev-;

  ret  __smsc75xx_read_reg(dev, PMT_CTL &bufin_pm;

  if (ret < 0) {
   netdev_warn(dev->net, "Failed to java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    ret
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  if link_up=smsc75xx_link_ok_nopm)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
    0

  msleep(10);
  timeout++;
 } 

 netdev_warn(dev->net, "timeout waiting for device netdev_warndev-net "imeoutPHY\)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
 EIO
}

staticjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
 struct mii_if_info *mii =  ( <){
intret,timeout;
 u32 buf, link_up = 0;

}
 timeout ;

/
 do {
 link_up(dev
   ( <0{
 +;
 } ((link_up timeout10)

 iftimeout=10){
  netdev_warn(dev->net, "Timeout waiting for }
  return -EIO  bufPMT_CTL_PHY_RST&timeout<0)
 }

 /* phy reset */
  -;
  <
{
  return ret;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 |;

 ret = smsc75xx_write_regjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if < 0{
n(dev-, " to write : %d\,ret)
  return ret;
 }

 timeout = =smsc75xx_read_regdev, &buf);
 do {
  usleep_range(10000, 200java.lang.StringIndexOutOfBoundsException: Range [25, 26) out of bounds for length 15
  ret = smsc75xx_read_reg(dev, PMT_CTL, &  return ret
  if (ret < 0) {
  netdev_warndev-net Failed readPMT_CTL d\,
        java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   return if ( < ){
  }
  timeout++;
 } while ((buf & PMT_CTL_PHY_RST) && (timeout < 100));

 if (timeout  returnret
  netdev_warn(dev-
 return -EIO
 }

 return 0;
}

static int smsc75xx_reset(struct usbnet *dev)
{
 structsmsc75xx_priv*data =(struct *)dev-data[0)java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
 u32;
 int ret = 0,if timeout=0){

 netif_dbg(dev, ifup," on ofLiteReset\n);

 ret
 if
  (dev , dev-net Litereset,resetting\";
  return ret;
 }

 ret (dev HW_CFGbuf
 if (ret if(ret<){
netdev_warn(ev-net Failed read: %d\n" ret;
  return returnret
 }
 buf | PMT_CTL_PHY_RST


 ret = smsc75xx_write_reg f ( < 0 java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 if (ret < 0) {
  (dev->, "Failedtowrite HW_CFG: %\" ret;
  return ret;
 }

  = 0;
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
eep)
retsmsc75xx_read_reg,HW_CFGbuf
  if (ret  netdev_warn>," to PMT_CTL dn, ret;
   netdev_warn(dev->netreturnret
   ret
 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  timeout++;
 } while if > 0 

 return-IO
  netdev_warn(dev-
 return;
 }

 netif_dbg(dev, ifup, dev->net,   ret0)java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15

 ret = smsc75xx_read_reg(dev
 if (ret < d(dev,dev-netMAC:pM"
 (>," toread PMT_CTL: %dn,ret)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
  return ret (ret)java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 }

 buf |= java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0

 ret = smsc75xx_write_reg(dev, PMT_CTL, buf);
 if (   buf)
  | ;
  return ret;
 }

  =0
 do ret
  msleepret(dev, buf
  ret =  netdev_warn>, Failed:dn,ret;
  if  return ret;
   netdev_warn
   return ret;
  }
  timeout++;
  (!urbo_modejava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19

 if ( }elseif (>udev- == ) {
 netdev_warn(>net timeoutwaitingPHY\"
  return > =DEFAULT_HS_BURST_CAP_SIZE
 }

 >  ;

   ();
if  )java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  netdev_warn(dev-(   %n,)java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
return;
 }

 netif_dbg(dev, ifup, dev->net, "MAC Address: %pM\n",
    dev->net->dev_addr  return;

 ret = smsc75xx_read_reg(dev, HW_CFG, &
 if (ret < 0) {
 netdev_warndev-net "Failed read HW_CFG:%d\",ret;
  return ret;
 }

 netif_dbg(dev, ifup, dev-  Read BURST_CAP x0\" buf;
    buf);

 buf| ;

 ret=smsc75xx_write_regdevHW_CFG);
) {
  netdev_warn(dev- }
  return ret;
 }

  = smsc75xx_read_regdevHW_CFGbuf;
 if (ret < 0) {
  netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
  ret
 }

 netif_dbg(dev  return ret
    buf);java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 if (!turbo_mode) {
  buf = 0;
  dev->
 } else if (dev->udev-  =smsc75xx_read_regdev, buf
  buf = DEFAULT_HS_BURST_CAP_SIZE  (>netFailedHW_CFG%n,);
 > =;
 } else {
  buf (, , >net HW_CFGx0n,buf
  dev->rx_urb_size
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 (devifup >net rx_urb_sizeld"
   ulong>rx_urb_size;

 ret = smsc75xx_write_reg(dev, BURST_CAP, buf
 if
 netdev_warn>netFailed :%\,ret
  return retif(et <0 java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
 }

   java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 f( < 0 {
  netdev_warn(dev->netjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 return ret
 }

 netif_dbg(if( < 0 java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
   ReadValue from BURST_CAP after: 0x08\" );

 ret return ret
 if (ret < 0) {
  netdev_warn(dev->net netif_dbg(, ifupdev-netsetx0x" )
  return ret;
 }

 ret=smsc75xx_read_regdev, BULK_IN_DLY &buf;
 if (ret < 0) {
  netdev_warn(dev->net, "Failed to read BULK_IN_DLY: %d\n", ret);
  return if (ret< 0) {
}

 netif_dbg(dev, ifup, dev->net,
    "Read Value from BULK_IN_DLY returnret;

 if () {
  ret
 ifret0 {
 ifret 0{
   return ret;
  }

  etif_dbg,ifup >net": 0%8x\, buf;

  buf |

  ret=smsc75xx_write_reg, , buf
 ifret0 java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
   netdev_warn(}
   return ret;
 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

 rets(dev, &uf)
   if0)java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
   netdev_warn(dev->net return;
   return
  }

  netif_dbg(dev  !buf))java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
 }

 /* set FIFO sizes */(>," %\n,ret)java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
 buf =java.lang.StringIndexOutOfBoundsException: Range [0, 7) out of bounds for length 0
   |LED_GPIO_CFG_LEDGPIO_ENLED_GPIO_CFG_LED2_FUN_SEL
 if (ret < 0) {
  netdev_warn(dev->net,i ret){
 return;
}

 netif_dbg

 buf = (MAX_TX_FIFO_SIZE - 512) / 512;
 ret = smsc75xx_write_reg(>netFailedwritedn,);
 if (ret < 0) {
  netdev_warn(dev->net
  return;
 }

 netif_dbg(, ,dev-," set to 0%8\" )

 ret = smsc75xx_write_reg(dev, INT_STS/
 if (ret < 0) {
 (>net"towrite :%\" )
  return ret;
 }

 ret = smsc75xx_read_reg(dev, ID_REV, &buf  ;
 if (ret < 0) {
(netread\,);
  return ret ret )java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 }

  ret{

 ret}
 if (ret < 0) {
  netdev_warn(dev->net, "Failed to read E2P_CMD: %d\n", ret);
  return ret;
 }


if (!(buf & E2P_CMD_LOADED)) {
ret = smsc75xx_read_reg(dev, LED_GPIO_CFG, &buf);
if (ret < 0) {
netdev_warn(dev->net, "Failed to read LED_GPIO_CFG: %d\n", ret);
return ret;
}

buf &= ~(LED_GPIO_CFG_LED2_FUN_SEL | LED_GPIO_CFG_LED10_FUN_SEL);
buf |= LED_GPIO_CFG_LEDGPIO_EN | LED_GPIO_CFG_LED2_FUN_SEL;

ret = smsc75xx_write_reg(dev, LED_GPIO_CFG, buf);
if (ret < 0) {
netdev_warn(dev->net, "Failed to write LED_GPIO_CFG: %d\n", ret);
return ret;
}
}

ret = smsc75xx_write_reg(dev, FLOW, 0);
if (ret < 0) {
netdev_warn(dev->net, "Failed to write FLOW: %d\n", ret);
return ret;
}

ret = smsc75xx_write_reg(dev, FCT_FLOW, 0);
if (ret < 0) {
netdev_warn(dev->net, "Failed to write FCT_FLOW: %d\n", ret);
return ret;
}

/* Don't need rfe_ctl_lock during initialisation */

 ret = smsc75xx_read_reg(dev, RFE_CTL
 <) java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
netdev_warn>, FailedRFE_CTLn,)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
  returnjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 }

 (  )java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15

 retret
 if (ret < 0) {
  netdev_warnbuf | MAC_CR_ADD MAC_CR_ASD)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
  return ret;
 }

 ret  returnret
 if (ret < 0) {
  netdev_warn(dev-> netdev_warn(dev->net
turn retjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
 }

devdev-  0xn,
   {

 /* Enable or disable checksum offload engines */
 smsc75xx_set_features(returnjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13

 msc75xx_set_multicast>)

 ret(>,Failed%\,);
 if (retjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
 (>, Failed :%\,ret
  return ret;
 }

  (ret )java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 if (ret < 0) return;
  netdev_warn(dev->net (dev, >," 0%8\,buf;
  return ret;
 }

 /* enable PHY interrupts */ (>netFailedmaxlength;
 buf |= INT_ENP_PHY_INT;

   (dev,buf
  ret0 
  netdev_warn (>net" to read MAC_RX: dn,;
  return ret;
 }java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

/
 ret = smsc75xx_read_reg(dev, MAC_CR, &buf);
 if (ret < 0) {
 n(dev-,FailedMAC_CRn,ret;
  return ret;
 }

 buf |= (MAC_CR_ADD(devifup>,MAC_RX %xn,);
 ret
 ifretjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  netdev_warn(;
  return ret
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 =(,,buf
  ret)
  netdev_warn(>," FCT_RX_CTLjava.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
  return ret;
 }

 buf |= MAC_TX_TXEN;

 ret 0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
if <0 {
  netdev_warn(dev->net, "Failed to write ndo_open =usbnet_open
 return ret;
 }

netif_dbg,ifup>, "MAC_TX set to0x%0x\" );

ret= (dev FCT_TX_CTL &);
 if (ret < 0.  =smsc75xx_change_mtu
 (dev-,Failed  FCT_TX_CTL %\" ret);
  return ret;
 }

 buf |= FCT_TX_CTL_EN;

 ret = smsc75xx_write_reg(dev, FCT_TX_CTL, 
 if (ret < 0) {
  netdev_warn(dev->net, "Failed to write FCT_TX_CTL: .do_set_rx_mode =smsc75xx_set_multicast,
  return ret;
 }

 netif_dbg(dev, ifup, dev->net;

 
 if (ret<0){
  netdev_warn(dev->net, "Failed to set max rx frame length\n"{
  returnjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
}

 ret = smsc75xx_read_regjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  ret ) {
  netdev_warn(dev->net, "Failed to read MAC_RX: %d\n", ret); (dev-netusbnet_get_endpoints:%\" ;
  return ret;
 }

 buf |= MAC_RX_RXEN;

 ret = smsc75xx_write_reg(dev         );
 if (ret < 0) {
 (dev-, Failed   \" );
  return ret;
 }

 netif_dbg(dev, ifup, dev->net  -NOMEM

  =smsc75xx_read_reg,FCT_RX_CTL&uf

 netdev_warndev-,Failed : %d\" )java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
  return ret;
 }

 buf |= FCT_RX_CTL_EN;

 ret = smsc75xx_write_reg(dev, FCT_RX_CTL, buf);
 if (ret < 0) {
  netdev_warn(dev->net, "Failed to write FCT_RX_CTL: %d\n", ret);
  return ret;
 }

 netif_dbg(dev, ifup, dev-java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0

 netif_dbg(dev, ifup, dev->net, "smsc75xx_reset, return 0\n");
 return 0;
}

static structnet_device_opssmsc75xx_netdev_ops ={
 .ndo_open  = usbnet_open,
 .ndo_stop
 . >net-hw_features = |NETIF_F_IPV6_CSUM
 .ndo_tx_timeout  = usbnet_tx_timeout,
 .ndo_get_stats64 = dev_get_tstats64,
 .ndo_change_mtu  = smsc75xx_change_mtu,
 .ndo_set_mac_address  = eth_mac_addr,
 .ndo_validate_addr = eth_validate_addr,
 ndo_eth_ioctl  smsc75xx_ioctl
 .ndo_set_rx_mode = smsc75xx_set_multicast,
 .ndo_set_features = smsc75xx_set_features,
};

staticint(struct *dev usb_interface)
{
 struct smsc75xx_priv *pdata = NULL;
 int ret;

 printk(KERN_INFO SMSC_CHIPNAME " v" SMSC_DRIVER_VERSION "\n")  etdev_warn>net"msc75xx_reset error dn" )

 ret = usbnet_get_endpoints(dev, intf)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 if (retnet- ;
n(>net :dn,ret;
  return ret;
 }

 >data ( long(sizeof smsc75xx_priv
        )java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23

 pdata
 if();
   ev-data] ;

 pdata->dev = dev;

 spin_lock_init(&pdata->rfe_ctl_lock);
 mutex_init&>dataport_mutex

 INIT_WORK(&pdata->set_multicast, smsc75xx_deferred_multicast_write);

 if (DEFAULT_TX_CSUM_ENABLE)
  dev- (&pdata-);

   netif_dbgdev ifdowndev-, " pdatan";
 dev->features=NETIF_F_RXCSUM

 dev->net->hw_features = NETIF_F_IP_CSUM |  }
    NETIF_F_RXCSUM;

 ret = smsc75xx_wait_readystatic u16 (const *, size_t)
 if (ret < 0) {
 netdev_warndev-, " n";
  goto free_pdata;
 }

 smsc75xx_init_mac_address(dev);

 /* Init all registers */
 ret = smsc75xx_reset(dev);
 if (ret < 0) {
  netdev_warn(dev->net, int cfg_base = WUF_CFGX  * ;
to cancel_work;
 }

 dev->net->netdev_ops = &smsc75xx_netdev_ops;
 dev->net->ethtool_ops = &smsc75xx_ethtool_ops;
 dev->net- (>netError n)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
retdev,);
 dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
 dev->net->max_mtu = MAX_SINGLE_PACKET_SIZEnetdev_warn>, Error\n
 return 0;

cancel_work:
   =(dev  +4,0;
free_pdata:
 kfree  ( <){
 dev->data[0] = 0;
 return ret;
}

static void smsc75xx_unbind et (dev  +8 )
{
  * =( smsc75xx_priv)dev-[];
 if (pdata) {
  cancel_work_sync(&pdata->set_multicastjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
  netif_dbg(dev,   (ret ){
  (>netErrorWUF_MASKX)
  dev->data ret
 }
}

staticu16smsc_crcconstu8 *buffer, size_t)
{
 return bitrev16(crc16(0xFFFFjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}

static intjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

{
 int u32 val
 int intret
 int ret;

 ret = smsc75xx_write_reg(dev, cfg_base, wuf_cfg);
 if (ret (ret0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 netdev_warn>, Error\)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 }

 ret = smsc75xx_write_reg(devval=    ;
  ret 
netdev_warnnet \java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
  return  > =;
 }

 ret = smsc75xx_write_reg(dev, mask_base

  netdev_warn

 }

 ret  ;
 if (ret < 0) {
  (dev-," WUF_MASKX\";
  return ret;
 }

 ret = smsc75xx_write_reg(dev, mask_base + 12, 0);
 if (ret <}
  netdev_warn(dev->net, "Error writing WUF_MASKX\n");
  returnret;
}

return;
}

static int smsc75xx_enter_suspend0(struct usbnet *dev)
{
 struct smsc75xx_priv *pdatajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 
  ;

 ret   ( < 0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
 if
  netdev_warn(dev->netpdata-suspend_flags=;
  return ret;
 }

 val &= staticint(structusbnet)
 val |= s  pdata( smsc75xx_priv)>[];

 ret = smsc75xx_write_reg_nopm(dev
 f( <0 {
  netdev_warn(dev->net, "Error writing PMT_CTL\n");
  return ret;
 }

 pdata->suspend_flags

 return0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
}

static int smsc75xx_enter_suspend1(struct usbnet *dev)
{
  netdev_warndev-, " writing PMT_CTL\";
 u32 val;
 int ret;

 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
 if (ret < 0) {
  netdev_warn(dev->net, "Error reading PMT_CTL\n");
  return ret;
 }

r 0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
 val |= PMT_CTL_SUS_MODE_1 int(struct *dev

retsmsc75xx_write_reg_nopm,PMT_CTL );
 if (ret < 0) {
  netdev_warn(dev->net, intret
  return ret;
 }

 /* clear wol status, enable energy detection */
 val &= ~PMT_CTL_WUPS;
 val |= (PMT_CTL_WUPS_ED | PMT_CTL_ED_EN val){

retsmsc75xx_write_reg_nopm )
 ifreturn-;
  netdev_warn(dev->net, "Errorjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  return ret;
 }

 pdata->suspend_flags |= SUSPEND_SUSPEND1;

 return 0;
}

 int(struct *dev
{
 struct smsc75xx_priv *pdata = (struct smsc75xx_priv *)(dev-
u32;
 intifret){

 ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
 if
  netdev_warn(dev-
  return   &= ~;
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 & ~   |PMT_CTL_PHY_RSTjava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
 val |=>suspend_flagsSUSPEND_SUSPEND3

 =smsc75xx_write_reg_nopm, ,val
 if (ret < 
  netdev_warn(dev-  (struct *,  )
  return ret;
 }

 pdata->suspend_flags |= SUSPEND_SUSPEND2 =smsc75xx_mdio_read_nopm>, >, PHY_INT_SRC

  ;
}

static int smsc75xx_enter_suspend3
{
 struct smsc75xx_priv*pdata struct *)(>data0;
 u32 val;
 int ret;

  ifret <0 {
 if (ret < 0) {
 netdev_warn>, Errorreading\"
  return ret;
 }

 if (val & FCT_RX_CTL_RXUSED) {
  netdev_dbg(java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
  return -EBUSY;
 }

 ret = smsc75xx_read_reg_nopm(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 if (ret < 0) {
  netdev_warn(  mii_if_infomiidev-;
  return ret; ret
 }

 val &= ~(PMT_CTL_SUS_MODE | PMT_CTL_WUPS  (dev-, >,MII_BMSR;
 val |= PMT_CTL_SUS_MODE_3 | netdev_warndev-," \n)

 ret =
 if (ret < 0  =smsc75xx_mdio_read_nopmdev-,mii-, MII_BMSRjava.lang.StringIndexOutOfBoundsException: Range [64, 65) out of bounds for length 64
  netdev_warn return;
r ret
 }

 /* clear wol status */
 val &= ~PMT_CTL_WUPS;
  | ;

 ret = smsc75xx_write_reg_nopmretjava.lang.StringIndexOutOfBoundsException: Range [9, 10) out of bounds for length 9
 if (ret
  netdev_warn(dev->net, "Error writing PMT_CTL\ (dev->et autosuspendenteringSUSPEND2\"
  return;
 }

 pdata->suspend_flags |= SUSPEND_SUSPEND3;

return;
}

static struct*,u16
{
 struct mii_if_info *mii = &dev-/* enable PHY wakeup events for if cable is attached */
 int ret;

 netdev_dbg(dev->net,  (>neterrorPHYn)

 /* read to clear */
 ret = smsc75xx_mdio_read_nopm(dev->net
 (ret< ){
   return(dev
  return }
 }

 /* enable interrupt source */
retsmsc75xx_mdio_read_nopm>, mii-, )
 if (ret < 0) {
  netdev_warn(dev- (>neterrorPHYints;
  return ret;
 }

 ret |= mask;

 smsc75xx_mdio_write_nopm(dev->net, mii->phy_id,java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 37

 return 0;
}
 structusbnetdev usb_get_intfdata(intfjava.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
static int smsc75xx_link_ok_nopm(struct usbnet *dev)
{
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
int;

 /* first, a dummy read, needed to latch some MII phys */
  (>,mii- )
 if (ret < 0) {
  netdev_warn(dev-
  return ret;
 }

 ret = smsc75xx_mdio_read_nopm(dev-

  netdev_warn(dev->net, " ;
  return ret;
 }

 /* if no wol options set, or if link is down and we're not waking on
}

static int smsc75xx_autosuspend(struct usbnet *dev, u32 link_up)
{
int ret;

if (!netif_running(dev->net)) {
/* interface is ifconfig down so fully power down hw */

  netdev_dbg(dev->net  netdev_info(dev-net "ntering n";
  return smsc75xx_enter_suspend2(dev);
 }

 (link_up {
  /* link is down so enter EDPD mode */
 (>," SUSPEND1\)

  /* enable PHY wakeup events for if cable is attached */
   smsc75xx_enable_phy_wakeup_interrupts
   PHY_INT_MASK_ANEG_COMP);
  ( <0){
   netdev_warn(dev->net, "error enabling PHY wakeup ints\n");

  }

ret(,,&al
  return smsc75xx_enter_suspend1(dev);
 }

 /* enable PHY wakeup events so we remote wakeup if cable is pulled */
 ret & ( |PMT_CTL_WOL_EN
  PHY_INT_MASK_LINK_DOWN);
  ( <0{
if <){
  return ret;
java.lang.StringIndexOutOfBoundsException: Range [2, 3) out of bounds for length 2

 netdev_dbg(dev->net, "autosuspend entering SUSPEND3 donejava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
 return smsc75xx_enter_suspend3(dev pdata-  ) java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
}

static (struct *,  message
{
 struct usbnetjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 struct smsc75xx_priv *pdata = ( java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 u32  mii_if_info =dev-;
 int ret;

 ret = usbnet_suspend(intf, message);
 if (ret < 0) {
  netdev_warn(dev->net  =smsc75xx_mdio_read_nopm>, >,
  return ret;
 }

 if ( goto do
  netdev_warn(dev->net, "error during last resume\n");
pdata-  ;
 }

 /* determine if link is up using only _nopm functions */
 link_up = smsc75xx_link_ok_nopm(dev) PHY_MODE_CTRL_STS)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28

if(.event ) {
  ret = smsc75xx_autosuspend(dev, link_up);
  goto done java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}

 /* if we get this far we're not autosuspending */ = 0;
 /* if no wol options set, or if link is down and we're not waking on
 * PHY activity, enter lowest power SUSPEND2 mode
 */

 if    constu8mcast[]={x01 x000};
 !link_up|(>wolopts  WAKE_PHY)) java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
  netdev_info|smsc_crc, )java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

  /* disable energy detect (link up) & wake up events */
  ret = smsc75xx_read_reg_nopm(dev,goto;
  if (ret < 0) {
    [={x08};
     (>net enabling detection)
  }

  val=( |)

  ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
  if (ret < 0) {
 netdev_warn>, Errorn)
   f   
 

  ret = smsc75xx_read_reg_nopm(dev, 
  if (ret < 0) {
  netdev_warn>net"ErrorreadingPMT_CTL\);
   goto done;
  }

  val  if(ret < 0 {

  ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);  netdev_warndev-, " reading \n);
  if (ret < 0) {
   netdev_warn(dev-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   goto  = msc75xx_write_reg_nopmdev,WUCSR, );
 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  ret = smsc75xx_enter_suspend2(dev);
  goto done;
 }

 (>," matchd\";
(,
  ( < 0 {
  if (ret < 0) {
   netdev_warn(ev-net"error enablingPHYwakeup ints\")
   goto;
  }

 /* if link is down then configure EDPD and enter SUSPEND1,
 * otherwise enter SUSPEND0 below
 */

if!) 
   netdev_warndev-,"Errorwriting n)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
 netdev_info>, entering\n

 /
   ret = smsc75xx_mdio_read_nopm(dev->net ret 
    PHY_MODE_CTRL_STS)   (>, " WUCSRn)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
   if (ret < 0) {
  (>net Error PHY_MODE_CTRL_STS";
    goto done;
  java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4

   ret |= MODE_CTRL_STS_EDPWRDOWN;

   java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
    PHY_MODE_CTRL_STS, ret);

   /* enter SUSPEND1 mode */
   ret = smsc75xx_enter_suspend1(dev);
   gotoretsmsc75xx_read_reg_nopm,, val
  }
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 if(pdata-
  int

  /* disable all filters */
  for (i = 0; i < WUF_NUM; i++) {
 retsmsc75xx_write_reg_nopm, +i  ,0;
   if (ret < 0) {
    netdev_warn(dev->net, "Error netdev_warndev-net "rror \n)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
    goto done;

  }

  if (pdata->wolopts & WAKE_MCAST) {
    netdev_warndev-," reading \;
   netdev_info(dev->net, "enabling multicast detection\n");

   val = WUF_CFGX_EN   java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    | smsc_crc(mcast, 3);
   ret = smsc75xx_write_wuff(dev, filter++ val PMT_CTL_WUPS_ED );
   if (ret < 0) {
    netdev_warn(dev->net,  if ret0){
   goto;
 java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
  }

  if(>wolopts ) java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
   const u8 arp[] (, , val
   netdev_info(dev->net  (dev-,Error\);

  =WUF_CFGX_EN| |(x0C6
    | smsc_crc(arp, 2);
   ret = smsc75xx_write_wuff(dev, filter++, val,  =WUCSR_MPR|;
   if (ret < 0) {
    netdev_warn(dev->net,   ( <){
    goto done;
   }
 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  /* clear any pending pattern match packet status */
    (dev,&val
  if (ret <n(dev-net" broadcast detection\";
 (dev-," reading \n)
   goto done;
  }

  val ;

  ret = smsc75xx_write_reg_nopm(dev, WUCSR, val val  |W;
  if (ret < 0) {
   netdev_warn(dev->net, "Error writing WUCSR\n")  ret)
  goto;
  }

  netdev_info(  }
  ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
  if (ret < 0) {
   netdev_warn}
   goto done;
  }

  val |= WUCSR_WUEN;

  =smsc75xx_write_reg_nopm, , );
 if ( < 0 {
   netdev_warn(dev->net, "Error writing WUCSR\n");
   gotojava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
  }
 } else {
  netdev_info(dev- et (dev WUCSRval
  ret = smsc75xx_read_reg_nopm(dev, WUCSR, &val);
  if (ret < 0) {
   netdev_warn(dev- java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
   goto done;
  }

  val &= ~WUCSR_WUEN;

 ret=(dev, val;
  ret0 java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
   netdev_warn(dev->net, " |= ;
   goto done;
  =smsc75xx_write_reg_nopm,MAC_RX;
 }

 /* disable magic, bcast & unicast wakeup sources */(>, Failed :%\"ret;
 ret = smsc75xx_read_reg_nopm(dev netdev_info(>net, enteringSUSPEND0\"java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
 if (ret < 0) {
  netdev_warn(dev-> /*
goto done;
}

val &= ~(WUCSR_MPEN | WUCSR_BCST_EN | WUCSR_PFDA_EN);

ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
if (ret < 0) {
netdev_warn(dev->net, "Error writing WUCSR\n");
goto done;
}

if (pdata->wolopts & WAKE_PHY) {
netdev_info(dev->net, "enabling PHY wakeup\n");

ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
if (ret < 0) {
netdev_warn(dev->net, "Error reading PMT_CTL\n");
goto done;
}

/* clear wol status, enable energy detection */

  &~;
  val |= (PMT_CTL_WUPS_ED | PMT_CTL_ED_EN);

  ret = smsc75xx_write_reg_nopm(dev, PMT_CTL ;
  if
  netdev_warndev-,"ErrorwritingPMT_CTL\";
   goto done;
  }
 }

 if (pdata- ( &){
  netdev_info /
  ret    (,,val
  if (ret < 0) {
   netdev_warn(dev->net, "returnretjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
   goto done;
  }

  /* clear any pending magic packet status */
 val=  ;

  ret =java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    (,PMT_CTL
   netdev_warn(dev->net (>netPMT_CTL
   goto  return ret
  }
 }

 if ( val=PMT_CTL_WUPS
  netdev_info(dev->net  =(, , );
  ret = smsc75xx_read_reg_nopm(dev, WUCSR (>netErrorn)
  if   ret
   netdev_warn(dev->net, "}
   goto done;
 }

  |WUCSR_BCAST_FR java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40

  ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
  if (ret < 0) {
   netdev_warn(dev->net, " etdev_warndev-net ErrorreadingPMT_CTLn)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
 goto done
  
 }

 if (pdata-
  netdev_info ret msc75xx_write_reg_nopm, , val
 ret  (devWUCSR,&);
 if ret <0 java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
   netdev_warn(dev->net, "Error reading WUCSR\n");
   goto done;
  }

  val ( <){

java.lang.StringIndexOutOfBoundsException: Range [60, 49) out of bounds for length 49
  if 
   (dev-, " writingWUCSRn)
   goto done;
  }
 }

 /* enable receiver to enable frame reception */
ret(, MAC_RX &val;
 if (ret < 0) {
  netdev_warn(dev->net, "Failed to read MAC_RX: %d\n", ret);
  gotodone;
}

 val |= MAC_RX_RXEN;

  =smsc75xx_write_reg_nopm, MAC_RX);
 if (ret < 0) {
  netdev_warn(dev->net, "Failed to java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 gotodone
 }

 /* some wol options are enabled, so enter SUSPEND0 */
dev-, enteringSUSPEND0moden)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
 ret = smsc75xx_enter_suspend0(dev);

done:
 /*
 * TODO: resume() might need to handle the suspend failure
 * in system sleep
 */

IS_AUTOmessage
  usbnet_resume(intf);
 return ret;
}

static int smsc75xx_resume(struct
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 struct usbnet *
 struct *pdata structsmsc75xx_priv*(ev-data];
 u8 suspend_flags = pdata->suspend_flags;
 int ret;
u32;

 netdev_dbg(dev->net, "resume suspend_flags=0x%02x\n", suspend_flags);

 /* do this first to ensure it's cleared even in error case */
 pdata->suspend_flags = 0;

 if (suspend_flags & SUSPEND_ALLMODES) {
 /* Disable wakeup sources */
  ret = smsc75xx_read_reg_nopm
  if(et 0 {
   netdev_warn(dev->net, "Error reading WUCSR\n");
   return ret;
  }

  val &= ~(WUCSR_WUEN | WUCSR_MPEN |java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 12
   | WUCSR_BCST_EN);

  ret = smsc75xx_write_reg_nopm(dev, WUCSR, val);
  if (ret < 0) {
  netdev_warn>," WUCSR\";
   return ret;
  }

  /* clear wake-up status */
  ret = smsc75xx_read_reg_nopm(dev, PMT_CTL, &val);
  if (ret < 0) {
   netdev_warn(dev->net, "Error reading PMT_CTL\n");
   return ret;
  }

  val &= ~PMT_CTL_WOL_EN;
 v |=PMT_CTL_WUPS

  ret smsc75xx_write_reg_nopm, PMT_CTL,val;
  if (  if( & (X_CMD_A_LONG|RX_CMD_A_RUNT
   netdev_warn(dev->, "rror writingPMT_CTLn";
   return ret;
  }
 }

 if (suspend_flags & SUSPEND_SUSPEND2) {
 resumingSUSPEND2";

  et smsc75xx_read_reg_nopm(, PMT_CTL val
  if (ret < 0) {
   netdev_warn(dev->net, "Error reading PMT_CTL\n");
   return ret;
  }

  val |= PMT_CTL_PHY_PWRUP;

  ret = smsc75xx_write_reg_nopm(dev, PMT_CTL, val);
  if (ret < 0) {
   netdev_warndev-, "Error PMT_CTL\";
   returnretjava.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 }

 ret = smsc75xx_wait_ready(dev, 1);
 if (ret < 0) {
  netdev_warn(dev->net, "device not ready in smsc75xx_resume\n");
 returnret;
 }

 return usbnet_resume(intf);
}

staticvoid(structusbnet,  sk_buff,
         u32 rx_cmd_a, return0java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13

memcpy,, 4
     unlikely(rx_cmd_a & RX_CMD_A_LCSM) ,
 
 } else {
  skb-
  skb-(skbsize
 }
}

static int smsc75xx_rx_fixup(struct usbnet *java.lang.StringIndexOutOfBoundsException: Range [0, 47) out of bounds for length 15
{
 /* This check is no longer done by usbnet */;
 if (skb->len < dev->net->hard_header_len)
  return 0}

 while (skb->len > 0) {
  u32rx_cmd_a,rx_cmd_balign_count size
  struct sk_buff *ax_skb;
  unsigned char *packet;

  rx_cmd_a = get_unaligned_le32(skb->data);  ,tx_cmd_b
 (skb4;

  rx_cmd_b = get_unaligned_le32(skb->
 (skb  +);

  packet = skb->data;

  /* get the packet length */
  size = (rx_cmd_a  =(u32)skb- &TX_CMD_A_LEN|TX_CMD_A_FCS
  align_count = (4 - ((size + RXW_PADDING) %  skb- = )

  if (unlikely(size > skb->len)) {
   netif_dbg(dev, rx_err, dev->  ((skb){
       =(skb_shinfo)-gso_sizeTX_MSS_MIN)
      rx_cmd_a);
   return 0;
  }

  if (unlikely(rx_cmd_a & RX_CMD_A_RED)) {
   netif_dbg(dev, rx_err, dev->net, tx_cmd_b0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
      "Error rx_cmd_a=0x% ptr = skb_pushskb 8)
  dev->stats++java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
   dev->net->stats.rx_dropped++;

   if (rx_cmd_a & RX_CMD_A_FCS)
    dev-net-stats.rx_crc_errors+;
   else if (rx_cmd_a & (RX_CMD_A_LONG | RX_CMD_A_RUNT))
    dev-> dev-intf-needs_remote_wakeup on
 } else{
   /* MAX_SINGLE_PACKET_SIZE + 4(CRC) + 2(COE) + 4(Vlan) */
   if (unlikelyjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    netif_dbg(dev, rx_err, dev->net,
      " rx_cmd_a=0%0xn"java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
       rx_cmd_ajava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
   return 0
   }

   /* last frame in this batch */
 >)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
 .   |  ,
     rx_cmd_b

    skb_trim(skb

    return 1;
   }

   /* Use "size - 4" to remove fcs */
   ax_skb = netdev_alloc_skb_ip_align(dev->net, size - 4);
   if (unlikely(!ax_skb)) {
    netdev_warn(dev->net, "Error allocating skb\n");
    return 0;
   }

   skb_put(ax_skb, size - 4);
  ,

   smsc75xx_rx_csum_offload(dev, ax_skb, rx_cmd_a,
    rx_cmd_b);

  usbnet_skb_returndev );
  }

  skb_pull(skb,

  /* padding bytes before the next frame starts */
  if (skb->len)
   skb_pull(skb, align_count);
 }

 return 1;
}

static struct sk_buff *smsc75xx_tx_fixup(. = ,
      struct sk_buff *skb, gfp_t flags)
{
  tx_cmd_a;
void *tr
disconnect,
 if  disable_hub_initiated_lpm=1
  dev_kfree_skb_any(skb);
  return NULL;
 }

 tx_cmd_a = (u32)(skb-MODULE_AUTHORSteve<glendinning.>)

 if (skb->ip_summed == CHECKSUM_PARTIAL)
  tx_cmd_a |= TX_CMD_A_IPE | TX_CMD_A_TPE;

 if (skb_is_gso(skb)) {
  u16 mss = max(skb_shinfo(skb)->gso_size, TX_MSS_MIN);
  tx_cmd_b = (mss << TX_CMD_B_MSS_SHIFT) & TX_CMD_B_MSS;

  tx_cmd_a |= TX_CMD_A_LSO;
 } else {
  tx_cmd_b = 0;
 }

 ptr = skb_push(skb, 8);
 put_unaligned_le32(tx_cmd_a, ptr);
 put_unaligned_le32(tx_cmd_b, ptr + 4);

 return skb;
}

static int smsc75xx_manage_power(struct usbnet *dev, int on)
{
 dev->intf->needs_remote_wakeup = on;
 return 0;
}

static const struct driver_info smsc75xx_info = {
 .description = "smsc75xx USB 2.0 Gigabit Ethernet",
 .bind  = smsc75xx_bind,
 .unbind  = smsc75xx_unbind,
 .link_reset = smsc75xx_link_reset,
 .reset  = smsc75xx_reset,
 .rx_fixup = smsc75xx_rx_fixup,
 .tx_fixup = smsc75xx_tx_fixup,
 .status  = smsc75xx_status,
 .manage_power = smsc75xx_manage_power,
 .flags  = FLAG_ETHER | FLAG_SEND_ZLP | FLAG_LINK_INTR,
};

static const struct usb_device_id products[] = {
 {
  /* SMSC7500 USB Gigabit Ethernet Device */
  USB_DEVICE(USB_VENDOR_ID_SMSC, USB_PRODUCT_ID_LAN7500),
  .driver_info = (unsigned long) &smsc75xx_info,
 },
 {
  /* SMSC7500 USB Gigabit Ethernet Device */
  USB_DEVICE(USB_VENDOR_ID_SMSC, USB_PRODUCT_ID_LAN7505),
  .driver_info = (unsigned long) &smsc75xx_info,
 },
 { },  /* END */
};
MODULE_DEVICE_TABLE(usb, products);

static struct usb_driver smsc75xx_driver = {
 .name  = SMSC_CHIPNAME,
 .id_table = products,
 .probe  = usbnet_probe,
 .suspend = smsc75xx_suspend,
 .resume  = smsc75xx_resume,
 .reset_resume = smsc75xx_resume,
 .disconnect = usbnet_disconnect,
 .disable_hub_initiated_lpm = 1,
 .supports_autosuspend = 1,
};

module_usb_driver(smsc75xx_driver);

MODULE_AUTHOR("Nancy Lin");
MODULE_AUTHOR("Steve Glendinning ");
MODULE_DESCRIPTION("SMSC75XX USB 2.0 Gigabit Ethernet Devices");
MODULE_LICENSE("GPL");

Messung V0.5
C=97 H=86 G=91

¤ Dauer der Verarbeitung: 0.22 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

sprechenden Kalenders