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

Commit 4d8b6149 authored by John W. Linville's avatar John W. Linville
Browse files
Conflicts:
	drivers/net/wireless/iwlwifi/iwl-pci.c
	drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c
	drivers/net/wireless/rt2x00/rt2800usb.c
	drivers/net/wireless/wl12xx/main.c
parents c9df56b4 8c23516f
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -15,6 +15,7 @@ MODULE_LICENSE("GPL");
static int bcma_bus_match(struct device *dev, struct device_driver *drv);
static int bcma_bus_match(struct device *dev, struct device_driver *drv);
static int bcma_device_probe(struct device *dev);
static int bcma_device_probe(struct device *dev);
static int bcma_device_remove(struct device *dev);
static int bcma_device_remove(struct device *dev);
static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env);


static ssize_t manuf_show(struct device *dev, struct device_attribute *attr, char *buf)
static ssize_t manuf_show(struct device *dev, struct device_attribute *attr, char *buf)
{
{
@@ -49,6 +50,7 @@ static struct bus_type bcma_bus_type = {
	.match		= bcma_bus_match,
	.match		= bcma_bus_match,
	.probe		= bcma_device_probe,
	.probe		= bcma_device_probe,
	.remove		= bcma_device_remove,
	.remove		= bcma_device_remove,
	.uevent		= bcma_device_uevent,
	.dev_attrs	= bcma_device_attrs,
	.dev_attrs	= bcma_device_attrs,
};
};


@@ -295,6 +297,16 @@ static int bcma_device_remove(struct device *dev)
	return 0;
	return 0;
}
}


static int bcma_device_uevent(struct device *dev, struct kobj_uevent_env *env)
{
	struct bcma_device *core = container_of(dev, struct bcma_device, dev);

	return add_uevent_var(env,
			      "MODALIAS=bcma:m%04Xid%04Xrev%02Xcl%02X",
			      core->id.manuf, core->id.id,
			      core->id.rev, core->id.class);
}

static int __init bcma_modinit(void)
static int __init bcma_modinit(void)
{
{
	int err;
	int err;
+1 −0
Original line number Original line Diff line number Diff line
@@ -63,6 +63,7 @@ static struct usb_device_id ath3k_table[] = {
	/* Atheros AR3011 with sflash firmware*/
	/* Atheros AR3011 with sflash firmware*/
	{ USB_DEVICE(0x0CF3, 0x3002) },
	{ USB_DEVICE(0x0CF3, 0x3002) },
	{ USB_DEVICE(0x13d3, 0x3304) },
	{ USB_DEVICE(0x13d3, 0x3304) },
	{ USB_DEVICE(0x0930, 0x0215) },


	/* Atheros AR9285 Malbec with sflash firmware */
	/* Atheros AR9285 Malbec with sflash firmware */
	{ USB_DEVICE(0x03F0, 0x311D) },
	{ USB_DEVICE(0x03F0, 0x311D) },
+16 −3
Original line number Original line Diff line number Diff line
@@ -72,9 +72,15 @@ static struct usb_device_id btusb_table[] = {
	/* Apple MacBookAir3,1, MacBookAir3,2 */
	/* Apple MacBookAir3,1, MacBookAir3,2 */
	{ USB_DEVICE(0x05ac, 0x821b) },
	{ USB_DEVICE(0x05ac, 0x821b) },


	/* Apple MacBookAir4,1 */
	{ USB_DEVICE(0x05ac, 0x821f) },

	/* Apple MacBookPro8,2 */
	/* Apple MacBookPro8,2 */
	{ USB_DEVICE(0x05ac, 0x821a) },
	{ USB_DEVICE(0x05ac, 0x821a) },


	/* Apple MacMini5,1 */
	{ USB_DEVICE(0x05ac, 0x8281) },

	/* AVM BlueFRITZ! USB v2.0 */
	/* AVM BlueFRITZ! USB v2.0 */
	{ USB_DEVICE(0x057c, 0x3800) },
	{ USB_DEVICE(0x057c, 0x3800) },


@@ -106,6 +112,7 @@ static struct usb_device_id blacklist_table[] = {
	/* Atheros 3011 with sflash firmware */
	/* Atheros 3011 with sflash firmware */
	{ USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
	{ USB_DEVICE(0x0cf3, 0x3002), .driver_info = BTUSB_IGNORE },
	{ USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
	{ USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
	{ USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE },


	/* Atheros AR9285 Malbec with sflash firmware */
	/* Atheros AR9285 Malbec with sflash firmware */
	{ USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
	{ USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
@@ -256,7 +263,9 @@ static void btusb_intr_complete(struct urb *urb)


	err = usb_submit_urb(urb, GFP_ATOMIC);
	err = usb_submit_urb(urb, GFP_ATOMIC);
	if (err < 0) {
	if (err < 0) {
		if (err != -EPERM)
		/* -EPERM: urb is being killed;
		 * -ENODEV: device got disconnected */
		if (err != -EPERM && err != -ENODEV)
			BT_ERR("%s urb %p failed to resubmit (%d)",
			BT_ERR("%s urb %p failed to resubmit (%d)",
						hdev->name, urb, -err);
						hdev->name, urb, -err);
		usb_unanchor_urb(urb);
		usb_unanchor_urb(urb);
@@ -341,7 +350,9 @@ static void btusb_bulk_complete(struct urb *urb)


	err = usb_submit_urb(urb, GFP_ATOMIC);
	err = usb_submit_urb(urb, GFP_ATOMIC);
	if (err < 0) {
	if (err < 0) {
		if (err != -EPERM)
		/* -EPERM: urb is being killed;
		 * -ENODEV: device got disconnected */
		if (err != -EPERM && err != -ENODEV)
			BT_ERR("%s urb %p failed to resubmit (%d)",
			BT_ERR("%s urb %p failed to resubmit (%d)",
						hdev->name, urb, -err);
						hdev->name, urb, -err);
		usb_unanchor_urb(urb);
		usb_unanchor_urb(urb);
@@ -431,7 +442,9 @@ static void btusb_isoc_complete(struct urb *urb)


	err = usb_submit_urb(urb, GFP_ATOMIC);
	err = usb_submit_urb(urb, GFP_ATOMIC);
	if (err < 0) {
	if (err < 0) {
		if (err != -EPERM)
		/* -EPERM: urb is being killed;
		 * -ENODEV: device got disconnected */
		if (err != -EPERM && err != -ENODEV)
			BT_ERR("%s urb %p failed to resubmit (%d)",
			BT_ERR("%s urb %p failed to resubmit (%d)",
						hdev->name, urb, -err);
						hdev->name, urb, -err);
		usb_unanchor_urb(urb);
		usb_unanchor_urb(urb);
+8 −8
Original line number Original line Diff line number Diff line
@@ -124,6 +124,13 @@ static long st_receive(void *priv_data, struct sk_buff *skb)
/* ------- Interfaces to HCI layer ------ */
/* ------- Interfaces to HCI layer ------ */
/* protocol structure registered with shared transport */
/* protocol structure registered with shared transport */
static struct st_proto_s ti_st_proto[MAX_BT_CHNL_IDS] = {
static struct st_proto_s ti_st_proto[MAX_BT_CHNL_IDS] = {
	{
		.chnl_id = HCI_EVENT_PKT, /* HCI Events */
		.hdr_len = sizeof(struct hci_event_hdr),
		.offset_len_in_hdr = offsetof(struct hci_event_hdr, plen),
		.len_size = 1, /* sizeof(plen) in struct hci_event_hdr */
		.reserve = 8,
	},
	{
	{
		.chnl_id = HCI_ACLDATA_PKT, /* ACL */
		.chnl_id = HCI_ACLDATA_PKT, /* ACL */
		.hdr_len = sizeof(struct hci_acl_hdr),
		.hdr_len = sizeof(struct hci_acl_hdr),
@@ -138,13 +145,6 @@ static struct st_proto_s ti_st_proto[MAX_BT_CHNL_IDS] = {
		.len_size = 1, /* sizeof(dlen) in struct hci_sco_hdr */
		.len_size = 1, /* sizeof(dlen) in struct hci_sco_hdr */
		.reserve = 8,
		.reserve = 8,
	},
	},
	{
		.chnl_id = HCI_EVENT_PKT, /* HCI Events */
		.hdr_len = sizeof(struct hci_event_hdr),
		.offset_len_in_hdr = offsetof(struct hci_event_hdr, plen),
		.len_size = 1, /* sizeof(plen) in struct hci_event_hdr */
		.reserve = 8,
	},
};
};


/* Called from HCI core to initialize the device */
/* Called from HCI core to initialize the device */
@@ -240,7 +240,7 @@ static int ti_st_close(struct hci_dev *hdev)
	if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
	if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
		return 0;
		return 0;


	for (i = 0; i < MAX_BT_CHNL_IDS; i++) {
	for (i = MAX_BT_CHNL_IDS-1; i >= 0; i--) {
		err = st_unregister(&ti_st_proto[i]);
		err = st_unregister(&ti_st_proto[i]);
		if (err)
		if (err)
			BT_ERR("st_unregister(%d) failed with error %d",
			BT_ERR("st_unregister(%d) failed with error %d",
+14 −9
Original line number Original line Diff line number Diff line
@@ -1729,6 +1729,8 @@ ath5k_beacon_setup(struct ath5k_hw *ah, struct ath5k_buf *bf)


	if (dma_mapping_error(ah->dev, bf->skbaddr)) {
	if (dma_mapping_error(ah->dev, bf->skbaddr)) {
		ATH5K_ERR(ah, "beacon DMA mapping failed\n");
		ATH5K_ERR(ah, "beacon DMA mapping failed\n");
		dev_kfree_skb_any(skb);
		bf->skb = NULL;
		return -EIO;
		return -EIO;
	}
	}


@@ -1813,8 +1815,6 @@ ath5k_beacon_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
	ath5k_txbuf_free_skb(ah, avf->bbuf);
	ath5k_txbuf_free_skb(ah, avf->bbuf);
	avf->bbuf->skb = skb;
	avf->bbuf->skb = skb;
	ret = ath5k_beacon_setup(ah, avf->bbuf);
	ret = ath5k_beacon_setup(ah, avf->bbuf);
	if (ret)
		avf->bbuf->skb = NULL;
out:
out:
	return ret;
	return ret;
}
}
@@ -1834,6 +1834,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
	struct ath5k_vif *avf;
	struct ath5k_vif *avf;
	struct ath5k_buf *bf;
	struct ath5k_buf *bf;
	struct sk_buff *skb;
	struct sk_buff *skb;
	int err;


	ATH5K_DBG_UNLIMIT(ah, ATH5K_DEBUG_BEACON, "in beacon_send\n");
	ATH5K_DBG_UNLIMIT(ah, ATH5K_DEBUG_BEACON, "in beacon_send\n");


@@ -1882,11 +1883,6 @@ ath5k_beacon_send(struct ath5k_hw *ah)


	avf = (void *)vif->drv_priv;
	avf = (void *)vif->drv_priv;
	bf = avf->bbuf;
	bf = avf->bbuf;
	if (unlikely(bf->skb == NULL || ah->opmode == NL80211_IFTYPE_STATION ||
		     ah->opmode == NL80211_IFTYPE_MONITOR)) {
		ATH5K_WARN(ah, "bf=%p bf_skb=%p\n", bf, bf ? bf->skb : NULL);
		return;
	}


	/*
	/*
	 * Stop any current dma and put the new frame on the queue.
	 * Stop any current dma and put the new frame on the queue.
@@ -1900,8 +1896,17 @@ ath5k_beacon_send(struct ath5k_hw *ah)


	/* refresh the beacon for AP or MESH mode */
	/* refresh the beacon for AP or MESH mode */
	if (ah->opmode == NL80211_IFTYPE_AP ||
	if (ah->opmode == NL80211_IFTYPE_AP ||
	    ah->opmode == NL80211_IFTYPE_MESH_POINT)
	    ah->opmode == NL80211_IFTYPE_MESH_POINT) {
		ath5k_beacon_update(ah->hw, vif);
		err = ath5k_beacon_update(ah->hw, vif);
		if (err)
			return;
	}

	if (unlikely(bf->skb == NULL || ah->opmode == NL80211_IFTYPE_STATION ||
		     ah->opmode == NL80211_IFTYPE_MONITOR)) {
		ATH5K_WARN(ah, "bf=%p bf_skb=%p\n", bf, bf->skb);
		return;
	}


	trace_ath5k_tx(ah, bf->skb, &ah->txqs[ah->bhalq]);
	trace_ath5k_tx(ah, bf->skb, &ah->txqs[ah->bhalq]);


Loading