Hi Jakub,
I love your patch! Yet something to improve:
[auto build test ERROR on net-next/master]
url:
https://github.com/0day-ci/linux/commits/Jakub-Kicinski/net-constify-netd...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
75082e7f46809432131749f4ecea66864d0f7438
config: m68k-allyesconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
#
https://github.com/0day-ci/linux/commit/ea5373ba01c0915c0dceb67e2df2b0534...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
git checkout ea5373ba01c0915c0dceb67e2df2b05343642b84
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/net/ethernet/smsc/smc9194.c: In function 'smc_probe':
> drivers/net/ethernet/smsc/smc9194.c:927:39: error: assignment of
read-only location '*(dev->dev_addr + ((sizetype)i + 1))'
927 |
dev->dev_addr[ i + 1] = address >> 8;
| ^
drivers/net/ethernet/smsc/smc9194.c:928:36: error: assignment of read-only location
'*(dev->dev_addr + (sizetype)i)'
928 | dev->dev_addr[ i ] = address & 0xFF;
| ^
vim +927 drivers/net/ethernet/smsc/smc9194.c
32670c36d0222e drivers/net/smc9194.c Stephen Hemminger 2009-03-26 815
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 816
/*----------------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 817 .
Function: smc_probe( int ioaddr )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 818 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 819 .
Purpose:
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 820
. Tests to see if a given ioaddr points to an SMC9xxx chip.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 821
. Returns a 0 on success
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 822 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 823 .
Algorithm:
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 824
. (1) see if the high byte of BANK_SELECT is 0x33
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 825 .
(2) compare the ioaddr with the base register's address
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 826
. (3) see if I recognize the chip ID in the appropriate register
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 827 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 828
.---------------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 829
*/
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 830
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 831
/*---------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 832 .
Here I do typical initialization tasks.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 833 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 834 .
o Initialize the structure if needed
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 835 .
o print out my vanity message if not done so already
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 836 .
o print out what type of hardware is detected
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 837 .
o print out the ethernet address
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 838 .
o find the IRQ
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 839 .
o set up my private data
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 840 .
o configure the dev structure with my subroutines
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 841 .
o actually GRAB the irq.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 842 .
o GRAB the region
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 843
.-----------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 844 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 845
static int __init smc_probe(struct net_device *dev, int ioaddr)
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 846 {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 847
int i, memory, retval;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 848
unsigned int bank;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 849
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 850
const char *version_string;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 851
const char *if_string;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 852
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 853 /*
registers */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 854
word revision_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 855
word base_address_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 856
word configuration_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 857
word memory_info_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 858
word memory_cfg_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 859
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 860 /*
Grab the region so that no one else tries to probe our ioports. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 861 if
(!request_region(ioaddr, SMC_IO_EXTENT, DRV_NAME))
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 862
return -EBUSY;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 863
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 864
dev->irq = irq;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 865
dev->if_port = ifport;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 866
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 867 /*
First, see if the high byte is 0x33 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 868
bank = inw( ioaddr + BANK_SELECT );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 869 if
( (bank & 0xFF00) != 0x3300 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 870
retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 871
goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 872 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 873 /*
The above MIGHT indicate a device, but I need to write to further
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 874
test this. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 875
outw( 0x0, ioaddr + BANK_SELECT );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 876
bank = inw( ioaddr + BANK_SELECT );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 877 if
( (bank & 0xFF00 ) != 0x3300 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 878
retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 879
goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 880 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 881 /*
well, we've already written once, so hopefully another time won't
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 882
hurt. This time, I need to switch the bank register to bank 1,
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 883
so I can access the base address register */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 884
SMC_SELECT_BANK(1);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 885
base_address_register = inw( ioaddr + BASE );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 886 if
( ioaddr != ( base_address_register >> 3 & 0x3E0 ) ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 887
printk(CARDNAME ": IOADDR %x doesn't match configuration (%x). "
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 888
"Probably not a SMC chip\n",
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 889
ioaddr, base_address_register >> 3 & 0x3E0 );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 890
/* well, the base address register didn't match. Must not have
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 891
been a SMC chip after all. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 892
retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 893
goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 894 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 895
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 896 /*
check if the revision register is something that I recognize.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 897
These might need to be added to later, as future revisions
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 898
could be added. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 899
SMC_SELECT_BANK(3);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 900
revision_register = inw( ioaddr + REVISION );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 901 if
( !chip_ids[ ( revision_register >> 4 ) & 0xF ] ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 902
/* I don't recognize this chip, so... */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 903
printk(CARDNAME ": IO %x: Unrecognized revision register:"
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 904
" %x, Contact author.\n", ioaddr, revision_register);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 905
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 906
retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 907
goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 908 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 909
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 910 /*
at this point I'll assume that the chip is an SMC9xxx.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 911
It might be prudent to check a listing of MAC addresses
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 912
against the hardware address, or do some other tests. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 913
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 914
pr_info_once("%s\n", version);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 915
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 916 /*
fill in some of the fields */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 917
dev->base_addr = ioaddr;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 918
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 919
/*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 920 .
Get the MAC address ( bank 1, regs 4 - 9 )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 921
*/
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 922
SMC_SELECT_BANK( 1 );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 923
for ( i = 0; i < 6; i += 2 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 924
word address;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 925
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 926
address = inw( ioaddr + ADDR0 + i );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 @927
dev->dev_addr[ i + 1] = address >> 8;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 928
dev->dev_addr[ i ] = address & 0xFF;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 929 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 930
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 931 /*
get the memory information */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 932
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 933
SMC_SELECT_BANK( 0 );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 934
memory_info_register = inw( ioaddr + MIR );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 935
memory_cfg_register = inw( ioaddr + MCR );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 936
memory = ( memory_cfg_register >> 9 ) & 0x7; /* multiplier */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 937
memory *= 256 * ( memory_info_register & 0xFF );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 938
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 939
/*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 940
Now, I want to find out more about the chip. This is sort of
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 941
redundant, but it's cleaner to have it in both, rather than having
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 942
one VERY long probe procedure.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 943
*/
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 944
SMC_SELECT_BANK(3);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 945
revision_register = inw( ioaddr + REVISION );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 946
version_string = chip_ids[ ( revision_register >> 4 ) & 0xF ];
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 947 if
( !version_string ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 948
/* I shouldn't get here because this call was done before.... */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 949
retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 950
goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 951 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 952
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 953 /*
is it using AUI or 10BaseT ? */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 954 if
( dev->if_port == 0 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 955
SMC_SELECT_BANK(1);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 956
configuration_register = inw( ioaddr + CONFIG );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 957
if ( configuration_register & CFG_AUI_SELECT )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 958
dev->if_port = 2;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 959
else
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 960
dev->if_port = 1;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 961 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 962
if_string = interfaces[ dev->if_port - 1 ];
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 963
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 964 /*
now, reset the chip, and put it into a known state */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 965
smc_reset( ioaddr );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 966
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 967
/*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 968 .
If dev->irq is 0, then the device has to be banged on to see
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 969 .
what the IRQ is.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 970
.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 971 .
This banging doesn't always detect the IRQ, for unknown reasons.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 972 .
a workaround is to reset the chip and try again.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 973
.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 974 .
Interestingly, the DOS packet driver *SETS* the IRQ on the card to
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 975 .
be what is requested on the command line. I don't do that, mostly
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 976 .
because the card that I have uses a non-standard method of accessing
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 977 .
the IRQs, and because this _should_ work in most configurations.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 978
.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 979 .
Specifying an IRQ is done with the assumption that the user knows
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 980 .
what (s)he is doing. No checking is done!!!!
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 981
.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 982
*/
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 983 if
( dev->irq < 2 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 984
int trials;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 985
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 986
trials = 3;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 987
while ( trials-- ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 988
dev->irq = smc_findirq( ioaddr );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 989
if ( dev->irq )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 990
break;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 991
/* kick the card and try again */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 992
smc_reset( ioaddr );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 993
}
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 994 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 995 if
(dev->irq == 0 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 996
printk(CARDNAME": Couldn't autodetect your IRQ. Use irq=xx.\n");
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 997
retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 998
goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 999 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1000
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1001 /*
now, print out the card info, in a short format.. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1002
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1003
netdev_info(dev, "%s(r:%d) at %#3x IRQ:%d INTF:%s MEM:%db ",
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1004
version_string, revision_register & 0xF, ioaddr, dev->irq,
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1005
if_string, memory);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1006
/*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1007 .
Print the Ethernet address
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1008
*/
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1009
netdev_info(dev, "ADDR: %pM\n", dev->dev_addr);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1010
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1011 /*
Grab the IRQ */
a0607fd3a25ba1 drivers/net/smc9194.c Joe Perches 2009-11-18 1012
retval = request_irq(dev->irq, smc_interrupt, 0, DRV_NAME, dev);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1013 if
(retval) {
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1014
netdev_warn(dev, "%s: unable to get IRQ %d (irqval=%d).\n",
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1015
DRV_NAME, dev->irq, retval);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1016
goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1017 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1018
32670c36d0222e drivers/net/smc9194.c Stephen Hemminger 2009-03-26 1019
dev->netdev_ops = &smc_netdev_ops;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1020
dev->watchdog_timeo = HZ/20;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1021
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1022
return 0;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1023
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1024
err_out:
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1025
release_region(ioaddr, SMC_IO_EXTENT);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1026
return retval;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1027 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1028
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org