Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e614e28e authored by Stephen Hemminger's avatar Stephen Hemminger
Browse files

beceem: remove indirection to Adapter structure



Allocate Adapter structure as part of network device.

Signed-off-by: default avatarStephen Hemminber <shemminger@vyatta.com>
parent 2515ab62
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -623,6 +623,7 @@ struct _MINI_ADAPTER
};
typedef struct _MINI_ADAPTER MINI_ADAPTER, *PMINI_ADAPTER;

#define GET_BCM_ADAPTER(net_dev)	netdev_priv(net_dev)

typedef struct _DEVICE_EXTENSION
{
+1 −21
Original line number Diff line number Diff line
#include "headers.h"

#define DRV_NAME	"beceem"
#define DRV_VERSION	"5.2.7.3P1"
#define DRV_DESCRIPTION "Beceem Communications Inc. WiMAX driver"
#define DRV_COPYRIGHT	"Copyright 2010. Beceem Communications Inc"


struct net_device *gblpnetdev;
/***************************************************************************************/
/* proto-type of lower function */
@@ -123,29 +117,15 @@ static const struct ethtool_ops bcm_ethtool_ops = {

int register_networkdev(PMINI_ADAPTER Adapter)
{
	struct net_device *net;
	PMINI_ADAPTER *temp;
	PS_INTERFACE_ADAPTER psIntfAdapter = Adapter->pvInterfaceAdapter;
	struct usb_interface *uintf = psIntfAdapter->interface;
	struct net_device *net = Adapter->dev;
	int result;

	net = alloc_etherdev(sizeof(PMINI_ADAPTER));
	if(!net) {
		pr_notice("bcmnet: no memory for device\n");
		return -ENOMEM;
	}

	Adapter->dev = net;	/* FIXME - only allows one adapter! */
	temp = netdev_priv(net);
	*temp = Adapter;

        net->netdev_ops = &bcmNetDevOps;
	net->ethtool_ops = &bcm_ethtool_ops;
	net->mtu          = MTU_SIZE; /* 1400 Bytes */
	net->tx_queue_len = TX_QLEN;
	netif_carrier_off(net);

	SET_NETDEV_DEV(net, &uintf->dev);
	SET_NETDEV_DEVTYPE(net, &wimax_type);

	/* Read the MAC Address from EEPROM */
+19 −24
Original line number Diff line number Diff line
@@ -182,30 +182,27 @@ static struct usb_class_driver usbbcm_class = {
static int
usbbcm_device_probe(struct usb_interface *intf, const struct usb_device_id *id)
{
	int retval =0 ;
   	PMINI_ADAPTER psAdapter = NULL;
	PS_INTERFACE_ADAPTER psIntfAdapter = NULL;
	struct usb_device      *udev = NULL;

//	BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "Usbbcm probe!!");
	if((intf == NULL) || (id == NULL))
	{
	//	BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "intf or id is NULL");
		return -EINVAL;
	}

	/* Allocate Adapter structure */
	if((psAdapter = kzalloc(sizeof(MINI_ADAPTER), GFP_KERNEL)) == NULL)
	{
		BCM_DEBUG_PRINT(psAdapter,DBG_TYPE_PRINTK, 0, 0, "Out of memory");
	struct usb_device *udev = interface_to_usbdev (intf);
	int retval;
	PMINI_ADAPTER psAdapter;
	PS_INTERFACE_ADAPTER psIntfAdapter;
	struct net_device *ndev;

	ndev = alloc_etherdev(sizeof(MINI_ADAPTER));
	if(ndev == NULL) {
		dev_err(&udev->dev, DRV_NAME ": no memory for device\n");
		return -ENOMEM;
	}

	SET_NETDEV_DEV(ndev, &intf->dev);

	psAdapter = netdev_priv(ndev);
	psAdapter->dev = ndev;

    /* Init default driver debug state */

	psAdapter->stDebugState.debug_level = debug_level;
	psAdapter->stDebugState.type = DBG_TYPE_INITEXIT;
	memset (psAdapter->stDebugState.subtype, 0, sizeof (psAdapter->stDebugState.subtype));

    /* Technically, one can start using BCM_DEBUG_PRINT after this point.
	 * However, realize that by default the Type/Subtype bitmaps are all zero now;
@@ -224,22 +221,21 @@ usbbcm_device_probe(struct usb_interface *intf, const struct usb_device_id *id)
	retval = InitAdapter(psAdapter);
	if(retval)
	{
		BCM_DEBUG_PRINT (psAdapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "InitAdapter Failed\n");
		dev_err(&udev->dev, DRV_NAME ": InitAdapter Failed\n");
		AdapterFree(psAdapter);
		return retval;
	}

	/* Allocate interface adapter structure */
	if((psAdapter->pvInterfaceAdapter =
		kmalloc(sizeof(S_INTERFACE_ADAPTER), GFP_KERNEL)) == NULL)
	psIntfAdapter = kzalloc(sizeof(S_INTERFACE_ADAPTER), GFP_KERNEL);
	if (psIntfAdapter == NULL)
	{
		BCM_DEBUG_PRINT(psAdapter,DBG_TYPE_PRINTK, 0, 0, "Out of memory");
		dev_err(&udev->dev, DRV_NAME ": no memory for Interface adapter\n");
		AdapterFree (psAdapter);
		return -ENOMEM;
	}
	memset(psAdapter->pvInterfaceAdapter, 0, sizeof(S_INTERFACE_ADAPTER));

	psIntfAdapter = InterfaceAdapterGet(psAdapter);
	psAdapter->pvInterfaceAdapter = psIntfAdapter;
	psIntfAdapter->psAdapter = psAdapter;

	/* Store usb interface in Interface Adapter */
@@ -276,7 +272,6 @@ usbbcm_device_probe(struct usb_interface *intf, const struct usb_device_id *id)
		}
	}

	udev = interface_to_usbdev (intf);
	/* Check whether the USB-Device Supports remote Wake-Up */
	if(USB_CONFIG_ATT_WAKEUP & udev->actconfig->desc.bmAttributes)
	{
+0 −11
Original line number Diff line number Diff line
#include "headers.h"


PS_INTERFACE_ADAPTER
InterfaceAdapterGet(PMINI_ADAPTER psAdapter)
{
	if(psAdapter == NULL)
	{
		return NULL;
	}
	return (PS_INTERFACE_ADAPTER)(psAdapter->pvInterfaceAdapter);
}

INT
InterfaceRDM(PS_INTERFACE_ADAPTER psIntfAdapter,
            UINT addr,
+0 −3
Original line number Diff line number Diff line
#ifndef __INTERFACE_MISC_H
#define __INTERFACE_MISC_H

PS_INTERFACE_ADAPTER
InterfaceAdapterGet(PMINI_ADAPTER psAdapter);

INT
InterfaceRDM(PS_INTERFACE_ADAPTER psIntfAdapter,
			UINT addr,
Loading