|
@@ -165,7 +165,6 @@ static uint32_t fpga_tx(struct solos_card *);
|
|
|
static irqreturn_t solos_irq(int irq, void *dev_id);
|
|
|
static struct atm_vcc* find_vcc(struct atm_dev *dev, short vpi, int vci);
|
|
|
static int list_vccs(int vci);
|
|
|
-static void release_vccs(struct atm_dev *dev);
|
|
|
static int atm_init(struct solos_card *, struct device *);
|
|
|
static void atm_remove(struct solos_card *);
|
|
|
static int send_command(struct solos_card *card, int dev, const char *buf, size_t size);
|
|
@@ -384,7 +383,6 @@ static int process_status(struct solos_card *card, int port, struct sk_buff *skb
|
|
|
/* Anything but 'Showtime' is down */
|
|
|
if (strcmp(state_str, "Showtime")) {
|
|
|
atm_dev_signal_change(card->atmdev[port], ATM_PHY_SIG_LOST);
|
|
|
- release_vccs(card->atmdev[port]);
|
|
|
dev_info(&card->dev->dev, "Port %d: %s\n", port, state_str);
|
|
|
return 0;
|
|
|
}
|
|
@@ -830,28 +828,6 @@ static int list_vccs(int vci)
|
|
|
return num_found;
|
|
|
}
|
|
|
|
|
|
-static void release_vccs(struct atm_dev *dev)
|
|
|
-{
|
|
|
- int i;
|
|
|
-
|
|
|
- write_lock_irq(&vcc_sklist_lock);
|
|
|
- for (i = 0; i < VCC_HTABLE_SIZE; i++) {
|
|
|
- struct hlist_head *head = &vcc_hash[i];
|
|
|
- struct hlist_node *node, *tmp;
|
|
|
- struct sock *s;
|
|
|
- struct atm_vcc *vcc;
|
|
|
-
|
|
|
- sk_for_each_safe(s, node, tmp, head) {
|
|
|
- vcc = atm_sk(s);
|
|
|
- if (vcc->dev == dev) {
|
|
|
- vcc_release_async(vcc, -EPIPE);
|
|
|
- sk_del_node_init(s);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- write_unlock_irq(&vcc_sklist_lock);
|
|
|
-}
|
|
|
-
|
|
|
|
|
|
static int popen(struct atm_vcc *vcc)
|
|
|
{
|
|
@@ -1269,7 +1245,7 @@ static int atm_init(struct solos_card *card, struct device *parent)
|
|
|
card->atmdev[i]->ci_range.vci_bits = 16;
|
|
|
card->atmdev[i]->dev_data = card;
|
|
|
card->atmdev[i]->phy_data = (void *)(unsigned long)i;
|
|
|
- atm_dev_signal_change(card->atmdev[i], ATM_PHY_SIG_UNKNOWN);
|
|
|
+ atm_dev_signal_change(card->atmdev[i], ATM_PHY_SIG_FOUND);
|
|
|
|
|
|
skb = alloc_skb(sizeof(*header), GFP_ATOMIC);
|
|
|
if (!skb) {
|