From owner-p4-projects@FreeBSD.ORG Mon Sep 10 04:02:46 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0D24716A420; Mon, 10 Sep 2007 04:02:46 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE8D416A417 for ; Mon, 10 Sep 2007 04:02:45 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9532C13C45D for ; Mon, 10 Sep 2007 04:02:45 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l8A42jRA030947 for ; Mon, 10 Sep 2007 04:02:45 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l8A42i8l030944 for perforce@freebsd.org; Mon, 10 Sep 2007 04:02:44 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 10 Sep 2007 04:02:44 GMT Message-Id: <200709100402.l8A42i8l030944@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 126250 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Sep 2007 04:02:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=126250 Change 126250 by kmacy@kmacy_home:ethng on 2007/09/10 04:01:53 IFC @126249 Affected files ... .. //depot/projects/ethng/src/sys/arm/include/endian.h#2 integrate .. //depot/projects/ethng/src/sys/dev/cxgb/cxgb_adapter.h#16 integrate .. //depot/projects/ethng/src/sys/dev/cxgb/cxgb_include.h#2 integrate .. //depot/projects/ethng/src/sys/dev/cxgb/cxgb_main.c#17 integrate .. //depot/projects/ethng/src/sys/dev/cxgb/cxgb_offload.h#3 integrate .. //depot/projects/ethng/src/sys/dev/cxgb/cxgb_osdep.h#6 integrate .. //depot/projects/ethng/src/sys/kern/vfs_syscalls.c#3 integrate .. //depot/projects/ethng/src/sys/net/bpf.c#2 integrate .. //depot/projects/ethng/src/sys/security/mac/mac_framework.h#2 integrate .. //depot/projects/ethng/src/sys/security/mac/mac_policy.h#2 integrate .. //depot/projects/ethng/src/sys/security/mac/mac_vfs.c#2 integrate .. //depot/projects/ethng/src/sys/security/mac_biba/mac_biba.c#2 integrate .. //depot/projects/ethng/src/sys/security/mac_bsdextended/mac_bsdextended.c#2 integrate .. //depot/projects/ethng/src/sys/security/mac_lomac/mac_lomac.c#2 integrate .. //depot/projects/ethng/src/sys/security/mac_mls/mac_mls.c#2 integrate .. //depot/projects/ethng/src/sys/security/mac_stub/mac_stub.c#2 integrate .. //depot/projects/ethng/src/sys/security/mac_test/mac_test.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/Makefile#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/main.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/main.h#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_acct.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_adjtime.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_audit_control.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_audit_getaudit.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_audit_setaudit.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_audit_submit.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_clock_settime.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_cred.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_io.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_kenv_set.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_kenv_unset.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_msgbuf.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_netinet_raw.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_proc_setlogin.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_proc_setrlimit.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_sched_rtprio.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_sched_setpriority.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_settimeofday.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_sysctl_write.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_admin.c#2 delete .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_chflags.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_chmod.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_chown.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_chroot.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_clearsugid.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_extattr_system.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_fhopen.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_fhstat.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_fhstatfs.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_generation.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_getfh.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_read_write.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_setgid.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_stickyfile.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vfs_utimes.c#1 branch .. //depot/projects/ethng/src/tools/regression/priv/priv_vm_madv_protect.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vm_mlock.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/priv_vm_munlock.c#2 integrate .. //depot/projects/ethng/src/tools/regression/priv/test_utimes.c#2 delete .. //depot/projects/ethng/src/usr.bin/netstat/sctp.c#3 integrate Differences ... ==== //depot/projects/ethng/src/sys/arm/include/endian.h#2 (text+ko) ==== @@ -27,7 +27,7 @@ * * @(#)endian.h 8.1 (Berkeley) 6/10/93 * $NetBSD: endian.h,v 1.7 1999/08/21 05:53:51 simonb Exp $ - * $FreeBSD: src/sys/arm/include/endian.h,v 1.10 2005/07/27 19:59:21 jhb Exp $ + * $FreeBSD: src/sys/arm/include/endian.h,v 1.11 2007/09/09 11:58:38 cognet Exp $ */ #ifndef _ENDIAN_H_ @@ -99,13 +99,15 @@ static __inline __uint16_t __bswap16_var(__uint16_t v) { + __uint32_t ret = v & 0xffff; + __asm __volatile( "mov %0, %0, ror #8\n" "orr %0, %0, %0, lsr #16\n" "bic %0, %0, %0, lsl #16" - : "+r" (v)); + : "+r" (ret)); - return (v); + return ((__uint16_t)ret); } #ifdef __OPTIMIZE__ ==== //depot/projects/ethng/src/sys/dev/cxgb/cxgb_adapter.h#16 (text+ko) ==== @@ -26,7 +26,7 @@ POSSIBILITY OF SUCH DAMAGE. -$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.19 2007/09/09 04:34:03 kmacy Exp $ +$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.20 2007/09/10 00:59:51 kmacy Exp $ ***************************************************************************/ @@ -34,9 +34,6 @@ #ifndef _CXGB_ADAPTER_H_ #define _CXGB_ADAPTER_H_ -#include -__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.19 2007/09/09 04:34:03 kmacy Exp $"); - #include #include #include ==== //depot/projects/ethng/src/sys/dev/cxgb/cxgb_include.h#2 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/sys/dev/cxgb/cxgb_include.h,v 1.1 2007/05/28 22:57:26 kmacy Exp $ + * $FreeBSD: src/sys/dev/cxgb/cxgb_include.h,v 1.2 2007/09/10 00:59:51 kmacy Exp $ */ @@ -10,8 +10,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include ==== //depot/projects/ethng/src/sys/dev/cxgb/cxgb_main.c#17 (text+ko) ==== @@ -28,7 +28,7 @@ ***************************************************************************/ #include -__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_main.c,v 1.33 2007/09/09 01:28:02 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_main.c,v 1.35 2007/09/10 00:59:51 kmacy Exp $"); #include #include @@ -397,16 +397,21 @@ device_t child; const struct adapter_info *ai; struct adapter *sc; - int i, reg, error = 0; + int i, error = 0; uint32_t vers; int port_qsets = 1; #ifdef MSI_SUPPORTED - int msi_needed; + int msi_needed, reg; #endif sc = device_get_softc(dev); sc->dev = dev; sc->msi_count = 0; - + ai = cxgb_get_adapter_info(dev); + + /* + * XXX not really related but a recent addition + */ +#ifdef MSI_SUPPORTED /* find the PCIe link width and set max read request to 4KB*/ if (pci_find_extcap(dev, PCIY_EXPRESS, ®) == 0) { uint16_t lnk, pectl; @@ -418,14 +423,13 @@ pci_write_config(dev, reg + 0x8, pectl, 2); } - ai = cxgb_get_adapter_info(dev); if (sc->link_width != 0 && sc->link_width <= 4 && (ai->nports0 + ai->nports1) <= 2) { device_printf(sc->dev, "PCIe x%d Link, expect reduced performance\n", sc->link_width); } - +#endif touch_bars(dev); pci_enable_busmaster(dev); /* @@ -705,114 +709,6 @@ return; } -static int -alloc_filters(struct adapter *adap) -{ - struct filter_info *p; - int nfilters; - - if ((nfilters = adap->params.mc5.nfilters) == 0) - return (0); - - adap->filters = malloc(nfilters*sizeof(struct filter_info), - M_DEVBUF, M_ZERO|M_WAITOK); - - if (adap->filters == NULL) - return (ENOMEM); - - /* Set the default filters, only need to set non-0 fields here. */ - p = &adap->filters[nfilters - 1]; - p->vlan = 0xfff; - p->vlan_prio = FILTER_NO_VLAN_PRI; - p->pass = p->rss = p->valid = p->locked = 1; - - return (0); -} - -static inline void -set_tcb_field_ulp(struct cpl_set_tcb_field *req, - unsigned int tid, unsigned int word, - uint64_t mask, uint64_t val) -{ - struct ulp_txpkt *txpkt = (struct ulp_txpkt *)req; - - txpkt->cmd_dest = htonl(V_ULPTX_CMD(ULP_TXPKT)); - txpkt->len = htonl(V_ULPTX_NFLITS(sizeof(*req) / 8)); - OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, tid)); - req->reply = V_NO_REPLY(1); - req->cpu_idx = 0; - req->word = htons(word); - req->mask = htobe64(mask); - req->val = htobe64(val); -} - -static int -set_filter(struct adapter *adap, int id, const struct filter_info *f) -{ - int len; - struct mbuf *m; - struct ulp_txpkt *txpkt; - struct work_request_hdr *wr; - struct cpl_pass_open_req *oreq; - struct cpl_set_tcb_field *sreq; - - len = sizeof(*wr) + sizeof(*oreq) + 2 * sizeof(*sreq); - id += t3_mc5_size(&adap->mc5) - adap->params.mc5.nroutes - - adap->params.mc5.nfilters; - - m = m_gethdr(M_TRYWAIT, MT_DATA); - wr = mtod(m, struct work_request_hdr *); - wr->wr_hi = htonl(V_WR_OP(FW_WROPCODE_BYPASS) | F_WR_ATOMIC); - m->m_len = m->m_pkthdr.len = len; - - oreq = (struct cpl_pass_open_req *)(wr + 1); - txpkt = (struct ulp_txpkt *)oreq; - txpkt->cmd_dest = htonl(V_ULPTX_CMD(ULP_TXPKT)); - txpkt->len = htonl(V_ULPTX_NFLITS(sizeof(*oreq) / 8)); - OPCODE_TID(oreq) = htonl(MK_OPCODE_TID(CPL_PASS_OPEN_REQ, id)); - oreq->local_port = htons(f->dport); - oreq->peer_port = htons(f->sport); - oreq->local_ip = htonl(f->dip); - oreq->peer_ip = htonl(f->sip); - oreq->peer_netmask = htonl(f->sip_mask); - oreq->opt0h = 0; - oreq->opt0l = htonl(F_NO_OFFLOAD); - oreq->opt1 = htonl(V_MAC_MATCH_VALID(f->mac_vld) | - V_CONN_POLICY(CPL_CONN_POLICY_FILTER) | - V_VLAN_PRI(f->vlan_prio >> 1) | - V_VLAN_PRI_VALID(f->vlan_prio != FILTER_NO_VLAN_PRI) | - V_PKT_TYPE(f->pkt_type) | V_OPT1_VLAN(f->vlan) | - V_MAC_MATCH(f->mac_idx | (f->mac_hit << 4))); - - sreq = (struct cpl_set_tcb_field *)(oreq + 1); - set_tcb_field_ulp(sreq, id, 1, 0x1800808000ULL, - (f->report_filter_id << 15) | (1 << 23) | - ((u64)f->pass << 35) | ((u64)!f->rss << 36)); - set_tcb_field_ulp(sreq + 1, id, 25, 0x3f80000, - (u64)adap->rrss_map[f->qset] << 19); - t3_mgmt_tx(adap, m); - return 0; -} - -static int -setup_hw_filters(struct adapter *adap) -{ - int i, err; - -#ifndef USE_FILTERS - return (0); -#endif - if (adap->filters == NULL) - return 0; - - t3_enable_filters(adap); - - for (i = err = 0; i < adap->params.mc5.nfilters && !err; i++) - if (adap->filters[i].locked) - err = set_filter(adap, i, &adap->filters[i]); - return err; -} - /** * setup_sge_qsets - configure SGE Tx/Rx/response queues * @sc: the controller softc @@ -1479,7 +1375,12 @@ static void update_tpeeprom(struct adapter *adap) { +#ifdef FIRMWARE_LATEST const struct firmware *tpeeprom; +#else + struct firmware *tpeeprom; +#endif + char buf[64]; uint32_t version; unsigned int major, minor; @@ -1535,7 +1436,11 @@ static int update_tpsram(struct adapter *adap) { +#ifdef FIRMWARE_LATEST const struct firmware *tpsram; +#else + struct firmware *tpsram; +#endif char buf[64]; int ret; char rev; @@ -1603,7 +1508,6 @@ if (err) goto out; - alloc_filters(sc); setup_rss(sc); t3_add_configured_sysctls(sc); sc->flags |= FULL_INIT_DONE; @@ -1641,7 +1545,6 @@ if (!(sc->flags & QUEUES_BOUND)) { printf("bind qsets\n"); bind_qsets(sc); - setup_hw_filters(sc); sc->flags |= QUEUES_BOUND; } out: @@ -2301,121 +2204,6 @@ #endif } -#if 0 -static void * -filter_get_idx(struct seq_file *seq, loff_t pos) -{ - int i; - struct adapter *adap = seq->private; - struct filter_info *p = adap->filters; - - if (!p) - return NULL; - - for (i = 0; i < adap->params.mc5.nfilters; i++, p++) - if (p->valid) { - if (!pos) - return p; - pos--; - } - return NULL; -} - -static void *filter_get_nxt_idx(struct seq_file *seq, struct filter_info *p) -{ - struct adapter *adap = seq->private; - struct filter_info *end = &adap->filters[adap->params.mc5.nfilters]; - - while (++p < end && !p->valid) - ; - return p < end ? p : NULL; -} - -static void *filter_seq_start(struct seq_file *seq, loff_t *pos) -{ - return *pos ? filter_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; -} - -static void *filter_seq_next(struct seq_file *seq, void *v, loff_t *pos) -{ - v = *pos ? filter_get_nxt_idx(seq, v) : filter_get_idx(seq, 0); - if (v) - ++*pos; - return v; -} - -static void filter_seq_stop(struct seq_file *seq, void *v) -{ -} - -static int filter_seq_show(struct seq_file *seq, void *v) -{ - static const char *pkt_type[] = { "any", "tcp", "udp", "frag" }; - - if (v == SEQ_START_TOKEN) - seq_puts(seq, "index SIP DIP sport " - "dport VLAN PRI MAC type Q\n"); - else { - char sip[20], dip[20]; - struct filter_info *f = v; - struct adapter *adap = seq->private; - - sprintf(sip, NIPQUAD_FMT "/%-2u", HIPQUAD(f->sip), - f->sip_mask ? 33 - ffs(f->sip_mask) : 0); - sprintf(dip, NIPQUAD_FMT, HIPQUAD(f->dip)); - seq_printf(seq, "%5zu %18s %15s ", f - adap->filters, sip, dip); - seq_printf(seq, f->sport ? "%5u " : " * ", f->sport); - seq_printf(seq, f->dport ? "%5u " : " * ", f->dport); - seq_printf(seq, f->vlan != 0xfff ? "%4u " : " * ", f->vlan); - seq_printf(seq, f->vlan_prio == FILTER_NO_VLAN_PRI ? - " * " : "%1u/%1u ", f->vlan_prio, f->vlan_prio | 1); - if (!f->mac_vld) - seq_printf(seq, " * "); - else if (f->mac_hit) - seq_printf(seq, "%3u ", f->mac_idx); - else - seq_printf(seq, " -1 "); - seq_printf(seq, "%4s ", pkt_type[f->pkt_type]); - if (!f->pass) - seq_printf(seq, "-\n"); - else if (f->rss) - seq_printf(seq, "*\n"); - else - seq_printf(seq, "%1u\n", f->qset); - } - return 0; -} - -static struct seq_operations filter_seq_ops = { - .start = filter_seq_start, - .next = filter_seq_next, - .stop = filter_seq_stop, - .show = filter_seq_show -}; - -static int filter_seq_open(struct inode *inode, struct file *file) -{ - int rc = seq_open(file, &filter_seq_ops); - - if (!rc) { - struct proc_dir_entry *dp = PDE(inode); - struct seq_file *seq = file->private_data; - - seq->private = dp->data; - } - return rc; -} - -static struct file_operations filter_seq_fops = { - .owner = THIS_MODULE, - .open = filter_seq_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release -}; - -#endif - static int set_eeprom(struct port_info *pi, const uint8_t *data, int len, int offset) { @@ -2733,79 +2521,6 @@ m->nmtus = NMTUS; break; } - case CHELSIO_SET_FILTER: { - struct ch_filter *f = (struct ch_filter *)data; - struct filter_info *p; - int ret; - - if (sc->params.mc5.nfilters == 0) - return (EOPNOTSUPP); - if (!(sc->flags & FULL_INIT_DONE)) - return (EAGAIN); /* can still change nfilters */ - if (sc->filters == NULL) - return (ENOMEM); - - if (f->filter_id >= sc->params.mc5.nfilters || - (f->val.dip && f->mask.dip != 0xffffffff) || - (f->val.sport && f->mask.sport != 0xffff) || - (f->val.dport && f->mask.dport != 0xffff) || - (f->mask.vlan && f->mask.vlan != 0xfff) || - (f->mask.vlan_prio && f->mask.vlan_prio != 7) || - (f->mac_addr_idx != 0xffff && f->mac_addr_idx > 15) || - f->qset >= SGE_QSETS || - sc->rrss_map[f->qset] >= RSS_TABLE_SIZE) - return (EINVAL); - - p = &sc->filters[f->filter_id]; - if (p->locked) - return (EPERM); - - p->sip = f->val.sip; - p->sip_mask = f->mask.sip; - p->dip = f->val.dip; - p->sport = f->val.sport; - p->dport = f->val.dport; - p->vlan = f->mask.vlan ? f->val.vlan : 0xfff; - p->vlan_prio = f->mask.vlan_prio ? (f->val.vlan_prio & 6) : - FILTER_NO_VLAN_PRI; - p->mac_hit = f->mac_hit; - p->mac_vld = f->mac_addr_idx != 0xffff; - p->mac_idx = f->mac_addr_idx; - p->pkt_type = f->proto; - p->report_filter_id = f->want_filter_id; - p->pass = f->pass; - p->rss = f->rss; - p->qset = f->qset; - - ret = set_filter(sc, f->filter_id, p); - if (ret) - return ret; - p->valid = 1; - break; - } - case CHELSIO_DEL_FILTER: { - struct ch_filter *f = (struct ch_filter *)data; - struct filter_info *p; - - if (sc->params.mc5.nfilters == 0) - return (EOPNOTSUPP); - if (!(sc->flags & FULL_INIT_DONE)) - return (EAGAIN); /* can still change nfilters */ - if (sc->filters == NULL) - return (ENOMEM); - if (f->filter_id >= sc->params.mc5.nfilters) - return (EINVAL); - - p = &sc->filters[f->filter_id]; - if (p->locked) - return (EPERM); - memset(p, 0, sizeof(*p)); - p->sip_mask = 0xffffffff; - p->vlan = 0xfff; - p->vlan_prio = FILTER_NO_VLAN_PRI; - p->pkt_type = 1; - return set_filter(sc, f->filter_id, p); - } case CHELSIO_DEVUP: if (!is_offload(sc)) return (EOPNOTSUPP); ==== //depot/projects/ethng/src/sys/dev/cxgb/cxgb_offload.h#3 (text+ko) ==== @@ -26,19 +26,24 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -$FreeBSD: src/sys/dev/cxgb/cxgb_offload.h,v 1.4 2007/08/17 05:57:04 kmacy Exp $ +$FreeBSD: src/sys/dev/cxgb/cxgb_offload.h,v 1.5 2007/09/10 00:59:51 kmacy Exp $ ***************************************************************************/ #ifndef _CXGB_OFFLOAD_H #define _CXGB_OFFLOAD_H - +#ifdef CONFIG_DEFINED +#include +#include +#include +#include +#else +#include +#include +#include #include -#include - -#include -#include +#endif struct adapter; struct cxgb_client; ==== //depot/projects/ethng/src/sys/dev/cxgb/cxgb_osdep.h#6 (text+ko) ==== @@ -26,7 +26,7 @@ POSSIBILITY OF SUCH DAMAGE. -$FreeBSD: src/sys/dev/cxgb/cxgb_osdep.h,v 1.13 2007/09/09 04:34:03 kmacy Exp $ +$FreeBSD: src/sys/dev/cxgb/cxgb_osdep.h,v 1.14 2007/09/10 00:59:51 kmacy Exp $ ***************************************************************************/ @@ -92,6 +92,9 @@ #define TSO_SUPPORTED #define VLAN_SUPPORTED #define TASKQUEUE_CURRENT +#else +#define if_name(ifp) (ifp)->if_xname +#define M_SANITY(m, n) #endif #define __read_mostly __attribute__((__section__(".data.read_mostly"))) ==== //depot/projects/ethng/src/sys/kern/vfs_syscalls.c#3 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_syscalls.c,v 1.442 2007/08/28 20:28:11 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_syscalls.c,v 1.443 2007/09/10 00:00:16 rwatson Exp $"); #include "opt_compat.h" #include "opt_mac.h" @@ -1693,7 +1693,7 @@ goto restart; } #ifdef MAC - error = mac_check_vnode_delete(td->td_ucred, nd.ni_dvp, vp, + error = mac_check_vnode_unlink(td->td_ucred, nd.ni_dvp, vp, &nd.ni_cnd); if (error) goto out; @@ -3550,7 +3550,7 @@ goto out; } #ifdef MAC - error = mac_check_vnode_delete(td->td_ucred, nd.ni_dvp, vp, + error = mac_check_vnode_unlink(td->td_ucred, nd.ni_dvp, vp, &nd.ni_cnd); if (error) goto out; ==== //depot/projects/ethng/src/sys/net/bpf.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ * * @(#)bpf.c 8.4 (Berkeley) 1/9/95 * - * $FreeBSD: src/sys/net/bpf.c,v 1.180 2007/08/06 14:26:00 rwatson Exp $ + * $FreeBSD: src/sys/net/bpf.c,v 1.181 2007/09/10 00:03:06 thompsa Exp $ */ #include "opt_bpf.h" @@ -102,7 +102,7 @@ static void bpf_detachd(struct bpf_d *); static void bpf_freed(struct bpf_d *); static void bpf_mcopy(const void *, void *, size_t); -static int bpf_movein(struct uio *, int, int, struct mbuf **, +static int bpf_movein(struct uio *, int, struct ifnet *, struct mbuf **, struct sockaddr *, int *, struct bpf_insn *); static int bpf_setif(struct bpf_d *, struct ifreq *); static void bpf_timed_out(void *); @@ -158,10 +158,11 @@ { 1, NULL, filt_bpfdetach, filt_bpfread }; static int -bpf_movein(struct uio *uio, int linktype, int mtu, struct mbuf **mp, +bpf_movein(struct uio *uio, int linktype, struct ifnet *ifp, struct mbuf **mp, struct sockaddr *sockp, int *hdrlen, struct bpf_insn *wfilter) { const struct ieee80211_bpf_params *p; + struct ether_header *eh; struct mbuf *m; int error; int len; @@ -241,7 +242,7 @@ len = uio->uio_resid; - if (len - hlen > mtu) + if (len - hlen > ifp->if_mtu) return (EMSGSIZE); if ((unsigned)len > MCLBYTES) @@ -273,6 +274,20 @@ goto bad; } + /* Check for multicast destination */ + switch (linktype) { + case DLT_EN10MB: + eh = mtod(m, struct ether_header *); + if (ETHER_IS_MULTICAST(eh->ether_dhost)) { + if (bcmp(ifp->if_broadcastaddr, eh->ether_dhost, + ETHER_ADDR_LEN) == 0) + m->m_flags |= M_BCAST; + else + m->m_flags |= M_MCAST; + } + break; + } + /* * Make room for link header, and copy it to sockaddr */ @@ -615,7 +630,7 @@ bzero(&dst, sizeof(dst)); m = NULL; hlen = 0; - error = bpf_movein(uio, (int)d->bd_bif->bif_dlt, ifp->if_mtu, + error = bpf_movein(uio, (int)d->bd_bif->bif_dlt, ifp, &m, &dst, &hlen, d->bd_wfilter); if (error) return (error); ==== //depot/projects/ethng/src/sys/security/mac/mac_framework.h#2 (text+ko) ==== @@ -35,7 +35,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/security/mac/mac_framework.h,v 1.83 2007/06/26 14:14:01 rwatson Exp $ + * $FreeBSD: src/sys/security/mac/mac_framework.h,v 1.84 2007/09/10 00:00:16 rwatson Exp $ */ /* @@ -351,8 +351,6 @@ int mac_check_vnode_chroot(struct ucred *cred, struct vnode *dvp); int mac_check_vnode_create(struct ucred *cred, struct vnode *dvp, struct componentname *cnp, struct vattr *vap); -int mac_check_vnode_delete(struct ucred *cred, struct vnode *dvp, - struct vnode *vp, struct componentname *cnp); int mac_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp, acl_type_t type); int mac_check_vnode_deleteextattr(struct ucred *cred, struct vnode *vp, @@ -400,6 +398,8 @@ struct timespec atime, struct timespec mtime); int mac_check_vnode_stat(struct ucred *active_cred, struct ucred *file_cred, struct vnode *vp); +int mac_check_vnode_unlink(struct ucred *cred, struct vnode *dvp, + struct vnode *vp, struct componentname *cnp); int mac_check_vnode_write(struct ucred *active_cred, struct ucred *file_cred, struct vnode *vp); int mac_getsockopt_label(struct ucred *cred, struct socket *so, ==== //depot/projects/ethng/src/sys/security/mac/mac_policy.h#2 (text+ko) ==== @@ -35,7 +35,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/security/mac/mac_policy.h,v 1.93 2007/07/05 06:45:37 peter Exp $ + * $FreeBSD: src/sys/security/mac/mac_policy.h,v 1.94 2007/09/10 00:00:16 rwatson Exp $ */ /* * Kernel interface for MAC policy modules. @@ -524,10 +524,6 @@ typedef int (*mpo_check_vnode_create_t)(struct ucred *cred, struct vnode *dvp, struct label *dvplabel, struct componentname *cnp, struct vattr *vap); -typedef int (*mpo_check_vnode_delete_t)(struct ucred *cred, - struct vnode *dvp, struct label *dvplabel, - struct vnode *vp, struct label *vplabel, - struct componentname *cnp); typedef int (*mpo_check_vnode_deleteacl_t)(struct ucred *cred, struct vnode *vp, struct label *vplabel, acl_type_t type); @@ -604,6 +600,10 @@ typedef int (*mpo_check_vnode_stat_t)(struct ucred *active_cred, struct ucred *file_cred, struct vnode *vp, struct label *vplabel); +typedef int (*mpo_check_vnode_unlink_t)(struct ucred *cred, + struct vnode *dvp, struct label *dvplabel, + struct vnode *vp, struct label *vplabel, + struct componentname *cnp); typedef int (*mpo_check_vnode_write_t)(struct ucred *active_cred, struct ucred *file_cred, struct vnode *vp, struct label *vplabel); @@ -868,7 +868,6 @@ mpo_check_vnode_chdir_t mpo_check_vnode_chdir; mpo_check_vnode_chroot_t mpo_check_vnode_chroot; mpo_check_vnode_create_t mpo_check_vnode_create; - mpo_check_vnode_delete_t mpo_check_vnode_delete; mpo_check_vnode_deleteacl_t mpo_check_vnode_deleteacl; mpo_check_vnode_deleteextattr_t mpo_check_vnode_deleteextattr; mpo_check_vnode_exec_t mpo_check_vnode_exec; @@ -897,6 +896,7 @@ mpo_check_vnode_setowner_t mpo_check_vnode_setowner; mpo_check_vnode_setutimes_t mpo_check_vnode_setutimes; mpo_check_vnode_stat_t mpo_check_vnode_stat; + mpo_check_vnode_unlink_t mpo_check_vnode_unlink; mpo_check_vnode_write_t mpo_check_vnode_write; mpo_associate_nfsd_label_t mpo_associate_nfsd_label; mpo_create_mbuf_from_firewall_t mpo_create_mbuf_from_firewall; ==== //depot/projects/ethng/src/sys/security/mac/mac_vfs.c#2 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/security/mac/mac_vfs.c,v 1.121 2007/04/23 13:36:53 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/security/mac/mac_vfs.c,v 1.122 2007/09/10 00:00:16 rwatson Exp $"); #include "opt_mac.h" @@ -391,20 +391,6 @@ } int -mac_check_vnode_delete(struct ucred *cred, struct vnode *dvp, struct vnode *vp, - struct componentname *cnp) -{ - int error; - - ASSERT_VOP_LOCKED(dvp, "mac_check_vnode_delete"); - ASSERT_VOP_LOCKED(vp, "mac_check_vnode_delete"); - - MAC_CHECK(check_vnode_delete, cred, dvp, dvp->v_label, vp, - vp->v_label, cnp); - return (error); -} - -int mac_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp, acl_type_t type) { @@ -741,6 +727,20 @@ } int +mac_check_vnode_unlink(struct ucred *cred, struct vnode *dvp, struct vnode *vp, + struct componentname *cnp) +{ + int error; + + ASSERT_VOP_LOCKED(dvp, "mac_check_vnode_unlink"); + ASSERT_VOP_LOCKED(vp, "mac_check_vnode_unlink"); + + MAC_CHECK(check_vnode_unlink, cred, dvp, dvp->v_label, vp, + vp->v_label, cnp); + return (error); +} + +int mac_check_vnode_write(struct ucred *active_cred, struct ucred *file_cred, struct vnode *vp) { ==== //depot/projects/ethng/src/sys/security/mac_biba/mac_biba.c#2 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/security/mac_biba/mac_biba.c,v 1.106 2007/04/23 13:36:53 rwatson Exp $ + * $FreeBSD: src/sys/security/mac_biba/mac_biba.c,v 1.107 2007/09/10 00:00:16 rwatson Exp $ */ /* @@ -2625,30 +2625,6 @@ } static int -mac_biba_check_vnode_delete(struct ucred *cred, struct vnode *dvp, - struct label *dvplabel, struct vnode *vp, struct label *vplabel, - struct componentname *cnp) -{ - struct mac_biba *subj, *obj; - - if (!mac_biba_enabled) - return (0); - - subj = SLOT(cred->cr_label); - obj = SLOT(dvplabel); - - if (!mac_biba_dominate_effective(subj, obj)) - return (EACCES); - - obj = SLOT(vplabel); - - if (!mac_biba_dominate_effective(subj, obj)) - return (EACCES); - - return (0); -} - -static int mac_biba_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp, struct label *vplabel, acl_type_t type) { @@ -3187,6 +3163,30 @@ } static int +mac_biba_check_vnode_unlink(struct ucred *cred, struct vnode *dvp, + struct label *dvplabel, struct vnode *vp, struct label *vplabel, + struct componentname *cnp) +{ + struct mac_biba *subj, *obj; + + if (!mac_biba_enabled) + return (0); + + subj = SLOT(cred->cr_label); + obj = SLOT(dvplabel); + + if (!mac_biba_dominate_effective(subj, obj)) + return (EACCES); + + obj = SLOT(vplabel); + + if (!mac_biba_dominate_effective(subj, obj)) + return (EACCES); + + return (0); +} + +static int mac_biba_check_vnode_write(struct ucred *active_cred, struct ucred *file_cred, struct vnode *vp, struct label *vplabel) { @@ -3389,7 +3389,6 @@ .mpo_check_vnode_chdir = mac_biba_check_vnode_chdir, .mpo_check_vnode_chroot = mac_biba_check_vnode_chroot, .mpo_check_vnode_create = mac_biba_check_vnode_create, - .mpo_check_vnode_delete = mac_biba_check_vnode_delete, .mpo_check_vnode_deleteacl = mac_biba_check_vnode_deleteacl, .mpo_check_vnode_deleteextattr = mac_biba_check_vnode_deleteextattr, .mpo_check_vnode_exec = mac_biba_check_vnode_exec, @@ -3415,6 +3414,7 @@ .mpo_check_vnode_setowner = mac_biba_check_vnode_setowner, .mpo_check_vnode_setutimes = mac_biba_check_vnode_setutimes, .mpo_check_vnode_stat = mac_biba_check_vnode_stat, + .mpo_check_vnode_unlink = mac_biba_check_vnode_unlink, .mpo_check_vnode_write = mac_biba_check_vnode_write, .mpo_associate_nfsd_label = mac_biba_associate_nfsd_label, .mpo_create_mbuf_from_firewall = mac_biba_create_mbuf_from_firewall, ==== //depot/projects/ethng/src/sys/security/mac_bsdextended/mac_bsdextended.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/security/mac_bsdextended/mac_bsdextended.c,v 1.38 2007/07/05 13:16:04 rwatson Exp $ + * $FreeBSD: src/sys/security/mac_bsdextended/mac_bsdextended.c,v 1.39 2007/09/10 00:00:17 rwatson Exp $ */ /* @@ -504,19 +504,6 @@ } static int -mac_bsdextended_check_vnode_delete(struct ucred *cred, struct vnode *dvp, - struct label *dvplabel, struct vnode *vp, struct label *vplabel, - struct componentname *cnp) -{ - int error; - - error = mac_bsdextended_check_vp(cred, dvp, MBI_WRITE); - if (error) - return (error); - return (mac_bsdextended_check_vp(cred, vp, MBI_WRITE)); -} - -static int mac_bsdextended_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp, struct label *vplabel, acl_type_t type) { @@ -708,6 +695,19 @@ return (mac_bsdextended_check_vp(active_cred, vp, MBI_STAT)); } +static int +mac_bsdextended_check_vnode_unlink(struct ucred *cred, struct vnode *dvp, + struct label *dvplabel, struct vnode *vp, struct label *vplabel, + struct componentname *cnp) +{ + int error; + + error = mac_bsdextended_check_vp(cred, dvp, MBI_WRITE); + if (error) + return (error); + return (mac_bsdextended_check_vp(cred, vp, MBI_WRITE)); +} + static struct mac_policy_ops mac_bsdextended_ops = { .mpo_destroy = mac_bsdextended_destroy, @@ -720,7 +720,6 @@ .mpo_check_vnode_chdir = mac_bsdextended_check_vnode_chdir, .mpo_check_vnode_chroot = mac_bsdextended_check_vnode_chroot, .mpo_check_vnode_create = mac_bsdextended_check_create_vnode, - .mpo_check_vnode_delete = mac_bsdextended_check_vnode_delete, .mpo_check_vnode_deleteacl = mac_bsdextended_check_vnode_deleteacl, .mpo_check_vnode_deleteextattr = mac_bsdextended_check_vnode_deleteextattr, .mpo_check_vnode_exec = mac_bsdextended_check_vnode_exec, @@ -742,6 +741,7 @@ .mpo_check_vnode_setowner = mac_bsdextended_check_vnode_setowner, .mpo_check_vnode_setutimes = mac_bsdextended_check_vnode_setutimes, .mpo_check_vnode_stat = mac_bsdextended_check_vnode_stat, + .mpo_check_vnode_unlink = mac_bsdextended_check_vnode_unlink, >>> TRUNCATED FOR MAIL (1000 lines) <<<