diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/pci.c')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/pci.c | 148 |
1 files changed, 39 insertions, 109 deletions
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c index 1758d4463247..1f18bf7df741 100644 --- a/drivers/net/wireless/rtlwifi/pci.c +++ b/drivers/net/wireless/rtlwifi/pci.c | |||
| @@ -50,7 +50,7 @@ static void _rtl_pci_update_default_setting(struct ieee80211_hw *hw) | |||
| 50 | u8 pcibridge_vendor = pcipriv->ndis_adapter.pcibridge_vendor; | 50 | u8 pcibridge_vendor = pcipriv->ndis_adapter.pcibridge_vendor; |
| 51 | 51 | ||
| 52 | ppsc->reg_rfps_level = 0; | 52 | ppsc->reg_rfps_level = 0; |
| 53 | ppsc->b_support_aspm = 0; | 53 | ppsc->support_aspm = 0; |
| 54 | 54 | ||
| 55 | /*Update PCI ASPM setting */ | 55 | /*Update PCI ASPM setting */ |
| 56 | ppsc->const_amdpci_aspm = rtlpci->const_amdpci_aspm; | 56 | ppsc->const_amdpci_aspm = rtlpci->const_amdpci_aspm; |
| @@ -115,29 +115,29 @@ static void _rtl_pci_update_default_setting(struct ieee80211_hw *hw) | |||
| 115 | switch (rtlpci->const_support_pciaspm) { | 115 | switch (rtlpci->const_support_pciaspm) { |
| 116 | case 0:{ | 116 | case 0:{ |
| 117 | /*Not support ASPM. */ | 117 | /*Not support ASPM. */ |
| 118 | bool b_support_aspm = false; | 118 | bool support_aspm = false; |
| 119 | ppsc->b_support_aspm = b_support_aspm; | 119 | ppsc->support_aspm = support_aspm; |
| 120 | break; | 120 | break; |
| 121 | } | 121 | } |
| 122 | case 1:{ | 122 | case 1:{ |
| 123 | /*Support ASPM. */ | 123 | /*Support ASPM. */ |
| 124 | bool b_support_aspm = true; | 124 | bool support_aspm = true; |
| 125 | bool b_support_backdoor = true; | 125 | bool support_backdoor = true; |
| 126 | ppsc->b_support_aspm = b_support_aspm; | 126 | ppsc->support_aspm = support_aspm; |
| 127 | 127 | ||
| 128 | /*if(priv->oem_id == RT_CID_TOSHIBA && | 128 | /*if(priv->oem_id == RT_CID_TOSHIBA && |
| 129 | !priv->ndis_adapter.amd_l1_patch) | 129 | !priv->ndis_adapter.amd_l1_patch) |
| 130 | b_support_backdoor = false; */ | 130 | support_backdoor = false; */ |
| 131 | 131 | ||
| 132 | ppsc->b_support_backdoor = b_support_backdoor; | 132 | ppsc->support_backdoor = support_backdoor; |
| 133 | 133 | ||
| 134 | break; | 134 | break; |
| 135 | } | 135 | } |
| 136 | case 2: | 136 | case 2: |
| 137 | /*ASPM value set by chipset. */ | 137 | /*ASPM value set by chipset. */ |
| 138 | if (pcibridge_vendor == PCI_BRIDGE_VENDOR_INTEL) { | 138 | if (pcibridge_vendor == PCI_BRIDGE_VENDOR_INTEL) { |
| 139 | bool b_support_aspm = true; | 139 | bool support_aspm = true; |
| 140 | ppsc->b_support_aspm = b_support_aspm; | 140 | ppsc->support_aspm = support_aspm; |
| 141 | } | 141 | } |
| 142 | break; | 142 | break; |
| 143 | default: | 143 | default: |
| @@ -476,9 +476,9 @@ static void _rtl_pci_tx_isr(struct ieee80211_hw *hw, int prio) | |||
| 476 | 476 | ||
| 477 | skb = __skb_dequeue(&ring->queue); | 477 | skb = __skb_dequeue(&ring->queue); |
| 478 | pci_unmap_single(rtlpci->pdev, | 478 | pci_unmap_single(rtlpci->pdev, |
| 479 | le32_to_cpu(rtlpriv->cfg->ops-> | 479 | rtlpriv->cfg->ops-> |
| 480 | get_desc((u8 *) entry, true, | 480 | get_desc((u8 *) entry, true, |
| 481 | HW_DESC_TXBUFF_ADDR)), | 481 | HW_DESC_TXBUFF_ADDR), |
| 482 | skb->len, PCI_DMA_TODEVICE); | 482 | skb->len, PCI_DMA_TODEVICE); |
| 483 | 483 | ||
| 484 | RT_TRACE(rtlpriv, (COMP_INTR | COMP_SEND), DBG_TRACE, | 484 | RT_TRACE(rtlpriv, (COMP_INTR | COMP_SEND), DBG_TRACE, |
| @@ -557,7 +557,7 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw) | |||
| 557 | return; | 557 | return; |
| 558 | } else { | 558 | } else { |
| 559 | struct ieee80211_hdr *hdr; | 559 | struct ieee80211_hdr *hdr; |
| 560 | u16 fc; | 560 | __le16 fc; |
| 561 | struct sk_buff *new_skb = NULL; | 561 | struct sk_buff *new_skb = NULL; |
| 562 | 562 | ||
| 563 | rtlpriv->cfg->ops->query_rx_desc(hw, &stats, | 563 | rtlpriv->cfg->ops->query_rx_desc(hw, &stats, |
| @@ -583,9 +583,9 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw) | |||
| 583 | */ | 583 | */ |
| 584 | 584 | ||
| 585 | hdr = (struct ieee80211_hdr *)(skb->data); | 585 | hdr = (struct ieee80211_hdr *)(skb->data); |
| 586 | fc = le16_to_cpu(hdr->frame_control); | 586 | fc = hdr->frame_control; |
| 587 | 587 | ||
| 588 | if (!stats.b_crc) { | 588 | if (!stats.crc) { |
| 589 | memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, | 589 | memcpy(IEEE80211_SKB_RXCB(skb), &rx_status, |
| 590 | sizeof(rx_status)); | 590 | sizeof(rx_status)); |
| 591 | 591 | ||
| @@ -666,7 +666,7 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw) | |||
| 666 | 666 | ||
| 667 | } | 667 | } |
| 668 | done: | 668 | done: |
| 669 | bufferaddress = cpu_to_le32(*((dma_addr_t *) skb->cb)); | 669 | bufferaddress = (u32)(*((dma_addr_t *) skb->cb)); |
| 670 | tmp_one = 1; | 670 | tmp_one = 1; |
| 671 | rtlpriv->cfg->ops->set_desc((u8 *) pdesc, false, | 671 | rtlpriv->cfg->ops->set_desc((u8 *) pdesc, false, |
| 672 | HW_DESC_RXBUFF_ADDR, | 672 | HW_DESC_RXBUFF_ADDR, |
| @@ -690,75 +690,6 @@ done: | |||
| 690 | 690 | ||
| 691 | } | 691 | } |
| 692 | 692 | ||
| 693 | void _rtl_pci_tx_interrupt(struct ieee80211_hw *hw) | ||
| 694 | { | ||
| 695 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
| 696 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | ||
| 697 | int prio; | ||
| 698 | |||
| 699 | for (prio = 0; prio < RTL_PCI_MAX_TX_QUEUE_COUNT; prio++) { | ||
| 700 | struct rtl8192_tx_ring *ring = &rtlpci->tx_ring[prio]; | ||
| 701 | |||
| 702 | while (skb_queue_len(&ring->queue)) { | ||
| 703 | struct rtl_tx_desc *entry = &ring->desc[ring->idx]; | ||
| 704 | struct sk_buff *skb; | ||
| 705 | struct ieee80211_tx_info *info; | ||
| 706 | u8 own; | ||
| 707 | |||
| 708 | /* | ||
| 709 | *beacon packet will only use the first | ||
| 710 | *descriptor defautly, and the own may not | ||
| 711 | *be cleared by the hardware, and | ||
| 712 | *beacon will free in prepare beacon | ||
| 713 | */ | ||
| 714 | if (prio == BEACON_QUEUE || prio == TXCMD_QUEUE || | ||
| 715 | prio == HCCA_QUEUE) | ||
| 716 | break; | ||
| 717 | |||
| 718 | own = (u8)rtlpriv->cfg->ops->get_desc((u8 *)entry, | ||
| 719 | true, | ||
| 720 | HW_DESC_OWN); | ||
| 721 | |||
| 722 | if (own) | ||
| 723 | break; | ||
| 724 | |||
| 725 | skb = __skb_dequeue(&ring->queue); | ||
| 726 | pci_unmap_single(rtlpci->pdev, | ||
| 727 | le32_to_cpu(rtlpriv->cfg->ops-> | ||
| 728 | get_desc((u8 *) entry, | ||
| 729 | true, | ||
| 730 | HW_DESC_TXBUFF_ADDR)), | ||
| 731 | skb->len, PCI_DMA_TODEVICE); | ||
| 732 | |||
| 733 | ring->idx = (ring->idx + 1) % ring->entries; | ||
| 734 | |||
| 735 | info = IEEE80211_SKB_CB(skb); | ||
| 736 | ieee80211_tx_info_clear_status(info); | ||
| 737 | |||
| 738 | info->flags |= IEEE80211_TX_STAT_ACK; | ||
| 739 | /*info->status.rates[0].count = 1; */ | ||
| 740 | |||
| 741 | ieee80211_tx_status_irqsafe(hw, skb); | ||
| 742 | |||
| 743 | if ((ring->entries - skb_queue_len(&ring->queue)) | ||
| 744 | == 2 && prio != BEACON_QUEUE) { | ||
| 745 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | ||
| 746 | ("more desc left, wake " | ||
| 747 | "skb_queue@%d,ring->idx = %d," | ||
| 748 | "skb_queue_len = 0x%d\n", | ||
| 749 | prio, ring->idx, | ||
| 750 | skb_queue_len(&ring->queue))); | ||
| 751 | |||
| 752 | ieee80211_wake_queue(hw, | ||
| 753 | skb_get_queue_mapping | ||
| 754 | (skb)); | ||
| 755 | } | ||
| 756 | |||
| 757 | skb = NULL; | ||
| 758 | } | ||
| 759 | } | ||
| 760 | } | ||
| 761 | |||
| 762 | static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id) | 693 | static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id) |
| 763 | { | 694 | { |
| 764 | struct ieee80211_hw *hw = dev_id; | 695 | struct ieee80211_hw *hw = dev_id; |
| @@ -959,17 +890,17 @@ static void _rtl_pci_init_struct(struct ieee80211_hw *hw, | |||
| 959 | rtlhal->hw = hw; | 890 | rtlhal->hw = hw; |
| 960 | rtlpci->pdev = pdev; | 891 | rtlpci->pdev = pdev; |
| 961 | 892 | ||
| 962 | ppsc->b_inactiveps = false; | 893 | ppsc->inactiveps = false; |
| 963 | ppsc->b_leisure_ps = true; | 894 | ppsc->leisure_ps = true; |
| 964 | ppsc->b_fwctrl_lps = true; | 895 | ppsc->fwctrl_lps = true; |
| 965 | ppsc->b_reg_fwctrl_lps = 3; | 896 | ppsc->reg_fwctrl_lps = 3; |
| 966 | ppsc->reg_max_lps_awakeintvl = 5; | 897 | ppsc->reg_max_lps_awakeintvl = 5; |
| 967 | 898 | ||
| 968 | if (ppsc->b_reg_fwctrl_lps == 1) | 899 | if (ppsc->reg_fwctrl_lps == 1) |
| 969 | ppsc->fwctrl_psmode = FW_PS_MIN_MODE; | 900 | ppsc->fwctrl_psmode = FW_PS_MIN_MODE; |
| 970 | else if (ppsc->b_reg_fwctrl_lps == 2) | 901 | else if (ppsc->reg_fwctrl_lps == 2) |
| 971 | ppsc->fwctrl_psmode = FW_PS_MAX_MODE; | 902 | ppsc->fwctrl_psmode = FW_PS_MAX_MODE; |
| 972 | else if (ppsc->b_reg_fwctrl_lps == 3) | 903 | else if (ppsc->reg_fwctrl_lps == 3) |
| 973 | ppsc->fwctrl_psmode = FW_PS_DTIM_MODE; | 904 | ppsc->fwctrl_psmode = FW_PS_DTIM_MODE; |
| 974 | 905 | ||
| 975 | /*Tx/Rx related var */ | 906 | /*Tx/Rx related var */ |
| @@ -1024,9 +955,8 @@ static int _rtl_pci_init_tx_ring(struct ieee80211_hw *hw, | |||
| 1024 | ("queue:%d, ring_addr:%p\n", prio, ring)); | 955 | ("queue:%d, ring_addr:%p\n", prio, ring)); |
| 1025 | 956 | ||
| 1026 | for (i = 0; i < entries; i++) { | 957 | for (i = 0; i < entries; i++) { |
| 1027 | nextdescaddress = cpu_to_le32((u32) dma + | 958 | nextdescaddress = (u32) dma + ((i + 1) % entries) * |
| 1028 | ((i + 1) % entries) * | 959 | sizeof(*ring); |
| 1029 | sizeof(*ring)); | ||
| 1030 | 960 | ||
| 1031 | rtlpriv->cfg->ops->set_desc((u8 *)&(ring[i]), | 961 | rtlpriv->cfg->ops->set_desc((u8 *)&(ring[i]), |
| 1032 | true, HW_DESC_TX_NEXTDESC_ADDR, | 962 | true, HW_DESC_TX_NEXTDESC_ADDR, |
| @@ -1090,7 +1020,7 @@ static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw) | |||
| 1090 | rtlpci->rxbuffersize, | 1020 | rtlpci->rxbuffersize, |
| 1091 | PCI_DMA_FROMDEVICE); | 1021 | PCI_DMA_FROMDEVICE); |
| 1092 | 1022 | ||
| 1093 | bufferaddress = cpu_to_le32(*((dma_addr_t *)skb->cb)); | 1023 | bufferaddress = (u32)(*((dma_addr_t *)skb->cb)); |
| 1094 | rtlpriv->cfg->ops->set_desc((u8 *)entry, false, | 1024 | rtlpriv->cfg->ops->set_desc((u8 *)entry, false, |
| 1095 | HW_DESC_RXBUFF_ADDR, | 1025 | HW_DESC_RXBUFF_ADDR, |
| 1096 | (u8 *)&bufferaddress); | 1026 | (u8 *)&bufferaddress); |
| @@ -1121,9 +1051,9 @@ static void _rtl_pci_free_tx_ring(struct ieee80211_hw *hw, | |||
| 1121 | struct sk_buff *skb = __skb_dequeue(&ring->queue); | 1051 | struct sk_buff *skb = __skb_dequeue(&ring->queue); |
| 1122 | 1052 | ||
| 1123 | pci_unmap_single(rtlpci->pdev, | 1053 | pci_unmap_single(rtlpci->pdev, |
| 1124 | le32_to_cpu(rtlpriv->cfg-> | 1054 | rtlpriv->cfg-> |
| 1125 | ops->get_desc((u8 *) entry, true, | 1055 | ops->get_desc((u8 *) entry, true, |
| 1126 | HW_DESC_TXBUFF_ADDR)), | 1056 | HW_DESC_TXBUFF_ADDR), |
| 1127 | skb->len, PCI_DMA_TODEVICE); | 1057 | skb->len, PCI_DMA_TODEVICE); |
| 1128 | kfree_skb(skb); | 1058 | kfree_skb(skb); |
| 1129 | ring->idx = (ring->idx + 1) % ring->entries; | 1059 | ring->idx = (ring->idx + 1) % ring->entries; |
| @@ -1255,11 +1185,11 @@ int rtl_pci_reset_trx_ring(struct ieee80211_hw *hw) | |||
| 1255 | __skb_dequeue(&ring->queue); | 1185 | __skb_dequeue(&ring->queue); |
| 1256 | 1186 | ||
| 1257 | pci_unmap_single(rtlpci->pdev, | 1187 | pci_unmap_single(rtlpci->pdev, |
| 1258 | le32_to_cpu(rtlpriv->cfg->ops-> | 1188 | rtlpriv->cfg->ops-> |
| 1259 | get_desc((u8 *) | 1189 | get_desc((u8 *) |
| 1260 | entry, | 1190 | entry, |
| 1261 | true, | 1191 | true, |
| 1262 | HW_DESC_TXBUFF_ADDR)), | 1192 | HW_DESC_TXBUFF_ADDR), |
| 1263 | skb->len, PCI_DMA_TODEVICE); | 1193 | skb->len, PCI_DMA_TODEVICE); |
| 1264 | kfree_skb(skb); | 1194 | kfree_skb(skb); |
| 1265 | ring->idx = (ring->idx + 1) % ring->entries; | 1195 | ring->idx = (ring->idx + 1) % ring->entries; |
| @@ -1273,7 +1203,7 @@ int rtl_pci_reset_trx_ring(struct ieee80211_hw *hw) | |||
| 1273 | return 0; | 1203 | return 0; |
| 1274 | } | 1204 | } |
| 1275 | 1205 | ||
| 1276 | unsigned int _rtl_mac_to_hwqueue(u16 fc, | 1206 | static unsigned int _rtl_mac_to_hwqueue(__le16 fc, |
| 1277 | unsigned int mac80211_queue_index) | 1207 | unsigned int mac80211_queue_index) |
| 1278 | { | 1208 | { |
| 1279 | unsigned int hw_queue_index; | 1209 | unsigned int hw_queue_index; |
| @@ -1312,7 +1242,7 @@ out: | |||
| 1312 | return hw_queue_index; | 1242 | return hw_queue_index; |
| 1313 | } | 1243 | } |
| 1314 | 1244 | ||
| 1315 | int rtl_pci_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 1245 | static int rtl_pci_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
| 1316 | { | 1246 | { |
| 1317 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1247 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
| 1318 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 1248 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
| @@ -1323,7 +1253,7 @@ int rtl_pci_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
| 1323 | unsigned int queue_index, hw_queue; | 1253 | unsigned int queue_index, hw_queue; |
| 1324 | unsigned long flags; | 1254 | unsigned long flags; |
| 1325 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); | 1255 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); |
| 1326 | u16 fc = le16_to_cpu(hdr->frame_control); | 1256 | __le16 fc = hdr->frame_control; |
| 1327 | u8 *pda_addr = hdr->addr1; | 1257 | u8 *pda_addr = hdr->addr1; |
| 1328 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | 1258 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
| 1329 | /*ssn */ | 1259 | /*ssn */ |
| @@ -1429,7 +1359,7 @@ int rtl_pci_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
| 1429 | return 0; | 1359 | return 0; |
| 1430 | } | 1360 | } |
| 1431 | 1361 | ||
| 1432 | void rtl_pci_deinit(struct ieee80211_hw *hw) | 1362 | static void rtl_pci_deinit(struct ieee80211_hw *hw) |
| 1433 | { | 1363 | { |
| 1434 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1364 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
| 1435 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | 1365 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
| @@ -1444,7 +1374,7 @@ void rtl_pci_deinit(struct ieee80211_hw *hw) | |||
| 1444 | 1374 | ||
| 1445 | } | 1375 | } |
| 1446 | 1376 | ||
| 1447 | int rtl_pci_init(struct ieee80211_hw *hw, struct pci_dev *pdev) | 1377 | static int rtl_pci_init(struct ieee80211_hw *hw, struct pci_dev *pdev) |
| 1448 | { | 1378 | { |
| 1449 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1379 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
| 1450 | int err; | 1380 | int err; |
| @@ -1461,7 +1391,7 @@ int rtl_pci_init(struct ieee80211_hw *hw, struct pci_dev *pdev) | |||
| 1461 | return 1; | 1391 | return 1; |
| 1462 | } | 1392 | } |
| 1463 | 1393 | ||
| 1464 | int rtl_pci_start(struct ieee80211_hw *hw) | 1394 | static int rtl_pci_start(struct ieee80211_hw *hw) |
| 1465 | { | 1395 | { |
| 1466 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1396 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
| 1467 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | 1397 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); |
| @@ -1496,7 +1426,7 @@ int rtl_pci_start(struct ieee80211_hw *hw) | |||
| 1496 | return 0; | 1426 | return 0; |
| 1497 | } | 1427 | } |
| 1498 | 1428 | ||
| 1499 | void rtl_pci_stop(struct ieee80211_hw *hw) | 1429 | static void rtl_pci_stop(struct ieee80211_hw *hw) |
| 1500 | { | 1430 | { |
| 1501 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1431 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
| 1502 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | 1432 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
| @@ -1838,7 +1768,7 @@ fail3: | |||
| 1838 | ieee80211_free_hw(hw); | 1768 | ieee80211_free_hw(hw); |
| 1839 | 1769 | ||
| 1840 | if (rtlpriv->io.pci_mem_start != 0) | 1770 | if (rtlpriv->io.pci_mem_start != 0) |
| 1841 | pci_iounmap(pdev, (void *)rtlpriv->io.pci_mem_start); | 1771 | pci_iounmap(pdev, (void __iomem *)rtlpriv->io.pci_mem_start); |
| 1842 | 1772 | ||
| 1843 | fail2: | 1773 | fail2: |
| 1844 | pci_release_regions(pdev); | 1774 | pci_release_regions(pdev); |
| @@ -1888,7 +1818,7 @@ void rtl_pci_disconnect(struct pci_dev *pdev) | |||
| 1888 | } | 1818 | } |
| 1889 | 1819 | ||
| 1890 | if (rtlpriv->io.pci_mem_start != 0) { | 1820 | if (rtlpriv->io.pci_mem_start != 0) { |
| 1891 | pci_iounmap(pdev, (void *)rtlpriv->io.pci_mem_start); | 1821 | pci_iounmap(pdev, (void __iomem *)rtlpriv->io.pci_mem_start); |
| 1892 | pci_release_regions(pdev); | 1822 | pci_release_regions(pdev); |
| 1893 | } | 1823 | } |
| 1894 | 1824 | ||
