FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-struct nic nic;
+struct nic legacy_nic;
static int legacy_registered = 0;
int ( * probe ) ( struct nic *nic, void *hwdev ),
void ( * disable ) ( struct nic *nic, void *hwdev ) ) {
struct net_device *netdev;
+ struct nic *nic;
int rc;
if ( legacy_registered )
if ( ! netdev )
return -ENOMEM;
netdev_init ( netdev, &legacy_operations );
- netdev->priv = &nic;
- memset ( &nic, 0, sizeof ( nic ) );
+ nic = &legacy_nic;
+ netdev->priv = nic;
+ memset ( nic, 0, sizeof ( *nic ) );
set_drvdata ( hwdev, netdev );
netdev->dev = dev;
- nic.node_addr = netdev->hw_addr;
- nic.irqno = dev->desc.irq;
+ nic->node_addr = netdev->hw_addr;
+ nic->irqno = dev->desc.irq;
- if ( ! probe ( &nic, hwdev ) ) {
+ if ( ! probe ( nic, hwdev ) ) {
rc = -ENODEV;
goto err_probe;
}
* don't support interrupts; doing this allows the timer
* interrupt to be used instead.
*/
- dev->desc.irq = nic.irqno;
+ dev->desc.irq = nic->irqno;
if ( ( rc = register_netdev ( netdev ) ) != 0 )
goto err_register;
/* Do not remove this message */
printf ( "WARNING: Using legacy NIC wrapper on %s\n",
- netdev->ll_protocol->ntoa ( nic.node_addr ) );
+ netdev->ll_protocol->ntoa ( nic->node_addr ) );
legacy_registered = 1;
return 0;
err_register:
- disable ( &nic, hwdev );
+ disable ( nic, hwdev );
err_probe:
netdev_nullify ( netdev );
netdev_put ( netdev );
void ( *irq ) ( struct nic *, irq_action_t );
};
-extern struct nic nic;
+extern struct nic legacy_nic;
static inline int eth_poll ( int retrieve ) {
- return nic.nic_op->poll ( &nic, retrieve );
+ struct nic *nic = &legacy_nic;
+ return nic->nic_op->poll ( nic, retrieve );
}
static inline void eth_transmit ( const char *dest, unsigned int type,
unsigned int size, const void *packet ) {
- nic.nic_op->transmit ( &nic, dest, type, size, packet );
+ struct nic *nic = &legacy_nic;
+ nic->nic_op->transmit ( nic, dest, type, size, packet );
}
/*