--- linux-2.4.17-orig/drivers/net/3c59x.c Sat Apr 13 14:12:40 2002 +++ linux-2.4.17/drivers/net/3c59x.c Sat Apr 13 14:36:50 2002 @@ -165,6 +165,9 @@ - Correct 3c982 identification string - Rename wait_for_completion() to issue_and_wait() to avoid completion.h clash. + + LK1.1.16-sjc 13 April 2002 Stijn Jonker + - Added per device vlan support/mtu changing to 1504. - See http://www.uow.edu.au/~andrewm/linux/#3c59x-2.3 for more details. - Also see Documentation/networking/vortex.txt @@ -181,7 +184,7 @@ #define DRV_NAME "3c59x" -#define DRV_VERSION "LK1.1.16" +#define DRV_VERSION "LK1.1.16-sjc" #define DRV_RELDATE "19 July 2001" @@ -204,6 +207,7 @@ #endif /* Allow setting MTU to a larger size, bypassing the normal ethernet setup. */ static const int mtu = 1500; +static const int vmtu = 1504; /* Maximum events (Rx packets, etc.) to handle at each interrupt. */ static int max_interrupt_work = 32; /* Tx timeout interval (millisecs) */ @@ -275,6 +279,7 @@ MODULE_PARM(hw_checksums, "1-" __MODULE_STRING(8) "i"); MODULE_PARM(flow_ctrl, "1-" __MODULE_STRING(8) "i"); MODULE_PARM(enable_wol, "1-" __MODULE_STRING(8) "i"); +MODULE_PARM(vlan, "1-" __MODULE_STRING(8) "i"); MODULE_PARM(rx_copybreak, "i"); MODULE_PARM(max_interrupt_work, "i"); MODULE_PARM(compaq_ioaddr, "i"); @@ -287,6 +292,7 @@ MODULE_PARM_DESC(hw_checksums, "3c59x Hardware checksum checking by adapter(s) (0-1)"); MODULE_PARM_DESC(flow_ctrl, "3c59x 802.3x flow control usage (PAUSE only) (0-1)"); MODULE_PARM_DESC(enable_wol, "3c59x: Turn on Wake-on-LAN for adapter(s) (0-1)"); +MODULE_PARM_DESC(vlan, "Change mtu to 1504 for the specific card to allow vlan tags to be processed"); MODULE_PARM_DESC(rx_copybreak, "3c59x copy breakpoint for copy-only-tiny-frames"); MODULE_PARM_DESC(max_interrupt_work, "3c59x maximum events handled per interrupt"); MODULE_PARM_DESC(compaq_ioaddr, "3c59x PCI I/O base address (Compaq BIOS problem workaround)"); @@ -790,6 +796,7 @@ spinlock_t lock; /* Serialise access to device & its vortex_private */ spinlock_t mdio_lock; /* Serialise access to mdio hardware */ u32 power_state[16]; + int vlan; /* User-settable vlan support. */ }; /* The action to take with a media selection timer tick. @@ -853,6 +860,7 @@ static int hw_checksums[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; static int flow_ctrl[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; static int enable_wol[MAX_UNITS] = {-1, -1, -1, -1, -1, -1, -1, -1}; +static int vlan[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1,}; /* #define dev_alloc_skb dev_alloc_skb_debug */ @@ -1029,7 +1037,11 @@ dev->base_addr = ioaddr; dev->irq = irq; - dev->mtu = mtu; + if (card_idx < MAX_UNITS && vlan[card_idx] > 0 ) { + dev->mtu = vmtu; + } else { + dev->mtu = mtu; + } vp->drv_flags = vci->drv_flags; vp->has_nway = (vci->drv_flags & HAS_NWAY) ? 1 : 0; vp->io_size = vci->io_size;